Tim Fischbach

Tim Fischbach

@tfischbach.bsky.social

Software developer. Building @pageflow.io / https://www.pageflow.io/

95 followers143 following234 posts

Tim Fischbach reposted

Our new Lottie Animation content element brings lightweight, high-quality motion to your stories. Animations can play once, in a loop or respond directly to the reader’s scroll position. Explore the demo, discover all options, and download ready-to-use examples: 👉 www.pageflow.io/en/blog/illu...

TIL you can use registered custom properties in CSS to force computing a property value at a certain level in your DOM instead of just applying text based substitution. This can useful when working with nested containers and wanting to reference an outer container in via container query units.

TIL if you want to split out multiple smaller changes from a larger one, you can use `jj split -r X -B X` to make sure the id of the remaining big change stays stable. #jj-vcs

Otherwise `jj split -r X` keeps the selected changes in X and creates a new change id for the remaining changes on top of it, forcing you to first look up the new change id before you can run the next split command.

Experimenting with a custom jj-pin script to make history cleanup in #jj-vcs feel safer. I often find myself tweaking a stack of changes moving things around without wanting to change the overall diff. Especially when there are conflicts to resolve, I want to be sure not to mess up.

View full thread

With git I often used to do `git diff my-feature@{1}` after an interactive rebase instead. jj's more fine grain history rewrite commands are way more versatile, but no longer give me this well defined before/after by default.

Experimenting with a custom jj-pin script to make history cleanup in #jj-vcs feel safer. I often find myself tweaking a stack of changes moving things around without wanting to change the overall diff. Especially when there are conflicts to resolve, I want to be sure not to mess up.

There's an interesting dynamic, where coding agents not only reduce the activation energy required to follow certain best practices (automated tests, small commits, limited scope etc.), but sort of turn them into prerequisites to have a chance of making the process work at all.

View full thread
View full thread

So any attempt to use natural language or specs as the primary level of abstraction you operate on when thinking about your system, just removes you from the structural realities that should inform your decisions.

The big leverage when building a system comes from intentionally designing or incrementally redesigning it to make certain things simple. This means knowing the internal structure of your system.

Moreover, it seems to me that there is a third option beyond the “don’t look at the code” vibe coding approach and “big design up front” spec-driven development. That third option is an agent-based workflow, which I’d characterize by:

Simon Willison@simonwillison.net

Vibe coding is irresponsibly building software through dice rolls, not caring what code is produced What about when engineers at the top of their game use AI tools responsibly to accelerate their work? I propose "vibe engineering"! simonwillison.net/2025/Oct/7/v...

View full thread

This results in treating the agent as a sort of project specific fuzzy pattern expander that allows the real work to continue happening on the level of your mental model of the project.

Moreover, it seems to me that there is a third option beyond the “don’t look at the code” vibe coding approach and “big design up front” spec-driven development. That third option is an agent-based workflow, which I’d characterize by:

Simon Willison@simonwillison.net

Vibe coding is irresponsibly building software through dice rolls, not caring what code is produced What about when engineers at the top of their game use AI tools responsibly to accelerate their work? I propose "vibe engineering"! simonwillison.net/2025/Oct/7/v...

View full thread

- Reducing the mental load of code review by aiming to generate code that is mostly "as expected." Treating deviations from those expectations as early indicators that either the prompt is insufficient or the initial mental model is flawed.

- Meticulously reviewing every line of code generated by the agent, and using follow-up prompts to refine and golf down the result as much as possible. - Drawing design feedback from seeing the imagined solution and its real-world shortcomings as early as possible.

Moreover, it seems to me that there is a third option beyond the “don’t look at the code” vibe coding approach and “big design up front” spec-driven development. That third option is an agent-based workflow, which I’d characterize by:

Simon Willison@simonwillison.net

Vibe coding is irresponsibly building software through dice rolls, not caring what code is produced What about when engineers at the top of their game use AI tools responsibly to accelerate their work? I propose "vibe engineering"! simonwillison.net/2025/Oct/7/v...

View full thread

- Favoring closed feedback loops (test suites, linters, type systems) that the agent can use to improve results even before the first human review. - Using tests generated by the agent as a way to capture baseline expectations of how well the solution works.

Moreover, it seems to me that there is a third option beyond the “don’t look at the code” vibe coding approach and “big design up front” spec-driven development. That third option is an agent-based workflow, which I’d characterize by:

Simon Willison@simonwillison.net

Vibe coding is irresponsibly building software through dice rolls, not caring what code is produced What about when engineers at the top of their game use AI tools responsibly to accelerate their work? I propose "vibe engineering"! simonwillison.net/2025/Oct/7/v...

- Almost exclusively editing source code through agent interaction. - Before writing the prompt, having a mental model of the desired change that is deeply rooted in the current structure of the codebase.

A blog post I'd like to write if I had the time (or a maintained blog for that matter): "The Role of Automatic Testing in Agentic Coding" or maybe "Techniques for Test-led Brownfield Development with Coding Agents"...

Tim Fischbach reposted

We’re trying a rather radical new approach at Piccalilli by doing real world projects — for real clients — in the open. This gives us a context to provide genuine high quality, real world education for free at the point of entry.

piccalil.liWe need your support to do free projects for good causes and publish free high quality educationWe’re trying a rather radical new approach at Piccalilli by doing real world projects — for real clients — in the open. This gives us a context to provide genuine high quality, real world education...

Tim Fischbach reposted

Here's what rendering React Server Components is gonna look like in Parcel. Just point it at your server entry point, use any server framework/router/libraries you want, and render your components. Coming soon! 👀

View full thread

I still prefer command line for updating the index via --patch mode of git add/reset/checkout. I like reviewing or discarding changes hunk by hunk while looking at a single fixed spot on the screen. In Magit, I tend to loose track of where I am when staging hunks by expanding changed files.

View full thread

Other features feel like another level of abstraction above the underlying git commands: Extending a commit via c e from Magit mode captures intention way more directly than typing `git commit --amend -C HEAD`.

View full thread

Having Emacs key bindings for common commands makes many actions more ergonomic - simple things like C-x g to quickly see a git status for the current project, or C-c g b to view a blame for the current file.

Viewing logs for the current file (C-c g l l) or the current repository (C-x g l l) by default enables a lot of the goodies (--graph --oneline --decorate etc.) that I usually need to create alias commands for.