2021#26 Readings
7 minutes read | 1444 words by Ruben BerenguelEnd of year cleanup, so a lot of goodies this time
As part of my end of year rituals, I clean up/groom my reading list, emails, open tabs, books, courses… The most relevant change so far is that my reading list is gone from Things 3 to Obsidian. One big advantage of Obsidian is that I can better track (and plot) its size, which is something I always like to have monitored. This means that at some point I’ll need to tweak the code that helps me write these posts relatively quickly (hweekly and a taskfile inside the private repository)
📯 Data Pipelines with Alloy, Take 2
I tried something with the new temporal logic operators in Alloy, as an extension to my previous post about modelling data pipelines. I didn’t get any useful insight, aside of how easy writing Alloy models can be.
Abstract Syntax Tree for Patching Code and Assessing Code Quality
I mean, yes, you can inspect and tweet Python ASTs. Probably you shouldn’t usually do that for fun and profit unless your profit depends on it.
🔊 Making Work Visible: Exposing Time Theft to Optimize Work & Flow
It has been mostly good. Maybe a bit “too much kanban” for my tastes, but it has been interesting and many of the ideas could apply regardless of your development flavour.
Stryker4s: from 40 minutes to 40 seconds
I haven’t touched stryker4s since last time I was in Scala World (duh, long time ago), but this change from earlier this year can be a game changer.
DuckDB quacks Arrow: A zero-copy data integration between Apache Arrow and DuckDB
Sweet, sweet speed. Consider adding DuckDB to your toolset.
Weapons on Ancient Coins
Worth checking to see the awesome craftmanship on the coins.
Is Invasive Species Dining The Next Frontier?
It’s a bit puzzling to find a picture (mid-article) of Jerusalem artichokes (sunchokes, or tupinambos as we know them in Catalonia). They are just “mildly” invasive (i.e. like mint is actually invasive, it will basically take over anything you have around). At home we definitely love their taste, depending on how you prepare them they suggest sunflower seeds, or artichoke hearts. Problem is, they can produce really, really severe, let’s say, bloating 🍑💨💨.
Centrifuge: a reliable system for delivering billions of events per day
I was surprised to find RudderStack (an open-source-ish “replacement” for Segment) using Postgres for all its queueing capabilities, but then I saw a link explaining the reasoning: It’s what Segment does, but they use MySQL (in RDS).
How I Self-Published My First Technical Book
I bought the book 1h15' after getting the email letting me know it was finished. As a somewhat long time reader of Li Haoyi’s blog posts I knew it was going to be good. It took me somewhat longer to read it (basically until I got a Remarkable 2) and it definitely has been a good one.
Manuscript Maps — Making Maps : Part 2 - Ink Drawing and Calligraphy
For some obscure reason I ended up on this page and it didn’t disappoint a map lover like me.
Tim Dowling: I’m on my hands and knees, teaching our new cat old tricks
Cats being cats.
Project Zero: A deep dive into an NSO zero-click iMessage exploit: Remote Code Execution
THE F*&%!
JBIG2 doesn’t have scripting capabilities, but when combined with a vulnerability, it does have the ability to emulate circuits of arbitrary logic gates operating on arbitrary memory. So why not just use that to build your own computer architecture and script that!? That’s exactly what this exploit does. Using over 70,000 segment commands defining logical bit operations, they define a small computer architecture with features such as registers and a full 64-bit adder and comparator which they use to search memory and perform arithmetic operations. It’s not as fast as Javascript, but it’s fundamentally computationally equivalent.
The Improvements for Structured Streaming in the Apache Spark 3.1 Release
A bit late, I’m doing my annual clean-up of articles I may want to read-and-forget before the new year. I find of particular interest the streaming-tables-to-delta-lake, since it sounds as if it makes it extremely easy to convert streaming sources (as in Kafka) into nicely coalesced Parquet files.
The Secret Lives of Adjunct Professors
While starting (and finishing) my PhD I had several adjunct positions, and they also pay crappy on this side of the Athlantic.
How To Get Better at Painting – Without Painting Anything
A bit of a clickbait, since the trick is to drill simple, related things, like line drawing.
Can “Distraction-Free” Devices Change the Way We Write?
I do own a ReMarkable 2 (and also heavily used IA Writer for a while). In the end, you need to have something to say, I have found. The RM2 is extremely useful as a reading device for large size PDFs (like research papers, or technical books) but I don’t like it that much for writing notes. I tried for a long while (you won’t need a notebook ever again!) but it didn’t fit my “feeling”.
Using Haskell as my shell
Sounds like an extreme amount of yak shaving, particularly to fix no problem in particular (the introductory issue is totally a non-problem I think). On the other hand, using turtle to write shell scripts seems more interesting and useful.
Preparing Apache Kafka for Scala 3
Sad, looks like we won’t have Kafka ported to Scala 3 (itself) until Scala 3.something due to Java-Scala interop enhancements that have been lost between Scala 2.13.x and early Scala 3.
On Schelling Points in Organizations
Nit: Schelling is a person, so it’s Schelling point
, capitalisation seems to be missing in the text. The idea is very interesting and I have the gut feeling keeping it in mind can improve my future project handling.
Tests aren’t enough: Case study after adding type hints to urllib3
I will never let an opportunity to say mypy is great and needed for most Python code
go to waste.
Net Promoter Score for Data Teams
This looks like a great idea… but it can backfire so easily!
I blew $720 on 100 notebooks from Alibaba and started a Paper Website business
This is incredibly inspiring, even if silly. The execution seems to be incredibly smooth, though.
Building an 8-bit battle royale game
After reading about the other projects from the creator above I went to see other tiny projects. This guy is not only prolific but has some sense for “fun” ideas.
Serving 100µs reads with 100% availability
For some years I have been thinking that SQLite is a great “data exchange format” as well as an efficient way to keep data in sync. And here Segment makes a very compelling case: keeping thousands of instances in sync with a central control plane via replicated SQLite (they replicate from MySQL, but anyway).
Inside the mind of Magnus Carlsen: ‘I am happy to win in any way possible’
I guess this will be a spoiler to nobody, but indeed Nepomniatchi went on tilt and Carlsen totally reversed their face-to-face results.
🛠 lark-parser/lark: Lark is a parsing toolkit for Python, built with a focus on ergonomics, performance and modularity.
If you ever need an Earley parser in Python lark seems the best (and fastest) option.
🛠 erezsh/Preql: An interpreted relational query language that compiles to SQL.
And seeing projects using lark above, I found this intriguing language that “compiles” to SQL. Seems very convenient for writing test cases.
Annotated explanation of David Beazley’s dataklasses
What it says on the tin, the author is Simon Willison. You’ll learn a nifty trick if you ever need to generate code like this. Or get a glimpse into how certain people see code and optimisation.
Supercharge Your Team with Software Engineering Analytics
The examples here are very informative about all the good a software engineering metrics team/mindset can bring to your company.
- Python
- Data
- Business
- Kafka
- Scala
- Haskell
- Writing
- Spark
- Maps
- Cooking
- ReadingsOfTheWeek
- Readings
- Alloy
- Formal methods