Latest Posts (20 found)

be a good cook when you use AI to edit your writing

Whenever someone talks about how they let AI improve their writing, I realize we are still taking the wrong things away from what good writing supposedly is. Not that I am the arbiter of good writing, but we can agree that at its core, good writing is a pleasure to read, connects to the reader, respects the context and chooses the correct tone for the audience. It’s also about correctly identifying when “good” writing is needed at all. I think the literacy crisis we are going through extends in this way, where people aren’t just lacking in media literacy, but lacking in the skills above. It’s easy to think that good language is always full of jargon, that being an expert on something means long, drawn out explanations, and that you should use a supposedly intelligent, professorial tone all the time. It’s only with education and reading a lot that you learn that good writing is a spectrum, and all these things depend on the author’s style, occasion and intent, and are used in the right moments. That’s why people who generate responses to casual chat messages aren’t being met with excitement; cases like when you get an AI-generated Happy Birthday text, or when your friend replies to your vent with an AI-generated professional therapist response. These people want to do it right , but don’t respect context-switching and why some interactions need to decidedly be personal and “imperfect” to others. They have only taken away that good writing is big words, many words, and they are willing to shoehorn it into everything. I cannot blame anyone for reading over an AI-generated improvement of their text and thinking “ Wow, that’s so much better! ”. On the first read, it does seem impressive. And I don’t wanna sit here and pretend humans don’t manage to choose a completely wrong tone for the occasion or audience without AI as well, but it seems like many don’t actually tell AI the context or audience, and AI guesses incorrectly. People know what you sound like and how you usually write. Of course you are allowed to improve and change your writing style, but people will know when it is very sudden, completely out of character, and not something you’d manage on your own. And if you overdo it, AI will turn a concise, engaging and personal read with your own endearing quirks into either SEO marketing language, or an extremely dry scientific journal style read. You should be able to detect when that happens and take a step back. Otherwise you will sit there, proud of yourself that you wrote that, when it is so markedly different to your usual style and draft that you essentially employed a ghostwriter and pat yourself on the back for its output. And weirdly enough, I get the feeling many of you were never interested in “improving” your writing when it didn’t mean just copying a machine’s work. That’s having an editor, not you improving on your skills. You can liken it to skills in the kitchen: People who are just learning how to cook are learning about spices and think: The more spice, the better, so throw all of it in! Until a dish doesn’t taste good at all; too salty, too intense, everything is clashing. There is a point when it doesn’t elevate the dish, but ruins it. Some occasions don’t call for a curry, but instead a salad. A good cook will know the right dish and how to use ingredients and spices to make it pop. Don’t come with the fine dining if the people want your rustic potato bake. Employing AI to improve your text into oblivion is a slippery slope to sounding uneducated and phony. Please get away from the notion that longer and more complicated is better just for the sake of it. Reply via email Published 02 Jun, 2026

0 views
Unsung Today

A mixed blessing

The otherwise excellent note-taking app Bear has an interesting bug that’s worth talking about while it’s still here. When you’re around to-do items, you can press ⌘. (period) to toggle any task complete or incomplete. It’s actually a really fun shortcut in practice: But when you have a larger selection with a mixed state (some checkmarks are on, others off), this is what happens: This feels like an obvious thing to implement, and this is also where the code itself wants to go when left alone. But this is not great. The rule is: When you have a mixed state, changing it should collapse (or: normalize) the entire selection to one state or the other, rather than perform individual inversion. Try ⌘B in your text editor on partially bolded text, and you can see that collapse in action: It feels strange to recommend that, particularly as it seems like it loses data. So, what gives? The first argument is “do not make the user jump through hoops” or maybe “respect a large selection.” If, as a user, I want to actually make sure all my tasks are done, the shortcut not being idempotent means that I now have to go through tasks one by one, and that’s a lot of work – especially since we’re talking about text selection, which is famously unpleasant. The second reason is that even the UI layer has an opinion here. In the above bolding example, Pages collapsing the selection to bold when you press the B toggle, makes the toggle UI behave exactly as it normally would with a simple selection: Elsewhere, in Figma, typing a number on top of a “mixed” state changes all the properties of relevant objects to that number: Imagine how awful it would feel mechanically in both the above examples if your action would still leave the text in the “mixed” state. It would simply appear like the UI broke, since the change didn’t fully “stick” – kind of like those tiny hated moments when you close the door, but it doesn’t latch on and reopens on its own, or when you engage the turn signal stalk, but it refuses to stay put and snaps right back. There is also one last reason. It’s the simplest one that I sometimes have to remind myself to put in my head before I jump too deep into the mechanics, or details, or technical nuances. Let’s say the toggles invert individually on a large selection. Who would ever benefit from it behaving this way? #bear #bugs #details #flow #keyboard

0 views
Unsung Today

“Whoever is doing this had some fun with adding these portions.”

I hate lorem ipsum with passion, but guess what? There’s more intentionality in it than I assumed, and even easter eggs, as this fun 25-minute mini documentary from Emily Zhang/The Rabbit Hole shows: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/whoever-is-doing-this-had-some-fun-with-adding-these-portions/yt1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/whoever-is-doing-this-had-some-fun-with-adding-these-portions/yt1.1600w.avif" type="image/avif"> You can tell that this was not the work of an amateur. The garbled text is done with a lot of care and knowledge. You can see a lot of rational decisions about why it looks the way it does in there. They are making very careful additions, such as adding letters… the “-and”s and the “-ng”s… The “y” got stuck in because that’s an English letter. […] I think the fact that it is garbled Latin text, and that it has those other letters in a fairly Latin-based alphabet amount of frequency, speaks to that it was done very, very carefully. Just a fun watch all around. #typography #youtube

0 views

Adorable tiny skulls // Week 22 — 2026

