Sunday, 11 October 2026

 

A recent return to RISC OS, and what I’ve been building

I can’t quite believe it’s been nine years since I last updated this blog. I’ve kept busy with programming in the meantime, so there’s quite a bit to catch up on.

I’ve only very recently returned to RISC OS. It has already pulled me back into native C and C++, old source code, desktop applications and a few familiar debugging puzzles. Most of my recent development time, though, has been spent on web and mobile software, alongside several game projects.

A substantial part of my programming has gone into Just Starting Out, the platform I co-founded to help new professionals and businesses find their first customers. The idea is straightforward: give people somewhere to show what they can do, build trust and connect with customers looking for their services.

Making that work has involved quite a lot behind the scenes. The platform uses Flutter for the client applications, with a TypeScript and Node.js backend. The platform has launched, and there is plenty still to develop and improve.

It is satisfying work because the software has a practical purpose. A search result, a profile or a contact request may look simple on screen, but each represents a collection of decisions about data, permissions and how people will actually use the system.

Alongside that, I’ve been building Just the Break, a Breakout-style game connected with Just Starting Out. It uses Flutter and Flame, with themes based on the kinds of businesses the platform supports: plumbers, gardeners, dog groomers, photographers and others.

The idea grew from wanting to make something enjoyable that could introduce people to Just Starting Out. It has turned into a sizeable development exercise involving themed paddles, different tile behaviours, level layouts, animation, sound and a level editor. Getting a ball to bounce is a beginning. Making the game feel good, remain fair and hold someone’s attention takes rather more work. It also forms the basis of another article on ways you can make AI work for you.

I’ve also been experimenting with AI-assisted ZX Spectrum development. Using Devin, I was able to produce a playable platform game from a single prompt, complete with a TAP file. Having started programming in the home-computer era, seeing that happen was quite something.

For anyone wanting a look at the retro game work, here is Basil the Basset on itch.io.

Against that background, my return to RISC OS has been a recent change of direction. I’ve been using RPCEmu on Ubuntu to get back into the environment and revisit older software. Even getting an old Select boot running involved some detective work, eventually tracking down troublesome components including DrivePop and Decor.

On the application side, I’ve been revisiting Sourcery, an IDE-like tool for managing source code and associated resources such as images and scripts. I’ve also been working on the presentation of a Markdown editor and viewer, and a Mermaid diagram viewer. Documentation and text-based diagrams are useful companions to source code, and I’m interested in making those tools feel comfortable on the RISC OS desktop.

Database connectivity has brought me back into some more involved technical investigations. I’ve been looking at older PostgreSQL ODBC software connecting to PostgreSQL 16, considering the features an ODBC-based workbench could offer, and investigating parameter problems in C code using PostgreSQL’s embedded SQL interface.

I’ve also been reviewing how I build RISC OS applications. My previous approach included 26/32-bit-neutral code using StubsG. With the latest Acorn C/C++ DDE available, I’m looking again at runtime choices, dynamic loading and the compatibility I should aim for across RISC OS 4, 5 and 6.

A possible next step is a repeatable cloud build workflow for the existing native sources, using Devin’s environment and RPCEmu to verify the resulting applications. That is something I’m exploring, rather than a finished setup.

Across all these projects, AI has become a useful part of the development process. It helps me investigate unfamiliar territory, work through designs, prepare coding instructions and create assets. It also gives me plenty to check. A plausible answer still needs verifying, and an attractive image still needs the correct dimensions, transparency and alignment before it can serve as a game asset.

Returning to RISC OS has added another interesting thread to that work. I’m enjoying revisiting software I know while asking what I can do with it now. Whether I’m connecting an old application to a database, working on my own start-up, or getting a game running, the satisfaction is still in seeing an idea become something that works.

Tuesday, 12 December 2017

18 months?!

Someone at work this week commented that my blog was not exactly up to date and they weren't wrong.

