Super interesting article - thanks for sharing your journey. As AI slop takes over the internet, well written and original technical content like these will be important.
Also,
2026 web dev: 4MB of JavaScript to render a button.
2026 N64 dev: entire FPS in 1MB
Thanks for highlighting. I just realized this is open to developers who aren't city employees, which is unique. A city can pay a vendor for a deliverable, but paying an outside individual to improve something the city doesn't own is interesting (to say the least)
Smells of favoritism and corruption and lack of priorities is what it does. This guy must know someone. I doubt that of everything the city of Munich depends on, an xml parser even registers as a thing that needs money. And if it did then you'd have to have given similar to so much more things already.
The 6 month open source sabbatical is something any external developers can apply to (with a specific Open Source project and an Idea what to do), and the city selects among the candidates. They do explain why they picked libexpat[1] (google translate works well enough for the site).
Agreed, they should hire an army of consultants to select a proprietary software replacement that the city will pay for but not own, having to pay ongoing license fees for ongoing use. Much more efficient ant fair that way.
LibreOffice uses libexpat (https://libexpat.github.io/doc/users/), and one of the major issues with using OSS in public administration is that there is still no open source office suite that can compete with M$ Office...
It's a sync infra product that is meant to cut down 6 months of development time, and years of maintenance of deep CRM sync for B2B SaaS.
Every Salesforce instance is a unique snowflake. I am moving that customization into configuration and building a resilient infrastructure for bi-directional sync.
> We had to implement techniques like client side prediction, server reconciliation and entity interpolation so that players look smooth when they are moving in the 3D space.
Curious: what kind of tools/frameworks could have helped in shipping to wasm faster and better?
I'm Daniel, Diego's brother who also worked on this project. Your question is a bit broad, but I can tell you what it was like to work with emscripten.
We used emscripten to compile our C++ application to WASM and to generate the JS code that loads the application. This part was very easy. We had the game running on the web in no time.
What was much much more difficult was working with emscripten's APIs to do things like handle mouse / touch / keyboard inputs. There's tons of gotchas and weird limitations to work through.
Another huge challenge was in sending data between the JavaScript layer and the C++ application. You have to serialize data and then parse it on the C++ side, which sounds easy until you try to do it.
We faced some tough challenges asynchronously loading the paintings. Our initial solution of using a simple thread pool library which manages web workers didn't run on Safari due to some strange incompatibilities with WebGL 2.0, so we had to go for a purely web worker based approach.
Overall, we are amazed at what you can do with emscripten, but you have to be prepared to face some bad documentation, browser incompatibilities, and to tinker A LOT.
Do you see a future where cross-platform could essentially be a set of tools/frameworks to build high performance native experiences targeting the browser as the primary runtime?
I think that'd be near impossible to speculate on. There could be hundreds of different ways it could evolve that way, including ways that involve frameworks that haven't been invented yet.
Hi - Luke (CTO) here. Thanks! Yeah, we're using WASM for things some things in the editor like syntax highlighting. Planning on moving most of the network logic into WASM shortly as well.
Nifty start. The need for a hosted service like this is more for secure apps where third-party services may have some privacy implications.
I think the default UI needs a little more work. Intercom also lets you email users based on certain triggers, is there an email integration that you are building towards?
Edit: Just curious, what made you code the server in Go?
Thats a good point re: secure apps/third party services. we also wanted to run a hosted service for the lazy who may not want to bother learning how to run each of the pieces ;)
Thanks for the feedback too, in complete honesty, it was a combination of we were interested in the language, and overheard it was good with concurrency... that was enough for us to give it a shot.
Edit: Also apologies for not answering your question re: email integration, its going to be one of the first major integrations we do!
Also,
2026 web dev: 4MB of JavaScript to render a button. 2026 N64 dev: entire FPS in 1MB