Religious technology

I guess its in the human nature to latch on to things and like it to death. When doing this, we as humans tend to take things we like and don’t like anything else within the same category – I guess with the exception of food. This is something I think can be multiplied as a truth by 10 for technologists. We tend to find a piece of technology and really go out of our way to show others how good it is and how much competing technologies in the same category suck. I do this myself way too often, and I scare myself when doing it.

Operating Systems
Take operating systems, this category is probably the one with the biggest amount of fanboys in it. Windows guys will automatically dismiss OSX and Linux and vice-versa. In my opinion only a select few can agree that they all have their strengths and weaknesses. Some 3 years ago, I was the Windows version of this. I couldn’t really see why anyone would even bother considering anything but Windows – till Vista made my computers miserable and I decided to try out Mac and OSX. Now, 3 years later – I scare myself in some ways with how much I have “switched” and deploy only Apple based hardware and software in my home. I say to myself; Apples stuff just works. To some extent this might be true – but trust me, there are issues with their stuff as there are with just about anything out there. I’m not necessarily so audible about my Apple likings, I’m not trying to convince people to switch – but I find myself losing perspective. When I embarked on the OSX journey 3 years ago, it was also in an attempt to broaden my horizon and leave my comfort zone, in fact I had a plan about not having a comfort zone at all. Now it seems that I’m well on my way establishing a new comfort zone – so time to break out of the new habits and yet again broaden my horizon; meet Linux.

The first time I tried Linux was back in the beginning of Red Hat days (if my memory serves me correct, around 1994 / 1995). Back then it was a bit of a pain getting all hardware working with it, so my project of becoming a Linux user was soon abandoned. Nowadays, its a far better story just taking any computer and putting any Linux distro on it. So, yesterday I decided to take my Windows Laptop and stick Ubuntu on it. It took me some 3 minutes to download it and another 7-8 minutes installing it and just about everything worked. In fact the only thing that didn’t work out of the box was the trackpad. Not too stressed about that, since the trackpad on my laptop is not something I use anyways. But I know I can get it working if I just put some effort behind getting it to work.

Booted up and went to the software center and installed what I needed – basically to start with, I just needed something familiar to latch onto and got MonoDevelop to just see some C# code running. Quite happy with the experience so far.

Programming Languages
Another aspect I see when talking to people when doing presentations or classes is the idea of the programming language they have chosen to be the only programming language that could solve their tasks. The most common thing I hear is the why C# is so much better than VB.net, and almost just as common coming from people who have yet to write a single line of VB.net code. Bringing in languages such as Ruby, Python or even Javascript – a lot of guys are just grinning and coming with remarks such as; you wouldn’t do serious enterprise development in either of those languages. The latter one I’m guilty of myself. Javascript has long been something that I really couldn’t get anyone doing. So, the cure for myself is to start writing Javascript and get to know it better than I do. There has to be a reason why so many are using it, and it can’t be just that its the only client side language working in a browser that is the reason. It must have qualities beyond this, and I’ve realized working with Javascript the last year or so that it is in fact quite a cool language to work with. Different from what my comfort zone has been defined to be, but getting to know it, its quite cool. The same goes for Ruby, a language that I fell in love with after reading samples for 5 minutes. And yes, both of these can be used in professional software development and actually solve real business needs. I think for the category of programming languages, as with operating systems, its not that one suck more than other, they’re just different. They are different in how you write code in them, and therefor there are different ways of achieving the same goals, and also very often there are different workflows to writing code. Saying that one is better than the other is something at least I will stop doing. I will instead try to focus more on picking the right tool for the right job.

Source Control
Here’s a subject I have so far in my career always considered to be something I really don’t care about. Just show me the tools and give me the URL for the repository and I’ll start committing code. But this turns out to be something that people also gets a religious view on. My view on it has always been that its a tool for collaborating with others and also at the same time hold history of what the team is doing. Recently, in the .net world, the concept of distributed source controls has really taken off – with a good reason. They do in fact solve things that more traditional source control software doesn’t, or as I’d rather say – they are doing things differently and opening up for different ways of working. I’ve been using Git and Mercurial the last couple of years and for the way I work with code, they have yet to solve anything for me personally. But I carry on using them in order to see if they will eventually solve something for me – again, there must be a reason why so many are embracing them. One thing I do see though, is for open source projects and distributed teams – these kind of source control systems really do solve things, and I have in fact taken advantage of a few of the features they have for these particular scenarios. The thing I’m having trouble with seeing though, is how they would be superior in a on-premise situation were the entire team is located on the same location and working together. To me there seems to be a bit too much ceremony and unsolved issues such as continuous integration with multiple branches and such. This could of-course boil down to how one works with them, but it seems to me that there is quite a big gap in the tooling experience for these. Something the more established source control systems have more right. I’m still following this track and will look for the revelation. It might come to me, or it might not. I’m open.

