ProgressPuppy: A Fun and Simple Task Manager

Posted by Scott on Sep 18th, 2019

I’ve been taking a self-funded sabbatical from work this summer, and set out with a bucket list of things I’ve always wanted to get around to doing but never felt I had the time to fully dive into. One of those things was to take a Ruby on Rails based task manager that I’ve been using personally for the past year and refine it as needed so I could launch it as a legitimate production-level application.

What does production-level mean to me? In this case, a bunch of things:

  • The app needs to have solid multi-user support with account registration, password resets, etc.
  • Testing and Test Driven Development should be taken seriously. Unit, integration, and selenium-based system tests should reach well over 90% code coverage.
  • The code should pass linting tools such as rubocop and rails best practices, as well as security auditing tools such as brakeman
  • The code deployment process should be simple, capable of rollbacks, and automatable (I’m using capistrano)
  • The server infrastructure that ProgressPuppy relies on should be easily replicable at the push of a button (using infrastucture as code tools such as Terraform and Puppet)
  • The application should have a robust backup and restore process
  • I should be able to keep the application up to date with the latest stable versions of Ruby on Rails and its dependent gems (the app is currently running on Rails 6.0)
  • Use Stripe to accept payments for paid plans
  • Deploy a marketing web site to showcase what ProgressPuppy does and its various plan tiers

The point of this hasn’t been to create a side project that generates significant income – I don’t mind at all if no one but me and a handful of friends ends up using ProgressPuppy. Instead, I wanted to go through the exercise of treating the web app more seriously, but keeping it within a limited scope where the learning would remain fun.

To say that this effort took up a lot of time would be an understatement, but the fun factor remained strong the entire time. I use this tool as my daily task manager, and the various memes that pop-up after completing tasks still bring a smile to my face:

Check out ProgressPuppy if you get a chance. I don’t pretend to have much in the way of web design skills, but the web app is functional and reliable, and I intend to keep it that way as I make further improvements to it. Next on my roadmap is to introduce some daily habit tracking features and make the app more mobile web browser friendly.

ProgressPuppy is also open source software, released under the GNU Affero GPL license. You can find its source code repo on GitLab.

Rails Rumble Recap

Posted by Scott on Aug 26th, 2009

I am happy to report that our Rails Rumble application was indeed completed within the 48-hour time limit! We named the app A Well-Oiled Machine and you can try it here (Update: The Linode server made available to us during the contest is no longer active. I will need to re-deploy the app elsewhere in the near future). The app does require an OpenID account to log in – if you don’t have one I would recommend using myopenid.com.

I had a great time working with Jason and Jesse on this app, though I must give them credit for doing a lot of the heavy-lifting when it came to coding. My rusty Rails skills became evident pretty quickly, and I had to curtail the scope of what I worked on to make sure I didn’t turn into a bottleneck. That said, it was still a true team effort, and it felt good to immerse myself in the Rails world again.

2009 Rails Rumble Hackfest

2009 Rails Rumble Hackfest

The contest required the use of git for version control, and I am sold on this tool. It is fast and the workflow it promotes is much more sensible and flexible than subversion. Deployment remains a breeze with Passenger (mod_rails for apache) and vlad (a simpler deployment tool alternative to capistrano).

Friday night and Saturday we worked from my dining room, and on Sunday we made the trek out to Backspace for the final effort.

2009 Rails Rumble Hackfest at Backspace

2009 Rails Rumble Hackfest at Backspace

It was an intense effort and the resulting app has a couple of rough edges, but we did accomplish what we set out to do, and I consider that a great achievement. Many of the Rumble contestants didn’t even end up with a working app. It was an honor to be able to work with Jason and Jesse on a project together, and I would jump at an opportunity to do this kind of thing again. Thanks guys for your outstanding effort and attitude!

Participating in the Rails Rumble

Posted by Scott on Aug 22nd, 2009

This year I put a team together to participate in the Rails Rumble, a programming competition to create a web app using Ruby on Rails within a 48-hour time limit. In past years I’ve followed the event, but for various reasons not had the time to participate. This year I decided to jump right in, despite the fact that I’m nearly becoming rusty with my Ruby on Rails skills (my last app was written with Rails v1.2.6).

The Rails Rumble is a wonderful opportunity to embrace constraints, get together with some talented people to learn from each other and have a good time. We’re not aiming to win any of the competition categories, but simply to have an application that has some semblance of completeness by the end of the contest. No all-nighters for us this time.

Our web app will be a tool to help you track your vehicle’s maintenance schedule, and send you notifications by email when you’re due for service. While planning how the application would work, it’s been interesting to think of all the possibilities of what it could do, but then having to let go of most of them in the interests of having something simple enough to bang out in a weekend.

When we’re finished I’ll write up a summary post about the experience. But I already know this is the kind of thing I will never have regrets about doing.

Rails Rumble VPS Quick Setup Guide

Posted by Scott on Sep 17th, 2008

Thanks to everyone who came out for the NH Ruby and Rails User Group meeting last night. I think the three-topic format worked really well, and offered something for everyone.

As promised, I have added a page to our wiki with a command-by-command reference for setting up your Linode VPS quickly for the Rails Rumble programming competition. I hope it’s useful for people looking to spend more time during the Rumble working on your app rather than configuring your deployment server.

Jeremy Durham Talks Merb

Posted by Scott on Jul 15th, 2008

If you’ve ever considered becoming a merbivore, tonight’s NHRuby.org meeting will help get you started. Merb, of course, is the upcoming Ruby-based web framework that in many ways is an iteration on Rails itself – more modular, faster, and extremely flexible. Jeremy Durham will be talking about the pros and cons of Merb, and discuss a project of his where he migrated a web application from Rails to Merb. Meeting location and details are on the NHRuby wiki.

NHRuby Meeting Tonight: Rack and NetBeans

Posted by Scott on May 20th, 2008

Just a reminder that tonight is the NH Ruby and Rails User Group meeting in Portsmouth, NH. Details here. I’ll be giving a demo of NetBeans 6.1 and cool things you can do with it, and Nick will be talking about Rack. Update: I’m sorry I was unable to make it to the meeting this evening. I managed to injure my back during the day and was in rough shape all afternoon and evening.

Ruby News

Posted by Scott on Apr 8th, 2008

The RailsConf 2008 presentation schedule has been posted. I’m really looking forward to it as my first RailsConf.

Also, the April NH Ruby and Rails User Group meeting will consist of a live hacking/help session, so bring any code you’ve having issues with or would like a code review on and we’ll work on it during the meeting. Directions and details on the wiki.

Looking Forward to NetBeans 6.1

Posted by Scott on Mar 4th, 2008

NetBeans 6.0 has been a boon to my coding productivity, but as I’ve been using it more, I’ve also encountered some of its problems. The most annoying of which are bugs in the HTML/RHTML indentation engine. See issue 109262 and issue 120491 to see what I mean. The most maddening thing to me is that there is a facility to disable the indentation engine in the advanced options, but it doesn’t work. So I have been wasting a considerable amount of time fighting with the inconsistent formatting “style” NetBeans has been trying to enforce.

I’m hoping that the 6.1 milestones will be stable enough to use – where some of these bugs have reportedly been fixed – and am planning to try them out starting on Wednesday, when 6.1M2 will be available.

Next »

Blog Badges



[FSF Associate Member]

Archives