Monthly Archives: January 2012

GeekRider – the goal, technical perspective

As I briefly mentioned earlier I am endeavoring on a project which is going to demand a lot from me physically, but also from a technical perspective. I have a lot of things on my plate, during daytime I’m 100% engaged with work at clients, nighttime is the time I have to squeeze in a lot of activities into. For one, I have two kids that needs my attention – and I have a golden rule of engaging with them from the time I get back from work till they’re in bed. This leaves some 2-4 hours left per day to do all the things I do. I therefor have to be smart with my time and make the most of it. Adding things into the schedule is hard and if I add something, it in general must have a synergy with something already in my schedule. In my schedule I have a couple of open-source projects that I focus a lot of my energy on; BalderBifrost and Forseti, so pretty much anything I put in must relate to these in some fashion. Geekrider arose concretely from this need of synergy. I need to focus more on physical exercise and brought in Geekrider with the synergy of pushing forward development on the open-source projects I’m involved in forward. Balder will hopefully serve the purpose of 3D visualization and bringing forward the a few features that I want to have in that project. As a general web platform, I could have gone for anything already out there, but I wanted to push forward features in Bifrost, I therefor decided to build the site from scratch on top of it and also push into the cloud by hosting it on AppHarbor. Since the site will become very JavaScript intensive, and I pretty much get allergic reactions when I don’t write tests or BDD style specifications for my code, the last project also will get some love; Forseti. The reasoning behind the project is that most test runners out there has so many moving parts in the form of dependencies to get up and running and they’re also very focused on running things in a browser. Forseti is aiming towards something very different, a headless runner for JavaScript tests based on Env.js not using by default any browsers to execute the tests/specs.

One of the goals for Bifrost is to make it easier for developers to create rich web based applications, promoting good software development practices. Today, the RIA space is rapidly changing and for the most part moving away from plugin technologies such as Flash or Silverlight and focusing more on the open standards found in HTML, CSS and JavaScript/EcmaScript.

From a fronted development perspective, Bifrost is taking on this latter part. Traditionally one would compose the resulting web page that is handed over to the client on the server. Multiple solutions exist out there for doing so, and specifically in the .net space, ASP.net and its derivatives are the most popular ones. Rendering, as this is often referred to, adds an extra load onto the server – not only is the server responsible for dealing with the request from the user, wether it is getting data or performing an action, but it also has to transform the result into something the client can show. On top of all this, it has to deal with security. This pattern is a very proven pattern, but in my opinion not the pattern we want to be doing moving forward, and therefor Bifrost will focus on a different pattern. Sure, Bifrost will not only be compatible, but also support out of the box the traditional route – but for now in an opinionated fashion by only supporting ASP.net MVC. The technique that Bifrost will be focusing in on is the Single Page Applications, were you basically hand over the “rendering” to the client and let the client compose the page by swapping in and out elements at runtime. This is in fact nothing new, ever since AJAX became the big thing, we’ve pretty much been doing this – but only for parts at a time and even letting parts of our page be swapped out for new versions being rendered by the server dynamically.

Bifrost will have a composition technique that is based on, as most things in the framework, conventions. The focus will be on Features and one can point to a feature simply by adding a <div/> tag and give it the attribute data-feature=”[name of feature]”. Based on the configurable convention, Bifrost will find the necessary files representing the feature. Looking at the page from Geekrider as it is at the time of writing this post, we’ll have the following.

NewImage

So, back on track. Now that we have this, what is the next logical step?  Up till now, Bifrost has been very server side rendering focused, sporting an extension for ASP.net MVC and taking advantage of that stack. That is about to change, or should I say, the fact that it has been the only way to use Bifrost is about to change. A set of REST endpoints will be exposed from Bifrost, enabling any client to interact with the framework. From a Web developer perspective, this is not good enough, we’re therefor working on bringing in a JavaScript library that will just nicely integrate with all this.

In addition to the goals summarized thus far, I’ve also got another goal for me personally; I want to become more productive with tools other than what I’m used to. I recently bought a MacBook Air, an impressive piece of hardware – but it doesn’t sport the same specs as my MacBook Pro or my iMac, I’ve therefor decided not to put any virtualization software on it to run Windows. This means I have to start using other tools than Microsofts Visual Studio for my development. For .net development, I’m for now using MonoDevelop and for general HTML, JavaScript and CSS development, I’m using TextMate. My long term goal is to be using TextMate for everything.

Summarizing, Geekrider will be the proof of concept for features added to Balder and Bifrost – driving forward with new thoughts and ideas. I will try to blog about the progress as much as my schedule can permit. This means I should keep myself from playing around or doing unnecessary stuff.

 

State of the union; 2012

So, here we are then – actually its been almost two weeks now; 2012. As most bloggers tend to do, I’m going to do the same; do a state of the union thing to tell the world “wasssssup”. Consider it a delayed Christmas letter from a relative. 🙂

2011 was probably one of the most stressful years I’ve had ever, it is the first year I am totally on my own as a freelancer and not having an employer, but have clients instead. That is needless to say quite different, not in the terms of what kind of work I do, but in more in a psychological perspective. In addition to that I had quite a few speaking engagements. Late 2010 I signed a deal with Programutvikling to do courses in 2011, I did a couple for them as well, but decided to drop doing courses as I was spreading myself way too thin doing way too much stuff. During 2011 I’ve also been heavily involved in the open source community, for the most part on the following projects; Balder and Bifrost, with most focus on the latter. I also started another project called Forseti, a JavaScript test/spec headless runner written in C# and has the goal of being a self contained executable that is easy to use and get up and running. October last year I got renewed as a Microsoft MVP for the 4th time, very honored and grateful to be receiving this award.

Come 2012, still alive and kicking, new opportunities and challenges are coming. For the last two and a half years I’ve been hired by Komplett to be their solutions architect and help build there vNext platform for e-commerce for both mobile and desktop web-browsers. The project has been an awesome experience and helped shape Bifrost. But, a new opportunity arose, and from 1st of March this year, I will be involved in a software project at Statoil, Norwegian oil-company. Really looking forward to be involved in that particular project. I will however continue to press forward on building features and fixing bugs in all of the open source projects I’m involved in. Will also try to involve myself more in the developer communities, such as NNUG and other communities. Allthough software is what I do, I’m also slowly realizing that I need to focus more of my energy on my own health. Personal exercise has never been a very big focus on my part, sure I’ve done my share of bi-cycling – but never reached a point were its natural or I end up doing it on a regular basis. Therefor, this year I’m setting out on a big hairy goal; be part of something called Birkebeinerrittet, apparently the worlds largest cross country bicycle race. In order to accomplish this I need all the motivation in the world and something driving me towards that goal. I decided in December 2011 to start a website to help me drive myself towards that goal; GeekRider. Not entirely sure what the site will end up being, but my plan is to let the site drive forward a few ideas I have with regards to how I see web development moving forward and at the same time help me maintain all of the mentioned open source projects – a synergy.

I guess thats just about it, wish me luck.. 🙂