Latest Posts (20 found)
Unsung Today

Not everything needs to be a round rect

For the many early years of its existence, Chrome sported a pretty distinctive – perhaps even iconic? – look to its tabs… = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/not-everything-needs-to-be-a-round-rect/1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/not-everything-needs-to-be-a-round-rect/1.1600w.avif" type="image/avif"> …with even the “new tab” button looking like a tab embryo waiting to be brought into existence. At some point, however, during one of the redesigns, the tabs have been flattened to look like many other round rects in the UI, and the new tab button asked to dress in the minimalistic button uniform every other button was already wearing: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/not-everything-needs-to-be-a-round-rect/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/not-everything-needs-to-be-a-round-rect/2.1600w.avif" type="image/avif"> Here’s a new example of this trend. iOS’s memorable tooth-shaped keyboard key extensions, there with us since 2007… that is, until yesterday, when iOS 27 designers turned them into Yet Another Round Rect: = 3x)" srcset="https://unsung.aresluna.org/_media/not-everything-needs-to-be-a-round-rect/3-framed.1600w.avif" type="image/avif"> = 3x)" srcset="https://unsung.aresluna.org/_media/not-everything-needs-to-be-a-round-rect/4-framed.1600w.avif" type="image/avif"> There would be a time in my life where I’d see these two as a triumph of minimalism and consistency. But I feel differently today. I don’t even mean that tabs should look a certain way to help users, or that skeuomorphism absolutely needs to come back, or that someone has to brush up on shape coding . I mostly feel that way because modern interface design practice – these ubiquitous round rects on ever-present white backgrounds, set in one of the near-identical neogrotesque fonts – is just so… boring. It’s not fun, not inspiring, not – in any real way – exciting. I also have this feeling that “consistency” might be just an excuse. Defaulting to round rects could be running away from a challenge; the original shapes would be harder to make work, but it was absolutely possible to do that, given enough effort and care. Occasionally a designer is faced with an important question that awaits an honest answer: are you doing something to make your user’s life simpler, or yours? It’s not that the first answer is always better than the second, of course; sometimes you have to put on your mask before helping others. But, without knowing all the considerations, I feel that way about these two examples – and a tinge of sadness seeing those unique shapes bulldozed. (And yeah, I know I’m not doing the case any favours by comparing these to teeth. I think originally the key shape might have been typewriter-inspired; early iPhone’s keyboards were making what to me felt like typewriter-esque sounds too.)

0 views
Unsung Today

“But, as we all know, the individual light bulbs are not moving.”

I linked to palette cycling before , and I was just reminded of palette cycling art by Mark Ferrari, who back in the 1990s made 30+ landscapes that looked like this: They have been collected on this webpage some 15 years ago, and I’m linking to it in part because it’s also a great explainer of how palette cycling works – you can see the colors move around, you can point to one to see it frozen, and you can see multiple cycles running in parallel, compare palette ranges between different environmental conditions, and turn on a “blended” technique that feels clever and I didn’t realize existed. The page was made by Joe Huckaby, who wrote a little intro: Mark J. Ferrari […] invented his own unique ways of using color cycling for envrironmental effects that you really have to see to believe. These include rain, snow, ocean waves, moving fog, clouds, smoke, waterfalls, streams, lakes, and more. And all these effects are achieved without any layers or alpha channels – just one single flat image with one 256 color palette. The launch was also accompanied by an interview with Ferrari, which is an interesting read – in part because it shows the work was even more elaborate than all of the above: These versions of the scene are all the same piece of art ‘shifted’ to different palettes, and, in some cases, using additional ‘baked in’ overlays, (such as rain or the lighted windows at night). But those overlays are all ‘baked in’ to the same layer of the same piece of art that appears in any other ‘day-time’ or clear weather iterations, and are all deriving their color and motion from the same palette as the rest of the picture in that state. While [the page above] finally allows us all to watch these images color cycle online, many of the scenes posted were actually ‘built’ to do much more than merely animate. By fading the one piece of art through whole sets of palettes, sometimes also using a very sparse set of ‘baked in’ overlays, a number of these scenes can go seamlessly through the 24 hour light cycle, and even change weather conditions ‘naturally’ and seamlessly in real time as you watch. I am not just talking about changing the brightness or color scheme of these pictures either. In the images built for it, over the course of ‘sunrise and morning,’ ‘morning to afternoon’ or ‘evening and sunset,’ light and shadow will actually gradually change angle, climb down the sides of things, move across lawns, up cliffs or building walls, as changing light does in life – all just by fading through palette series designed to make those things happen without altering or adding anything at all to the single layer of 8-bit pixel art. Ferrari also suggests an interesting analog to palette cycling, which I quoted in the title. (Bonus: Ferrari’s animated landscapes were made for a new-age’y personal organizer app called Seize The Day, and on top of the above preservation effort, there is also this independent, extremely retro page from a fan of the app who loved it so much she decided to keep the app itself alive, too.)

