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.

2009-12-20

Going Linux

It now has been more then four months ago that I have decided to completely switch to Linux (not only at home where I use Linux since already about 2006). And it is about three months now that I am running completely Linux (Ubuntu in my case) on my working place. This has been a little more a challenge than just using Linux at home because for work I have several more requirements than "just" doing E-Mail, Web-Surfing, writing some letters, scanning, storing and printing my photos.

One thing is that I need more applications like for Mind Mapping, Taking screenshots (with annotations), creating videos (showing bugs or how to configure particular software pieces), creating virtual machines (for Windows legacy development and testing software on different environments), software development, writing concepts, Investigation of files (diff viewing and hex editing), remote support and more.

A second thing is to integrate with the environment in the office and remote access to customers who use partially VPN and partially other applications like TeamViewer (for which unfortunately no Linux version is available yet).

I started with Ubuntu 9.04 Jaunty Jackalope and upgraded to 9.10 Karmic Koala right after release (so running that for nearly two months now). My notebook is a Dell Latitude E5500.

The installation and first impressions were much better than compared to Windows 7 for example (where already the first use of IE or first software updates were full of annoyances). Further, a lot of important things were already there. However, I am used to be not like a standard user and there have been several things I want to have different from a default installation...

Additional applications:
Many additional applications I wanted to have were just a few clicks away using the synaptic package manager (this is one of the first additional installs I do recommend). This is far more efficient than on Windows where you have to go first to Google and then to the appropriate websites searching for the place to download additional core tools (like a better zip tool). So to get up-and-running with the most important apps is much faster on Linux (or at least on Ubuntu in my case).

And last but not least, your software downloads are done from trusted sources automatically having all packages pgp-signed (a thing that a "normal" Windows user is neither thinking about and installing all kind of stuff from whatever source).

Regarding the applications the biggest issue is to know your options and to choose an application that fits your needs. For many needs there are at least two options (often more). But there are some realms where it is difficult to find either one single program that fits. For example I searched a long time to find a screenshot tool that fits my needs. I need to do a lot of screenshots with annotations for documentation or as part of user support. So a very efficient tool is essential for me. Finally I found Shutter fitting my needs. It was a longer search because it is not in the standard repositories - to get it you need to add an additional repository from Shutter-project.org. - So although many applications are already in the repositories, for some more special applications you might need to add other optional repositories. But once added the repositories, the applications are seamless integrated in your package management (and hence updated along with all other updates).

There is a rest of tools that you might want to manually install and update because you are contributing by testing or you need the really newest stuff. In my case NetBeans is an application, that is currently developed really fast and since I am on Ubuntu I already did the second upgrade - so I am on 6.8 now and the distribution version would be "still" 6.7.1. - For NetBeans I do it because I want to decide separately when to switch to a new version.


Reliability and stability:
I can work now the whole day (8 and many more hours) without noticing the system getting slower and slower. Even Firefox runs faster and more smoothly under Linux (I use quite the same plugin set as under Windows). Some software I do download/install does not run well but this happens usually just when I installed some older not well maintained software that does not seem to be widely used. In such cases uninstallation of software can be done without leaving clutter on your system. So in general I do not fear that my system gets slowly cluttered and broken as time passes. That makes it not a big deal trying out a lot of different applications while looking for a particular feature set.

Even although I already did a major distribution upgrade, I still have the impression of having a clean system. I would never ever upgrade a Windows PC on the other hand and always doing a clean install of the OS. That said, lately I read that many people also recommend doing a clean install for Linux too. I noticed that there has not been a migration to Ext4 in my case so I am still on ext3. Probably I am doing a clean install the next time also. But before doing this I will test how fast I can be then in transferring data, configuration and same set of applications.

Another big advantage is that under Linux there is no fragmentation happening slowly as time passes by - an issue that slows down every Windows PC after a while and one needs to defragment the machine over night (because a long process) from time to time.

But the most important thing is: In general things work or not. So far I did not experience issues as "sometimes it works, sometimes not" and the like.
There is either a bug or you are missing some library (which might not have been correctly added to dependencies). But applications do not interfere with each other in the way that an installation of one thing breaks another (as known from other so-called operating systems) - at least I never faced such an issue.

