Friday, June 17, 2011

Let your backbone.js slide?

Hey All,

So I have yet to have any time to get to the server side code for my app, I've been continuing to plug away at the front end code in my free time. I currently have a very basic front end working. A calendar is displayed, you can click on any day, it will open a dialog asking you to enter a new todo or event, you can then click on either option and enter the appropriate information and save the item. It was while I was working on the javascript for the controls(done mostly of course with jQuery) that I starting thinking that all this may be better organized by using Backbone.js.

For those unfamiliar with Backbone a brief overview. Backbone is a javascript implementation of the MVC design pattern. It allows you to create "models" for your data, store those models in "collections" which can be manipulated to filter through models. You can also create "views" which display the model data and through "controllers" have on page navigation between various views. A great example app with annotated source can be found here.

So my thoughts are that I could use models to describe my "todos" and "events". The collections features could help with filtering and sorting in the future and creating views for the dialog with it's inputs. This would lead to greater separation of concern in my current design and elements. I would easily be able to create new templates for new features in the future. I am a bit concerned that I may be over complicating things by bringing in the library and possibly could run into issues using it in conjunction with jQuery(the documentation mentions that they are designed to work together but they do share some common features and deciding to go one way could cause issues).

To address the above issues I have decided to get my first use of the much hyped branching feature in git. I'm going to branch off the current version and create a backbone version of the app. I will continue to develop the jQuery heavy version but also experiment with the backbone version so I can see which one is the easier to develop version.

I'm hoping this weekend to get a chance to create the backbone version and to start to implement the server side code with hopes of having a local testing version running next week.

Stay tuned.

Tuesday, June 7, 2011

Golang

Hey all,

So I've gone through the Go documentation and created a few of their code lab projects. I'm quite impressed with the language. Google originally referred to it as a "systems language" and have built it with developing for several systems in mind. Although this can be seen as a Windows vs Mac vs Linux systems debate, Google seems to see this as a web vs mobile vs desktop kind of systems debate and I think that is fair. Google is attempting to design a language which would be adequate for developing for any of these platforms and from what is available in the language, library and community are at this point succeeding. In that vein, Google now refers to Go as a "General Purpose Language". For my part I'll be coming at this from a mostly web based development view but may touch on some other concepts in the future.

I am quite impressed with Go when it comes to web development. I was able to get a functional server running a wiki style web app in about 45mins and this was right after going through their initial language tutorial. If you have some web development experience using object oriented or imperative based languages or frameworks the learning curve should be quite easy.

As for the current project at hand, this weekend I was able start a proof of concept version of the calendar. I had time to create a basic calendar layout page in html with jquery handling the events allowing the user to click on the day of the month causing a dialog to appear which gives the user the option of adding a new todo or event for that day. Did not have time to get a start on tying in the server side code yet, however I do have a basic spec outline on the go. Hoping I will have a bit more time through the week so I can get a initial version committed.

Saturday, May 21, 2011

Hello World!

Hey all,

I've started this blog as a way to document some of my development projects. With my posts I hope to cover various development topics and issues. The first project I'll be documenting will be my attempt to create a calendar/organizer web app. I'll be using Google's language go for the backend as I'm using this project as an excuse to learn go. The front end will be a combination of HTML5 and JavaScript with jquery and I may possibly look into CoffeScript as well. I'm currently going through the Google go documentation and hope to have a post up soon going over the finer points of the language and what I think about it.

A little bit more overview on the app itself. It's going to be a basic calendar / organizer app, it should have a monthly calendar displayed, when a date is clicked on a popup appears giving you the options to create/edit an event for the date or create/edit the to-do list for the day. That's the basic overview, I may add things such as a contact list and calculator function as time goes on. Integration with Facebook and Twitter may also be implemented.

That's it for now.