[Weekly Drip 068.1] Python drives away BDFL; Monads sans 🌯; System Design Explained

News

Guido Van Rossum has decided to remove himself from the position of BDFL in the Python community. In Guido’s letter he says I don't ever want to have to fight so hard for a PEP and find that so many people despise my decisions. For some context read more about the PEP-572 mess, which finally has been resolved. Guido tweeted "I'm overwhelmed by the responses”, and assured his followers he would still “be around in the background!”

image alt text

Donne Martin, Engineering Manager at Facebook, has built a comprehensive primer for Systems Design. It will help you learn how to design large-scale systems. He’s also included Anki spaced-repetition cards for study. The primer covers high-level concepts (i.e. Performance vs. Scalability, Availability vs. Consistency, Latency vs Throughput) as well as dives deeply into various specifics you should have a deep understanding of (i.e. DNS, CDNs, Load Balancing, Service Discovery, Caching). I’ve never seen as thorough a primer on systems design in a single place, and it’s a subject dear to my heart. If you’re looking for a shorter, shallower discussion of these concepts, Jonathan Fulton from Storyblocks has written up a nice article on Web Architecture 101.

image alt text

Want insight into why and how Elixir was designed and what problems it tries to solve? Elixir: A Mini Documentary is a video with José Valim, Chris McCord and other developers talking about the beginning and the future of the language. Watch it, then get sucked into learning Elixir if you haven’t already!

Rafael Benevides explains why Kubernetes is the new application server. In the article, he explains the history of Java Application Servers and discusses how Kubernetes largely fills that role for containers. He also discusses how additional services such as Istio, OpenShift, and OpenWhisk build atop it to provide for Non Functional Requirements, such as service discovery, elasticity, logging, monitoring, build/deploy pipelines, resilience, authentication, and tracing.

image alt text

Just recently I had a friend ask If I had used Google Photos before. My friend said it looked super neat. What makes it neat? Well, my friend didn’t know. However, Google Design happened to give us a couple hints in Antin Harasymiv’s recent post, ‘Building the Google Photos Web UI’. We typically don’t get too heavy into the UI scene, but this was too good to pass up. Find out why Google Photos looks great, and learn about scrubbable photos, justified layout, and 60fps scrolling.

image alt text

Josh thought this tweet was funny, but anyways…

Introducing Cinoop, a gameboy emulator written from scratch in C. If you have time to build a gameboy emulator or time to read about one getting built, please feel free to give us a deeper dive into this story. In all seriousness, this is awesome. Check it out. It’s open source.

image alt text

Be a frontend developer they said [codepen]…

image alt text

A Program Synthesizer will produce a program that satisfies a constraint. Building on seems complicated. Great news: With Rosette you can build a program synthesizer in 20 lines of code. Even greater news: James Bornhold will show you how. The synthesizer code is on Github as well.

Welcome to another microservices are all the rage, great, fantastic, taking over the world, watch out... Just kidding! Finally an article talking about how microservices suck. Alexandra Noonan from Segment discusses why microservices worked at one point, but dont work now [for Segment.com]. Alexandra says The overhead from managing all of these services was a huge tax on our team. They ended up replacing them all with 1 mega ‘superstar’ monolith. I don’t want to spoil it, but RIP microservies. They found that a comprehensive test suite was key to managing the monolith.

image alt text

Digital Ocean’s report on dev trends in the cloud taught us three big things. 1) Developers want to grow in their jobs more than anything else. 2) 49% of devs are using containers 3) Serverless computing is not being used in production commonly even though you hear about it all the time. These were just some of the key findings, read the rest of the report if this kind of thing interest you.

Elm Europe has wrapped up and the recordings of the livestreams are available. You can watch day one and day two. I really enjoyed Evan’s talk on how rather than just taking the easy path and exposing the existing browser API for sizing information, he thought through use cases and ended up with a much simpler API. It’s a very solid justification for the biggest complaint people seem to have with Elm - the way that development on the core language is batched. He also points out that Java and JavaScript have had longer gaps between releases than Elm, so maybe complaining about release speed is a bit silly. Also, Matthew Griffith’s talk on building a better animation toolkit is wonderful. There are more great talks in there, so watch them all in one ~18-hour sitting.

image alt text

In Monads Made Simple, Mark Cohen provides an introduction monadic programming without getting into the weeds of what a Monad is, by working through a concrete use case. This is more valuable than any number of Monad <-> Burrito articles.

ESLint was compromised. Luckily, the issue was found rather quickly (but only because of an error in the exploit script). Affected versions include eslint-scope@3.7.2 and eslint-config-eslint@5.0.2, which were both published maliciously on the 12th of July. Read NPM’s incident report or the Postmortem from the ESLint team.

image alt text

Ruth John writes a basic implementation with the CSS Paint API. Part of the Houdini CSS project, the paint API allows direct access to the engine under CSS. The long term hope is to avoid browser feature-lag in CSS by allowing devs to implement their own CSS features. The paint API is the first Houdini feature to get popular attention, and the entire project is a long way off from being useable, in terms of browser support. This feature set, combined with wasm, will give developers unprecedented access to the lower levels of browser functionality, and allow much faster and richer applications to be written.