Sunday, October 29, 2006

Excursion: Game Development

The internet…there is distraction everywhere. I don’t know how it really began. Perhaps when a colleague introduced me to Line Rider. A 1.5 MB big Macromedia game. Simple idea but it's so great!

Then…was it accidentally that I discovered XNA while browsing the sites for learning C#?. Game development in C# with XNA Game Studio Express which is based on Visual Studio Express 2005. It was like a revelation! Although my first XNA Game by following the tutorial wasn’t much more than a screensaver, it is nevertheless the first step.

And then...the same colleague introduced me to blender, an open-source software program for 3D modelling and rendering. The first tutorial wasn’t real fun (building a stupid table) but the example of Gus in the Wiki-book really impressed me.

Rendered Image of the Walking Gus

So I will try some 3D modelling…don’t games need 3D modells?But to become a 3D-Modeller you need to be an artist. You cannot model what you cannot draw! Since some time I possess a book “Learning to draw”. So yesterday I downloaded different graphics software (there are two kinds: raster and vector based) for examination: Corel Draw, Gimp, Macromedia Freehand, Paint.NET (written in C# and open source!) and of course Photoshop. I know…I should begin with drawing on plain old paper to train my skills but I made a compromise: Yesterday I ordered a used Wacom Graphire3 for only 49,90 Euro.

My new Wacom Graphire Tablet

So, isn’t it great when hobby and profession complement one another?

Sunday, October 22, 2006

Looking for C# Tutorials

Looking for a more structured approach

Just looking for code snippets and testing them seems not to be the right way for me. I want a more structured approach. The code snippets and all that blogs of C# Developers (e.g. MSDN Blogs) seem to address more experienced developers. So I have to establish a knowledge basis first. My first idea was to study the .NET Framework documentation and to learn about each namespace as if it were chapters of a book. Not very motivating.So I looked for C# Tutorials on the internet. And boy, there are many! I consider the advancement from one lection to the next as very satisfactory and therefore motivating. Very good different .NET Quickstarts can be found on the official Microsoft community site GotDotNet. But in my current situation I am looking for more “guided” tutorials in C#.

C# Tutorials

One tutorial which must not be taken too seriously can be found at csharphelp.com. You don’t need an IDE for that tutorial, just plain notepad and the command line. The four short lessons are partially a bit ironic and the last lesson ends with an interop example with a C Library.The first really good C# tutorial I found was the tutorial Visual C# Fundamentals on the website FunctionX. In 24 very detailed lessons the basics of the C# language and even some basics of information technology like data structures and object oriented programming are explained.So the FunctionX tutorial is the tutorial I will start with. I will publish a complete list of recommendable C# tutorials later.

Sunday, October 15, 2006

Snippet Compiler vs. Visual Studio 2005 Express Edition

Coding with Snippet Compiler

While looking for a lightweight C# Editor to refresh my C# knowledge, I stumbled across the tool Snippet Compiler written by Jeff Key. The tool needs less than 2 MB of hard disk space besides the installation of the dotnet framework. Installing is easy: just copy the files in a directory.

The Development Environment of Snippet Compiler

The editor itself is very nice. It resembles the visual studio editor, with a very limited intellisense function but without the overhead of a whole project structure. So it’s great for the quick writing or testing of code snippets. Of course there is not built-in C# documentation so you have to use the documentation of the .NET framework.All in all it’s a very nice tool and definitely better than using notepad and csc.exe!



Visual Studio 2005 Express Edition

So I started looking for C# Snippets to refresh my C# Knowledge. I checked the german site http://www.dotnet-snippets.de/. There you can look for different code snippets via tag keywords. So I randomly selected one code snippet (ReadFromClipboard), copied and pasted it and after adding the right using directive it worked! Great, my first step in becoming a really good C# Developer…While examining the site a bit more I noticed the announcement of a Snippet Contest which ends on December 15th. The best code snippet will win a Windows Vista Ultimate Version. What a boost to my motivation! So I will try to submit an own code snippet in December.An important hint on the site was the proposal of the editor which should be used: Visual Studio 2005 Express Edition. As it is provided by Microsoft for free, I downloaded the software. With 50 MB to download and 100 MB space on the hard disk it is definitely larger than the snippet compiler. But it is worth the space!

The Development Environment of Visual Studio Express 2005

As a bloody beginner I don’t notice the differences to the full version of Visual Studio, so I am really happy about it. At that point when I discover the limitations of the express version I certainly will already be at least an advanced C# developer. So this version is great for me at the moment.Besides: I also downloaded MS SQL Server 2005 Express Edition. I guess I will need it later for sure!

Sunday, October 08, 2006

Disciplines of a Software Architect

There are four terms (or perhaps roles) which come in my mind concerning my "learning-path" in the future:

  1. Software-Developer
  2. Software-Engineer
  3. Software-Architect
  4. IT Project-Manager

I think elements of all terms are important for becoming a good software-architect. You must be able to code e.g. to create prototypes, so you must be a good developer.Software Development today is an engineering discipline in which for example design patterns are used. A good software-architect shoul in my opinion also be a good software-engineer.Architectural patterns describe approved solutions for designing software at a higher level than design patterns. For sure a very important point to work as a software-architect. And last but not least a software-architect should know things about project management. For example should he have knowledge about risc management to evaluate the different possible architectural solutions.

Of course I have to enlighten these roles more in the future. The upper paragraph is a first shot to describe the possible roles of a software-architect and will be enhanced in the future. But I think the contents of my studies will allways fit in one of these four roles and bit by bit it will become apparent what these roles really mean and in what way they are different.

Sunday, October 01, 2006

The First Step

This is my first blog entry (not counting the german entry above). This blog will accompany my way in becoming a hopefully really good software-architect. I hope this blog will motivate myself to go that way. And hopefully during this way my english will improve (thanks to leo the online dictionary in advance: http://dict.leo.org/).
First of all some short information about me:I am a 29 year old computer scientist. In 2003 I made my degree as graduate computer scientiest (Diplom-Informatiker (FH)) at an university of applied science (Fachhochschule) in germany with telecommunication as a focal point.

In my first job I developed applications in ASP and later ASP.NET with a MS SQL Server Database. Because I was the most "experienced" developer in the company I had no other presettings how to develop .NET applications than my own understanding. At least I visited a short 3-day training in development of ASP.NET applications and learned some things about component oriented development. But to be honest - the application wasn't really big and nevertheless the architecture was not really good.
Although I liked "hacking" code in that small company I took up another job in a really big telecommunication company in summer 2004. One reason was some more money, but the main reason was my desire to learn more about professional software development.

Now after somewhat more than 2 years I have to admit that I didn't reached my goal in that company. I learned some things about project management in large enterprises but not very much about professional software development. Since all the time I didn't wrote one single line of code - at least I should have continued coding as a private hobby. But I didn't, shame on me!

So this is the background story. This time I will keep my target in sight and do the right things to become a software architect and develop really good software. There are three important steps to do:

  1. Start studying the art of IT architecture.
  2. Find a job where I can work together with really good developers, engineers or architects.
  3. Document my progress in this blog.