Phoenix LiveView and Views

29 June, 2020|13m Read|elixirphoenix

Everytime I build a LiveView application, I learn something new and find a new pattern, and some concept finally _clicks_. Today, that concept that cemented in my mind is how Phoenix and Phoenix LiveView renders templates. I want to show you a couple different View-rendering strategies. This should help you decide which strategy to use.

Starting a New Podcast with Thinking |> Elixir

17 June, 2020|1m Read|elixirpodcast

I joined the Thinking |> Elixir Podcast! I would really love it if you shared it with shared with your friends who know or are discovering Elixir.

Phoenix LiveView: Multi-step forms

13 May, 2020|16m Read|elixirectophoenix

Big forms are a pain to manage-- even harder to manage when you need to change values based on previous input and compute data based on that new selection. Phoenix LiveView can make this easier. Check out some techniques I used to help organize these forms.

Ecto Changesets on Elixir Mix podcast

08 April, 2020|1m Read|elixirpodcast

I was invited to talk on the Elixir Mix podcast. We talked about the Ecto Changesets and modeling change well.

NewTab Notes Extension

31 March, 2020|2m Read|chromejavascript

Today I published a new Chrome Extension in the Chrome Web Store. This extension replaces the New Tab page with a rendered markdown page that you can edit. It’s customizable too!

Managing ElixirLS updates in Neovim with asdf and vim-plug

03 March, 2020|10m Read|elixirvim

How I manage ElixirLS, neovim, and coc.nvim with vim-plug.

Ecto Tips: UUID Boilerplate, Docs, and Composing Changesets

19 January, 2020|9m Read|elixirecto

There are some helpful techniques you can employ to help you and your coworkers when writing long changeset functions. It's hard to remember what's required, optional, and defaulted. DB-generated UUIDs. And composing changesets.

DateTimeParser on Elixir Mix podcast

09 September, 2019|1m Read|elixirpodcast

I was invited to talk on the Elixir Mix podcast. We talked about the Elixir community, how to contribute, and the DateTimeParser library I released.

VIM Testing and Workflow

28 August, 2019|6m Read|elixirrubyvim

I realized that I love my VIM workflow, so I want to share that with you. I am by-no-means a VIM expert or purist — my neovim files are not…

HTTPoison and Decompression

01 June, 2019|11m Read|elixir

I learned the hard way that the popular HTTP client for Elixir doesn't automatically decompress or re-encode responses. I had to fix it myself.

Ruby, Rails, and CircleCI 2.0 Workflows

26 August, 2018|Original Publishing|14m Read|ruby

Know your tools -- CircleCI 2.0 Workflows

Querying an Embedded Map in PostgreSQL with Ecto

09 March, 2018|Original Publishing|5m Read|elixir

Structs and maps are easy to work with in Elixir, but if they are stored in the database as JSON and accessed via an Ecto Schema, it’s not as clear how to query them. We’re going to explore how to do that, and make it clear and easy.

Testing Random Data in Emails with Bamboo

16 October, 2017|Original Publishing|2m Read|elixir

Testing a scenario where an app sends an email is easy, but how do you test something random in an email, like a password reset token? When we test a function that intentionally returns random data, it’s a little tougher.

Lessons From Using Phoenix 1.3

01 August, 2017|Original Publishing|11m Read|elixir

Phoenix 1.3 introduces contexts, which has been met with some resistance. I’ve developed an application using it and learned some lessons.

Simple Phoenix Text Inputs with Formulator

30 June, 2017|Original Publishing|2m Read|elixir

Ugh… three lines for a simple text input for a form in Phoenix? How about one with Formulator?

Introduction to Elixir, Phoenix, and Umbrella Apps

06 February, 2017|1m Read|elixir

Introduction of Elixir and Phoenix for a local coding boot camp. Slides

Developer Life After A Bootcamp

28 March, 2016|1m Read|life

What a boot camp developer can expect after graduating their course. Slides


24 September, 2015|6m Read|life

Refactoring is scary. I’ve seen some comments on Twitter indicating that it’s generally something really risky, sending tremors through the rest of the team. It’s true, it’s risky, but it’s generally for the better. But I often need to refactor something a bit more scary: life.

Syncing an External USB Drive with a Network NAS

02 June, 2013|8m Read|bash

I recently bought a MacBook Pro with a limited 256GB SSD. It’s great, btw, but it requires me to now store all my music, movies, and archival-type files on an external drive. It scares me a bit to have all that stuff on a single USB-powered drive, so I also set up a network NAS that contains 2 mirrored 1TB drives (I salvaged these from my desktop that I sold to buy my MacBook). Enter problem: I’m lazy. I don’t like manually backing everything up. I just want to manage the stuff I put on the external drive, not the NAS drive. Enter solution: BASH script, and launchd.