Hi! I’m Daniel.
I live in Kansas City where I help run a small Christian church, raise two kids with my awesome wife, and write software for Divvy.
I run a ton of self-hosted software here at home on some machines that sit on an unnecessarily large server rack in my basement. I love building keyboards, too. I heavily customize my workflow and you can sift through my dotfiles if you like.
Occasionally, I post technical articles here.
Latest Blog Posts (RSS)
Things I Use
Posted on Jul 6 2023
I saw a post recently on ye ole fediverse that asked developers if they have a “uses” page and I was inspired to create mine. I wrote up just about everything I use on a weekly basis.
You can read about all the things I use here!
Teaching TypeScript to Help You with Events (Generically)
Posted on Jan 18 2022
I wanted my custom event system to have all the nice typed goodness and it took me a lot of brain-twisting and a couple of meetings to finally rubber duck it out. Now, I will share my hard-won knowledge with you!
Using Ecto Reflection for Simple Admin CRUD Forms in Elixir's Phoenix
Posted on Mar 28 2019
If you’re working on a Phoenix project, you probably realized the client might want to view (or even – gasp – edit!) their data in a pretty raw form. Frameworks like Django provide this out of the box. Phoenix, however, leaves this up to you!
Elm: Forms, Fields, and Abstractions
Posted on Mar 20 2019
If you’re using Elm, you’re probably dealing with forms and fields. You’re also probably wanting to do functional programming “right” and compose smaller functions together. Hopefully this helps!
Mirroring Gitea to Other Repository Management Services (GitHub, GitLab, etc.)
Posted on Mar 13 2019
I have a Gitea instance I self-host at home. I keep most of my repositories there, but I recognize that most other developers and potential employers will want to see my work on GitHub.
Weechat & Matrix Encryption Guide
Posted on Mar 7 2019
There’s a new-fangled Python WeeChat plugin that supports end-to-end encryption. This guide will walk you through what is currently a semi-annoying setup, as the entire project is still under heavy development.
Latest Tips (RSS)
Fetching Go Modules via `goproxy` Inside VPN
Posted on Jun 22 2023
I think I finally setup the holy grail of universally being able to fetch-by-proxy go modules through a firewall using https://github.com/goproxy/goproxy
On your internal host (such as your work machine), run the following:
GOPRIVATE=git.company.com GOMODCACHE=~/go goproxy server --address localhost:9981
On your external host (such as a network isolated Linux VM):
ssh -L 9981:localhost:9981 $INTERNALHOST &
GOPROXY=http://localhost:9981,direct go mod tidy
Of course, the tunneling is optional and you can use a non-
--address when running
goproxy server, but then of course you are dealing
with this proxy being open on the LAN, which may upset security in some cases.
And bam! Now you can fetch go modules as if you’re on the VPN even if you’re not on the VPN.
You can use something like
go env -w GOPROXY=http://localhost:9981,direct to
avoid prefixing all your
go commands with the environment variable. Obviously,
this can cause things to break weirdly if/when the
goproxy server dies or the
tunnel is disconnected. Tread lightly!
iex and dbg/1 without pry prompts
Posted on Jun 22 2023
iex -S mix ... but I usually don’t like when
dbg asks me to
Just show me my data! Well, today I learned about
$ iex --help
Usage: iex [options] [.exs file] [data]
--no-pry Doesn't start pry sessions when dbg/2 is called.
Now I can
iex --no-pry -S mix ... and just see output instead of dealing with
the prompts for
prying! Not sure if anybody else felt this pain, but there