Pinned Dennis Forbes ·

Added some microblogging facilities for those micro-thoughts I often have during the day, links I might want to share, etc. Yeah, I’m not going to use Twitter, Threads is barely any better (and at this point Meta is basically an arm of the US government), and meh…if I was the only person to ever look back on this I’ll still consider it worthwhile.

Dennis Forbes ·

Recently monitored my basement for radon levels, discovering it was approaching 200 Bq/m3. That’s at the edge of recommended corrective action, according to Health Canada.

Canada has significant uranium deposits across the country, and radon is frequently cited as something to be aware of. And we’re big fans of basements, exacerbating the issue.

As a bit of background, radon is a noble gas that is a decay product of uranium (through a long and complex decay chain with many other elements in between). Once the decay chain makes it to radon, it can permeate through rocks and soil where it finds its way into our homes, usually via the basement.

Amazingly radon only has a half-life of 3.8 days, then decaying to polonium-218 and then lead-214, then to a more stable lead-210 (still radioactive, but with a half-life in the decades). The transition from radon to lead-210 happens in just a couple of hours, but in between there are radioactive solid particles that attach to dust and the like and can be breathed in. Those particles throw off DNA-damaging alpha-radiation when they decay, so they’re best avoided where possible.

Alpha particles only travel a few cm, and can be blocked by something as simple as paper. They can’t even make it through skin. But if you breathe in those transition elements and it then decays internally, the alpha particles can cause DNA mutations in the lungs that could lead to cancer. For the same reason you don’t want to eat sources of alpha particles.

Anyway, being just under the remediation limit wasn’t comforting, so I researched things I could do quickly. One easy recommendation was to seal off the sump pump, if one is in place. And indeed there is the classic Canadian home sump-pump in this basement, with a pit with an installed pump to ensure that groundwater doesn’t rise too much around the base of the home. It is the one area of the foundation where there isn’t a thick cement layer blocking gases from getting in.

Sealing it off was nothing more than some plastic wrap taped to the discharge pipe and then tented securely around the base, preventing the circulation of air around the sump pump from mixing with the general basement air. There are a number of third party plastic covers that achieve the same goal.

Almost immediately the radon level dropped to below 50 Bq/m3. Over time an imperceptibly thin layer of Pb-210 will cover the inside of this enclosure as the radon is forced to complete its decay chain in this plastic prison, throwing off a minute number of alpha particles that fall harmlessly off in a remote corner of the basement.

Dennis Forbes ·

I’m a big fan of 4X (eXplore, eXpand, eXploit, and eXterminate: 4 eX*) and RTS strategy games, my experience starting with Empire on the Atari ST1.

I played every Civilization (4X) game, every Command & Conquer (RTS) and Warcraft (before it became an RPG it was an RTS). Every Age of Empires (RTS).

A 4X game, as background, is usually turn based and slow-paced, where an RTS is generally more fast-paced. Some RTS games have a significant overlap in philosophy with 4X games — the goal is still the same 4Xs — just at an accelerated pace.

But I always wanted more. There were always features that I wished these games supported. A sphere-based map, for instance, is missing in most of these games. A basic, customizable logic system (“AI”) for units so the game doesn’t end up being mired in bureaucratic hand-holding and micromanagement in the later stages, as it does in most Civ games for instance.

I’ve had various abandoned mini-projects to scratch my own itch and create a multiplayer 4X RTS game that would satisfy all of my wants and learnings from years of playing these games, but it was always a side project that I didn’t want to spend too much time on. It couldn’t interfere with normal professional pursuits, and it required that I stay motivated enough for the side-project to proceed. If the meat of the project — the rewarding part — was behind a lot of preparation work, it was easy to get waylaid. And the moment you’re talking about a multiplayer game on the internet, there is a lot of preparation work.

So it ends up being a chicken/egg thing where there are a lot of things I know that are necessary for a v1 end up being things I just don’t want to work on, so I just put it off.

I recently restarted this initiative, starting with Claude Code/Opus 4.6 as my assistant.

What a revolution in side projects!

Suddenly I’m blazing through the unpleasant-but-necessary structural work that makes the meat of the project possible. In three days I’ve accomplished more than I have in years of starts-and-stops on this venture. I’m still overseeing every line of code, the entire design and every interaction between services, but the structure that builds out around these is close to effortless, comparatively.

Magical. My motivation has stayed sky-high.

At every stage I’ve had to leverage decades of knowledge and experience in guiding the LLM — this isn’t anywhere near the state where a layman can “vibe code” something like this, and I’ve had to pull it back from making a few terrible choices along the way that would have utterly doomed the project — but it’s like having a team of very competent senior devs doing the most time-consuming parts with oversight.

Fascinating stuff.

Rust

I’ve never developed a real project in Rust in my professional career2. I’ve done some brief tutorials, know the philosophy and trade-offs of the language and tooling, and respect what they’ve accomplished, but it never came into my sphere on the projects I’ve worked on.

Nonetheless, for the gateway, api and game server, Rust3 is being used4. It is the proper choice for a variety of reasons.

Security. Efficiency and performance. The ecosystem of tooling. Rust is perfect for this use.

It turns out that Claude is actually a pretty great Rust developer, so it enabled me to use the right choice despite some temporary discomfort. And while of course most modern languages are largely fungible in a way, auditing the code has given me an insanely rapid deep dive into Rust. It was a very rapid acclimation, and I’ve rapidly achieved a pretty high degree of Rust competency.

Footnotes

  1. Friends would stay over during summer break and we’d spend sweltering summer nights taking turns at the keyboard completing our Empire rounds. Eventually the sun would come up, and then we’d bike ride to a beach 16km away. Great times.

  2. My professional life has been filled with Python, Go, C(++), Java, Swift, (Object) Pascal, C# / .NET, JavaScript, TypeScript, among others. To some degree all modern languages are variations on a theme, and it is usually fairly easy for an expert in one to become competent at another. Rust is, I think, the least like the others and the one with the highest learning curve to transition to.

  3. Rust has every indication of being the future of compiled code, for a wide variety of reasons.

  4. The game runs via a web client, using WebGPU or WebGL as available on the client, so that side is being developed using Typescript, Three.js, Vite and node.

Dennis Forbes ·

This entry was inspired by an email I received about my prior entry concerning whey-producing fungus, so apologies for harping on this subject.

The food world has been in a bit of a protein hype cycle for the past few years, with seemingly every category of food offering protein-enhanced alternatives, usually at a significant price premium.

Tortillas, Breads. Drinks. Cereals. Everything comes in +protein variations1.

So there is a bit of fatigue on the topic. Whenever discussions arise about protein options on sites like Reddit — say discussing a new protein drink, for instance — invariably the top ranked replies will be some variation of “I’m so sick of all this protein stuff. You are all getting enough protein already so cut it out with this silly fad”. Like clockwork.

I think most people would be shocked at how little protein they actually get in an ordinary Western diet. While many people might hit the 0.8g/kg RDA minimum (largely via low quality proteins), few hit the optimal 1.0 - 1.2g/kg RDA (1.2 - 2.2g/kg for athletes). And this is a heightened concern for older adults where 1.2 - 1.5g/kg is necessary to avoid sarcopenia. Ideally high in glycine and leucine.

I’m about 78kg, and auditing my own diet — a reasonably healthy diet by most standards — I was nowhere near 78g of protein per day on average, much less the optimal 93g. And note that I eat lots of meat, eggs, cheese, milk, and so on.

I started paying more attention to protein in my diet, and increasingly supplemented protein drinks and bars when I find I’m falling short of targets. I more conscientiously considered protein as a macro in meals.

Your body can create carbs (e.g. glucose) from fats or some proteins, but your body can’t create proteins from oils or carbs. It is essential.

If you aren’t actively targeting a level, you’re probably falling short as a result of incentives in our food supply chains.

Protein is the expensive macronutrient, while carbs and fats are incredibly cheap. This yields supermarkets that have the bulk of their floor space occupied by negligible protein products: There are an endless number of ways to remix flour, sugar, oil and flavourings into an unending array of products, and these are what many people end up filling their daily caloric intake with. When products cut costs, invariably it is the protein that is downsized, the space filled in with carbs and fats.

Many people would benefit from increasing their protein intake, ideally without increasing their saturated fat consumption.

Footnotes

  1. I can’t broach this topic without noting RFK Jr. and his MAHA movement, where they claim they’re going to “end the war on protein”. Which is a weird claim to make in the middle of a protein craze. I suspect their original slogan was that they were going to “end the war on saturated fat”, but cooler heads prevailed.

Dennis Forbes ·

To get it out of the whey (lol), I’m not a vegan. Nor a vegetarian. Though I respect the conviction and choices of people who choose those paths.

I drink milk. I use protein powder that was extracted from milk, as whey happens to be the perfect protein. It is complete, fast-absorbing and highly bioavailable. It’s the gold standard of protein sources.

Most people don’t get enough protein, particularly high quality proteins like leucine. Carbs and fats are our fuel sources, while protein is the essential building blocks.

Meats are extremely resource intensive and have some attached moral issues, and you can’t supplement some meats in your drinks or processed foods. I mean, I guess you could, but that probably wouldn’t taste very good. It would probably be weird if your high protein sliced bread has chunks of chicken in it.

Milk is similarly resource intensive, requiring a whole process that most people would rather not think about.

Occasionally I take a look to see if there has been any progress in synthetic or engineered whey. Turns out there actually has been progress.

Some groups (for instance Verley) have used the genes responsible for whey production in cows and encoded them in fungi (e.g. aspergillus oryzae). They let the fungus loose in a vat, feeding it a supply of sugars, and the fungi ferments that into whey proteins. When extracted and purified it is indistinguishable from milk-sourced whey proteins.

Fascinating stuff. I doubt it is economically competitive, but once perfected and scaled up who knows. One day we might have Fungi Farms keeping society healthy and nourished. I guess we already have mushroom farms, of course, but expanding on that.

Found this all very interesting.

Dennis Forbes ·

There is something magical and motivating about March. After the sparse sunlight and extreme cold of the winter, feeling the sun’s warmth during the lengthening days is liberating. We’re in that transitional period where it’s -12C this morning, but it will be 17C in just a couple of days, veering back and forth as the seasons battle.

I love winter, and all the seasons we enjoy here in Ontario. But there is a point where the cold and glum has overstayed its welcome, and by the end of February we’re done with it.

Time to do some big things.

Apple Neural Engine

I wrote previously about the Apple Neural Engine. Came across a fun entry this morning where a skillful practitioner delves into the hardware. I am a little skeptical of their INT8 conclusion — the industry standard of FP16 x 2 = INT8 only holds where one FP16 op translates into two INT8 operations, and it would be nonsensical if you just wasted half of each operation — but for a reverse-engineered effort it is fantastic.

Dennis Forbes ·

FlashAttention-2 is a Python package that can significantly improve the performance of attention mechanisms in transformer-based models when running on nvidia hardware1. A 7-10x speedup. It does it by some clever memory optimizations, leading to more of the attention operations running within SRAM instead of constantly having to communicate back to GPU RAM (e.g. HBM).

Installing it is often a beast. While there are prebuilt wheels (those are from the official source, but there are community wheel builds as well, offering a more comprehensive collection), builds need to be targeted to a specific combination of flash-attn version, GPU hardware generation (e.g. Blackwell), CUDA version, Torch version, and platform (e.g. x86-64, ARM64, etc.). The community builds has some 384 different variations, and even then it often isn’t sufficient.

So most of the time you end up building the wheel on your hardware. This is the point where a lot of people have issues and abandon the effort and just go flash-attn-less.

It’s a resource intensive build. The ninja build system will use all available cores, each build thread consuming enormous resources, which you might restrain by setting MAX_JOBS to some low number, maybe even 1. Still you’re going to find the build consuming enormous amounts of memory, grinding into paging hell, because while ninja only uses one thread, it calls out to NVCC which then has its own horizontal scaling tendencies, spawning out many copies of CICC (CUDA Internal C/C++ Compiler). CICC makes heavy use of nvidia’s CUTLASS templating engine, and every instance is going to consume 5 to 8GB, even when doing marginal processing.

You reign CICC’s insanity in with NVCC_THREADS, which will restrain NVCC from going wild with its own process spawning tendencies.

# 1. Restrict the build system to 1 file at a time
export MAX_JOBS=1

# 2. Restrict the CUDA compiler to 1 frontend process at a time
export NVCC_THREADS=1

# 3. Target Blackwell (change for your target arch)
export TORCH_CUDA_ARCH_LIST="12.0"

# 4. Build without isolation
pip install flash-attn --no-build-isolation --force-reinstall

With both thread-scale optionals set to 1 a build will take hours and hours, but it isn’t going to churn through your flash storage endurance endlessly paging and will actually succeed. Higher numbers are viable on decently equipped systems.

Just an FYI. I’ve encountered this on just about every new install and finally thought I’d comment on it. It’s the NVCC_THREADS that seldom gets mentioned, when it is by far the most effective way of reigning in outrageous memory needs to install a package.

Footnotes

  1. there are ports for AMD, Intel, and Apple Silicon variants, but the main use is against nvidia

Dennis Forbes ·

Another Winter Olympics has come and gone. It had some moments.

I’m not a huge Olympics watcher — not even for the big nationalistic showdowns — and honestly many of the events are positively ridiculous.

Like, how many people on the planet are doing luge or bobsled? There should be some minimum accessibility/participation floors for sports to be included, and events that require enormous facilities yet only have a tiny handful of involved athletes worldwide probably shouldn’t make the cut.

Kudos to Norway and the Netherlands on just completely dominating again. These countries absolutely owned cross-country skiing and speed skating, respectively, and should be proud of such a stunning overachievement. And to be fair, cross-country skiing and speed skating are both fairly accessible, or at least the base competencies are.

And congrats to the US on winning gold in both gender divisions of hockey. Great performances, and the US dominated opponents in seeding rounds so thoroughly they looked unbeatable. Did not think those games would make it to overtime.

Though the aftermath of that win, particularly the men’s hockey team, has been…well, unfortunate. From the most unathletic FBI director ever trying to steal some of that glory on the taxpayer’s dime, in just a grotesquely inappropriate “me too!” bit of selfishness, to Trump pushing AI fantasies about how he’d win the gold himself and beat up Canadian players, all while dismissing the women’s hockey team’s accomplishment…good god. Just world-level sore-winner cringe.

Unbelievably pathetic, third-world despot type behaviour. North Korea-level stuff. Teams turned into political pawns to try to scrabble for some win among a year of chaos and losing.

Congrats on the win. It’s too bad a political movement tarnished it for their own gain. These vile goblins try to drag everyone down with them, and anyone foolish enough to help normalize their deplorable, childish behaviour has to be considered a willing participant.

Dennis Forbes ·

Early this month I mentioned that I was taking on the CMHA push-up challenge. Proud to say that I just hit 2000 moments ago. Three days early! Every one of those two thousand push-ups has been full range and of excellent form, as I’m a stickler for stuff like that.

Is this impressive? No. Am I proud that I stuck with it? Yup. Actually incorporated more of a daily target for a variety of similar exercises and will maintain this as an ongoing thing.

Conditioning is a fascinating thing. Three days in my chest and triceps absolutely killed, and carried from day to day, and eking out 10 reps was unpleasant. I had to go to the well frequently through the day to try not to fall behind. Now on day twenty, there is zero residual pain or fatigue day to day, and banging out 25 reps on demand is easy.

To try to spin this as broadly wise, we all have an enormous number of ways of staying fit without needing expensive equipment, memberships, and so on. The basics are all that most people need. For almost all of my adult life I’ve carried one or more gym memberships, taking advantage of it sparingly. I’ve probably accomplished more just doing a random challenge this month.

Dennis Forbes ·

A few days ago I noted that I use a lot of Apple devices because of their hardware excellence. CPUs, top-quality screens and speakers and batteries, even storage systems are just class leaders. And performance on Apple devices is seemingly effortless, where my entire history with competitors is that it was basically just a boast, especially in mobile form where if you actually use the capabilities you’ll have blasting fans and a 30-minute battery life.

I’m looking forward to competitors legitimately catching up and giving us options. So when I saw a huge wave of hype-pieces for Intel’s new Panther Lake class of processor, it caught my attention. Pieces with titles like “Intel’s M1 Moment is Finally Here”.

What almost none of these reviewers disclosed, however, is that Intel did a whole press junket where they flew all of these guys out to Intel’s Arizona fab for a whole dog and pony show, wined and dined them, and basically ensured that they would write fawning pieces. Whatever claims any of these people make about how this doesn’t coerce them is delusional nonsense. It instantly puts a shroud over any sense of credibility.

This junket thing is a very old strategy that is massively corrupting, and it is done specifically because it’s an easy way to buy off foolish people who will declare how it totally doesn’t influence them at all and their words are all their own and…

Anyway, it’s an interesting processor. Still uncompetitive single-core speeds, but it makes it up in cores while still being surprisingly power efficient, and it features a very decent GPU.

Some of the makers of laptops with this chip have stepped back from the dodgy “stick a bunch of stickers all over the laptop” garbage they’ve traditionally done as they target the Apple market. Most reviews comment on this (remember the junket, where they were fed narratives), vendors amazingly realizing that sticking of a bunch of ridiculous looking stickers all over a device is not wanted. Probably still going to stuff a bunch of crapware in the OS, though.

I will check it out. Give me a durable, robust laptop featuring this processor at a price that reflects that it still isn’t Apple Silicon tier and it’ll do numbers.

Dennis Forbes ·

Over halfway into the push-up challenge and it’s going well. I currently have a few days of rest banked, several hundred reps ahead of schedule.

Honestly thought I’d drop out three or four days in, when the wall of fatigue and pain hit. The residual muscle recovery and pain seemed like it would get worse by day, and I’d fall further behind. Instead, it just disappeared, and many push-up sets became effortless.

And let me be incredibly clear that none of this is boasting. 90 push-ups a day is not a great achievement. I like fun “better yourself” challenges and this one caught my eye as a fun exercise. But the conditioning happened far quicker and much more absolutely than I expected.

Dennis Forbes ·

After writing that short-form piece about Windows yesterday, where I observed that nothing really ties me to Windows, I realized I should take action.

So I moved my Windows/CUDA machine to Linux last evening.

There was a period of wasted time when somehow nvidia drivers got installed from two sources and broke the package manager while it panicked about overlapped files.

Got that sorted and got everything setup. A super-modern stack where I can use the latest FlashAttention and Triton without a concern.

I always keep machines replaceable, such that every project is always up to current on repos, every document is in some sort of cryptographically protected cloud source, and so on — machines and drives can fail at any moment, and I always operate as if they will — so it wasn’t some big thing. Barely an inconvenience.

And it just works. This piece is being authored in WebStorm on linuxmint. All of my primary apps and toolings are all here. I’m hardly early to using Linux on the Desktop, and have made attempts at mainlining this before, but never has everything I use had first-class support. A number of Steam games even have ports (Valve has been hugely influential in making that happen), and where they don’t Proton can often emulate Windows sufficiently. Gaming on this machine isn’t a big need for me, and I usually just use Geforce Now for that.

The one thing I was concerned about was VNC versus RDP. VNC is trash, and is just a horrendous experience to have to endure, while RDP is almost like being at the machine if your connection is decent. Figured I’d just deal with it and largely lean on SSH terminal connections.

Then I discovered NoMachine. Delightful. The remote experience is significantly superior to RDP (and infinitely better than VNC), and a client was available for my Mac. It has some serious limitations unless you subscribe to their increasingly expensive tiers — for instance limited to the foreground desktop, and thus a single connection, and limited to the resolution of the host machine — but it’s such a step up from the horror that is VNC.

Dennis Forbes ·

I primarily use Apple Macs — while Tahoe was a regression and Apple is an extremely greedy company, the hardware is superb and the chips remain simply the best all around — but a lot of my work entails CUDA-related activities. For that I RDP and ssh to a Windows desktop and a respective WSL2 session on a very beefy Windows machine.

Deployment-wise 100% of what I deploy to are Linux boxes on the business and commercial side, like pretty much all the industry.

I realized today that nothing ties me to Windows, and that it benefits me in no ways. Almost all of my work on that platform has to happen in WSL2 because of FlashAttention / Triton. The former is partly supported in Windows, but it’s a mess. It’s just way better to just eschew it and use Linux.

So for years I’ve used WSL (then WSL2) to achieve this when doing CUDA work.

Along the way there was always some Windows-specific tie-in thing that coupled me with that platform. Some app or communications platform that was best on Windows. Today I reevaluated and this just isn’t the case anymore.

I basically use a fat Windows layer to host a Linux machine. Irony.

Recently saw someone declare it the year Linux takes over the desktop, to yield the cynical reply “We’ve been hearing that for years”. And it’s true, it has been prophesized for well over a decade. But at the same time, change happens gradually, then suddenly. I imagine a lot of people would find that absolutely nothing ties them to Windows anymore, even gamers with things like Steam Proton often find their needs met.

Interesting times. There was a time when Windows was the centre of my professional and personal life. Even obtained my MCSE, MCSD, along with a number of other Microsoft certs. I subscribed to MSDN (and even wrote for their magazine), Technet, and every beta program I could get my hands on. I watched for every move of that company as invariably the industry shifted in whatever direction they moved.

Now? Eh. Microsoft just doesn’t matter to my life. I subscribe to zero Microsoft products. My Xboxes sit unplugged. Azure is the one cloud provider that I have zero deployments on, versus lots on OCI, GCE, AWS, and so on. My once beloved Hotmail account is basically a spam collection vehicle.

EDIT: Realized after writing this that I do use one Microsoft product: Github. It is completely fungible to me, however, and the slightest nuisance and I would just move elsewhere.

None of this is like some angry spiel about Microsoft, and I think they brought a lot to tech world over the years and given that they’re a $3T company they’re doing okay. It was just a shocking realization when I noticed that it just doesn’t have relevance to me anymore.

Obviously other people’s experiences differ.

And honestly if Apple didn’t have excellent hardware I would be probably making a switch there as well.

Dennis Forbes ·

A Great Lunch is easy for those who have no preferences.

That last entry on the lines from the poem Xinxin Ming (which can be found in many varying translations, but with a common meaning), oddly made me think about group eating, specifically the choices leading up to the same.

I can enjoy just about every cuisine or category. I have preferences and favourites, though these shift over years and even by time of year or time of day, but I can greatly enjoy a meal from almost any of the options that anyone might throw in the ring.

Ever deal with people who have made polarized opinions their way of trying to make their choices override others? They do this by “hating” anything but their preferred choice at the moment. Everyone else’s opinions gets invalidated because one person declares that all other suggestions are invalid because they fall in the hated category.

“Burgers? Hate em. Steaks? Hate em. Pizza, hot pot, sushi? Hate em.”

This all or nothing thing has corrupted society generally. It’s the people who think every movie is either 10 or 1, when a vanishingly small number should qualify for such a ranking. Every political party or figure is all good or all bad. Every Uber driver is five stars or one star.

Like…shouldn’t the average Uber driver be 2.5 stars? Isn’t that how the system should work? Isn’t it a massive failure of the system if drivers are kicked from the platform for falling below 4.6? What is even the point of the rest of the range? It’s illusory nonsense that can be found across most customer feedback system.

Dennis Forbes ·

The Great Way is not difficult for those who have no preferences.

If you want the truth to stand clear before you, never be for or against. The struggle between “for” and “against” is the mind’s worst disease.”

Do not search for the truth; only cease to cherish opinions.

Jianzhi Sengcan in Xinxin Ming

Dennis Forbes ·

VLC on the Apple TV has a couple of serious issues.

  • If you access a uPNP network device, it will work the very first time. After that you will have to restart your Apple TV for VLC to again see the device. Decide to watch something on the network? Time to hit system / restart for VLC to have awareness that the network exists.

    No other app on the system has this problem. Other network media players see the devices fine.

  • If you are playing 10-bit HDR content, and your Apple is in HDR mode like Dolby Vision, VLC will completely screw up the tone maps and yield a disastrous posterized mess. You have to switch your Apple TV to SDR mode to get anything tolerable with such HDR files, as the SDR will all least force it within a range where the posterized nonsense is tolerable.

Again, neither of these happen with other players. Infuse, for instance, can support HDR fine and has no problem playing files on the network, no device restart necessary.

On the HDR issue, a while back I figured I’d just solve it myself, to find that building that project for Apple devices is an absolute disaster. Cocoapods have always been an absolute garbage dependency manager — hello circular dependency conflict hell — and despite an incredibly vanilla stack it was just impossible to get a build functioning.

I then asked a member of the VLC team to be told “oh yeah, VLC 4 fixes the HDR issue!”. VLC 4? Where is that? The most recent version on iOS or AppleTV is 3.0.x. Apparently 4.x has been coming real soon now for half a decade.

There are a number of similar VLC issues on macOS. For instance to view in folders on a network device you have to navigate “into” it, where VLC will start playing the first item at that level. You then stop, and now can see the folders and files at that level, so rinse and repeat.

It’s a free product, and is a killer on Linux or Windows. But if the support for Apple devices has such basic bugs, just drop them as targets. These devs owe me and other Apple users nothing, and I am grateful that they considered the platforms, but on the flip side, don’t waste people’s time with a subpar product.

And Cocoapods is thankfully going to put to a merciful end this year. If I never again see a project that uses that trash troublemaker, I will sing a little song of delight.

Dennis Forbes ·

Trump posted a lie-filled spiel of nonsense about a new bridge connecting the countries 🇨🇦🇺🇸 yesterday. Yet another demonstration why the 25th needs to be enacted, where again literally everything the foolish demented diddler said was ignorant, factless trash.

Just lying endlessly, as is his nature. What a clown show idiocracy right now. A worldwide embarrassment as such a great country has become a pathetic farce, headed by a cabal of the worst possible people. The crime-spree is so in the open that I hope Americans realize that these people believe they can never be held accountable.

The moment it was posted everyone immediately suspected it was the scumbag Moroun family from Michigan pulling the strings of the Big Diddler, likely paying a big bribe if the diddler beclowns the US and slows competition. The rent-seeking Moroun family have been profiteering off the Ambassador Bridge for decades, and have done everything they can to block alternatives.

A family privately owning an international crossing is crazy, but that’s how the situation was.

They bought off every politician they could to keep the status quo — that is just the norm in the profoundly corrupt US of A, and it was a corrupt cesspool long before Trump came along and turned every dial to 11 — earning insane profits off of their poorly managed, derelict bridge. Until eventually a governor (Rick Snyder) bucked their influence and let a bridge be built. But only if Canada paid for 100% of it.

Well, it turns out that those people were right. The scumbag Moroun family got the ear of Epstein pal and perennial greaseball Howard “Wig-Salesman” Nutlick and mere hours later Trump was pushing out his nonsense. As an aside, is like everyone in that administration a paedophile and criminal, beyond just being vile, reprehensible people? Is it a requirement to be close to Trump? The political movement dedicated to finding the sex traffickers literally voted them into power.

What an absolute disgrace. Canada needs to shut down the Ambassador Bridge. Having these foolish clowns lying endlessly about this country…it’s done.

This is not short-term damage these foolish self-dealing incompetent grifters are doing. It is going to be a legacy that endures long after this garbage is dead. The US plutocracy/kleptocracy is going to come out of this criminal administration with zero friends (well, maybe El Salvador, Argentina, and the hilarious rag-tag group of pathetic despots that make up the “Board of Peace”), a spiralling economy with no one to fund the largess, and a more and more certain civil war. All while this admin is trying to foment separatism in Alberta…far more likely, clowns, is that Canada absorbs some of the better parts of the US after what is coming.

It has been pretty quiet news, but the US sanctioning ICC judges (on behalf of Israel, as the US will endlessly self-immolate in the service of that foreign nation. However one feels about Israel’s standing on world affairs, it is bewildering how the US has been reduced to a pitiful Israeli client state, where members of congress will literally say Israel first, or actually wear Israeli military gear in the House. Utterly bizarre behaviour, and the US is quite clearly Israel’s El Salvador, where desperate simps try to pony good words from the boss), forcing all America-based companies to cease business with those people, basically put a death clock on US businesses from operating internationally: Visa, Mastercard, Paypal, and even the tech companies…their days are numbered outside the US. This is a completely grotesque and untenable situation.

Everyone is rapidly pursuing replacements. Everyone should be decoupling from that rogue cabal that repeatedly elects absolute garbage to positions of power. The US has long abused sanctions for political ends and everyone just looked the other way, but sanctioning judges and prosecutors in an international criminal court, to which every civilized country belongs (the US and Israel do not, for obvious war criming reasons, and that doesn’t change my set-criteria at all), unveils the whole mirage as the farce it has always been.

Good job, chimps. You got your momentary big tough guy wins, while flushing the future of America down the toilet.

As an aside, every middle power needs to start fining any foreign company operating in country that observes sanctions that aren’t locally recognized. If an American company is making profits in Canada, and they refuse to do business with a Canadian woman because she judged against Netanyahu in the ICC, they should face massive daily fines. If they don’t like it, see ya. Just as they should do in France, Germany, Japan, and basically all the West.

They can all retreat to their gilded land and lick their wounds and write angry tweets CCing JD Vance and other members of the criminal cabal decrying how mean everyone is. It was clearly a massive mistake to ever let corporations from that corrupt state gain a foothold. Any country considering leveraging Palantir, Oracle, Salesforce, Flock, or any other American firm for infrastructure or security business…if you aren’t the US of A, you are insane to even consider such a ridiculous notion. They are all agents of a hostile, rogue nation.

Or they can spin off fully separate divisions having zero accountability, legally or financially, to the original. Whatever they need to do. If Google, Microsoft, nvidia, or any other company is enforcing grotesque war-criminal-serving sanctions in a sovereign nation besides the US and Israel, they should be sent packing. The short term harm will be tough, but long term it will be great for everyone.

Everyone can just cluck and imagine that the fetid bag of shit will just die soon enough and it will blow over and things will go back to normal — this is literally how many Americans are treating it, like some funny troll that, you know, only has four years to cause chaos — but it won’t. This trash exists top to bottom in American politics, and it is not a trustworthy partner in any matter. How a country could elect such a depraved criminal is…good god. It’s a symptom of a problem much deeper than one malignant narcissist diddler creep.

As an aside, I would be remiss to point out how hilarious it is to see the Big Diddler constantly railing about Canada making a relatively small trade deal with China. China has dick-slapped this foolish simpleton in the face repeatedly, and have come out of Trump’s pathetic threats stronger than ever, but Trump has announced a dozen or so “deals” with China so far, often just making up details for his smooth-brained base to celebrate. Chairman Trump is desperate for any iota of attention he can get from Xi, even if China basically shrugged and moved on, knowing America is an empire doing a historic speed-run decline.

Chairman Trump is desperately offering up all the latest tech and China is saying “Nah, bruh.” How pathetic.

Canada makes a small deal and suddenly we’re cancelling the Stanley Cup? Someone take grandpa’s phone away, he’s sundowning. It will be great for the world when that vile creep dies, but Americans are fooling themselves if they think that’s the end of it.

In other news, right on target for the 2000 push-up challenge. It was looking grim over the first couple of days as muscle fatigue and pain made it seem unsustainable, but the conditioning started happening much quicker than I expected.

Dennis Forbes ·

Hacker News is a community of many disparate voices and opinions, at every level of skill and coming from many perspectives, demographics and corners of the globe. In this entry I’m talking about the average HN user, which I will label Joe HackerNews. The aggregation that decides what comments and submissions rise to the top, and ensure that others are pummelled to transparent or flagged away.

Use the site enough and you can clearly see trends and group-think come and go. It has been interesting watching the evolution of AI discussions on the site.

There are the oft cited five stages of grief that people move through when confronted with a shock or loss. It’s a controversial simplification device, and like a Barnum effect we make reality fit the stages when often it’s much more nuanced and non-linear.

Whatever. This is a football 🏈🦉 Sunday before-first-coffee post, so I’m running with it. Lots of pushups left to do.

Denial: “AI will never understand the code I work with, or the complex domain I work in. That’s only a tool for shitty web apps and juniors that don’t know what they’re doing!”

Anger: “AI stole all of our comments, blog posts and github repos. Do you think we can sue and shut them down?”

Bargaining: “Okay I installed CoPilot and read a tutorial on how backpropagation works. Pretty much up to date. I’m AI augmented and ready for the next century. Should I vibe code the next $10B SaaS unicorn?”

Depression: “It’s over. The field is ruined. Our educations and experience are worthless. The end is nigh.” ⬅️ WE ARE HERE

Acceptance: To be seen how this unfolds.

The denial phase was intolerable, people desperately trying to convince everyone that they are a unique snowflake and work in an advanced unique domain with unique needs, where there’s no way the thinking machine has relevance for them. You still see this sort of person occasionally — “only bad developers get value out of AI, but not me because I’m a great developer” — and generally it’s just delusion with a side of denial.

Just as weird are the “AI has peaked” sorts. At every stage they’ve announced that this is it, AI can’t get any better and now we just wait until the big ponzi-scheme that is the AI market collapses and the ruse will be over. And then it keeps getting better again, and again, and again, even with unknown outsiders on a tight budget popping in with crazy models that make last year’s SOTA look like garbage.

Anger was a conflicted one where the same people who celebrate that information should be free, everything should be open source, every API public, and so on, lamented that algorithmic use was made of that. It’s especially weird when developers complain about other developers looking to automate their jobs away, because this is literally what most software development is: In some way we’re making a machine do something a human could do. Our entire profession is allowing people to do more with less.

Even if you just make a library and post it on github…aren’t you taking away the jobs of every business that would have had to employ developers to make that functionality from scratch, you monster?

Bargaining saw about a thousand “Introduction to tokens” submissions being voted to the top, followed by waves of basic neural network explanations. And to be clear, I’m not being patronizing in noting this, but you could see the collective move to the “if you can’t beat ‘em, join em” stage, perhaps not realizing how outrageously high the entry stakes are now.

Joe HackerNews is now at depression. Posts like this one lamenting the loss of the craft are topping the front page. The comments across almost all AI discussions are veering to positively grim, and have a very “end game” feel to them.

This isn’t the first time the community felt such a threat. Around the turn of the century every board was sure that all software jobs were going to India. The release of GUI builders like Visual Basic were going to put software devs out of work, making building apps into simple work, and even apps like Microsoft Access had forms and flows and could run as an application built by a layman.

Before that CASE tools were going to automate it into some middle-management drag and drop.

I very much have skin in this game. Aside from my own professional operations, one of my sons is in the middle of computer science program, just starting some coop placements. Another is still in high school and makes good money developing for the Roblox community. A daughter does creative works, including 3D modelling for games, and obviously she can feel the pressure on her field. My other son is still selecting his career, considering the medical field, and even there, like almost everywhere, AI is ominous.

It is something I think about constantly, and it can feel overwhelming and like there is no clear path to prepare for the future.

I have notes that I’ll use for a much longer piece on AI that I’ll get to at some point, and this microblog piece was not meant to be particularly illuminating or useful. Just some lazy morning thoughts.

If there is one take away that I would offer up: You can’t argue reality away. Posting comments saying AI is trash, slop, can’t write good code, etc, doesn’t change the path that we are on the tiniest iota. You can’t argue a different reality into existence, and it’s just wasted words trying to do so, even if you find a community that will start chanting in unison to manifest their hopes.

AI is already surprisingly good, and it’s rapidly getting better.

Dennis Forbes ·

On just day two of the 2000 push-up challenge, and it’s looking more daunting than I originally imagined.

Push-ups are in isolation easy. I’ve done countless over my life, though never in large numbers over a short period.

Getting 110 finished on day 1 was easy, trying to get a little ahead of the daily 87 or so to hit the target. It made it seem like this would be the easiest thing in the world.

The part I forgot about is the muscle recovery / fatigue / pain on the next day. I’m clearly out of shape, making this doubly worthwhile of a goal, but also doubly difficult.

Still got ahead of the quota today, thankful I made today easier by doing extra yesterday, but interested to see how this plays out. Will I condition up quickly enough that I can start taking gap/recovery days and make it up on the fill days? Will the pain and fatigue gain quicker still?

I track this in my Obsidian daily notes. I added a numeric property to the template for the trial period, and on each new daily now it pulls the accumulated pushup_total from the day before forward, adding it with the push-ups done the day before. A convenient way to track it with my normal tracking without yet another spreadsheet.

Dennis Forbes ·

The Canadian Mental Health Association is running a challenge from February 5th to the 27th, participants challenged to complete 2000 total push-ups over the period. It is a fund-raising effort to support CMHA, but also to raise awareness of the 2000 lives lost each day to suicide.

Lots of people will get fitter in the process.

I’ve taken on this challenge, and we’ll see. Around 90 push-ups a day is easy enough, right?

These sorts of challenges, finding a reason to do these little self-improvements and to give something to think about at the same time, are always worth consideration.