Sunday came, Sunday went, but the notes can be week notes any day they want to be. Current situation: Monday 25 May: Memorial Day, also hospital day. Having to work certain holidays is a new thing for me. The long light days of summer begin. Lat night it was light until well after 8. Pool is open now. Hasn’t been very warm yet but that will change quickly. We’re a week away from June. Tuesday 26 May:  Thinking about the cost of optimizing: The more you optimize, the more difficult it is to be flexible. A danger of losing resilience. There’s an underlying principle at work here. Stress creates resilience. — Scott Hogan, Built from Broken On the other hand: A nervous system that is constantly in sympathetic mode cannot hold complexity. — Nate Hagens, A Framework for Action (YouTube link) Wednesday 27 May: Back to runnnning. I did a Couch ➡︎ 5K program over March and April, ended in early May. Took a few weeks off. Wasn’t sure how I’d do today but all the muscles seem to remember what to do. Now I’m pleasantly tired, my legs are sore, and I feel amazing. I kind of wish running didn’t feel so good because it’s also so goddamn awful. Got Rob all moved out today. 😭 It’s fine, it’s good, he’s ready, it’s great, it’s time, blah blah blah blah blah I hate it. He’s still in town, at least. Thursday 28 May: One of those days where there are too many things. We gotta quit with all the things. So many things. One thing then another thing. LET ME NAP. The linden trees are blooming and they smell amazing. Also the magnolias. After everything, the wild went on. Of course it did. — Moonbound , Robin Sloan Friday 29 May: You know you are genuinely in old-person territory when sleeping till 7 feels late. Also, impossible to sleep past 7. My back has a strict time limit on when it must no longer be on a mattress. I find this upsetting and unfair. 💜 Mara here for the weekend! Saturday 30 May: Hospital day. I have GOT to get better about having some sort of dinner mostly prepped on hospital days because otherwise I come home and just eat whatever I can grab like a starved maniac. Gremlin mode activates. I just stood in the kitchen shoveling stale old potato chips in my mouth for… I don’t know how long. Let’s not talk about this anymore. Sunday 31 May: Hiking church. Very muddy after all the rain. Delightful water sounds everywhere. Spontaneous tattoo time, thanks to Mara who had her tattoo stuff with her and  just casually freehand drew this design on my wrist from a couple of inspo pics I found. It’s a blackberry vine with a few tiny skulls. I LOVE IT SO MUCH. 📚 Finished Moonbound by Robin Sloan. Excellent. I loved it. Cozy but in the way I want cozy to be when I try to read a cozy genre book and am inevitably disappointed (bored?). This one is the feeling. …. other things happened like I remember going to the gym at least twice? OH WAIT FUCK YEAH I PR’D BENCHPRESS BABY!! 115 POUNDS. That was satisfying. I want to write more about that Nate Hagens which I have not finished watching but which is really good but I am too tired. To sum up: A week (or so) has passed, I was alive, I did things or did not do things, here we are, me and the adorable tiny skulls are ready for sleep now.

0 views

Every byte matters

I have spent a large portion of my career working in Java. In that time, you get used to huge classes. New functionality? Just add a new method and field to the class. The cost of each new field is rarely considered. Performance is often considered from a classic computer science perspective by considering asymptotic analysis of the algorithms and data structures in-use. Turns out that even within a growth scale for your algorithm, such as a simple for-loop , time can vary dramatically if we have a little deeper understanding of the underlying hardware. First, let’s understand our current machine. Let’s take a peek at our cache line and page sizes. The instances number is a reflection of how the caches are shared amongst CPUs. If I had 10 CPUs, each one has their own cache, whereas two of them would share an cache. Our cache line size is 64 bytes . When you read a single byte from memory, the hardware will fill the surrounding 64 bytes into the cache line. The idea being that data is often temporal and spatially located, meaning data is often accessed near each other and close in time to each other. We can reference Jeff Dean’s famous “Latency numbers every programmer should know” , however a quick recap with the values from our particular machine is the following: The sizes for each cache, is the number returned by divided by the number of cores or instances; i.e. 352 KiB ÷ 10 instances = ~35 KiB. We then determine the number of cache lines by dividing this number by 64; i.e. 35 KiB ÷ 64 bytes = 560 cache lines. How does this all matter ? 🤔 Let’s consider an example where we want to iterate over a single struct and pull out the to filter them. We create our struct, and in this particular example we need 64 bytes to represent a single Monster. If we had an array of Monsters and we iterate over them, the cache line would fill up like so. Each cache line would fill with a single monster, and we would fetch only the byte. This is often referred to as “Array of Structs”. If we instead normalize the data such that each field is in it’s own list, we can pack the cache lines much tighter. This type of layout is referred to as “Struct of Arrays”. How much of an impact can this have? We can observe up to 30x improvements when the Monster struct is 1KiB 🤯 The delta is less observable when the struct is small because multiple Monster structs can still be fetched within a single cache-line. This data access is incredibly hot though. Your CPU pre-fetcher knows it’s going sequentially and fetches the next cache line before you need it. You never actually have to wait for the memory to be fetched. What about random access patterns? Not all access patterns are sequential. Hash maps, trees, graph traversal, and pointer-heavy data structures jump to unpredictable locations. The CPU can’t prefetch what it can’t predict. With random access, the CPU needs the entire array to be present in the cache in order to avoid stalls due to memory lookup. This means the total size of your collection determines your performance tier. Doubling the struct from 64B to 128B doubles the working set for the same number of monsters, pushing the data into slower cache levels. At just 512 monsters, a 64B struct fits in L1d at ~3 ns — but a 128B struct has already spilled to L2 at ~11 ns. We can observe this with a pointer-chasing benchmark. We allocate N monster-sized nodes, wire them into a random order, and chase pointers. Each hop lands at an unpredictable address, defeating the CPU’s prefetcher entirely. Rather than graph it logarithmically, which I find sometimes is easy to miss, I have included a zoomed in graph. We can see that all struct sizes hit the same staircase like pattern as they go through the various cache levels however the larger struct sizes are shifted left , meaning they hit the increase earlier. This means for random access patterns, if you can keep tight control on your total working set size, you can drastically affect the time. Knowing your struct and working set size can make a substantial difference.

0 views
iDiallo Today

The web is changing, and we are not going back

Whenever I saw someone type a natural language query into Google, it made me cringe. "It's not a person," I would say. "Type like you're talking to a machine." This was especially true for programmers and it was before AI took over everything. Instead of "how do I write a function that reads a file?", I would suggest they use specific keywords, something that sounded more like machine language than conversation. "js function to read csv file" or "css gradient background property example." This got you better results. Even though Google was a sophisticated search engine, it was still doing a kind of keyword matching under the hood. But not anymore. You don't get any advantage from writing in "machine language." Google understands natural language just as well. In fact, even better. How is it that in 2026, I Google things less than ever? It's not that I know everything now. It's more that I don't want to call the friend who always talks too much. If the height of the Eiffel Tower ever comes up in conversation, I'll type "eiffel tower wiki" and click through to Wikipedia. I don't want to have a conversation about it. Googling something these days feels like Google is trying to join my private conversation. Where it used to be a tool for finding answers elsewhere, now it's a buddy who gives you an answer. And just as you're about to leave, it says, "hey, did you also know that..." There used to be a machine between me and the information I was looking for. It was good at its job. It sorted, ranked, then presented information. But now, the machine is constantly pushing information at me, watching my reaction, learning from it, and feeding me more, unsolicited. Before, information lived on the web and was hard to find. Today, information still exists, but it's buried under noise. Google no longer helps you find it, it just gives you an answer. That answer might be right or wrong, and right below it, in small print: "AI responses may include mistakes." You rarely get to verify whether the answer is correct, because almost no one clicks through to the source. I know this firsthand. More than three-quarters of my Google referral traffic has disappeared, while my search impressions keep climbing. So what's left to do? I could mourn the old Google, the simpler web. But as the title says, we aren't going back. This is the new reality, and we have to adapt. Rather than blindly embracing change, I think it's smarter to pick and choose. Just last week, I wrote about the small web still being alive . And it did exactly what its name suggests. It stayed small. There are other search engines built for people who want more control. DuckDuckGo. Kagi (my personal favorite). The habit of Googling everything is learned behavior and learned behaviors can be unlearned. What's harder to convey is that Google never presented us with facts, only sources and citations. The way the google answer is presented, we have the impression they are giving us undisputable truths. When everyone is sharing screenshots of the answer they got, all you can do is share a screenshot of the opposite answer you got. The source gets lost. That's where we are now. Skimming the average sentiment of a Reddit thread, or confirming something we already believed. This is the new reality. We're not going back to keyword matching. But I also don't have to accept the new way as the only way. Google has made its search box AI-first and that's their right, it's their product. But it's also my opportunity to try something different. We are not going back. So I might as well choose where I go next.

