Workpad
Notes, ideas, and log entries for personal coding projects. The projects may not be public but the work will be.
Subscribe via RSS here

Weekly Update - 3 Nov 2024

I probably should stop calling these "weekly updates," seeing that they come up a lot less frequently than once a week. Maybe I should switch to something like "Sunday updates," or maybe something closer to what this is, which is an excuse to procrastinate by writing about what I've been working on, rather than just working on it. But I'm sure you're not interested in my willowing about the frequency of these updates, so let's just get straight to the meat of it. Cyber BurgerAll the logic, graphics, and sound-effects for power-up/power-downs are now finished. They now spawn in randomly,...

Try-Catch In UCL - Some Notes

Stared working on a `try` command to UCL, which can be used to trap errors that occur within a block. This is very much inspired by try-blocks in Java and Python, where the main block will run, and if any error occurs, it will fall through to the catch block: try { echo "Something bad can happen here" } catch { echo "It's all right. I'll run next" }This is all I've got working at the moment, but I want to quickly write some notes on how I'd like this to work, lest I forget it later. First, much like...

Weekly Update - 20 Oct 2024

Yeah, I know, it's been a while… again. A lot has been happening in life and there've been many days that I haven't done any work on anything. Things are starting to settle down now, although I am expecting a few more bumpy days ahead, so we'll see how we go with project work. Cyber BurgerYeah, I'm getting pretty tired of this one. I'm right in the trough of despair here, where the initial excitement has worn off and I just want to finish it. All the remaining work for it has been defined, which I think helps, and now...

Weekly Update - 22 Sept 2024

No preface today. Let's move on to the update. Cyber BurgerCyber Burger now has sound! I started added some basic sound effects to the laser and the items flying across the screen.  They may change, depending on how I find them after a while, but it's a start. I do like how Pico-8 makes these easy to make: select a waveform, then just draw out the pitch and volume graphically:I also improved how items are spawned. Instead of the item types being completely random, they're now taken from a list, which gets refilled and shuffled once it's empty. This smoothes...

Weekly Update - 15 Sept 2024

Two projects to discuss this week. Cyber BurgerI've decided to ditch game mode A, where the player is given a series of stages they need to clear. Instead, I'm changing this to be closer to an old-school arcade experience. In this mode, you start the game with a 45 second timer, and you need get as high a score as you can before the timer runs out. Your score depends roughly on how large and "interesting" your burger is. Every burger you make also adds 10 seconds to the clock, so the ultimate aim is to balance making interesting burgers...

Project Updates

Well, it's been three weeks since my last post here, and as hard as it was to write this update, not writing it would've been harder. So let's just skip the preamble and go straight to the update. Cyber Burger (That Pico-8 Game)I'm terrible at being coy, I'll just spill the beens. That game I've been working on is call Cyber Burger. It's based on a DOS game I saw on YouTube, and it seemed like a fun project to try and work on, with some tweaks to the gameplay that I think would make it more forgiving. In the...

Project Seed - A Pico-8 Prototype

Oof, another long stretch between updates. This has not been a productive winter. Much of the project I've been writing about here are, shall we say, "on ice". UCL is still being used for the project it's been built for, but there's been no further work done on it recently. I think we can safely say Photo Bucket is dead, at least for now. Blogging Tool and that interactive fiction project is still ongoing, but both are running on a slow burn. I was hoping to get the fiction thing done by the end of winter, but it's likely that...

Current Project Update

Hmm, another long gap between posts. A little unexpected, but there's an explanation for this: between setting up Forgejo and making the occasional update to Blogging Tools, I haven't been doing any project work. Well, at least nothing involving code. What I have been doing is trying my hand at interactive fiction, using Evergreen by Big River Games. Well, okay, it's not completely without code: there is a bit of JavaScript involved for powering the "interactive" logic part. But a bulk of the effort is in writing the narrative, albeit a narrative that's probably closer to a video game rather...

More Tools For Blogging Tool

Spent the last week working on Blogging Tool. I want to get as much done as a I can before motivation begins to wain, and it begins languishing like every other project I've worked on. Not sure I can stop that, but I think I can get the big ticket items in there so it'll be useful to me while I start work on something else. I do have plans for some new tools for Blogging Tool: making it easier to make Lightbox Gallery was just the start. This last week I managed to get two of them done, along...

Blogging Gallery Tool

Oof! It's been a while, hasn't it. Not sure why I expected my side-project work to continue while I'm here in Canberra. Feels like a waste of a trip to go somewhere — well, not "unique", I've been here before; but different — and expect to spend all your time indoors writing code. Maybe a choice I would've made when I was younger, but now? Hmm, better to spend my time outdoors, "touching grass". So that's what I've been doing. But I can't do that all the time, and although I still have UCL (I've made some small changes recently,...

Bulk Image Selection

Some light housekeeping first: this is the 15th post on this blog so I thought it was time for a proper domain name. Not that buying a domain automatically means I'll keep at it, but it does feel like I've got some momentum writing here now, so I'll take the $24.00 USD risk. I'd also like to organise a proper site favicon too. I've got some ideas but I've yet to crack open Affinity Design just yet. Anyway, I've been spending some time on Photo Bucket on and off this past week. I've fully implemented the new page model mentioned...

The Site Page Model

I opened up Photo Bucket this morning and found a bunch of commits involving pages. I had no idea why I added them, until I launched it and started poking around the admin section. I tried a toggle on the Design page which controlled whether the landing page showed a list of photos or galleries, and after finding that it wasn't connected to anything, it all came flooding back to me. So while what I'm going to describe here isn't fully implemented yet, I decided to write it down before I forget it again. So here is where the story...

Indexing In UCL

I've been thinking a little about how to support indexing in UCL, as in getting elements from a list or keyed values from a map.  There already exists an `index` builtin that does this, but I'm wondering if this can be, or even should be, supported in the language itself. I've reserved `.` for this, and it'll be relatively easy to make use of it to get map fields. But I do have some concerns with supporting list element dereferencing using square brackets. The big one being that if I were to use square brackets the same way that many...

Tape Playback Site

Thought I'd take a little break from UCL today. Mum found a collection of old cassette tapes of us when we were kids, making and recording songs and radio shows. I've been digitising them over the last few weeks, and today the first recorded cassette was ready to share with the family. I suppose I could've just given them raw MP3 files, but I wanted to record each cassette as two large files — one per side — so as to not loose much of the various crackles and clatters made when the tape recorder was stopped and started. But...

Brief Integration Update and Modules

A brief update of where I am with UCL and integrating it into Dynamo-browse. I did managed to get it integrated, and it's now serving as the interpreter of commands entered in during a session. It works… okay. I decided to avoid all the complexities I mentioned in the last post — all that about continuations, etc. — and simply kept the commands returning `tea.Msg` values. The original idea was to have the commands return usable values if they were invoked in a non-interactive manner. For example, the `table` command invoked in an interactive session will bring up the table...