Sailfish

Sailfish


I’ve picked up my Xperia again, and have been giving Sailfish a fair shake. This involved writing code to replace the apps I left behind on Android, and looking at code I wrote around 2013.

Setting up the SDK

Setting up the SDK was a ball-ache, that’s the main note.

Getting the phone into development mode was straight forward, and the build/install process is done with well-tested tools. That is to say, QtCreator uses qmake to build the project as an RPM, which is then copied to the phone over SSH, and installed with a sensible package manager that pulls down dependencies.

Icinga

Icinga has a well-documented JSON API, so it’s a natural first application to write. On Android I’ve made us of anag, which is proprietary software, so the issues I have with it are (practically) unfixable. Here’s my notes on the development process and the app:

IcingaSF Icon

Misskey

Rather than implement everything Misskey needs (the API is, again, well-documented) - I instead leveraged Sailfish’s ‘WebView’, and only used the API for fetching information for the Cover page.

MisskeySF Icon

Music

I wrote a music player named ‘Shanty’ back in 2013-ish. The stock music player depended on indexing metadata, and my collection was well-enough organised to not need that. On top of this, album art in my collection is stored as ‘folder.jpg’. Usually around 1400x1400 pixels in size. Indexers tend not to handle album-art-as-individual-files well.

Shanty was /okay/. It had some obvious problems, both in terms of code and functionality. But for a first-attempt at developing any sort of application, it would have been a passing grade (without merit).

Porting shanty was difficult. I’d made design decisions at the time that worked, given how Sailfish worked (for example, triggering cover actions by pressing on the cover and swiping). I’d also (seemingly) implemented a convoluted signal-passing system that would propagate state down the page-stack. Understanding the UI code was easy, understanding the long series of conditions I’d written to handle shuffle, replay (track/album) - was not. Some code ended up being redundant (as the QML Audio component has improved over time).

Having written the two small apps above, I took to writing Shanty again from scratch. This time calling it ‘Music’.

MusicSF Icon

Going forward

I’ll probably not write more on Sailfish and QML-based application development. But it has given me something to think about in terms of why people learn to code. I think I'll writ eabout that soon.