2010-04-12

Software on speed

Yesterday I tested Ubuntu 10.04 Lucid Lynx beta 2. Within half less than an hour testing I found 4 bugs that I do not consider to be minor (and I filed them accordingly) - not talking about the design change putting window buttons to the left (which is considered as a bug by the community). All those 5 points I do consider making a bad impression on new users considering a switch over to Linux. By writing this they have only 17 days left to fix. This is a very few time left I would say.

The twice-a-year release schedule has been discussed already lately at a number of places and I would also say that such a schedule is too short for comprehensive tests and high quality software development.

Time-to-market is an important parameter in business and especially in software business where there is such a huge amount vendors and sites. Other than the supermarket around the corner with limited reach, software can easily distributed around the world - nowadays (it has not always been that way, think to times before internet has been available to the vast majority of people). So from the competition point of view software is a hard field.

As it is widely accepted that software has bugs, vendors do not worry much about the bugs and do not give much on quality - that is my impression.

Although none of the bugs I found can be considered as a real show-stopper, it could be so annoying for people that they don't use it (or stop using it). I have experienced a lot of bugs and bad implemented software that alltogether made a lot of software unusable for me considering the software usage from the economical point of view and thinking of optimizing productivity.

Software is there to improve productivity and make things easier - it is not just for geeks playing around.

That said, Linux (and Ubuntu in this case) is driven a lot by the community and it is given away for free, so one should not complain. But this post applies to a lot of other software products too.

Anyway, quality should be an important priority in software development and from that point of view I understand the debian guys, where an eternity can pass until a new version is released. I one thing why I don't use a debian stable release is because they are so far behind in features or new software releases respectively.

Maybe the optimum is somewhere in the middle...

Related posts: New Year's IT resolutions, Going Linux.

2010-03-30

Scope of IT projects

In the last weeks I have worked very hard to finish a project in time (where I did not have a real influence on the deadline) - and this by the way was also a reason for not posting here for a while.

I finished in time but most of the others didn't. And one of the reasons (besides others): Unawareness of scope and impact of the project.

I remember times when (at least smaller) companies had to be introduced to computer basics when I brought the developed software because prior to the installation of the new software and hardware there was nothing - nothing computer related of course.

Current IT landscape is far different. Each piece you are going to change affects plenty of others (and this might be the crucial factor why many companies still stick to full Microsoft product stack hoping that at least that works smoothly ;-) ). When designing new software you not only need to think of the software features itself but also of the (possible) environment where it is supposed to run. And according to that, the appropriate interfaces need to be present. APIs (Application Programming Interfaces), links to other well-established software packages, (automatic) sync and import/export features are not a gimmick any more - they are required parts for a new software piece. Otherwise the thing can't be plugged into the existing stuff. But most serious software products nowadays do consider this situation.

Let's talk about "processes" - a very "consumed" word these days: At meetings I often can observe a lot of thoughts, ideas, issues and uncertainties thrown at the table at the beginning and then after a certain level is reached that nobody can get hold of the whole thing any more, somebody states (trying to get to an end of the meeting) something like: "We need to analyse the processes (now)." Of course the processes or work flows are a tipping point. Companies should know them or at least analyse them before. When starting to analyse the environment and work flows - the processes are often very different in the reality from what I get told initially by IT or management.

While in projects related to SAP it is normal having a planning phase during at least a year, for most smaller projects the teams do not invest into analysis at least a few weeks or not even a few days.

Another big pig in IT project management: Assumptions and interpretation. Source of huge creativity is the sketchy documentation or just quick look at designs or prototypes. In documentations there might be unclear statements. People often tend to interpret (and discuss interpretations) rather than clearing up the situation by investigating the facts. At the beginning of a disaster there is always crappy guesswork!

And it comes to ignorance: Even on projects where prototypes or demo versions have been set up at the client months before switching production, I experienced, that nobody was really examining the demos and prototypes and then they wondered because of unhandy GUI or whatever.

So we get to implementation: I don't know if it is because of economic crisis that software testing efforts are reduced or if it is not the testing effort but the increasing complexity of software - or both, fact remains: Software nowadays to me seems to be more buggy than 15 years ago - generally spoken. But this means that software should be tested more than ever. That said in reality the implementations often get late and to keep deadlines, testing is done only on the surface.

You may wonder if it could be still economic to set up a new IT project looking at the general situation in IT and with software. I say: Yes, there are a lot of processes ;-) that could be drastically improved with the aid of IT and computers. In reality IT has grown to a crucial backbone of most companies during the last 15 years - they simply can't to without any more. And so, it is more important than ever, doing precise planning and good quality work (not only when it comes to software).

Related posts: IT project costs explosion, Economic crisis and IT, The small software vendors.

