I've ported the Piperka client app to Android and it's been available on Google Play as of May 20th. I put the badge on the site template for a while but I'm moving that to just the new user landing page and the about page a while ago. I think you know that it exists by now. I marked the app as having ads but I didn't yet actually implement those. They'll be added in a later update, perhaps.
As of now, the uptake has been quite low. I'm seeing much more activity from the Sailfish version. There's still more I could do with the app, like using notifications to alert about updates, but I'm moving on to other things for now. If and when the app would gain some degree of popularity I would return my attention to it. I suspect that I'm just old school in that I don't have much of an intuition about what makes mobile devices' users tick. I don't use them much myself and as Piperka's design is mostly guided by what I'd like to use myself so I wasn't on a familiar territory when making the app. I hope it'll find some users at least, this kind of was what took most of my development time this spring.
I'm retiring the unofficial Piperka app that's been around for a few years now. Other people are welcome to write third party apps for Piperka (or to send pull requests to mine) but I had to poke a few holes to Piperka's authentication system that I never liked to make that particular app work and now that I have mine published I'm going to require other implementations to have that same base level. If there's something that it did that you'd like the new app to do then please let me know.
I'm going to focus on crawler improvements next. Much of that will be invisible and aimed at catching or even automatically fixing issues before anyone even submits a ticket but one feature that I plan to get out of this is to show comics' update schedules. I have enough data to tell if a comic updates on, say, Sundays or on Mondays and Fridays. I'll just have to look it up and display it.
First off, a couple of notes about monetization. I promise I'm not trying to annoy you with it. I've added Google's AdSense ads as an opt in feature. They're not the kind of ads I'd really want for Piperka so I'm not making them a default, but since they were pretty quick to add (along with the code to not show them) I went with them. Enable them if you don't mind them and don't feel bad if you don't.
I've joined Piperka to Brave's verified site program. If you don't use their browser then this doesn't concern you in any way. If you like, use this referral link and install and use it and I may earn some of their BAT. It's a privacy oriented browser but I can't vouch for it personally as I'm not a user.
I didn't post anything about it on the blog at the time but I released Piperka client for Sailfish a bit over month ago. My goal for May is to port it to Android. I've already got that far with it to get the C++ portion of the client to run on it with some very basic QML layout, which is already quite a lot since the compiled code does most of the heavy lifting. I'm afraid it won't look as pretty as the Sailfish version, at least at first. Their QML objects were opinionated and I could line my app pretty well along their assumptions and as a result I got quite a few things for free for my app. I'm happy with the reception I've got there so far. It's a small platform so the volume was never going to be that big but it did okay, considering.
I had some unplanned service outage on 2nd of April. The whole data center where Piperka's hosted was offline for some 7 hours. I've been toying with the idea of moving Piperka to a fault tolerant distributed cluster with a hot spare node ever since. Some would say that it would be overkill for a site like Piperka and it could come with possible new modes of failure of its own. But it's not a near term thing, either way.
I made a new small addition to sort types. Sort by new subscriptions shows the comics which have gained and lost readers recently. The data is refreshed daily after the readers count history data collection. It's something I've been wishing to keep track of myself and there was no reason not to make it available for everyone to see as well.
After the Android app I'm thinking of doing further improvements to the crawler. I've outlined some of the things I could be doing with it earlier on this blog. Just the kinds of things that you'd never see or notice if they work as they should.
I suppose I was a bit exhausted after getting the Jolla app published and haven't had much focus in April. I expect to pick up the pace again.
I've been busy with coding the mobile client and I'm hoping to release a first version in a couple of weeks. I've just published what I have so far on Gitlab. I put it under GPLv2 (or later) this time around.
This shows the app running in minimized mode, or in cover mode as Sailfish calls it. Tapping on the button on it will open the app and open the first comic on the list in reader mode. The default sort mode for comics is to put the comics with least new pages first. In this case, that would be the second newest page on this blog.
This is the app in reader mode. Clicking on the button at the bottom opens a list of all pages in the comic and the navigation buttons work as you'd expect. In this case, the comic would have two unread pages (never mind that this is with stale data from my development environment). Tapping the forward button once would show the newest page in the archive and update the user's bookmark. Another tap would mark the whole comic as read and open -HEID for reading.
I've had all sorts of fun with connecting signals with all the ways how subscriptions can change and that all seems to work now. All together it's at over 4000 lines of QML markup and code. The main feature still missing before pushing this to openrepos and Harbour is bookmark storage and handling for unregistered users. I'm hoping that it would make the app more approachable towards new users to not insist on coming up with a user name and a password right away.
I still haven't tried the app on an actual phone. I have one but at this stage it's easier to just run it in the emulator. The WebView component used by Sailfish is pretty old and I hope it won't cause trouble with viewing comics.
It's been a learning experience but it wasn't too hard to get started with Qt. It's been a long while since I've last used C++ but it wasn't too hard to pick it up again. Somehow the language had gained lambdas since I last looked at it.
Once the dust has settled somewhat and I've seen what the reaction's been to my app (hopefully not nil) I'll start looking into making an Android version. I'd expect it to be a lot smoother sailing than with the initial Sailfish version. Not that this was all that difficult either, it just took some time to get here. I'm not promising any time frames for that version and I may need to take a bit of a break.
If anyone's interested in providing translations for the app then you're welcome to. I'll maintain the Finnish version myself.
I'm not a big user of mobile devices myself. This old thing is what I usually have in my pocket. It is much more pleasant to hold in it than a large smart phone and I'm not going to worry about any scratches on it. I do have a couple of smart phones as well but they're usually at home unless I know I need to access Internet on the go. Which isn't at all often. But I suppose I wanted to get to learn something new. This is what my browser's tab bar looks like as of now:
I'm making a native Piperka client app. I've pretty much just got to begin with developing it. I've only cursory knowledge of Qt previously which I've chosen for the job so it's a bit slow start. What I have so far is a test app which downloads the list of comics and shows it as a list. For Sailfish, of all things. Qt is cross platform and I'll target Plasma Mobile or Kirigami later on but I have to start with something and I'm just fond of the platform. I still have and use the original Jolla phone. I'll bring it to Android and perhaps even iOS later on.
I know of one Piperka user who used a Jolla phone (other than me). He tested how water resistant his Jolla was. Not much at all as it turned out. I may not reach all that many users on Harbour but I like the idea of how any apps on it stand out a lot better.
There has been an unofficial Piperka client for Android for a long while. This'll be a completely separate implementation from it. I've never used it myself and I don't know if it even works currently. I was contacted once after my backend overhaul a year ago about it being broken and I took measures to unbreak it but I don't think I ever got a confirmation that it worked again. I expect to break the unofficial client for good when I'm done with my client app and I'm hoping that nobody will mind it at that point.
I'll put my work in progress code on a public git repository once I'm a bit further along with it. I'd like it to have some basic features like logging in first. Once I have the basics in place I'll have to figure out how a Piperka client app could be useful.
I can't seem to resist the niche (am I even one to talk about them). I have bought a Purism Librem 5. I suppose it'll be released in time for me to build the client app for it as well.
I've a couple of new moderators. I'm grateful for them for volunteering.
The first new feature of the year is update watch. I've added a checkbox on the updates page and clicking it will set the page to automatically wait for updates. In practical terms, it'll wait for a signal from the hourly update run which will trigger it to reload the updates list. It'll even add an exclamation mark to the favicon to show if any new comics had been added to the list.
This feature went live a week ago already. I didn't announce it right away and I haven't checked from the server logs whether any of you noticed it yet. Looks like it's worked well so far. At least for me. With this, you won't need to hit F5 anymore.
I'm still mulling over the watcher's UX. When it's enabled, it gives no indication about what it does unless it finds updates. It does show an error message if it fails to re-establish connection and reconnects get a message as does the actual moment of downloading a refreshed list. A possible future feature would be to (optionally!) push desktop notifications about updates.
Other than the update watch, I've been working on the moderator interface. I'm storing past entries in a history table now and next up is some sanity checking for moderated content. As it is now, moderators can inject any content as comic descriptions and I'd rather safe guard that it's at least valid HTML.
Editing comic entries and moderating change requests just is something I've wanted to delegate to other people. I'd rather focus my limited time on things that'd demand a bit more than just basic HTML knowledge. "Other people" has been a few local friends so far but that hasn't really worked out anymore. I can't blame them since they've been volunteering for the task in the first place and I'm grateful that they've been at it for so long.
I'm calling for new moderators at this time. You'd get access to the moderator queue and get direct access to edit comic's info pages. Archive and crawler maintenance are still limited to just my own account. The interface for those is in a lot better shape than what it used to be but there's still a few quirks to its use and I think it's still better to keep it more restricted.
If you're a long time user who'd like to help me with this then drop me a message. Or even a fresher one but I'm more comfortable to give edit privileges to a name I recognize. I'll still want to add a few more checks to the moderator interface first but I hope to have a few names to hand roles to in a week or two. I'm hoping to get to hand off editing comics' info pages and not have to think about them much. Piperka's not about comic reviews and I'm not going to try to cater to anything like that but it would do to have a few words on the site about what a comic is about. I don't have much in the line of moderatorial guidelines. I've pretty much just held a policy of rewriting a comic's description if it's using first person nouns. It's fine for a comic's own site but that same text won't suit Piperka.
Speaking of communication, Piperka has an IRC channel on OFTC. Feel free to drop by on the webchat and join #piperka to say hi. I've been idling on the channel for a long while but I don't think I've actually advertised that fact anywhere. No wonder it's just me there.
I took a break from Piperka and wrote a patch for Heist during Xmas. Though it is still tangentially related to Piperka. I'm not about to explain what a monad transformer is on Piperka's blog.