0 views

Hackers Used Meta’s AI Support Bot to Seize Instagram Accounts

The Instagram accounts for the Obama White House and the Chief Master Sergeant of the U.S. Space Force were briefly defaced with pro-Iranian images and messages over the weekend, after instructions began circulating on Telegram showing how to trick Meta’s “AI support assistant” bot into resetting account passwords. A screenshot from a video released on Telegram claiming to show how Meta’s AI customer support bot could be tricked into resetting a target’s password. On May 31, word began to spread on several Telegram instant message channels that Meta’s AI bot would happily add an email address to an existing account as part of the bot’s standard password reset flow. A video released on Telegram by pro-Iran hackers claimed to document a remarkably simple exploit that appears to have involved using a VPN connection with an IP address that is in or near the target’s usual hometown, requesting a password reset for the account, and then choosing to chat with Meta’s AI support assistant. From there, the video shows the attacker told the bot to link the account in question to a new email address, after which the bot dutifully sent that address a one-time code that allowed a password reset. The Telegram account that posted the video also linked to screenshots of pro-Iran images, videos and messages that defaced the hacked Instagram accounts, saying hackers had used the exploit to hijack a number of valuable (read: short) Instagram account names that allegedly have a resale value of more than a half million dollars. Meta has not responded to requests for comment on the video’s claims, but the company reportedly did acknowledge the dormant Instagram account for the Obama White House was briefly compromised. The security blog thecybersecguru.com reports that Meta pushed an emergency patch over the weekend, and clarified that no back end database was breached. “Instagram has notoriously poor human support infrastructure,” Cybersecguru wrote. “Recovering a locked account – especially a high-value one can take weeks of back-and-forth with an automated ticketing system. Meta’s solution was to deploy a conversational AI layer to handle common recovery workflows: relinking a lost email address, triggering a password reset, verifying account ownership. The assistant, presumably, was supposed to reduce friction for legitimate users stuck in account-access hell.” Ian Goldin , a threat researcher at Lumen’s Black Lotus Labs , said we’re entering unchartered security territory as more large online platforms start allowing AI chatbots to handle sensitive account recovery requests. Just like human customer support employees can be social engineered into providing unauthorized access to someone’s account, AI bots are equally eager to help and vulnerable to persuasion and trickery, he said. “AI chatbots create interesting new attack surface, and we’re likely going to see a lot more of these kinds of attacks,” Goldin said. Securing your various online accounts means taking full advantage of the most secure form of multi-factor authentication (MFA) offered (such as a passkey or security key). In this case, even using the least robust form of MFA that Instagram offers — a one-time code sent via SMS — likely would have blocked the exploit: The hackers who released the video on Telegram said their exploit failed to work against any accounts that had MFA enabled.

0 views
Chris Coyier Yesterday

Social RSS (?)

What’s up with this? I’d like to see an explicitly social-forward RSS reader. Like it’s encouraged to highlight passages and leave short comments. Your buds see yours, you see your buds. The spirit, of course, is “I want my Google Reader back.” I should be careful though: I imagine if we really did have it back exactly as it was, it would probably not be as cool as we remember. That was a long-ass time ago and web software just wasn’t as nice as it is now. But: it really did have social features in it! I could leave comments and see comments from my friends. (How “friends” worked back then, I scarcely remember.) I’m not alone in wanting this. Here’s what I’ve seen so far. There is Skyreader , and it looks like Tim Disney is still actively working on it: New release of @skyreader.app is now live with support for Channels that let you set up filtered views of your feeds and saved articles. Helps you catch up on quick reads or check in on sites that infrequently post.(apparently I have 104 long reads, rip my reading list) In my mind (and perhaps not reality?) Skyreader solves a “cold start” problem where signing up for a new social site is a lonely bummer because you don’t have any friends. Well, if all my Bluesky friends were automatically my friends on Skyreader, wouldn’t that be, like, good? My problem is… I don’t… get it. The main reason I can’t “really use it,” though, is that it doesn’t sync with Feedbin. I understand that’s a niche concern, but I need one canonical feed source, so everything I’m subscribed to is in one place, and how much I’ve read is also canonical. That might be antithetical to AT Proto? I have no idea. Indieweb has their own version of all this, but it’s seriously no joke getting involved. From one of the reader sites, Togther : What You Need #1 Your own website On the IndieWeb your website is your identity. It doesn’t need to be advanced, it doesn’t need to be pretty, it just needs to be  yours . #2 IndieAuth IndieAuth  is a technology to allow you to sign into services using only your website. #3 A MicroSub Server MicroSub  is where the real magic happens. There are 2 parts; the server and the client. Together is the client, but it needs a server to go along with it. The server does a lot of tricky work such as fetching & parsing feeds as well as keeping track of what you have read and how you have everything organized. If you don’t already have a MicroSub server then check out  Aperture . #4 MicroPub (optional) MicroPub  is an optional but very cool piece of the puzzle. If your own website has MicroPub functionality then you can use Together not just to read content, but also to reply and create your own content. You can like, repost and reply to stuff you are following, you can even write full on blog posts from inside Together. I mean, I’m not above some nerd hackin’, but this is 100% not ever going to be a place with a critical mass of my friends just chillin’ and sharing/commenting on blog posts. Way too hard. The closest thing I’ve seen is CommonRSS by Brad Coffield which was build in a direct response to my original Bluesky post. A couple days ago @chriscoyier.net mentioned wanting a more social forward RSS reader. I'm a longtime fan so here we are.Chris, if you see this, I hope you like it! I'd love to round it out with a permanent archive and other cool stuff. www.commonrss.com#solodev #buildinpublic I originally had a gut reaction to the vibe coding nature of it. Like I don’t wanna use this thing you slopped together over a weekend, you gotta get more serious about it first. Which I admit is just a gut reaction and not a fair assessment of the software. Brad does seem quite sincere about making it a thing. But at the same time, it feels like it’s been months without updates, which is a bad sign for super brand new software. In testing it lately… It feels like it’s close, but it needs to work better. The commenting feature (again, like my main thing for wanting this) requires you to highlight some of the post first, then you can comment, but the comment won’t save. CommonRSS feels like a solid concept, but it’s both got the cold-start thing in terms of the social network, but also the cold-start thing in terms of a business. My guess is it’s hard for Brad to muster a ton of enthusiasm to work on the project all day every day with low users. I’m thinking the main problem is that there just isn’t much of a business to be built around RSS. It can build boutique one-person companies with a passion for it, but even then, difficult. On top of that, maybe there just isn’t much appetite for the social part? There are a number of arguably already-decently-successful boutique RSS apps, so why haven’t they done it? Why hasn’t Feedbin done anything terribly social? Why not Feedly? Remember FlipBoard’s kind weird taking on RSS? Now they have an equally weird spinoff . My guess is it’s just too hard of work for too little payoff. Maybe there aren’t really “friends” on Skyreader? If there are, I can’t really find a list of them. If there aren’t, I guess this isn’t what I’m looking for. Or is it just assumed they are the same as Bluesky friends? I dunno, I think I have a lot to learn about this AT Proto stuff. What happens when I share an article? Does it share on my Bluesky? It doesn’t look like it. Who sees my shared articles then? My friends, if there are such a thing? Other people who explicitly subscribe? How would anyone figure out how to do that? It looks like I can share and I can highlight stuff specifically in what I share. Who sees the highlight? I imagine they need to use Skyreader to see that highlight? Or does it republish as RSS somehow? No comments… right? That’s weird to me for a social feed reader. What I think of when I think social feed reader is 90% writing and reading my friends comments. The UI is confusing to me. I don’t love the expanding list format that jumps around a lot. It looks great, love the design — but it feels quite slow across the board. The Feedbin sync (yay!) didn’t work at first, but appears to be working now. It now claims to have 2-way syncing (yay!) but that doesn’t work for me. The articles I read aren’t read in feedbin. The stars don’t sync. It’s got the cold-start social problem: there isn’t anyone to follow. The discover page only lists Brad, and clicking the follow button from him doesn’t work.

