Category: General

Agile in Poland

I did a little experiment today. I went to biggest job-offering web site in Poland, and searched by keyword: agile. That’s all, I didn’t specify city, salary, branch nothing, just the keyword.

Here’s what I got:

agile

The grand total of 11 offerings. 5 of them (underlined in green) abroad, 6 in Poland (blue). Out of those 6 only one is in Krakow – the city where I live. I don’t know what to think about it, but it makes me sad.

 

Technorati Tags: ,

ALT.NET for dummies

ALT.NET is a wonderful movement. It’s a bunch of very smart and open minded people valuing good practices and using common set of tools. It’s discussion group is a great place to share ideas and ask for tips and help.

It’s all great, however there’s one thing that bothers me. The site says:

We are a self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development.

It’s true. However, as much as I feel strongly about patterns, practices and tools advocated by the movement, I still don’t think that jumping onto that wagon is easy for newcomers. Almost always right, means going against route of least resistance, but still – I don’t think we do enough to introduce the tools and concepts to those who hesitate.

One of the reasons why Ruby on Rails gained so much popularity is the amount of books (some of them are even free in pdf form) for beginners. One of the reasons why non-ALT.NET way of doing things is so popular is the amount of introductory books for each and every technology provided by Microsoft. There are samples, hands-on-labs, tutorials, step by step guides, screencasts, webcasts, podcasts, what have you…

On the other hand, I was trying to recommend to my friend, who wants to learn about IoC, Castle Windsor and loosely coupled design. I looked here and there, and I was disappointed with what I found.

There are blogposts, but they are mostly short, and touch upon single, random, small problem. They aren’t really good for introduction.

There are discussion groups, but they are geared towards people who have specific problems with technology. Someone who comes and asks “how do I use it” would most likely not get much help.

There are articles on codeproject, or some other portals, but they are brief, and try to cover either the very basics, or small subset of technology.

There are even multi-part tutorials, that try to touch upon more or less every aspect of the framework, but they too are brief and don’t provide firm foundation for someone to really grasp the concepts and start using the technology with confidence.

Finally there’s the documentation, but it documents the product, not introduces it to the newcomers.

So, what CAN we do to ease the pain of conversion for unbelievers on the way to become ALT.NETers? Is there hope?

Certainly! I can think of two solutions here:

  • Wikis proved to work as good medium to transfer knowledge. By creating Wikibooks dedicated to specific topics tools (TDD, NHibernate, MonoRail, NAnt, etc) we could collectively contribute and share our knowledge and experience with those who could benefit from it.
  • Or/And develop standard way of tagging posts aka ADN-code (alt.net code smile_wink) on blogs, and create an aggregator that would make all that knowledge easily searchable and accessible from one place. For example if post is tagged with:

altnet://type{tutorial}/level{1}/technology{mbunit}/keywords{row tests,unit tests}

it would mean that this is special post (as opposed to normal post), that is a tutorial, level 1 (meaning geared towards very beginners) regarding tool/technology called “mbunit” and its topic is “row tests” and “unit tests”.

That’s just my suggestions, I’m sure someone will come up with more, better ones.

All in all I’m just hoping, that we, as a community will find a way to make it easier to start with ALT.NET.

Technorati Tags:

Globalization issues

Globalization is a serious issue if you create a software that is to be used worldwide. You may for example take into account that people have non a-z letters in their names, like for example ‘ź’. If you don’t consider that, your users may come across windows like this one, I saw while registering to Windows Live Spaces.

OLW

So what should I do? Lie about my last name? And the funniest thing is: there’s no ‘ź’ on the list of forbidden characters.

Technorati Tags: , , , ,

Amazing Wii remote demo.

I’m speechless.

Technorati Tags: , ,

Is it just me or is it Codeplex?

I’m having a bad day… really. First CC.NET website wouldn’t work just when I need it,

ccnet

and now this…

 codeplex

How come, when I download Bil Simser’s TreeSurgeon, I get empty files in my zip, but when I browse the repository they have some content?

Technorati Tags: ,

The true value of TDD (and good design)

Today I had to tear apart and refactor one of core pieces of tool I’m working on. Oh, and I had to do it fast.