The list goes on…

I could probably carry on this list forever :

Flash vs. Silverlight vs. HTML 5
SQL vs. NoSQL (Document or Object – based DBs)
OpenGL vs. DirectX
Java vs. .net

…and so on. But really, is it really all these things that matter when we’re trying to do our job? Me thinks not. For a software developer, I think it is far more important to identify the needs of the people we’re creating software for and solving them in a timely fashion with code that is maintainable. My core values as a software developer is to be sure I deliver quality software – by quality software I do mean something the users agree on is good. Good in the sense that it is user friendly, but also good in the sense that it is considered stable. To accomplish this, I chose to be sure I write my code in a certain manner with certain mechanisms to try and make the code stable. I also demand that I get to work more closely with the users that will be using the software or a representative of those users to be sure I am delivering something they can in fact use and consider user friendly.

One thing I’ve learned throughout the years; t
here are so many people out there who are smarter than me. Sure, I am guilty of sitting there thinking I’m the smartest in a few discussions, but thats just part of being human (isn’t it..?? ­čÖé ).

A turning point for my own religious technology beliefs was when I read the “Pragmatic Programmer” a few years ago. Its doing a very good job of lifting up your head just enough to get interested in expanding your comfort zone. My goal as a developer is to be pragmatic as to what technology I chose for a specific task, what tools I use, what operating system I do them on – and instead focus on the bigger picture. This is what I define as pragmatism. To me, its not important what tools you use, but how you use those tools. If you’re able to build a house without using a hammer but a stone as your tool instead, so be it – as long as the result is a good quality house.

My ultimate goal; have no comfort zone, become a technology atheist – learn learn learn, try and fail and learn some more. We as software developers are in a unique position to do this, its a young industry we can chose to take part in shaping it or not. I chose to at least try to take part.


Balder – looking for developers and other contributors

Balder is a very ambitious project – or at least with all the ideas I have in my head for the project, it is very ambitious. In order to fulfill its ambitiousness (is that a word?), we’re looking at getting contributions to the projects.

There are multiple ways one can contribute, you could fork the project at Codeplex and commit to your own repository and request pulls from your fork. You could work on your own local repository, do changes and create bundles with changesets that you can post on the forum or email us and we’d look at the changes.

The last option is the new job opening for the project. We will not let everyone in on this option, in fact we’d prefer to have you go through the forking process – and we’ll be very happy to help you go down that path and get you started contributing like that. The reason we’d prefer that is to have a bit more control over what goes into the repository and what doesn’t. If you constantly deliver quality work, we can upgrade the trust level and let straight into the main repository.

So, what are we looking for getting help on.

Well, just about everything. There is a lot of work needed to be done, and the roadmap for the first half of 2011 shows a little bit of it.

In addition to the roadmap, there are a few other things we need focusing on as well :

Blend support
Full designtime support in Blend and Visual Studio 2010. The designtime support should utilize WPF and hardware accelerated graphics, to not slow down the designers of Blend and VS2010.

Desktop (WPF + Xna)
In order to fulfill the ideas behind the Blend support, full WPF support would be preferred. Full cross platform support between Silverlight and WPF is something of a dream for the project. Extending this to XNA is also part of that same cross-platform story.

Full support for OpenGL running on Mono

Utilizing the same OpenGL support just running on MonoDroid.

To mention but a few things.

There are also less hardcore things we need help on, such as creating tutorials, WebCasts, documentation, build scripts, more samples in the sample browser, code cleanup, unit tests, porting tests to Specs using MSpec. In addition, answering forum posts is also something that we need help on. The forum is very much alive and giving help and also providing feedback to development as well as registering problems with the issue tracker from forum posts are something that is very welcome.


Balder – Roadmap first half 2011

Some of you might be wondering what is on the Agenda for Balder in 2011. One of the core focus areas is to get the library to a level were it is easier to get people onboard and have more resources contribute to the project. In order to do that, some things has to be streamlined a little bit better, this is typically documentation, but also get things like a proper build server up and running and get continuous integration working.

– Architectural documentation of the entire library
– Getting started guides
– Simple tutorials
– Xml comments in all of the code

– Clipping, near-plane clipping issues
– BoundingSpheres
– Improved ASE loading, fix silly bugs
– Camera bug fixes

– Transparent rendering
– Multithreaded rendering
– DesignTime support – at least objects should be visible
– Full Xna support – (Windows, Xbox, WP7)
– WP7 Hybrid Mode – Xaml based, but no Silverlight elements on top
– WP7 Pure Mode – 100% programatic, no Xaml.
– Animation
– 3DS file loader
– Async loading support

– Coverflow

– Optimizations

This might look like much – but trust me, most of them are quite big issues to handle. This is at least the goal, no guarantees that this will be the end result when we approach summertime 2011 – but heres to hoping!

