Friday Blast #37
Today’s friday links are all over the map. Can’t have all of them be themed.
The various kind sof IO - blocking, non-blocking, multiplexed and async (2018) - the core insight is that asynchronous I/O is independent of multithreading. Other than that, it’s pretty systematic in covering the various ways a program can deal with I/O from a time and work perspective.
Is Docker the new Git? (2018) - the author makes the point that there’s a bunch of technologies which win cause they’re good or good enough for most cases. Even if you don’t have the problems they’re solving exactly, or if you’re invested into an alternative, it might make sense to adopt them. Git was one such tool, Java another, the Cloud a third and Docker might be a good candidate.
More environments will not make things easier (2018) - Links to Tyler Treat’s blog are always a treat. Pun intended. But they usually deal with distributed systems lower-level issues. Today’s link is about architecture concerns and how microservices are hard and some strategies to dealing with them at the integration level. I like the idea of consume-driven contract testing, as well as the realization that what’s keeping many of these things running are good teams rather than just practice X or Y.
Event sourcing made simple (2018) - Event Sourcing is an intriguing approach to the architecture of larger applications. Sadly, it does require discipline and a host of infrastructure to make them work. Which might not be worth it for smaller projects. But the article here presents just the approach to work in such cases. It’s pretty interesting, but it’s mostly a retrofitting of ES concepts - events tables and aggregates being written by the same transaction from a single request handler, a tighter code coupling etc. It’s something I’ve actually used in projects to a certain extent. So not so exotic after all.
Conceptual compression means beginner don’t need to know SQL - hallelujah (2018) - a well-written DHH article on how we’re advancing as a field, and things which were essential knowledge yesterday, become today’s arcana. The example is on SQL, but CPU and memory structures, assembler, OS internals etc. are all on the spectrum somewhere. I think the killer takeway here is the idea that we’re doing all these abstractions with the goal of making it easy for one developer or a small group of them to fully build an application. And I think that’s a very powerful thing. Cause it’s no fun when you need 10+ types of developers to build something.