Jamie Tanna

@www.jvt.me.web.brid.gy

What happened in the week of 2026-08-17?

Week Notes 26#34

* A busy week at work, juggling a few fairly complex things that have meant I've been a bit brain busy outside of work * Wrote a couple of blog posts, Why I still hand write my commit messages being the main one, which got picked up later in the week, and ended up being on the front page of Lobsters for just shy of 48 hours! * I also discovered the selfh.st newsletter - thanks for featuring me! * GitHub's outage on Monday was pretty counter-productive, and meant a large gap in being able to do anything much * But I did manage to finish off some changes on `renovate-pretty-log-tui` which I'd started while I was at GopherCon UK * Not had a chance to do any more on Canada blog post * Go 1.27 has required a few changes in `oapi-codegen` like changes to how the compressed spec looks * A nice weekend hosting Anna's family * Had a very good Yamas order, managing to get an order in on a Saturday night! * A bit of a disappointing * Had a nice walk around Gravelly Hollow this morning * Had a nice evening on **??** , with a drink at Tap House, then a meander down to Peter's Pizzeria for dinner * Carrying on listening to the Liquicity Festival recordings * Koven @ Liquicity Festival 2026 was _such a bop_ - was a very fun time * I've been enjoying using tuicr this week for code review, especially on a branch of mine that I'm trying to perfect, commit messages and all * I'll likely blog about it this workflow this week, because I've been finding it a really nice flow * Somehow we've missed that Reacher is back?? We didn't get a chance to start a rewatch of the last season yet, but next week we'll get going, or will start straight on the new season Played: * _Kingshot_ (as usual) * _Apex Legends_ Reading: * _Leviathan Falls_ Watched: * _Veep_ (Season 6) * _Veep_ (Season 7) * _Saturday Night Live_ * _The Expanse (Season 5)_ * _Unacceptable (Season 1)_ * _Upstairs Downstairs (Season 1)_ * On in the background while writing these

jvt.me

Shipping some large changes to my local tooling for interacting with Renovate debug logs.

Announcing some improvements to renovate-pretty-log-tui

As I've blogged about before, I've written a tool for improving the experience of working with Renovate's debug logs, providing a more targeted experience for viewing the logs. While there are a few options out there at the moment, including part of our products at Mend, it's also nice having an agnostic tool I can use across different products, or where a customer or a user has provided logs to us. Last week, I finally sat down to listing out some of the key improvements I'd like to have completed on `renovate-pretty-log-tui`. As I'm not that familiar with Bubble Tea, which it's based on, I decided to set Claude Opus and Claude Fable on the work, as well as seeing if they could see any additional improvements. I've just shipped v0.6.0 of my renovate-pretty-log-tui and renovate-pretty-log utilities, including a whole host of changes - check out the release notes for more. Some of the key changes can be seen in this Asciicast: As you can see, there's now a summary view, and an improved UX for viewing the logs. I'm still working on how this works on smaller screens (i.e. in a Tmux pane) but it works nicely when it's rendered on a half-screen window size. In this, we also surface errors more clearly, i.e. Although I'd mostly completed this last week, I needed to put the last touches to the commit messages. With the GitHub outage today, I decided to finish getting these changes complete, as they've very useful for working with debug logs. I'd also decided to add `renovate-pretty-log -html` option, which allows converting a debug log into a single-page, self-contained HTML file that allows reviewing a very similar view of the local tools, but in the browser.

jvt.me

Explaining why I still spend a lot of time writing my commit messages by hand.

Why I still hand write my commit messages