0 views

Presto: A Match-Action TCP Stack for the Terabit Era

Presto: A Match-Action TCP Stack for the Terabit Era Rajath Shashidhara, Antoine Kaufmann, and Simon Peter SIGCOMM'26 This paper presents Presto, a Goldilocks implementation of the TCP protocol. It is efficient and yet does not require fixed-function TCP-specific networking hardware. The paper is a tour-de-force in the way it isolates the specific problems that make TCP processing hard to pipeline, and describing clever solutions to these problems. The Reconfigurable Match-Action Table architecture one specific flavor of programmable network accelerator. Here are two previous paper summaries that reference the RMT architecture. At its core, the RMT architecture is a feed-forward pipeline through which network packets flow. Each pipeline stage has a content addressable memory, and a limited amount of compute. The hard part about mapping an application to the RMT architecture is that there is very limited communication between pipeline stages. Network packets flow forward through the pipeline. The one escape hatch is the pipeline can decide to recirculate a packet, which can cause information to be sent from the tail of the pipeline to the front. This paper which, implements a key-value store with RMT leans heavily on this recirculation. Mapping the various steps in TCP protocol handling onto the RMT architecture requires distributing the state associated with a connection across the RMT pipeline. The size of per-connection state at each pipeline stage is fixed. The hardest TCP feature to map onto RMT is segment reassembly. Segment reassembly is the task of tracking and handling received segments (i.e., packets), which may arrive out of order. The receive side of a TCP connection must track the start and end of a window of packets that may be accepted. For example, if the packet with sequence number 4 has been processed, and the window size is 10, then the sender is free to send packets [5, 6, …, 15]. The paper describes three segment reassembly designs, I’ll illustrate one (OOO-1) here. Fig. 4 illustrates a continuous stream of packets with monotonically increasing sequence numbers. is the lowest sequence number of packets that have not yet been received (i.e., the start of the TCP window). defines the end of the TCP window. and define a contiguous set of packets that have been received and are in the TCP window. Note that this design happily accepts these packets. Source: https://dl.acm.org/doi/10.1145/3789240.3829111 Fig. 3 illustrates the 4 pipeline stages that implement TCP receive window tracking. Note that each of the 4 state variables described above is tracked in a different pipeline stage. For example, say that and , and . This means that the next expected sequence number is 4, and no packets in the TCP window have arrived. Say that packet 6 arrives next. Presto will accept this packet and set and . If packet 5 arrives next, then will be set to 5. Finally, when packet 4 arrives, will be set to 4. At this moment (ooo-head-1 is equal to next-seq), the packets 4, 5, and 6 can be sent down the pipeline. This is accomplished with recirculation: a dummy packet is injected into the pipeline which flows through all stages and updates state variables as expected. Source: https://dl.acm.org/doi/10.1145/3789240.3829111 Results Fig. 9 shows throughput vs latency curves for Presto and TAS (a software TCP stack based on kernel bypass): Source: https://dl.acm.org/doi/10.1145/3789240.3829111 Fig. 10 shows power consumption: Source: https://dl.acm.org/doi/10.1145/3789240.3829111 Dangling Pointers It is a shame that Intel has discontinued the Tofino chips. The literature shows that the RMT architecture is flexible enough to efficiently implement a wide range of applications (e.g., key-value store, TCP protocol acceleration). Thanks for reading Dangling Pointers! Subscribe for free to receive new posts.

0 views

It's Never Too Late to Learn