0 views
David Bushell Yesterday

Challenge and opportunity

I am back! Ten days “offline”. For me that just means online without talking to anyone. My break came at a time of high industry (and personal) stress. Seeing talented people lose motivation bums me the hell out. Reach out and say thanks - Kevin Powell Thank you to those who reached out whilst I was offline :) Catching up on RSS and reading educators question their worth makes me angry. Seeing more people cite “AI” as a primary reason to exit tech boils my blood! AI was the last straw. Have you heard of that island off India where the indigenous population kills any outsiders fool-hardy enough to land? They are doing the rest of us a favor by preserving a way of life we may need again someday, or at the very least should not want to see completely extinguished. I Am Retiring from Tech to Live Offline - Chad Whitacre The chatbox psychosis epidemic remains in full force. Despite countless studies suggesting AI isn’t paying off . Despite countless examples showing that AI is broken by design . Despite growing sentiment that AI isn’t welcome . Despite everything, the stochastic parrot feeders insist that our future is token servitude. I crashed out hard at Google’s deskilling . That incensed me. To see the word “skill” redefined and sold as a directory of markdown files is a grave insult. I’m still motivated . In the face of career-ending threats I see opportunity. I’ll be setting up shop as a limited company soon(-ish) after 15+ years of self-employment. Expect more news on that front later in the year. First I need to get a grip on unhealthy levels of stress. That means prioritising paid client work over my blog and social media antics! I work Mon–Thursday for exactly that reason. Friday is my personal day. Lately though I’ve found myself in keyboard warrior mode at 11am midweek. That must stop if I am to survive! The challenge is to continue enjoying my profession. I want to find a way to encourage and remotivate others too. At the same time, I can’t ignore the continued assault. The web must be fought for. That ain’t easy when it’s all so demoralising. I won’t be silenced in my fight against alternative thoughts . The gatekeepers cannot be allowed to turn one of humanity’s greatest creations into a tokendollar economy. I can’t believe this needs repeating but: do not replace real skills with a directory of markdown files. Stay hungry to learn. Fight for the web. Thanks for reading! Follow me on Mastodon and Bluesky . Subscribe to my Blog and Notes or Combined feeds.

0 views
Stratechery Yesterday

YouTubers Win the Box Office, Goodbye Gatekeepers, The YouTube Bar

YouTubers are ruling the box office, and it shouldn't be a surprise: succeeding on YouTube is a much higher bar than the gates that currently govern Hollywood.

0 views
DHH Yesterday

Let the agents democratize open source

The open source movement spent decades fighting for everyone's right to change software, through free access to code and permissive licenses to release improvements. But at the dawn of the AI revolution, as this mission is finally being broadly fulfilled, it's clear that "everyone" never actually meant everyone to some. See, all programmers are equal, but some programmers are more equal than others. If you're a programmer being assisted by AI, you're not a real programmer. Therefore you aren't entitled to the same supposedly universal open source rights. Or so the self-serving thinking goes in the growing number of anti-agent camps springing up as part of a modern Luddite movement. Projects big and small have been erecting new participation barriers on contributions aided by AI to preserve the privileges of the old programmer guilds.  This is a protectionist tale as old as time.    And the justifications are just as tired: It's about quality! It's about attribution! It's about workers! Spare me. It's about you, your insecurities, and your privileges. Humans have been writing shitty software, with dodgy attribution and plenty of bugs, since five minutes after the profession materialized. Agents aren't perfect, slop is a problem, but giving more people the power to enjoy malleable computers is undoubtedly a huge win for the founding vision of open source.  But as with so many social movements that purport to fight for freedom or equality, this AI backlash reeks of status games, envy, and what Nietzsche called ressentiment: How dare you make or change software without suffering through all that I had to endure learning this trade! This precious power is my reward for enduring the social humiliation of being a nerd! What should be celebrated as the spread of computing freedoms is instead condemned because it diminishes the exclusivity of those who possessed it first. Don't succumb to this insular, fearful, protectionist thinking. Programming is evolving. We don't know exactly what the final shape will look like, but giving more people access to the fruits of computing freedoms is worth resisting the temptation to close the gates of participation.

0 views
Unsung Yesterday

Writing about fonts

