Today I Learned — The App

People who know me know that I’ve been pretty busy lately. People who really know me know that I’m actually slammed. Yet, I’m taking a personal challenge to complete a small application in the month of March. As it turns out, I have an idea for a small bite-sized application that I can build in a month. It’s also a great chance to challenge myself to learn new frameworks and libraries.

The Problem

I’ve been tracking the things I learn in a given day in a small Github repository. Other than the challenges of keeping up with it on a daily basis (as you can tell by the dates in the repo), it works fairly well. It’s great to have a centralized place that I can come back to and review my notes.

However, there are a few shortcomings of this approach. I did organize it by dates on purpose because I wanted it to be a daily thing (yeah, not so much). The original Thoughtbot repo organized it by categories, which might be a better approach. However, I really like having items indexed by the date as well, but doing both is not really something you can do in a file structure like this. Also, as I learn things in multiple categories, I would prefer not to have to fumble around and make sure I open the right file in the right directory. I also tend to write short one-liners, so multiple files in a directory might not be the best approach.

What would be really great is a website where I can go and input the things I learned. I can also tag items and view the things I learned that belong to those tags. If I’m really ambitious, you’ll be able to see what your friends have learned, too.

The Technology

I don’t like doing the same thing twice. Even at work, there’s always lessons learned in a previous project that can be applied. It can be something small like a library or it can be higher-level like code organization.

For personal projects, I like to change things up a lot. In previous projects, I’ve used Node, MongoDB, BackboneJS, and Coffeescript. For this project, I’m incorporating Foundation for Apps, Babel (an ES6 to ES5 transpiler), and Firebase. My goal is to write as little backend code as possible and to use Firebase as my backend. I’m also hoping to do most of the design myself, which will either be awesome or horrific. Maybe somewhere in the middle.

I’m still just getting started with building the application, but some initial thoughts:

Foundation for Apps adds an entire workflow based on Angular and Gulp. I ended up refactoring the gulp tasks because I added in Browserify. They also changed the grid classes and their integration with UI Router is kind of magic. Overall, I wish I had read the docs more rather than just jumping in head first as I tend to do.

Firebase is what I was really excited about. I had used it over a year ago for a tutorial, but back then it was a real-time data store and hosting. Firebase can now handle user authentication, which makes this concept of a “no custom backend” app actually feasible. I have Github logins working and I’ll probably add in other services over the coming days.

I’m excited to be working on this application over the course of the next month. I already have so many feature ideas, but the first step is to scratch my own itch and build something that I would use.