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.

Open Source Bridge Will Rock Your Socks Again This Year

Posted by Scott on May 16th, 2010

Last year marked a new first for Portland, OR – the birth of the Open Source Bridge technical conference. In a previous post I expressed a great deal of enthusiasm about how awesome last year’s event was. Those weren’t just kind words – I found myself moved enough by the incredible activism and community in the Portland tech scene to get involved for this year’s conference as a volunteer. That’s right, Open Source Bridge is back in 2010! June 1-4, to be exact.

This year’s event has an outstanding presentation lineup and will be held at the Mark Building of the Portland Art Museum. I had a chance to tour the venue with the OSB organizing crew and must say that the location is really unique, inspiring, and truly fitting for a conference of people who are working to improve the world through quality open source software projects. There will once again be a 24-hour hacker lounge (a major highlight from last year), this time on-site at the Mark Building.

One of the great things about OSB is that it’s a very diverse gathering of open source citizens, and offers a great opportunity to expand your horizons to learn about tools and platforms you may not have encountered before. I will also be giving a variation of my PLUG Advanced Topics talk on OpenEmbedded if embedded Linux systems pique your interest.

Check out the Open Source Bridge website to learn more and register. Trust me – it’s gonna rock your socks.

Startup Weekend Recap – Rawr!

Posted by Scott on Mar 8th, 2010

Last weekend I had an incredible time launching an idea at Portland Startup Weekend. Somewhere around 50 folks showed up, and exciting products were started by nine different teams.

I had my heart set to work on an embedded Linux project over the weekend, and pitched an idea to create a device that could play internet radio streams over FM. This simple media server would allow you to walk around your home with a cheap FM radio and listen to internet radio. Given that the purpose of the event was to embrace constraints and have something noteworthy to demo by the end of the weekend, I felt this was a viable goal to work toward, even if the feature was somewhat of a novelty.

To achieve this, I took an older model Gumstix Connex embedded ARM board, loaded Angstrom (an OpenEmbedded-based distro) onto it, and paired it with an off-the-shelf FM radio transmitter I picked up Sunday morning from Radio Shack. I organized the following milestones and knocked them down one by one:

Milestone 1: Select a command-line media player that can play remote mp3 streams (I used mpg123) and verify that it can be run on the gumstix board with good performance (cpu utilization was only around 10%). Some scripts also had to be developed to make sure that network streams would get restarted if they failed or cut out suddenly (this can happen frequently with internet radio).

Startup Weekend Portland - Getting Alsamixer Running on the Gumstix

Milestone 2: Create a web-based interface for controlling the device, allowing the user to select one of several streams and start or stop playback of them, using a crude user interface.

Milestone 3: Improve the user interface by AJAX-ifying the playback controls, and add an indicator to show which stream is currently playing. This was done using the jQuery javascript library. The resulting web page still lacked a lot in the way of style, but it worked as intended and the HTML passed W3C validation.

Milestone 4: Integrate and test this setup with the FM transmitter and portable receiver. Polish the concept and prepare the demo.

The final result? Check it out:

Screenshot of the Streamasourus Rex Web Interface

As you can see, I had a bit of fun with the project. I named the device Streamasourus Rex. The T-Rex was lifted from Dinosaur Comics. Also, the guys from Mugasha (a Portland-based electronic music webapp startup) were at the event, so I thought it would be fun to surprise them by playing one of the DJ sets they offer from their site during my demo.

I have no intention to follow-through and actually create a business or product out of this, as I have my hands full of interesting projects as it is. But the exercise itself was extremely valuable and is something I hope to keep doing. It’s also wonderful and energizing to meet and hang out with people who don’t just think about ideas, but actually execute them and take some risks.

At the end of the event, each team demonstrated their progress before a panel of experienced entrepreneurs. EyeClash, a team working on integrating videoconferencing with online flash gaming, was chosen by the panel as one of the most exciting projects, and they are receiving three free months of office space at NedSpace.

Team EyeClash

I’d like to thank everyone who came out and put effort into trying something new, and especially to the organizers of the event, who did a great job keeping things rolling. I doubt this will be my last Startup Weekend!

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.

Happy Firefox 3 Release Day!

Posted by Scott on Jun 17th, 2008

If you haven’t heard the news, the release of Firefox 3 is happening at 1 PM Eastern Time today, just minutes from when I’m writing this post. I’m really looking forward to this release because of its speed and memory management improvements. It’s also likely to be a key component of an embedded product I’m developing at work, so I’m thrilled they are releasing it this early – earlier rumors were that it wouldn’t be out until the late summer.

Make sure you download the release within the first 24 hours to help Mozilla set a new world record!

June NHRuby Meeting: Google App Engine, Intro to Python for Rubyists

Posted by Scott on Jun 14th, 2008

I’m really looking forward to this month’s NHRuby meeting, which will include an overview of Google’s new App Engine environment. Brian DeLacey will be giving this presentation, and will start things off with an intro to Python for Ruby developers. Brian also tells me that he’ll have some free books to offer as door prizes, courtesy of O’Reilly’s user group program. Don’t miss out.

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