About
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.
Project | Platform | Description |
Talk Radio | iPhone | Listen to talk radio streams. |
Police Scanner | iPhone | Listen to police radio streams. |
Police Scanner 2 | iPhone | Listen to police radio streams with a social aspect. |
FastTrac | iPhone | Automatically build a Disneyland ride schedule that minimizes wait times and maximizes ride time. |
FastTrac Wait Times | iPhone | Report wait times for Disneyland rides. |
v-Project | iPhone | Enterprise app for a study on student choices about fruits and vegatables conducted by the Brigham Young University Economics Department. |
iSpecs UDOT | iPhone iPad | Offline access to drawings and specifications for compliance with the Utah Department of Transportation regulations. |
AboutOne | iPhone | Organize your family’s personal and medical information. |
Twenty Minute Geneologist | iPhone iPad Web | Simplifies and directs genealogical research for the time-constrained researcher. |
Swipe Music | iPhone iPad Web | A gesture-based music player app. |
Presentations | iPad | Enterprise app to build Keynote-like presentations with audio-visual content from the Church of Jesus Christ of Latter-day Saints. |
iFit | iPhone | Track your fitness. |
Hook'd | iPhone | Social karaoke. |
Gospel Library | iPhone iPad | Collection of scriptures, magazines, and other materials for the Church of Jesus Christ of Latter-day Saints. |
Articulation Test Center | iPad | Parents and teachers can test children’s speech development. |
Swipe Music | iPhone | A gesture-based music-playing app. |
Gospel Media | iPhone iPad | Build presentations and Sunday school lessons with audio-visual content from the Church of Jesus Christ of Latter-day Saints. |
Jott Messenger | iPhone iPad | A texting app that communicates through a Bluetooth/WiFi mesh network. |
Domo | iPhone | Business intelligence analytics. |
Lono | iPhone iPad Web | Control your sprinklers with the Internet of Things. |
Campbell's Kitchen | iPhone iPad | Find recipes based on Campbell’s products. |
git status --TV | Apple TV | An Apple TV dashboard for viewing GitHub pull request review status. |
Reverb.ai | iPhone iPad macOS | Interact with Alexa Voice Services through iOS and macOS. |
Medic | iPhone iPad Embedded | Smart toilet to measure your medical health. |
GarageSmart | iPhone iPad Web Backend | Automate and control your GarageSmart IoT devices with your phone. |
Tilt Smart Home | iPhone iPad | Automate and control your roller shades with your phone or voice assistant. |
Tubi | Web Backend | Architect 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