I had a single exception so far - experiencing an issue recently of the type "sometimes does not work" with my mobile Internet stick where I had to unplug and re-plugin it again sometimes. That happened on Ubuntu 9.04 Jaunty Jackalope. After upgrading it did only work when it was plugged in already when starting up the machine. And this is already the only thing I can really complain regarding reliability: This was/is a problem with some Huawei modems not working any more on Ubuntu 9.10 Karmic Koala - a Linux Kernel problem in general (see bugs #446146 and #449394). For me (for the E160G that shows up in lsusb as E220/E270 - at least in my case) the problem was solved with a firmware update of my Huawei-Modem which I found strange as it was working on Ubuntu 9.04 previously. But anyway, this is a serious problem that should not happen. There are many people for whom the mobile internet connection is the only they have and with braking it they even can't get their updates (and a probable fix for this problem) any more. That said, I have seen Windows machines where the mobile Internet wasn't working either.

But this and some other minor issues I had initially with Karmic Koala have been solved with the second update wave about two weeks after release. Never seen a first service pack on Windows within two weeks after a release!


General architecture:
I do consider the Linux operating system as simple and straightforward. Although there are plenty of modules, services and appropriate configuration files, there are rules of what is saved where and very most configuration files (if not all) is saved in human readable text format.

Also the driver system to me seems to be much better (from the little I do know about it) on Linux - but this might be just my personal impression.

On Linux there is less flexibility in the permission system, but it is clearer. I had so many permission issues on Windows where searching for the missing permissions was a painful work. However, this implies that for some requirements it might be a little more difficult to get the effects you want if you want high sophisticated permissions. There is the "acl" package with its commands getfacl and setfacl to manage enhanced permissions (if the core file permission features are not enough for you).

Linux was just or mostly commandline for a long time but what it means still today is: Everything can be done on the commandline. This means, that integration with the OS can be done by calling system commands - so not necessarily integration of system APIs required.


Hardware compatibility:
This is really the biggest issue. Not all hardware is supported. I tested Linux (different distributions) on machines where I got only a black screen. When you are thinking of moving to Linux then you should take care of buying compatible hardware (gadgets).
Before blaming Linux because of that think a moment: Microsoft is "outsourcing" most driver development to the vendors and Apple has a very reduced set of hardware pieces they need to support (what you get there is more vendor-lock-in). On Linux a big part of the drivers is developed by the community and a smaller set of vendors that have noticed the rising interest of people in Linux.


Software compatibility:
On Linux there is the focus on open standards and open formats. This is a big advantage if you think of long term archiving of your data or long term compatibility of software components. I have files created with applications that I cannot read any more with current software or the newer versions still running on recent Windows versions got too expensive for me. Only thing: There are several multimedia formats with some law glued on them to restrict usage. To make them work on Linux some additional packages must be installed manually for most distributions (Linux Mint, which is Ubuntu based, ships them by default).


Overall conclusion:
I am very happy of my decision and I cannot imagine to switch back.

Using Ubuntu at work is clearly a bigger challenge than just using at home, in particular, if the company infrastructure is not looking at compatibility either. I was lucky because at the company where I am working the used network printers are all HP and HP printers are generally quite supported under Linux - for your company you might be interested in having a look at linuxprinting.org.

The biggest issues that I had was with the different remote desktop support tools in use by our customers. I did not notice before that so many products for remote desktop support do not have a Linux version available. For me one of the most widely used - TeamViewer - didn't either work using Wine although people in forums claimed it should. I found Yuuguu (it's like Skype for screen sharing) being free and available under different operating systems and I use this now as far as possible.

There are a few apps left (like TeamViewer or some internally developed internal apps) that only run (well) on Windows. For those I have installed a VirtualBox running Windows (a license I got from the company).

A very important consideration is: If you would like to switch to Linux as a company or as an advanced Windows user then this is a long-term project. In my case I was keeping an eye onto alternatives to Windows since - let's say - about 2005. When I noticed how quickly Linux improved from release to release (in that time looking mostly at Fedora) I started to prefer applications that are available on Windows AND on Linux when I searched for new applications to fit my IT needs. So when I finally switched most applications I do now use on Linux I already used on Windows for a longer time (like Firefox, Thunderbird, Open Office, VLC, VirtualBox, Freemind, MySQL and so on). For a company that heavily relies on some applications that are chained to Windows an option is always to use one Windows Terminal Server and users do their Windows stuff that way (which is a usual practice for companies switching over). In general a company should favor applications that do work on both platforms because even if still favoring Windows under current conditions, it might be subject to change. So take the sure way and be platform independent.

BTW: The title of this post was borrowed from goinglinux.com - a podcast I can highly recommend for beginners and even more advanced users. I am a subscribed listener and enjoy every episode (only the computer America episodes do contain a lot of interruptions - even if the commercials are stripped - so I skip them often).

Related posts: Why Linux?, Why I switched to Ubuntu, Cross platform solutions, About Dell, The operating system, The Open Source idea, New year's IT resolutions, Software on speed, Ubuntu 10.04 experiences, Small Business Boom, Ubuntu compatible hardware, The Dell Latitude 2110 and Ubuntu 10.04.1, User lock down, The community, Popular Ubuntu desktop myths, Why companies do not use Linux on the desktop, Distribution choice.