2009-07-07

Windows 7 RC

I needed a Vista test workstation today and as there was none available in our office I needed to install one on my own. As for my tests I thought that Windows 7 should be ok also I got a Windows 7 RC and installed that. - I was curious of the changes, as I found also a benchmark on the net comparing with Ubuntu - and that promised core improvements in Windows 7.

But after the installation was finally finished I got several update notifications with a certain delay after restart. And after it seemed to have applied them and asking me for restart I had to wait a good while because on shutdown it "configured" the updates.

What I still do notice is that after startup the machine is not really started up. Disk access is hanging around still a while starting services in the background. That is annoying since a very long time and I love to know that if Ubuntu/Fedora/... is up, it's up and I can work.

Well, and I was curious about the applications that come along with Windows 7 - here is the list:

  • Browser (IE8)
  • Windows Media Player
  • Paint
  • Desktop Notes
  • "Snipping tool" (a little screenshot tool)
  • Wordpad
  • Notepad
  • Calculator
  • Audio Recorder
  • DVD Burner
  • Fax Viewer
  • XPS Viewer
  • Tool for remote desktop connection
That's it - not much. Now I would have to install a bulk of other software. I just installed the VirtualBox Guest additions and - guess what - I wasn't asked for administrator privileges. I think too many people were annoyed by that dialog alwayss popping up on Vista so they removed it probably - or it was just a bug that this dialog didn't come up.

From the first impression I think they have cleaned up the system in comparison to Vista. So at least some important system settings seem to be more easy to find.

I tried to run the DVD Burner but it told me that my video card does not meet the required minimum requirements. - DVD Burner and Video card? - mmmmhhhhh. - Well, that just sounds familiar to me remembering installation of some applications under XP...

I did not do further general testing because I did not found any really exiting news - but for some, a better performance (at least when there is still nothing installed) is already exiting enough...

Related posts: Why I have chosen Fedora.

2009-06-16

The License keys

Arriving in the office today I got notice of a notebook that a customer brought in and it should be reinstalled. Unfortunately nobody can find an install CD that is matching the license key labeled to bottom of the notebook - neither the customer nor our technical staff.

...yes, it is a Windows installation. Variants of license keys must match the variant of CD used.

It is typical - especially for home users - that they do not find their (correct) install CDs when needed. Unfortunately many people are not well organized.

Similar things happen to different type of software pieces. For instance, I used the Wise Installation System software and we have bought an upgrade a long while ago. When I later reinstalled my development machine I first had to install the older version, enter the license key and then - you might guess - upgrade and enter the new update license key. I do not know if current versions are still made this way. When reinstalling a complete machine you can easily get in rage entering (typos included) serial numbers.

There was a time when I argued against software automatically connecting to the internet and automatically retrieving their license from the internet. But now I think this is maybe the less annoying variant. - However, we also have bought software in the past designed that way and often we had to argue that the old machine was replaced with a new one and that they can be sure there is still only one license used.

What companies do to ensure that people do legally use their product caused me to avoid commercial software wherever possible. And indeed even on my Windows machine at work I use mainly free and open source software. This is the best way from avoiding pain when reinstall is required.

Related posts: The Open Source movement.

2009-06-09

The hardware

When thinking of hardware, one of the first things I think about is hard disk capacity. A few weeks ago I could see the first tera-byte HDs available at a discounter in the neighborhood. Although my notebook has "only" a 160 GB HD, I have consumed about 4 in about a year! Not to tell that Windows didn't warn me in any of those cases...

The HD was always the part in a computer that goes rotten most often - that is usually the weak point in a computer hardware system. But as there is price pressure nowadays on memory manufacturers I fear quality going down for main memory also in the next years...

