👋
Hi
CityStrides
The best way to run every street. Translate your running & walking into real-world accomplishments.
Past Projects
-
2015-2022
All The Internet Of Things
This project was a news aggregation service on the topic of The Internet Of Things. It subscribed to *many* RSS feeds, as well as the topic-following feed from Superfeedr. These entries were saved to the local database, and re-broadcasted via Twitter.
Along the way, categorization was enabled via a machine learning service. The content of the articles were sent into the service, and it returned the categorization.
Similarly, a company association with the articles was created based on who was mentioned within the piece.- Ruby
- Ruby On Rails
- Superfeedr
- Mailchimp
- Stripe
-
2013
Donoku
I poked around at my first Sinatra project the other day: Donoku. It's a simple two-page site to take donations through Stripe Checkout. It's built to be deployed to Heroku & forces SSL, since Heroku gives its "appname.herokuapp.com" domains SSL access for free.
I've already used Donoku twice on my own! Once to accept donations for CityStrides, and once to accept donations for my campaign to be Holyoke's Ward 6 City Councilor.
To force SSL, I used the rack-ssl-enforcer gem. It's really simple to use... Just add the gem to your Gemfile, then require it in your app.rb file & add a single line to require SSL everywhere outside of localhost & the test environment:require 'rack/ssl-enforcer'You can see it in action at the top of Donoku's app.rb file.
use Rack::SslEnforcer, except_hosts: /127.0.0.1$/, :except_environments => 'test'
There's a little bit of a MailChimp integration, as well. After the donation goes through, people are directed to the 'thank you' page that includes a mailing list signup form. There's nothing crazy going on, but it works.
It's also one of my first attempts at using MiniTest instead of rspec. I like it just fine, but the familiarity that I have with rspec keeps me moving faster & the abundence of rspec documentation online gets me un-stuck quicker. I'm glad I tried it, but I'll be sticking with rspec (and might even switch Donoku over at some point).- Heroku
- Ruby
- Sinatra
- Stripe
- Mailchimp
- Minitest
-
2012
Blizzalert
I've re-launched Blizzalert for its third season!
Blizzalert is a web service that provides snowfall omniscience via SMS. It monitors the weather at over 400 mountains across the United States, keeping track of snowfall. You select which mountains you want to watch, and Blizzalert sends text messages letting you know how much snow is coming, where, and when - all before it happens. I wrote a bit about the internals in my post Never Miss New Snow With Blizzalert.
This re-launch is exciting, because I've completely re-written the site & service. It's now a Ruby on Rails app, and I'm using Foundation to make the site responsive - it looks great on desktop computers, tablets, and phones.
Blizzalert still uses the National Oceanic and Atmospheric Administration API to monitor the weather at all of the areas, and it still uses Twilio to send text messages to customers. The rest of the site is completely overhauled, because of my migration from PHP/CodeIgniter to Ruby on Rails.
I was able to use a number of Ruby gems to make development easier. Here are some of the gems that were particularly helpful, and how they helped:
-
airbrake Send your application errors to our hosted service and reclaim your inbox.
I'm using the airbrake gem, and sending all of my error logs to my own instance of Errbit that I've got running on Heroku. Errbit is indispensible for running Rails apps - use it or something like it to make error handling in production a snap.
-
combined_time_select Generates a time_select field like Google calendar.
This was pretty useful for creating a nice form for time input, which I need to give people a way to choose their earliest blizzalert time.
-
newrelic_rpm New Relic is a performance management system, developed by New Relic, Inc. New Relic provides you with deep information about the performance of your web application as it runs in production. The New Relic Ruby Agent is dual-purposed as a either a Gem or plugin.
If you're building/running a site, you need to be using New Relic. The visibility into your app/server that this service provides is amazing, and web developers are blind without it.
-
phone Phone number parsing, validation and formatting.
This was really useful to normalize all phone numbers coming into Blizzalert, and for displaying them nicely on user pages.
-
stripe Stripe is the easiest way to accept payments online.
I still can't get over how easy it is to use stripe. At this point, I wouldn't consider another service to accept payments oneline.
-
stripe_event Stripe webhook integration for Rails applications.
By adding this gem, I get to handle stripe webhooks with simple blocks right from the initializer file. It would have been much more time consuming to handle all of that on my own!
-
twilio-ruby A simple library for communicating with the Twilio REST API, building TwiML, and generating Twilio Client Capability Tokens
This gem made Twilio integration easy.
-
whenever Clean ruby syntax for writing and deploying cron jobs.
This gem allowed me to easily add/modify cronjobs right from the Rails app. I don't work with cron directly, any more. Now, I just edit the whenever's configuration file & capistrano handles the rest during deploy.
- Ruby
- Ruby On Rails
- NOAA
- Twilio
-
-
2012
Little Corner
Little-Corner is an open source project of mine that you can use to easily make yourself a website. It automatically pulls your entire web presence into one place, like About.me or Flavors.me. Currently it supports connecting to Delicious, Foursquare, GitHub, Google Analytics, Gravatar, Instagram, Last.FM, Soundcloud, Twitter, and your blog (via RSS).
I've updated Little-Corner to use Ruby on Rails. It used to be written in PHP and used CodeIgniter, which I previously wrote about. The move to Ruby on Rails will make it easier for me to maintain, and easier for you to get it online.
It also now uses Zurb's Foundation as its design framework. By using Foundation, your website is automatically a responsive site that looks great on computers, tablets, and phones. I've slightly modified it to use a single large image as the site's background, and to add transparency to panels. The transparency allows your background image to be seen through the content being displayed, and maintains the comfortable black-text-on-white-background view.
Getting the app online is easy, too, because it's easily deployable to Heroku. You could also modify it to deploy to your own server (like I do, to run it on my Linode instance).- Ruby
- Ruby On Rails
- Heroku
-
2012
Launch Soon
Launch Soon is a project of mine that allows you to quickly and easily set up a Coming Soon page. It collects email addresses in a MailChimp list, and provides users with a custom link that they can share with others. When someone signs up from a custom link, the referral is tallied in the Mailchimp list. This gives the site owners the ability to see who is referring the most traffic, and contact them separately through Mailchimp Segments.
I originally created the open source LaunchRock clone in PHP (original post included below). I decided to rewrite the site to use Ruby on Rails so that I could make it even easier for people to get running. This can now easily be run for free on Heroku, hooks directly into Mailchimp, and doesn't use a database at all.
I decided to use Mailchimp as the only data store so that all the data needed to contact interested users is in one place. This makes the Mailchimp list much more powerful, and removes the need for an admin interface to Launch Soon. With all of this in place, your Coming Soon page is completely disposable - as it should be.
The actual project and the instructions for getting it running is up on GitHub. Contributions are welcome, so feel free to submit pull requests!
My Open Source 'Viral Launching Soon' Project
I really like the "viral launching soon page" that LaunchRock is doing, which started for them with Forkly's invite page. I decided to see if I could make something similar as part of my ongoing learn-by-doing attempt at web development, and it works (at least in that it isn't broken)!
So what I've created is Launch Soon, a drop-in PHP site that provides a viral launching soon page to collect users (well, their email addresses) before your actual launch date. The site is fairly standard in that it's collecting email addresses, but it also provides a unique URL to each user which keeps track of how many people they get to sign up. The idea is that you'll give preferential access to those who gather the most invites.
This is an early release, so there's still a lot of customization that hasn't been added in yet. The design is really nice, though! It's the result of me converting Mel Choyce's PSD file into CSS, which was yet another first for me. A huge thanks to her for saving me on this one!
It works by taking a person's email address, and creating a four-character hash out of it. It then inserts the email address, the hash, a zeroed 'invites' field into a mysql database. The hash is used for this user's custom URL, which is used to keep track of their invites. When a person joins through a hashed URL, it will search the database for that hash, and increment the 'invites' field for that other user. The idea is that the people who drum up the most invites will have preferred entry into your project.
This also seemed like a great opportunity to create my first github repository, so this project is available for download or collaboration on GitHub. Ideally, someone out there will be able to use it as-is ... Or maybe someone will get some use out of it after some modification ... At the very least, I might get some constructive criticism.- Ruby
- Ruby On Rails
- Heroku
- MailChimp