Game development post-Unity, Pineapple ONE CPU for RISC-V, Pagefind, Uber Excel, habits of top engineers, linear code is more readable & more

Changelog News

Developer news worth your attention

Jerod here 👋

We’re packing up our gear and flying out on Wednesday to the LAST Strange Loop! If you’re going to be there, hit reply and let us know so we can connect IRL. If not, stay tuned for some awesome conversations with “the creators and users of the languages, libraries, tools, and techniques at the forefront of the industry.”

Ok, let’s get into the news. (Audio Edition)

🪦 Death by a thousand microservices

Andrei Taranchenko says the software industry is learning once again that complexity kills and wonders:

How did we get here? How did our aim become not addressing the task at hand but instead setting a pile of cash on fire by solving problems we don’t have?

At an attempt to answer this question, Andrei takes aim at JavaScript and NodeJS, which I don’t totally agree with and may trigger you if you’re of that ilk, but his overall point is about information silos:

my point really was more about the dangers of hermetically sealed software ecosystems that seem hell-bent on re-learning the lessons that we just had finished learning. We ran into the complexity wall before and reset - otherwise we’d still be using CORBA and SOAP. These air-tight developer bubbles are a wrecking ball on the entire industry, and it takes about a full decade to swing.

He then turns his attention to the VC-funded tech startup boom that only recently busted:

Investors needed to see explosive growth, but not in profitability, no. They just needed to see how quickly the company could hire ultra-expensive software engineers to do … something. And now that you have these developers, what do you do with them? Well, they could build a simpler system that is easier to grow and maintain, or they could conjure up a monstrous constellation of “microservices” that no one really understands. Microservices - the new way of writing scalable software! Are we just going to pretend that the concept of “distributed systems” never existed?

This post is salty, for sure, but there’s also a lot of level-headed reasoning that is worth your consideration:

Dropbox, Twitter, Facebook, Instagram, Shopify, Stack Overflow - these companies and others started out as monolithic code bases. Many have a monolith at their core to this day.

🕹️ Game development post-Unity

Casey Muratori wasn’t too surprised when Unity announced a retroactive(!) change to its pricing model from charging per-seat to per-install:

I do follow game business trends to a certain extent, and for well over a year now, I’ve been warning that Unity’s relationship with game developers would inexorably change for the worse. This was not based on any inside knowledge. It was based solely on the financials they report, and the kinds of statements they make to investors in their earnings calls.

The move sent shockwaves through the developer community (so much so that Unity has since announced they will soon be making changes to the new policy) and left many people looking for alternatives to Unity. In the linked post, Casey outlines a long list of options for folks, depending on their particular situation: Unreal, Godot, Defold, RayLib, Open 3D, Bevy & more.

Further reading:

👀 Frontend Perf Monitoring 101 with Sentry

Thanks to Sentry for sponsoring Changelog News 💰

Are your users facing embarrassingly slow page loads and rendering?

Let’s put a stop to that. Learn the basics of frontend application performance monitoring with Sentry in this upcoming livestream.

In <30 min, you’ll be able to install & configure performance monitoring, interpret key metrics, and troubleshoot a performance issue. With visibility into end-user experience, you can build a blazing-fast app in record time.

When? Wednesday, September 20th, 2023 at 10am PDT, 6pm BST

Sign up early to have your questions answered in the live Q&A!

🍍 Pineapple ONE: open source 32 bit RISC-V CPU

Pineapple ONE is a functioning (macro) processor built by 19-year old (!) Filip Szkandera over the course of two years.

we chose to build a cpu only out of discrete, off-the-shelf components. You heard it right, there is no FPGA nor any microcontroller, there are just logic gates and memories. Our goal is to prove that designing a “modern” CPU isn’t that hard, so we have released our schematics and made it open source as well.

Filip calls this “groundbreaking for homebrew CPUs” and put together a great video demonstrating the hardware.

Pineapple ONE hardware

No sacred masterpieces

Matt Basta tells the fascinating tale of the time he single-handedly built a web-based Excel clone for the data scientists inside Uber only to have the entire division sold to another company a week(ish) later. He learned a lot about how Excel works and shares some of the interesting bits, such as:

I had thought, naively perhaps, that circular references in Excel simply created an error. But this data scientist showed me that Excel doesn’t error on circular references—if the computed value of the cell converges.

You see, when formulas create a circular reference, Excel will run that computation up to a number of times. If, in those computations, the magnitude of the difference between the most recent and previous computed values for the cell falls below some pre-defined epsilon value (usually a very small number, like 0.00001), Excel will stop recomputing the cell and pretend like it finished successfully.

And he has a super healthy outlook on what happened to all his hard work:

My first reaction was to publish the code on Github. My second reaction was to move on. There was maybe a part of me—my younger self—that was disappointed that this major piece of code that I’d labored over had been so gently used before being retired. I wasn’t recognized for it in any material way. My manager didn’t even know what I’d built.

On the other hand, we as engineers need to be real with ourselves. Every piece of code you write as an engineer is legacy code. Maybe not right now, but it will be. Someone will take joy in ripping it out someday. Every masterpiece will be gleefully replaced, it’s just a matter of time. So why get precious about how long that period of time is?

