Latest Posts (20 found)

Raspberry Pi locks down Pi 5 RAM upgrades in firmware

Raspberry Pi added a feature in their firmware that restricts users from swapping RAM chips , sometimes even RAM chips of the same capacity from other Raspberry Pi boards. Apparently there were people buying cheap 1 or 2 gig Pi 5s, soldering in some cheap and sometimes unreliable 8 gig RAM chips, and selling them as new 8 gig Pi 5s . Now I totally understand where Raspberry Pi's coming from. They don't wanna support Pis being sold like this, because flaky RAM and dodgy resellers are a huge problem. Especially with how profitable can be in the current AI bubble.

0 views

Frontier Overhangs

There has been, over the last week, what I think is a healthy debate about the philosophy and psychology that undergirds the views of meaningful segments of the AI community, particularly those obsessed with doomsday scenarios. It is, in the end, difficult to reason with a philosophy that grants equivalent moral weight to not just all beings — human or not — who exist today, but who may ever exist in the future; this tilts the scales in such an absurd fashion towards safetyism that innovation is impossible and freedom is intolerable. Worse, it taps into the psychology of religion, where dissent is not brooked and questioning the premise is heresy. I guess that makes me a heretic then: I reject the premise in favor of doubt in our ability to foresee the future, combined with faith in humanity figuring things out along the way. If that leads to the most fantastical doomsday scenario, then I think the State of New Hampshire said it best : I’m referring, of course, to the question of Effective Altruism and the extent to which it is intermingled with Anthropic and CEO Dario Amodei’s insistence that We Must Pace the Frontier . I expanded on my objections to some of the philosophical implications in the last | two episodes of Sharp Tech , but Stratechery is a site about strategy and technology, and those angles deserve examination as well. Three months ago I explained in Anthropic’s Safety Superpower how the company’s genuine belief in its safety rhetoric conveniently gave it license to pursue extraordinary goals that aligned with its business interests, including aggressive attempts to disintermediate software, collect sacrosanct customer data, and secretly sabotage would-be competitors. This analysis is in a similar vein but from the opposite direction: “Pacing the Frontier” is framed as — and I believe motivated by — a concern about safety, but it also happens to address several distinct problems faced by the frontier labs. These problems take the form of overhangs that have formed by virtue of how rapidly models are improving; slowing model improvement would reduce the overhangs. It was six months ago that I wrote Agents Over Bubbles , where I argued that the agentic paradigm, which kicked off with the release of Opus 4.5 in late November 2025, was so incredibly capable and so incredibly token hungry that we were not in an infrastructure bubble: we really do need all of the compute that is being built. I do, as a matter of my job, talk about things that I do not necessarily experience personally; the canonical example is my long-running analysis of and advocacy for advertising as a business model, despite the fact I run a subscription business. I mention this because I developed this take on agentic AI before I dove headfirst into agentic coding for myself, and just as well: I have been so taken by the possibilities of making software for myself that I have started multiple new projects over the past few months, and I’ve even finished a few of them! It’s thrilling, and the possibilities seem endless. Needless to say, I believe this more than ever. At the same time, there is one part of that Article that I’ve wavered on, and that is the importance of model company harnesses: Specifically, I noted above that what made Opus 4.5 compelling was not the model release itself, but changes to the Claude Code harness that made it suddenly dramatically more useful. What this means is that model performance isn’t the only thing that matters: the integration between model and harness is where true agent differentiation is found. This is a very big deal when it comes to figuring out the future structure of the AI industry and where profits will flow, because profits flow away from modular parts of the value chain — which are commoditized — and flow towards integrated parts of the value chain, which are differentiated…It follows, then, that if agents require integration between model and harness, that the companies building that integration — specifically Anthropic and OpenAI — are actually poised to be significantly more profitable than it might have seemed as recently as late last year. And, by the same token, companies who were betting on model commoditization may struggle to deliver competitive products. One of the projects I’ve undertaken over the last month or so actually entailed — at least in one of its permutations — building my own harness, and it’s doable! It also is very difficult, at least with my level of agent-mediated capability; that noted, my go-to example in that Article about how much harness-model integration matters was Microsoft anchoring its new E7 enterprise offering around Claude Cowork, but CEO Satya Nadella broke the news in a Stratechery Interview that that was only a temporary state of affairs: We’re using the same harness that we use in GitHub and the same thing in security, too. So we have the same harness that’s a multi-model harness in which we will rotate through — obviously MAI by default gets trained in our harness, but we will have GPT, we will have Anthropic in there and any open weight model. We will allow anyone to take any of the models they fine-tune or build. In fact, they can take an open weight model from Fireworks, tune it, put it into Copilot, no problem. It took a while for Nadella’s claims to reflect shipping reality, but sure enough you can now choose a model for Copilot Cowork ; it will be up to end users to determine how competitive Microsoft’s harness is with Claude’s, but clearly the harness and the model can be different things. This is actually a more meaningful development than it might seem, for reasons that go back to the theory of integration and modularity put forward by the late Clayton Christensen; from The Innovator’s Solution : The left side of figure 5-1 indicates that when there is a performance gap — when product functionality and reliability are not yet good enough to address the needs of customers in a given tier of the market — companies must compete by making the best possible products. In the race to do this, firms that build their products around proprietary, interdependent architectures enjoy an important competitive advantage against competitors whose product architectures are modular, because the standardization inherent in modularity takes too many degrees of design freedom away from engineers, and they cannot optimize performance… Once their requirements for functionality and reliability have been met, customers begin to redefine what is not good enough. What becomes not good enough is that customers can’t get exactly what they want exactly when they need it, as conveniently as possible. Customers become willing to pay premium prices for improved performance along this new trajectory of innovation in speed, convenience, and customization. When this happens, we say that the basis of competition in a tier of the market has changed. The pressure of competing along this new trajectory of improvement forces a gradual evolution in product architecture, as depicted in figure 5-1 — away from the interdependent, proprietary architectures that had the advantage in the not-good-enough era toward modular designs in the era of performance surplus. Modular architectures help companies to compete on the dimensions that matter in the lower-right portions of the disruption diagram. Companies can introduce new products faster because they can upgrade individual subsystems without having to redesign everything. Although standard interfaces invariably force compromise in system performance, firms have the slack to trade away some performance with these customers because functionality is more than good enough. One of my go-to examples in Anthropic’s Safety Superpower was the company’s decision to predicate Fable usage on Anthropic holding onto all customer data for at least a month; this was a big deal, and I argued at the time that Anthropic was making a bet that its models were good enough to convince enterprises to give up on zero data retention: It’s pretty significant, I think, that Anthropic is declaring that not retaining data is no longer an option, at least if you want access to their best models. Yes, today, that retention is for safety purposes only, and not for training; it’s plausible, however, that Anthropic’s lead becomes so significant that they quietly announce that they are going to train on that data as well, and companies will feel they have no choice but to go along. That additional training data, of course, will only further increase Anthropic’s lead, and all of this will be justified because Anthropic has already clearly decided they are the only ones who can be trusted to be in charge. In fact, Fable wasn’t good enough: customers pushed back, and Fable usage stayed relatively low ; when Fable 5.1 was released, the Anthropic-gets-to-keep-your-data provision was gone . This is evidence of Christensen’s theory in action: customers demonstrated the willingness to base their model-choice decision on something other than pure performance, namely, data retention policies. This doesn’t, in and of itself, suggest that new model capabilities aren’t desired; it does, however, suggest that current model capabilities are “good enough” for customers to not do whatever is necessary to get access to the cutting edge, which reduces the value of the cutting edge to its proprietors, and gives credence to the strategy of Microsoft and others focused on separating harness and model. Pure capability no longer translates directly into a moat. The modularization of models and harness explains why the frontier labs have what I called an economic imperative to own end user touchpoints; again from Anthropic’s Safety Superpower : It has long been clear to me that the frontier labs have the economic imperative to move closer to the user. If you own the user touchpoint, then you have meaningful lock-in, and the best way to own the user touchpoint is to be the canvas for everything they need to do. This, by extension, means that the frontier labs are on a collision course with software companies: it’s software that owns the user touchpoint, and it’s in the frontier labs’ long-term interest to not simply be a commodity input into software but to simply replace software outright. The key for the frontier labs, then, is to build those user touchpoints while they have superior capabilities. However, this is where Meta’s recent launch of Muse is a bearish signal. Muse is, by a significant margin, the best and most approachable personal agent product I have tried. Meta deserves a tremendous amount of credit for the product work they have put in, as well as the massive infrastructure commitment entailed in providing users with a very capable virtual machine for free. Oh, and of course they deserve credit for the Muse Spark model undergirding Muse. That noted, Muse Spark 1.3, the most advanced Meta model, is still not state-of-the-art, and that is the bearish signal: it is good enough for a very good personal agent product, and critically, a personal agent is much stickier than a chatbot. Once you have put all of your information into a personal agent and actually incorporated it into your day-to-day life, it is much more of a challenge to change to something else. This is in contrast to Codex/ChatGPT and Claude Code: yes, you may have developed your own set of skills and understanding of how each harness works, but at the end of the day the relevant artifacts (i.e. your code) are in GitHub, and it’s not that much of a lift to point a different agent and harness at those artifacts if the alternative is better and/or cheaper (or doesn’t want to keep all of your data). In short, model capability is good enough that compelling products — products that actually have moats — can now be built, and from a business perspective it would do Anthropic and OpenAI good to devote more of their resources to actually building such products. In July I wrote Who’s Afraid of Chinese Models , where I argued that nearly everyone’s understanding of the threat Chinese models posed to the frontier labs was overstated, and an artifact of demand exceeding supply. A world with sufficient compute is one where intelligence is a commodity, and in commodity markets margin comes from a superior cost structure, which I would expect the leading model providers to have, in part because they have a meaningful lead in scaling and can apply superior AI to their infrastructure. I wrote: All of this is to say that I think the reaction to Kimi and Chinese models generally is pretty over-blown, at least from an economic perspective. Right now there is a price umbrella that is downstream of the lack of compute; I highly doubt that Chinese models are cheaper to serve on a marginal cost basis, they just seem cheaper because Anthropic and OpenAI are so supply constrained that they are charging far more than they would if there were sufficient supply to meet the demand for intelligence. A price umbrella is another way to say price overhang. OpenAI and Anthropic charge high prices because they can: there is so much demand for their products at their current price levels that they can barely keep up. At the same time, a huge amount of OpenAI and Anthropic’s supply does not go towards inference, but rather training, reinforcement learning, and R&D: that is compute that does not go towards reducing their price overhang. If they slowed down progress they could re-allocate computing and fully capture the market. I reiterated above that I don’t think that there is a bubble in terms of compute availability, but I noted in Nvidia’s Risky Business that there might be a timing problem: This might not cost Nvidia anything in the end: if AI revenues truly take off, then the debt markets will open back up, and ultimately companies will go back to funding infrastructure investment through free cash flows. Right now, however, is the danger zone, as hyperscalers blow through the debt markets and Google at least starts to tap equity. To the extent Nvidia competes through novel funding mechanisms that, at the end of the day, draw on things like insurance floats and pension funds and other long-run liabilities that are the bread and butter of the asset managers the company is partnering with, the risk — unmarked, unlike equity — is considerably higher. That’s why I started with 1870 and Cooke’s ill-fated agreement with Northern Pacific. Yes, the upside the deal afforded Cooke was incredible, but it was incredible for a reason: it was very risky, and pioneering new funding mechanisms only served to spread the pain when it all blew up. It’s one thing to spend all of your free cash flow; it’s another thing to tap the debt markets. And, beyond that, it’s a completely new nerve-racking thing to bring safety-seeking assets to bear. AI better deliver before it’s too late. Anthropic is telling investors that it is profitable, but that comes with a big caveat; from the Financial Times : Anthropic has told its backers it will be profitable this quarter, as it moves to allay investor concerns about the aggressive cash burn of frontier AI companies ahead of its blockbuster initial public offering. The company has told a small group of shareholders that its adjusted operating income will be positive for the second consecutive quarter, according to multiple people with knowledge of the matter. The measure strips out costs including stock-based compensation. Anthropic’s gross margins are above 80 per cent before accounting for revenue shared with distribution partners, including Amazon, and the cost of training its models, according to two of the people. Excluding stock-based compensation is a pretty big caveat, but to be fair, the concern in terms of a capital overhang is cash; the bigger issue is the exclusion of training costs, which are massive (and which, in a true depiction of gross margins, would count as depreciation). That is the part that needs to be covered by revenues before the world runs out of capital, which is to say that Anthropic would be fine if only they didn’t have to pay for training! As it stands, both Anthropic and OpenAI and the hyperscalers and neoclouds need AI revenue to increase dramatically; there is a limit to available capital, and finding that limit will end badly for everyone depending on outside capital to fund future buildouts — even if it by no means would mean the end of AI. I made pretty clear at the beginning that I fundamentally disagree with the framework that many in the AI safety movement operate under; that doesn’t mean I don’t think that AI safety is a serious issue, or that there aren’t already real risks. Indeed, one of the implications of there being a capability overhang is that cybersecurity risks are very real, and are going to be a massive challenge in the next few years. From Autonomy and Innovation : The expected value for a hacker’s automated attack is always positive. If the offensive agent finds a vulnerability and creates an exploit, and that exploit fails or is itself buggy, then nothing has changed about the status quo: the exploit doesn’t work (or, perversely, makes the original vulnerability larger by virtue of its own bugs); if the agent executes the exploit perfectly, meanwhile, the attacker has gained access to the system. The attack only needs to work once for the entire endeavor to have a positive payoff. The challenge for the defender, on the other hand, is that they need to keep the software in question working correctly, and not make the situation worse. This means that any automation has a negative expected value: successful automated vulnerability discovery and patching preserves the status quo, i.e. the software is not hacked. However, any unsuccessful patches make the situation worse, either by breaking the software or by introducing new vulnerabilities. The agent only needs to fail once for the entire endeavor to have a negative payoff. This is the dynamic that leads to the exact situation Dalton describes, where offensive actors are fully automated while defensive systems, even if they use AI, will be incentivized to keep a human in the loop, and no human in the loop will be able to keep up with fully automated agents. Truly effective defense will mean truly trusting agents to act autonomously, but most companies won’t do that until they are forced to by regular and unremitting hacks by fully autonomous attackers. First, it’s worth pointing out that this risk is not alignment risk, at least as that term was traditionally defined: a model being directed to do bad things is aligned; suggesting that models ought to know what is good or bad is an entirely different consideration, and I think it is very problematic that these questions have been conflated. The fact of the matter is that LLMs are, if anything, too obsequious; there simply isn’t any evidence of LLMs having a will or operating with malevolence. Second, arguing against progress because of cyber risk was relevant before the agentic paradigm; at this point the genie is out of the bottle — and open weights models capable of attacks are already here. Third, this reality actually makes the case for pushing the frontier, not pacing it. The capability overhang is entirely on the offensive side: it’s defenders that need models that are not only good enough to mount a defense, but to do so in an entirely automated way that doesn’t bring down the infrastructure being attacked. We’re not there yet. In other words, when it comes to the tangible safety risk that exists today — bad actors using aligned LLMs to attack infrastructure — pacing the frontier actually increases the window in which bad things can happen. This isn’t, of course, what Amodei and the doomers are talking about: they are worried about recursive self improvement enabling AI to improve itself, independent of human control, and I’m open to debating the risks that might result were there actually a tolerance for debate, instead of an insistence on acquiescence. And, of course, all of the frontier labs are free to pace their own progress. That they won’t is a reminder that this is personal: Anthropic exists because Amodei and his cofounders didn’t trust Sam Altman and OpenAI; I’m not sure it’s a coincidence the demand to pace the frontier came when the frontier was, for the first time in a while, set by OpenAI. Indeed, that’s probably the overhang that matters most of all: competition. Anthropic is fine with Anthropic being in the lead; anyone else requires government intervention. That there are safety arguments to be made that just so happen to align with their need for more time to build a moat is, I’m sure, but a sign from Silicon Valley’s newest god to its self-ordained priesthood.

