Summary To reduce the profiles that the big data companies can maintain about me, I am using:
ExpressVPN Duck Duck Go and will switch to a not-yet-chosen (as of early January 2019) email provider. I’d be happy to have your input on that choice! Get in touch on Twitter (@dangoor) or email kevin at this domain.
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.
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.
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.