For over a decade, I've been a proponent of writing detailed Git commit messages. I find it a valuable use of my time, and continue to double down on it, even in a world where you can get a Large Language Model (LLM) to write it for you. In the past, I've written about at least 89 strong feelings I have about Git commits, so I'm naturally biased to the benefit of commit messages, but why does this still hold in the current age, where a lot of people are delegating that to an AI agent, if at all? ## "Why" is better than "what" One of the most important things a commit message should explain is _why_ you're making a given change. Chris Beams' post about writing commit messages is probably one of the more cited blog posts of all time, and is a great resource on this and a number of other important pieces to remember when writing a commit message. Unfortunately a lot of humans, and by extension LLMs, still continue to re-explain what has changed in a given commit. Generally, the "what" is clear, as you can see it in the diff itself. Although not all code is "self-documenting", you can generally see "what" is changed by looking at a commit's diff. If you don't document why you're making the change, you're missing out on really important context. Some other areas I focus on calling out: * if this is a prerequisite/prefactor for other changes * if this is a bug that this fix is resolving (not only referencing issues/JIRA tickets, but also any examples or error messages of note) * whether this has crept in due to a gap in my own review/implementation * it's only a blame culture when it's me, otherwise I'll use `we` - i.e. `I'd missed this from $sha` * if there were any trade-offs, such as why we're executing an external command, instead of implementing a Typescript-based parser In each of these cases, it helps provide more insight into what led to the change and why we're doing it. ## Can I explain it? The process of writing the commit message is also greatly helpful in determining whether I do actually understand the changes I've just made. As we heard last week at GopherCon UK, a study in 2014 shows that you are more likely to retain knowledge if you are expected to teach it. By making sure that I need to explain why a given commit's changes are necessary, I can make sure I do actually understand what I'm about to commit, and how I'd explain it in my own words. I'll very often find that - even with changes I've fully authored myself - as I'm going to explain it, I don't necessarily agree with a choice I've made, or now that I've stepped back to review the changes, I can see a better option. I've found this to be a positive experience when writing documentation in the past, too. When you're trying to explain a new feature, or clarify existing functionality, you often need to "take a step back" and rethink how a user who may be unfamiliar with the inner workings of the project will reason about it, and by doing that, you may find that there's a lot of implied understanding you need to break through. When working through my commit messages, I'll watch out for occurrences of `Also, ...` or `Additionally, ...` - sometimes they're OK, but it's often a case of a commit that is trying to do too much, which requires breaking down the changes into multiple commits. ## I'm the author now In the case I'm working with some AI-assisted code, I may not have necessarily been the driver of the changes or making a lot of the decisions that were made. By having to explain the choices in the commit message, I'm not only working out why the decisions were made, but taking full ownership of the changes. (regardless of whether you do this or not, if you've committed it, it's your responsibility!) ## Indicating what specific areas are AI assisted I work to introduce atomic commits where possible, which allows me to add per-commit attribution for AI usage. In cases where I am using AI to support a change, I can opt to specify in the commit message exactly what pieces have had AI assistance, allowing a way to call out specific areas the different AI model(s) have been used. ## AI can't replicate my taste (yet?) Last week, I'd been working on some personal projects that I've been struggling to make the time to work on, so decided to get my Claude for Open Source (Claude Max) subscription to work. I decided to vibe it a little, and allow Claude to commit atomically as it needed to. I don't particularly like the way it writes its commits, so I put Claude Fable on the task of taking 100 of my most recent commits and creating a skill for committing as me to improve the resulting commits. It wasn't surprising that these commits were better, but not quite my writing style. That's absolutely OK - I don't actually want an AI to be able to write like I do. But it is a nice point where in projects I'm not _as_ bothered about writing the perfect commit message, I can get something reasonable that sounds a bit more like what I'd want out of it. In projects where I do want to write the commits, having a starting point can be useful, too. ## I enjoy documenting I've had an affinity for writing documentation for some time. Some of it is down to my familiarity with writing as a form of blogumentation, how it helps my neurodiverse brain, but also because I see a tonne of value from better documentation. I'm definitely not as skilled as a Technical Writer™️, but I've found over the years that between my better writing skills than many of my colleagues, and have a strong empathy for my users, that I'll end up doing more of the documentation-oriented pieces of work. Naturally, writing commit messages leans into this, as it's another important piece of documentation. ## I'm not forcing you To be very clear, this is _how I work_ and how I want to handle this myself. Even in the projects I run, I don't enforce this on anyone - I've learned over the years it's not worth it to try and require it - and although I'm happy spending the time doing it, not everyone is as interested. I find it to be a valuable process, and helps me work through the thinking behind a change. But that doesn't mean I'm even "forcing" myself to do this - writing can be quite brain intensive, and so sometimes I don't have the capacity to do it. ## Examples Want some worked examples? * ci: don't allow breaking changes in PR commit messages (with a mini-postmortem of an incident) * fix(datasource/pypi): use the earliest upload_time of a version * Three commits in a common area, reducing overload on Maven Central: * fix(datasource/maven): cache 404s on maven-metadata.xml for 12h * fix(datasource/maven): cache immutable .pom URLs for 28 days * fix(datasource/maven): don't look up potential Gradle Plugins in Maven Central * fix: correctly warn when an attestation is missing (as a security-conscious change) * ci(tools/json-schema): validate JSON schemas are well-formed (AI model attribution)