Last weekend my wife called me over to show me something on her phone. She was going through her old emails and came across some emails we had passed back and forth, from when we first met. She and I met in a club and went on a couple of dates, but then I deployed to Afghanistan with the Army. We continued to converse via email mostly, and phone where possible - this was before the days of FaceTime etc. - and the rest is history. That was in 2006, and 20 years later we're still very happily married with a couple kids. Anyway, upon reading the emails I immediately wanted the ground to swallow me up. Not because they were overly mushy or lovey dovey (they were), but because the spelling and grammar were horrendous . I was never a particularly academic kid - in fact, I was mostly disengaged in school and really didn't try. I was clever, but I never applied myself. I was too busy being a stupid teenager. As a result, my written English was awful (it's still not great now, but it's better). For example, I didn't know the difference between " there ", " they're ", and " their ". And you can forget about " your " versus " you're ". " Too " vs " to "? Not a chance. Where , were , and we're baffled me. I had no idea where a comma was supposed to go in a sentence, and I'd never even heard of an Oxford comma . You get the idea. During my time in the Army, written English wasn't really needed, so I wasn't too concerned. But after getting out and finding a job in IT, it quickly became apparent that my lack of basic English knowledge would hold me back. So I decided to fix it, and enrolled in a night school course. To my surprise I really enjoyed it. It turned out that writing and learning are a lot of fun, and I was constantly looking for ways to practice my new found writing skills. I think that's part of why I still love typing - I just find creating words on a screen a lot of fun. Yeah, I'm weird. I know. So I completed the night school course and came away with much improved grammar and a desire to write all the things. But replying to emails and writing reports in work wasn't scratching the creative itch for me. One of the services the IT company I worked for offered was web hosting. I'd never really got involved in any of that, so learning about DNS, web servers, MySQL etc. was really interesting. I'd done a bit of basic web design during my college IT course, but never anything more. "College" in the UK is different to college in the US. We call that university here. In college we do our A-levels, which are intermediate qualifications between high school and university. I don't have a degree. A few of our customers had WordPress sites, and it blew my mind. Here is a web application that I can host myself, on my own server, with my own domain name. Furthermore, I can write what I want and publish it on the web for anyone to read. This was the creative outlet I'd been looking for! So in 2010 I registered , set up WordPress on a shared host, and started writing. Sixteen years later I'm still here, and still thoroughly enjoying writing on the web. Albeit no longer on WordPress . It's funny how these seemingly unrelated things connect together in retrospect and take us down a road we never thought we'd walk. Back in 2000, when I was leaving high school, if you'd have asked my high school English teacher ( hi Mrs Daniels! ) if she thought I'd be producing creative writing on the web for 16 years, she'd have laughed in your face. Hard. But I am. And it's all thanks to a basic written English course that I attended for a couple of months, just to improve my writing to help me with work. I'm not really sure how to wrap this one up. I suppose my final thought is that it's never too late to learn. And you never know where it will take you. A simple thing like a basic English night course could end up forming the longest running, most enjoyable hobby you have in your life. 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

OpenAI Ads, Amazon Ads in ChatGPT, Walmart to Accept Apple Pay

ChatGPT ads are working, and solve Amazon's biggest problem with chatbots. Then, Walmart finally gives in to Apple Pay, because fighting the status quo is hard.

0 views
neilzone Yesterday

Initial thoughts on the Social Media Platforms (Ofcom Licensing) Bill

There’s nothing like waking up to find people telling me about proposed new legislation which, if passed, would geoblock people in the UK from so many online services, end numerous services in the UK, and criminalise myriad people in the UK. Today’s proposal is the Social Media Platforms (Ofcom Licensing) Bill . The gist of the proposal is that anyone who “operate[s] a social media platform that is available to users in the United Kingdom” commits a criminal offence unless they obtain a licence from Ofcom, and comply with the terms of that licence. Is it a private members bill, and is unlikely to pass - more a declaration of intent than a serious attempt at legislating - so there is a risk that, in responding to it as a serious proposal, one gives it more credibility than it deserves. Nevertheless, here are three quick, pre-breakfast, thoughts, based on the text of the bill here . My starting point, in anything like this, is “what is the problem that the legislation is trying to solve?”. Here, I just do not know. I cannot get to the point of trying to assess whether it is the best way of trying to solve the problem (although this is incredibly unlikely), because I cannot tell what the problem is. The Online Safety Act 2023 already started down the very slippery slope of regulating people’s conversations, through the guise of requiring platforms to do things in respect of those conversation / interactions. Ostensibly it is not content regulation yet, in practice, that is really the outcome that is sought. The same is true here, and this bill is even more concerning. I cannot imagine someone attempting to pass a law telling pub landlords or cafe owners that they - on pain of criminal liability - : must take all reasonable and proportionate steps to ensure— (All I have done here is replace “content made available on its social media platform”, from clause 4 of the bill, with “conversation in the pub/cafe”, and “content” with “conversation” in (f).) I don’t know how someone might go about some of these things? How does the provider of, say, a running forum make a determination of whether a conversation contains misleading information? Is a campaign against facial recognition cameras in public places “harmful … to the public interest”? Who decides? How does a forum for vulnerable people who wish to share sensitive information comply with (e), to provide “transparent information concerning the identity and authenticity” of other users, without causing users harm and stifling their speech? How does this interplay with a user’s rights to freedom of expression, privacy, or data protection? The lack of a conjunction at the end of clause 3(a) renders the scope unclear. Does a platform have to meet both (a) and (b) to be in scope? Or either (a) or (b)? If it is an “or”, then the scope is very broad indeed. If it is an “and”, then it is slightly more narrow, but still incredibly broad. I do not know what “other than those with whom they communicate privately” is trying to get at. Does it include only direct messaging between a small number of participants? Is a large, but closed, group chat “private”? If I run a fedi service for my family, but everyone can see each others’ posts, is that private communication? There is no carve-out for small, low risk, services. Off the top of my head, I’d have to obtain a licence for several services that I run at home. This is an existing problem with the Online Safety Act 2023, but since the impact of this bill would be to criminalise me unless I obtained (and presumably paid for? since Ofcom could not run the infrastructure needed to staff etc. this for free) a licence. Right. Breakfast time. Oh my. that conversation in the pub/cafe complies with the laws of the United Kingdom; that conversation in the pub/cafe is not materially harmful to users or to the public interest; that conversation in the pub/cafe does not incite criminal conduct, violence, hatred or public disorder; that systems are in place to minimise the dissemination of materially false or misleading information; that users are provided with transparent information concerning the identity and authenticity of persons having conversations in the pub/cafe; that harmful conversation identified by Ofcom is removed, restricted or otherwise addressed within such period as Ofcom may specify.

