Incidental vs Accidental Complexity

Incidental vs Accidental Complexity

Developers often talk about accidental vs essential software complexity. But is there a difference between accidental complexity and incidental complexity? I think there is. I like this definition of essential complexity: Essential complexity is how hard something is to do, regardless of how experienced you are, what tools you use or what new and flashy …

Read More Read More

Immutable.js vs Immer

Immutable.js vs Immer

This week I came across the library Immer as a convenient way of manipulating immutable data in JavaScript. After reading this Reddit thread that raves about how much better Immer is than Immutable.Js, I was worried I’d made the wrong decision to use Immutable.js in Microvium. But some performance tests quickly cleared up my concerns. …

Read More Read More

Distributed apps in JavaScript

Distributed apps in JavaScript

This post is different from my usual topic of Microvium. I’ve been recently frustrated with the way that distributed applications are written and I’ve been brainstorming ways it could be improved. In my last post on the topic, I suggested that maybe a new programming language would be useful for solving the problem, but I …

Read More Read More

Quality vs Quantity

Quality vs Quantity

It’s an age-old debate, but as I get older, my perspective is changing. I feel increasingly frustrated by tools that don’t work smoothly; tools that weren’t thought out very well. And I ask myself, wouldn’t my life be better without these? TL;DR The economic incentive for product development is not always aligned with what makes …

Read More Read More

A Distributed Language

A Distributed Language

TL;DR I think it would be great to have a language where single instance of a program can run non-stop for 10 years across a dynamic, heterogeneous mix of hardware, where the program code can perform its own allocation and management of infrastructure resources such as databases, VMs, and public IP addresses, as well as …

Read More Read More

New Garbage Collector!

New Garbage Collector!

It’s only been a few weeks since the Alpha release of Microvium and I’ve already almost rewritten the engine! There are two major changes I wanted to make to improve performance: I’ve moved to a great new garbage collection algorithm which is much faster and has a smaller memory footprint in both RAM and codespace. …

Read More Read More

Microvium Boost
It's like magic

Microvium Boost
It's like magic

TL;DR: This Microvium plugin (in development) optimizes Microvium bytecode by statically determining which variables and properties are accessible and how they might be accessed (read vs write), to decide whether to safely store them in ROM or remove them completely from the bytecode. With the recent alpha release of Microvium, I’ve since turned my attention …

Read More Read More

Microvium Alpha Release!

Microvium Alpha Release!

Microvium version 0.0.9 is published on npm, marking the first alpha release of Microvium! ? I’m pleased with how quickly this has come together in the 4 months since I started the project back in February. Be ready for good things still to come! Subscribe to my blog if you want to be notified of …

Read More Read More

Microvium Garbage Collector

Microvium Garbage Collector

The Microvium garbage collector is here! The garbage collector handles the automatic freeing of unused heap memory in the VM. Microvium makes some interesting and perhaps unique tradeoffs with garbage collection which I’ll focus on in this post. I’ll divide this post into two parts to cater for different audiences: I’ll start with a summary …

Read More Read More

Microvium Status Update
June 2020

Microvium Status Update
June 2020

I’ve made a lot of progress on Microvium over the past month and will share some of the details here for those who are interested. I think it’s really close to being ready for an alpha release, with the garbage collector being the only remaining piece of work before it can start being used. Summary …

Read More Read More