In last week’s post , I made an off-hand comment about Vercel’s Geist Pixel announcement , and I thought it might be interesting to turn this into more of a full-fledged critique. I don’t think it’s a good announcement, but its flaws are pretty universal, so I want to put words to these flaws. This will extend to a lot of other writing about design, not even necessary even just about typography. Here’s my advice that I believe would make announcements like this better: I know the elephant in the room here is “how big companies do things.” A lot of redesign announcements and font unveils exist chiefly to make the execs who started it happy, and perhaps as fodder for future promotion – I bet the whole “Already shaping what’s next” section isn’t really written for external audience – and they get chewed by the big PR machine that often files away whatever personality and quirkiness might have been there. Your job is to fight the machine! But I acknowledge that it might be hard. However, I’ve also seen all this seeping into personal font announcements, which is unfortunate. (I don’t want to link to specific examples, since that’d be punching down.) Also, this is not just about the joy of reading or some general notion of “craft” – although they are important, too. This is also purely informational. I feel I haven’t learned enough from the Geist Pixel announcement for the amount of time I spent with it. I don’t understand “multiple variants for different densities and use cases” or “semi-mono approach” or what stylistic sets are included. (My general goal is to write in a way that people can learn something new from any design announcement, even if they don’t have any prior context, and if they never actually use the font.) It‘s a shame, because the work itself seems thoughtful and excellent, deserves a better intro, and could help others interested in typography as a jumping off point, particularly because this feels like a typeface off the beaten path. Just to round up this post, some recent counterexamples: #craft #david jonathan ross #storytelling #typography Write like a human being would. This is famously hard, and takes practice. Here, we see stuff like “unapologetically digital,” “a functional tool within a broader typographical system,” “the result feels both nostalgic and contemporary,” and “constraints weren’t a limitation, they were the design tool.” No one talks like this. I think people believe font releases have to use these words and phrases, as a way to bring legitimacy to the project. I do not subscribe to that way of thinking. I think it leads to writing that’s optimized only for admiration, which is not as much fun for anyone. Show a specific example of a problem you solved. This page hints at some things – “They don’t scale properly across viewports, their metrics conflict with existing typography, or they’re purely decorative.” – but that feels altogether too vague to be useful or even interesting. These are actually fascinating and hard challenges, yet I know as much at the bottom of the page as I did at the top. Show details you are proud of. Zoom in literally or figuratively. “Each glyph was manually refined to avoid visual noise, uneven weight distribution, and awkward diagonals.” I would love to see a few examples. Show work in progress! Show stuff you discarded. This will be hard, but why not? It’s good practice and I believe this, more than anything else, will have people appreciate what you did. Plus, everybody loves a blooper reel. Related: talk about struggle. Don’t motion in the direction of struggle, or performatively announce that this was the hardest project of your life. Actually talk about something that was hard, and why. Be vulnerable. Be honest. People didn’t care that Rocky lost in the first movie, because people cared about Rocky. Talk about your inspiration or history. What we all do here is part of something bigger. Why a pixel font to begin with? Why is this interesting to you? Is that because Vercel is filled with nerds, or because you got bored with bold and italic, or because it just seems visually interesting in a new way? Let me type! Immediately and everywhere. I don’t think any modern font announcement/​tester can exist without this. This is the easiest way to getting to know the font and explore specific things that matter to you. (To do this here, you have to go to the font page , switch to Geist Pixel at the top, and then scroll all the way to the bottom. This feels entirely too far away.) Show, don’t tell, generally. The Geist Pixel announcement feels rife for an avalanche of this, but has so little. I mentioned above wishing to see examples of manual refinements. There is a visual for “seamless mixing,” but it’s really a marketing photo, not a real-use example – it visualizes what, but you want to visualize what and why at the same time. I would love to see the spread of variants, specific examples of how the font is not “breaking in production” or not “scaling properly across viewports.” I don’t know what is a “semi-mono approach” and I would like to learn. Motion is okay, but it has zero nutritional value. If you have limited resources, don’t spend it on motion. Anything interactive is better. (But again, the best interactive thing is letting you type.) The “Already shaping what’s next” is a narratively unsatisfying section, as it promises stuff that you cannot see yet. Either show those, or skip the tease altogether. Fran Sans announcement post by Emily Sneddon (complements the font page ) – personal, distinctive, talks about the process, shows interesting artifacts. I feel that every small essay from David Jonathan Ross’s Font Of The Month teaches me something new – pick a font you like on that page, then click Notes next to it. Departure Mono font page by Helena Zhang doesn’t use a lot of words, but still tells a lot. Shantell Sans process post by Shantell Martin (complements the font page ) – already talked about it before .

0 views
Unsung Yesterday

See you on the other side

A nice moment in Google Maps – if you are travelling by public transit, an indicator shows not just the current stop on the list in real time, but also exactly where you are in between stops: It’s not just something traditionally delightful, a cute big icon moving smoothly. I also think it’s very helpful. Travelling in a new place can be stressful and station names look similar; it’s nice to orient yourself without having to go back to the map, and if the indicator only always pointed to a station, it would introduce off-by-one errors (“was it the last station, or is it the next one”)? Plus, I think any design features that help your brain transition between abstract (list) and physical (map) views are very welcome. My suggestion would be to consider making it pulsating and/or blue to tie it better together with the current GPS position, which has had the same visual signature since 2007. #details #google

0 views
Farid Zakaria Yesterday

AI is a Boon for the Anal-Retentive

I guess it’s my turn to write an “AI article”. 🫠 It’s Saturday evening and I’m late into my 3rd project, one where I would never have gotten so far without the help of recent advancements in AI, all thanks to LLMs. The realization that I’ve been able to accomplish personal projects that evaded me for so long was really remarkable and I feel fortunate…at least for now. I can see the knobs slowly dialing back, the amount of tokens we are given pro bono is quickly diminishing. A typical project, B.O. (Before Opus 4.6), was one where I think of an idea that inevitably needs a frontend component. I then spend 3-7 days researching the latest on frontend build patterns, frameworks and trends. I’m then mired in choice and complexity only to lose focus, or lose interest in bit-twiddling CSS (something I never quite truly learned). My latest project, Zephyr , is my attempt to build a weather wind station powered by battery & solar that can send me updates via cellular network. The project involves: writing firmware via Rust to an ESP32 board, sending commands to the modem to initiate the HTTPS requests, connecting the anemometer and wind vane to the device, working with a breadboard (I can do hardware now too!) and writing a frontend website to display the results. To say this project is outside of my wheelhouse is an understatement . However, I have been able to get surprisingly far asking for advice and guidance, and leaning on the LLM to bootstrap some code. I have had to be incredibly thoughtful in guiding it to relevant schematics, examples and manuals since writing the firmware for the board was incredibly tricky with all the various knobs that can be tuned. The project prior to that was one dedicated to recording surfing entries: http://surfing.exe.xyz/ . The project prior to that was https://checkthisdealforme.com/ , a small website where you can quickly appraise items you either want to buy or sell. You might notice a theme that all these projects leverage https://exe.dev/ . It’s a platform I’ve enjoyed that has similarly taken all the infrastructure molasses out when working on small projects. All these projects would never have made it this far. I’m far too anal-retentive. That quality is part of my personality. It has often been a strength when dealing with the mire of complexity at $DAYJOB$ but has been a burden for things whose complexity I am happy to relinquish. Thank you, large language models, for freeing me of my anal-retentiveness when necessary. While others use the term “slop” as a form of insult, here it’s been a boon and a welcomed one.

0 views
Xe Iaso Yesterday

"No way to prevent this" say users of only package manager where this regularly happens