Also, I know there are a few feature requests for Balder, and a also a set of bug-fixes needed. Some of these might be done when doing something else. The list above is basically based upon prioritizing registered cases at the Balder site, discussions on the forum and email I’ve received directly. So please don’t get mad if you don’t see a feature or bug you’d like done in this timeframe.


Balder – a developers confession

For those of you using Balder, you might have seen that 2010 had quite a boost in development for the library, with features being added almost daily, and then all of a sudden it came to a halt.

The last couple of months has been very very busy, its not an excuse – just the hard facts. And the last month or so I really haven’t had the energy to do much on Balder.

This however is about to change. I will be focusing a lot more of my energy and time back onto Balder. There are still a few things that need to be done, not to mention some architectural preparations for SL5, when it comes with hardware 3D rendering.

So, please stay tuned. There is more to come. ­čÖé


Welcoming a new developer to the Balder team

Happy new year to everyone!
I’m starting off 2011 with brilliant news.

For the most part, in fact 99.9% of Balder, I have been the sole developer. I’ve had some help with some of the math from friends and contributors, and some contributions has come along the way in the form of emailed source files or patches – and I’m truly thankful for all of this!

In the middle of December 2010 I started a dialog with Rui Silvestre who has been using Balder for their company YDreams, and he agreed to join the team and contribute more directly to the project.

So a big warm welcome to Rui.

In other news, documentation is something that has been neglected for quite a while. The focus on creating new features at the highest pace has been the focus. This is about to change, intellisense enabled documentation through XML comments in the code as well as more detailed documentation is underway. Hopefully this documentation will both be helpful for adopters of Balder, but also helpful for those who want to contribute to the library.


New year, already?

This is one of those classical summaries done by most bloggers around the world; what did I do in 2010 and whats going on in 2011.

2010 is probably the year, in my life at least, that went by the fastest. So much happened, and for the most part only positive things.

I started off 2010 with the greatest kickstart of the Balder project – after some idle time on the project, I was approached by a US based company called Sapient. They were working with a client that wanted 3D on the Web. The project is still undisclosed, so I can’t talk about it. They signed me on for doing adjustments to Balder and getting the library up to speed with what they needed and also get it more performant. This was truly a gift to me and the project itself. Since January I’ve been working a lot with the library and am very proud of what has been accomplished. Mid 2010, I was approached by Clint Rutkas – the guy in charge of the Coding4Fun articles. We agreed on writing an article utilizing Balder, and later we agreed on making the same sample work on the Windows Phone 7, which resulted in a partial port of Balder to Windows Phone 7. The article was about creating a Rubiks Cube in 3D, but was later removed due to licensing infringement.


With the Firestarter event in December, Microsoft announced Silverlight 5 and its feature list, which is quite awesome – to say the least, and especially interesting for Balder, as they’re providing an immediate mode API for doing hardware accelerated 3D. 2011 will be a very exciting year for Silverlight and Balder, really looking forward to getting my hands dirty with this.

The biggest thing in my Silverlight part of life was the renewal of my MVP status, thanks a lot for the acknowledgement – very proud to be part of such a fine group of developers that the Silverlight MVP group consist of.

I started in 2010 doing quite a bit of courses in Silverlight for different clients, which is something I’ve grown to love more and more, in fact, I signed on with a Norwegian company specializing in courses called Programutvikling and will be doing more courses in 2011, not only Silverlight, but also WCF and Azure, and maybe other things as well.

2010 also gave me quite a few opportunities to talk about some of my favorite subjects, at user groups, for companies and conferences. I’ve done quite a few for Norwegian user groups this year with Silverlight and game development as the primary subjects. I also had a chance to talk at ├średev in Sweden, stepping in for Tim Heuer because of illness, and did a full day of Silverlight together with Jeff Wilcox. That was truly awesome, but kinda stressful – got a 2 day notice for that one, and had to break apart content I had and create new content and prepare.
The second half of 2010 I started doing some talks on Microsofts cloud platform; Azure. I’ve been working closely with Microsoft Norway and we’ve put up two full days were in Oslo and Stavanger in Norway were I’ve been talking about the platform. More to come of this in 2011.

NDC 2011
The last couple of years, Norwegian Developers Conference has been held in Oslo – getting a lot of attention from Norwegian developers and have also grown to get participants from all over the world. The reason for this I think lies with the speakers and subjects, its not a bunch of sales pitches, but rather a venue for talking about code quality and best practices. I was approached late 2010 if I wanted to be part of the planning of 2011 and be on the committee, an honor to be asked and I agreed to join in. Also, I’ll be speaking at NDC 2011. So that will really be exciting in 2011.