I have spent a lot of the last 18 months helping my wife with her business (http://www.leaveyouregosatthedoor.com/) albeit it in a IT capacity rather than anything else. As well as what seems like a multitude of websites some of this time has been spent building a mobile app for her.

I always tended to write things from scratch when coding on RISC OS but these days the wealth of freely available tools and libraries means there are no good reasons for doing this and nowadays I tend to look for shortcuts.

When I approached writing a mobile app I naturally gravitated towards Android as this is my mobile platform of choice. Big problem. My wife loves her iPhone. I really didn't have the time to natively code an Android and iOS app and these days I find my brain is getting a bit too full to be learning new technologies at the pace I used to be able to.

Hybrid development

I had previously encountered a cross platform mobile framework called Cordova created by Apache and a variant of it called PhoneGap packaged by Adobe. It was fairly obvious that if I want to write a highly performant app then this might not be the way to go, but I didn't need that so I thought I'd give it a go.

This framework allows you to code in HTML, CSS and JS (I prefer jQuery, but most modern web frameworks would have been fine). It also provides a way to access the native capabilities of the phone such as camera, location services and storage via a healthy range of plugins.

User interface

One thing I wanted that wasn't provided was an easy way to support the native look and feel of the target device. Sure I could build my own CSS to do this, but that would be tedious and time consuming. I settled upon the Onsen UI framework to take care of this for me. This will give a iOS or Android skin depending on the device on which it is running.

Storage

The app has some requirements to be able to store class and course information on the phone so they can be viewed when offline. When I started I used the local SQL capabilities of the phone and kept it up to date using remote web service calls when online.

This worked OK, but updating the schema of the database was tedious and error prone and keeping the data in sync was a little clunky.

Firebase

I was already using  Firebase to send push notifications to the phone and for crash reporting via some of the aforementioned Cordova plugins. I then investigated their Firestore offering.

This is pretty clever stuff. You register a listener against a database on the device with is automatically synced to the version in the cloud without you needing to do anything. Change something in the cloud and it syncs to the device, fires an event and you can refresh the page. No connection? No problem. It transparently handles the synchronisation when you next get one.

And it's fast. Make a change to the database in a web browser and almost instantaneously the update is pushed to the phone.

Only one problem. No Cordova plugin. Maybe it was time I did make the effort to learn a bit of new technology. Writing the Android version was OK - I code in Java at work and there were some good existing plugins to learn from.

iOS was less fun. I consider my C and C++ to be reasonable if maybe a little rusty. How difficult could Objective C be? Oh, and the lack of a Mac to run the XCode IDE on....

The Mac problem was resolved using VirtualBox surprisingly easily - and I have to say I am very impressed how well MacOS runs in a fairly small VM. Much more performant than Linux or Windows on the same spec.

Objective C? Well once you get used to it, it isn't that bad...

End result

So although it will continue to evolve, the app is live on Google Play and I hope at some point soon on the App Store.

The Cordova plugin is available on github and via  npm.

What seemed a relatively simple undertaking did end up causing me to learn a lot of new things but also enabled me to give back a little to open source community via the Cordova plugin.

I'm just glad I didn't decide to try and do it all myself!

The cover page
List of available classes
Class specific details
Guide to some poses

Saturday, 4 June 2016

Nothing beats fixing a 12 year old bug!

Pretty much for as long as I can remember, Sourcery has exhibited a strange problem where it will just stop in the middle of compiling a project. I tried a number of times to find the problem but it was so intermittent that I kind of left it alone.

When I started Sourcery it was on a StrongArm RiscPC. I then migrated to VirtualRPC first on Windows XP and then on Ubuntu.

More recently I have been running RISC OS 5 on RPCEmu - the latest version of this is so good - as well and this is when the problem really started to show itself and I was finally able to track it down. Partly because I had to and partly because looking at the code again after a few years let me see it in a different way.

The problem? When firing off a task to do the compilation I was assuming that when the task handle that came back was 0 then I didn't have to do anything because it had failed. In fact, on newer hardware the compilation stage was just so fast that it was finishing immediately.

The previous intermittent failures were due to the very occasional  task finishing very quickly.

The lesson? Read the PRM more closely.

I wish when I had started coding on RISC OS the concept and support for TDD had been something I was aware of. Any Java coding I do now is always TDD. Both the safety net of coming back and making changes at a later time and knowing you haven't broken anything, and the way it makes you think when coding do lead to much better software.

That's not to say it's a silver bullet. You have to be disciplined enough to do it and to keep the code coverage high.

Thursday, 19 May 2016

Welcome!

Welcome to my new blog. It's quite likely that this won't get updated that frequently, but any new updates to the site or releases will get mentioned.

With that in mind, welcome to the new look Really Small Software Company website. Updated with a fresh new look and with mobile access also in mind.

Sadly this does mean at the moment it may not render 100% in NetSurf. The undesirability of this situation is not lost on me, given that many people who visit this site will be RISC OS users.

However, many won't be and many who are will be well used to traversing the web with other browsers.