1 views

Do you use :visited on links?

I've always made the attribute for hyperlinks look the same as links that haven't been visited, and it seems that it's the default behaviour across the web. I've never really given it much thought, until I actually used in anger. My feed reader of choice, Miniflux uses the attribute properly, making visited links purple. When reading posts from the hundreds of blogs I follow via RSS, I find it really useful to see if I've already visited a link within a post. So with that in mind, I've decided to change the CSS on this site slightly, and visited links are now purple. It's subtle, but obvious enough, I think: If you want to do something like this yourself, the CSS is very simple: Do you use the attribute on your blog? I feel like I don't see it used very often around the web. Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️ You can reply to this post by email , or leave a comment .

0 views
Unsung Today

Who undoes the undoers

Just as there is a ticking bomb built into cut/⌘X – if you cut something, and then cut something else again without a paste in between, you overwrite the clipboard without any way to bring it back – there is another one that awaits you when you use undo/⌘Z. Here’s a typical undo chain, illustrated using Photoshop’s classic interface. You can do things, then undo into the past with ⌘Z to your heart’s content, then zipline back to the present via redo’s ⌘⇧Z: But if you go far into the undo history and do something then – accidentally or intentionally – poof! Your entire undo stack, no matter how precious and storied it was, evaporates in an instant: And it’s not even Back to the Future II rules where you can at least go back to the original separation moment and still get the better future for free… = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/who-undoes-the-undoers/3.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/who-undoes-the-undoers/3.1600w.avif" type="image/avif"> …no, the entire original undo stack is gone. The most popular solution for the cut problem, inasmuch as it really needs one, is a clipboard manager. Clipboard managers only move forward in time and record everything passing through the clipboard, so even if you override it with a careless cut or copy, you can ask the clipboard manager to resurrect the contents. The most popular solution for the undo problem is something conceptually very similar – version history. It also always marches forward. Do something new? You’ll see a new version history entry. Undo it? New version history entry. Redo? New version history entry. Both the clipboard manager and version history are like paper ledgers, hostile to erasers and shredders, addicted to additivity. (Mixing both universes, Figma’s version history will allow you to copy something from its past entry. But, naturally, you won’t be able to cut from it.) I like this conceptual distinction, and you can see it in places outside of undo, too. Any browser has a tactical back/​forward button staring you in the face, and a strategic history log hiding deeper inside. Linux offers up/​down arrow keys for tactical recall, and for the ledger: It all feels like the correct proportionality – the simple thing comes with a quick UI, the heavier thing with an interface that matches its heaviness. This is why I got a bit nervous hearing about persistent undo , because undo is meant to be more like a fruit fly, like stockpiling things on your undersized cafeteria tray, knowing the journey to the table won’t last very long. Undo’s interface is not compatible with longevity. But even for version history, the devil’s in the execution. Many tools don’t offer version history, and others add to it only at seemingly random intervals. Chrome’s back/​forward buttons are wonderful, but its history UI is a hot mess: slow, and with only an infinite scroll when it comes to exploration. Figma’s version history doesn’t make it as clear as it could (sorry, my bad, I never got around to fixing it) that restoring an older entry is not rewinding back to it like undo, but using ledger rules – so it might not feel as safe in use: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/who-undoes-the-undoers/5.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/who-undoes-the-undoers/5.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/who-undoes-the-undoers/6.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/who-undoes-the-undoers/6.1600w.avif" type="image/avif"> But I also wanted to go back to Photoshop and show you something interesting. One of the history settings offers “non-linear history”: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/who-undoes-the-undoers/7.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/who-undoes-the-undoers/7.1600w.avif" type="image/avif"> Turn it on, and a fascinating thing happens: There is no poof. Undo behaves more like a ledger, always marching forward: It is an interesting idea. In practice, it’s confusing – time is not meant to work this way. But I feel this was really close to a nice solution that could be enabled for everyone: preserve the discarded branch, but keep it off of ⌘Z and only show it in the visual UI so you can get back to it this way, perhaps presenting it slightly off the main axis, perhaps, I don’t know, looking something like this: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/who-undoes-the-undoers/9.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/who-undoes-the-undoers/9.1600w.avif" type="image/avif"> (Okay, technically the future collapse is *exactly* like Back To The Future II, but given you’re the only actor in the universe, you still have to recreate the future all by yourself. See, now I’m starting to sound like Primer.)

