What's bad about Julia?
A mega-rant about all the things I find bad about Julia.
The latest blog posts to take off on Hacker News. 14,541 posts.
A mega-rant about all the things I find bad about Julia.
Three years ago I found a 32 GB memory leak caused by CcmExec.exe failing to close process handles. That bug is fixed, but ever since then I have had the handles column in Windows Task Manager ena…
So! Rust futures! Easy peasy lemon squeezy. Until it’s not. So let’s do the easy thing, and then instead of waiting for the hard thing to sneak up on us, we’ll go for it intentionally. That’s all-a...
Without psychological safety, respect, and trust, none of the following is possible. The way we work, the work we do, and the organizations within which we work are all part of a connected system. You cannot change anything without changing everything. You cannot improve a system by tinkering with the parts. Process…
The other week, I stumbled on the post Inserting One Billion Rows in SQLite Under A Minute , which was a funny coincidence, as I was just in...
A small enhancement to Datasette this week: I’ve added support for proxying via Unix domain sockets. This started out as a feature request from Aslak Raanes: #1388: Serve using UNIX …
Welcome to part 1 of Modern C++ for C Programmers, please see the introduction for the goals and context of this series. In this part we start with C++ features that you can use to spice up your code ’line by line’, without immediately having to use all 1400 pages of ‘The C++ Programming Language’. Various code…
Further adventures in JavaScript
Every year or so, something compels me to start over with a fresh OS image. Most recently, that something was an unfortunate water bottle incident. Once again, I need to pull down my digital life from the internet. The code and assets for this blog currently live in a 500 MB Git repository, which was hosted on…
The concept known as "worse is better" holds that in software making (and perhaps in other arenas as well) it is better to start with a minimal creation and grow it as needed. Christopher Alexander might call this "piecemeal growth." This is the story of the evolution of that concept.
namedtuple has been around since forever, and over time, its convenience saw it used far outside its originally intended purpose. With dataclasses now covering part of those use cases, what should one use named tuples for? In this article, I address this question, and give a few examples from real code.
EDIT: I never expected this post to garner so much interest. Just to be clear, using the constant is a very bad idea in almost every situation I can think of. Even instructions like RCPSS should only be used by people who are convinced that the tradeoffs are worth it (or don’t have any other choice). Subtracting from…
In some previous blog posts we described in details how one can generalize automatic differentiation to give automatically stability enhancements and all sorts of other niceties by incorporating graph transformations into code generation. However, one of the things which we didn’t go into too much is the limitation of…
Are cross-project changes in a single atomic commit the key advantage of monorepos? I do not think so.
T hese days, I find myself evangelizing for Julia quite a bit. It’s a good language, especially for scientific computing, but I believe its focus on performance also makes it a good general language as well. At some level, programmers who know multiple languages have an abstract understanding of the constructs used…
The Clojure Core team recently released a new Clojure library, tools.build , that is a culmination of thought around batteries-included build support for Clojure projects. I won’t go into detail around the history and contents of the library in this post because much of that is found elsewhere, including the…
I'm a big advocate of Empirical Software Engineering. I wrote a talk on it. I wrote a 6000-word post covering one controversy. I spend a lot of time reading...
10 Papers Every Developer Should Read - (At Least Twice)
"JVM Anatomy Quarks" is the on-going mini-post series, where every post is describing some elementary piece of knowledge about JVM. The name underlines the fact that the single post cannot be taken in isolation, and most pieces described here are going to readily interact with each other.
A glimpse of the upcoming paradigm shift in how we do development
In our 54th reading group meeting, we were looking for an answer to an important question in the distributed systems community: “What about Raft?” We looked at the “ Paxos vs Raft: Have we reached consensus on distributed consensus? ” paper to try to find the answer. As always, we had an excellent presentation, this…
4-day coding marathon
I recently got a new Macbook, and began setting up the Nix package manager to install my developer toolset. I mainly did this to try and have a working setup without installing Homebrew. Since I ran into a few issues, I wanted to briefly document what I did and why in case others wanted to try the same. Why Nix? (and…
Keynote at 15th ACM International Conference on Distributed and Event-based Systems (DEBS) , Online (originally planned to be in Milan, Italy), July 2021.
This article is about how to use the 'tail' command. Here is an overview of how you can use the 'head' and 'tail' commands to output different parts of a file: