If it would be possible to walk to get groceries (and also exercise at the same time), do people choose to drive instead because it's simply easier and faster? They then claim that the goal of exercise is simply not worth it any more given driving is faster (and easier)?
In suburbia where the grocer is surrounded by a parking lot and there's busy roads to navigate nearby then of course people would drive rather than walk, and thus also end up getting a week's worth of groceries at a time.
In a dense mixed use environment where it is easy enough to navigate on foot then the urge to drive lessens and all grocery shopping can be done more frequently and on foot or by public transport.
I've experienced this personally in Australia, where living in suburbia I went grocery shopping once a week with a car and brought back many bags worth at a time, and also in a more dense neighbourhood where I could get groceries on the walk back from work more frequently and barely used my car even once a month. In Europe I only ever walk or get public transport for groceries as I live in a dense area and don't need to own a car.
> If it would be possible to walk to get groceries
It is.
> do people choose to drive instead because it's simply easier and faster?
Some. You also have to factor in the cost of gas (quite high) vs distance vs how much you plan to buy and possibly other factors (like discounts,...).
> They then claim that the goal of exercise is simply not worth it any more given driving is faster (and easier)?
I would think the goal is to get groceries, but yeah. People are quite lazy. The possibility of taking a car or a bus is always there.
- I (https://compile-xc.org) built a compiler for a language I call ‘xc’, similar to Objective-C but designed to be cross-platform and have less square brackets :). It can run on any of {Windows, Mac, Linux, Zynq} and produce code for any of {Windows, Mac, Linux, Zynq, WASM, iOS, Android, m68k, 6502}. It needs no host-platform tools to compile code, so for example I have a signed binary on my iPhone, written and signed entirely on Linux. The compiler currently produces code that is between 2x and 0.5x the speed of clang, which is pretty good for a nascent compiler. It also compiles the same language for execution on a GPU, and makes it trivial to designate parts of your code as data-parallel (https://compile-xc.org/compiler/language/par/). One statement turns a code block into a GPU kernel
- I built (more accurately: am building) a (https://compile-xc.org/compiler/api/uxkit) cross-platform UI framework, so you can write code once, even Table-views, Outline-views, Collection-views, etc., etc and your application will bind to the platform’s native toolkit through a common programming API. The next step here is an “Interface Builder” like application I call RoCkS (for historical reasons), which lets you design the UI for {desktop, tablet, phone} to bind to the same core code, dragging connections between that core code and the UI elements for the different environments
- I built (https://atari-xt.com/os) XTOS for the Zynq - an OS that started with FreeRTOS and added loadable processes, dynamic linking, shared memory, paging, a boot environment that can be scripted like Linux, networking, a graphical UI based on GEM, with a hardware blitter, and HDMI output with Audio islands mixed in. The blitter owns the video memory and uses shared-memory pools to give each “virtual workstation” (GEM-speak for “view of the display”) its own retained-mode and composited graphics memory. The whole OS boots from power-on to desktop in a couple of seconds, which is the reason for making it, rather than just using Linux, I wanted that “instant-on” feeling. It runs on a Z-turn board from MyIR.
- I built an Atari (6502, ANTIC, POKEY, various other chips) (https://atari-xt.com/hardware/x/)emulator, which passes the (https://forums.atariage.com/topic/171296-acid800-an-atari-te...) Acid 800 emulation torture test, and can run games such as Ballblazer, Elektraglide and (https://0x0000ff.co.uk/mov/xt/xtos-aug-11.mov)Despatch Rider. It’s integrated into XTOS, so the OS boots into the GEM-based Desktop.app (written in xc) and you can double-click an icon to launch a game. The plan is to extend that to the ST once I get past the current task, which is …
- I built a Reddit-like website that I plan to launch in a couple of months, written entirely in xc, both the Linux-based server and the client WASM code; the server-side is just xc code, no Apache, no scripting language, just lean-and-mean xc code handling everything from the TLS handshake to the Postgres database back-end. The main difference between (https://blewit.net/)blewit.net and Reddit is that I don’t collect any personal information, don’t track your habits and sell your data, don’t use adverts (tracking by another name) or any of the other dark patterns social media is infested with these days. Blewit is so named because I think they did. One of the other differentiators is that I plan to support the groups with specialist helpers. You can see a selection of them at (https://blewit.net/sandbox) the blewit sandbox - things like rendered music staves from ABC notation, 3d interactive molecules structure from SMILES notation, mathml with an editor to create it, etc, etc.
- One last purposely-separated “helper” from the others because of its scale, is the electronic circuit editor/simulator. I introduced it [url=https://www.eevblog.com/forum/projects/circuit-simulation-fo...]in the EEVBlog projects forum[/url], but no-one seemed to care [grin]. That’s a shame because I think it’s pretty cool, draw the circuit in the editor, you can create your own parts, even store them to a library, add digital logic to pins, import SPICE models, and simulate with ideal or oscilloscope-type probes. It understands transmission lines, tolerances, can run monte-carlo simulations, produce overlaid graphs for {R=1k, 4.7k, 10k} etc., I could go on. The full docs to it are in the (https://blewit.net/post/93083024324820992) Blewit editor-information pages
Overall, looking back at what using an LLM has helped me code over the last half-year or so, it is unbelievable what you can code with AI in 2026. I always used to say that I had too many ideas and not enough time to implement them, well that’s still true, but to a significantly lesser extent…
For all the above “I” is short for “I, with the help of Claude”
E.g.: I painted the Mona Lisa.
“I” meaning “I with the help of a JPEG on a computer and a color printer”.
I wrote my first compiler about 35 years ago, and my first OS around the same time, well before LLMs were on the scene. I know exactly just how much work is involved with doing it well, which is why I’d never normally take on a project like this now I’m retired.
But we do not live in normal times. The language “I” have created (and it’s not as though I just said to Claude “hey, write me a compiler”) is (even if I say so myself) pretty cool. Here’s the full source of a Mandelbrot program:
#import "Stdio.xc"
#import "Par.xc"
#import "../src/include/bench_time.xc"
#define W 2048
#define SIZE (W * W)
i32 main(void)
{
// Eight runs: the first carries one-off costs (a GPU builds its kernel
// then), so the figure is the best run; the first is printed too. Auto
// decides after its fourth (two on each device), and uses the rest.
u32 total = 0;
i64 best = 0;
i64 first = 0;
for (u32 rep in 0..8)
{
total = 0;
i64 t0 = bench_now_us();
par mandel :reduce(+ total)
{
for (u32 i in 0..SIZE)
{
float cx = (float)(i % W) * (3.0f / 2048.0f) - 2.0f;
float cy = (float)(i / W) * (3.0f / 2048.0f) - 1.5f;
float x = 0.0f;
float y = 0.0f;
u32 k = 0;
while (k < 256 && x * x + y * y < 4.0f)
{
float xt = x * x - y * y + cx;
y = 2.0f * x * y + cy;
x = xt;
k = k + 1;
}
total = total + k;
}
}
i64 t1 = bench_now_us();
if (rep == 0)
first = t1 - t0;
if (rep == 0 || t1 - t0 < best)
best = t1 - t0;
}
Stdio.printf("%u %lld %lld\n", (total + 500000) / 1000000, best, first);
return 0;
}
Just one line in that source code is what turns it from a bog-standard C-like program into a GPU kernel, automatically tracked, scheduled, and all data hazards transparently managed.On my M4 max, that one line of code takes it from 481ms to 1.6ms. All ‘par’ does is say “this next block of code, call it “mandel”, is data-parallel, and for the ‘total’ variable all execution units should combine their output to that variable using +
No huge GPU boilerplate, no stream management for data transport from cpu to gpu and back, no memory barriers, no hassle. Just “hey, do this on the gpu”.
GPU blocks are bound at runtime using the best design for the hardware on the machine, obtained by measuring it if it hasn’t been measured before. If it has, the cache is read. The user can always override, which is why ‘par’ blocks can be named.
Next up is an overlapping scheduler, which keeps 3 work units in play {pending, being-processed, being-transferred-once-done} for a processing device (right now, just a local gpu), which is also the multi-gpu story, and even the networked-machines story.
I’m satisfied that my actual engineering is up to snuff, done some pretty cool things over my career. Now I’m just having fun, and LLMs make it easier to have said fun :)
People are way to quick to try to bring others down these days, unless there’s some subtle humour here I’m not getting.