0 views
Xe Iaso Today

This is why we play

Lately I've been playing classic World of Warcraft to get a feel for it and see if I like it before I try and go head-first into WoW Forever fairly blind with some friends. People have told me that World of Warcraft is good, but I haven't personally played it (or really any MMO outside of Final Fantasy 14). I've wanted to see for myself, so I dug in. I've been leveling an undead warlock and recently I've gotten my way to The Barrens. My goal was to kill some planestriders and collect their beaks as proof of my kills so that the population can get back under control or whatever. I wandered around and found another player also on that quest and waved to them. He was a gnome warlock named Borton and waved at me when I walked over. I waved back and invited him to a party. We walked around the area and started spreading our aggro to farm the planestriders and grab their drops. After a few kills he stopped for a second and said "this is why we play". I was taken a bit aback by this. It felt out of nowhere but also felt like one of the more human encounters I've had with people in a video game in a long time. One of the great parts about MMOs is that you end up having a lot of these itinerant bits of community like this. You both get a quest from an NPC asking you to go and farm some drops and then this sends you all out into the world to naturally do it together. These conversations and liminal bits of community end up adding up into the greater experiences and really giving you the flavour of the game's vibe. You do it together for the fun of the game. After a while we finished our farming, got all the planestrider beaks, commiserated about the drop tables, and decided to just sit down on a nearby hill and take a screenshot because it just felt right. Two players sitting in golden fields with a backdrop of mountains and a blue sky enjoying the moment together wordlessly. This has really gotten me thinking about what I really want to get out of games and why I play them. I think I've been doing it wrong. At some level the “high end” content of online games like Final Fantasy 14 or Retail World of Warcraft looks endless. There’s intricate dances of choreography as you and your friends puzzle your way through each boss mechanic towards victory. Hell, games like Final Fantasy 14 have their fights defined by the little call->response pairs as the boss telegraphs things and you react to it in concert. Not to mention the feeling of utter serotonin that comes from figuring it out and winning. One of the main problems with this is that the “high end” raids in this game tend to be a mile wide in theory but practically an inch deep. Don’t get me wrong, even as far back as a decade ago there’s still encounters that are actually hard (eg: XIV’s ultimate raids, I'm personally at Quickmarch Trio in UCOB if you have the right brainworms to know what that means), but as the fights get older there’s a sharp dropoff in the number of people that actually want to run them. This ends up with entire subsystems of the game (Deep Dungeons, Bozja before Shadowbringers went into the free trial, etc) becoming “dead content” because if you queue for them, nobody shows up. If you put up an entry for them in Party Finder, nobody will join you unless you set aside time to wait for hours. You end up with modes where you're encouraged to do it in a group being bereft of people so you're "forced" to figure it out on your own. As a result everyone is funneled into the high end and trying to min-max it as much as possible to squeeze all the game they can out as fast as they can before “everyone else” gets what they want out of it and moves on. The world becomes a theme park where only the newest rides have the most people there and getting a group for anything else becomes a slog in party finder or needing you to seek out people that focus on that thing and nothing else. This also means that if you’re “slow” or have to take a break during the small sliver when content is “current”, you’re going to be stuck "behind" on it for a long time without significant effort to find a way around it. It really makes you wonder what the point of it all is if you can’t find anyone to do it. Worse, when you're trying to find a group to do it regularly (a "static" group), they look at how you did on previous raid tiers as a way to vet if you're a "shitter" or not. The records of your ultimate achievements of an entire raid tier, or the relic weapons for an entire expansion just end up becoming things you can do if you want that give you a shiny skin for your weapons to coordinate with an outfit that looks better. Maybe in edge cases those stats will be better for complicated maths reasons. All that effort you put into them is just ultimately "wasted" when the next ride comes out, all the stats get reset, and everyone moves on to wait in line for the next thing. All of your gear you spent weeks grinding for is reduced to sticks that increase the statistics correlated to aspects of your character that make the funny numbers go up so you can kill the boss faster to move on to the next thing. Maybe this is just something endemic to the theme park design philosophy where you’re given a goal by the developers and a series of actions that really boil down to TODO items that are the barrier from you and that thing you actually want (do these quests, fight these normal raid bosses, beat the savage versions of those bosses, beat the ultimate boss, get the shiny weapons, and finally look cool afk-ing in Limsa Lominsa). Maybe this is why people end up seeing things like the overworld as the barrier to the rides instead of an integral part of the experience. Maybe this is the pressure that makes people want to have flying mounts or other ways to "skip the grind". I haven't really touched Death Stranding since I did my review on it way back in 2019 . It's always had a special place in my heart though, it's kind of a touching experience even though it's incredibly isolating at the same time. This game has two main characters: Sam "Porter" Bridges and the game world. The overworld's system of traversal is the protagonist as much as the actual protagonist is. Sam "Porter" Bridges looking out past the hill he just climbed and seeing an upside-down rainbow. God sent the rainbow as a promise to mankind that he wouldn't try to destroy them again, and this rainbow is upside down after mankind's near destruction. Honestly I think one of the best features of Death Stranding is the camera mode. At any point you can hit a button (on the Steam Controller it's one of the back buttons by default) and the action stops so you can position the camera and just soak in the scenery. If you've never played Death Stranding before, I highly suggest you stop reading this post right now and buy it on whatever platform you buy games on. Worst case you can experience it on the iPhone as Hideo Kojima surely intended. [image or embed] @xeiaso.net September 20, 2026 at 12:02 PM If you actually do this on an iPhone, please do it with a controller. The touch controls are kinda awful. As you progress your way delivering packages to save America, every so often the camera will pull back, the game actions will become muted, and the normally contemplative and silent experience will suddenly be augmented by soft music. The protagonist of Death Stranding riding on a tricycle down to a port city with the Death Stranding logo overlaid. It turns this process of progression into a serene bit of negative space in a way that makes you really stop and think about the experience, the dramatis personae, and the kind of story that's trying to be conveyed. The world itself turns into this sense of wanderlust that makes you mentally pause and just process things. I don't really know if I'm doing this justice, in the moment it's an almost spiritual kind of connection between you and the overworld mediated by the soft sounds of Silent Poets' Asylum For The Feeling or Low Roar's Don't Be So Serious . The game makes you feel so small yet so connected to the world around you and there's just this overwhelming sense of equanimity. Just take a moment to watch the Don't Be So Serious video with Death Stranding gameplay underlaid. That's a snapshot of how the game literally plays out. It's these liminal bits of wanderlust combined with a story that only Kojima or Yoko Taro could come up with. This kind of overwhelming emotion is the kind of thing that made me fall in love with gaming back in the days when the most complicated games I'd play would be Banjo Kazooie, Super Mario 64, Super Mario Sunshine, Pikmin 2, Sonic Adventure 2, and other games of that vintage. At some level I kind of long for not knowing what's beyond the next hill and being forced to figure it out by just going there to find out. Hell, I also get this sense of romance in Breath of the Wild or Tears of the Kingdom when I just turn off all the UI elements and wander around wherever the wind takes me. Link in Breath of the Wild looking towards a sunset bathing a lake in twilight as the light refracts on the smooth stone surface he's standing on. Breath of the Wild is one of those games where you can just wander around the overworld for ages and still find new things. Combine it with flying and you just feel things as you go from hither to thither. Even with fast travel you still have to go there yourself . You have to climb every mountain. You have to cross the vast expanse of the desert. You have to figure out how to get a boat to the island with some awesome gear. And even months or years after you capture screenshots/video of the adventure, looking at them takes you back there and you just feel it again. You have the power and you have to pick what you do with it. There is no wrong way to do it. Want to fly over Gerudo Town after sunset knowing well and good that the moment you land you're gonna get kicked out of it for being a guy? Hell yeah, you can just DO IT. Link in Breath of the Wild gliding above Gerudo Town at sunset, just soaking in the vibes. This is making me think, fuck, am I actually getting what I want out of my time? In my race to min-max my way through "current" things so I don't get "behind" have I just lost that sense of wanderlust from the experience? I miss that feeling of just exploring the world for what it is and letting myself get there the long way. Have I been skipping over the real "good part" in my effort to be efficient in getting to what I thought the "good part" really was? Have I just been playing games the wrong way? I think I've been playing the games I'm immersing myself in incorrectly and I want to change that. I want to lose myself in the fantasy worlds. I want to let myself see the sights, hear the sounds, feel the breeze on my back, go fishing at what feels like the little corner of civilization just at the edge of the universe, and just let that sense of overwhelming wanderlust come back into my life. This is why we play, we play to let the fantasies of these fantasy worlds take charge and show you something that you didn't think you needed in your life yet you're all the richer for it. As World of Warcraft Forever comes out in November and Final Fantasy 14's Evercold expansion comes out next year, I'm going to just let those worlds enrapture me in their designs and lose myself to the wanderlust. I'll let The Fourth take me where it does and that's okay. It's absurd that the root of this revelation was a bot in a single-player MMO on my homelab picking a random chat message out of a list of dozens randomly triggered by a random overworld mob dying. Yeah, I forgot to mention, this all was caused by an experiment in playing with bots to teach me what it means to have a community. I was gonna lead this post with that fact but I think it all lands better if I just spill it all out at the end while I'm having the revelations like this. Given the utter absurdities of this modern era where we live in Clown World, I think it only makes sense that it would boil down to something like that. Honestly I think it's even more absurd that it took a proc of a proc of a bot saying things for me to figure out what was wrong with myself. I feel like I've just torn out a chunk of my soul and rended it unto the canvas for this. I don't really know why this helped me, but I hope this helps you too. Stay fresh out there, and if you're going to also venture forth to that millennial retirement home of a launch, maybe I'll see you in Azeroth in early November for World of Warcraft Forever. I'm gonna go in blind, you should too. We'll figure it all out together, one terrible loot table at a time.

0 views
Sean Goedecke Yesterday

System One models like Jev can train their own replacements

“System One” models like Jev are fast general classifiers. Classifiers have existed since 1958 , but they have to be trained for specific tasks: if you build a classifier to identify images of dogs, it can’t be used to tell you if a streetlight is red, or if a letter is urgent. Like a LLM, Jev can be prompted for a wide variety of tasks, from sorting email to playing Doom . I think models like this are going to be important. There are many tasks that a LLM could do in theory but are too slow and expensive in practice (for instance, reading each new message in Slack 1 and deciding whether to notify you or not). While you could train a specific classifier for these tasks, there are two main problems with that: Jev obviously solves the first problem. Any engineering team can plug in a System One model with a prompt like “Based on {list of criteria}, should the user be notified about this message?” But I think it solves the second problem too. For serious work, a specific hand-built classifier will always be cheaper and faster than Jev. Generic classifiers have to encode knowledge of all kinds of irrelevant things in their weights, so they can address lots of different tasks. That makes them larger, slower, and more expensive to run. Fortunately, it is going to be surprisingly easy to replace a Jev instance with a hand-built classifier. Once you’re satisfied with how your Jev classifier is performing — presumably you’ve spent days tweaking the prompt — you can trivially collect its input and output data. In the Slack notifier case, that’d be the Slack message (plus any context) and the ultimate decision to notify or not. Once you’ve saved enough data, you’ll be able to train your own classifier on that data 2 . It won’t be a general classifier like Jev, but it should do well on the specific task and be much faster. Of course it’ll require some ML expertise, but it should be easier to develop (or rent) that expertise once you’ve validated that the feature is worth building. In other words, because Jev has to be prompted for specific tasks, it should be easy to distil any successful Jev usage into a specific classifier. If System One models take off — and I hope they do — I expect this to be a common pattern. As I write this, I’m imagining ways you could poll and batch to do this with LLMs. Substitute “instantly notify” or some higher-volume event source if you’d prefer a different example. You could annotate a bunch of data with LLMs already, without using Jev, but this is a pretty expensive step to take when you aren’t sure the feature is going to work. Despite being a well-understood ML problem, training a bespoke classifier is outside of the skillset of most ordinary engineering teams Training a classifier requires assembling a large dataset As I write this, I’m imagining ways you could poll and batch to do this with LLMs. Substitute “instantly notify” or some higher-volume event source if you’d prefer a different example. ↩ You could annotate a bunch of data with LLMs already, without using Jev, but this is a pretty expensive step to take when you aren’t sure the feature is going to work. ↩

0 views
Sean Goedecke Yesterday

Grit your teeth and ship it

Being good at building and being good at shipping are two separate skills. In the short term, they’re actually countervailing: if you have a gift for building, you’re likely to be worse at shipping. Ira Glass has a classic quote about this. All of us who do creative work, we get into it because we have good taste. But there is this gap. For the first couple years you make stuff, it’s just not that good. It’s trying to be good, it has potential, but it’s not. But your taste, the thing that got you into the game, is still killer. And your taste is why your work disappoints you. The only way around this is to grit your teeth and ship it . You have to force yourself to publish things you’ve made even when you think they’re crap. Gifted programmers have a nearly pathological desire to build elegant, correct, neat systems. That’s what motivates them to learn the arcane details of their languages, or to spend time polishing and refactoring over and over again. But it’s also what makes them reluctant to ship. Any flaws in the software bother them on an emotional level. If they ship with those flaws, they feel like people will think they weren’t paying enough attention to notice them, or that they weren’t good enough to fix them. This is annoying when you’re writing software on your own, but it’s completely fatal when you’re working in a tech company. Any large software system is covered in flaws, whether due to time pressure, relative inexperience , wicked features , or a hundred other reasons. Working with it is a process of compromise: of finding the best possible solution given the quirks and foibles of the codebase. In fact, since the most important thing in large codebases is consistency , the right thing to do is sometimes to duplicate flaws, assuming they’re not catastrophic. Gifted programmers often freeze up. I’ve often seen them retreat to smaller domains where they can safely make the code “correct”: tweaking dev-environment setup, or refactoring tests. Sometimes they just do nothing, and spin in shame and guilt (plus the compounding shame of not achieving anything) until they implode and quit. If they had worse taste, they wouldn’t be as good at programming, but they’d be a lot more useful. You can typically improve a bad diff with time and effort. You can’t improve no diff. I have a sensitive eye for awkward sentences and uneven prose. That can make writing an unpleasant process: I know what I’m trying to say, but I can’t seem to say it in a way that’s as clear and as elegant as I know is possible. More than half the time I finish drafting a blog post, I look at the post and don’t think it’s very good. But I (mostly) grit my teeth and publish it anyway, because you have to bias towards shipping . Like any skill, shipping gets easier the more you practice it. If I don’t publish a blog post for a month, I always feel like the next draft is too poorly-written or uninteresting to put out there. But when I’m publishing a post per day, I typically feel great about each draft. When I go back and read my old posts, I can’t tell which ones I felt good about and which ones I felt bad about. There’s no correlation between that and the posts that become popular . Here are some posts I didn’t like as I was writing them but that resonated with my audience: Here are some posts I thought were pretty good but that didn’t find popularity: You just can’t predict what people will find interesting or useful. Producing a high volume of work thus gives much better yield than a small amount of highly-polished work. It can be disheartening to realize that some of your most casual, throwaway work will be more successful than the work you slaved over 1 . Specifically, it’s disheartening because it means realizing you don’t have control over your own success. You can’t produce something successful by focusing on a single piece until you’re satisfied it’s great. Instead, you just have to do a lot of things and see what sticks. You have to be momentum-based , not outcome-based. In other words, you have to grit your teeth and ship it . One common reason to write less is getting overly precious about your ideas. If you think you’ve got a really compelling concept, you don’t want to “waste it” on a poorly-written story. But in fact you can just write about the same thing over and over until you get it right! I have written like thirty blog posts about shipping (this is one of them), or about how tech companies work, or about how internal emotional regulation is as important as technical ability. I expect to continue writing and thinking about these ideas for as long as I find them interesting. Anthony Burgess famously claimed to have “knocked off” A Clockwork Orange in three weeks, and Arthur Conan Doyle considered his largely-forgotten historical novel Sir Nigel to be far better than his Sherlock Holmes stories. Do the simplest thing that could possibly work Software engineering may no longer be a lifetime career Software engineers should be a little bit cynical Weak engineering managers Paths through the space of all possible solutions Trying to impress people you don’t respect Anthony Burgess famously claimed to have “knocked off” A Clockwork Orange in three weeks, and Arthur Conan Doyle considered his largely-forgotten historical novel Sir Nigel to be far better than his Sherlock Holmes stories. ↩

0 views
Kev Quirk 2 days ago

2026-09-19 22:28: Watched Forrest Gump for the first time in 20 odd years this evening. Watching it...

Watched Forrest Gump for the first time in 20 odd years this evening. Watching it again with an adult brain...Jenny is a real bitch! Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️ You can reply to this post by email , or leave a comment .

0 views

The AI “Game Over” Kickstarter

I’m advising this new Kickstarter that you should check out if you care about AI risks and regulation. My AI posts over the last couple of years have advocated for taking AI risks seriously by enacting strong AI regulation, especially to mitigate the potential of significant job market disruption. If that resonates with you, then this project should too. It will create a microsite game titled GAME OVER to help people better understand AI risks. I’ve been advising the parent organization, School of Thought , for over a decade, who are focused generally on increasing critical thinking in society and have a particular knack for making viral educational microsites. Most recently they made a similar site on conspiracy theories , which you can use to get a sense of how it might be adapted for AI risks. And of course there is a lot more info on the Kickstarter page itself . (Their pages on biases and fallacies are also great.) This new project was obviously in the works well before the recent news cycle on AI existential risks. The School of Thought’s approach here offers the potential to inject critical thinking about AI risks into the mainstream, which is clearly needed right now. Please join me in supporting the project .

0 views
Unsung 2 days ago

“I love it because it’s a bit messy, and not everything lines up perfectly.”

Completely unrelated to software, but sometimes stepping outside is what’s needed to develop perspective and find creative solutions – this is Practical Engineering’s video about the many electrical plugs and sockets in America : = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/i-love-it-because-its-a-bit-messy-and-not-everything-lines-up-perfectly/yt1-play.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/i-love-it-because-its-a-bit-messy-and-not-everything-lines-up-perfectly/yt1-play.1600w.avif" type="image/avif"> There are a lot more socket kinds than I expected, and sprinkled in between are some useful observations about system design, change management, power users, backwards compatibility, and consistency vs. inconsistency – in my head, that last part puts this video right next to the previous post in my brain, even if they seem nothing alike. Also, that early video snippet from the 1920s? Jesus Christ. What a UI.

0 views

Notes on discrete-time Fourier series and transform

The following are my notes on discrete-time Fourier series (DTFS), as well as the discrete-time Fourier transform (DTFT). These topics serve as an important theoretical underpinning to the digital processing of signals by computers using the DFT (which will be covered in a future post). For discrete-time signals, we use the square bracket notation to denote samples: x[n] is the n-th sample of signal x . We’ll say that a discrete-time (just discrete from this point on, for brevity) signal is periodic with period N if: When talking about continuous-time Fourier series , we started with real trigonometric functions and later moved to complex exponentials. Here, we’ll just go ahead and start directly with (discrete) complex exponentials - converting between the two representations isn’t difficult and can be done as needed (Appendix C in this post demonstrates it). We’ll be dealing with the following family of signals [1] : These are discrete complex exponentials that are periodic with period N. w_0=\frac{2\pi}{N} is the angular frequency . As discussed in Appendix A, there are only N such distinct signals, since: We’ll want to consider the representation of an arbitrary N-periodic x[n] by a linear combination of \phi_k[n] : The notation k=\langle N\rangle means k runs over any sequence of N consecutive integers. Since there are only N distinct signals \phi_k , the order of summation doesn’t matter - as long as all of them are used. So it could go from 0 to N-1 , or from 1 to N , or from 2 to N+1 , and so on. All of these orders will enumerate all distinct \phi_k . Going back to our linear combination: This is the discrete-time Fourier series (DTFS) representation of x[n] and the coefficients a_k are the Fourier series coefficients. Note that there are no convergence issues as in the continuous case, because we’re dealing with a finite sum. To find the coefficients a_k , we’ll proceed in a way that’s somewhat similar to the continuous case. Multiply both sides of the equation above by e^{-ir(2\pi/N)n} and sum over N terms: Interchanging the order of summation on the right-hand side: By Appendix B, the inner sum on the right-hand side is equal to N when N\mid r-k and to 0 otherwise. Without loss of generality - since we iterate over N consecutive values - let’s just assume this happens in our sum when r=k (and therefore r-k=0 , which is an integer multiple of N ). So our equation becomes: To conclude, the Fourier decomposition of a periodic discrete signal x[n] into periodic complex exponentials is: Let’s revisit the triangular function t(x) from the post on Fourier series . Here, we’ll be using the following sampled version: The sampling is done with 12 samples per period of 4. The spacing between two samples is \Delta x=\frac{1}{3} . Another way to express it: Substituting this into the definition of t(x) , we get: We then do an odd extension [2] to the range n=[6..12) , and repeat it with period N=12 . Using considerations similar to the continuous time case , because our function is odd we just need a sine series here: The five terms correspond to the five pairs of nonzero-frequency indices; see Appendix C. And the coefficients are: We can run this sum over half the period, because the terms at and 12-n are equal (both t_d[n] and the sine change signs). Also, the terms at n=0 and n=6 vanish because t_d[0]=t_d[6]=0 : Looking at the values of t_d : We can similarly calculate all b_k until k=5 : The resulting Fourier series is therefore: You can use the following interactive plot to explore this approximation to the discrete triangle function t_d[n] : The dropdown box selects how many of the terms in the series shown above to plot. The orange crosses show where the series’ values at the integer indices are, and the orange line is interpolated to better visualize the sine waves being added. Note that when all the coefficients are used, the DTFS exactly reconstructs the input signal. In the post on the Fourier Transform we’ve seen how non-periodic signals can be represented in the frequency domain by taking the Fourier series and calculating them at the limit L\rightarrow\infty . Here, we’ll do something similar for discrete signals. Suppose we have a non-periodic discrete signal x[n] of finite duration (it’s zero outside a finite range of indices). Here’s a sample plot: The bottom half is x_N[n] - a periodic signal, one period ( N ) of which is equal to x[n] . We choose M large enough that x[n]=0 outside [-M,M] and set N=2M+1 . Since x_N is periodic, we can represent it with DTFS [3] : We’ll use the notation of angular frequency: Now the critical part; since x[n] is zero outside [-M,M] , extending the summation to all integers does not change its value: We’ll define the following continuous function with variable : Then at points w_k : The function X(w) is the discrete-time Fourier transform (DTFT) of x[n] . The inverse DTFT process reconstructs x[n] from X(w) , by substituting a_k back into the DTFS: By our definition of \Delta w , we have: Just like in the continuous case, we recognize the sum as a Riemann sum . Let M\rightarrow\infty . The spacing \Delta w tends to zero, and we can rewrite the sum as an integral: To conclude, the DTFT and inverse DTFT pair are: X(w) is a continuous, periodic function with period 2\pi , because: Therefore, it’s enough to run the integral on any interval of length 2\pi . The DTFS and DTFT are closely related. Starting with a finite-duration signal x[n] , we form a periodic signal by repeating a block of N samples containing it. Its DTFS coefficients are equally spaced, scaled samples of the DTFT: The relation is similar to the one between Fourier series and the Fourier transform in the continuous case. The DTFT also has useful properties similar to the continuous Fourier transform: linearity, time shifting, the convolution theorem etc, but we won’t spend time on them here. Discrete-time complex exponentials have the form e^{iw_0n} where w_0 is the angular frequency . The discrete nature of these functions leads to some interesting outcomes; for example, consider the exponential with angular frequency w_0+2\pi : Therefore, the exponential at w_0+2\pi is exactly the same as the exponential at w_0 . In considering discrete complex exponentials, we need only choose w_0 from a range of length 2\pi . Another interesting aspect of these functions concerns their periodicity. In order for e^{iw_0n} to be periodic with some positive integer period N , the following must hold: In other words: So w_0N itself must be an integral multiple of 2\pi . For some integer k : For a fixed positive integer N , let’s consider all complex exponentials for which N is a period: But earlier we’ve said that all complex exponentials with angular frequencies 2\pi apart are identical. This means that the set above consists of only N distinct exponentials. We can choose any starting k and get distinct signals with k , k+1 , k+2 and so on until k+N-1 . After that, they begin repeating: \phi_N[n]=\phi_0[n] and so on. All of this is very different from the continuous case, where t is a real number. The signals e^{iw_0t} and e^{i(w_0+2\pi)t} agree only at integer values of t , so they are distinct functions of t\in\mathbb{R} . Consequently, for a fixed positive period , the continuous-time exponentials e^{ik(2\pi/T)t} are distinct for every integer k , giving infinitely many distinct signals. Let’s consider the following discrete function, defined by a sum: We’ll want to consider two cases: (1) When k is an integer multiple of N : k=rN for some integer r (for example k=0 , k=N , k=-2N etc.) In this case, the sum becomes: Since both r and are integers, the exponent is an integer multiple of 2\pi i , so: (2) When k is not an integer multiple of N , let’s do a variable change p=n+1 : We can now use the finite sum formula for a geometric progression with the common ratio r=e^{i(2\pi/N)k} ; the sum is: Note that r\neq 1 because k is not an integer multiple of N . However: While these calculations demonstrate the sums from n=0 to N-1 , they work exactly the same for any N consecutive indices, because the summand is periodic in with period N . Therefore: Using the formula for DTFS developed earlier in the post: Recall that t_d[n] is odd over the full range n=[0..12) . Specifically, since the cosine is an even function, we have for any m : Therefore the cosine terms cancel out throughout the period; term 1 is the same as negative term 11, etc. We’re left with the sines: All coefficients are purely imaginary. For convenience, let’s write: Let’s turn back to the Fourier reconstruction formula: And pair up exponentials at k with ones at 12-k : Also, since t_d[n] are real, the conjugate of a_k is: So adding the paired exponentials with their coefficients and using Euler’s formula: We don’t include the terms at k=0 and k=6 , because a_0=a_6=0 (sine of an integral multiple of \pi ).

0 views
Unsung 2 days ago

CleanShot’s bulldozed settings

In a recent post , Jim Nielsen used the term “bulldozing of an interface”: I’ve found this to be true a lot as of late. Lots of tiny details that were meticulously crafted over years with specific rationales tied to real-world use cases, all completely bulldozed in a giant refactor. I liked that term and a description, but I didn’t expect I’ll put it to use so soon. Unfortunately, mere months after praising CleanShot’s settings , the new version 5 update bulldozed them into something much worse. Let me show you first. In the following screenshots, version 4 design is followed by its version 5 equivalent. Quick recording settings: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/1.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/2.1600w.avif" type="image/avif"> General: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/3.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/3.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/4.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/4.1600w.avif" type="image/avif"> Recording: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/5.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/5.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/6.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/6.1600w.avif" type="image/avif"> Advanced: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/7.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/7.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/8.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/cleanshots-bulldozed-settings/8.1600w.avif" type="image/avif"> The other panels follow the same pattern. (The screenshots are from macOS Sequoia, but I checked in Tahoe, and things are not materially different there.) I was taken aback by this – a feeling exacerbated by the fact that the quick settings on a dark background looked even worse – so I shared an early reaction with CleanShot’s support team, and asked how to downgrade to version 4, which luckily remains possible. The support team member said that they actually liked the previous settings themselves, but conveyed they shipped the redesign in order to feel more consistent with the operating system, and more modern. I followed up with a longer response, which I’m sharing below. I am hoping this can be valuable to others facing a similar situation in the future, or give some specific observations to latch onto – for me, it allowed to put in words the feelings I’ve had about the Ventura Settings redesign that were rattling in my brain since 2022: I don’t think you have to follow the OS if its own designers are making bad decisions – I gather it’s even our responsibility as designers not to – and we know they are bad, if only from how people reacted to the macOS Ventura System Settings redesign. Here are the problems I see that CleanShot 5 settings now inherit from Apple: It’s not too late to undo this. This reminds me of city planning in the 1970s , where enchanted by the notions of modernism we remade city downtowns to be all identical-looking, clad in concrete, and surrounded by freeways. We look at it with shame and regret today, realizing we made previously alive places basically inhospitable. You could still keep the modern left nav – that indeed didn’t age well, as screens are wider today – and perhaps left align the version 4 labels to make the gestalt hold better. It’s definitely more work, which I sympathize with; it’s hard when the operating system cedes its responsibilities to provide good design patterns. But you had something really wonderful before, crafted and signposted with care, both a great welcome mat for new CleanShot users and – important here more than for many other apps! – fantastic in repeated use. (I know this is kind of an intense reply and I hope it doesn’t arrive feeling like concentrated condescension. Part of it is that I am x-posting it to my blog, as I believe it might be helpful for other designers.) The two-pane settings layout was originally designed for the first iPhone with its 320px screen width. macOS Settings stretches it to 460px, and in your app you went with 550px. As a result, the settings panes start registering, gestalt-wise, as “left column first, right column second” rather than “first option first, second option second, etc.” This requires eyes to dart around a lot more, as the labels are disconnected from their controls. The shading and lines help, but they’re just a crutch – and they also reduce density. In version 4, your eyes could follow the solitary center spine with more ease. The second column is right-aligned, which makes visual processing harder – not just because it further separates the label from the control, but also right alignment is harder to process in a left-to-right language. (In the previous layout, sure, the labels were right aligned, but they were still near the common spine. Plus, the labels are short and simpler visually than Ventura-style right-aligned UI controls.) This also creates attendant problems, like Options… buttons being on the “wrong side,” or Options… and Choose… buttons needing to be in inconsistent positions. In version 5, every panel looks much more alike. This doesn’t feel like helpful consistency, as it makes it harder to recognize where you are. Version 4 had a nice variety of silhouettes that felt cohesive as a whole, but still allowed for shape coding to help you orient yourself. We’re all pattern matchers, and varying shapes enter our brains on a deeper level, freeing us from having to consciously process the environment (or even read labels) over and over again, slowing us down. Ventura’s settings design does not really allow for radio buttons and struggles with sliders, forcing pop-up buttons for every one-of-many option, which further reduces shape coding, but also is worse for orientation as you can’t see everything – if you just want to find an option like “Plain color” in Wallpaper, it’s no longer immediately visible. You might never, as a matter of fact, learn it’s there. CleanShot 4 really nicely knew when to choose radio buttons and when to reach for pop-up buttons, depending on the importance of the control. (A smaller, but similar argument could be made for subtabs and streamlined checkboxes, both used to a good effect in 4, but missing in 5.) The new layout is also less usable as you can no longer click on long labels next to switches to toggle them, which was possible with checkboxes. The pop-up buttons are more narrow, too. This means you have to be a lot more precise in clicking, which adds up over time. The previous layout had a nice consistent feeling of “things that are actionable and I can click on are white, everything else is gray.” It was yet another way that aided in scannability and orientation. In the new system, pull-down menus look like (inactive) labels. The switches themselves have visibility and contrast problems. This might be particularly prominent in my setup with graphite as the accent color, but I believe it’s not unique to that, as I continue seeing feedback from many people who are always confused about “reading” the switches, whose both states look similar to one another. (The checkbox’s shape doesn’t have that problem.)

0 views
ava's blog 2 days ago

internet safety for kids / a love letter to the internet

Content warning: Mention of suicide, grooming methods, child sexual abuse. In between all the social media bans and age-verification discussions, I think back to my online time as a child. My parents' household got internet when I was about 9 years old, and we had a family computer everyone used. At age 12, I got my own PC in my room. What the internet gave me was important and definitely shaped who I am today, for the better even. It offered me a way to journal that was inaccessible to my parent, who was always searching through all my stuff, reading my paper journals, and digging through my trash. Getting access to my PC, and then finding a specific website and logging in there was a big hurdle back then. 1 It gave me a way to connect with others who were also having problems. We could vent to each other about school issues, parental abuse, self-image and more. It was my form of therapy before I could access any care. It helped me gain perspective, feel understood and learn what is and isn't normal behavior from a parent. It was great that I could finally find others I could connect to and help them with their issues as well, when I was mostly a loner at school. Thanks to the internet, there were opportunities to socialize for me that real life couldn't give me - in chats, in forums, via blogging, early social media, or games. It also shaped my political views and values in ways that school or parents simply lacked. My parents aren't very politically literate or in any way academic. There were no intellectual discussions ever at my home. To be quite honest, there weren't any discussions aside from household-centered stuff. School is... school. Surface level, limited by the skills and views of each teacher, very centrist, very mellow, very exam-focused, and very local. Places like Tumblr opened up a whole world full of political discourse for me. I learned so much theory there, was exposed to a lot of discussions, both heated and respectful back-and-forth, walls of text with sources, and a much more of a global view. Following a discussion chain and seeing so many arguments and their proof, just to change my mind with the answer that follows, gave me more than any staged, weird discussion table at school could give, where no one even seriously held any of the views they were forced to read from a paper. I think without discussion culture online back then in forums or places like Tumblr, I wouldn't have learned to write the way I do, which both helped me in school as well as paved the way to write things like the tech utopia fantasy is over . On top of that, it made me a more empathetic and understanding person. I grew up with bigotry; thankfully, my parents weren't outright or proudly racist or xenophobic, but still unknowingly kept using terms that are actually slurs, or said things that were well-meaning or with neutral intentions, but ultimately ignorant and offensive either way. They used to be homophobic, and always had something to point out about someone on TV or on the street; slutshaming, fatphobia, being ignorant of disabled people if it wasn't the stereotypical person in a wheelchair, never trying to understand where the other person might come from or that they have a different experience than them. They always uncritically reproduced some bullshit and saw the worst in people, or saw them as caricatures of themselves. Without the internet, I would have become like them, or stayed that way for far longer at least. The internet gave me a way to push back on these ideas as much as was safe for me to do so, or just keep quiet while having a more favorable and understanding view of people in my head. Slightly related to the former point, but it also helped me with my queerness. When I grew up (and where I grew up), queerness just wasn't discussed. Maybe it came up one day what a gay or lesbian person is, and that's it. It wasn't discussed in sex education, no one at any school I went to was out, we had no queer student couples, no teachers who were openly queer, not even a fellow student where it was known that their parents were queer. Nothing. It was like queer people theoretically existed, but it's irrelevant, or an adult thing, maybe a porn thing. Trans people were not discussed at all when I was growing up. While you can surely list some movies or shows from before 2008 that had some queer character, it weren't popular ones, or many. It wasn't like nowadays, where it feels like most shows or movies have a queer character or multiple, intentionally, with good writing, and not just to add drama, make fun of them or kill them off. Especially kids shows even! When I watched TV, no queer person was seen. Online, I could learn about different sexualities and gender identities without an adult person policing it, restricting or censoring it, deciding what is or isn't "valid", or deciding how "age appropriate" it is. I remember scrolling Autostraddle in 2010/2011 and onwards, which helped me a lot with coming to terms with being a lesbian. It also broadened my interests a lot! I got into games because other people invited me to play, or because I saw fanart or screenshots of the game that I liked. Sometimes I saw people all reading, watching or playing the same thing just after it released, liveblogging their experience, and it made me wanna get in on that and bond with people about it. Tumblr is the reason I got into Dragon Age and Mass Effect, for example, and I still love them today. Same with trying other hobbies, like photography, or 3D modeling, and digital drawing. Seeing people online do them not only made me aware they exist or is something I could do, but they were also encouraging others to try, and had helpful guides at hand or even made them. These are the top things on my mind when I think about how the internet shaped me positively. There are many, many more I could list. I want to acknowledge that the internet has changed since then, and there are new challenges that I never had to deal with. But it doesn't mean that I didn't have my fair share of problems that still exist today, and that are often used together with addiction and other issues to justify a ban. When I grew up with the internet, there were very few, basically no resources on how to help kids with it or how to prepare them for it. We were the trial generation, I guess. No one knew better, or knew of the potential dangers much. I remember that some time, it made the news that kids were groomed on the platform Knuddels , and that parents should make sure their kids stay away. What did this lead to? I was told Knuddels was a bad website, and I was forbidden from using it. That's it. And of course, to never give out my address or real name. My peers got the same short talk. The result was that Knuddels was very interesting to them because it was forbidden and dangerous. I didn't participate, but only because my child mind heard " The website is bad and dangerous. " and thought that if I went on it, the police would come to my house and arrest me, or some stranger would instantly know where I live and come to my house and kidnap me. What would have been better for my peers and me? An explanation of why this website is bad. What are groomers or pedophiles? What do they want to do to me? Why is that bad? What might they use or say to convince me to send pictures, or give out my address, or meet with me? When someone says these things to me, I should notify a trusted adult and stop responding. What can I do if I send something and regret it? What if they start blackmailing me with it? Know that you will not get in trouble for telling anyone what happened to you, even if you think it's your fault. Instead of having these conversations, parents and news chose the easy path and just designated a website the bad spot. This didn't save me from groomers everywhere else. There were the adult men who noticed I was vulnerable because I was extremely young (12-16) and abused by my parents, and listened to my problems, reassured me, played friend, just to slowly shift the conversation towards their own "problems". The lack of sex they had (with or without partner), and what they could do to get more sex, or how lonely they felt. They'd first discuss their sex life, and then pry about yours. Did you already masturbate? How did it feel? And as a very young girl feeling unloved and growing up oversexualized in our society, you slowly learn that sexualizing yourself and trying to be sexually available or interesting to people will earn you love, attention, and care, especially when you otherwise don't get it. And if the price for reassuring conversations with an older friend is that... you pay. And they always say they will feel better if you send them a picture. Just of your face at first. Then more. And if you said no, they'd act hurt. They'd either remind you that they listened to all your problems so you better do as they say else it's "unfair" and you were "just using them", or they outright threaten to kill themselves. This didn't only happen once. It happened with multiple men, different ages, in slightly different ways, and almost everyone I know has a similar story, especially when they are women. What I would have needed to hear as a child or teen in these cases, before any of it happened, would have been: Why is it so hard to have these conversations and teach children and teens that? Why do we once again try to paint with a broad brush about how this or that game or platform is bad, but we don't actually do everything in our power to demand that these platforms are improved not just for kids and teens, but for everyone? Why don't we still not put a lot of time and effort into helping kids and teens spot predators, scams, propaganda, manipulated content, ragebait, purposefully addictive content and the like? Why can we not teach them how to be responsible with porn and how to judge its content? How are we still not really discussing safe sexting when we know teens will do it? How are we still so behind on teaching them about privacy, data protection, and how their data will be used? We don't give children and teens enough competency, media literacy and knowledge to decide for themselves and truly understand the consequences, and then watch them bumble around cluelessly or be preyed on, and use that as an excuse to take away their agency and rights. Age changes absolutely nothing about these platforms or the risk of falling prey to someone or something. Becoming older doesn't automatically flip a switch and enables the knowledge on how to properly assess your screen time and your media habits or tastes and take the appropriate action. It doesn't automatically teach you when something is wrong and what to do. It doesn't immediately give you good media literacy. It doesn't just install good habits around online sexuality and porn. It doesn't safeguard you from emotionally manipulative content, effects of advertising, false promises of influencers, and how to spot unattainable beauty standards. It doesn't protect you from love scams or being blackmailed with nudes. If you are not taught about these things, and are shielded from the danger until you are 16-18, you will just make these experiences later, with absolutely no support. The same things that harm kids harm adults! The same stuff kids fall for, your grandma falls for too! Social media bans and severe age restrictions and verification enables everyone to shrug and throw their hands up as if they had no clue on how to help this. Platform owners can continue their platforms as before with no changes needed, which is great for them because things like engagement metrics, infinite scroll, ragebait, and the like keep the platform afloat and they don't have to adjust their predatory and unethical business model. Parents and schools are allowed to bury their heads in the sand, shifting blame between each other as both parties are too stressed, overwhelmed and have no time to deal with this. Giving into all of this with bans and handing over sensitive data to companies selling to data brokers is a declaration of bankruptcy of our willingness to raise children to be capable and responsible adults with the necessary freedoms and support. You are abandoning and neglecting your children. I read the Datenschutzberater , a magazine dedicated to data protection law in Germany. In the edition DSB-07-08/2026, in her article " Neue Anforderungen an den Kinderdatenschutz - Praxisfolgen aktueller Behördenpositionen ", author Anna-Lena Eswein explains the current state of child data protection law and uses a fictional example of a child-friendly app to illustrate them. One feature of this fictional app is: Specific presets for minor accounts. A private profile, the inability to be found via search or recommended profiles, comments and DMs are only possible with pre-approved contacts. Changes to these settings require a "conscious decision". The author doesn't write that, but I assume this decision needs to be made by the parent, or at least with parental approval. I think approaches like these are highly problematic! This restricts online interactions to merely real life connections, approved by their parents, exchanged in person. Likely just accounts by family members, some people from school, and of the club(s) the child is in, and that's it. That is not enough! Referencing back to what I wrote above about what the internet gave me, the ability to interact with people all over the world gave me so much. The option to seek out whomever I wanted, or be approached by people with similar interests, was important. I needed a space online where I could be visible to others, showcase me and my interests, explore how I wanted to act and present myself, and where I could talk about my problems removed from the watchful eye of parents or real life peers that didn't understand me. I had contact with much older adults in forums that was helpful, kind, respectful, informative and helped me grow, like another parental figure or an online aunt or uncle. I am still very grateful for them. If my mother would have had the option to control my online life like parents nowadays have, it would have shielded me so much from good and necessary online content and interactions, and would have purposefully prevented me from speaking about my abuse to others online. She would have been even more successful in separating myself from others and being able to gaslight me about her behavior and what is normal in a family. It would have reduced my online presence to a second channel for abuse and limited real life connections, plus maybe a feed (algorithmic or not) that merely makes me a silent spectator and consumer to whatever is on it (maybe even pre-approved, too). How are queer kids supposed to find each other like this, when not every area, every school, is safe in real life or where not everyone is visibly out? How are disabled or neurodivergent kids find each other, when they are often one of the only ones in their class or school, and want to speak to someone they can relate to? We can't make up for social contact with some TV shows or infographics or watching a YouTube video about it. How are teens supposed to learn about sexuality or politics or the genocide in Gaza when their feed is scrubbed clean and their parents will instantly find out if they recently searched "gay sex" in the app search? Everything will instantly be a shameful conversation brought up at the next dinner before the child is even ready to bring it up themselves. Yes, a setup like this during my time as a teen would have meant those men would have never found or contacted me. But it would have stolen far more from me; my safe space, my therapy, my online friends, my education and my interests. My negative online experiences were completely preventable without taking away the good, or running 24/7 surveillance on all my devices. It would have just been more effort, and would have required adults to talk to me, and treat me like an autonomous human being who can learn and make good decisions, instead of a sentient pet rock that doesn't have any rights. I would never, ever trade in the good to avoid the bad. I would have rather gone through the bad than miss out on the person the good parts made me. The bad has never been more preventable while still allowing kids and teens their own spaces and platforms for emotional support, to explore who they are, and learn more than their parents and school teach them. Without bans or age verification. It requires educational resources, time and willingness to sit down and discuss, humanizing children and teens and hearing them out, and holding platforms accountable for the bad they level against all of us , not just children. The sad reason the latter doesn't happen is because the EU has made itself so reliant on US tech that any real threat or consequences to US platforms has become a burden too great to bare. And they'd rather give the fascist US empire more money and install more surveillance and control over us all than actually give a fuck about your children. Children and teen's isolation and loss of resources, spaces and friendships is an okay price to pay for these fossils and their addiction to Microslop. Fuck them! Published 19 Sep, 2026 When I think about what tools parents have nowadays to control their child - live tracking, a report on everything the child did on a device, access to all accounts and DMs, a camera in the child's room... I get sick to my stomach. That tech was made for parents like mine, and there are reasons why they will die alone. ↩ When they see a picture of you and tell you you seem much older, or say the way you write is so mature for your age, it's not a compliment. They want you to feel flattered and like you are special for deserving adult attention, but they say it to hook you. They are also lying to themselves about how you don't "really count as a child" when it's total bullshit. No adult needs a child friend. No adult needs to cry on a child's shoulder. They have other adult friends and their own parents and other resources to help them out. They only say these things so you will feel bad for them and not cut contact, or do as they say. They use your sympathy and willingness to help against you. They will not kill themselves. They just threaten that so you comply. If you are not sure or concerned, call the police on them. When you take the pictures and videos they ask of you, or do things in front of a webcam in a video call, you are producing child sexual abuse material. That's not only illegal, but this will haunt you, and be traded between the perpetrators forever. When I think about what tools parents have nowadays to control their child - live tracking, a report on everything the child did on a device, access to all accounts and DMs, a camera in the child's room... I get sick to my stomach. That tech was made for parents like mine, and there are reasons why they will die alone. ↩

0 views
Karboosx 2 days ago

We still don't know what consciousness is

People keep saying LLMs are reaching AGI or consciousness, but it's hard to claim that when we don't even know what consciousness actually is. How can we measure something if we haven't defined it?

0 views
Brain Baking 2 days ago

KTConf 2026 Creative Coding Slides

Yesterday, I had the pleasure to give a talk for the local Kotlin community on creativity in software engineering and the impact generative AI has on our ability to be creative. KTConf took place in an iconic venue, the M museum in Leuven, so I felt obliged to include a slide about a painting. To my dismay, nobody in the room knew anything about art history or could identify the painting (Manet’s Bundle of Asparagus ). That allowed me to demonstrate you’ll likely find something like Manet’s painting very creative if some expert tells you it is. In the context of coding, the same concepts apply: you’ll need to have some technical background in order to judge whether something is creative—during both the process (the code) and the end product (the thing that hopefully makes your end users happy). Thus, technical knowledge is one of the prerequisites for being a creative programmer. The talk, entitled A Critique On AI-Assisted ‘Creative’ Programming , predictably included a summary of my book The Creative Programmer . Here’s the executive summary of the talk: Nobody will dispute that creativity is essential to being a successful programmer. With the rise of LLM systems, we lazy coders are even more allured to take the shortcut and by handing out the most mundane aspects of our everyday jobs. Yet what we do not know is that by doing so, we are also seriously hampering our happy, silly, and joyful side of programming, or in other words, the creative aspects of programming. In this talk, we’ll explore why AI-assisted tools are not beneficial but detrimental to our creative side—that very side that is sorely needed when facing complex issues that require coming up with a new and unique approach. Be inspired by what makes creative geniuses tick. Stop being a prompt engineer. (Re)start that critical thinking brain. Fulfil your Homo Faber destiny! The slides are also available in PDF format, although being the nerd I am, I did write them in Markdown and used Marp to present. Besides the idea of the Creative Programmer, the second takeaway I wanted everyone to think about was the fact that we’re so eager to off-load “mundane” work to our new LLM-based assistant. But without that 90% of “boring” transpiration, the 10% of interesting illumination will never occur. We, as inherently lazy humans, are yet again thinking only of the short-term wins. Yes, we can now push a story to production in three days instead of a week. But those days we’ve won now will most certainly come back to haunt is later in the maintenance phase. An example slide, zooming in on creative domain #6: the creative state of mind, and the dangers of off-loading the transpiration to an LLM agent. If you’re interested in a bit more background behind the main ideas that were touched on, here are the related posts where I based the slides on: James’ interesting choice of words: In the spectrum of problems in SE, coding has never really been a big one. The places where there are problems are in like testing. […] So I view AI in part asstealing the fun and making the torture worse. - James Gosling Stealing the fun and making the torture worse . His words, not mine. If you have any questions or concerns related to what I might or might not have said yesterday, you’re welcome to reach out ! For those who couldn’t make it, unfortunately there’s no recording available. Perhaps next year? Related topics: / talk / By Wouter Groeneveld on 19 September 2026.  Reply via email . My book The Creative Programmer ; The Creative Programming Problem Solving Test (don’t forget to press that I’m Feeling Lucky button); The most important slide, the mind map summarising the seven domains of creative programming in software engineering, is explained in the article what is creativity for software engineers ; The critique on genAI found its roots in my commentary on genAI through different lenses that summarises the papers I’ve mentioned; Bert Hubert’s AI Train talk that inspired me to include a warning for ecologists and economists; Dan North’s Programming is not a craft blog post from 2011 that caused quite a stir back in the day but is ever so relevant nowadays. 95% of the people in the room claimed to be code craftsmen, yet we’re increasingly telling someone else to craft something. Why? To create something is to be human (or the other way around). The dangers of a depressing professional existence lurk around the corner. James Gosling’s interview on the Telusko YouTube channel (see below).

0 views
Kev Quirk 2 days ago

Amelia the Chicken

We lost our favourite chicken last night. I know, just a chicken, right? Big deal. It's not like we lost a pet. But that's the thing, Amelia was more than just a chicken . She was a pet. She was very tame and would often come into the house to sit with one of us. She would scratch around the kitchen while we were eating breakfast then quietly cluck at one of us to be picked up for cuddle. We named her after Amelia Earhart because she was always the first of all our chickens to go exploring. Right from the moment we got our first 6 chickens, Amelia came up to us while the others hid. Often posing for photos. Amelia on day 1, posing for a photo It's very sad when you lose a pet, and although this won't hit us as hard as when we inevitably lose one of our dogs, it's still really sad. Both my wife and I have shed a few tears for Amelia this morning. We'll miss you, girl. x Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️ You can reply to this post by email , or leave a comment .

0 views

Why So Serious?

One day when we were in China we had to spend a few hours in an appliance store with the kids. Asking my 4-year old to sit still and learn the ins and outs of ductless AC units obviously wasn't going to happen. He quickly took to running around the store, whizzing in and out of washers, refrigerators and automatic toilets that would raise their lids in a salute to his craziness. He played hide and seek among the displays, laughing all the while. As an American parent, it stressed me the hell out. Not because I thought he would get hurt or cause damage, there was very little chance of that. Rather, it was my expectation of being yelled at. Having some elderly shopper give a lecture, or a sales associate call a manager to deal with us. In the USA, a kid being allowed to run around and have fun in a store just isn't something that's allowed to happen. It's too disruptive, too "dangerous", too filled with "what ifs". Later that day he fell asleep at a bike shop, having spent all his energy in the appliance store My wife told me to chill out and said "nobody here gives a shit". And sure enough, my son was completely ignored. At one point, another kid joined in while his parents reviewed refrigerators. The only time employees got involved was when my son got so bored he started throwing a fit. Suddenly 4 associates descended on him, each offering various sweets and snacks to cheer him up. That day has been stuck in my mind since returning home. America is filled to the brim with rules to be followed, least you risk being told off. Not to say China is without rules, far from it, but there's a strong culture "who gives a shit" when it comes to small things.

0 views
Kev Quirk 3 days ago

A day is short, a life is long

by Kevin Wammer Kevin talks about some of the stuff he's figured out in his life now that he's turned 35. Read post ➡ Really enjoyed this post because it's honest, level headed, and real. Since stepping down in work myself , I too have realised that good enough is... good enough . Funny, huh? Kevin talks about a lot more than just his career, but I won't ruin a great read for you. Go check it out. Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️ You can reply to this post by email , or leave a comment .

0 views
Chris Coyier 3 days ago

I’ll be at Axe-Con 2027

Axe-con ’27 : The world’s largest digital accessibility event. At your computer. February 23-27, 2027 Me! I’m a keynote speaker along with Jennison Asuncion , Co-Founder of Global Accessibility Awareness Day (GAAD). There will be 70+ other amazing presenters as well I’m sure that will be announced soon. Because it matters.

0 views
fLaMEd fury 3 days ago

What a time to be alive

What’s going on, Internet? Today just seems like one of those days. It’s Friday evening and I’m standing here at my desk with a beer, messing with the blog. Placeholding some later posts that I meant to write but time got away on me. Listening to new music, playing new computer games, and watching new favourite old TV shows. Kids are in bed, and asleep. New golf clubs arrived. I got to have a swing at the range. New Miley Cyrus album. I was onto something , wasn’t I? Check out Bass Persuades , and the second single Let’s Get Married . Blizzcon was last weekend. New Warcraft III expansion, Forsaken Kingdom . Which sets the story for the new World Of Warcraft game; Forever . New South Park, with a new intro song . Let’s hope it’s less whatshisface this year. And don’t mind those blank posts you’ve seen pop up in the feed, I’m staging them as a encouragement for me to finish writing them. Hey, thanks for reading this post in your feed reader! Want to chat? Reply by email or add me on XMPP , or send a webmention . Check out the posts archive on the website.

0 views