2010-03-12

Firefox change default page format

I live in Austria and standard paper format here is A4 and not Letter.
It is very annoying that Firefox does not remember the page format once I changed it in "File->Page Setup...". If I would use the german version of Firefox maybe defaults would have been set to A4 anyway - however in the english version (at least on Ubuntu Linux) the default is Letter.

Here is how to change it (to A4 in my case):
  1. In the location bar enter: "about:config"
  2. Read carefully and confirm that you are going to be careful
  3. Be careful with the following steps!
  4. In the search bar enter "paper"
  5. Look for properties ending with paper_size and paper_name.
  6. For me it was sufficient to change "print.postscript.paper_size" and "print.print_paper_name" to "A4".
  7. There might be some additional properties ending with paper_size and paper_name for each of your available printers. I didn't touch them and it worked anyway - YMMV.
HTH.

Related posts: Locale configuration on Ubuntu, OpenOffice and LibreOffice starts slow, Default Paper Size in Open Office, Normal.dot in OpenOffice or LibreOffice.

2010-01-29

The dawn after sunset

The announcement of Sun being bought by Oracle last year was a shock for many. Since then for months the situation was quite unsure.

As I already wrote in "Sunlight at the end of the tunnel", I had very good experiences with Sun (and that was not just a single time). It was something completely different than my Experiences with Microsoft.

What I did not emphasize in that post (but in my comments on forums and blogs out there) is that all the products managed by Sun seem to have something in common: They are AWESOME!

For example:
  • Open Office
    I used it for a very long time - even successfully for years even under Windows before switching to Linux. The stability, reliability (if you get externally written documents) and the outstanding PDF export makes it already worth using it!

  • Java
    Java is a very mature programming language and when I had to decide my programmer's future, the top favorites (after longer evaluation period) were Java and .NET (C#/Mono). Beside the fact, that platform independency was a big opportunity and the only way for software development with long-term safety of the investment, I found the libraries of Java much more complete than for .NET and especially because of the coding quite strict conventions very readable. And the libraries, toolset and frameworks available is also way bigger. - But this is not only thanks to Sun - this is thanks to the very large community! I also appreciate that they did not bloat Java with too many language features just because somebody wanted to see feature x or y. So I think it was wise to not develop the Java language core too fast.

  • NetBeans
    The best integrated development environment (IDE) I ever worked with. Although starts a bit too slow in my opinion it is still better compared to my last Windows experiences with Visual Studio .NET. I did exhaustive comparison with Eclipse and although Eclipse startup was a bit faster and refactoring options were more, the rest (stability, visual GUI editing and all those small whistles an IDE usually has) was better in NetBeans or either non-existing in Eclipse without searching hours for a matching Eclipse plugin in a version that was reasonable stable.

  • VirtualBox
    I switched over to VirtualBox first when I already planned my move to Linux and VirtualBox OSE (Open Source Edition) was there in the repository by default. So I built new test machines on VirtualBox rather than on VMWare on my Windows development machine. I noticed that it used less resources but from the features lacked a little behind VMWare in some areas. But it developed fast in the last one or two years and so you get everything you need by now. It has even a very cool seamless mode where somehow the client machine gets merged with the host and it seems to be one environment.

  • MySQL
    I think this was one of the last products that joined Sun, but nevertheless they created a very awesome toolset around MySQL that goes a lot further of what is offered along with Microsoft SQL Server.

There are a lot more products, but the above are those I use often and they are a stable and substantial part of my daily work. So Sun was a great, great company - thanks to the people behind.

Now, as the merge with Oracle is finalized, after watching the first press announcement webcasts from Oracle, I am quite positive again. Although I did not watch them all (connection speed got quite down and I was not really able to watch any more), I found the presenters very motivated and excited about the newly added manpower and product portfolio. They are not going to keep everything (Kenai for instance is going to die), but they seem to know the strengths of Sun quite well. They commited strongly to Java, NetBeans and OpenOffice as well as JavaFX for example.

And also the JavaOne conference is going to stay - just moves from the date to be held together/integrated with Oracle World.

So I hope they will continue in honor of Sun with the awareness of the responsibility for those very large communities behind the products I mentioned.

Larry Ellison said "We're in it to win it"! - I am quite positive that Oracle will do a good job. And people reading my blog (and not only those ;-) ) know that I am very critical looking at every new stuff.

Related post: Sunlight at the end of the tunnel, Popular Java myths, The future of Java.

2010-01-23

Web application security

Today I noticed this video: "Clickjacking".

I have no idea how it is done but it shows one more time that web applications are not the overall optimum solution for every development.

If such things are possible, then there are serious risks in using web applications for accessing critical,confidential data!