0 views
Unsung Yesterday

“Tuned to the particular typing mistakes to which Teitelman was prone”

Recently, I asked on social media, “Is there a UX design equivalent to this?”, and attached this photo: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tuned-to-the-particular-typing-mistakes-to-which-teitelman-was-prone/1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tuned-to-the-particular-typing-mistakes-to-which-teitelman-was-prone/1.1600w.avif" type="image/avif"> In case you don’t know, this is a (mythical) male-to-male power extender. Requests for those seem to spike around Christmas, and the reason is this: if you put up your lights, chain them together, and only then realize you did it in the wrong order – with the holes next to a socket – it seems much easier to imagine using this cable than reversing all the lights. There are apparently other uses, like powering your whole house from a portable generator. But I don’t know if you can actually buy such a cable. What I do know is why you wouldn’t want to buy one. The cable has a horrible flaw that might not be immediately obvious: once you plug it in, the other end now has exposed live wires that can electrocute someone. So, my question was really: What in design has a similar property? What’s something that seems like a good idea, but is actually pretty bad and/or even dangerous? I would be curious if you have any nominations, but I got two answers that seem interesting enough to share. The first one comes to us from the (also mythical) Jargon File, in an entry for DWIM : DWIM [acronym: Do What I Mean] Warren Teitelman originally wrote DWIM to fix his typos and spelling errors, so it was somewhat idiosyncratic to his style, and would often make hash of anyone else’s typos if they were stylistically different. Some victims of DWIM thus claimed that the acronym stood for ‘Damn Warren’s Infernal Machine!’. In one notorious incident, Warren added a DWIM feature to the command interpreter used at Xerox PARC. One day another [user] there typed to free up some disk space. (The editor there named backup files by appending to the original file name, so he was trying to delete any backup files left over from old editing sessions.) It happened that there weren’t any editor backup files, so DWIM helpfully reported . It then started to delete all the files on the disk! The [user] managed to stop it with a Vulcan nerve pinch [Ctrl-Alt-Del] after only a half dozen or so files were lost. […] DWIM is often suggested in jest as a desired feature for a complex program; it is also occasionally described as the single instruction the ideal computer would have. I have a complicated relationship with the Jargon File – a collection of computing anecdotes from the 1970s – and I don’t know if I fully trust it, but I liked this story and Wikipedia has a bit more about it : Teitelman’s DWIM package “corrected errors automatically or with minor user intervention”, similarly to autocorrection for natural language. […] Critics of DWIM argued that it was “tuned to the particular typing mistakes to which Teitelman was prone, and no others” and called it “Do What Teitelman Means” […] If this rings bells, it’s because we talked about a similar idea before vis-à-vis Postel’s Law . The second answer was a property of the desktop trashcan on Windows or a Mac, and this one I could’ve thought of myself, because in 2020, I wrote about it in my book’s newsletter . = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tuned-to-the-particular-typing-mistakes-to-which-teitelman-was-prone/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tuned-to-the-particular-typing-mistakes-to-which-teitelman-was-prone/2.1600w.avif" type="image/avif"> To spoil the story: any onscreen trashcan that has a bulging/​filled/gross appearance whenever there are files inside will prompt some percentage of users to clean it just to restore its pristine appearance… in the process nullifying its utility and purpose. Like the original power extender, the second visual state of the trash seems like a useful thing to offer to the users, but it comes with a possibly regrettable price. This is what connects the two stories – both talk about “nice,” but underbaked improvements leading to potentially losing files. Oh, you say, all of onscreen trashcans do that? Well, then, there’s your problem.

0 views
Farid Zakaria Yesterday

Orange Site Vanity

