Sign in

Tom

@contextfree.bsky.social
184 followers 145 following 174 posts

I make videos about computer programming at youtube.com/@contextfree - he/him - God is good. Black lives matter.

PostsRepliesMedia
Reposted by Tom
taxicomics @taxicomics.bsky.social · 04/10/2026
I'm currently on a detour from Rosemary Peaks and I am working on two games for PICO32: The Lost Pages. I'm incredibly happy to be working with my favorite people from the #pico8 scene and I am starstruck 90% of the time. The collection is going to release November 31st for FREE #gamedev #pico32
store.steampowered.com
Pico32: The Lost Pages on Steam
A magical book appears in the woods, transported somehow from another dimension. Pico32: The Lost Pages is packed cover-to-cover with 32 creative games spanning every genre. Its chapters recall the hi...
03611
Tom @contextfree.bsky.social · 26/09/2026
If I ever get my OS done, one key feature is NO UPDATE NOTIFICATIONS EVER. You presumably could still manually visit the site for updates if you want. And even though I like wifi auto backup, maybe it's better just to have no wifi, so you know your system is what you touch to it.
010
Tom @contextfree.bsky.social · 22/09/2026
Yeah, one problem with named args by default is that now all arg names are backward compatibility commitments. In some languages, people expect that for structs but not always for function parameters.
010
Tom @contextfree.bsky.social · 22/09/2026
I guess putting string data in some global data space is like the idea of putting all locals into a global space, but I guess that's usually safe for strings in C based on the idea that it's read only space.
010
Tom @contextfree.bsky.social · 22/09/2026
My other main option I've thought about is to use some (effectively global) buffer as a shadow stack that I push and pop for longer things like local arrays or whatever.
110
Tom @contextfree.bsky.social · 22/09/2026
There's only 4k stack space max per core on the rp2350 (barring tricks I haven't learned), so I have to be cautious with it. One option is to store recursionless locals in some effectively global space. I've considered other options, too, but current plan is to ignore my small stack fears.
110
Tom @contextfree.bsky.social · 22/09/2026
Occurred to me that optimizing locals into global space for recursionless functions might be the same thing as optimizing memory layout for stackless coroutines. I don't think I want to do either at the moment though.
240
Tom @contextfree.bsky.social · 20/09/2026
I'm curious to see how Rue works out.
120
Tom @contextfree.bsky.social · 20/09/2026
I've thought about this kind of thing for years but haven't tried implementing it anywhere: > What makes this simpler than Rust is that loans are second-class: a borrow lives only for the call it is passed to. You cannot store one in a struct, return one from a function, or keep one in a variable.
220
Tom @contextfree.bsky.social · 17/09/2026
Maybe compiler support memory can overlap the end of the global data buffer so I can allocate zero-init globals/arrays in that space to reuse it at runtime. Means there's a smaller global space for non-zero values. Or maybe "include file as byte array" can also be slotted in the reused space.
011
Tom @contextfree.bsky.social · 16/09/2026
Because I'd apparently rather do hard hobby projects than get views, here's a video on making a compiler for the RP2350 microcontroller. youtu.be/Pme2J63HxxU
youtu.be
Starting my own compiler and operating system for RP2350
YouTube video by Context Free
0223
Tom @contextfree.bsky.social · 14/09/2026
I wish new Commodore would release a C256 at 256 MHz, 256 MB ram, and full raster 256 color graphics. In the size of a normal sized keyboard instead of huge sized. Could use the same cpu instruction set. And overall similar user experience would be fine, too. Could include C64 compatibility.
010
Reposted by Tom
Henrique Olifiers @olifiers.bsky.social · 16/04/2026
412232
Tom @contextfree.bsky.social · 06/09/2026
For my rp2350 project, I've been very slowly trying to work through compiling code to thumb2. I've wondered instead if I should make a riscv assembler. But I have no idea how painful it is to code in riscv.
110
Reposted by Tom
Gleam Programming Language @gleam.run · 19/08/2026
Did you know? @ucberkeleyofficial.bsky.social has added #Gleamlang to it's CS course!
Graphic with "Did you know... Berkeley University is now using Gleam for one of its Computer Science courses?" and a smiling pink star holding an envelope with a light bulb
415619
Tom @contextfree.bsky.social · 19/08/2026
Starting to feel like modern computers (and phones) are just appliances I have to use and that tiny spec or retro computers the actual things I choose to engage with.
040
Tom @contextfree.bsky.social · 09/08/2026
Even just typing something manually from a different source has some amount of value, I suspect.
020
Tom @contextfree.bsky.social · 08/08/2026
Considering trying out a text mode for 640x360 text editing, which would give 106x40 chars on my current font design vs 53x20 chars on my already working 320x180 raster. (Main issue for raster size is RAM usage.)
010
Tom @contextfree.bsky.social · 07/08/2026
I guess like old BASIC computers were real hardware under the facade. You weren't buying the BASIC as much as you were buying the computer itself.
000
Tom @contextfree.bsky.social · 07/08/2026
Spending some time with the Fruit Jam makes me think of computers as physical devices rather than just varied specs for accessing common software/internet/system experiences. Well, at least a computer like the Fruit Jam *can* feel like its own thing.
100
Tom @contextfree.bsky.social · 26/07/2026
Quick rp2350 speed summary from *simple* loops: Lua's about 3-4x slower than unoptimized C. MicroPython's more like 30x slower. MicroPython viper can get ints to like 50% slower than unoptimized C but can't handle floats. Unoptimized C on rp2350 is about the same speed as Python interpreter on rpi4.
010
Tom @contextfree.bsky.social · 22/07/2026
Posted a new video on talking to Odin Language Server in Odin. Display is in Raylib, and most of my dev for it has been on Raspberry Pi 4. youtu.be/YE3RkXPWnrY
youtu.be
Coding a text editor in Odin and Raylib on Raspberry Pi 4 that talks to Odin Language Server
YouTube video by Context Free
010
Reposted by Tom
Chimney Sweepers Local 420 @bobbby.online · 21/07/2026
This is a pretty cool experiment from a friend of mine. Some features of the language: - WASM/JS backends - lots of types, everywhere - time travel debugger - tree walking interpreter - Perceus RC over GC - it is fast - ocaml built - algebraic types It feels like Elixir/Erlang and OCaml
341
Tom @contextfree.bsky.social · 12/07/2026
I don't cheer for the death of anyone, even people who cause trouble.
000
Tom @contextfree.bsky.social · 12/07/2026
320x240 can't scale integer fully to either dimension of the most common 1080p monitor resolution, which is sad. 320x180 scales perfectly on both axes, though. Also to 720p (which 240 also does).
010
Tom @contextfree.bsky.social · 06/07/2026
Inline skated over 6 1/2 miles on Saturday. And today I managed to get up and down the bridge over the train tracks (turning around at the top) without killing myself or anyone else. I'm still feeling very sloppy, but maybe making some progress.
000
Tom @contextfree.bsky.social · 06/07/2026
PICO-8 might be *too* restrictive sometimes for my taste, but I'm glad it teaches code size part of the budget. Especially for hobby things, using whatever tech, I'm try to think that if something will end up as too much code (or takes me too much time to work through), maybe I need a simpler plan.
010
Tom @contextfree.bsky.social · 04/07/2026
Maybe I'm just getting old, but I'm getting tired of UIs that cram interactivity into every nook and cranny. Sometimes I feel like there's no safe place to rest my cursor.
030
Tom @contextfree.bsky.social · 02/07/2026
Years ago, I enjoyed reading VSCode release notes. Now it's just AI stuff I don't care about at all. And I mostly wish they'd stop making other changes, too, unless they're making things faster or fixing bugs.
130
Tom @contextfree.bsky.social · 25/06/2026
By the time they stop making Raspberry Pi 400 (as early as 2028?), I hope RAM prices have come down or else they start selling an RPi 500 with half the RAM. Maybe an RPi 50 or something???
001
Tom @contextfree.bsky.social · 15/06/2026
New video: Benchmarking LuaJIT vs Odin speed on Raspberry Pi and Intel, plus Python and Rust! youtu.be/4MdLs3kAp84
youtu.be
Benchmarking LuaJIT vs Odin speed on Raspberry Pi and Intel, plus Python and Rust!
YouTube video by Context Free
011
Tom @contextfree.bsky.social · 03/06/2026
Dev platform I'm trying out: - 4gb RPi4 (effectively RPi 400) - No web browsers but still network access - No games - Lua/Love2D - LMMS and Audacity - LibreSprite and others - VSCodium and Lua Language Server - Terminal, Git, etc. Really not half bad. Losing web browsers is a super power for focus.
530
Tom @contextfree.bsky.social · 26/05/2026
New video! How to capture the spirit of old computing without faking old systems. youtu.be/ilNtp0s9uTY
youtu.be
010
Reposted by Tom
Kenney @kenney.nl · 25/05/2026
I made Godot sad, sorry all
82224
Tom @contextfree.bsky.social · 25/05/2026
I think any home robots *shouldn't* have wireless networking. Data transfer should require a physical connection on the robot's body where it can't actually reach on its own.
010
Reposted by Tom
Phil Lewis @phillewis.bsky.social · 04/05/2026
The Trump administration is closing the office responsible for investigating misconduct and abuse in the immigration detention system, per an email obtained by HuffPost
huffpost.com
Trump Admin Closes Office That Investigates Abuse In Immigration Detention System
The Office of the Immigration Detention Ombudsman is in the process of removing all its public signage and ending its inspections, according to an internal email.
391101740
Tom @contextfree.bsky.social · 04/05/2026
New video! Interview with @mvsamuel.bsky.social and Shaw Summa about @temper.bsky.social, which is also my day job. youtu.be/2rWvUnGJhyk
youtu.be
Cross-language *libraries* with Temper: Interview with Mike Samuel, Shaw Summa, and Tom Palmer
YouTube video by Context Free
012
Tom @contextfree.bsky.social · 28/03/2026
I hadn't heard of it. Thanks for the tip!
010
Tom @contextfree.bsky.social · 27/03/2026
Keyboards are such awesome tech that we easily take for granted. Nice that we could inherit the idea from earlier mechanical typewriter tech.
020
Tom @contextfree.bsky.social · 22/02/2026
I don't know what's the future, and AI causes problems for sure. I don't know if AI will ever be able to think like people. I'm not even sure what that is. But we also shouldn't get too full of our own greatness or imaginary thinking powers.
000
Tom @contextfree.bsky.social · 22/02/2026
Current AI clearly lacks some human qualities, but infallibility isn't one of them. AI is very fallible, yes, but so are people. AI claims confidence in wrong claims, but so do people.
100
Tom @contextfree.bsky.social · 22/02/2026
People often complain that current AI is just statistical predictions rather than real thinking. Thing is that more logical forms of AI have also been tried and haven't done as well, because the world is a messy place.
100
Tom @contextfree.bsky.social · 17/02/2026
New video! Closure capture in JS, Kotlin, Java, Python, Go, Temper, Rust, C++, & Odin youtu.be/FfkDXmcslAM
youtu.be
Closure capture in JS, Kotlin, Java, Python, Go, Temper, Rust, C++, & Odin
YouTube video by Context Free
031
Tom @contextfree.bsky.social · 15/02/2026
It was very helpful! Thanks!
110
Tom @contextfree.bsky.social · 11/02/2026
That demo of the learning site was great, by the way.
120
Tom @contextfree.bsky.social · 16/01/2026
I guess AI bots technically already had access anyway. Maybe it didn't feel like as much of a sellout because of that? Anyway, I guess we'll see how it goes.
010
Reposted by Tom
Freya Holmér @freya.bsky.social · 16/01/2026
okay - approximately how unhinged is this workaround for not being able to call default interface member implementations without a cast in C#?
C# code that reads:
public interface IThing {
	internal int _Number => 1; // hidden default impl.
	public int Number { get; } // *public* accessor
}
public interface IThingA : IThing {
	int IThing._Number => 4; // override
}
public class BThing : IThingA {
	// public accessor emitted from source generator:
	public int Number => ( (IThing)this )._Number;
}
public class CThing : IThingA {
	public int Number => 8; // override
}
10561
Tom @contextfree.bsky.social · 14/01/2026
See the linked blog post at the start of the thread for more on "Why a new language?"
000
Tom @contextfree.bsky.social · 14/01/2026
But in Java: jshell> Map.ofEntries( ...> Map.entry(0, "0"), ...> Map.entry(0.0, "0.0"), ...> Map.entry(-0.0, "-0.0"), ...> Map.entry(false, "false") ...> ) $2 ==> {-0.0=-0.0, 0.0=0.0, 0=0, false=false} Temper has to think about things like this. temperlang.dev
temperlang.dev
Introduction
The Temper programming language for solving problems once via ubiquitous libraries.
110
Tom @contextfree.bsky.social · 14/01/2026
For example, in Python: >>> { ... 0: "0", ... 0.0: "0.0", ... -0.0: "-0.0", ... False: "False", ... } ... {0: 'False'}
240