Creator of Kid Pix Details the Early Years of Its DevelopmentPermalink

One day in 1988 while I was using MacPaint, the wonderful paint program that came with the Macintosh, my 3-year-old son Ben asked to try using the program. I was surprised at how quickly he got the knack of using the mouse and how easily he was able to select tools. The problem was that he didn’t have total control of the mouse and would occasionally (like every five minutes or so) pull down a menu and bring up a dialog box that he couldn’t dismiss without being able to read. Everything was fine as long as I was in the room, but if I stepped out for a few minutes I would come back and find Ben kicking on the floor in frustration. This was not what I had in mind for his introduction to the computer. As it turned out I was looking for a good programming project. I decided to write a simple paint program for Ben to use.

Wonderful walk through the history and thinking behind a delightful application from the classic Macintosh days. When I was a kid I spent a bunch of time playing with Kid Pix. Can’t say I ever drew anything particularly noteworthy but I sure had a lot of fun.

If you’d like to try Kid Pix today, version 2 is available on Infinite Mac. System 7.5.3 seems like a good host version. Fire it up and navigate to: Infinite HD:Graphics:Kid Pix and double click Kid Pix 2.

Screenshot of Kid Pix 2 running on System 7.5.3 on Infinite Mac. The word 'Hello' has been hand drawn in pink. Below that is a series of icons: dog cow, palm trees, duck, and dinosaur.
Screenshot of Kid Pix 2 running on System 7.5.3 in Infinite Mac.

New Release of Raspberry Pi OS Switches to Wayland Based LabwcPermalink

Simon Long writing on the Raspberry Pi blog:

With the release of Bookworm in 2023, we replaced mutter with a new dedicated Wayland compositor called wayfire and made Wayland the default mode of operation for Raspberry Pi 4 and 5, while continuing to run X on lower-powered models.

After much optimisation for our hardware, we have reached the point where labwc desktops run just as fast as X on older Raspberry Pi models. Today, we make the switch with our latest desktop image: Raspberry Pi Desktop now runs Wayland by default across all models.

Labwc describes itself as “a wlroots-based window-stacking compositor for wayland, inspired by openbox”. I tried out the new release on a Raspberry Pi 400 with 4Gb of RAM and it runs quite smoothly. The user-experience feels unchanged from the previous release, with the top-panel, menus, and window decorations all operating the same as earlier releases.

Screenshot from Raspberry Pi 400 showing the desktop with Firefox, file manager, terminal, and task manager running
Screenshot from Raspberry Pi 400 running Labwc

While the CPU performance of the Pi still means operations like starting applications can be a little sluggish window compositing is buttery smooth with no sign of tearing or lag. This feels like a great change and quite the win for the Labwc project.

NODE Releases Free Book Detailing 1000 Open-Hardware and DIY ProjectsPermalink

New project by NODE:

Today I want to show you a project I’ve been working on. It’s a digital book called Make it Yourself: 1000 Useful Things to Make, and it’s basically a showcase of some of the best open hardware and DIY projects from across the Internet.

The book is free to download and every project is illustrated with a beautiful line art graphic. Download it at: makeityourself.org

Experience Report Detailing Attempts to Rewrite a Rails Project in RustPermalink

Dirk Jonker:

I started building “version 2” of the application. I chose Rust as the language for the backend and SvelteKit for the frontend. Initially, the new version looked great, was blazing fast, but only had about 10% of the required features. As Rust doesn’t really have anything comparable to Rails, I ended up having to do a lot of plumbing instead of writing business code. After a while, it became obvious that I could never write a feature complete version 2 without completely freezing version 1. So version 2 got thrown in the bin.

I did Rails professionally for more than a decade and there’s no argument that it lets you develop functionality quickly. This is partly due to it being a very complete framework, much more-so than all the Rust ones. Rocket comes closest but Rails still has a lot more built-in.

Was this the end of the story? Absolutely not. Having experienced the joy of Rust, with beautifully typed code and blazing fast performance, the feeling of confidence you get when something compiles without errors, I knew I had to have Rust in the application. Despite over four years with Ruby, I still regularly wrote code that had issues at runtime. Mostly issues with null values and unhandled exceptions. After each deploy, I would closely watch the error reporting tools and quickly fix any issues that would occur in production.

Runtime issues are the catch to Rails though. In every Rails app I worked on there was always a constant stream of exceptions, many related to nil. I eventually became quite demoralised by this, especially when on-call and having my sleep ruined by yet another NoMethodError: undefined method for nil:NilClass exception.

When the opportunity arose, I left the Rails ecosystem. I now work on a product that is implemented in languages that don’t suffer these problems1. This entire class of bugs almost never occurs now—and we didn’t have to resort to heroic testing to get there, the compiler does it for you.

I build all personal web applications in Rust now too, including this very site. They take longer to implement initially but once deployed are efficient and stress-free.

Every project is a trade-off though and Dirk addresses some of this at the end of the post:

But what about the downsides of Ruby and Rails then? Well, those are simply things to take into account when writing code. Let me give my opinion here. Have many issues at runtime? Test more. Does it turn into unmaintainable spaghetti code after a while? Only if you let it. It’s typically caused by developers, not programming languages or frameworks. There are plenty of ways to nicely organize your code and you should probably spend more time refactoring.

  1. Mercury and Rust

Welcome to Linked List

Hello and welcome to Linked List. I’m Wesley Moore and through this site I hope to bring you interesting posts on tech with a bit of commentary. Topics include open-source, programming, hardware, software, Linux, Rust, retro computing etc.

The site takes plenty of inspiration from John Gruber’s Daring Fireball, a site I’ve been reading for a couple of decades now. As time has gone on I’ve drifted away from the Apple ecosystem and I feel there is space for a Daring Fireball style blog covering topics outside Apple and mainstream tech news. Basically stuff that interests me—and hopefully you.

I expect the site will cover technology and software ecosystems with a slant toward open systems. If you’re a developer, technologist, Linux, BSD, UNIX user I think you’ll enjoy the site.

In addition to reading on the website you can also subscribe to the RSS feed or follow the Mastodon account, details of which are on the follow page. Thanks for stopping by.