In the hours following the news that Redhat Insights' JavaScript packages fell victim to a supply chain attack via NPM, developers and systems administrators scrambled ensure all of their projects were unaffected from a supply chain attack that steals credentials for AWS, GCP, Azure, Kubernetes, HashiCorp Vault, npm, and CircleCI before then self-propagating via said stolen npm credentials and the bypass_2fa setting. This establishes persistence via Claude Code hooks and VS Code task injection. If you have installed the affected package, reprovision your development hardware. This is is due to the affected dependencies being distributed via NPM , the only package manager where these supply-chain attacks regularly happen. "This was a terrible tragedy, but sometimes these things just happen and there's nothing anyone can do to stop them," said programmer Lady Eulah Howell, echoing statements expressed by hundreds of thousands of programmers who use the only package manager where 90% of the world's supply-chain attacks have occurred in the last decade, and whose projects are 20 times more likely to fall victim to supply chain attacks. "It's a shame, but what can we do? There really isn't anything we can do to prevent supply-chain attacks from happening if the maintainers don't want to secure access to their accounts in a robust manner". At press time, users of the only package manager in the world where these vulnerabilities regularly happen once or twice per week for the last year were referring to themselves and their situation as "helpless". For more information, please see upstream documentation published by Redhat Insights' JavaScript packages at the following link: redhat-javascript-clients-06-2026 .

0 views
Sean Goedecke Yesterday

Weird projects I shipped with AI

Where are all the AI-generated projects? This is a common question from AI skeptics: if LLMs are so good at writing code, where is the tsunami of new AI-generated apps, services and games? I personally don’t find this to be much of a paradox. Writing code is only one of the bottlenecks involved in actually shipping a new product, after all. It’s also impossible to talk about the paid work I’ve done with AI (you’ll simply have to take my word that it’s increased my productivity). But one thing I can do is share a list of personal projects I’ve built with AI in the last twelve months. I definitely would not have done all of these by hand. I might have found the time to do one or two of them, but based on my pre-AI track record they would probably have stayed in the “GitHub repo with a few commits” stage. This list is a kind of existence proof : a bunch of weird projects, useful to at least some people, that would not have existed without AI assistance 0 . Most recently I’ve built skifreedle.com , a daily-game version of the classic Windows SkiFree game (i.e. “like Wordle, but for SkiFree”). The code for that is here 1 . I enjoy coding small web games by hand, but definitely would not have had the time to wire up all the different SkiFree objects or build neat features like a ghost of your fastest run. I also tried out a lot of different visual themes for the game UI before landing on something I liked. If I’d done this by hand, I would have only had time to try out two or three different looks, instead of fifteen or twenty. I’m very happy with how this turned out. I’ve been enjoying competing against my brother to get better times, since both of us have a lot of nostalgia for the original SkiFree game. Last year I built Autodeck ! I wrote a blog post about this before, but this came from my partner wishing there was some way to automatically generate Anki cards about random topics she wanted to learn about. It ended up being relatively straightforward to set up an endless feed of auto-generated spaced repetition cards: I set up Stripe payments for this one, more because I was worried about someone running away with my Groq balance than because I wanted to make money, but I was pleasantly surprised to see a bunch of people actually use this. Over five hundred people have tried it out, with enough paid subscribers to cover inference and hosting. I might have built this without LLM assistance, but I almost certainly would not have deployed it as a website. The hassle of setting up a database and Stripe would have just been too much work. I also built an AI-generated endless wiki . I wrote a blog post about this one as well. Like Autodeck, I was fascinated with the idea of non-chat interfaces for LLMs, and I thought a wiki-based approach where you interact with the model by clicking links was pretty cool. I learned the hard way that putting a LLM generation call on the end of a regular link was a bad idea: scrapers would exhaust my inference budget quickly. I ended up faking the no-article-exists-yet links with JavaScript, which at least so far has defeated scrapers. People still email me about Endless Wiki, and there are over 280 thousand pages generated. My original goal was to see if you could eventually generate a page for Neon Genesis Evangelion, starting at the root page and only following links (kind of like wiki golf ). I was successful! You can read the “Evangelion Anime” page here . Almost exactly a month after I launched Endless Wiki, xAI launched Grokipedia . Obviously they didn’t plagiarize me. This is a very easy idea to have, and my site was not the first infinite wiki (though I think it was the first one where you had to discover new pages by clicking on links). But it did take some of the shine off. I built a PWA that caches the VicFlora plant identification database so it could be used with low or no internet. This was more of a utility project for my partner, who likes plants and occasionally goes on field trips where internet is spotty. I would definitely not have done this without LLMs. It was reasonably difficult to scrape the basic dichotomous key from the VicFlora website: their API documentation was out of date, there were multiple possible pathways for fetching data (most of which were not functional), and the format of the data I did manage to fetch was hard to parse. I think I could have done it, with enough effort, but it would have been a substantial amount of work. I’m very happy with how this turned out. It’s not perfect, but it’s functional, and I’ve even had the occasional Victorian botanist email me with bug reports or feature requests, so it’s clearly seeing a little bit of usage. I did a bunch of other stuff that doesn’t necessarily rise to the level of a “deployed project”: my gh-standup GitHub CLI extension to automatically generate a standup report, which has just over a hundred stars, my (low quality) image geolocation benchmark , which I blogged about here , or my skill for extracting features from open-source models. There may not be a flood of AI-generated companies (yet), but at least for me there’s been a flood of small, weird projects that would not have existed without significant LLM assistance. I also want to shout out Simon Willison’s version of this , which is another great example of “weird useful tools that only exist because the cost of creating them was so low”. I did lift the spritesheet from DanielHough’s SkiFree.js , which attributes it to Wing Wang Wao . Of course, the original sprites and art belong to Chris Pirih’s SkiFree and Microsoft. I also want to shout out Simon Willison’s version of this , which is another great example of “weird useful tools that only exist because the cost of creating them was so low”. ↩ I did lift the spritesheet from DanielHough’s SkiFree.js , which attributes it to Wing Wang Wao . Of course, the original sprites and art belong to Chris Pirih’s SkiFree and Microsoft. ↩

0 views
Allen Pike Yesterday

Building for Voice In, Visuals Out

