Debugging an Undebuggable App
This app has a surprising number of anti-debugging protections. Let's figure out how to bypass them.
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,540 posts.
This app has a surprising number of anti-debugging protections. Let's figure out how to bypass them.
Looking down from his perch on the edge of space [http://www.youtube.com/watch?v=FHtvDA0W34I], Felix Baumgartner remarked: > Sometimes you have to be really high, to see how small you really are. It turns out that this feeling is a well documented phenomena dubbed the Overview effect [http:
As an respectable unemployed person must do, I tried to make Postgres as slow as possible
Most CPU architectures in use today have an instruction called popcount , short for “population count”. Here’s what it does: it counts the number of set bits in a machine word. For example (assuming 8-bit words for simplicity), popcount(00100110) is 3 and popcount(01100000) is 2 .
A journey through text editors and how I landed on Zed after years of Neovim
Serverless is like a black hole. It promised exciting adventures, but the gravity sucked me in and I spent most of my efforts dealing with its complexity, in...
Macrocosm is a mobile game that takes you from atom to galactic empire across seven interconnected stages where making progress in one stage gives you a boost in the next! This post is a deep dive into the (nearly) four years of free time I spent making it.
Rahul's Blog
This program is a dependency-free implementation of GPT-2, including byte-pair encoding and transformer inference, in ~3000 bytes of C. I then use this to create something like Chat GPT.
The idea of a zero cost abstraction is very important to certain programming languages, like Rust and C++, which intend to enable users to write programs with excellent performance profiles with relatively little effort. Since this idea is fundamental to the design of Rust and my work, I want to investigate, for a…
tl;dr: online TLA+ manual/advanced techniques/examples here. TLA+ is a tool for testing abstract software designs. I first stumbled on it in 2016 and found it so useful I wrote a free online guide to help others learn it. Then I decided the guide wasn’t good enough and wrote Practical TLA+ in 2018. Then I decided the…
TLDR? You can find the code and a bunch of examples on GitHub at dps/rust-raytracer. Over the holiday break, I decided to learn Rust. Rust is a modern systems programming language which has a really interesting type system. The type system can catch broad classes of common programming mistakes - e.g. ensuring memory…
Exploring a minimal implementation of a time-sharing kernel on RISC-V, implemented in Zig, on top of OpenSBI.
In 2007 I wrote a pair of modding tools, binitools , for a space trading and combat simulation game named Freelancer . The game stores its non-art assets in the format of “binary INI” files, or “BINI” files. The motivation for the binary format over traditional INI files was probably performance: it’s faster to load…
Trying out this newsletter thing... It's sort of astonishing to think about how much value I've gotten from Twitter over the last few years. At its best, my...
I’ve used CoffeeScript for a few months now. Coming from Python, I felt that CoffeeScript was more concise than Javascript, so I decided to use it for a few small projects. Initially, it was a nice experience, but then I gradually realized that, while writing CoffeeScript code was very pleasant, reading it wasn’t so…
Practitioner's perspective comparing Django and Flask — two Python web frameworks, their trade-offs, ecosystems, and when each fits. Full article on devel.tech.
As part of the small minority of devs at my company who primarily run Windows, I’m accustomed to working around occasional Unix-specific behaviors in our build and deployment systems. Cygwin makes most stuff just work, I can fix simple incompatibilities myself, and as a last resort I can always boot into OSX for a…
The personal website of James Belchamber.
Python loses every public benchmark by 21-875x. I took the exact problems people use to dunk on Python and climbed every rung of the optimization ladder -- from CPython version upgrades to Rust. Real numbers, real code, real effort costs.
Update: There is a nice discussion on Hacker News about this blog post. As a developer I think it is important to stay up to date with new…
The longer I spend as a software engineer, the more obsessive I get about testing. I fully subscribe to the definition of legacy code as “code without an automated test suite.” I’m convinced that the best thing you can do to encourage fast progress in a test suite is to design for testing and have a fast, reliable…
Two fun things happened recently and the proximity of the two made something go click in my head and now I think I understand how bytecode interpreters work.
In the Unity for Software Engineers (now updated and available as a book), series, I give an accelerated introduction to game development in Unity.
Jimmy Koppel's in-depth review of John Ousterhout's A Philosophy of Software Design, with case studies on specs, simple APIs, names, and types.
I’ve come to the conclusion that, for me, ORMs are more detriment than benefit. In short, they can be used to nicely augment working with SQL in a program, but they should not replace it.