Back in 2008 I started an open source project called Bifrost, the primary objective was to abstract away some of the tedious bits I encounter in most projects I work on. The last couple of months, this project has been completely revived and is now on a full-steam ahead path. Today it is moving towards solving things like CQRS in a nice to use fashion and making it simpler to create highly scalable and structured solutions. You’ll find the project over at Codeplex.

Expanding the horizon
I set out this year with a goal of learning new things, as I do every year or should I say every day. Learning new things is one of the key elements that I love being a developer. This year I learned a lot, but I think the biggest thing personally would be that I picked up Ruby and immediately fell in love. Ruby is something I really want to explore more in 2011.


2011 is already looking like a truly awesome year, a lot going on, and a lot that I can’t talk about yet – but rest assure, I’ll talk about it as soon as I can.




The fall and rise of Microsoft’s UX platform (pun intended)

The last couple of days in the aftermath of PDC 2010 has been quite stressful. Mary Jo Foleys posted an interview with Bob Muglia about Microsoft shifting in their strategy for Silverlight. With the post series by Scott Barnes as a backdrop, it sure looked pale for Silverlight – on the outside.

It wasn’t so much the article itself from Mary that screamed death – but all the interpretations of the content. Sure, it was easy to read into it that this could mean that Microsoft was in fact dropping Silverlight all together – except for on the Windows Phone 7 platform.

Today, Bob Muglia has published the following statement, that should clear up any misunderstanding.

Make no mistake; we’ll continue to invest in Silverlight and enable developers to build great apps and experiences with it in the future.

Also, Steve Ballmer has a PDC Thoughts statement about this.

Tim Heuer, Silverlight program manager has invested a lot in the success of Silverlight, his post about this can be found here.

Back in September, the Silverlight team blogged about the future of Silverlight. And you might find the interview with Scott Guthrie on Silverlight TV interesting as well, just a couple of days prior to PDC.

During PDC2010, Microsoft announced a completely redesigned portal for Windows Azure, based on Silverlight (Azure announcements here). This comes in addition to a set of other tools for Azure already built on top of Silverlight. One little tidbit to mention also, is that PDC2010 had all its online content delivered through Silverlight as well.

So – fear not, Silverlight is far from dead!

UPDATE: Scott Guthrie also posted a post, answering questions about Silverlight.


Balder – licensing

I’ve been back and forth so many times with trying to come up with a good licensing model for Balder and have decided to keep the Ms-PL license, with one exception. Anyone creating commercial libraries that is based partly or fully on Balder and is monetized, must obtain a commercial license.

Licenses can be requested at : license@dolittle.com.

At the moment, the Balder codeplex site is not reflecting the change. Its on its way and will be reflected in a couple of days.

So, why am I sticking with it and not trying to make any money from the library directly, you might ask. Well, I figured I’d go a different route. Keep the library open and free, but create commercial tools that extends Balder instead. I have a few ideas about this, especially around Blend and creating a unique experience there. More than the design-time support I’ve already planned to go into Balder directly.

Also, I’ll be setting up the possibility to donate to the project. I’ll get back with more details about that, and why a donation would be good.

I’m also looking at the possibility to provide consultancy services and commercial licenses with dedicated support option as well.

UPDATE: Codeplex site is now updated and reflecting the new Licensing model. Also the licensing file in the repository is updated.


Finally, its here… Balder

Ever since I started blogging and talking about this release back in August, I have simply not had the time to get it out the door. Always a little something I wanted to fix, or my daytime job getting in the way. Anyways, finally managed to get it out the door today. Pick it up at the Balder site.

The following list are the changes :

  • Perspective corrected texture mapping
  • perspective corrected Z buffering
  • Dual texture support with mixing
  • Enhanced material support
  • Shaded textures, flat + gouraud
  • Rewritten lighting code for rendering
  • New skybox, utilizing perspective projection in Silverlight
  • Bilinear filtering
  • Performance enhancements
  • Subpixel rendering
  • Multiple games in one page
  • Clearer exceptions
  • InstancingNodes – faster bindable solution
  • Extensible FileLoader support – one can load from anywhere
  • ChamferBox primitive type
  • Vertex coloring support – reads vertex colors from ASE files
  • Multi/Sub material rewritten – faces no longer has Material, but a Id reference instead
  • Wireframe support for Materials
  • Statistics added
  • Shine + ShineStrength for materials added
  • Color manipulation optimized, using integers
  • Smoothing group fix for primitives Cylinder and Ring
  • Optimized heightmap
  • CLUT system removed – too slow
  • Frustum clipping of objects
  • Matrix optimized – going for the solution most use, public fields instead of array as before
  • Started implementation of MipMap levels for textures
  • Rewritten texture system – introducing the concept of map
  • More details on ManipulationEvents
  • Optimizations for Windows Phone 7
  • Added more unit tests
  • Optimized mouse intersection with objects