🔍 Pagefind: static low-bandwidth search at scale

This looks pretty cool!

a fully static search library that aims to perform well on large sites, while using as little of your users’ bandwidth as possible, and without hosting any infrastructure.

It runs after your SSG (Hugo, Eleventy, Astro, etc) does its thing and generates a static search bundle to your built files. It then exposes a JavaScript search API that can be used anywhere on your site.

The goal of Pagefind is that websites with tens of thousands of pages should be searchable by someone in their browser, while consuming as little bandwidth as possible. Pagefind’s search index is split into chunks, so that searching in the browser only ever needs to load a small subset of the search index. Pagefind can run a full-text search on a 10,000 page site with a total network payload under 300kB, including the Pagefind library itself. For most sites, this will be closer to 100kB.

I’d love to see a comparison (link me up if you know of one), but my guess is this could easily replace Algolia on lots of open source docs and sites. One less service to depend on!

🎧 ICYMI: Recent good pods from us

Type War (what is it good for?) – Love it or hate it, TypeScript is here to stay for the foreseeable future. But, what happens when widely adopted packages go completely Type free or remove TypeScript in favor of JS with type annotations? Join us to unpack these recent events with Rich Harris, creator of Svelte, as he walks us through the nuanced decision his team made for the Svelte project, and ofc, lots of laughs along the way.

What do we want from a web browser? – A hoy hoy! Our old friend Nick Nisi does his best to bring up TypeScript, Vim & Tmux as many times as possible while we discuss a new batch of web browsers, justify why we like the ones we do & try to figure out what it’d take to disrupt the status quo of Big Browser.

Attack of the Canaries! – Adam and I are joined by Haroon Meer from Thinkst — the makers of Canary and Canary Tokens. Haroon walks us through a network getting compromised, what it takes to deploy a Canary on your network, how they maintain low false-positive numbers, their thoughts and principles on building their business (major wisdom shared!), and how a Canary helps surface network attacks in real time.

Go templating using Templ – Go’s known for it’s fantastic standard library, but there are some places where the libraries can be challenging to use. The html/template package is one of those places. So what alternatives do we have?

🔝 7 simple habits of the top 1% of engineers

According to Leonardo Creed:

  1. Be an engineer, not a coder
  2. Code for the human, not the computer
  3. Detach from the code itself
  4. Use consistent standards
  5. Write simple code
  6. Don’t allow surprises
  7. Communicate often
  8. Code fast… and slow

I guess there’s eight after all… bug or feature!?

🍕 Linear code is more readable

Pierre ‘catwell’ Chapuis takes issue with some pizza-creation code featured on the Google Testing Blog that they claim is more readable. He thinks it’s is actually less readable and explains why.

Code snippets for comparison

Which one do you think is which? 😏

📉 Why Nvidia’s AI Supremacy is Only Temporary

This article makes the argument that Nvidia is winning so hard right now because:

  1. Almost Nobody is Running Large ML Apps
  2. All Nvidia Alternatives Suck
  3. Researchers have the Purchasing Power
  4. Training Latency Rules

But their dominance will be short-lived because:

  1. Inference will Dominate, not Training
  2. CPUs are Competitive for Inference
  3. Deployment Engineers gain Power
  4. Application Costs Rule

If those four predictions prove true, Nvidia’s share of the AI market will drop and consumer/commodity CPU platforms have a bright future.

💼 In brief

Strange Loops’ greatest hits – I was hanging out in the conference’s Slack when someone asked everyone to share their favorite talks from among the conference’s 673 videos on its YouTube channel. A barrage of links followed, so I scooped them up to share so everyone can partake.

Rewriting wipEout – Dominic Szablewski took the leaked source code for the classic PSX launch title wipEout and rewrote it for Windows, Linux, macOS and Wasm. Yes, Wasm! Which means you can play it in your browser.

Who’s in charge of Postgres? – Bruce Momijan attempts to answer a question that is on a lot of people’s minds (myself included): who is in control? In brief, he says, ‘You are, and everyone else in the community.’

Impressive Bun 1.0 adoption – Jarred Sumner lists out some of the companies/projects adding Bun support in the wake of its 1.0 announcement, including Vercel, Replit, Ruby on Rails & Laravel Sails.

Speaking of Jarred Sumner – He and “rival” NodeJS team members are great examples of how open source maintainers can compete and still respect each other and treat everyone well. Let’s follow their lead!

V0 is like Midjourney for React – Jared Palmer and his team at Vercel announced (in private alpha) their new tool that takes simple prompts and generates copy-paste-friendly React components using shadcn and Tailwind CSS.

Making Sense of React Server Components – If React’s move server-side still has you confused, there’s few people more qualified to help make sense of it all than Josh Comeau.

That’s the news for now!

We have an excellent interview for you coming up on Wednesday: RedMonk’s Stephen O’Grady joins us in the wake of Llama 2 and HashiCorp’s relicense to discuss why he believes the open source definition really matters.

Have a great week, forward this to a friend (or send them the the web link ) if you enjoyed it, and I’ll talk to you again real soon. 💚