At first, I was like: “Hey, you can’t change that, it was supposed to stay the way it is now!”. Next I started to refactor, changing one by one, all the pieces I needed to change in order to achieve desired effect. I was refactoring, compiling, testing… and again refactoring, compiling, testing…. And ultimately when all tests were once again green – I knew I was done. I felt confident.

Thanks to TDD and good design I had, I was able to change big piece of code very quickly, and without causing everything to fall apart. I’ve read about how TDD gives you confidence, how good design helps, I’ve been there before, but in this moment when I was starring at all green tests, it all felt so apparent, it was almost magical.

The BlogEngine.net, or there and back again.

Those of you who visited my blog yesterday might have noticed that it was down. I fixed problem with Subtext’s export to BlogML I blogged about recently, and I decided to take a plunge, leave Subtext behind and move to BlogEngine.net. As you may notice if you read it on the website, not as RSS, I ended up rolling back to Subtext.

BlogEngine by default does not use SQL database, but stores everything in XML. If I wanted to keep on using my database, I needed to do the following:

  1. Add connection string to web.config
  2. Change default provider from XML to SQL in web.config
  3. Login to my database, with SQL Management studio, and manually run provided SQL script, that created all tables and sprocs for blog engine
  4. Edit web.config and add providers for membership and roles
  5. Run aspnet_regsql and point it to my remote database
  6. Open blogengine.net in Visual Studio
  7. Run Management tool to create roles and users

Well, that more or less was it. However it was not everything. BlogEngine.net seems to be very tied to XML, and it still wanted to save few things in XML for example blogroll).

blogengine When I (after roughly two hours) set up everything, it was time to import my old posts from BlogML file. BlogEngine.NET uses Click Once application for that. However this app is not documented and I had to go through trials and errors until I made it work (partially). For example, can anyone tell me what’s the difference between, Path and File Path? When it finally ran, it imported only first half of my posts, and threw exception telling me that my login and/or password is incorrect.

Then I tried to figure out how to remove the “welcome” blog-post that was automatically added, and as it was 1am and I was getting really pissed off, I ended up rolling back to Subtext.

One good side effect of this all, is – commenting seem to be working again. Most people could not leave a comment on the blog, what was one of the main reasons I wanted to abandon Subtext. This hopefully is now fixed, so I’ll keep on using Subtext for now.

BlogEngine.net has many powerful capabilities, but I guess it’s still too young. However it’s worth keeping an eye on, because it matures very fast.

 

Technorati Tags: , ,

Is Subtext project… dead?

I’ve been using Subtext for this blog since its very beginning 10 months ago. Back then I installed what was the latest version (1.9.5 with later security-fix). I was pretty happy with it. I don’t have high needs: it is supported by Windows Live writer, is stable and just works.

opera_errorHowever I’ve been receiving emails from people complaining that they cant post comments to my blog. I checked the issue, and I was able to reproduce it, with error message presented on the screenshot. I googled for it, but I didn’t find out anything useful. I decided to upgrade my blog installation to latest build hoping, that this would fix the issue. Meanwhile I wanted to backup by blog to BlogML, in case something went wrong, and it turned out, that this function is broken as well. I received error message complaining that operation can not be continued, because it couldn’t find some .png image. Anyway, I upgraded to latest 1.9.6 build, but it didn’t fix any of the issues. All it changed, was that now, while exporting to BlogML I get other error, saying that my connection string is wrong. This got me mad, because now I’m tied to Subtext, and there’s no other easy way to migrate to other blog engine without loosing my content.

While I was poking around, looking for solution, I discovered few things. With Phil moving to be the PM of Microsoft’s MVC framework, it looks like Subtext may be a dead project now.

Last Phil’s contribution was 5 months ago, and his last contribution to trunk was 9 months ago (roughly the time he announced he will join Microsoft). There are other contributors as well, but still, the project hasn’t incremented from 1.9.5. to 1.9.6 yet, and it’s been almost a year since last release. Fast look at their build server, reveals yet another issue: there hasn’t been a successful build of Subtext 2.0 for almost 6 months. This all makes me think, that while Phil apparently doesn’t have the time to contribute to the project, it will soon share it predecessor’s (.TEXT) fate.

 

Technorati Tags: ,

Blu-Ray is dead

