NumPy-style broadcasting in Futhark
A high-performance and high-level purely functional data-parallel array programming language that can execute on the GPU and CPU.
Python Has Too Many Package Managers
Overview of Python's Package management ecosystem in 2024
iTerm 3.5.1 removes automatic OpenAI integration, requires opt-in
iTerm2 is a replacement for Terminal and the successor to iTerm
Code review antipatterns
Code review seems like a great idea, right? Two developers looking at the same code means two chances to spot problems; it spreads understanding of the way the project is evolving; the reviewer can learn useful tricks from reading the author’s code in detail, or spot opportunities to teach the author a useful trick…
DeWitt and Stonebraker's "MapReduce: A major step backwards" (2009)
In January 2008 David DeWitt and Michael Stonebraker published an article criticising MapReduce. As far as I can find, the article is no lon...
A jump into the middle of an instruction from nowhere (2023)
Another rogue patcher.
Significant features introduced for recent versions of Perl
History of Perl releases since version 5.6, each with a summary of added or changed features.
Rust's Sneaky Deadlock With `if let` Blocks
Rust is my favorite programming language. I've been writing Rust for about 6 years, from college to professionally, and I'm vocal about how helpful the compi...
Shape typing in Python
While I was looking the other way, Python got advanced static types! Here’s matrix multiplication, describing the input shapes and its output shape:
Lambda on hard mode: serverless HTTP in Rust
In this post, we'll talk about how Modal handles real-time HTTP requests and WebSockets in serverless functions.
Neat Parallel Output in Python
Make parallel tasks print nicely with zero dependencies.
Why is Common Lisp not the most popular programming language?
This question is always asked. My thoughts are a little bit different than what I've read online.
The problem with new URL(), and how URL.parse() fixes that
As someone building a browser I need to parse a lot of URLs. Partially to validate them, but also to normalize them or get specific parts out of the URL. The URL API in browsers lets you do that, but it’s ergonomics aren’t ideal. The problem with new URL() The “new” in front of new […]
The Modern CLI Renaissance
Over the past few years, it seems like the rate at which new CLI tools are being written has picked back up again, accelerating after seeing relatively little activity between ~1995 and ~2015. I’d like to talk about this trend I’ve noticed, where people are rewriting and rethinking staples of the command line…
My deployment platform is a shell script
my deployment platform is a shell script 2024-04-09 like many people, i fell in love with free software because i could install it. i'd come home from work and install a bunch of software. what fun! tee hee! a playground and i'm the prince! but eventually, relentlessly, it all starts to feel more like a horror show…
There's No Such Thing as Software Productivity (2012)
Bill Caputo , through repeated conversations we've had, has convinced me of something very surprising. It was something that changed the way I think about the world, and how I do my job.
Bitten by Unicode
One product of mine takes reports that come in as a table that’s been exported to PDF, which means text extraction. For dollar figures I find a prefixed dollar symbol and convert the number following it into a float . If there’s a hyphen in addition to the dollar symbol, it’s negative.
JEP draft: Exception handling in switch
Enhance the switch construct so that exceptions thrown by the selector (the e in switch (e) ... ) can be handled in the switch block. Alongside a previous enhancement to handle null selectors, this makes switch even more useful for pattern matching. This is a preview language feature .
On Good Software Engineers
I set out to find a simple definition that would help managers frame the fundamental things they expect from software engineers.
Code Generation in Rust vs. C++26
One of the things I like to do is compare how different languages solve the same problem — especially when they end up having very different approaches. It’s always educational. In this case, a bunch of us have been working hard on trying to get reflection — a really transformative language feature — into C++26…
The intricacies of implementing memoization in Ruby
A long time ago, I wrote a memoization library for Ruby. It was not easy, but I learned a great deal in the process. In this article, I am share these learnings and showing you how deep the memoization rabbit hole goes.
Pair Your Compilers at the ABI Café
Not sure if your compilers have matching ABIs? Then put them through the ultimate compatibility crucible and pair them up on a shift at The ABI Café! Find out if your one true pairing fastcalls for each other or are just another slowburn disaster. (Maid outfits optional but recommended.)
Shape Rotation 101: An Intro to Einsum and Jax Transformers
Acknowledgements First, I would like to acknowledge my friends and kind internet strangers who helped me with this post. This post heavily adapts from ...
"GitHub" Is Starting to Feel Like Legacy Software
I’ve used a lot of tools over the years, which means I’ve seen a lot of tools hit a plateau. That’s not always a problem; sometimes something is ju...
Using ARG in a Dockerfile – beware the gotcha
Learning about the subtle gotcha with ARG and FROM instruction ordering in Dockerfile definitions.