Georg Unterholzner

Georg Unterholzner

@georg.dev

👨🏻‍💻 Software engineer @Dynatrace 🌐 Web dev and trained data scientist 🍜 Foodie | gym-goer | tech & gaming nerd 🇦🇹 Based in Vienna https://georg.dev

320 followers384 following179 posts

View full thread

When I first saw it working, me reviewing from my phone while the AI iterated on my feedback, I understood this is the way forward. We don't need to reinvent the wheel. We have decades worth of tools and practices. We just need to let AI meet us where we already are.

View full thread

"Isn't that just a ralph loop?" Kinda, but not really. Ralph loops are basically waterfall. You hit go and hope for the best and get no feedback until it's done. They fail the same way waterfall always has.

kipppunkt/build fixes that. You review along the way, leave feedback, change requirements on the fly, all directly from the PR. As a bonus, it lets you run multiple agents in parallel with dependency management and automatic merge conflict resolution.

It picks up your requirements, implements them, opens PRs on GitHub, and responds to your review comments. You review from wherever. The couch, a café, the beach. You don't need a TUI or pair-programming with a chatbot. Just requirements in, PRs out.

Five-minute timelapse shot on a Pixel 9 on my last day of vacation in South Tyrol, Italy. At some point in my life, I'll move back here, get myself the best telescope money can buy, and spend my evenings taking photos of galaxies and nebulas far away.

I interviewed someone for a dev position the other day. Remotely. Asked the candidate a very vague question. Got an extremely thorough answer. Really impressive. Left a weird aftertaste, though. I just typed the question into ChatGPT. Same answer 💀

It's kinda crazy how React went from "it's just a super lightweight rendering library, bro" to "whoopsie, our server-side execution layer's complex custom data-format serializer had a prototype-pollution bug and now it's a CVE-10 RCE."

AI-generated unit tests suck. Claude overshoots. GPT-5 is lazy af. No model has proper common sense. I tinkered around for a long time to get GitHub Copilot to actually work as expected. The result is this workflow.

View full thread

It uses many of GitHub Copilot's capabilities (instruction files, prompt files, some tools & configs) for prompt and context engineering. With that, it's reliably able to one-shot entire test suites in my day-to-day work. See for yourself (select 2x speed):

AI-generated unit tests suck. Claude overshoots. GPT-5 is lazy af. No model has proper common sense. I tinkered around for a long time to get GitHub Copilot to actually work as expected. The result is this workflow.

1. The AI figures out business logic & edge cases and then proposes tests based on that. 2. You approve or modify the list. 3. Then Copilot implements everything autonomously while you do whatever. It's a little bit more complicated than that but that's the gist of it.

You'd be mistaken if you thought pigeon droppings on the floor were just a random annoyance. Quite the opposite! They're a real-time heatmap showing you the probability of being hit by pigeon poop at any given spot. And you thought all that statistics knowledge was useless!

Think you're safe because you're in a metro station? Think again! Little Berta up there is watching you. Luckily, she’s nice enough to leave hints on the floor to spare those who paid attention in Stats 101.

One killer use case for AI agents is making sense of minified JavaScript files. I just built a post-install script that monkey-patches a package I depend on. What would have easily taken me half a day was finished in under an hour.

Georg Unterholzner reposted

🛠️ If your team has issues to work through: We do an exercise at offsites called Elephants, Tigers & Paper Tigers. - Elephants are things that the group isn’t talking about but needs to - Tigers are things threatening the team, risks - Paper tigers are things that seem like risks, but aren’t

Basic question but I can't figure it out. How are these two design patterns called? In the first, the component structure is fixed, and behavior is controlled *only* through props serving as config. In the second, an extension point via the children prop allows for more flexibility.

I found people calling the second one "children pattern". This concept isn’t React specific, though, probably not even JavaScript specific. There must be framework & language agnostic terms. But which? - config vs. extension point pattern? - props vs. slots pattern? - ?

Don't be like me. Don't sleep on @playwright.dev's test steps. It took me 4 years to realize how much cleaner, readable, and debuggable my tests could be. Named steps = better readability, clearer reporting, faster debugging. Check out the before/after!