“Curiosity is only vanity. We usually only want to know something so that we can talk about it” – Blaise Pascal, Pensées I enjoy writing. Most of the time I write for myself, or that is what I tell myself. The act of writing is me trying to deeply understand something and then recording my thought process. It has paid dividends already as I have gone back numerous times to reference myself. When I am honest with myself though, I deeply enjoy knowing when others read my work as well. Knowing that something I found interesting and insightful landed for someone else too is incredibly satisfying. If I could have helped someone understand something better while having done so for myself, pure joy. The peak of that vanity seems to be when the Hacker News crowd has deemed your content “worthy” to have made it on the front page . There is a sort of inner satisfaction when someone else messages me to let me know one of my posts has made it onto Mount Olympus. I have for years added Google Analytics tracking to my site to understand engagement but I rarely went any deeper with the metrics to understand it, until now! 🤓 I have put my vanity on public display by collecting metrics pertaining to my readership . 🪞 The numbers deflate the myth a little. As of writing, my writing has been submitted to Hacker News 127 times, and 26 of those reached the front page. Those 26 bought me 121 hours up there in total, under five hours each 1 , and exactly one ever touched #1. Mount Olympus turns out to be crowded, and difficult to climb. Turns out building the vanity site was itself rewarding. I got a better understanding of the metrics I am collecting through Google Analytics & Search Console. I also tied my writings to submissions to Reddit , Lobsters & Hacker News . The data is fetched offline and periodically updated via a GitHub Actions workflow and included in the site, of course, as a Nix derivation. Pascal was probably right. I tell myself I write to understand things, and that part is true, but I have now built a daily pipeline whose only job is to tell me who else was listening. Curiosity is only vanity. My curiosity now has a dashboard. A goal of mine is to have Fareed Zakaria mistaken for me instead of the other way around. 😅 A mean, which I have previously argued means nothing.  ↩ A mean, which I have previously argued means nothing.  ↩

0 views

Tag index for Org mode blog

Since people keep asking how this blog is made, and I don’t want to share the awful, terrible code that it is taped together with, I’ve decided to start explaining parts of it piecewise. Generally, any time something breaks and I have to fix it, I write down what I did and what it connects to. The most recent issue was the stack limit being blown by a helper function involved in generating the tag index. I had written it to be explicitly recursive, which worked fine with a small-ish number of published articles, but not anymore. The tag index creation follows a similar pattern to the RSS feed generation detailed in the previous article. (Continue reading the full article on the web.)

0 views
マリウス Yesterday

llama.cpp with SYCL (oneAPI) for Intel Panther Lake on Gentoo

Alright, so if you’ve read the title and thought you were having a stroke, you might not be the target audience for this post. If, however, you thought “more tokens/s?” , you should keep on reading. If you remember my review of the new Lenovo X1 Carbon Gen 14 Aura with Intel Panther Lake Core Ultra X7 368H vPro from a while ago, you might recall that I had tested its local “AI” performance using Ollama, via Vulkan, which obviously didn’t perform particularly well across various models. The proper way to run local LLMs is to use Intel’s official oneAPI framework and compile llama.cpp with SYCL enabled, which will greatly increase performance. This post is a very brief write-up of how that can be done and primarily serves as yet another documentation for future-me. I’m assuming that you’re already running your Gentoo system with the driver and . First, install the necessary dependencies: You’ll likely have to unmask a couple of those packages, like , but that’s fine. When this is done, add your user to the and groups if you haven’t already and log back in. Test that the GPU is being recognized by : Next, go and get the “Intel Deep Learning Essentials” package and use to install it as a user. I chose the installation path , but you’re free to install it anywhere you please. Note: Even if you deselect the telemetry option, the installer will try to contact Intel’s servers post-installation, so make sure your OpenSnitch blocks all requests from that process towards the interwebs. While the FireBurn overlay has , it does not yet allow you to specify as a USE flag, and the official Gentoo repository has no llama.cpp ebuild at all. Hence we clone the project’s Git repository and compile it manually: Once llama.cpp finishes building, you can start it and have it download a model, e.g., Mistral or Qwen3: Open a browser at http://127.0.0.1:8080 , and you can try the model right away. On my Lenovo, I managed to increase the tokens/second by roughly 60% compared to what Ollama (via Vulkan) was able to achieve. For example, the Mistral model went from approximately 13.88 tokens/s to 22.36 tokens/s.

0 views
Unsung Yesterday

“Redesigned callouts to be less visually chaotic.”

Three nice moments in Buttondown’s (pretty comprehensive) release notes : There is a filter and tags to search more easily. Blog entries are linked throughout, complete with cover images – it’s a nice way to distinguish small changes from big improvements. The fixes are attributed to specific people. (This part doesn’t appear on mobile.) Particularly nice to see support for more than one person collaborating on a fix – I’ve had fun memories working at various companies of pairing up with someone else to debug a particularly tricky problem.

0 views
Stratechery Yesterday

Pacing the Frontier, AI’s Digital Limits, AI Commissars

