Sunday, March 11, 2007

FreeMiCal on SourceForge

I registered a project with SourceForge: FreeMiCal.

The purpose of FreeMiCal is to allow users of Microsoft Outlook (currently only Outlook 2007 is supported) to export all Calendar items in one swoop to iCal formatted files.

Outlook does not support the bulk export of calendar items in anything but its own .pst- or comma separated text files. If you have extended comments in the body section of the item, import in any application (including Outlook) will fail due to import format violation.

Please check it out, test it and report any problems. This will help me, make the tool better and eventually error free.

Wednesday, March 07, 2007

Customer Service

I read this excellent article on customer service. While at my company I try to enforce good customer support, I never had my quality standards laid out in such an easy list of steps to follow.

Thanks to Joel Spolsky, here it is. Read, enjoy and act on it.

Sunday, March 04, 2007

The future of video

Currently, we are migrating our workstations from Windows to Linux. While the basic stuff works perfectly fine, we run into trouble when dealing with music and video.

Especially video.

Our video collection does not work under Linux.

While playing videos under Windows is not an easy feat, playing them under Linux provides insight into a lot of things. Unfortunately, videos are not among them.

Let's summarize:
Videos are stored in container files. To play them, codecs and decoders are required. Some, like MPEG2 and MPEG4 are straight forward, some, like DivX, XVid, H264 are embedded in AVI files.

Under Windows, you install codecs, the installer hooks them into the search path of any installed media player. OK, some honor these paths, some don't. Sometimes, helper applications like Explorer get confused and crash. But low and behold, it works pretty well.

Under Linux, you need graphics libraries, that have library plug-ins. If you ever tried to make ends meet with gstreamer, you know what I am talking about.

My suggestion

Here is a proposal of how video streams could be encoded in order to eliminate the codec problem and thus make video handling user friendly.

All video is encoded using an video and audio encoder. Mixtures are possible and exist.

A new file format could accommodate 2 parts: One, the decoder codec and two, the film itself. The codec would be extracted by a generic decoding engine and used to decrypt the film stream. The player would be a generic codec interpreter that allows for platform independent decoder plug-ins to be hooked in.

None of the above mentioned technologies is new. Platform independent plug-ins are reality in Mozilla driven XUL tools. Piggyback codecs can be attached to the video stream. Interpretation engines can both be Python and JavaScript.

This mechanism would even allow for commercial content, as the codecs may well be connected to payment systems.

I haven't given this a deeper thought. Maybe my tweaking with Linux will take me to deeper insights and eventually make me mad enough to write a prototype.

Tuesday, January 16, 2007

Python demystified?

Four years ago I was asked to troubleshoot a project under tight schedule and budget. The team had committed itself to finish an ASP application within 2 years. When I was called, there were only 4 month to the deadline.

I agreed to manage the team under the condition that 2 out of 3 parts be substituted by standard OTS componenten (who needs to develop their own database or browser) and efforts being concentrated on the core functionality.

My proposal was rejected. The project team was confident that using Python programming language would give them an advantage to finish on time and budget.

Later I learned that the project failed and the company went out of business.

My argument then was that Python was not to be compared to C# or Java in efficiency. More so, no real libraries exist.

I was right about the potential of Python as a tool to finish in time.

However I was wrong about the true reason why Python has not gained momentum and probably will not in the future as Java and C# had.

Recent occupation with the subject led me to a different opinion.

1. C# is easy to use and convenient for writing software. However, C#'s strong typing requires programmers to define in advance what to do. Even with refactoring tools and support for generics changes in structure and data definition can cause headache.

Python (as JavaScript) offer weak typing. Objects can be of any type, programmers don't have to worry in advance what they have to handle. Python as opposed to JavaScript has a tight syntax an object declaration (var i, I know its var, so why do I have to state it?)
There are many more advantages to the Python language. Some of them are:
  • everything is an object,
  • strong string operations,
  • plethora of external modules,
  • integration into host operating systems,
  • integration with other programming languages,
  • etc. ...
These make Python a powerful programming tool.

Going from here, I would prefer Python to any language any day.

2. In the early days of Java, everyone wrote their own IDE. This was possible because Java offered AWT a platform independent graphics subsystem. That allowed for many programmers to adopt Java. C# is hosted in the Visual Studio IDE (with a free Express edition available). Even Mono has two prominent IDE's: MonoDevelop and SharpDevelop.

Python offers an outdated IDLE (basically a specialised shell with no charm), ERIC (a bloated QT based environment with an older version of python interpreter), PyDev, a slugish Eclipse plugin, and many more alpha and pre-alpha Editors.

