Progress on the Piperka backend rewrite, part 2
As I've described in the previous blog post, Piperka is undergoing a major backend rewrite.
I'm still in the middle of it. The progress has been steady but slower than what I'd like but that's the way it is with a day job. I may not have the time or the inclination to even touch the code every week. I think enough of the base work is soon in a good enough state to have other people meaningfully submit patches. Though I doubt anyone would step up. As far as required skills go Haskell, Snap and Heist may not be the most familiar tools there are. If you were hoping for some a nontrivial project to practice using Haskell with then this is a good opportunity for it.
I set up a project page on alioth.debian.net. I didn't want to set up anything of that sort for just myself and I felt most comfortable using Debian's own resources for this. It's a bit bare right now but it's a lot better than having everyone just email me as you'd never know that anyone else is involved that way. I know something like github would have had more mindshare going for it but I hope this would not be the stumbling block for anyone.
I'm currently working on enabling site actions like bookmarking, subscribing and unsubscribing. This part is nearly done. The line count stands currently at around 4000 lines of Haskell code, 600 lines of template code and some new sql definitions. Functionally I'm mostly aiming for a straight rewrite of the current site code but I'm making various fixes and enchancements along the way, besides the whole point of using a radically different programming model. I'm happy to say that I've already had a taste of how pleasant it is to modify earlier code with the new code base.
What works now
- Logging in, authentication by session cookie and logging out
- Database access
- Front page
- Comic listings, including browse, top, updates, graveyard and profile pages
- Comic info page
What's still missing
In no particular order and this is most likely an incomplete list. Some features may take a lot more work than others.
- Database connection pooling
- New account creation
- Password recovery
- Account editing
- Redirection to updated comics
- Revert updates page
- All the endpoints accessed by AJAX calls including Reader and Map
- Comic submission and info edit page
- Moderation interface
- Recommendations on info page
- oauth2 authentication (will be implemented after the new site is launched)
The TODO list is longer than the done list but in a project like this the most difficult part is at the beginning and I'm over it already. I expect the line count to hit ten thousand before I'm ready.
Things are progressing but it takes time. If it were more guided by commercial expediency I would not be taking this route with Piperka. I want to take my time to do things properly even if that leads to side tracks like patching Heist or writing a tutorial. It's hard to promise a timetable with something like this but I'm hoping to be there or at least near this spring.
I know all of this is peripheral to what Piperka is all about, that is, helping you read and discover web comics. There's a fair amount of comic entries currently defunct and I would certainly like the number to be smaller. I'm not going to stop and fix them all now. The next step after the site backend rewrite would be to use that as a base to write better site management tools and use that to better get things under control.
I've never laid out a policy on comic tracker bug reports. Some people have taken to send me them en masse. There's nothing wrong with that as such and I do care if there's garbage in the database. However, I would have plenty of possibilities to pick the obvious cases for myself. I'd rather have people request fixes for a few comics at a time, about what they'd really care about not seeing. "Triage" is a dirty word as I would like to treat all comics equally, even though some get hundreds of readers and some have none, but there's only one me and I'd rather use my time currently to help the overall situation instead of playing eternal catch up.
I'm certainly having fun coding the web site using the language and libraries I've picked for the job. Is anyone willing to pay to have me code them web sites with Snap? I'm sure my employer would accomodate a contract. Thought not. Joking aside, I'm not sorry I went along with this rewrite even though there's nothing yet to show for it. I'll get there. Thank you for riding along and have a happy new year.