jvt.me

What happened in the week of 2026-08-10?

Week Notes 26#33

* The main thing this week has been GopherCon UK - an expensive week, and unfortunately not as good as previous years - but you can see my writeup for more info * On Tuesday night when I got in, I went over to Monohon Ramen which was nice * A bit of delays on the way home didn't help after a busy few days 🥱 * Recorded a Fallthrough episode with Kris and Matt when I got back on Friday, but feel that I shouldn't have tried to get it in after being at the conference - I was pretty exhausted and feel I was a significantly sub-par guest host, and lower energy than usual - but hopefully it sounds like a better episode than I felt it did during record 😅 * After an extra early bed time on Friday night, I woke up very rested and back to normal 🥱 * Ate a _lot_ of the samosas we brought back from Shayona 😋 They're so very hard to stop eating! * Was a bit cheeky this week seeing that Dependabot still doesn't have support enabled for the GitHub Actions Lockfiles, so decided to ship it in a day 🚀 * My new Pixel Watch 4 came, and it's very nice! * I'm liking how colourful it is in comparison - as well as with my watch face being a lot cooler * Yes, I could've waited a few days and got it cheaper and/or got the new one, but 🤷🏼 * The great battery life has also meant I've found that I've been able to take more advantage of the sleep tracking functionality - it's been really interesting finding that some of the days I've felt I didn't sleep so well, the data's telling me I did! * It's been a good week for personal software: * I have a number of personal projects that I want done, but don't necessarily have the time to sit down and do them, which is a shame. Instead of letting them weigh on me significantly, I've decided to put my Claude for Open Source (Claude Max) subscription to use, and try and smash them out while I have incredibly subsidised access * It meant that I spent some time at the conference with Claude ticking away in the background on: * Improvements to my site's analytics monitoring, so I now get push notifications when certain traffic increases appear * A rewrite of my Micropub server, going into Go (and tackling some future enhancements that again, I'd love to do, but never have/prioritise the time on top of all the other things I have to do!) * I've finally cleaned up my editor and: * Migrated from an old Architect Framework deployment to a Go+HTMX backend * Made it public (as I've been meaning to for several years) * Tidied up the colour scheme, made it a little bit more readable, and a sticky "Post it" button * Added a few useful features I've wanted for a while * Adding a frontend with search to books-mf2 * Getting renovate-graph updated to the latest major version of Renovate, and in a better place to get weekly updates - looking forward to confirming it works right tomorrow * I also enjoyed having "remote control" access, so while I was at breakfast I could help answer/approve things that Claude on my laptop was continuing to investigate * Almost finished my Canada writeup - thanks to a productive train journey down to London - but it's not quite there * I've got my thoughts right in my head for a blog post I'm going to try and get out tomorrow about why I still focus a lot of my time on hand-writing my commit messages * While cooking a roast chicken last night, it turns out it's been so long since I've cooked (about a week) that I forgot which oven was turned on, and wasted an hour with the chicken _not_ being cooked 😅 * Had a nice walk at Gravelly Hollow with Carol and Alan * With Rakki Rakkas having a holiday for a couple of weeks, we got an extra takeaway to tide us over - which was 😋 Played: * _Kingshot_ (as usual) * Another good KvK (16th in Prep, 110th in Battle), and lots of upgrades * _Apex Legends_ Reading: * _Leviathan Falls_ Watched: * _Veep_ (Season 6) * _Saturday Night Live_ * _The Expanse (Season 5)_ * _Unacceptable (Season 1)_ * _Enola Holmes (2020)_ * _Enola Holmes 2 (2022)_ * _Enola Holmes 3 (2026)_ * _Maduk @ Liquicity Festival 2026_ * _Koven @ Liquicity Festival 2026_

jvt.me

A writeup of the GopherCon UK 2026 conference.

GopherCon UK 2026

