It’s time for my obligatory yearly blog post. At the beginning of every year, I set a few personal tech-related goals and check back in a year later to see how I did. My goals for 2025 were:
- Publish my Godot Tetris game
- Build (finish) an emulator for the original Nintendo console
- Build a javascript text editor
- Build a javascript terminal editor
- Start working as a full time software engineer
What went according to plan
I did finish my Nintendo emulator, and integrated it into my web desktop project.

In its current form, it plays Super Mario Bros by default, but you can drag and drop your own ROM dumps directly into the window. Enter is start, tab is select, arrows are movements inputs, and Z and X are action buttons. You can try it here by double clicking the NES Emulator icon.
I planned on adding more features, but I ended up working on the desktop platform itself for the majority of the year (more on this below)
Oh, and I will be starting full time employment in early 2026, so I guess that goal came to fruition!
Where I Deviated
As I was working on my web desktop platform, a minor bug fix sparked a chain of reactions that led me to rewrite the platform from scratch, twice.
I wanted to create a new system with the ability to change appearance in a more dynamic way, like a real operating system. I spent most of the year building a new prototype that would allow this, just to scrap it again at the end of the year.
Web OS
A full year and 1k+ commits paved a way for a new vision. A real web-based operating system, not just a web desktop environment. My experimentation led me start building a web OS core, which is the framework that will allow me (or anyone) to build an actual web-based operating system.
I no longer want a personal website that looks like a web desktop. It’s a cool project, but as a personal site, it’s just a gimmick and nobody will ever use it. Instead, I want to build a platform that serves an actual purpose.
Philosophy
Many web applications serve a utility function. Resume builder, color picker, PDF editor, file converter, etc. These are independent pieces of software, powered by the browser. The Web OS would serve as a platform to host such utility type of software, under a unified user interface shell. From a utility perspective, it will bring common web tasks to a single source.
Games is another huge use case. Retro console emulators, old flash games, or standalone implementations can all be hosted here.
It can serve as a home for more complex software. Users might use a javascript music composition REPL like Strudel, or a shader creator akin to Shader Toy, or a whole slew of popular software which have WASM ports. There are plenty of WASM possibilities; here are some concrete examples:
- Audacity
- R
- Box2D (game engine)
- Vim
- Games built with other engines
Furthermore, every aspect of the system will be configurable. Think Linux ricing. Do you want a classic desktop system with icons and a file explorer? Or maybe a minimal app launcher? Or a retro macOS-inspired theme? You can do that with swappable system modules. You’ll be able to change look and feel on the fly of all system UI and add/remove modules via the internal theme editor.
Web OS As a Framework
The web OS core will be a JavaScript framework that behaves as the Application Binary Interface (ABI) between hosted web applications, system modules, and the browser API. It will host the system state, theme data, a virtual file system, and as a system module registry. Each app and system module will communicate to the core via an internal communication protocol, similar in concept to an IPC for traditional operating systems.
Framework Agnostic Implementations
A taskbar written in React can be used with a file manager written in SolidJS, and with an app launcher written in Svelte. App and system module implementations will not be locked to any specific frontend framework. All consumers will have the ability to communicate to each other via the core and consume the core state, and the core will serve these consumers without knowledge of their inner implementation details.
An Open Source Ecosystem
I will lead the main charge of course ( as a former Marine ‘rah’ ), with a canonical implementation at web-os.io, which will come with default system modules and an opinionated configuration. The web OS core will be open source, though. Users will be able to create their own shells with system modules if they do not like the defaults, or contribute to existing modules.
It’s a big vision, but I’m hoping to get a convincing prototype and eventually recruit the help of the open source community.
Conclusion
I deviated a lot from my original goals, but my vision for what I want to build expanded. By the end of 2026, I’m aiming to release the Web OS framework with a canonical example of its usage.
P.S. If you made it this far: thank you. The early project is closed source, but if you’re compelled to help, drop me a message.
