#[test]
fn test_no_subcommand() {
let test_env = TestEnvironment::default();
test_env.run_jj_in(".", ["git", "init", "repo"]).success();
let work_dir = test_env.work_dir("repo");
// Outside of a repo.
let output = test_env.run_jj_in(".", [""; 0]);
insta::assert_snapshot!(output, @r#"
------- stderr -------
Hint: Use `jj -h` for a list of available commands.
Run `jj config set --user ui.default-command log` to disable this message.
Error: There is no jj repo in "."
[EOF]
[exit status: 1]
"#);
Falling in love with inline snapshot testing
My usual problem with snapshot testing is that you need to find the snapshot files to learn the expected output of a test - but with inline snapshots, the expectation is in the test code, which can be updated automatically by the snapshot tool. Neat!
19.02.2026 22:13
π 1
π 0
π¬ 0
π 0
Screenshot of the game. There's 01:24 left on the timer. From my hand, I'm playing a Runner Bean, which reads "On Harvest: Enhance this tile's growth rate by 20%." I'm hovering the game grid, which has crops at various stages of growth already, to decide where to plant my Runner Bean.
For the latest Gosu Game Jam, I wrote a crop-cultivating roguelike deckbuilder in Ruby, where you race the clock to score coins by combining your crops' effects.
This is the most fun I've had creating a jam entry, I've wanted to try making a card game for a while!
orangeflash81.itch.io/topsoil
09.02.2026 18:50
π 1
π 0
π¬ 0
π 0
Every single OS update I think to myself that they mustβve fixed this by now, then check Balance Lock and it says βfixed 10 minutes agoβ
31.01.2026 09:14
π 0
π 0
π¬ 0
π 0
Your HTML page should have a <link> tag in its <head> with rel="icon", type="image/svg+xml" and with the href containing a link to the SVG file as attributes.
SVG is an XML format and can contain a <style> tag to describes CSS. As with any CSS, it can contain media queries like @media (prefers-color-scheme: dark). This will allow you to toggle the same icon between light and dark system themes.
TIL that: 1) you can have SVG favicons nowadays, and 2) they can be styled to respond to light/dark mode automatically
evilmartians.com/chronicles/h...
26.01.2026 14:29
π 2
π 0
π¬ 0
π 0
SF Symbols has some kind of alias system - if you search "refresh" you will find "arrow.clockwise" - but it doesn't show all of the known meanings of an icon in any obvious way.
If you're scrolling through SF Symbols looking for an icon which looks about right, those aliases aren't obvious.
05.01.2026 18:24
π 0
π 0
π¬ 0
π 0
A side-by-side comparison of SF Symbols and Material Symbols. The SF Symbol icons are named "arrow.clockwise" whereas the material icon is named "Refresh". This is repeated for fullscreen and reply icons.
The inconsistency of icon usage between apps is really interesting, and I wonder if it's consequence of how SF Symbols (Apple's icon font) is organised.
Icons are named by SHAPE, not PURPOSE. That could make it more likely for different apps to assign different meanings to the same icon.
05.01.2026 18:24
π 0
π 0
π¬ 1
π 0
Itβs hard to justify Tahoe icons
Looking at the first principles of icon designβand how Apple failed to apply all of them in macOS Tahoe
Agree with a lot of the points in this article. I've found Tahoe's menus take me noticeably longer to scan than before, and I think it's partly down to the inconsistent visual noise of the icons.
tonsky.me/blog/tahoe-i...
05.01.2026 18:24
π 1
π 0
π¬ 1
π 0
A particle simulation in a Chrome browser window. Large blobby red and orange particles surround a yellow point, similar to a flame.
Even better, this ancient version still supports WebSocket integration, so there are some fun browser toys you can play around with.
I enjoyed flailing my hand to interact with this particle simulation (which also works with a mouse): molefrog.com/etc/knife/
04.01.2026 21:28
π 0
π 0
π¬ 0
π 0
A screenshot of the "Leap Motion Control Panel" for Windows
Windows is more promising, because there are older (so more compatible) driver versions available, still branded as "Leap Motion".
After downgrading from v6 to v2 drivers, with a manual patch for Windows 10+ (web.archive.org/web/20250309...), this device works with some of the stuff on itch.io!
04.01.2026 21:25
π 1
π 0
π¬ 1
π 0
A Windows dialog with this text:
This program can only be installed on versions of Windows designed for the following processor architectures: x64
I suspect the development scene was more active when this gadget first released π
In an itch.io search for "Leap Motion", every macOS game is either too old to run, or can't see my hands.
The Windows driver doesn't support ARM, so no Parallels.
I'll have another go later on an x86 Windows PC!
04.01.2026 17:25
π 1
π 0
π¬ 1
π 0
A macOS camera selector menu listing "Leap Motion Controller" as an option
The infrared camera actually shows up to macOS as a camera, but sadly selecting it doesn't seem to work - the video freezes on the old camera. I won't be giving my colleagues Ghost Hunters-style Zoom calls any time soon
04.01.2026 16:54
π 0
π 0
π¬ 1
π 0
A screenshot of the "Ultraleap Control Panel" showing my hands with some tracking skeletons overlaid.
The software is now distributed as "Ultraleap" - somewhat amazingly, It Just Works on my Apple Silicon Mac.
The hand tracking seems pretty good! It feels more responsive than my Quest 2 or 3 in this demo window.
04.01.2026 16:49
π 1
π 0
π¬ 1
π 0
A Leap-branded Micro USB 3.0 cable
The crucial requirements for "startup gadget from 2013" are ticked:
* Dead links in all of the box paperwork
* Micro USB 3.0
04.01.2026 16:37
π 0
π 0
π¬ 1
π 0
The box for a "Leap Motion" controller. It shows the device on the front - a light-grey metal cuboid with a piano-black top. The copy on the front of the box reads "The remarkably accurate, incredibly natural way to interact with your computer."
Do you remember this gadget? It was sold as letting you control your apps/games with your hands.
Young-me saw this in Maplin back in the day, thinking how cool it would be.
I saw one in a second-hand shop, for a price where I'm not too bothered if it's rubbish. Let's satisfy young-me's curiosity!
04.01.2026 16:33
π 0
π 0
π¬ 1
π 0
A VS Code window with three editors:
shapes.rb:
class Rectangle export
end
class Circle export
end
assertion.rb:
export def assert_equal(expected, actual)
end
canvas_test.rb:
import { from 'canvas', :Canvas }
import { from 'shapes', :Rectangle, :Circle }
import { from 'assertion', :assert_equal }
I've done some mad science with Ruby 4.0's new Ruby::Box namespacing feature - what if Ruby had JavaScript-style `import`/`export`, rather than requiring entire files?
You only get what you import, and imported items don't "leak" between files. Try it, if you dare: github.com/AaronC81/rixby
02.01.2026 21:35
π 1
π 0
π¬ 0
π 0
Thanks! Iβll keep adding primitives, and polish the editor, until Iβm happy using it for 3D prints (mostly organisers or electronic project boxes)
Aiming to be as parametric as OpenSCAD, where you write code to calculate measurements based on other ones. More procedural/functional than declarative.
01.01.2026 13:34
π 2
π 0
π¬ 1
π 0
SPACE BLASTER by Aaron Christiansen
Minimal space game for Langjam Gamejam
Had a good time with Langjam Gamejam - a week-long jam where you build a language and then use it to write a game.
The resulting game is pretty simple - I didn't have much time left after getting the language to a usable state - but I think it's at least fun!
orangeflash81.itch.io/space-blaster
19.12.2025 23:21
π 2
π 0
π¬ 0
π 0
For a bit of polish and ease-of-experimentation, there's now a basic editor!
Here's one possible implementation of a rounded rectangle. Being able to define a new operation that inspects the geometry, like this `rotate_around_centre`, feels rather useful to me.
13.12.2025 23:01
π 3
π 0
π¬ 1
π 0
Ruby argument validation with pattern matching
Ruby argument validation with pattern matching
aaronc.cc/2025/12/12/r...
12.12.2025 00:20
π 1
π 0
π¬ 0
π 0
Starting to get interesting - now you can write operator modules which behave based on some properties of their children - here repeating the children in a grid.
You can't do something like this in OpenSCAD unless you also pass a separately-calculated size for the children.
30.11.2025 01:40
π 2
π 0
π¬ 0
π 1
A code editor showing an STL preview with a small cube on top of another big cube. The code beside is:
```
// Create an object and make a binding for it
big_cube = cube([20, 20, 20]);
// Reference that binding to create another object
translate([0, 0, big_cube.size.y])
cube([5, 5, 5]);
```
Having a crack at a project I've been thinking about for a while. An OpenSCAD-alike where you can introspect objects you've already drawn - which means less thinking about how to structure your variables for quick thrown-together 3D prints. First prototype works well!
28.11.2025 22:28
π 3
π 0
π¬ 0
π 1
Inline RBS feels like something Ruby 3 needed from the beginning, and now that itβs here it looks really exciting!
Need to find some time to play with it and see how it actually feels to useβ¦
12.11.2025 16:20
π 1
π 0
π¬ 0
π 0
I read a lot of physical magazines when I was younger - Linux User & Developer, NET, The MagPi - and enjoyed the layouts too. You can get a bit creative with your page in a way thatβs harder with an online blog that needs to support different device sizes
09.11.2025 14:19
π 2
π 0
π¬ 1
π 0
Online blogs are great, with a lot of quality content nowadays, but I struggle to actually find new stuff.
Aggregators like HN/Lobsters/Reddit only show you a title. Feed-based socials are too noisy
Magazines make you flick past everything, and you might catch a glimpse of something interesting
09.11.2025 14:19
π 2
π 0
π¬ 1
π 0
Paged Out!
Deeply technical zine. And it's free.
I found out about the βPaged Out!β Magazine, which publishes one-page articles about programming and computing. I absolutely LOVE this
pagedout.institute
09.11.2025 14:19
π 4
π 0
π¬ 1
π 0
The 3D-printed macro pad, now with a thick base plate with a cutout for a USB port, and grey keycaps fitted.
With the 3D-printed base added, and some spare "retro" keycaps, it's good enough for me to call it done!
On the software side, it only needed some little tweaks to support the extra three keys, and swap to active-low because it made the wiring easier.
02.11.2025 23:36
π 1
π 0
π¬ 0
π 0
A 3x3 grid of mechanical keyswitches on a black 3D-printed plastic plate, with a blank space above them
The other side of the plate, with wires connected from the switches to a Raspberry Pi Pico microcontroller screwed into the plate
Next day update: I tried to route wires between the switches and Pico, but couldn't figure out anything I was happy with.
So I remade the plate to have the Pico integrated, which made the wiring much easier!
The blank space doesn't look too great, but I can always vinyl-cut something to go there
02.11.2025 20:32
π 0
π 0
π¬ 1
π 0
let keys_future = async {
loop {
let selected = select6(
f13_pin.wait_for_high(),
f14_pin.wait_for_high(),
f15_pin.wait_for_high(),
f16_pin.wait_for_high(),
f17_pin.wait_for_high(),
f18_pin.wait_for_high(),
).await;
let code =
if selected.is_first() { KEY_F13 }
else if selected.is_second() { KEY_F14 }
else if selected.is_third() { KEY_F15 }
else if selected.is_fourth() { KEY_F16 }
else if selected.is_fifth() { KEY_F17 }
else if selected.is_sixth() { KEY_F18 }
else { panic!() };
info!("Pressing key: {}", code);
writer.write_serialize(&KeyboardReport {
keycodes: [code, 0, 0, 0, 0, 0],
..KeyboardReport::default()
}).await.unwrap();
Timer::after_millis(50).await;
writer.write_serialize(&KeyboardReport {
keycodes: [0, 0, 0, 0, 0, 0],
..KeyboardReport::default()
}).await.unwrap();
}
};
β¦and a little Rust program for the Pi Pico, using Embassy to send keypresses for F13-F18 when pins change.
Embassy makes USB device implementation pretty straightforward π¦
01.11.2025 21:50
π 0
π 0
π¬ 1
π 0
Six Gateron Brown key switches inserted into a black plastic plate, with jumper wires coming out the back
Seeing if I can put together a tiny macro pad to live in my workβs office - I miss my macros when Iβm not working from home!
First steps - a 3D-printed plate with hardwired Gateron Browns (with jumpers I now realise Iβve made far too long)β¦
01.11.2025 21:50
π 0
π 0
π¬ 1
π 0
THE TWILIGHT SAD - WAITING FOR THE PHONE CALL
YouTube video by thetwilightsadofficial
New Twilight Sad, wooo! Fantastic start, can't wait for more...
www.youtube.com/watch?v=P9zu...
28.10.2025 18:15
π 1
π 0
π¬ 0
π 0