The Windows Malloc() Implementation Is a Trash Fire

I am currently porting an experimental language to Windows. This experimental language was built in C++ with LLVM, and relies heavily on GCC extensions like VLAs and Compound Statement Expressions, which basically made it impossible to build with MSVC (although I have a truly hor … | Continue reading


@erikmcclure.com | 1 year ago

Camp Vista – Growing Up Next to Microsoft

This blog was started on LiveJournal shortly after I graduated high school in 2009. It has survived this long because I was very persistent about porting all my posts to Blogger, and then to my own static website. Of course, I have limits. Most of my terrible old posts were remov … | Continue reading


@erikmcclure.com | 1 year ago

Blockchain Is the New JavaScript

Over 25 years ago, Brenden Eich created JavaScript, named after Java simply because it was popular. It's prototypical nature and dynamic typing made it unsuitable for anything other than slow interpreters, forcing Google to invent a way to JIT the language just to make it fast. W … | Continue reading


@erikmcclure.com | 2 years ago

C++ Constructors, Memory, and Lifetimes

What exactly happens when you write Foo* foo = new Foo();? A lot is packed into this one statement, so lets try to break it down. First, this example is allocating new memory on the heap, but in order to understand everything that's going on, we're going to have to explain what i … | Continue reading


@erikmcclure.com | 3 years ago

Name shadowing should be an operator

I recently discovered that in Rust, this is a relatively common operation: let foo = String::from("foo"); // stuff that needs ownership let foo = &foo; Or this: let mut vec = Vec::new(); vec.push("a"); vec.push("b"); let vec = vec; /* vec is immutable now */ This is a particula … | Continue reading


@erikmcclure.com | 3 years ago

Factorio Is the Best Technical Interview We Have

There's been a lot of hand-wringing over The Technical Interview lately. Many people realize that inverting a binary tree on a whiteboard has basically zero correlation to whether or not someone is actually a good software developer. The most effective programming test anyone's c … | Continue reading


@erikmcclure.com | 3 years ago

RISC is fundamentally unscalable (2019)

Today, there was an announcement about a new RISC-V chip, which has got a lot of people excited. I wish I could also be excited, but to me, this is just a reminder that RISC architectures are fundamentally unscalable, and inevitably stop being RISC as soon as they need to be fast … | Continue reading


@erikmcclure.com | 3 years ago

Someone Is Stealing Tracker Songs and Selling Them

Today, in response to a tweet talking about old untitled song ideas, I mentioned that I had a strange file called “t.mp3” sitting in my downloads folder that had been there for years and have no attached metadata or hint as to where it came from. It appeared to be a complete reco … | Continue reading


@erikmcclure.com | 4 years ago

Pressure Base Anti-Spam for Discord Bots

Back when Discord was a wee little chat platform with no rate limiting whatsoever, it's API had already been reverse-engineered by a bunch of bot developers who then went around spamming random servers with so many messages it would crash the client. My friends and I were determi … | Continue reading


@erikmcclure.com | 4 years ago

Debugging Through WebAssembly Is Impossible

I recently added some very primitive debugging support to inNative to allow you to step through the original source code during execution via sourcemaps. My client, however, has expressed the need for proper variable inspection in the original C++ code. This is distinct from curr … | Continue reading


@erikmcclure.com | 4 years ago