Recently, Andrej Karpathy argued that the ideal interaction pattern for AI models is voice in, visuals out : Audio is the human-preferred input to AIs, but vision is the preferred output from them. Around a ~third of our brains are a massively parallel processor dedicated to vision; it is the 10-lane superhighway of information into brain. The claim is that while “text in, markdown out” is the mode most people use LLMs today, what we should be building toward is a Jarvis-like mode where we primarily speak to AI – and it primarily responds with UI, video, or other visuals. Let’s check in on where we’re at for both halves of this claim: visuals as output, and voice as input. Humans love looking at things! While it can be convenient to be able to listen to our computers speak, waiting through a voice response feels kinda… ugh. You can increase the speaking rate, but fundamentally, the fastest way for a computer to give humans information is to display it. We’re faster at reading text than we are at listening, but that’s just the start. There’s a good reason computers long ago evolved past text-only terminals: richer interfaces are often faster, clearer, nicer, and more useful . The power of human vision has facilitated a rich history of computers showing people stuff. At first, LLMs weren’t great at producing visuals , often spending many tokens to produce half-baked results. However, Anthropic’s Thariq Shihipar recently wrote how HTML is increasingly a viable output format to supplant Markdown, for certain model responses. This is great, since HTML is a powerful way to show visuals. Going beyond text can give us dynamic: Thus the DOS era of AI begins to end. While it will be a while before general-purpose agents consistently return compelling HTML in response to arbitrary requests, visual responses are already practical for vertical agents – it helps to do one thing well. Recent months have seen a noticeable uptick in AI features producing useful diagrams, charts, sliders, and so on. So, yep. Visual output is a natural fit for AI, and we’re already going beyond plain text. On the other hand, most people are ambivalent about the idea of talking to AI. We were promised the Star Trek computer, or Jarvis, but so far we’ve gotten Siri and automated spam calls. There’s merit to the skepticism. Fundamentally, voice is never going to be the only input mode for computers. Just as we sometimes need voice because our hands are occupied, other times it’s impractical to speak aloud for social or confidentiality reasons. And even when we can speak, voice alone isn’t enough – effective computer use will always require more precise inputs, such as mouse clicks and drags. However, voice is a deeply human and useful input mode. For example, it’s excellent for getting out our not-yet-organized thoughts and observations. While ChatGPT voice mode is substantially dumber than its text mode, it can still be useful for organizing your thoughts – advanced rubber-ducking. Compared to text, speech also contains additional nuance and detail. Voice is not just words – it’s intonation, timing, tone, pitch, energy, and emphasis. Where a transcript would only see , how you voice the “okay” might convey “Sounds good!”, “Tell me more”, “I kind of doubt that.” or “Get the hell out of my office.” This is why we call somebody if we need to have an emotional conversation, rather than sending misinterpretable text messages. We speak faster than we type in terms of WPM, so together with the additional details in our voice, we simply put out more information per second via voice than from a keyboard. So, great. Talking to AI and having it respond with visuals are both natural and highly useful. Why aren’t we doing this all the time? If you’ve actually used AI voice systems, you’ve probably noticed that they’re usually slow, dumb, or both. In order to feel fast, we’ve known since the 60s that computers should respond within about 100ms, and that in order to keep users’ sense of flow, they need to respond within about 1000ms (1 second). Even before networks and giant neural nets, it could be a challenge to hit these bars. But voice AI adds a substantial new hurdle. Humans are more sensitive to lagged voice than we are to lagged visuals. For a fully fluid voice conversation with interruptions going both ways, the latency bar is about 200ms. More than that, and interruptions feel janky and annoying. You’ve experienced this on voice calls with other humans: if there’s a noticeable lag and you’re stepping on one another’s words, you back off into a more stilted turn-taking conversation style. At best, this is what we get with common AI applications today: slow, single-duplex turn-takers. They listen until it seems like you’ve stopped, generate a response, then stream until it sounds like you’ve started saying something, at which point they abruptly stop. While 200ms is a long time in traditional computing terms – a smooth animation frame needs to render in just 16ms – you’ll find 200ms is not a long time to do the complex work of sending a user’s voice over the network, making sense of it, generating a voice response, and sending it back. In order to achieve the required latency, applications generally do voice inference with rather small models. The most advanced voice model most people have tried, ChatGPT’s rather outdated voice mode, is profoundly dumb compared to GPT 5.5 or Claude Opus 4.8. Even if you understand why this is the case, it’s fun to watch that guy who awkwardly gets it to misadvise him 1 . But there is hope. Earlier this month Thinking Machines gave a preview of their approach for realtime voice models, which they call Interaction Models . These are full-duplex systems, which means we’re finally getting simultaneous perception and generation. Rather than switching between generation and listening, these streaming models slice time into 200ms chunks, interleaved continuously. While 200ms isn’t enough to generate a very smart response, that fast streaming model can call slower, smarter models to do things like lookups, reasoning, and generating artifacts – then return the results in 200ms chunks when they’re ready. Now, this is all very exciting, and I’m excited to see where it goes. But despite the claim “The model instantly reacts to visual cues”, even their demo videos show a noticeable and sometimes awkward lag between stimuli and voice responses. This is partly because it’s early – Thinking Machines was only founded last year. But it’s partly because humans are just that sensitive to voice delays. It’s a fundamentally difficult problem. However. Humans are less sensitive to laggy visuals. Since visuals are less intrusive than a voice response, you get the more permissive 1000ms response budget that we’re used to when building computer programs. This is convenient, since voice → visuals is a great interaction mode. The good news is that you don’t need to wait for Thinking Machines or any other model advances to build useful voice in, visuals out experiences today. Here’s a quick example of what voice in, visuals out can feel like: not a chat, but a live visual representation of what you’re working on. Here are a few latency approaches to keep in mind if you’re working on voice-in, visuals-out agents: Get it dialled in right, and you can build delightful-feeling experiences. If you’re working on these kinds of realtime apps, I’d love to chat – happy to share what we’ve been learning, and hear what others have been finding. GPT-Realtime-2 recently launched in the API with “GPT-5-class reasoning,” but is not in ChatGPT yet. And so far, Claude has no realtime multimodal model at all. ↩ Hierarchy (sidebars, columns, navigation) Exploration (drill ins, filters, expansion) Direct manipulation (scrolling, dragging) Data visualizations (graphs, charts, dashboards) Mockups and prototypes (show, not tell) Illustrative images and video (pelicans, bicycles) The underlying model needs to be very fast. Any slower than p50 latency of 700ms and p95 of 1200ms will feel janky. Meanwhile, it’s common to see small requests on “fast” models that have over 5000ms of p95 latency 🫠 You need to send uncomfortably short time slices for inference. Err on the side of sending incomplete text rather than waiting for two-second pauses, and use context engineering to have the model heal any errors. Keep your context prefixes stable, so they can be well-cached. 90%+ of our input tokens are cached, and thus far faster (and cheaper) than if we were sending fresh context every request. Tokens are slow, and HTML is token-heavy. Realtime visuals-out needs to use efficient formats out of the LLM, which can then be displayed in a rich web or native view. GPT-Realtime-2 recently launched in the API with “GPT-5-class reasoning,” but is not in ChatGPT yet. And so far, Claude has no realtime multimodal model at all. ↩

0 views
Manuel Moreale 2 days ago

17 down, 27 more to go