Without any decent IDE (like Netbeans for Java) that allows for graphical programming and UI-design, I strongly doubt that Python will ever gain momentum.

3. There is plenty of introductory books about Java, C# or VB. There are some books around introducing Python. None of the books I reviewed showed how to set up a working python development environment. Maybe its the selection, maybe I am used to skipping chapters on how to get started with other languages. With Python I wasted hours installing, testing and deinstalling IDE's and development tools.

Without a cross platform native or Python based IDE I am pretty sure that Python will be something like Modula 2 in the 70s, ADA in the 80s and LiveScript in the 90s.

Looking back, finishing the project on time was absolutely impossible. Not because of missing power in the language but lack of a powerful IDE.

Saturday, December 09, 2006

Are you Enabler or Disabler

I consult small and medium sized companies regarding IT, organisational and process management topics. When I enter the clients premises for the first time, I search for signs of IT empowerment or disablement respectively.

Signs of Enablers

IT as enabler allows employees to work faster, smarter and more efficiently. IT architecture usually is open, access restrictions mostly secure the perimeter, hardly ever access rights are set up within data structures. They allow their users to experiment with new application in test bed situations. They commonly question their users for new ideas on how to make life easier. And they suggest improvements on their own.

This does not mean that users are allowed to install new and/or rogue software freely. But generally the corporate culture allows employees to identify themselfs with the company and its respective success.

Signs of Disablers

Sometimes I hear people talk about who they could not get access to a document they previously wrote themselfs and then stored them on a file share. They have a three level authorisation process for updated web pages (absurdly they are only visible on the intranet). Marketing uses a special graphics application (like Photoshop) and sends proofs to the sales department. However, Sales do not have ... you guessed it ... Photoshop.

When the PC in Marketing is replaced due to hardware failure, guess what. Photoshop is missing in the installed suite.

Here, IT is definitely a disabler.

Usually I recommend firing the responsible IT manager and getting some user to do the job.

I have not come across a client to follow my suggestions. Top managers usually find excuses why they keep IT managers that cause huge amounts of monetary losses to the company.

Maybe top management is not as innocent after all.

Saturday, November 04, 2006

What's wrong with Microsoft?

First, Microsoft offered Mozilla development team a free office inside the Microsoft HQs. Then CEO Steve Ballmer embraced open source as the new panacea for solving document exchange and software virtualisation. Microsoft will provide ODF document filters for OpenOffice. The Open Specification Promise is yet another step towards an open software development. Interoperability suddenly is important to the worlds largest software company.

Only recently, Microsoft announced the start of Office Live, an online office suite targeted at customers currently using Googles online office tools.

Has Microsoft changed?

Does Microsoft see the advantages of open software development?

Has Microsoft earned enough money to provide us with free software in the future?

Rest assured, nothing has changed!

If Microsoft wants to play a significant role in Europe in the future, they have to prove that charges against them for exclusive and uncompetitive business bare any substance.

While in the US it suffices to claim open business conduct and bribe their way through the current administration, the EU does not work like that. Actually, the rest of the world does not work like that.

So, Microsofts move towards Open Source is just a marketing trick to circumvent EU embargos, a door opener into shops that switched to Open Source recently and most of all a convenient way to keep a close eye on the development of new technologies.

Wednesday, September 20, 2006

I love .NET, I hate .NET

Recently I developed an ASP.NET application that required access to a database. So far no problem. I have done that several times before and was confident to bring the project to an early end.

During the coding phase I had to make a decision on how to access the database. Usually I would write seperated insert, update and delete procedures in code behind pages. In this particular case it seemed to be appropriate to use an Object DataSource and a GridView control.

So I dropped a GridView into the page and made an new DataSource, choosing the Object DataSource from the wizard. Then I created a class file in the Apps folder to isolate data access there.

I got the records to show in no time and I love .NET for its ease of use.

Next I tried to update records using the Edit functionality of the GridView. This was not a trivial task. First the call to the update member function would throw exceptions at me right, left and center. It turned out (undocumented) that the parameters for the function calls need to have the exact names as the fields in the database table to be altered.

Changing the fields in the GridView works fine, the changed value is forwarded to the update function. However, changing the value in the Row of the Dataset seems to be impossible. Calling the code from a C# program works fine, doing the same out of a ASP.NET class does not work.

I confess, I resorted to the oldfashioned way of updating the database directly to keep the schedule.

I hate .NET for it's non-consistent working and its lack of dokumentation.