-
π Devlog
Micro apps - Some Score Cards
In the spirit of maintaining a document of what I’ve been working on, and being somewhat inspired by Matt Birchler’s posts about his micro apps, I’d thought I’d document on some of the small apps I’ve worked on recently.
The fact of the matter is that I’ve been building quite a few of these apps over the course of the summer, primarily in response to a specific need I have at the time. I haven’t written about them before, mainly because there didn’t feel like there was much to say. Some were vibe coded, and saying that I “made” them didn’t feel correct. Others were made by hand, but they were super simple and there was no real challenge in making them at all. In either case, being able to say “I made it” is difficult as the amount of effort spent in making it is quite low, and that doesn’t make for interesting blog posts. Would a post saying that “I went to work today” be worth reading if that’s what I do every weekday?
Continue reading β -
More work on assets for my niece’s game. This time I tried something organic: a tree. Not the most difficult organic thing, I agree. Need to build up to the hard things.
-
Was not expecting to spend yesterday morning working on Dequoter, my Boop clone. Opened it up to do some light work and when I looked up, a couple of hours have passed. Added a few more processors to deal with lines, such as splitting and joining on commas. Added a status bar for processes that return information rather than filter text, such as returning a line count.
Also integrated UCL, because of course I did. Added two commands: a
UCL: Evaluatewhich executes the input as a UCL script and displays the response in the status bar, and aUCL: Replacewhich replaces the UCL script with it’s output. This makes it possible to generate text from scripts, like a bunch of lines to test out the line count processor:map (seq 20) { |n| "Line $n" } | strs:join "\n"
It’ll also make for a useful scratchpad for testing out some UCL commands.
-
Have finished a working version of my game for my niece. It’s only the free typing mode for now, which is essentially a basic text editor, with some colour options mapped to keys F1 through to F8. I’ve deployed a browser-based version of it if you’re curious.
-
π Devlog
Game For Niece β More Art and Cropping Ebitengine Images
Drew some more artwork and started integrating it into the game. Replaced the previous bus image I got from an image search with one I created myself using Affinity Designer:
It’s orange, just like the busses round here, although this one has a plainer livery.
I’ve not integrated the car just yet: I’m hoping to finish off the animations for the bus first. But I’m so glad I embraced Affinity Designer for this. I’m surprise I haven’t considered it sooner. The whole image is designed as a whole, then I export each component β body, door, wheels β as a separate PNG and recompose it in the code, giving me the means of animating each component. I’d imagine this is a pretty typical workflow: and I’m surprise I haven’t considered this sooner too.
Continue reading β -
Well, would you look at that. Turns out I can draw⦠somewhat.
-
Rendering Outlined Text in Ebitengine
A method for rendering outlined text using the Ebitengine and the shapes package by creating a separate image for the text and applying an outline to it. Continue reading β
-
Just placed the exit on Level 3-2 on my Godot game. The level still needs prettying up but the critical path is now done. I’ll think this will be the last level I build. There’s still so much work to do: polishing, backdrops, menus, etc. But no more content. Kind of want to put a pin in this one.
-
So this is what Christmas in winter feels like. π₯Ά
-
Trying out MB Manager by @timapple. Not bad. I like how snappy everything is. I also like the option for a serif font. Quite a unique way of reading Micro.blog.
-
Some Caution on Using ROWIDs for Primary Keys in Sqlite 3
Relying on ROWIDs in SQLite can lead to reused IDs, causing issues with foreign key cascading deletes, which can be mitigated by using the
autoincrementfeature despite its overhead. Continue reading β -
Trying Out Pagefind in Micro.blog
Setting up Pagefind in Micro.blog and some early thoughts using it. Continue reading β
-
π Devlog
Godot Project - Level 3-2 And Bobbing Water
After some distractions, progress on a Godot game level is underway, focusing on design elements like a generator sprite and a dynamic water mechanic. Continue reading β
-
π Devlog
Blogging Tools - Image Collections Triage App
Using Google Antigravity to add an improved image triaging feature for Blogging Tools, allowing the user to categorise images from posts and automate header image updates. Continue reading β
-
Three nuisance calls today so now call screening is being turned on. I think this feature deserves a “finally.”
-
First Impressions Of Google Antigravity
Testing Google Antigravity revealed its potential as a coding aid, but the overwhelming suggestions and interface design deterred further use. Continue reading β
-
π Devlog
Laying The Groundwork For Dynamic Header Images
Making some changes to the Card theme I’m using for this blog. First think I’m considering is a banner image, similar to the one in Scripting News. And like Scripting News, I’m hoping for the image to change occasionally. I’d like the change to happen when the blog is being built, and in order to do this, I need a way to configure this value. I’m hoping to use Blogging Tools to do this, but to actually make use of these values, I’m hoping to use Hugo’s resource data methods.
Continue reading β -
π Devlog
Dynamo Browse - Item View Annotations and Asynchronous Tasks
Adding to the UCL extension support in Dynamo Browse the ability to annotate displayed result items, plus scheduling tasks that will be executed in the background. Continue reading β
-
π Devlog
Godot Game - Level 3-2 and a Rotating Platform
Starting to work on level 3-2, and adding a new rotating platform mechanic, with some thoughts on how to build it. Continue reading β
-
Discovered that turning off “Convert pasted HTML to Markdown” in Obsidian has eliminated the need to select Edit β Paste and Match Style when pasting things from the terminal to a note. So glad this setting exists. One more of those things I wished Obsidian had, and sure enoughβ¦ π«² π«±
-
Anyone remember jQuery Mobile? Looks to be live and well on Tram Tracker. First time I actually noticed it, as I usually don’t have a need to visit the website.
-
My eye has been wandering towards the Cards Theme of late. It was enough of a pull that I decided, after a couple of schooners this evening, to switch this blog over to it. The Mythos theme is good, and the changes I made to the index page to display posts in a similar way to Scripting News was an interesting experiment, but I don’t think it fit the type of site I wanted. I’ll give the card theme a try and see if it’s a better fit for me.
-
Whew! Made it home. A bit of a delay but given the strong winds, it’s fortunate that the commute wasn’t longer than it was. Could’ve been much worse. Good thing that large tree branch didn’t fall on the train line (it was close enough to brush against the side of the train).
-
π Devlog
Godot Game - Working On Backdrops
Trying my hand in making some mountainous backdrops for world 3. Continue reading β
-
Finally added some checkpoints to level 1-3. Also added some animated water as a new type of hazard. The asset pack I’m using came with a single “wave” tile. I used Aseprite to shift that across 4 cells and configured it as an animation in the tile set. I was planning to add some background waves too, but that made it a little too busy and hard to discern. Less is more here.
-
A small devlog entry today. Just painting the level, adding background tiles and kill-zones. I also added a frame around the lift door, just to define it a little. Discovered that it’s probably best not to have sprites with non-even dimensions. It makes positioning them a little awkward, resulting in fractional offsets. I elected to include a transparent row at the top of the frame sprite, just to avoid this.
-
π Devlog
Godot Game - A Trigger That Reveals Secrets
A new mechanic has been developed to reveal hidden areas in a game when players approach, using an
Area2Dnode that fades tile layers in and out for a smoother experience. Continue reading β -
π Devlog
Godot Game - More on Level 3-1
Placing the exit and adding an invulnerability power-up. Continue reading β
-
Some advice for the TLDraw Obsidian plugin maintainer: drop everything after the words “and” and “then” in these menu items, then remove duplicates. This should bring the menu items down to a number that’s easy to scan. I can manipulate tabs myself, but finding what I want here is a lot.
-
π Devlog
Godot Game - More On Level 3-1
Continuing level 3-1, plus adding some more elements to stop long falls. Continue reading β
-
π Devlog
Godot Game - More On Level 3-1
Continuing the build out of the new zone for level 3-1, plus implement a new variant of the balloon with mine entity. Continue reading β
-
π Devlog
Blogging Tools - Podcast Clip Favourites
Finishing off the favourite podcast clips feature. Continue reading β
-
π Devlog
Blogging Tools - Podcast Clip Favourites
Working on saving podcast clips from Blogging Tools into a Hugo site, done in the “lab notes” running commentary approach. Continue reading β
-
Small change to the thirst mechanic for my Godot project. Switched from discrete thirst levels to a single timer that will tick down if the player is thirsty. This allowed for a change to how I indicate this to the player, replacing text messages that’ll be displayed at each thirst level with a gauge that shows up on the HUD.
I thought that the messages would be enough, but after playing through with them, they turned out to be more of a hindrance. They didn’t communicate the player’s thirst level well enough: they show up for a few seconds, then disappear, leaving the player to wonder how much time they have. This information is now always present with the gauge. Plus, I think it gives more of a sense of urgency, in that a gauge that’s constantly ticking down will encourage the player to play a little faster in order to reach the next water bottle before they perish from thirst.
-
More on that Godot project today. Finally bit the bullet and started working on proper backdrops. I’ve leaving the artwork until later (i.e. I’m procrastinating), today was all about the mechanics, trying to get parallax scrolling working. Fortunately Godot has built-in nodes to make this easy, although I did have to upgrade Godot to 4.5.
This is my first cut, some simple colour banding to represent sky and sand in one of the desert levels:
These two layers were added to the scene as Parallax2D nodes, each with a single Sprite child. Positioning the sprites was a little tricky. Godot suggests placing them at the origin, but what I didn’t understand was that the actual position of the sprite depends a lot on the scroll scale of the Parallax2D node. I added the sky layer without changing the scroll position and it took me a while before I discovered that it was appearing below the camera. Only after reducing the scroll scale to about 0.1 did it start showing up in the viewport (one nice thing about Godot 4.5 is that the “play scene” window includes debug options, allowing you to hijack the camera and move it around the scene).
I will need to introduce some detail in the backdrop layers soon. The bands are too simple and may induce some vertigo when the player is ascending to high platforms. Plus, it just looks boring. Not that they’re meant to be eye-catching but something a little more interesting would be nice.
-
Just a reminder that MacOS comes with a grapher, and a pretty decent one at that. Came in handy when I wanted to visualise a few functions.
-
π Devlog
Trying OpenAI Codex to Produce Freelens Logo Creator
Using OpenAI Codex to make a logo generator tool to allow customisation for different clusters in Freelens. Continue reading β
-
Finally indeed.
-
Ah, MacOS’s locked-down nature strikes again! Was testing the CI/CD build for Dequoter and after downloading the artefact and attempting to open it, I got this warning message:
Turn’s out it was being quarantined by MacOS, and these instructions resolved the issue:
xattr -dr com.apple.quarantine '/Applications/Your Application.app'The binaries not notarised so I wasn’t expecting it to work out of the box. I was hoping that it would do that thing where the app will be listed in settings and I can allow it to launch from there, but I guess there’s something about where this file came from that was too much from MacOS. Ah well, I can live with this for the short term.