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.