I believe in building.
The things I build don't need to be flashy. They don't need to patch a big hole. They just need to be built.
Weekjuice 1.0 started as an IFTTT email that I scheduled to send to myself once per week. It was simple—a list of goals that inspired me. They were the kinds of reminders I wanted to brand into my brain and never forget.
I quickly found the email unwieldy. It grew long. It became a treatise. It wasn't tiny. So I started ignoring it—the very thing I had set out to resist.
I built weekjuice.com to make my list tiny again. It's still a database of my reminders, but they drip into my inbox instead of flooding it.
Weekjuice is minimal. It's pleasant to read. And best of all, it's wonderfully random. Early Monday morning, weekjuice selects one of the reminders from a database, delivers it in a beautiful email and posts it to the home page of the site. I usually leave my weekjuice email in my inbox so I can chew on it all week.
The part of weekjuice you see is an Ember app. The hidden part is a Node.js app running on Heroku. The Node.js app selects a random reminder from my database on Firebase, delivers it to the Mailchimp email list, and updates the database's random post (which triggers the Ember client-side app to update the home page).
Here's what weekjuice costs me: $14.99 per year for the Hover domain. And here's an inventory of the libraries and services that are keeping it cheap and making it hum:
- Ember: my client-side application
- Firebase: my realtime database
- Node.js: my server application
- EmberFire: Ember data adapter for Firebase
- Moment: to help me create details like the greeting in the header ("Today is Tuesday October 21, 2014. Make it great."), and the human-friendly week numbers on the home page and email newsletter ("—Week No. 43")
- Mailchimp: to control the mailing list and newsletter template
- node-mailchimp: to talk to the Mailchimp API and automate the newsletter mailings
- node-schedule: cron-like scheduling to deliver the weekjuice email and update the active post in the database on Monday morning at 6:00am
- Sass: beautiful stylesheets
- Grunt: my local build tool
- Typekit: to serve up the stunning Proxima Nova and Adelle typfaces
- Github Pages: free hosting for the site
- Hover: domain name registration
It's remarkable to me how a simple user experience can involve such a deep portfolio of technology to create. But after all—that's what I love about building software. There's a special joy in hiding all of that complexity, and giving my users a simple moment of reflection on Monday morning.
"On days when I made something I felt good. On days when I didn't make something I felt bad."