Here we go again. Afternoon walk this time around. It’s almost 2pm, and I’m standing in the same parking spot where I got picked up last week. No breakfast in me, but I did have lunch before heading out. Compared to last week’s hike, this one’s gonna be way easier. We have a bit more than 20kms to walk, with roughly 650 meters of ascent and 1300 of descent. Gonna be fun. Before we begin, I’ll have to apologise for the terrible photos I took, especially of the churches. Been a weird walk, and there was also non-ideal lighting most of the day and, I don’t know, I guess I was not very inspired today? I’ll hopefully do better next time around. Ok, down the mountain we go. Compared to last week, today’s a lot cooler, and there’s a gentle breeze. Perfect conditions to walk down a mountain and into the forest. The first part is a lot steeper than I thought. I did consider walking the whole loop in reverse, and this part would not be fun. I’m having a hard time going down, I can’t imagine going up from here, especially after a long walk. Thankfully, the trail becomes a lot easier to walk after that initial steep part, and I’m now enjoying my time in the woods. There’s gonna be a lot of going in and out of the woods on this hike. Down a few steps and I’m about to emerge next to Montemaggiore , the last town you encounter on your way up to Mount Matajur. I saw these concrete stairs many times before, while driving up this road. Always wanted to walk this trail, and I’m glad I’m finally doing it. The trail goes through the buildings, neat! So many old and abandoned buildings. Makes me kinda sad. But I get it, life up here ain’t exactly easy, or practical. And on the other side? A big, and frankly quite ugly, Jesus. This is relatively modern, and I’ll be honest, I’m not a fan. The trail continues in and around the town, down a few sets of stairs, and through some overgrown grass. So far, this one’s the worst-maintained trail I have walked. But I can imagine that doing maintenance is not exactly easy over here. So kudos to everyone who does it. I’m now back on one of those service roads, and it’s a very enjoyable walk. We’re slowly going down, the weather is lovely, and I’m very much enjoying my time outside. It’s not an incredibly varied walk so far, the scenery is mostly the same, but still, this is not a bad way to spend a Saturday afternoon. This small football field made me smile. I have no idea who comes up here to use it, but it’s fun to see it’s still there. I’d have loved to have something like this available to me as a kid. But now there’s nobody around, these valleys are slowly getting abandoned, which is sad but also understandable. Time to take a left turn, leave the service road behind me and go up into the woods again. I’m not too distant from the first of the three churches I’ll visit today. Was not expecting to find myself in this open area with a view of the valley underneath. This is a lovely spot, and there’s also a cabin nearby. Probably used by the hunters, like most of the cabins scattered around the valleys. Into the woods again, and I now need to leave the trail behind me because the first church is some 100 or so meters off the path. So down I go and to reach the church of Sant’Ulderico in Monte (15/44). The area around the church is quite neglected, and the overall scenery is really not the best. The only good thing about this one is that one of the windows was open, and I finally managed to take a decent picture of the inside of one of the churches. It’s very barebones, but the altar is nice. I still think it’s sad that these are all locked; they could become awesome shelters for the night. I should probably learn lock picking… Time to hike back up to where I left the trail earlier and keep moving on through the woods. Next stop is gonna be where the trail splits and the variant starts. I hate these variants. They make no sense, and this one in particular is almost as long as the main path, only to touch one more church, one that is not even all that nice or unique. But I guess there’s no point in complaining; nobody is forcing me to walk these trails after all. After another hour of uneventful walking into the woods, we have finally reached the location of the church of Santi Primo e Feliciano (16/44), which I didn’t even bother visit closely and only took this photo of it. The only nice thing about this church is the location, since it has a great view, but the building itself is incredibly uninspiring, especially because it has probably been restructured in modern times. There are a couple of pictures on the link above if you want to see more of it. That said, though, there are a couple of way more interesting things to see around here. Starting from this throwback sign. What a blast from the past. Do you even remember the time when not everyone had a phone, and you could use phones in public places to make phone calls? What a time! The other unusual sight is a Thai temple?!? That was very unexpected. I was aware that there’s a Buddhist one in the area (that I might actually see during a future walk), but knew nothing about this one. Neat! And right in front of it? A small chapel to remember the people who have died during the two World Wars. I told you these things are everywhere and that it’s impossible to forget what happened during those times if you live here. I’m about to start going back up, and my watch vibrates to alert me that there’s a “severe weather storm alert” which is always great to see when you’re half way through a long walk, and you’re in the middle of nowhere, a couple of hours from your car. I was contemplating stopping for a quick break, but the opposite happened: I started going! As a result, I took very few pictures of the next chunk of the walk but was mostly the same, going in and out of the woods. An hour later, I connected back with the main path and was close to the third and final church of this walk, the church of San Michele Arcangelo (17/44), which is by far the best one of the three I visited today. Very small and in an elevated position with a nice view of the valley. Like many others, it was reconstructed after the quakes of the sixteenth century, and you can clearly see that there are parts missing in the front. Still, I much prefer to see churches in this condition; at least they feel like they have a history behind them. Almost 4 hours in, still 7 kms left to walk, which means there’s no time to waste. I leave the church behind me, go through the small village, into the woods, and some 20 or so minutes later, I’m back on a paved road. My legs would love to go right and downhill, but I need to go left and uphill, the direction our grandparents used to take to go to school back in the day. But I’m quite happy for this because I get the chance to see a church I've always wanted to visit. That’s the church of Sant'Andrea Apostolo and every time I drive up to Mount Matajur, I can see it from my car. Has this very characteristic twisty road going up to it from the small village underneath and I always wanted to drive there. And I have to say, the location is very nice. Living up here must be a nightmare because there’s only one way down, and the road is very narrow. Plus, the closest anything must be 30 to 40 minutes away by car. But if you’re looking for peace and quiet, this is the place for you. Another point scored by team Mary on my way out of the town. There’s less than 5kms left now, I’m starting to feel a bit tired, my feet hurt, I need better shoes, I want to take a quick break, but I also don’t want to stop because I know I’m only an hour or so from my car. And stopping at this point makes no sense. So into the forest I go again for the final stretch of this walk. Found a bunch of sheep chilling in the forest right at the end of the walk. These animals are so fun. If I had the space, I’d totally get a few, just to see them play with the crazy dog I have. I wonder what he would do. Maybe one day I’ll find out. Final descent into the forest, couple of turns, and here we are, back at the parking spot where I left my car some 5 hours ago. Thankfully, it’s still there because walking home from here would not be fun. Doable, sure. But not fun. So far, my least favourite walk and the churches were mostly uninspiring, but hey, that’s part of the fun. Next up, we have another long descent, but I very much look forward to doing the walk after that, number 6, since that has the potential to be the most tiring yet fun and interesting walk of the entire series. I’ll definitely need to buy a better pair of shoes by then. There's a new folder on the shared Drive folder with all the pictures I took on the walk. And yes, I have moved from iCloud to Drive because apparently iCloud doesn't like huge albums. And there's also the link to the data recorded by my watch , if you want to get more info on the hike itself. You love the outdoors and RSS. You're one of the special ones.

0 views