Dave Pearson
banner
davep.fosstodon.org.ap.brid.gy
Dave Pearson
@davep.fosstodon.org.ap.brid.gy
- Developer (http://davep.dev)
- Emacs addict (http://elisp.dev)
- Geek
- He/Him
- 🏴󠁧󠁢󠁳󠁣󠁴󠁿

[bridged from https://fosstodon.org/@davep on the fediverse by https://fed.brid.gy/ ]
Currently playing with adding optional #numba support to Complexitty; my #mandelbrot plotter for the #terminal. The speedup is okay.

Given this zoom and position, on my M2 Mac mini, 0.8 seconds. With Numba: 0.2 seconds.

I should give it a spin on my M2 Pro […]

[Original post on fosstodon.org]
February 14, 2026 at 9:40 PM
I've released v1.2.0 of OldNews, my #theoldreader client for the #terminal. This version adds some cleaning/filtering to the full article grab facility, explained here: https://oldnews.davep.dev/grab_filters/

https://github.com/davep/oldnews

#python #rss #rssreader #feedreader
Grab Filters - OldNews
oldnews.davep.dev
February 13, 2026 at 9:47 PM
Because some subscriptions are stingy with the content of the feed -- trying to force you to visit the actual page in a browser -- I added a "grab page and show text locally" feature to OldNews. But... this can be annoying too because such sites tend to have a […]

[Original post on fosstodon.org]
February 13, 2026 at 4:49 PM
I've just released v1.1.0 of OldNews, a #terminal client for #theoldreader. The main change in this release is to add the ability to download and display the text of a page for an article you're viewing; useful for those sites that are stingy with the summary in the feed […]
Original post on fosstodon.org
fosstodon.org
February 12, 2026 at 9:29 PM
February 11, 2026 at 7:57 PM
OldNews - A terminal-based client for TheOldReader
I honestly can't remember when I was first introduced to the idea of RSS/Atom feeds, and the idea of having an aggregator or reader of some description to keep up with updates on your favourite sites. It's got to be over 20 years ago now. I can't remember what I used either, but I remember using one or two readers that ran locally, right up until I met Google Reader. Once I discovered that I was settled. As time moved on and I moved from platform to platform, and wandered into the smartphone era, I stuck with Google Reader (and the odd client for it here and there). It was a natural and sensible approach to consuming news and updates. It also mostly felt like a solved problem and so felt nice and stable. So, of course, I was annoyed when Google killed it off, like so many useful things. When this happened I dabbled with a couple of alternatives and, at some point, finally settled on TheOldReader. Since then it's been my "server" for feed subscriptions with me using desktop and mobile clients to work against it. But... I never found anything that worked for me that ran in the terminal. Given I've got a thing for writing terminal-based tools it made sense I should have a go, and so OldNews became my winter break project. I've written it as a client application for the API of TheOldReader, and only for that, and have developed it in a way that works well for me. All the functionality I want and need is in there: Add subscriptions Rename subscriptions Remove subscriptions Add folders Rename folders Remove folders Move subscriptions between folders Mark read/unread Read articles (that provide actual content in their feeds) Currently there's no support for starring feeds or interacting with the whole "friend" system (honestly: while I see mention of it in the API, I know nothing of that side of things and really don't care about it). As time goes on I might work on that. As with all of my other terminal-based applications, there's a rich command palette that shows you what you can do, and also what keyboard shortcuts will run those commands. While I do still need to work on some documentation for the application (although you'd hope that anyone looking for an RSS reader at this point would mostly be able to find their way around) the palette is a good place to go looking for things you can do. Plus there's a help screen too. If themes are your thing, there's themes: That's a small selection, and there's more to explore. Also on the cosmetic front there's a simple compact mode, which toggles between two ways of showing the navigation menu, the article lists and the panel headers. OldNews has been a daily-driver for a wee while now, while also under active development. I think I've covered all the main functions I want and have also shaken out plenty of bugs, so today's the day to call it v1.0.0 and go from there. If you're a user of TheOldReader and fancy interacting with it from the terminal too then it's out there to try out. It's licensed GPL-3.0 and available via GitHub and also via PyPI. If you have an environment that has pipx installed you should be able to get up and running with: $ pipx install oldnews It can also be installed using uv: uv tool install oldnews If you don't have uv installed you can use uvx.sh to perform the installation. For GNU/Linux or macOS or similar: curl -LsSf uvx.sh/oldnews/install.sh | sh or on Windows: powershell -ExecutionPolicy ByPass -c "irm https://uvx.sh/oldnews/install.ps1 | iex" Once installed, run the oldnews command. Hopefully this is useful to someone else; meanwhile I'll be using it more and more. If you need help, or have any ideas, please feel free to raise an issue or start a discussion.
blog.davep.org
February 11, 2026 at 5:29 PM
February 10, 2026 at 7:11 PM
February 9, 2026 at 7:49 PM
Edinburgh having a bit of a cool mood this evening.
February 7, 2026 at 8:36 PM
The usual post-movie treat for us. 😋
February 7, 2026 at 8:32 PM
Holy shit The Bone Temple. Holy. Shit.
February 7, 2026 at 6:16 PM
It's taken a wee bit longer than I initially anticipated -- mostly because I've had fun experimenting (and also because I did a whole side quest where I swapped out the non-async TypeDAL for the async Tortoise ORM for the local db) -- but I'm getting close to […]

[Original post on fosstodon.org]
February 7, 2026 at 1:13 AM
So… the problem is never solved, got it.
February 6, 2026 at 8:01 AM
So a video about Death Stranding got me thinking about how I view code reviews...

https://blog.davep.org/2026/02/04/solidarity-empathy-patience.html
Solidarity, Empathy, and Patience -- thinking about code reviews
So I saw this video... Death Stranding, along with its sequel, is my absolute favourite video game ever, and probably one of my favourite pieces of fiction ever too; I've watched and read a lot about the game (not to mention I've played both releases a ton too). A good few months back I was watching a video about the making of the first game and during the video, around the 27:20 mark, the narrator says the phrase: the game's core values of solidarity, empathy, and patience This stood out to me. There was something about that phrase and what it meant given my experiences in Death Stranding and Death Stranding 2; it spoke to me enough that I jotted it down and kept coming back to it and thinking about it. It was a phrase I couldn't get out of my head. Around the same time I was also doing a lot of thinking about, and note-writing about, code reviews. Although I've been working in software development1 for a few decades now (I started in July 1989), I was quite late to the whole process of code review -- at least in the way we talk about it today. This mostly comes down to the fact that for a lot of my time I either worked in very small companies or I was the only developer around. Given this, thinking about my own approach to reviews is something I've only really been doing for the past few years. I've made personal notes about it, read posts and articles about it, I've had conversations about it; my thoughts and feelings about it have drifted a little but seem to have settled. The idea of that phrase from the Death Stranding video crept into this thought process, as I felt it nicely summed up what a good code review would look and feel like. Weirdly I also realised that, perhaps, the things I like and value about Death Stranding are also the things I like, value, and want to embody when it comes to code reviews. One of the big selling points for me, with Death Stranding, is the asynchronous multiplayer aspect of it; the reason Kojima calls it a "Strand type game". I have my game, I have my goal, but other people can indirectly affect it, either doing work in their game that leaks into mine in a beneficial way, or by leaking into mine in a way that I have to clean up. There's something really satisfying about this asynchronous collaboration. That feels similar to the collective effort of working in a single repository, each person working on their own branch or PR, sometimes in tandem, sometimes in series, sometimes to the benefit of each other and sometimes in ways that block each other. But that's not the point here. There's a similarity if I think about it, but I don't want to get too carried away on that line of thought. It's the phrase from the video I care about; it's the approach of involving solidarity, empathy and patience I want to think about more. Solidarity This, for me, is all about where you position yourself when you approach reviewing code. I sense things only work well if you view the codebase as something with common ownership. I've worked on and with a codebase where the original author invited others in to collaborate, but where they constantly acted as a gatekeeper, and often as a gatekeeper who was resistant to their own contributions being reviewed, and it was an exhausting experience. I believe the key here is to work against a "your code" vs "my standard" approach, instead concentrating on an "our repository" view. That's not to say that there shouldn't be standards and that they shouldn't be maintained -- there should be and they should be -- but more to say that they should be agreed upon, mutually understood to be worthwhile, and that any callout of a standard not being applied is seen as a good and helpful thing. The driving force here should be the shared intent, and how the different degrees of knowledge and experience can come together to express that intent. If a reviewer can see issues with a submission, with a proposed change or addition to the codebase, the ideal approach is to highlight them in such a way as to make it feel like we discovered them, not that I discovered them and you should sort it out. Depending on the degree of proposed change, this might actually be expressed by (if you're using GitHub, for example) using the "Suggested Change" feature to directly feed back into the PR, or perhaps for something a little more complex, or the offer to pair up to work on the solution. Empathy As someone who has written a lot of code, and so written a lot of bugs and made a lot of bad design choices, I feel empathy is the easiest of the three words to get behind and understand, but possibly the hardest one to actually put into practice. When you look at a PR, it's easy to see code, to see those design choices, and to approach the reading as if you were the one who had written it, assessing it through that lens. In my own experience, this is where I find myself writing and re-writing my comments during a review. As much as possible I try and ask the author why they've taken a particular approach. It could be, perhaps, that I've simply missed a different perspective they have. If that's the case I'll learn something about the code (and about them); if that isn't the case I've invited them to have a second read of their contribution. It seems to me that this benefits everyone. I feel that where I land with this is the idea of striving to act less like a critic and more like a collaborator, and in doing so aiming to add to an atmosphere of psychological safety. Nobody should feel like there's a penalty to getting something "wrong" in a contribution; they should ideally feel like they've learnt a new "gotcha" to be mindful of in the future (both as an author and a reviewer). Done right the whole team, and the work, benefits. Patience The patience aspect of this view of reviews, for me, covers a few things. There's the patience that should be applied when reading over the code; there's the patience that should be applied when walking someone through feedback and suggestions; and there's the patience needed by the whole team to not treat code reviews as a speed bump on the road to getting work over the line. While patience applies to other facets of a review too, I think these are the most important parts. In a work environment I think it's the last point -- that of the team's collective patience -- that is the most difficult to embody and protect. Often we'll find ourselves in a wider environment that employs a myopic view of progress and getting things done, where the burn-down chart for the sprint is all that matters. In that sort of environment a code review can often be seen, by some, as a frustrating hurdle to moving that little card across that board. Cards over quality. Cards over sustainability. It's my belief that this is one of those times where the phrase "slow down to speed up" really does apply. For me, review time is where the team gets to grow, to own the project, to own the code, to really apply the development and engineering principles they want to embody. Time spent on a review now will, in my experience, collectively save a lot more time later on, as the team becomes more cohesive and increasingly employs a shared intuition for what's right for the project. This is not (entirely) a post about code reviews The thing with code reviews, or any other team activities, is they don't exist in a vacuum. They take on the taste and smell of the culture in which they operate. It's my experience that it doesn't matter how much solidarity, empathy or patience you display during your day-to-day, if it's counter to the culture in which you work it's always going to be exhausting, it's always going to feel like a slog. If leadership in technology, in software engineering, were to show more of these three basic qualities, they'd start to appear like they realise that they're working with actual humans, not producers of code; and I think we need more of that now than at any time in the history of coding. Since I first saw that video, and heard that phrase, and had it run around my head, I've come to feel that it's not just a good mantra for code reviews; I think it's a simple blueprint for what good tech leadership should look like. If there was more "Strand-type" leadership in my chosen industry I feel it would be more open, more accessible, would offer more psychological safety and ultimately would result in teams, and projects, that thrive. Or software engineering, if you prefer, but that's a whole other blog post I'll never get round to writing one day. ↩
blog.davep.org
February 4, 2026 at 2:03 PM
February 3, 2026 at 7:46 PM
The thing with most #foss projects obviously made with #ai is their README files seem to read like disturbed manifestos. I get Time Cube vibes when reading them.
January 29, 2026 at 9:37 PM
TIL - uvx.sh
In the past few months, like a lot of folk in the Python world, I've been won over by uv. When it comes to managing my own projects my journey over the past few years as been pipenv, then rye, and then when rye was killed off I finally swapped to uv (later than I should have, I realised in hindsight). At each step I've found each tool cleaner, easier to work with and more feature-rich. There's no doubt in my mind that uv has done the most work to make installing Python-based tools (or at least PyPI-based tools) as friction-free an experience as possible. Now I've discovered uvh.sh. The thing with uv is the person installing your application first needs to get and install uv; this site removes that friction. Now if someone wants to install obs2nlm (for example) they should be able to just do: curl -LsSf uvx.sh/obs2nlm/install.sh | sh and away they go (assuming they have curl installed, which is generally going to be far more likely than having uv installed). Of course, there are the usual caveats and concerns about the "just pipe this stuff via sh trust me bro" approach, but if you are comfortable with suggesting this kind of install method it looks worth adding this to an application's installation documentation. I think I'm going to start mentioning it as an option.
blog.davep.org
January 28, 2026 at 4:19 PM
/me catches up on the whole claudbot/moltbot saga…

*shocked face*
January 27, 2026 at 1:32 PM
Took ty for a spin on my current pet project this morning. Couple of things it didn’t like that mypy and pyright are chill with. Trying to decide if it’s correctly harsher or not.

#python #programming
January 27, 2026 at 9:11 AM
Today's useful find, when you're messing with building an #RSS client (well a client for a server that's an #rss client): https://lorem-rss.herokuapp.com
Lorem RSS
Web service that generates lorem ipsum RSS feeds
lorem-rss.herokuapp.com
January 20, 2026 at 5:14 PM
Me finally deciding to tinker with Go…

*notices go-mode in Emacs defaults to tabs over spaces* Ugh, really?

*notices that gofmt uses tabs over spaces with no choice* Old on a moment!

*notices the ecosystem shits a bunch of stuff into ~/go* YEET!

#golang
January 20, 2026 at 12:14 PM
The winter break project is (post-break) getting dangerously close to being usable as a daily driver. At this rate I’ll have to do some proper docs soon!

https://github.com/davep/oldnews

#python #terminal #rss #theoldreader #programming
January 18, 2026 at 2:23 PM
I’m not mad, just disappointed.
January 18, 2026 at 12:18 PM
Insert Silverhand speech here…

https://www.patreon.com/posts/148437771
January 17, 2026 at 5:00 PM
I think someone is annoyed that I’m tinkering with code rather than paying them attention.
January 17, 2026 at 4:06 PM