Is it so much more difficult to download and launch a jar file by double click? Deployment is not necessarily complicated as not every application needs a complex and high sophisticated setup process. ;-)

Related posts: Web vs thick client, Your holy machine.

2010-01-04

New Year's IT resolutions

As far as I read on forums it has been already a lot of times that people told that next year will be the year when Linux breaks through on the desktop. And the first discussions I found about being 2010 being the year of Linux already have been from 2007.

My opinion is: 2010 will not be the year's revolution that Linux will break through on the desktop.

The reason is: Most people do realize now, that many things sucks as they are evolving lately:
  • People need to buy the operating system for new (even if they were completely fine with the old one) when they buy a new PC (because hardware comes along with a OS license already included).
  • People can't reinstall their OS for new because the installation CD somewhere got lost or they notice that there was no CD shipped with their notebook only after the HD crashed.
  • People use more and more "standard software" which costs more and more money.
  • Installation of program B is corrupting installation of program A.
  • Computer getting slower and slower over time.
  • Computer getting unstable over time.
  • People notice that proprietary file formats force them to buy expensive software (upgrades) and that these formats are risky for long time archiving.
  • ...
There is basically one root issue: Vendor Lock-in! - Companies tend toward trying to bind the customer to their products and services.

During the last year I was asked more often than ever if it would be a good idea to switch from Windows to Mac. This is an indicator for me that that people's satisfaction with Windows is somehow fading away. But Apple is not the solution in my point of view. The only real alternative I do see is Linux. Why? Although there are (mostly) companies behind different flavors of Linux (the Linux distributions), the core is everywhere the same and the general philosophy is similar - e.g. to endorse Open Source, open standards and the GPL. With Linux you have the widest freedom and least vendor-lockin.

But why can't be 2010 be the year of success? - It's because of the vendor lock-in a switch usually can't be done easily and quickly. This has to be well planned and there must be a step-by-step implementation!

I started years before my switch to prefer open standards and open source software. So at the final switch I was already familiar with the most new applications, as I used Firefox, Thunderbird, Open Office, VLC, GIMP and many others already under Windows.

For a company that is considering a switch or either is just unsure about the IT future this means:
  • Save data in an open standard format (e.g. EML instead of MSG, ODT or RTF instead of DOC and so on).
  • Prefer to buy and/or use software that is available on different platforms (Open Office instead of Microsoft Office is a big candidate here).
  • When investing in new software development plan a platform independent solution.
These are considerations and policies that prepare you for a change and will bring you more long term safety of your investment (and hence higher ROI). However, all the changes that need to be implemented cannot be done over night!

The journey to the future happens on a road that you don't know yet. Will you rather buy a car that just runs fine on asphalt or one that works fine on a rocky road also? - So is with software. Using the platform independent solution you are better.

Related posts: Going Linux, Cross-platform solutions, Software on speed.

2009-12-30

The Software Development Mismatch Problem

How often do you think that you have not been well prepared in school for the real life?

To me it often happens that I find particular realms where I did not learn the really important things in several subjects. However, for my career as a software developer I feel that I had a quite good start. Later, when attending university I experienced more difference in what I was taught and what I found useful. That said, I must admit that I am a practically oriented person. I don't deal a lot with theories although I know that it can be useful sometimes.

However, I thought several times that there is a mismatch problem (see Malcolm Gladwell about the mismatch problem) in the whole software development branch.

Recently I followed two podcast episodes that confirm my doubts that in a lot of cases software development results do not fit customer needs or economical concerns. I found them on se-radio.net: "Episode 149: Difference between Software Engineering and Computer Science with Chuck Connell" and "Episode 150: Software Craftsmanship with Bob Martin".

I agree with most of the content - for instance about the fact that computer science is way different from software engineering - see also the article about Software Engineering <> Computer Science from the show notes of the podcast - or more articles about "Beautiful Software".

In my opinion (also):
  • A lot of time is wasted later, when the software architecture is bad and the code is not kept clean.
  • The developer needs to choose wisely and master his primary tools - the programming language(s) of choice and the IDE.
  • Focus must be on the code and not on the usage of some tools or too many documents.
I also find it very useful where Chuck Connell draws the separation line between Software Engineering and Computer Science (written in free words from my understanding): When people are involved in a crucial manner (compare a custom development project of a desktop or web application with developing or analyzing an encryption algorithm) then you are on the software engineering side.

What I can see from all this is as a personal conclusion:
  1. It is extremely important to think well and communicate well with the customer before creating the architecture of the software.
  2. Don't forget about the importance of creating clean readable and well documented code (code comments are more important than other documentation that is created along with your implementation as that tends to be more outdated).
  3. Experience is an important factor. A well experienced developer is worth a lot!
Related posts: About agile software development, The good, the bad and the ugly.