Building My Own Yahoo Pipes
Pipes has been dead since 2015 or so, but I used it for a long time and it was essential to my daily news intake, so I’ve been building a personal ...
Topics /
The most popular blog posts about software engineering on Hacker News. 14,544 posts.
Pipes has been dead since 2015 or so, but I used it for a long time and it was essential to my daily news intake, so I’ve been building a personal ...
This is a followup to my previous post, prefix sum on Vulkan. Last year, I got a fancy algorithm for this problem running well on one device. This time, I will dive into the question of how to make it work well across a wide range of devices. The short answer is, it can be made to work pretty portably on Vulkan and…
Back in 2021 I looked at OpenEXR lossless compression options (and I think my findings led a change of the default zip compression level , as well as change of the compression library from zlib to libdeflate . Yay blogging about things!) . Then in 2023 I looked at losslessly compressing a bunch of floating point data…
Measuring your Python program’s memory usage is not as straightforward as you might think. Learn two techniques, and the tradeoffs between them.
Update 2022 : TheIronBorn has found even better permutations using a smarter technique. That thread completely eclipses my efforts in this article.
Buffered output typically comes in two flavors: fully buffered and line buffered. If output goes to a terminal then the implementation automatically selects line buffering, flushing its buffer when a line is completed so that it reaches the user immediately. Otherwise it fully buffers, holding output until the buffer…
Today I've been working with a piece of third-party software. I was having big problems getting it working and decided to delve into its ...
It’s often said that the Age of Information began on August 17, 1964 with the publication of Cooley and Tukey’s paper, “An Algorithm for the Machine Calculation of Complex Fourier…
I’ve always thought dynamic programming was a pretty crummy name for the practice of storing sub-calculations to be used later. Why not call it table-filling algorithms , because indeed, thinking of a dynamic programming algorithm as one that fills in a table is a quite good way of thinking about it.
‘Monadic Parsing in Haskell’ is a short paper that laid the groundwork for libraries like Parsec and Attoparsec. Although it was published in 1998 (almost 20 years ago!) it has aged gracefully and the code samples will run with almost no changes. However, the state of the art has advanced since then and I think the…
My Quines are sometimes specialized for Japanese. But to attend RubyConf, I should write "global" Quines. v=0000;eval$s=%q~d=%!^Lcf<LK8, ...
Today, I'm publishing a new book: Property-Based Testing with PropEr, Erlang, and Elixir . It's my third book, the second one that is not self-published.
I’m trying to build a jigsaw puzzle. I wish I could show you what it will be, but the picture isn’t on the box. But I can show you some of the pieces that snapped into place this year, and try to share a context for why they mattered so much to me.
Update (August 11th): A patch for this bug has been released by Microsoft. Here’s their update to the advisory: We released an updated version of RyuJIT tod...
In this blog post, we walk through how to use Matrix Cores in HIP kernels, with a focus on low-precision data types such as FP16, FP8, and FP4, as well as the new family of Matrix Core instructions with exponent block scaling introduced in the AMD CDNA™4 architecture. Through code examples and illustrations, we…
I regularly hear or read statements like this: “X is slow but this is to be expected because it needs to do a lot of work”. It can be said about an application or a component in a larger system, and can refer to other resources that aren’t time. I often find these profoundly unhelpful as they depend much more on the…
(this was originally given as a talk at AlterConf in Oakland)
Let's face it, it’s not very exciting to be a Django developer today.
A point-by-point rebuttal of Zed Shaw's Unicode and 2to3 complaints, with a trainer's view on which Python version to teach beginners in 2016.
I noticed that in the Ruby community “Java” is a synonym of pure evilness. It’s often used as an argument against some techniques. “It’s J...
There are still many situations where it's not feasible to stop a process, attach the debugger, and start futzing with memory. We can argue over whether this is because the industry didn't learn enough from the Pharo folks later. For now, let's pretend that's axiomatic: a certain amount of debugging (and even testing)…
In computing, the terms big endian and little endian refer to the order in which a value's bytes are stored in memory: with the most significant (big) or least significant (little) part first.
Lists play an important role in Lisp--for reasons both historical and practical. Historically, lists were Lisp's original composite data type, though it has been decades since they were its only such data type. These days, a Common Lisp programmer is as likely to use a vector, a hash table, or a user-defined class or…
I hate the expression “best practice”, it’s so, so often used by someone to justify the application of cargo cult without actually understanding why.
Here are some of the most interesting things I learned at DjangoCon EU 2025 in Dublin, Ireland, partially written with the help of AI: link to talks