One of the hottest news in last week was end of HD formats war. HD-DVD got dropped, Blu-Ray people are more than happy, but days of their format are counted as well. Arguably Blu-Ray won’t even last as long as DVD (12 years and counting). Here’s why:

Optical disks gained popularity in times, where CPM (cost per megabyte) of using them was way lower than HDD. Hard disks had capacities like 2GB, and buying three CDs 650MB each was way cheaper. It was economically reasonable to buy CDs, and keep your files there. I don’t recall the numbers but I’m sure that CPM must have been at least 10 times higher for hard drives. Also consider the fact that one hard drive had capacity of few-several CDs. If you wanted to keep your files on CDs, it was quite easy to find them, even if you had to switch a few CD in and out of your CD drive to find what you were looking for. It was worth the overhead because it was much cheaper.

This is no longer the case. CPG (cost per gigabyte) of reasonably priced HDD and DVD are more or less equal. For Blu-Rays it’s 4x higher (but it will eventually drop, as the format gets adopted). The biggest advantage of optical discs is lost. Hard disks are so easier to use. You don’t have to juggle with disks to get to what you need – it’s always there. Hard disks are so much more reliable. How many times have you lost some important files because you scratched your optical disk? How many times have you lost your important files because you’ve… lost your optical disk? Hard disks are so much more convenient to use, you want to write a file, you drag and drop it. You want to delete it? – one keystroke. No need to use cumbersome software, remember about sessions… it just works.

There’s actually one more aspect where optical disks have advantage over hard disks – they’re smaller and more portable. You just burn your data with this cumbersome software, and take it with you. It’s certainly more convenient that using external hard drive, that are way heavier. However, pendrives have most of hard drive’ advantages (fast, reliable, no need to use special software to use them) and are small and light. Even smaller than optical disks, as you can put them in your pocket. Also in the era of fast broadband connections, the best option may be to send the files over the Internet.

As downloading (legal) music/movies/software becomes more popular there will be really NO reason to use optical drives at all. I have 3 DVD burners at home, and I can’t recall when was the last time I burned a DVD or CD. Actually I use them solely to watch movies, or to play games that have protections and I can’t make usable image of them.

That’s why I think that Blu-Ray’s victory is Pyrrhic, and that its the last optical format we’re going to see.

Technorati Tags: , , , ,

To install, or not to install: that is the question

While most applications come with installer, there are many, that don’t. They are usually a single .zip, .rar or .7z file, that you can extract to some directory on your hard drive, and that’s it. They just work. One such example is NDepend, which comes only in this form. Many other applications, like Notepad++ give you choice: you can either get installation package, or a .zip file.

Each approach comes with its own set of advantages, and disadvantages. Zip/rar packages, are usually smaller downloads, and it definitely maters for people with dial-up connections. All depends on the particular application, but usually applications deployed via zip file don’t pollute your system, throwing their files and registry keys here and there. That means, that to uninstall that application, you simply delete its directory. Uninstalling installed application can be hard task, and often they don’t clean up everything, so you’re left with useless files, and polluted registry. There’s no rule for that, but more often than not, such programs leave something behind, and your system gets slower and slower.

On the other hand, using XCopy deployment is sometimes not an option, when application needs to put assembles in the GAC, check for existence of some files and so on. You might try to do this manually, but seriously – who would? Installer are user friendly, and shield you from mistakes. They will also create shortcuts for you in your menu start, on desktop or quick launch bar. In case of XCopied programs you have to do this manually.

exzi

Despite of that, I tend to prefer XCopy deployment. It gives me the feeling that I’m in control, whereas in installer have nasty habit of putting files not only to the folder I pointed to. To help myself with disadvantages of XCopy,  I created small utility called eXZI (XCopy Zip Installer) that will unpack the file to the folder I point to, and optionally create shortcuts to files I select. This way I get best of both worlds: fast and easy “installation”, and quick access to my program via quick launch or desktop shortcut, and control over where files are located. Desktop shortcut created by eXZI

I don’t attach source code to eXZI, because it’s just quick and dirty piece of code I assembled in several minutes, and it is not in a shape to be shown to the world. But if there will be interest in it, I may improve it a little bit and put it out as an open source project. I don’t know. Do you think it might be useful?