Lately I was at my parents with my 1 1/2 year old son and he likes very much pushing buttons - so "by accident" he pushed the power button of my very old 486 which I left 1997 there. I wondered why it was still connected to power supply. I could see the machine booting DOS 6.22 and I was expecting a scary noise and immediate HD crash (as manufacturers also say you shouldn't leave a HD too long without using it). - But nothing. Even Windows 3.11 started up. Then I got really curious and started a complete surface check of the 2 HDs - if I remember right a 120 and 420 MB HD - something like this. Result: Not a single bad sector! And I was using the newer disk at least from 1995 to 1997.

I am convinced that with the increase of hardware capacity and performance as well as in the same time reducing the size manufacturers do work hard on the physical limits (as currently known).

Further I lately consume one mouse per year and although the quality of the keyboard is very important thing for me when choosing a notebook, my 3 year old HP notebook now gets problems with the keys and accurracy - even the external HP keyboard.

When I look at current special offers in the neighborhood, usually some keys of the demo machines are already missing or broken. There are only two options: Either those got rotten so easily or people are stealing them because their models at home have the keys broken and people are looking for spare parts.

So what I miss is a little more focus on reliability and quality of the hardware in general!

And when looking for models that fit my needs I find notebooks with reflecting screens (they tell the colors are more brilliant - but reflecting screens are much more annoying then less brilliant colors...), horryful keyboard layouts (nothing for power-keyboard users) and strange combinations of HD size, main memory capacity and other hardware options. Netbooks currently get better, but for my needs too small for daily intensive work. Those are something for people that are permanently on the road or somewhere else where is not very much a working place and they want to look mails or surf the internet just occassionally (IMHO). And last but not least most vendors automatically include a Microsoft Windows preinstalled. For my private life I am not willing to pay that tax - I want a clean peace of hardware.

So when I went a few weeks ago to buy a new private notebook, it was difficult to find a notebook fitting my needs and the only vendor I found that was enough flexible was DELL (finally I got something assembled that was not officially available at their webshop). Although I can't tell about a long time experience right now, the overall quality seems to be better than everything else I have seen lately. - So fortunately it is still possibly to get a reasonable configuration.

But why it must be so difficult? - I think hardware vendors do not have the right to complain about bad business if they do not produce what people really need.

In many cases vendors produce configurations and focus on features, that do not fit the real-world needs of the customers.

Related posts: The operating system, The mobile device, The features, Bronce age of IT.

2009-05-08

The Open Source movement

Economic crisis seems to boost the demand for Open Source solutions, at least if you look at the news, blogs and articles in magazines.

For me it seems as one of those keywords that is put as headline to IT fares, like DMS, CMS, ECM and others in former years.

On important thing I notice is that even IT people often do understand: open source = free - This is not necessarily the case. Open Source means that if you get the product, you also get the source. That open source = free only applies for software that is licensed under GPL or the like. Especially now as open source topic is on the hype, many companies search for a way to put that keyword on their sites so the get found and so I stumbled upon a lot of open source products that cost a big amount of money to own.

Today I had a look at Google trends comparing search terms "free software" and "open source software". Surprisingly for people it seems to be important to be free and not to be open source. - Although this is a sample that market analysis often not fit real world. In this particular case I think the difference here is because of the private users that do search just tools for their own use and they know that they will not go to hack into the code (besides those who either do not know what open source is).

Although open source is a very good thing, a company thinking about to use open source alternatives, should ask the following questions:

  • Will I ever hack into the code or let others hack into the code to apply changes or will I just use the product as it is?
  • Do I want to heavily rely on the product?
  • Is there a long-term future for the particular product I am thinking of?
From my point of view Open Source supports long term IT planning and investment. It gives you the opportunity to support, fix and adapt a product to your needs even if nobody else is using it any more. This gives you somehow an independence from market evolution.

But there are some concerns:
  • It might be a big effort to implement the Open Source product - this might come along with high costs for buying services from other companies who will install and/or support the product.
  • If the product is not well documented and the code is not clean enough then there can be a huge effort necessary to do code changes.
  • If there is no company behind doing the main development and support for the product you do not have anyone to blame or take into charge when you have a serious problem with the product.
  • Depending on the community it might happen that the product evolves in a direction that creates incompatibility with your own changes.
  • You may need to have the manpower and knowledge for developing the product in-house (depending on how the product evolves over time).
So Open Source includes no guarantee to be cheap or to exist for a long time. But it gives you the opportunity to do everything yourself and with a large community the chance is higher that you find people who have knowledge on the product.

Related posts: IT investment, Economic crisis and IT, IT project costs explosion, The License keys.

2009-05-06

Utility libraries

While everybody is thinking of frameworks when it comes to rapid application development (RAD) needs, my experience is (and I used RAD tools in times where nobody was talking about that and I either didn't know that it was RAD ;-) ) that all kind of frameworks draw several borders that limit your flexibility. - Well, if you look at it, the name already says it and I can't avoid thinking of a photo frame - it has a certain size and if your picture doesn't have that size it doesn't fit...

There were application development frameworks like dbase, Magic II and Microsoft jumped onto that train later with Microsoft Access - which now is the most popular tool in that realm. I worked with all those mentioned above and while I found the Magic II was the most effective and efficient framework (back in the late eightees and early ninetees) it was also the most expensive one. The Magic II seems to have evolved further and is now named uniPaaS - I have not tried it yet but from the screens it looks somehow a little familiar to me :-) .

Anyway, while working with those RAD tools in the past I was very fast creating first application versions but sooner or later when it came to particular special customer desires, I was limited by the frameworks and often had to tell the customer that I cannot do it in the desired way. Mostly I found different acceptable solutions that were ok also, but nowadays there are two important changes in IT world here:

  • In former days IT was built of a lot of different isolated applications. Today everything must be highly integrated and plugable.

  • Customers (or CEOs) assume that nowadays "everything" is possible in IT. So when you tell the customer you can't do it, you are out. You must be able to do it (but furtunately you have the consultants to tell the customers or CEOs that what they desire is not the best solution to their problem :-) ).
Both changes make life hard for RAD tools. My experience from the last about 15 years is that there is another - better - approach to increase development speed and still keep being flexible:

Build utility libraries on different levels

What I do mean with this is:
  1. It sounds strange but every programming language lacks of very basic functions needed in nearly every application. - The best example I stumbled upon lately is that there is no one-liner to copy a file in Java. Can't be, you think? - I browsed several hours through the library documentation and searched the internet, without success. But I found several samples of ways to do it (and wondered how many options I have to copy a file...). Finally I wrote two methods with different focus: One method to copy a small file in a single step copying everything into the memory and a second one to copy a large file using a buffer. You need to build a library of very basic methods that you often need and can reuse in whatever type of application you are going to create. Try to have no or very, very few dependencies on that level.

  2. Logically - as many things are already missing on basic levels - when it comes to higher levels, even more is missing. Maybe having those levels served with utility classes would result in a bloated language core. But anyway, you need this stuff - we are talking here about having comprehensive toolboxes with utilities for particular realms that are not necessarily used in every application.
    So Build several specialized libraries that offer utilities for different needs like database access, GUI building, sending/handling email, transferring data over the net and so on.

  3. Having different libraries often results in more effort needed to put everything together. This is a major goal that frameworks try to solve. But if you consider the connection issue right on the beginning of building your libraries you can create your own interface objects that the different libraries on different levels know to handle. An example is to use an array or list of key-value pairs (Map) that you can pass around to different libraries so that you can receive data in such a form from the GUI library (after displaying a dialog for instance) and pass it to the database utility library to have the set of data saved to a table.
    So create interface objects and make them "well known" in all your libraries to easily connect your libraries together.
Especially when building more specialized libraries prefer convention over configuration (of your modules or components).

The big advantage of the utility library approach is that you can put things together from different levels as needed but also do things different where you like it (for instance to improve performance for particular tasks). So you have a tool set but you stay flexible.

Related post: The IDE and the libraries.

2009-05-05

IT Outsourcing

Outsourcing of IT services - especially software development - has been a very common behavior of companies. We can either see separate outsourcing of support so that you have finally a local call-center with a lot of students just picking up the calls and taking notes plus software development very far away in a very cheap eastern country.

I never really understood the big benefit of outsourcing as there are serious drawbacks on the other hand like

  • Know-How is pulled away from the company.
  • Communication channels get inefficient (e.g. several people involved while nobody is communicating in mother tongue, physical distance, different time zones, ...).
  • The cheaper employees often do have less qualifications.
  • Cultural differences may introduce additional obstacles during the collaboration.
One major fact, that companies should understand: Good software developers are difficult to find. You can find a lot of cheap coders, but there is usually a difference in the output quality (clean code, sufficient comments, good component design, ...). This applies for other IT services also but especially for software development.

Outsourcing can make sense under the following circumstances:
  1. There is a clear and compact technical specification of what to implement.
  2. The project is smaller and/or not to be tightly integrated into a lot of other projects.
  3. Few dynamic adjusting of the application at the customer necessary (so the far away from the customer the better suited for outsourcing).
I have experienced that the time from the need to the finished implementation of a solution is much shorter, when development is moved towards the customer (so doing the contrary to outsourcing). The response to changes in the priorities and goals are much shorter - even more, if there are no consultants in the middle. From the productivity point of view the direct connection from the developers to the customers is the best - but attention: There are prerequisites and pitfalls:
  • For a developer that is in close contact with the customer there are more qualifications needed than just being a good coder and being a good software designer: There are communication skills, project management skills, understanding for the business point of view etc. necessary.

  • The biggest mistake that is made often at this point is to act faster than to think! What I mean is, that both sides should think double before ordering and implementing a change request.
While in big software projects (or in big software companies) often the progress of development slows down massively, in very small projects and companies often there are shortcomings in software design.

Related posts: IT project costs explosion, The features.

2009-04-09

IT project costs explosion

It is a well known problem that costs of IT projects often rise far above the initial estimations. This might happen for non-IT projects also, but the reasons might be different. And there is a difference between reasons why IT projects fail and why they cost more!

I tried to summarize the most important reasons why IT project costs are higher than expected - from my experiences and in the order of relevance:

  1. Unclear, unrealistic and permanently changing ideas of requirements (missing, unrealistic, vague or insufficient stable goals, objectives and milestones).
    Solution: Invest enough time in evaluation of requirements, put it in relation with what solutions exist on the market and define clear and concrete milestones building a path to your final goals.

  2. Insufficient or wrong knowledge about the solution options (mostly from technical point of view).
    Solution: see above - and think also of the option to develop (or let develop) your own solution which is always an option worth thinking about.

  3. Insufficient knowledge about the overall effort needed to implement the solution (= unrealistic estimation of time and resources).
    Solution: If you have missing experience on a particular field then ask experts or develop prototypes. And never beat down the price of your suppliers (to unrealistic values) because then you provoke final costs being higher than expected.

  4. Insufficient knowledge about the destination environment where to implement the solution.
    Solution: Invest enough time in analysis.

  5. Side effects of quick-and-dirty implementations of the solution (or parts of it).
    Solution: Make quality your focus and not being cheap. If you create a bad product that nobody really wants to have you waste more time and effort as if you would have created another smaller product, but well done.

  6. Unqualified interference or intervention of upper management.

  7. Missing GTD like and technical skills of involved people.

  8. Bad time management (schedules, time reserves).

  9. Missing or insufficient quality assurance (clean design, review, testing, documentation, ...).

  10. Communication / teamwork insufficient or inefficient.
Related posts: Economic crisis and IT, Bronze age of IT, IT investment, Features, IT outsourcing, The Open Source movement.

Print Page