Summary To reduce the profiles that the big data companies can maintain about me, I am using:
ExpressVPN Duck Duck Go Fastmail Or, how much data is too much data? In 2018, I chose to sign up for a VPN, especially for the fairly numerous times that I’m using random wifi networks. As Michael Grothaus points out in Fast Company, internet service providers have been given more leeway to sell your online history, which is obnoxious.
Creating diagrams is a stereotypical software architect task, but the fact of the matter is that a picture can convey a thousand words of information. Diagrams are important for understanding.
Google Drawings I’ve been using Google Drawings a lot recently, because of the ease of collaboration and the ability to embed them in Google Docs.
I don’t like Google Drawings, though. Diagrams look bad by default, in my opinion, and it takes extra work to make them look okay.
These are just links to fun things.
Fold’NFly is a database of paper airplane designs. Rocket is a Mac app that makes it as easy as in Slack to add emoji in any app. 🚀!
Hexagonal Architecture a.k.a. Ports and Adapters
Gary Bernhardt’s Boundaries talk is one of my favorites. In it, he talks about a “functional core” of pure, easily-testable code, surrounded by an “imperative shell” which deals with the messy world outside.
It can be delightful to write code in this way:
Part of the time, you’re focused on the real problem you set out to solve The other part of the time, you’re dealing with the technology mess required to make it work Haskell’s IO Monad or the Effect Python library provide systematic ways to get this kind of architecture.
I’m new to Go, and I want a crash course in building services with it.
Learning Go from Zero to Hero Milap Neupane published Learning Go from Zero to Hero just a few days ago. It covers the real basics of the language. Go is known for its simplicity, so I think this article actually does cover much of what’s needed, albeit without nuance that I’m sure comes from using the language.
Escaping the Technical Debt Cycle A talk by Michael Feathers: Escaping the Technical Debt Cycle
In the talk, he urges against most numeric metrics. He praises the Open/Closed Principle as one important way to avoid adding unhealthy debt:
In object-oriented programming, the open/closed principle states “software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification”; that is, such an entity can allow its behaviour to be extended without modifying its source code.
GraphQL Best Practices Shopify has posted a tutorial about their GraphQL best practices.
Graphene Graphene is the Python GraphQL solution we use at Khan Academy. It doesn’t seem as advanced as Apollo Server.
Python Web Programming
Molten These days, server-side web development is largely about building APIs. Molten is a web framework built for web APIs on top of modern (Python 3.5+) idioms.
Graphene As of September 2018, Khan Academy has been transitioning over to GraphQL APIs gradually over the course of the last year. We’ve been using Graphene on the server-side. More detail on the GraphQL page.