New
The latest blog posts to take off on Hacker News. 14,543 posts.
Why am I interested in Elixir?
I’ve had Elixir on the brain recently. And by recently I probably mean 2 years. In my defense I think it is fair to say it is blooming right now. I haven’t had much need of it, or opportunity for it, in my day-to-day of maintaining a Python legacy system, renewing another legacy or optimizing Elasticsearch. So I’ve…
A better zip bomb
This article shows how to construct a non-recursive zip bomb that achieves a high compression ratio by overlapping files inside the zip container. "Non-recursive" means that it does not rely on a decompressor's recursively unpacking zip files nested within zip files: it expands fully after a single round of…
It’s Time for a Modern Synthesis Kernel
I had a student (Fred Smith) who worked on extensions to Popcorn (the predecessor to Cyclone) that supported run-time code generation in a lightweight fashion. Here’s a paper describing part of the system: https://ecommons.cornell.edu/handle/1813/5812 . Fred’s thesis had a bunch more.
Svelte is the most beautiful web framework I've seen
I first heard about Svelte a year ago, when Rich Harris presented it at JSConf EU 2018. The demo gods were a bit harsh on him, but it didn't matter to me, because I was so impressed by his philosophy and ideas that I was already sold. I knew he'd work out the kinks, go through a few major versions, and Svelte would be…
One Program Written in Python, Go, and Rust
Image differentiation in three languages
Writing a small ray tracer in Rust and Zig
This is where I write about the stuff that I've been working on.
Mistakes we made adopting event sourcing and how we recovered
Good judgement is the result of experience ... Experience is the result of bad judgement. — Fred Brooks
D as a C Replacement
Sircmpwn (the main developer behind the Sway Wayland compositor ) recently wrote a blog post about how he thinks Rust is not a good C replacement . I don’t know if he’d like the D programming language either, but it’s become a C replacement for me.
Go Slices Are Fat Pointers
One of the frequent challenges in C is that pointers are nothing but a memory address. A callee who is passed a pointer doesn’t truly know anything other than the type of object being pointed at, which says some things about alignment and how that pointer can be used… maybe. If it’s a pointer to void ( void * ) then…
SwiftWebUI
Beginning of the month Apple announced SwiftUI at the WWDC 2019. A single “cross platform”, “declarative” framework used to build tvOS, macOS, watchOS and iOS UIs. SwiftWebUI is bringing that to the Web ✔️
Sysop Chat
Back in mid-90s before anyone I knew had an Internet connection, a few of us had modems and would use them to call bulletin board systems via the phone line. On these systems what to me seemed the main thing was discussions and chat. For the first time I could talk to other like-minded people, and just being able to…
Live coding a vi for CP/M from scratch
The other day, being unable to find a suitable open-source text editor for cpmish , I sat down and wrote a simple vi-like editor. It took nine hours. I have it all on video.
Let's Build a Simple Interpreter. Part 14: Nested Scopes (2017)
Only dead fish go with the flow. As I promised in the last article, today we’re finally going to do a deep dive into the topic of scopes. This is what we’re going to learn today: We’re going to learn about scopes, why they are useful, and …
The Programmers' Stone (2014)
Hi, and welcome to The Programmers' Stone. The purpose of this site is to recapture, explore and celebrate the Art of Computer Programming. By so doing we hope to help the reader either become a better programmer, understand what less experienced programmers are struggling with, or communicate more effectively with…
Durable Design (2017)
It seems like small thing, but it’s an engineering detail I’ve always had a lot of respect for.
Real-world dynamic programming: seam carving
Dynamic programming has a reputation as a technique you learn in school, then only use to pass interviews at software companies. Indeed, most developers do not regularly work on problems where dynamic programming is needed. Ultimately, dynamic programming is a technique for efficiently solving problems that can be…
HTML is the Web
In which I lament the fact that many frontend Web engineers don't understand the end product of their work, HTML.
A Visual Intro to NumPy and Data Representation
Discussions: Hacker News (366 points, 21 comments), Reddit r/MachineLearning (256 points, 18 comments) Translations: Chinese 1, Chinese 2, Japanese, Korean The NumPy package is the workhorse of data analysis, machine learning, and scientific computing in the python ecosystem. It vastly simplifies manipulating and…
Building Standalone Python Applications with PyOxidizer
Python application distribution is generally considered an unsolved problem. At their PyCon 2019 keynote talk, Russel Keith-Magee identified code distribution as a potential black swan - an existential threat for longevity - for Python. In their words, Python hasn't ever had a consistent story for how I give my code…
Avoid Indirection in Code
I often see code where authors abstract away details by placing them in some external function. Here is a toy example:
Trinity: PSP Emulator Escape
Trinity is a fully chained exploit for the PS Vita™ consisting of six unique vulnerabilities. It is based on a decade of knowledge and research. The source code of Trinity can be found here.