Personal

Currently, I am an Elixir backend developer and software architect working for Tubi. I have worked for agencies and as an indpendent contractor for a decade prior. During that time I built iOS apps and web backends for a large variety of clients (see below).

I received my Bachelors of Science in Computer Science from Brigham Young University.

I served a two-year mission for The Church of Jesus Christ of Latter-day Saints in Winnipeg, Canada.

I love making things. I have many Arduinos, Raspberry Pis, a couple Parallelas, BeagleBone Black, and other similar boards. I build my own drones. I own a 3D printer, I have a small wood shop and a laser cutter. I coached a robotics team for six years (2010–2015).

I run @elixirtip on Twitter where I post daily tips on using the Elixir programming language. At the time of this writing, I have over 12,000 followers.

I love software architecture and study it extensively. I strive to find and design architectures that are simple, maintainable, and comprehensible.

Projects

Often the first question for developers is what apps they’ve made. The following are iOS, watchOS, macOS, and tvOS apps that I’ve built roughly in the order I made them. There is some overlap between them. Links are provided for apps that are publicly available on the App Store or to respective websites. Some apps are no longer available or are enterprise only.

ProjectPlatformDescription
Talk RadioiPhoneListen to talk radio streams.
Police ScanneriPhoneListen to police radio streams.
Police Scanner 2iPhoneListen to police radio streams with a social aspect.
FastTraciPhoneAutomatically build a Disneyland ride schedule that minimizes wait times and maximizes ride time.
FastTrac Wait TimesiPhoneReport wait times for Disneyland rides.
v-ProjectiPhoneEnterprise app for a study on student choices about fruits and vegatables conducted by the Brigham Young University Economics Department.
iSpecs UDOTiPhone iPadOffline access to drawings and specifications for compliance with the Utah Department of Transportation regulations.
AboutOneiPhoneOrganize your family’s personal and medical information.
Twenty Minute GeneologistiPhone iPad WebSimplifies and directs genealogical research for the time-constrained researcher.
Swipe MusiciPhone iPad WebA gesture-based music player app.
PresentationsiPadEnterprise app to build Keynote-like presentations with audio-visual content from the Church of Jesus Christ of Latter-day Saints.
iFitiPhoneTrack your fitness.
Hook'diPhoneSocial karaoke.
Gospel LibraryiPhone iPadCollection of scriptures, magazines, and other materials for the Church of Jesus Christ of Latter-day Saints.
Articulation Test CenteriPadParents and teachers can test children’s speech development.
Swipe MusiciPhoneA gesture-based music-playing app.
Gospel MediaiPhone iPadBuild presentations and Sunday school lessons with audio-visual content from the Church of Jesus Christ of Latter-day Saints.
Jott MessengeriPhone iPadA texting app that communicates through a Bluetooth/WiFi mesh network.
DomoiPhoneBusiness intelligence analytics.
LonoiPhone iPad WebControl your sprinklers with the Internet of Things.
Campbell's KitcheniPhone iPadFind recipes based on Campbell’s products.
git status --TVApple TVAn Apple TV dashboard for viewing GitHub pull request review status.
Reverb.aiiPhone iPad macOSInteract with Alexa Voice Services through iOS and macOS.
MediciPhone iPad EmbeddedSmart toilet to measure your medical health.
GarageSmartiPhone iPad Web BackendAutomate and control your GarageSmart IoT devices with your phone.
Tilt Smart HomeiPhone iPadAutomate and control your roller shades with your phone or voice assistant.
TubiWeb BackendArchitect and build many features for an ad-based online streaming service. Includes managing catalog feeds with 11+ partners (Apple, Google, Amazon, etc).

Programming languages

Programming languages are often a form of identity for developers. More generally I identify as a software architect, autodidact, and polyglot.

Over the years I’ve learned a number of programming languages. Some I’ve used for a single project or class. Others I’ve used for years. To distinguish them, I’ve categorized them below.

Favorite languages

The languages I enjoy using most, listed in descending order of preference.

  • Elixir
  • Rust
  • Swift
  • Elm

Proficient languages

Listed (very roughly) in descending order of proficiency.

  • Elixir
  • Swift
  • Rust
  • Objective-C
  • C
  • C++
  • Java

Languages used in projects

All languages (listed alphabetically) I’ve used in any project (greater than 1000 lines).

  • Bash
  • C
  • C++
  • Elixir
  • Elm
  • Erlang
  • Java
  • JavaScript
  • LaTeX
  • Objective-C
  • Objective-C++
  • Python
  • Ruby
  • Rust
  • Swift
  • SQL
  • LaTeX

Languages learned on the side

The following are languages (listed alphabetically) I have learned through school or self-study but haven’t used in a sizable project.

  • BASIC
  • C♯
  • Go
  • Haskell
  • Pharo
  • Prolog
  • PHP
  • R
  • Racket
  • Tcl

Languages I hate

  • JavaScript
  • PHP
  • Python

Enough said.

Languages I want to know better

I try to follow the challenge of learning a new language each year. Most languages I learn to adopt new ideas. Other times I end up loving the language and using it regularly. The following is my bucket list ordered alphabetically.

  • Crystal
  • Dark
  • Eve
  • Haskell
  • Idris
  • Lisp-Flavored Erlang (LFE)
  • OCaml
  • Pharo
  • R
  • Wolfram Language