Profile avatar
uninen.net
Oldskool Web Monkey and a DJ. Posting about the Web, Python, Django, TypeScript, Vue. Founder of slipmat.io Documenting my learnings at http://til.unessa.net Personal homepage (in Finnish) at https://www.valveilla.net
172 posts 76 followers 161 following
Regular Contributor
Active Commenter

This page reminded me of the sad state of Web publishing. The article has several gigantic 10+ Mb pictures, just dumped on to S3 without any optimizing whatsoever. Back in the day journalists actually cared about these things! (These things being the quality of your publication.)

This is so good I want to start my own restaurant 😂😂

Hands down the worst part of testing llm tools in a real repo is having it littered with all the instruction files: CLAUDE.md .github/copilot-instructions.md .rules AGENTS.md GEMINI.md 😩

Claude: "You're absolutely right! Looking at LogEventType, there are dozens of different event types that could be communicated over WebSocket. Creating a separate model for each would be insane." Lose the sycophancy, keep the attitude pls 😅

Days without Git incidents: 0

I'm noticing a very clear regression in Claude 4 behavior where it has started to response everything with overly agreeable and eager tone. It adds exclamation marks and starts its responses with "Perfect!", "You're absolutely right!", etc. -- It's unbelievably annoying! (Pun intended)

Devserver MCP now works in Claude Code as well 🎉 github.com/Uninen/devse...

This is wild. Cursor user blocked Claude (assuming Sonnet or Opus 4) from executing `rm` so Claude instead rewrote a known allowed script and ran it instead 😅 3.7 did this a lot, I'm finding the current models much better at following the intent of the prompt. forum.cursor.com/t/important-...

This ending of an answer by Claude made me smile: Also - what's the Finnish word for that satisfied feeling when you've fixed something on your boat? That should be your internal project codename. 🚢

This is exciting. Microsoft is very slow adding features and fixes to their Playwright MCP server so I let Claude write me a simple alternative. Added it to my devserver tool which now can both manage your dev servers AND run Playwright for your LLM needs 🎉 github.com/Uninen/devse...

Gotta love the current state of Python tooling. It wasn't too long ago when the setup for Python tests took 5 minutes in GitHub workflows. A moment a go had to re-check if the CI was broken as installing the deps (uv ❤️), running 85 tests and posting a coverage comment took only 14s! 🔥

I've been experimenting using LLM agents in fullstack projects by giving them full access to dev servers and browser tools. Wrote my first useful MCP server for this use case: github.com/Uninen/devse...

Given how often I bump into LLMs trying to fix 401s in my tests by setting auth=None for the api endpoint itself, it's just a matter of time when something like this ends up in production for some large site somewhere 😬

I love Python f-strings. TIL about f"{error!r}" which calls repr (or !s for str, !a for ascii, respectively) on the variable.

One unexpected positive consequence of using LLMs in my daily workflow has been that I'm putting a lot more effort into writing READMEs and keeping them up to date. It speeds up the interactions a lot and it also helps myself as well! 🎉

I started programming with editors when setting the cursor anywhere on the screen for edits was considered easy and powerful. This makes me excited about the current LLM-powered tools; it's *so* early days still and they are already quite useful! Imagine our tools 10 years from now 🤯

Claude Code but with Gemini 2.5 Pro would be wild.

`list[Unknown]" is not iterable` Typing in Python is such a PITA 🤦‍♂️

It's interesting how one needs to be aware of the very sharp edges when in dialog with an LLM vs a human being. In normal discussions you can casually say stuff like "we need to optimize for db size" when designing a system (just to keep that in mind) but LLM will interpret that as "we must only"

Claude 3.7 is so temperamental at times. I gave it a Python codebase and asked it to review the test suite (of ~150 pytest tests) that had some OK tests plus some pretty bad ones by Gemini 2.5 Pro;

Love that PyPI 500 page offers donation links. Way too few organizations help keeping these critical infras online, yet everyone seems entitled to have a fit when there's short downtime. psfmember.org/civicrm/cont...

I hope @voidzero.dev finds a way to make money sooner than later so critical projects like vue-devtools would get some needed love as well. A bit sad that the one tool that literally _every_ Vue dev uses daily is so badly neglected 🙁 Here's to hoping we'll get a working Firefox plugin in 2025! 🍻

Me: adds 28 commits to a PR. @github.com: "No contributions on [this day]."

Positives of the new @vscode.dev Copilot Agent Mode: it's very good following instructions and writing actually working code. Negatives: "you have exhausted the agent mode usage limit" after ~10 messages in two chats in ~2 hours 🤦‍♂️

Currently working alone so spent today pairing with Gemini 2.5 Pro writing a pretty complex and detailed tech spec for a non-trivial Django app. Started w/ just a few bullet points, after few revisions and lots of dialog/design decisions ended up with a markdown file of 6k words (1100 lines) 🎉

A positive from having lived through a decade of Python 2 to 3 migration hell is the fact that the big refactors of other sw projects seem ridiculously easy now by comparison 🎉

The "let's release 26 patch releases this week"-projects (usually from JS hippies) are annoying as fuck