订阅源数量
92
已翻译文章
20 / 3240
最近刷新
2026-04-05 06:00:23
Spring 2026 Pebble App Contest + SDK Updates
Announcing Spring 2026 Pebble App Contest! In honour of Pebble Time 2 entering mass production, we’re hosting a contest to celebrate…
Self-Hosting: Still Worth It?
Once upon a time, self-hosting used to be a cost-effective thing. Is it still a good option for fending off SaaS as the prices keep creeping up? Today in Tedium: It’s a tough time to be a financially-conscious computer user. We’re living deep in a RAM crisis, and you’ve probably heard the stories about well-spec’ed computers slowly suffering from a nagging case of Unobtainium. Meanwhile, SaaS just keeps SaaSing, with costs adding up (and tech companies getting bigger) every month. In the past, m...
Quoting Matt Webb
The thing about agentic coding is that agents grind problems into dust. Give an agent a problem and a while loop and - long term - it’ll solve that problem even if it means burning a trillion tokens and re-writing down to the silicon. [...] But we want AI agents to solve coding problems quickly and in a way that is maintainable and adaptive and composable (benefiting from improvements elsewhere), and where every addition makes the whole stack better. So at the bottom is really great libraries th...
Reading List 03/28/26
Super Sport SS18 Glider yacht, via DesignBoom . Welcome to the reading list, a weekly roundup of news and links related to buildings, infrastructure and industrial technology. This week we look at plastic price jumps, crypto-backed mortgages, a proposed AI data center pause, US battery manufacturing, and more. Roughly 2/3rds of the reading list is paywalled, so for full access become a paid subscriber. War in Iran The disruption to oil and LNG supplies caused by the closure of the Strait of Horm...
Canonical's Netplan is hard to deal with in automation
Suppose, not entirely hypothetically, that you've traditionally used /etc/resolv.conf on your Ubuntu servers but you're considering switching to systemd-resolved, partly for fast failover if your normal primary DNS server is unavailable and partly because it feels increasingly dangerous not to, since resolved is the normal configuration and what software is likely to expect. One of the ways that resolv.conf is nice is that you can set the configuration by simply copying a single file that isn't ...
datasette-showboat 0.1a2
Release: datasette-showboat 0.1a2 I added an option to export a Markdown file from my app that lets Showboat incrementally publish updates to a remote server.
Quoting Richard Fontana
FWIW, IANDBL, TINLA, etc., I don’t currently see any basis for concluding that chardet 7.0.0 is required to be released under the LGPL. AFAIK no one including Mark Pilgrim has identified persistence of copyrightable expressive material from earlier versions in 7.0.0 nor has anyone articulated some viable alternate theory of license violation. [...] — Richard Fontana , LGPLv3 co-author, weighing in on the chardet relicensing situation Tags: open-source , ai-ethics , llms , ai , generative-a...
Vibe coding SwiftUI apps is a lot of fun
I have a new laptop - a 128GB M5 MacBook Pro, which early impressions show to be very capable for running good local LLMs. I got frustrated with Activity Monitor and decided to vibe code up some alternative tools for monitoring performance and I'm very happy with the results. This is my second experiment with vibe coding macOS apps - the first was this presentation app a few weeks ago . It turns out Claude Opus 4.6 and GPT-5.4 are both very competent at SwiftUI - and a full SwiftUI app can fit i...
“Good Taste” Is Just Experience
“In the age of AI, taste is the ultimate differentiator.” I keep seeing a version of this on a weekly basis. That in the age of AI, taste is the only thing that matters! Taste is what AI can’t replace! And it’s not that I disagree with it… parts of it actually make sense. But I think I finally figured out what was bothering me. When people say “taste,” what they actually mean is experience. Pattern recognition built up over years of doing the work. But c...
Premium: How Much Of The AI Bubble Is Real?
I’m turning 40 in a month or so, and at 40 years young, I’m old enough to remember as far back as December 11 2025, when Disney and OpenAI “reached an agreement” to “bring beloved characters from across Disney’s brands to Sora.” As part of the deal, Disney would “become a major customer of OpenAI,” use its API “to build new products, tools and experiences (as well as showing Sora videos in Disney+),” and “deploy ...
An AI Odyssey, Part 3: Lost Needle in the Haystack
While shopping on a major e-commerce site, I wanted to get an answer to an obscure question about a certain product. Not finding the answer immediately on the product page, I thought I’d try clicking the AI shopping assistant helper tool to ask this question. I waited with anticipation for an answer I would expect be more informative and useful than a standard search result. But it was not to be. The AI tool had nothing worthwhile. Then I decided on an old-fashioned keyword search across a...
An Intention Upgrade
By ditching the Mac Pro so close to its 50th anniversary, Apple is making a statement of intent for its next 50 years. A mere six days before the 50th anniversary of Apple, the company quietly did something it has clearly wanted to do for a long time. It killed the Mac Pro , a device with a lineage that dates back decades. While it has only been a Mac Pro since 2006, its real roots probably lie in the PowerMac G3 Blue & White, the first new tower produced since Steve Jobs’ return to Apple. T...
What if a dialog wants to intercept its own message loop?
So far, we’ve been looking at how a dialog box owner can customize the dialog message loop. But what about the dialog itself? Can the dialog customize its own dialog message loop? Sure. It just has to steal the messages from its owner. The dialog box can subclass its owner and grab the WM_ ENTERIDLE message. Now, maybe it should be careful only to grab WM_ ENTERIDLE messages that were triggered by that dialog and not accidentally grab messages that were triggered by other dialogs. HANDLE...
Sharing a Name
My bank card never arrived. I called the bank and, after being redirected through several departments, was assured that it had been mailed. Then we argued a bit about what "7 to 10 business days" meant, we were already on day 14. We ended the call by agreeing to disagree. Eventually, I did get my card. But it wasn't the mailman who delivered it. Instead, it was my neighbor from two streets down. On the envelope, my address had been crossed out, and the word "incorrect" was handwritten beside it....
Computing sine and cosine of complex arguments with only real functions
Suppose you have a calculator or math library that only handles real arguments but you need to evaluate sin(3 + 4 i ). What do you do? If you’re using Python, for example, and you don’t have NumPy installed, you can use the built-in math library, but it will not accept complex inputs. >>> import math >>> math.sin(3 + 4j) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: must be real number, not complex You can use the foll...
We Rewrote JSONata with AI in a Day, Saved $500K/Year
We Rewrote JSONata with AI in a Day, Saved $500K/Year Bit of a hyperbolic framing but this looks like another case study of vibe porting , this time spinning up a new custom Go implementation of the JSONata JSON expression language - similar in focus to jq, and heavily associated with the Node-RED platform. As with other vibe-porting projects the key enabling factor was JSONata's existing test suite, which helped build the first working Go version in 7 hours and $400 of token spend. The Reco tea...
Working on products people hate
I’ve worked on a lot of unpopular products. At Zendesk I built large parts of an app marketplace that was too useful to get rid of but never polished enough to be loved. Now I work on GitHub Copilot, which many people think is crap 1 . In between, I had some brief periods where I worked on products that were well-loved. For instance, I fixed a bug where popular Gists would time out once they got more than thirty comments, and I had a hand in making it possible to write LaTeX mathematics directly...
My minute-by-minute response to the LiteLLM malware attack
My minute-by-minute response to the LiteLLM malware attack Callum McMahon reported the LiteLLM malware attack to PyPI. Here he shares the Claude transcripts he used to help him confirm the vulnerability and decide what to do about it. Claude even suggested the PyPI security contact address after confirming the malicious code in a Docker container: Confirmed . Fresh download from PyPI right now in an isolated Docker container: Inspecting: litellm-1.82.8-py3-none-any.whl FOUND: litellm_init.pth SI...
How we get radicalized in America
Be healthy, be young, fall ill. You have a great job of course, you have insurance. It would be ok if the worst thing about health insurance in America was it is hard to navigate. No! The actual problem is that your insurance is incentivized not to cover you at your most vulnerable moment. You pay them every month. That's money that goes from your paycheck, into their pockets. Now if they cover you, that's money that leaves their pocket, and go into your treatment. There are two ways they can ma...
Considering mmap() verus plain reads for my recent code
The other day I wrote about a brute force approach to mapping IPv4 /24 subnets to Autonomous System Numbers (ASNs) , where I built a big, somewhat sparse file of four-byte records, with the record for each /24 at a fixed byte position determined by its first three octets (so 0.0.0.0/24's ASN, if any, is at byte 0, 0.0.1.0/24 is at byte 4, and so on). My initial approach was to open, lseek(), and read() to access the data; in a comment, Aristotle Pagaltzis wondered if mmap() would perform better....