Dario Amodei wants to pace the frontier; it's an unrealistic proposal that seems mostly geared to political control of AI.

0 views
Andy Bell Yesterday

Removing algorithmic feed slop from my life

Recently, during a very relaxing holiday in Cyprus, I had a revelation of sorts: my brain was rotting. I know this because I read a lot of books on holiday. It’s the only time I do read books! Well, I did read a lot on holiday, but the last couple of years I really struggled to focus. I used to put it down to “I’m just super tired, man, I don’t have the mental strength to concentrate” but that was probably only a part of it. I struggle to concentrate all the time — brains, innit — but it looks like algorithmic feeds of content, such as Instagram, TikTok and Bluesky (For You feed) have been doing a lot more damage to that existing problem than I thought. I decided to cut loose. I deleted Instagram, TikTok and Bluesky from my phone because I don’t use anything else. The feeling I had, for the first couple of days after that was the exact same feeling I had in attempts to quit nicotine, which was rather concerning. I persisted though, leaning more and more into my beloved RSS feeds whenever I had a pang to pick up my phone and scroll. I get my Bluesky content via RSS too, via a little system I’ve been tinkering with. I don’t like to miss what my pals are up to — especially where there’s an opportunity to signal boost — but I also think there’s value in reading posts from my peers and others. This is serviced well by my RSS setup, so if you see me in your notifications tab, that’s why. When I Log On™ to Bluesky, all I see is this: No surprises here! I’m feeling a lot less ground down and my brain is working much better, only after a week. My phone always has battery too, which is handy. The thing that’s really surprised me is I’m sleeping so much better than I was. I’ve had a hard rule for years: my phone doesn’t come into the bedroom, but even then, my brain was clearly struggling to relax after watching TikTok for an hour or whatever. I’m going to keep going with this to see where it takes me. I’ll miss sending good videos to my pals in Instagram and discovering new music to listen to, but that’s about it. The algorithms on that service, as well as TikTok (since the Americans took over) are really quite shit when you think about it and if you think about it even more, the content you do actually end up seeing really doesn’t improve your life at all. It just fills time. I guess I’m in a pretty fortunate position. I don’t rely on these services for my income so I have the option to just leave. I feel really bad for those who do rely on these services because it must feel like a prison a lot of the time. I’m also fortunate that I’m not rotting my brain talking to LLMs all day either. I can see the immense damage that is having on everyone that is into this technology. If you’re thinking “not me, though”, I’m afraid to say that yes, you too. I see it every day in my peers and it’s rather distressing. Protecting your intelligence is, and will continue to be, the most important thing to do. That’s a topic for another day though! Try removing yourself from algorithmic feed slop. It’s only affected me in a positive way so far, so it’s certainly worth a shot if you’re also feeling like your brain is rotting too.

0 views

I've got a switching problem

The past two weeks I've developed a problem. Almost every other day I've been switching between two tech extremes, my MacBook + iPad Pro + iPhone + Apple Watch setup and my Ubuntu ThinkPad + GrapheneOS Pixel + Supernote Nomad + Fitbit/Pixel Watch setup. It's gotten to the point that I imagine someone at Google Fi must be looking at my insane amount of eSim transfers and just thinking "what the hell is wrong with this guy?". I think there's a number of reasons why my mind has been causing me to do this, but it all comes down to one goal: dumping Apple once and for all. There's the obvious case for privacy, escaping the walled garden and freeing myself from iCloud subscriptions. I also want to get out of such an expensive line of products, and open myself up to more Chinese domestic products (Xiaomi, Huawei, etc) in case I do end up moving to the country. Finally, I just find my Linux based computing devices to be faster. Somehow my Pixel 9 Pro is leagues snappier than my iPhone 17 Pro Max, and my ThinkPad P14s Gen 4 (feels like) it can run circles around my MacBook M1 Pro. Ever since Liquid Glass, my Apple devices just feel sluggish. But then why do I keep switching back to Apple? Primarily guilt, I spent too much on these damn Apple devices to not use them. Maybe someday I'll just bite the bullet and sell the Apple devices, until then, sorry Google Fi, I'm gonna need some more eSims provisioned.

0 views
Sean Goedecke 2 days ago

Slow developer experience will bottleneck fast models

