Two often-overlooked Python string methods are startswith() and removeprefix(). @treyhunner covered them with nice examples. Remembering these can help you write cleaner and more readable code.

Two often-overlooked Python string methods are startswith() and removeprefix(). @treyhunner covered them with nice examples. Remembering these can help you write cleaner and more readable code.
Question for any software developers who use AI code generation tools (Cursor, Github Copilot etc). I know that some devs like it, while some find it irritating. That's fine.
However, I'm curious: what - if any - rules has your organisation put around the usage of these tools - more testing, stricter code reviews, more documentation? Something else? Nothing at all (since ultimately the developer is responsible)?
Lisp in 99 Lines of C With TinyLisp - As one of the oldest programming languages still in common use today, and essentia... - https://hackaday.com/2025/08/19/lisp-in-99-lines-of-c-with-tinylisp/ #softwaredevelopment #lisp
"API documentation writers don’t just write content. We’re liaisons between client developers and in-house developers. I often say “we’re paid by the company but work for our clients.” Many think that in-house developers automatically empathize with the client developers. After all, they’re all developers, right? Right? Well, no. A surprising number of times, in-house developers are actually out of touch with clients. Why else would we be talking about having clear field names? They get tunnel vision or become myopic while in the code. This is not unique to developers. All professions have this risk. That’s our job to make sure that clarity is there for the clients. We can’t do it completely by ourselves. We need developer’s buy in. That means, one of two things.
We can push back on the in-house developers. When we see a meaningless, poor, or bad field names, for example, we have the right, if not obligation, to get it changed. Some developers may disagree. That’s OK. The truth is, the code doesn’t belong exclusively to in-house developers. It’s the client’s code. They’re the ones intended to run the code, to know which fields to pass in, with which values, and to read the response JSON. That makes it our code, too. We not only have to run the code but also to explain this to clients. We have a say in the matter."
https://robertdelwood.medium.com/writing-for-humans-an-api-documentation-writer-writes-3c51a6ea87a5
Recto: In Case Programming isn’t Hard Enough - There’s long been a push to stop writing code as a sequence of lines and go to som... - https://hackaday.com/2025/08/17/recto-in-case-programming-isnt-hard-enough/ #softwaredevelopment #visualprogramming #softwarehacks #lisp
Et voilà, the latest version of my #Perl module and script for writing to the #macOS Unified Log, no #ObjectiveC or #Swift required!
* #CPAN: https://metacpan.org/dist/Log-Any-Adapter-MacOS-OSLog
* source on #Codeberg: https://codeberg.org/mjgardner/perl-Log-Any-Adapter-MacOS-OSLog
The contributing guide tells you all you need to know about how to develop this module either with #DistZilla or without: https://metacpan.org/dist/Log-Any-Adapter-MacOS-OSLog/contribute
@pouyllau #Perl (we don't add the 5 anymore since Perl 6 became #RakuLang) has definitely changed since 1999, but has thankfully retained a lot of backward compatibility.
@shiar made a great cheat sheet summary: https://sheet.shiar.nl/perl
I went all out on a #selfhosting setup (again). I decided to host a few (more) things that I had wanted for some time. This instance is one of them.
Over the years, I've used a #Synology #NAS (awful, very limited software). Then I built a #diyNAS with a Celeron CPU and Mini-ITX board, but it was a bit too big for my nomadic lifestyle, so I sold it for parts before my second move.
I was stuck with an #Asustor NAS for some time, which was good for storage. Especially since it was easy to run on a custom OS — #OpenMediaVault, in my case. But it wasn't powerful enough to run everything I wanted. And that's not including things like #GoToSocial. Admittedly, I'm also running surveillance software.
I've eventually settled on an AMD #Ryzen #miniPC with NVMe and SATA storage. The SATA disk is limited to a height of 7 mm, which also limits it to 2 TB. The NVMe is also limited to 2TB, because of the price =)
Additionally, I have a USB 3.0 external hard drive for 'cold storage'. It's also 2TB. So, with 6TB of #storage, I have more than enough for my self-hosting needs. This includes my current media library, although it may become a bottleneck in the near future as I'm leaving #Spotify.
The purpose of this instance is to post about #selfhosted software and, on occasion, a little about #softwaredevelopment (though I always struggle to find something to write about on this subject, probably because it is my job) without being constrained to 500 characters on #Mastodon or running a full-featured Mastodon instance.
#introduction
Our regular Development Digest has some exciting updates on features that are nearing completion, in the case of Exchange email support, and are just starting development, in the case of the long-awaited Conversation View. We're also adjusting Account Hub and tackling the usual maintenance tasks and bug fixes
#Thunderbird #OpenSource #SoftwareDevelopment
https://blog.thunderbird.net/2025/08/thunderbird-monthly-development-digest-july-2025/
Porting libmagic to Rust: Safer File Identification
A little while ago (maybe a month or two), I started porting a great project to Rust: libmagic, the library behind the `file` command utility.
Why did I do that?
For years, I've faced the same issue with file identification: embedding a C library that does intensive parsing into my memory-safe code (Rust, Go, Python, etc.). While I trust the file/libmagic developer community's code quality, I know there are skilled people capable of finding and exploiting bugs—especially in C/C++ parsers. So I've always been reluctant to run libmagic on untrusted input, which creates a tricky situation that kind of defeats its original purpose: categorizing files you know nothing about.
Why Rust?
Rust is the perfect fit for this port. It provides strong safety guarantees while maintaining high performance and easy bindings to other languages (C/C++, Python, Go, Elixir, etc.). Bonus: the library and tool will be portable to all Rust-supported targets.
Show me the code!
Here it is: https://github.com/qjerome/magic-rs/pull/1 Note: This isn't a full implementation yet—it's still a work in progress and needs more work for a usable, clean version (see PR description). That said, if you're feeling adventurous, you can test it out. It already successfully identifies several file types: MS-DOS executables, ELF binaries, scripts, and more.
Compatibility with C libmagic file format?
This project aims for 99% compatibility with libmagic's rule file format. A few rules (such as those using ternary notations in messages) may need adjustments, but the goal is to stay true to the existing specification.
What's next?
- Finalize the library implementation and publish a Rust crate
- Complete the CLI tool (a `file`-equivalent implementation)
- Create bindings for other languages
If you're interested in this work, don't hesitate to follow along or reach out!
Special thanks to @adulau and @circl for supporting this work!
"Using multiple AI agents in tandem opens up impressive possibilities. “AI agents encode the wisdom of senior engineers and apply it universally,” Yahav says.
Looking to the future, Digital.ai’s To anticipates productivity gains with fewer errors and reduced cognitive load, as developers tap various agents for lower-level details. “As this space matures, multi-agent workflows will increase velocity by significantly reducing toil,” he says.
But doing this well will require clear boundaries around product requirements, coding standards, security policies, and more.
In short, AI tools require intention. “An agentic software development life cycle needs the same pillars that a high-performing human team does: a clear mission, a code of conduct, and shared knowledge,” adds Wang.
So, although we’re heading toward a future where developers manage a fleet of agents, early testers should prepare for a lot of trial and error. As Roeck puts it, “Get ready to fail. This isn’t baked yet.”"
How AI Vibe Coding Is Erasing Developers’ Skills
Developers believe AI is boosting their productivity, but it is actually weakening core coding skills. Vibe coding is creating a generation of devs who cannot debug, design, or solve problems without AI.
https://www.finalroundai.com/blog/vibe-coding-erasing-software-developers-skills
#AI #coding #softwaredevelopment
Very glad that Docker (and containers) exists.
You don't know how tedious is to set up a development environment to fix one line.
It would be great if you could mount a file as a filesystem but I guess the performance penalty would be greater than... well, just mounting a folder.
The writing was on the wall the moment #Laravel raised USD $60M from investments.
Eventually they would have to shove in #AI because of shareholders.
https://laravel-news.com/laravel-boost-your-ai-coding-starter-kit
Am I imagining a `git commit --fixup` helper tool that, given a staged change in a hunk of a file present in a previous commit, will automatically find that commit and `--fixup` that commit?
I'm fed up of noticing a problem, then `git log --oneline` and then copypasta a SHA and then `git rebase -i`, and then I notice another thing that's bad and the process starts over.
For my next #Perl #blog post, should I write about:
* Util::H2O::More as an alternative to Moo for #OOP modulinos, or
* Log::Any to log to the #Apple #macOS unified logging system?
Some background:
* Moo with modulinos: https://phoenixtrap.com/2025/08/03/moodulinos/
* Util::H2O::More: https://metacpan.org/pod/Util::H2O::More
* Log::Any: https://metacpan.org/pod/Log::Any
* Apple’s unified logging system: https://developer.apple.com/documentation/os/logging
Learn C with a Lisp - One reason Forth remains popular is that it is very simple to create, but also ver... - https://hackaday.com/2025/08/09/learn-c-with-a-lisp/ #softwaredevelopment #lisp #c
Simple ≠ Simplistic. Explore the fine line between essential and accidental complexity in our upcoming Masterclass with Kevlin Henney. Perfect for developers and architects who want to master the art of sustainable code design. No laptop needed - just bring your curiosity: https://ddd.academy/keeping-it-simple/ #SoftwareDevelopment
"Facebook announced a 5% across-the-board layoff and doubled its executives' bonuses – on the same day. They fired thousands of workers and then hired a single AI researcher for $200m:
(...)
Whatever else all this is, it's a performance. It's a way of demonstrating the efficacy of the product they're hoping your boss will buy and replace you with: Remember when techies were prized beyond all measure, pampered and flattered? AI is SO GOOD at replacing workers that we are dragging these arrogant little shits out by their hoodies and firing them over Interstate 280 with a special, AI-powered trebuchet. Imagine how many of the ungrateful useless eaters who clog up your payroll *you will be able to vaporize when you buy our product!*
Which is why you should always dig closely into announcements about AI-driven tech layoffs. It's true that tech job listings are down 36% since ChatGPT's debut – but that's pretty much true of all job listings:"
https://pluralistic.net/2025/08/05/ex-princes-of-labor/#hyper-criti-hype
I was like an old stereotype: a nerd who wants to work in a quiet corner and not be seen or bothered.