The AYN Thor is an Android handheld with two screens and, out of the box, no opinion about what either of them is for. The upper screen is wide and bright and obviously wants to be where the game happens. The lower screen is smaller, nearly square, and close to the controls. It wants to be a menu. The hardware makes this arrangement feel inevitable. Android does not. Android sees displays, activities, tasks, focus, and a default screen. It can put software on both panels, but it has no idea…
Now that this site is written in Go1, I've turned to restoring and adding more features connecting it to the open web. While I maintain a healthy skepticism of Bluesky the company, I'm enamored with open protocols and ATProto falls under that umbrella. ATProto exists apart from Bluesky and Bluesky is built on top of ATProto. Wikipedia The AT Protocol (Authenticated Transfer Protocol, pronounced "at protocol", commonly shortened to ATproto or "ATP") is a protocol and set of open standards for…
Anonymous Group Chats Group chats cannot be named, they are only listed by the members in the group chat listed alphabetically and comma separated. This makes differentiating group chats that share members from each other very difficult. I assume this is to funnel users into using channels, but there are many short term conversations that don't necessarily fit into channels well, I feel that group chats are inevitable. If they wanted to funnel people I would go one step further and not allow…
Last week, I found this question on a dev.to post: “Is it just me, or has anyone noticed that articles on dev.to don’t get as many reads/views as they used to before?” Yes! On dev.to, Medium, and on the Internet overall. There’s no point in writing how-to tutorials anymore, unless you’re starting your coding or writing journey with TIL posts. For step-by-step guidance on coding tasks, there’s a magical text-area that seems to understands you and spits out answers fast. Less people are landing…
Last week Sony announced that from January 2028 they will no longer be producing physical discs for PlayStation games. In some ways this announcement isn't a completely unexpected surprise. Videogame consoles have become increasingly digital focused over the past decade. Partly out of players choice (digital can be convenient) and console manufacturers increasingly nudging consumption habits in that direction too. I had already assumed that the PS6 would not come with a disc drive. This was…
With several developers and a great deal of production servers we need access to, managing SSH keys and access across them all was getting complex with potential for mistakes and missed authentication. Instead, we decided to set up a bastion/jump host (with a redundant backup) - this means the client servers need just 2 SSH keys added and we manage authentication and access for the team in a central location. Note: This post has been sitting in my drafts for years and I'm posting it out of…
praeobscura:I am cross-posting my resource list for the Noemata zine here. Alas, if you lose this post, you must endure the long journey of searching for where else* I have linked them.(*The updated description of the zine page.)——ConlangingPolyGlot: Spoken Language Construction Kit - Free software for keeping track of multiple conlang projects in a single database.Quothalinguist - The personal website of Jessie Peterson, the professor of linguistics who created the well-known Conlang Year…
Under partial failure, retry loops can rearrange history. If order, duplication, or staleness matters, retry needs state.
I’ve cancelled my Claude Pro subscription. It wasn’t out of any dissatisfaction with Claude; on the contrary, I still think it’s the leading LLM for general use and especially for coding. No, my choice was more because I realised I was wasting money. I already pay for Kagi, and even upgraded to their Duo plan so I could give my wife a search engine that works for her (versus the other way around). As part of that subscription, I can use Kagi Assistant. For general-purpose ‘consolidated search’…
WingIt method All there is to the WingIt method is this one simple thing. There is no past. There is no future. There is only now. You just have to get through now. At the start of every day, do what you like. There isn’t a task list with WingIt. Source: Introducing WingIt! This post put a genuine smile on my face. There’s still a nugget of wisdom in there. I am trying - very hard - to live in the present. It’s supposed to be easy. However, it’s one of the hardest things I’m working on right…
CSAR is a proposed EU Regulation whose purpose is "to prevent and combat child sexual abuse" (procedure 2022/0155(COD))1. Most of the public opposition to CSAR boils down to "no surveillance" as a first principle, full stop. On the other side, there are at least some documented cases where the existing, voluntary Chat Control 1.0 has helped catch people committing crimes against children — which is usually where the counter-argument lands: "yes, but we will save the kids". Both of these are too…
I was recently a ‘guest’ on Dan Hon’s new online event type thing – How People Work…LIVE!. The session is on Youtube – I will never, ever look/listen at that but maybe you will. It was a pretty nerve wracking occasion given some of the folks who attended (at least three of whom I was directly referencing) and the format which was very free-flowing and podcast-y. Which I do like but it does spike the adrenaline somewhat. Dan has upcoming conversations with Pavel Samsonov and Russell Davies (and…
How do I get the audio output from my stereo to somewhere else?
For most of us, I think the picture is obvious. The job we did for years, picking up a ticket, opening Figma, digging through the codebase, typing code into a file, adding a test, debugging the test, jumping to Stack Overflow, getting in the zone, and grinding on a single task for hours, those days are ending. Everything that took us so long to get good at, learning the language, memorizing shortcuts, understanding Git, all of it, can now slowly be handed off to agents. It’s the same reason we…
ℹ️ TL;DR I taught my software test suite to record training videos. They star the real application, they narrate themselves with captions, and when the app changes, I rebuild them with one command instead of re-filming anything. The system was invented in an evening to teach one person her own custom software; the next night it made a forty-nine-video library for LocallyGrown.net. This is the story; a companion post has the technical details. Modern software developers write automated tests for…
ℹ️ TL;DR The technical companion to part one. If your web app has a Playwright end-to-end suite, you already own most of a training-video studio. This post walks through what it takes to turn one into the other: a small helper vocabulary, an injected overlay, honest fixtures, and a build pipeline, with the lessons I picked up at each step. Part one told the story; this post is the how. The pitch, one more time for the people who came straight here: I generate silent, captioned training videos…
This is how I'm grabbing optional keyword arguments in MiniJinja with a fallback to a default if the arg doesn't exist. Rust Cargo.toml[package] name = "get_optional_keyword_arg" version = "0.1.0" edition = "2024" [dependencies] anyhow = "1.0.103" minijinja = { version = "2.21.0", features = ["custom_syntax"] } src/main.rsuse anyhow::Error as AnyError; use minijinja::syntax::SyntaxConfig; use minijinja::{Environment, Error, Value, context}; fn main() -> Result<(), AnyError> { let env =…
♠ TIL: brew pin. For reasons to be elaborated in another post, I am currently prevented from upgrading LogSeq to its latest version in homebrew: % brew outdated [...] logseq (0.10.14) != 2.0.1 [...] LogSeq v2 introduces breaking changes to my workflow. I found this out the hard way. As put by Valodim in HN: And now after several years of complete stagnation, the supposed improvement is a database format to fix their technical issues, so I can no longer keep all my data as markdown files? At a…
Home Assistant Transplant I have been running Home Assistant on a Raspberry Pi 4 for about five years now. A short while ago, homeassistant was suddenly no longer responding. Neither web ui nor a SSH login worked. So I cut the RPi's power and rebooted it. That seemed to have fixed it and I didn't think about it. Then this weekend I wanted to update Home Assistant and create a backup as usual beforehand. But somehow this backup always failed with failed to perform the action update/install.…
Last week we found the first indications of support for phones as linked devices in the source code of Signal for Android. The new functionality allows users to use their Signal account on an additional Android phone, without registering a separate phone number. The linked Android phone synchronizes chats and messages with the primary device, allowing users to access their conversations from multiple phones. Source: Signal allows Android phones to be linked as secondary devices (beta) Finally.…
AI;DR – This blog post and the debug memory manager it describes were developed with significant help from Claude. If you don’t want to read “AI slop”, stop reading now. I recently added a new import functionality to the GExperts Code Librarian. During the test phase I found a nasty (preexisting) bug: After deleting a folder branch, the whole file became corrupted. On the next open it failed with a “Stream Read Error”. Deleting the branch had shown no error at all. From the user’s point of view…
I'm not happy about it, but putting in a heatpump isn't cheap, so I have to make-do with what I have. In this case, a gas heater. And a gas supply contract with Contact Energy, as they were the only one that supplied gas-only connections. I didn't want to give up Powershop for electricity.
This is so inventive!I’m reading a book in the Crosspoint e-reader: I select
News just in from 2009: “It’s time to get completely off RSS and switch to Twitter.” – Techcrunch. Well that didn’t exactly age well. And now there’s an RSS resurgence in the air – from Dave Winer, of course, who made RSS immortal by giving it an audio payload and thereby inventing podcasting.
TL;DR: wp2shell chains an unauth SQLi that can be used to obtain the admin password and then login to upload a vulnerable plugin for RCE. This can then be chained with a myriad of privilege escalation bugs to obtain root on the WP server.WordPress is one of the most common platforms out there for blogs and general sites, which is what makes it a prime target for researchers and adversaries alike. The codebase is mostly written in PHP and is on the 7th version with sub-versions and beta…
For years the filament roll for my 3D printer has just been hanging from the front of my Lack tower. As I also often have long stretches of time where I don't use much filament, it tends to draw moisture from the air. This reduces print quality, so it's recommended to keep the filament dry. So I finally decided to upgrade my printing situation by adding an air-tight container for the filament roll, with a bowden tube running to my direct-drive extruder. The 3D printed coupling mount on the…
“The Fitbit Air is a really nice wearable—it’s thin, unobtrusive, cheap. But its app, Google Health, has problems. It gives you paragraphs of AI-generated text multiple times a day as long as you have premium features turned on, and it’s missing simple things like the ability to see your stats from yesterday. Fortunately, the iPhone app Bevel is now compatible with Google Health, which means you can replace the app entirely.” Bevel is now free to use, and it has a few features that Google…
I updated my Uses page. While updating it, I had fun considering the items I no longer use. A lot has changed!
I love this demonstration from Ghost Font: The Anti-AI Font Only Humans Can Read. Your browser does not support the video tag. The explanation is very clear and as a proof of concept it works well. However like the newsletter that sent me there, I do wonder, how long will it continue to work.