Right now developer experience is measured in seconds. If your tests take a second to run, that’s good; if they take thirty seconds, that’s bad. Any faster than a second doesn’t really matter, because most of your time is spent either thinking or waiting for an AI agent to spin. Shaving milliseconds off your dev server reload time or whatever is pointless: that’s not the bottleneck. It will be. Small models are getting faster and faster, and smart models are getting smaller. I think most engineers will still want to use the smartest available model — software engineering is hard — but we will increasingly see faster models get used as subagents or for well-understood tasks. This is largely uncharted territory. Very few people have developed intuitions for what it is going to be like to work with agents that run at thousands of tokens-per-second. GPT-6-Astra can run at about sixty tokens per second. That means you spend a lot of time waiting for it to think. You work with it like you would work with another human: delegating a task and then context-switching until that task is complete. If you haven’t yet, have a play around with Jimmy , Taalas’ version of LLaMA-3.1-8B running 1 at seventeen thousand tokens per second . No matter how long the response is, it arrives in the instant of you hitting send. The model is not good enough for agentic work, but it gives a glimpse of what it would be like: you would simply get your answer instantly 2 . Well, that’s assuming the agent’s tool calls are fast. When generating tokens is not the bottleneck, it will suddenly matter a lot whether it can read a file in 100ms vs 10ms, or whether it can run your tests in 500ms vs two seconds. Fast tool calls are going to be the difference between a near-instant response and having to wait several minutes. There is thus going to be enormous pressure to do agentic coding in languages with fast compilers and tests, like Golang, and to tightly optimize the dev loop in agentic codebases. Teams focused on DevEx — developer experience — are largely a relic of the 2010s, when companies were incentivized to make their engineers happy. Most companies have cut them down to a skeleton crew or removed them entirely. But we may see a return of DevEx in the late 2020s, focused on speeding up the experience for AI agents. Like most ultra-fast inference, it relies on fitting the entire model onto a huge GPU-like chip that’s specially designed to run inference: for Taalas, it’s in the silicon itself; for Cerebras and Groq, it’s in giant embedded onboard memory units. Will AI providers simply train models to spend more time reasoning, so users would have to wait for roughly the same time? I doubt it. Most ordinary engineering problems would not be solved better by spending an extra million tokens thinking. You only need to do that when you’re pushing right up against the limits of the model. Like most ultra-fast inference, it relies on fitting the entire model onto a huge GPU-like chip that’s specially designed to run inference: for Taalas, it’s in the silicon itself; for Cerebras and Groq, it’s in giant embedded onboard memory units. ↩ Will AI providers simply train models to spend more time reasoning, so users would have to wait for roughly the same time? I doubt it. Most ordinary engineering problems would not be solved better by spending an extra million tokens thinking. You only need to do that when you’re pushing right up against the limits of the model. ↩

0 views
iDiallo 2 days ago

AI Forces You to Commit to Your Initial Belief

Have you ever watched any old hacker movie lately? The hacker can write at 180 WPM, never using the backspace or changing his mind ever. It’s like before they ever started, they already knew the last character they would type on the screen. But that’s not how it works in real life, at least not for me. The idea changes mid-sentence. That's probably how most of the code I write ends up. I start with an idea in my mind. I think it's brilliant, maybe it’s a way to restructure the code, an overall design, or a specific paradigm. But when I start writing it, something else pops up. Seeing it halfway down the page, I realize it's not quite what I was imagining, and I change direction. The same principle applies when I'm writing a blog post or a story. I feel like I have a perfect concept in my head, but the moment I start putting words down, things shift and I adjust accordingly. That's why the final text rarely matches the original vision. It’s as if writing itself is the process of refining the idea. This process is lost when you use AI. You don't write out the details of an idea as you go; instead, you just give it the gist of it. It generates an entire wall of text instantly, and now you're stuck reading through it while the tool tries to preserve that initial draft, or its own interpretation of it at least. You only discover flaws or attempt to pivot while reading the generated output. But pivoting inside a wall of text is much harder than making a 180-degree turn mid-sentence. If you spot a small part you dislike and try to remove it, it might break something 20 lines down, forcing you to step back and make sure everything still aligns. Using an LLM forces you to commit to your very first thought. When you write manually, every keystroke is a chance for the idea to evolve. When you use a large language model, you have to absorb the entire output all at once, which ends up being far more time-consuming.

0 views
Kev Quirk 2 days ago

2026-09-13 10:35: Nelly the pup absolutely loving life in the field! 🤣

Nelly the pup absolutely loving life in the field! 🤣 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 I Still Believe in Mentorship