For the 3rd year running, I've been at GopherCon UK and am surprised to have survived the heat in London - highs of 36 degrees yesterday - but thankfully The Brewery is a lovely and cool event space. I'm writing this on the train home, with a slightly tired voice, and a little tired after a good time - thanks again to the organisers for putting it on! ## How to Stay Passionate in the Age of AI Ainsley Clark kicked us off by talking about ways that we can stay passionate with the reshaping of our roles in the world of AI. Ainsley shared how, as humans, we have an "ancestral" need to create. In the current age of AI, there's a blurred line between human and agent and who is _doing the thing_ , and that impacts the sense of accomplishment that comes from building. Ainsley quoted a number of studies around developer satisfaction and how AI is leading to increased stress, all of which I'd recommend digging into further, as well as "the IKEA effect" study that showed that people who were involved in making a thing (food, origami, furniture) would put more value onto the resulting artifact. Ainsley left us with a few tips to reclaim some of the craft in this new age: 1. Prompt more efficiently: studies show it helps makes us feel more competent and accomplished 2. Post process the results: Review why code works, before you accept it * This helps you own the decisions over the lines (as, at the end of the day, you are owning them as you're the one committing them) * This is why I will _always_ write my commit messages when using AI - I find it a valuable part of the process to understand _why_ we're doing what we do (because I need to explain it in my own words) - I'll blog about this in more detail shortly * Ainsley described this as "making sure work passes through your hands" 1. Invest in understanding: Ainsley noted how - writing notes by hand is better for your memory, and this can be a similar avenue 2. Set boundaries: for instance, only use AI when you fully understand a problem, or you could use it to prototype the change, throw it away, and write it from scratch, once you have the understanding 3. Build stuff: it doesn't have to be day-to-day usage, but making sure that you're still building things for fun and as a way to work with the tools and get a feel for them * I've personally been finding that sorting out a couple of my personal projects has been good for this 1. Teach what you know: as it reinforces the learnings you've had moreso than if you had only learned it yourself * This is one of the reasons I write my learnings as a form of blogumentation. 1. Find your niche: if you can differentiate yourself in a world where code scaffolding is cheap, could you be more T-shaped? Maybe specialise in a domain, or a type of problem like dealing with flaky tests? * Ainsley also noted that specialist skills are usually better than generalist, quoting how salaries are affected by it 1. stay connected: for a sense of community and your own mental health and reduced stress levels * AI can't - currently? - build trust with a skeptical product leader, or any of the personal challenges that are outside of the code being written, and how there are tiny decisions that lead up to a big one, where the AI can't shine 1. Keep learning: if you continue to stay out of your depth, it'll give you the chance to learn and stretch yourself A great comment Ainsley made towards the end of the talk stuck with me: > work makes you capable, people give it meaning ## Kronk: Hardware Accelerated Local Inference I'd meant to get to Andy's _Full Desktop Environment in Go_ talk, but my water bottle had leaked all over my bag, which meant I had to run up to my room and dry it off 😅 Luckily the contents of my bag - my laptop in particular - were dry, but it did mean I was then cutting it close to the talk starts, and when I got downstairs, I realised I'd left my lanyard - so was then definitely going to attend late. Not wanting to join Andy's talk late, I went to Bill Kennedy's talk, which is in a much bigger room that isn't as noticeable when you're trying to sneak in - I was still a late joiner and apologise, Bill! This was a good live demo, and Bill is a great speaker, and was an evolution of last year's talk he did. ## From AI Sceptic to AI Sceptic Who Ships Tom Coupland from Paddle talked about going from an AI skeptic to someone who was part of a team shipping some pretty large features that wouldn't have been possible with the same human investment. I'd very much recommend watching this one, as it was both very interesting, but also a really strong talk - it flowed well, was engaging, and didn't feel like an hour long talk, which is hard to do! Tom took us through how joining onto a "tiger team" to really "kick the tires" of AI, the team were able to lean on AI, allowing Paddle to achieve some very ambitious changes internally, despite Tom being an AI skeptic to begin with. Tom talked about how, over time, the team would continually improve the "harness" around the agents (not to be confused with a harness like Claude Code) which would allow for the agent to know they're doing the right things with "hooks" and "hinters". Hooks would be deterministic, small-but-important checks like "always raise a PR as a draft", and would be something the LLM doesn't need to think about, but would be enforced, and then the hinters would provide a way to nudge towards non-deterministic skills. Tom also talked about how getting Claude to quiz you on what it's doing can be a good way to ensure that everyone is aware what's going on - a question may lead to you rethinking the approach, or your answer may surface a change the LLM needs to make to the plan. Tom noted that for these big new greenfield systems being built, when the team owning it were asked how they were finding it, they mentioned that in the last 3 months, "we barely even think about it", which is incredibly surprising for anyone who's ever been in this situation before. Tom spent a bit of time talking about how the team decided to lean on Behaviour-Driven Development using Cucumber as a way to provide a stronger test harness for the underlying functionality these services were providing. By blocking the LLM from changing any BDD tests, it allowed large refactors of internals (which often change unit tests) to be done without changing any user-facing functionality, which is something I've found in previous years of writing these tests, and it's a great way to keep the LLM on track. Tom noted that teams need to be "in a good place" before their AI usage can supercharge them, instead of send them off in the wrong directions. This reminded me of Tom Hoyland's talk Building and Growing an Agile Team, and the fact that if you have a team that is aligned, understands their goals and can work autonomously towards that goal, then they'll achieve well - but adding AI into a team that isn't in that state can be a big mistake (as many organisations are doing). ## Building a Web App with Go & HTMX Haseeb Majid gave a good talk on lessons learned building a Go web application, sharing some great library choices in HTMX, Templ and sqlc. Haseeb took us through how the application had developed - and how approaches had changed over a few iterations of different web applications, and breaking down the different ways that the stack works. I'd mentioned to someone after the talk that this is a stack I've been meaning to play around with for some time - hopefully this is the inspiration to get it done! And thanks Haseeb for the Renovate shout out 🤓 ## MCP is the new REST: making MCP Typeform's new API Andy Kuszyk took us through the process of building a set of Model Context Protocol (MCP) APIs at Typeform. This was a good talk taking us through how Typeform introduced MCP servers into their offerings, and the shift in user experience over the last few years to also needing to take agent experience into account. A key thing Andy shared was that LLMs prefer MCP because they prefer _semantically meaningful_ tools. If you are ""just"" wrapping your RESTful API as an MCP server that's autogenerated too, you're likely going to be doing things worse for your users. Instead, you need to consider whether the resulting input/output types can be tuned to be more LLM-friendly, or whether there are orchestration API calls that you can do in the MCP server, so the LLM doesn't need to do them itself. Andy recommended that instead of building an isolated MCP server that then calls your RESTful/GraphQL/etc API, you instead have the MCP server built into your web API, so it has access to the same underlying code + business logic the rest of the API has. But as you're not constrained by the API's surface, you can do things in a different and more agent-friendly way. This was a good talk, some great actionable tips, and Andy was a great speaker - I'm very glad I went to both talks! ## How Much CompSci Can Go Teach? Eleanor McHugh and her son took us through the current state of the Computer Science curriculum in schools, and how they've used Go to supplement the teaching. ## Instrument Go Without Changing a Single Line Kemal Akkoyun spoke about some similar things to last year, but with some new tricks. We heard about some upstream OpenTelemetry projects like OBI which can make it much more straightforward to instrument the boundaries of your application - with no code changes - allowing you to then focus on the internal business metrics. I'm sure my ex-colleagues at Elastic will be happy to hear Kemal say: > Elastic's OTel profiler (which was donated to the OpenTelemetry community) is a work of art ## API Design as a Performance Primitive Dave Cheny gave an interesting talk about how focussing on up-front performance considerations can really make a difference. In an ecosystem like Go, we're generally writing performance-sensitive code, and it was interesting seeing how much performance you can gain if you really put in that time up-front, and Dave had the benchmarks to prove it! Dave noted that no matter how fast the Garbage Collector is, it'll never be as fast as no cost - so we need to take that into account. Additionally, our API design influences how many allocations are needed, and allocations _can_ influence performance. There was a lot of hard evidence of the approaches, and I'd recommend a watch, as well as reading through the slides. The final code is ~2 pages but very elegant and performant! ## Build Your Own Tools to Refactor Go Safely Bryan Boreham's talk started with a celebration of his 10th anniversary of his first talk at GopherCon UK 🎂 This talk was a good reminder that building tools to support yourself is really important, and especially when they are tools that can help reduce the toil of reviewing large changes. Go's very lucky because we have the tools to parse and manipulate Go code in our standard library, which makes it pretty straightforward to make these sorts of tools. Bryan's key example was a refactor of ~5000 lines of Go code, which split a large Go file across multiple files, but that it was then a pretty hard diff to review. In this case, regular diff tools weren't able to reason about the changes as easily, for instance "these lines are the same from where they were moved from", nor more complex cases like where a package was introduced for some types, further increasing the lines changed. Bryan - with the help of Claude - wrote a tool to look at the AST before/after, and indicate where lines were "unchanged", "moved", "moved-changed", and it made reviewing much more reasonable, compared to reviewing the diff carefully, asking an AI to review it, or hoping that the tests would cover any changes. Bryan left us with 3 thoughts: 1. Refactoring is good - but scary if it's from AI 2. Go has built-in things for these sorts of tools - and you don't need to know how they work! 3. Watch (your AI) - AI has no taste ## One Definition of Valid Veronika Volokitina took us through some infrastructure changes at Zalando, and how they used their zalando/skipper ingress as the central point for configuration rules. ## Building a polyglot multi-agent AI architecture on AWS AgentCore Andy Kuszyk took us through more of Typeform's AI evolution from yesterday's talk, and took us through the underlying architecture for Typeform's agent-based infrastructure. This was another great talk, and Andy took us through some of the different trade-offs of architecture, how Conway's Law comes into effect, and different technical archtiectures. I'd recommend a full watch of the talk, as there's a lot of great stuff for the exploration of the different architectures they considered, and how they came to the final answer. Andy left us with 3 thoughts: 1. Conway's law can inform architectures 2. Solve for products, not platforms 3. Make high-stakes decisions two-way doors * For instance, using AWS AgentCore is an expensive choice, but they've built it in a way that they can switch over to Temporal as needed * Don't force an overall architecture or language-specific approach - using LangGraph for ease works in Python and Typescript, but it's not a requirement ## Go, ONNX & AI in Production: Trading Platform This one went a bit over my head, as it was fairly heavy on the trading side of things. ## Breadth of content I found it a little harder this year to choose what I wanted to go to, and it didn't seem like there was as much breadth, even though both years only had 2 tracks of talks and a tutorial track. As I indicated to the organisers last year, having 30-minute talks would be really appreciated. Even not taking into account things like attention span and ADHD, an hour long talk is tough for the speaker and the audience. It takes a lot of effort for speakers to refine their talk - whether that's 45 minutes with time for questions, or using the majority of the hour - and it takes a lot more work to prepare. Additionally, having shorter talk slots are - in my opinion - a little less daunting. I can imagine - and have spoken to folks before - that if you're looking to submit a talk, a full hour long talk is a harder thing to propose and prepare for, and can seem like something only "more experienced speakers" (for some definition of that) may be able to do. Having more folks at different stages in their speaking journey would be ideal - it's nice to hear from a range of folks who may be further along in their career, who've never done public speaking, or more junior folks who are incredibly talented storytellers. There may have been some last minute tweaks to the schedule, but I noticed that there were a few speakers who'd had multiple talks, and as much as they're great, it's probably also good to give more folks the opportunity to speak, so we get a wider range of experiences and talk topic. (And no, this isn't me being salty about not speaking this year) ## London Gophers Given the heat in London, I didn't want to risk getting on a train in ~36 degree heat, so decided to head home this morning. But that did mean that I was in town for this month's London Gophers! It was nice to travel over with Andy and Dave, and the event was good but fairly subdued because it seemed like most people - me included - were a little conferenced out 🥱 ### Dave Cheney - Starting and stopping things; the jazz standard of middle ages Go programs Dave took us through how RAM is a resource that should be treated as finite, even though having a Garbage Collector makes it feel like it's infinite. In this talk, Dave took us through how Goroutines should also be treated carefully, with resources they allocate then not necessarily being treated as equally by developers, and how we should consider the cancellation of Goroutines (and any cleanup) ourselves, too. This was a good talk that went through various options and libraries for doing this, finishing up with Dave's github.com/pkg/group library, which distills years of trying to solve this problem. ### Andy Williams - Full Desktop Environment in Go Andy Williams gave a shorter version of the talk (that I'd missed) on Wednesday, and so I was glad to have caught it. Andy took us through FyneOS and some of the technical challenges that are needed to fulfill the moonshot of "should we build our own desktop environment", from window manager compositing to "how do I make it so someone can create a slot that sleeps on the top of their window". It's been a good few years since playing around with my setup on Linux has been exciting - namely due to getting into a good rhythm with it, and not having the time to play around with it as much as I had in the past - but Andy's enthusiasm was contagious. I must say I'm a bit of a bad friend not keeping on top of Fyne as much as I maybe should do - especially when I largely consume content about it in audio-only podcast form, which isn't great for a visual tool! - but it really does look pretty darn great, and I may end up getting more time to play with it soon!

jvt.me