Some tools force you to learn a complicated API and require constant maintenance. Other tools... just work, and that's why it's easy to overlook them. @openfeature.dev is one of those tools. Do I use it daily? Yes. Do I ever have to think about it? No.

Finally moving all my pet projects off Travis CI. Not a fan of their expiring credits billing model. But where to migrate? - Circle CI - GitHub Actions - ...? What’s your pick?

I was frustrated with the lack of clear advice on setting up copilot_instructions.md. Most guides are vague, or worse, generic AI slop that *hurts* Copilot's performance. So I experimented and found better ways to make Copilot *actually helpful*. 🧵

View full thread

Agent mode *bonus* tip: Enable auto-approval for tools by adding "chat.tools.autoApprove": true to your settings.json. Just be aware that you’re giving Copilot a free pass. Use it wisely! 😅

I was frustrated with the lack of clear advice on setting up copilot_instructions.md. Most guides are vague, or worse, generic AI slop that *hurts* Copilot's performance. So I experimented and found better ways to make Copilot *actually helpful*. 🧵

View full thread

Most advice skips this: Be model-specific. If Copilot repeatedly makes the same mistakes (e.g., overly verbose code or missing edge cases), include correctional hints in your file. Example: "Focus on simplicity, avoid over-comprehensive solutions."

Agent mode tip: Add clear instructions for automating checks like "npm run lint" or "npm run test". With these in your file, Copilot Agent can run the commands, fix errors, and iterate until all checks pass without constant back-and-forth.

I was frustrated with the lack of clear advice on setting up copilot_instructions.md. Most guides are vague, or worse, generic AI slop that *hurts* Copilot's performance. So I experimented and found better ways to make Copilot *actually helpful*. 🧵

Most devs either skip copilot_instructions.md or fill it with generic fluff. But irrelevant instructions waste Copilot’s context space and reduce output quality. Focus on non-obvious details: unique constraints, domain rules, and project specifics.

Some essential sections to include: - Summary: What the project does, briefly. - Terminology: Domain-specific terms Copilot can’t infer. - Architecture: Key files and why things are structured this way. - Task planning: Steps Copilot should follow before coding.

Large Language Models (LLMs) with "reasoning" capabilities are super hyped, but new research from Apple shows their "thinking" is often an illusion. Beyond a certain complexity, they fail completely. Key points in the 🧵.

View full thread

This isn't just about benchmarks—it's about fundamentals. Current "thinking" models are impressive but eventually fail, and users won't know at which task or complexity level. Scaling model size won't solve this; we need new paradigms for robust reasoning.

Large Language Models (LLMs) with "reasoning" capabilities are super hyped, but new research from Apple shows their "thinking" is often an illusion. Beyond a certain complexity, they fail completely. Key points in the 🧵.

View full thread

Researchers even handed models step-by-step algorithms (e.g., for Tower of Hanoi). The result: identical failure points. LRMs couldn’t reliably execute prescribed logic—suggesting their "reasoning" is often pattern-matching, not general intelligence.

Key takeaway: Don't trust LRMs for highly complex tasks. They solved Tower of Hanoi (100+ moves) but failed River Crossing after just 5 moves, likely due to *training data gaps*. For critical planning, coding, or math, always verify outputs.

Large Language Models (LLMs) with "reasoning" capabilities are super hyped, but new research from Apple shows their "thinking" is often an illusion. Beyond a certain complexity, they fail completely. Key points in the 🧵.

View full thread

The paper identifies three distinct "reasoning regimes" in puzzles like Tower of Hanoi and River Crossing. Frontier LRMs (Claude 3.7 Thinking, DeepSeek-R1) outperform standard LLMs only in the medium complexity zone. Beyond this, their accuracy collapses regardless of compute.

Worst of all, LRMs reduce their reasoning effort as problems get harder. Despite having spare token budgets, they underthink when complexity peaks, like a student giving up on an exam’s toughest question—even with extra time left 😅

Large Language Models (LLMs) with "reasoning" capabilities are super hyped, but new research from Apple shows their "thinking" is often an illusion. Beyond a certain complexity, they fail completely. Key points in the 🧵.

Key points: - At low complexity, standard LLMs excel (faster, cheaper). - At medium complexity, reasoning models (LRMs) outperform. - At high complexity, both collapse, with nearly 0% accuracy.