One of the best tips I ever got was from my table tennis coach. He watched me play and said, “You are leaning forward with the wrong foot!” I’d been playing for years and thought I had a good stance. I’m left-handed, and no one had told me that I should put my right foot forward. I had copied the stance of other players without noticing the problem. It was obvious once he pointed it out. But until then, I hadn’t thought to question it, and more practice hadn’t helped me notice. That single observation improved my game more than any amount of practice because it gave me better control over my forehand play. Note that I didn’t actively seek out advice on my stance. Someone had to watch me play, observe, and then point out the single most helpful thing that would set me on the right path. Mentorship in Software In software, we are often expected to struggle alone. We’re supposed to learn systems design, architecture, testing, and refactoring largely by sitting with the problems. The times when I grew the most as a programmer were through thoughtful code reviews, but they are rare. Besides, the reviewer sees the end result but not the (sometimes flawed) reasoning that produced it. Pair programming gets closer. But two equally inexperienced programmers can reinforce each other’s bad habits. An agent can control the keyboard instead of helping you reason through a problem. It may produce better code without making you much better at writing it. A session where a machine fixes everything is productive, but being productive and growing as a programmer are two different things entirely. This is part of why I still believe in mentorship, even now that an LLM can answer so many programming questions. Going beyond the superficial questions I run a one-on-one Rust mentorship program , so I have a personal stake in this. Most of my mentees come with a concrete question: Often, answering the concrete question is beside the point. We have to look at the thought process that led to it. Before deciding whether something should be generic, for example, it helps to know what is expected to vary and why. Otherwise, we can spend a long time discussing how to build an abstraction that might be unnecessary in the first place. A mentor has enough distance from the problem to question its framing and enough experience to recognize familiar patterns. They notice which details you leave out, which patterns you reach for, and which you ignore. You may sense that something is wrong without having the words to describe it. LLMs can question assumptions, too! But I’ve found they usually work best when you already know what to ask. The difficulty is that we often don’t know which of our assumptions need challenging. Knowing what to ask can matter more than knowing the answer, and it’s hard to ask about something you haven’t noticed. You can also use an LLM to examine a decision, or you can use it as an echo chamber to justify it. The second use may feel more rewarding in the moment, but it leaves you where you started. Mentoring in Other Fields Nobody is surprised when a professional athlete has a coach. Musicians keep taking lessons after decades of playing. We don’t take this as evidence that they haven’t learned the basics. Quite the contrary: it’s an indication that they are serious about improving and that they’ve outgrown generic advice. It requires introspection to recognize that you can benefit from someone who can observe you from the outside. And in some sense, you put yourself in a vulnerable position: the wrong mentor can set you back, while the right one can dramatically accelerate your growth. Experience doesn’t remove the need for mentoring in software either. You can become an experienced developer while still carrying counterproductive habits you’ve never examined. If those habits let you get the work done, you may have little reason to suspect them and the problem gets worse because bad habits get reinforced. I could play table tennis with the wrong stance, too, just worse. The people I mentor are already experienced software engineers. They are perfectly capable of using LLMs in their work. Many are in leading positions as staff or principal engineers. And yet, they’ve realized there’s something missing that’s holding them back. They feel like they’re not progressing as quickly as they could, and their companies haven’t provided the mentorship they need. Friction Is Part of the Learning Process Another problem is that software gives us very uneven feedback. A syntax error gets your attention immediately because the code won’t compile. But a poor architectural decision can compile, pass the tests, get approved in review, and become a major problem months later when you lack the time to make changes. One way to learn architecture is to make bad decisions and sit with their consequences. That’s how I learned! The trouble is that it takes years, and it’s certainly not motivating. A mentor can streamline that process by asking questions you may not think to ask yet: There is no single “correct” answer to these questions. The answers depend on the constraints and the stage of the project. A mentor should help you examine those constraints and point out risks you’ve missed, while leaving the decision to you. If someone else chooses the design, you lose the practice of choosing it yourself. You also still have to write the code and live with all the consequences. But you go in with a better understanding of what might go wrong. And if it does, you have someone to help you work out why. That is how you develop judgment you can use on the next project. It’s a bit like climbing with a partner. Does Everyone Need a Mentor? If you’re just starting out, a book, a course, or a friendly community might be better value. If you need an answer to an isolated question, documentation or an LLM is faster and cheaper. If mentorship were only about transferring information, it would be harder to make a case for it. Personal mentorship becomes valuable when the potential payoff is a multiple of the investment. That is typically the case in a professional setting, where focused mentorship can help you land a better job or switch to a different team with a more interesting project. That doesn’t mean personal mentorship is a guarantee of success. Our busy days leave little time for deliberate practice. We have to carve out time for learning, which is hard, but the alternative is stagnation. As with going to the gym, paying for help doesn’t spare you the exercise. One hour of conversation cannot make up for a week without practice. You have to try things between sessions if you want the next conversation to be different from the last. Easier access to answers hasn’t changed any of this. What I want from mentorship is the kind of help my coach gave me: someone paying enough attention to notice what I couldn’t see for myself. That’s what I aim to offer in my Rust mentorship , at least: we work through hard problems together, explore the design space, and make deliberate choices. If I do a good job, my mentee will eventually surpass me, and I’d be proud to help them get there. Would you make this generic? Is it okay to clone here? How can I handle this error? Is this abstraction really necessary? How would an error propagate across the system? How can we test this?

0 views