/images/avatar.jpg

Advent of Code 2021

In general, I regard myself as pretty bad at algorithms. I’m comfortable enough doing the Elixir track on Exercism (that’s how I learned Elixir), and I’ve used HackerRank some, but the reason I used HackerRank was because TripleByte said algorithms were my weak point. (It said architecture was my strong suit, and I’m quite pleased with that, as I did put effort into improving on that front.) I really dislike white boarding in job interviews (both because of the nerves factor and because the problems are usually totally unrelated to the job) and so much prefer take-homes.

Pretty Waterfalls in Honeycomb for an Absinthe app

When first setting up the Absinthe app I work on, someone added OpenCensus Honeycomb package. The way it was set up was very basic: each top-level query had tracing attached.

:object queries do
  field :getStuff, :stuff do
    meta :trace, true

    arg :input, :string
    resolve &Resolver.stuff_resolver/3
  end
end

This got us information on how long each query took, so we could see which query needed to be optimized and do some debugging when performance issues hit. But it didn’t drill down like I wanted.

Reusable Django Admin Filters

It’s fairly common to have a many-to-many connection to a User model. But sometimes, you have a lot of users in that table.

Problem 1: relations to large tables are unwieldy

If we let the Django Admin load every single user into the dropdown in the Django Admin, it’s unusable. The dropdowns are too long. The page takes too long to load. We need to filter it in advance.

Dig around a bit online, and you’ll find some code of this form:

How to Network

Maybe you’re about to graduate, just graduated, or have been teaching yourself to code for the last few years, and you don’t know how to get your foot in the door with that first job. You see all those “entry-level” jobs that expect a year or three of experience. Networking is incredibly important, especially if you don’t have any professional experience in the tech industry yet.

We’ve all heard it: “it’s not what you know; it’s who you know.” I, personally, have gotten only two jobs (in a 14-year career) from a cold start. And frankly, one wasn’t a true cold start; a recruiter asked if he could show my 2017 resume to the company where I’d done my first internship, way back in 2007.

Elixir Wizards Talk: "Dealing With a Monster Ecto Query"

Last month, I spoke at the first-ever Elixir Wizards Conference. It was a lightning talk walking through a refactor I did before the 2020 US Presidential Election, titled “Dealing With a Monster Ecto Query.”

I work for a news company, so the presidential election is a huge deal; we can’t have downtime. I knew which query was our bottleneck, so I optimized it right before the election. This took advantage of a few Elixir features, like atoms, the pin operator, and concurrency primitives.

Quakers & Forced Assimilation of Native Americans

Quakers were heavily involved in the forced-assimilation of Native Americans.

Today, through the Friends Committee on National Legislation (the Quaker lobbyist), we advocate for Native rights and Native sovereignty. FCNL employs Portia Kay^nthos Skenandore-Wheelock, a member of the Oneida Nation to run its Native American Congressional Advocacy Program. It was previously run by Kerri Colfer of the Tlingit Nation, and before that Lacina Tangnaqudo Onco of the Shinnecock & Kiowa Nations.