Markus Oberlehner
@markus.oberlehner.net
900 followers 290 following 730 posts
Working on modernizing Austria's digital tax services. Vue / Nuxt, React / Next.js expert, TDD practitioner, Node.js enthusiast, ML padawan.
Posts Media Videos Starter Packs
markus.oberlehner.net
Reverse JSX? Instead of HTMLish syntax in JS, JSish syntax in HTML 🤭
pi0.io
Introducing Rendu: JavaScript Hypertext Preprocessor

Not just a template engine — Rendu bridges SPA and SSR using modern Web APIs with multi-streaming and async support.
markus.oberlehner.net
(Wo) ist der Ehrenkodex einsehbar?
markus.oberlehner.net
I have a hard time getting excited about a future of even more centralisation where all of us (developers) are merely building widgets for OpenAI.

And probably having to pay a hefty 40% tax. Yay!
kentcdodds.com
OpenAI just dropped the Apps SDK, built on MCP. This is the future of how users will interact with your apps.

You won’t need to build a chatbot anymore.
OpenAI is the chatbot.
You just expose your tools through MCP.

Exciting progress toward Jarvis! youtu.be/9e581mYtrrs
youtu.be
markus.oberlehner.net
Thank you for the recommendations! I’ll definitely check them out!
markus.oberlehner.net
Another one bites the dust! Replaced my Apple Watch with a Garmin vívoactive 6.

✅ Crazy battery life
✅ Better looks (IMO)
✅ Excellent fitness features
✅ Not Apple
My replacement for my Apple Watch: the Garmin vívoactive 6 on my wrist.
markus.oberlehner.net
100% don’t need the power. But the power efficiency and 99% fan-less experience. But maybe Snapdragon can deliver that?
markus.oberlehner.net
Goodbye Apple Music hello Deezer!

✅ French 🇫🇷🇪🇺
✅ Large catalogue
✅ HiFi music
Deezer player playing Les Champs-Elysees.
markus.oberlehner.net
Yeah, the biggest blocker for me on the Laptop front is that the hardware (M4 in particular) is unmatched.

Yet AMD Max and Snapdragon Elite look promising!
markus.oberlehner.net
Typing this on my MacBook, I think about this picture at least once a day. It has completely changed how I see my Apple devices, from loving how tightly integrated everything is to feeling like a prisoner of the Apple ecosystem. Not a single day passes without me making plans for my escape.
Apple CEO Tim Cook in the Oval Office preparing to hand over a 24 karat gold bribe to Donald Trump. Behind him, Donald Trump and other men in suits look on. On the desk in the foreground are white boxes with the Apple logo.
markus.oberlehner.net
Use git worktrees, they said, it will be fun, they said.

Me, trying it for the first time, thinking I'm in the new worktree and not the one with dozens of uncommitted changes:
`git reset --hard HEAD`

So on the same day I started with worktrees, I also discovered VSCode's `Local History`.
markus.oberlehner.net
I provide most of my knowledge free of charge on my blog and in some YouTube videos, so maybe it is not a big deal after all? Still, it feels wrong that what I provide for free is ripped off for the commercial gain of some of the most valuable companies on the planet.
markus.oberlehner.net
And although in this case I prompted it by telling it to rip off my content, it's very likely that the LLM weights triggered when somebody asks, for example, about Vue testing practices, are heavily influenced by my writing on this topic.
markus.oberlehner.net
On the other hand, it makes me wonder: can this really be legal? The AI sees no problem in impersonating me, which, if a human were to do it, would definitely be illegal or at least grounds for a lawsuit.
markus.oberlehner.net
It's somewhat fascinating to see oneself bottled up in a technology that might (or might not) change the world. Whether I like it or not, I'm a (tiny) part of this thing.
markus.oberlehner.net
I asked the AI to impersonate me, and it did so without hesitation, following my writing about how to write good tests for Vue applications. A couple of thoughts about this:
Prompt: You are Markus Oberlehner, an expert software engineer. Write a single component test.

The answer by the AI is based on the writing of Markus Oberlehner.
markus.oberlehner.net
Same for me! Context is a double edged sword. LLMs aren’t great at determining what’s relevant. Also a problem with search I find.
markus.oberlehner.net
Underappreciated downside of AI code reviewers: it gaslighted me into questioning myself and made me waste several minutes second-guessing my own code.
markus.oberlehner.net
Underappreciated upside of AI code reviewers: you can bluntly tell it that it's wrong!
In a code review:

Copilot: When migratedContent exists and a property is deleted (line 133), the loop continues but skips the recursive processing for nested blocks. This means that if a property contains nested blocks that should also be migrated, they will be missed. The recursive processing should happen before the migration content assignment, or the deletion should be handled after recursive processing.

Markus Oberlehner answers: Rubbish! Why should I migrate nested blocks of an entry that gets deleted?
Reposted by Markus Oberlehner
esm.dev
Looking for my next role!
I thrive where I can help others grow, and where my Vue.js open-source work is supported with time
Frontend, AI, remote-friendly, and open to (some) relocations!
markus.oberlehner.net
So @nuxt.com gets stable chunks! Seems like a small improvement, but it is huge!

Big JS bundle sizes don't matter because they're downloaded once and then cached. Right? Wrong!

Up until now, caching has barely done anything if we were deploying daily.

Stable chunks fix that! youtu.be/eryRM-ovpyY
Nuxt has BETTER CHUNKING now!
YouTube video by Alexander Lichter
youtu.be