/images/avatar.jpg

Mackenzie Morgan

Pretty Waterfalls in Honeycomb

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.

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.

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.

Finding Quakers

Trying to find Quakers near you? Try one of these links: General Australia Canada Quaker Maps: Canada, UK, US United Kingdom United States Worldwide Note that the “worldwide” link also includes a way to register yourself as an “isolated Friend” if there’s no meeting near you. With time, new meetings can form. LGBTQ+ If you are concerned about LGBTQ+ affirmation, here are lists of meetings that have formally stated their affirming position.

Reading List: Intro to Quakers

Just leaving this here as a reference. Books Your local Faith & Practice Advices & Queries A Quaker Book of Wisdom An Introduction to Quakerism Living the Quaker Way Our Life is Love Pendle Hill pamphlets Why Friends are Friends The Cambridge Companion to Quakerism Fit for Freedom, Not for Friendship Face to Face: Early Quaker Encounters with the Bible A Long Road: How Quakers Made Sense of God and the Bible Barclay’s Apology original or modern English Online Friends Journal Quaker Speak Quakers on Reddit Quakers on Discord Quakers on Twitter My podcast

Start of a List

Elixir has a lot of ways to get the first thing in a list. One of the first things you learn from the basic syntax guide on the Elixir website is that hd(foo) gets the first thing in a list, and tl(foo) gets the rest. You also learn [ head | tail ] = foo. But what happens when it’s an empty list? iex(1)> foo = [] [] iex(2)> hd(foo) ** (ArgumentError) argument error :erlang.

Dang, Elixir is stable

On Monday, my manager asked about on-call coverage for the Elixir app I work on. There are only a handful of people in the company who know Elixir, and he was concerned that I would feel like I couldn’t take a vacation. Him: How often do you get on-call alerts? Me: shrug Never 😏 Him: Wait, what? Do you have them set up? Do they work? 😰 Me: Yeah, they’re set up, and yes, they work, but the interval…Two weeks ago, another team made a change that affected us without telling us, and that caused an alert.