Tuesday, March 20, 2012

Day 1 - New 30 day challenge J30D.com

Okay, I have tried (and failed) on a 30 day challenge last year. But this year I am trying again.

This will be a 30 day journey about creating a website application. The web app is called J30D.com (Just 30 Days). The goal of this blog is to document the progress and ultimate success or failure of my main goal: To release J30D.com into a working beta in 30 days. I plan on using a lot of new technologies that I have not used before. It will be fun for sure.

I will try to spend atleast 1-2 hours a day on it for all 30 days. (maybe I will help the site a lot with extra hours on the weekends.)

Day 1
Plan for today will be simple.
1) Get back in the blogging groove, and announce my project.
2) Decide which technologies I am planning on using.
3) Setup my development environment with these technologies.

If you are reading this, step one is done.

Technologies I plan on using.
backend framework - I plan on the backend mostly being a JSON service. So many things should be able to do the work. Frameworks for the back end I considered: Ruby on Rails, Ramaze, Sinatra, Async_Sintra, Goliath, Node.js. I think I am going to go with Async_Sinatra. I really want an Evented backend. I have used Goliath before and loved it, but I want to try something new. Async_Sinatra sounds like a cool project, and I have not used it before.

backend data persistance - I really only considered two things here. Postgresql and mongodb. I know there are a lot of others. MySQL, CouchDB, Sqlite, Redis among many more, but I need something familiar. Since I plan on the backend being mostly a JSON service, I think I am choosing MongoDB, since the BSON it create will have the same taste as the output I am creating.

caching - Memcached seems like the obvious choice here. I am not even sure what other options are out there. I use Memcached at work. I am not sure I will bother with caching until the beta is done and working though.

frontend framework - That is a word you did not hear much a couple years back. The choices I am considering are Ember.js, Backbone.js and Spine.js. I am planning on making this app work as well as I can on mobile devices, and Spine seems like it might be the smallest, and quickest to load on mobile devices, but I am going to go with backbone.js, mostly because of the awesome peepcode.com videos I have already seen once, and can watch again.

javascript library - I think Backbone works with either jQuery or Zepto.js. As this is also a mobile app, I will try Zepto first. I love the fact that Zepto mirrors some of jQuery's calls, so if I have to pull Zepto out later and replace it with jQuery, it might not require too much work. I do have a lot of experience with jQuery, and do not expect much trouble out of Zepto. Looks like Zepto does not support Internet Explorer. So Beta may not either. I will probably try to fall back to jQuery only on Internet Explorer.

more frontend - I also plan on using Twitter-bootstrap. This will also be a new thing for me. I am a developer; not a designer. Hopefully using twitter-bootstrap will hide that fact from you. I also love how it degrades on smaller screen sizes to look like a mobile app by default.

Okay step 2 is done.
Step 3) install the development environment.

Everything is installed. I have not got a mongo ORM yet. I will have to decide what I am using for that tomorrow.

List of stuff for tomorrow:
1) Create a private github repo.
2) Work on a beta signup page using same technologies from my technologies stack.
3) Find a mongo orm for ruby that works well in Sinatra.


No comments:

Post a Comment