2018-02-05

The "Java is dying" tale

And there was it again... - somebody (in a Java group - strange enough) told that Java is dying. Uff! - I hear this for years now - and it gets annoying to hear or read this again and again (of course of the people who don't like - or simply don't know Java).

Nevertheless, Java ranks within top 3 programming languages on whatever index you look!
But probably you should also consider, where you live, because there are statistics over countries which shows that most important language depends on country - e.g. here:
https://blog.hackerrank.com/which-country-would-win-in.../ (Java is there first for Poland, Python for Hong Kong for example).


Oh - this article (even if older) already talks about the Java is dying tale: https://jaxenter.com/java-slippery-slope-downward-trend...


What makes Java still a very important language and still very attracting for newbies, is the wide field of usage - from desktop over web and not finished at mobile development. Especially when searching for a first language to learn which can be used to do it all.

Another fact is, that there are many open jobs (at least here in Austria) for Java Developers at the moment - so knowing Java currently helps if you need a new job...

Related posts: The programming language discussion, Java vs .net/C#, Choosing a programming language, The programming language, Popular Java myths.

The programming language discussion

And there it is again - the programming language discussion - Not a single developer forum or group that does not have it at least once every month.

Don't get my wrong, there are many good programming languages out there many are worth to be learned. Although I learned many through the years, I know very well that one cannot be expert in a lot of languages. You can only be an expert in that what you use often. 

Sometimes I need to look into old VB Classic code and after a while I am back into it - but not coding in the same speed as back then when I used it on a daily basis just because of the fact, that I don't remember well all the libraries and their functions I wrote back then.

When the programming language discussion comes up, the arguments are about what is the "best" programming language or what is the most "widely used" language. But I consider this being secondary priorities.

Learning a programming language is an investment!

You need to consider, what are your needs and learn what will bring the best return on investment for you!

I found the following strategy being very useful:
Have one primary programming language - or at maximum two - that you know very well and basically can be used to solve all your programming needs (batch tool, server daemon, desktop application, web application and mobile application in best case). Then have 2 or 3 programming languages that you can use for particular needs in special cases where your primary language is not so good at.

Choose wisely the programming languages you learn!

Related posts: Choosing a programming language, The programming language, The IDE and the libraries, The "Java is dying" tale.

2015-07-23

Java vs .net/C#

Visual Basic Classic was my primary programming language for many years. A pretty amount of years ago when Microsoft announced the end-of-life of Visual Basic Classic (one of the last statements regarding VB6 see http://msdn.microsoft.com/en-us/vstudio/ms788708.aspx) I took a first look at .net and C# as it seemed to be the most logical next step. I was deeply disappointed by the first versions of .net and C# (it was v1.1 if I remember correctly - it was so full of bugs and terrible slow). The next shock for me was the absence of any migration path for the existing VB classic projects. So switching to .net would have been a total restart. I really wondered about that step of Microsoft because pretty every software vendor knows that a hard cut in backward compatibility of software comes with the danger that customers start taking a broader look around to competitors.

Due to the fact that I already had switched from Windows to Linux at home at that time, I thought by myself, that this would be the opportunity to learn a completely new langauge which is platform agnostic and enables me to write applications that run on both environments. Using a computer I can't program (the Linux box at home) was a horrible situation for me.

About a year later, after several evaluation phases and another attempt with C# to give it a second chance, I decided to go for Java with two core advantages (apart from the language specific reasons):
  1. Develop once and run the binary anywhere - on Windows, Linux or even Mac.
    Yes, I know the critics, that Java or other attempts following the "write once, run anywhere" paradigm do not deliver this promise (see comments on Wikipedia to cross-plattform development for example). Now, years later and after a few applications developed (commandline, server, Swing rich clients) my experience is very good. Of course if your development machine runs Windows and you use Windows API exits or use com4j, J-Interop or JACOB to interact with a Windows-only COM component then you will have problems running it on Linux or Mac. For example: I have developed a Swing application that worked flawlessly on Mac even although I did not have any possibility to test it (I do not have a Mac). I was used to get problems with windows only applications just trying them on a new version of Windows! Of course I also had some compatibility issues e.g. when stripping invalid characters from filenames (different characters are allowed and not allowed on the two systems) or checking if a file is still accessed (there is no windows-like file locking on Linux) - but these are differences in architecture of the operating systems and that can be handled. You can develop for many platforms also using C++ for example but then you need at least one instance of each operating system at your fingertips to do the compiling work.
     
  2. Reduce dependencies
    You already run a risk choosing a programming language. You have a learning curve and invest into know-how, library development and maybe also buy some external components - not to speak about the related tools you learn to master (IDE, packaging, deployment, ...). But this is mainly your own risk. The even bigger risk is for the customer using your application when it is not plattform agnostic. I have seen companies trying to migrate a few servers to Linux and were stuck because of software running on Windows only. You don't know which operating system survive for the longer time. With a platform agnostic solution you just don't care. It's a matter of flexibility.
I can see further advantages, like choice of IDE or missing licensing issues (Visual Studio license usually provided by the employer and when you leave you have to find a new sponsor).

Having now the choice between several IDEs I first used Eclipse (free) and moved to NetBeans later on (also free). The book, which was most helpful for me in learning Java (Javainsel) was and is very good (sorry folks, it's german).

The biggest advantage of Java - being platform independent - also is the biggest obstacle in a (still) Windows centric (business) world: To ensure plattform independency (as I explained above) means, that you should only use and do stuff that is available everywhere - or you need to implement to different solutions. The resulting problem is: How to deal with the Windows specific stuff?

My solution to this problem is in the first place to not use OS specific exists or use calls to Windows-only stuff. For applications that need to integrate with Windows stuff I try to keep the OS dependent part small (e.g. a VBScript) and let it communicate with the Java program via commandline, over the net or by saving files to watched folders. For example: To get the active window title under Windows the Windows API is a possible way to go while on Linux there is a commandline tool called wmctrl which can do the same. So under Windows you would write a small Windows program that uses Windows API to to get the title of the current window. Probably the easiest way is to write an AutoIt script which has a prepared function for this and let it return the Window information in the same way as the wmctrl program does on stdout. Your program then - depending on the OS it is running (you can find that out during runtime) - calls either the one or the other commandline tool grabbing stdout of the called program. So it is recommended, that you try to reduce the OS dependent parts to a minimum and split your application into components - and the smaller OS specific part finally needs to be developed twice or three times.

It was and is one of the core arguments of those developers on Microsoft (.net and C#) that they are bound to Windows anyway because they deal with so many other Windows-components. Yes, this is partly true and I do still a lot of Windows-specific VB scripting. But I always think in components and so there are several opportunities to write parts in a platform agnostic way. Even if it is not yet totally platform independent - later there is less work when an OS migration is needed. If you look at the trends of the last years, you can see one big related trend: decoupling or "loose coupling" of components (from COM and DCOM to SOAP and REST). Lately I read more and more about "Micro services" which - frankly spoken - is just a form of component oriented design. Anyway, that nowadays makes it possible to have processes on different operating systems written in totally different programming languages talking to each other.

In the meantime I also improved my C# knowledge a little and developed a few smaller things in C# where it did not really made sense to do it in Java. There are a few people dealing with both languages. Interestingly those people criticizing Java most are usually those who don't know Java and have never ever looked into something else but the Windows world.

Although Microsoft had the chance to create a "better" Java by learning from it, they did many things worse in my opinion. Many say that the .net libraries are better organized than the Java ones. I do not know the .net libraries very well yet, but I tend to agree. On the other hand there are a many characteristics where I prefer the Java way, for example:
  • Properties (C#) vs Getter and Setter methods (Java)
  • Delegates (C#) vs Passing interface implementations (Java)
  • sealed methods+readonly variables (C#) vs final - one word that says it all in both cases (Java)
  • Missing checked exceptions in C# - a Microsoft guy once told me that checked exceptions produce just bloated code and therefore something like this does not exist in .net. Well folks, it is about error handling - something, Microsoft may not care a lot about ;-).
  • Ă„hem, want to talk about GUI development? - Windows forms or WPF? - Both seem to be unfinished I did not figure out yet, which of those will remain unsupported sooner. At least silverlight is dead... - I went for Windows forms so far and even for a quite simple GUI I was stuck with the shitty TreeView and a double-click-issue - bug report from 2009 and not fixed yet...
In general Java is easier and simpler (less language constructs - not the libraries) in my opinion, but sometimes there might be more code for the same thing, but who cares? - It is important at the end, that you don't refuse touching again your code from a year ago (not to speak about the code of others ;-) ).

I will continue to do a increase my C# knowhow, but I'll be always more confident when I can open up NetBeans again and working on a component in Java.

See also: The programming language, Choosing a programming language, Popular Java myths.

2014-09-25

IT ball and chain

After a very intensive year (which means a lot of work and a minor amount of sleep) at least I have been on vacation a few weeks this summer (in chunks). For two weeks I totally abstained to use a computer. I only used the smart phone from time to time for a phone call or checking mail / searching something in the internet (in total not more than approximately 2 hours) or reading the news. That has (again) increased my awareness that a computer does not always increase the quality of your life. Coming home I experienced some of the biggest annoyances of IT:
  • Maintenance work
    • System and application updates - they take a lot of time and attention (e.g. permission check on Android during application updates).
    • Declutter and free space on drives (to download pictures from the camera to the computer in my case) or on Dropbox to get the pictures uploaded that my wife took with the smart phone.
    • Delete spam or less interesting emails.
    • Make secondary manual backups.
    • Fix hardware defects (change old-age harddisks etc).
       
  • Trouble-Shooting
    Be it end-user support or administrative support. Errors may happen during updates, some passwords might be expired while you have been away for too long without logging in, some features (after an update) suddenly not working any more as you expected or - after not using for a while - you might not remember well how to accomplish a task seldom needed.
     
  • React to changes in IT world
    In my case during the updates on my mobile devices I have seen that many applications do want new permissions regarding device ids and call information. So the first action was abort a lot of updates and search the internet for possible reasons and for options to restrict this alarming trend against privacy. Lately there were plenty of news causing administrators to take action, like the SSL heartbleed bug or other alarming information, e.g. leaked by whistle blowers (like Edward Snowden). Not to speak of more long-term changes like technology shifts (those do not happen just during a single vacation, but while reviewing the past year you might notice a trend that needs to be evaluated).
The longest-running tasks during my vacation were washing dishes (no dishwasher in the rented appartment), sweeping and disemboweling fish (take out guts) as well as brushing away the fish scales (adhesive bonded onto the wall), but none of them took longer than 45 minutes. Last weekend I tydied up the storage room in about an hour. In my IT work I can be very happy if something can be done under an hour.

And now take the annoyances mentioned above and multiply with the amount of devices you have... - I fear the time, when even my washing maschine needs to download updates and doing reboots before it can start washing - super annoying...

As a child, one of the main reasons why I got fascinated by the computers, was the fact, that it can help you making a lot of tasks faster and more efficient. Nowadays you have to pay attention that the total cost of ownership with maintenance work together with the velocity of change does not outweigh the benefit of the automation.

Related post: The truth about software.

2014-06-20

Dropbox Icon missing in Ubuntu

On Ubuntu 12.04 as well as 14.04 with recent versions of compiz, dropbox or whatever other module the Dropbox icon may be missing in the upper right corner (system tray) after login.

This is in general just an annoyance because Dropbox is still running in background (you can check this by opening your Dropbox folder and you will see the checkmark icons and the dropbox context menu entry when right-clicking a file - which are only visible when Dropbox is running).

However, I found several forum and blog posts mentioning that
sudo apt-get install libappindicator1
solves the issue or
sudo apt-get install nautilus-dropbox
solves it. I already had libappindicator1 However in reality the latter is obsolete as the nautilus integration is no separate thing any more. So both did not solve the issue for me.

I solved it permanently only by writing a short shell script (which i put into /opt directory):
 #!/bin/bash  
 sleep 60s  
 dropbox stop && dropbox start -i &  
(mark as executable) and then click on the Ubuntu button on the left upper corner, type "startup" and there add an entry to call that start that shell script /opt/dropboxrestart.sh.

2014-01-07

Reinventing the wheel

There are three kind of developers when it comes to library use:
  1. Those who extensively use existing stuff to avoid reinventing the wheel,
  2. those who do code the stuff on their own and try to reduce as many of the  external dependencies as possible and
  3. those who do the easy stuff on their own and only for big topics (like PDF or MS Office file handling etc) they use existing libraries.
If you want to avoid reinventing the wheel completely then you will end up with a lot of library dependencies which often even do not fit well together (just think of the many different java logger frameworks available).

Neither the first nor the second extreme will bring the optimum result - at least not when you think long-term.

For example I was using ini4j to load inifiles (because I was under pressure) but later I noticed that the sections are internally stored in a way that you can not rely on getting them loaded back in the proper order. For the project where I was using it, order of the sections previously wasn't really relevant (that's why I didn't either recognize that ini4j was mixing them up occassionally), but then things changed and now order of some sections is relevant. So I had to change the underlying library. I took the chance to implement the inifile handling on my own. Why? Would I have been the developer of that library I could have changed the internal implementation who the sections are loaded in an instant. Without being really involved into the project I would have needed to read into the foreign source code (which unfortunately is always more difficult than reading your own code - if you did it well) and doing code changes that hopefully will not be rejected by the project owner (loosing it again with the next patch). I would have done this probably, if it wasn't urgent and if inifile handling wouldn't be such a core thing for me (I deal a lot with inifile style files).

And here it comes to a related topic:
You can get your code being written almost everywhere around the world, but the important questions are: If you need a fix or an enhancement,
  • do you have a chance for direct communication with the developers (or how many levels of communication are in between)?
  • how fast can you get what you need?
Of course, when using a big library that is widely used you may get a very good and stable code base, but bigger changes will not be easy to get quickly.

I have seen it plenty of times, that having the full source code available at hand is the only guarantee to get fixes or enhancements in time when you need them!

And there is another related topic: Progress
Sometimes it makes pretty good sense to reinvent the wheel - and indeed if you look at the wheel itself, it has been reinvented (or at least adapted) many times and looks very different depending on the core usage and environment. For IT or source code this means that for instance the same stuff must be programmed again and again when you change programming language or when newer and better technologies can only bring benefit when you partly rewrite the application.

I write this because often the thought of reinventing the wheel is labeled so negatively. Rewriting code parts or writing them yourself instead of using an external foreign library can make really good sense!

Related post: Bronze age of IT.

2013-10-15

IT Dependencies

Lately at a customer I got introduced to an application written by an employee which should be replaced. There were some special features that have been implemented for the exact needs of the company. After a while I began to wonder why they want to replace it. I thought by myself: "What could be better than an application written exactly for their needs by a person who is actually in that company for a long time now?"

Finally at the end of the meeting after the others left, I asked the project manager at the company what the real reason is that they want to replace that program. The answer was: They want to get rid of dependency of that piece of individual software development and dependency of a particular person. They want to use a standard software.

While this sounds quite reasonable, I want to clear-up potential misunderstandings:
  1. Even betting on the biggest companies and their products does not save you from the risk of software being discontinued or services shutting down.
    For example here is a list of software products discontinued by Microsoft. And this does not seem to be a complete list because from the first look I already miss the Visual Basic Classic which is also dead (and I have A LOT of experience with that which will be dead know-how in a few years).
     
  2. Even the largest company-group sends you individuals that do the work and guess what: In most bigger IT projects (even when using standard-software) you usually end up with an individually customized piece of software and often with several project specific extensions. And who knows best your system? - The one who has done it! Change the person and the person needs time to analyse and get into it.
     
  3. As time goes by most companies, when they start to buy external know-how or services, they begin to loose control. To reduce dependency you would need the source code, the know-how and the access. One effect of extreme outsourcing often comes with loosing your privacy and security.
So by switching to a standard product it is not very likely that you are reducing dependency. Often you save internal IT manpower for other things but you trade it for dependency or for privacy. Paying a developer for permanently being ready for implementing your business needs may not be the cheapest solution but you get flexibility and often reduce communication flows.

For many very tiny companies it might be perfectly ok, accepting the dependency from external services when they don't have to bother about their server-backup etc then. And so privacy is also traded (e.g. free web service for providing your personal data).

It is a matter of your values, your priorities, your time and budget etc. if you better have a server in-house or use some online-service in the web.

So what can you do?
  • Be aware of your values
  • Be aware of your business focus
  • Be aware of your (human) resources
  • Remove resolvable dependencies
    which means: Prefer forward-looking software products and plattform-agnostic open-source software over more limited alternatives.
  • Distribute work and risk (e.g. have an external partner helping you but also have an internal administrator/developer who can do the work).
Related posts:  Priceless Developers, Surveillance, Privacy (NSA, PRISM, ...) and encryption, The truth about software.

2013-10-12

LibreOffice v4.1.* and Ubuntu 12.04 Unity-Integration

As I use Ubuntu on my productive work+private machine, I prefer to use stable versions - so I switched to use LTS versions only. However, for LibreOffice I have enabled the LibreOffice repository using

# Adding repository for getting most current LibreOffice # (taken from https://wiki.ubuntu.com/LibreOffice) add-apt-repository -y ppa:libreoffice/ppa
 That slurps the current LibreOffice release into my Ubuntu 12.04 LTS stream of updates (the poor Windows users don't have an idea of such a comfort).

The reason for this was mainly to get the latest additions for Microsoft Office formats support (Microsoft is still good in their attempt to squeeze people into staying with MS Office).

Unfortunately with LibreOffice v4.1.* a unity-related problem (users of other flavors of Ubuntu can stop reading here) was introduced that has not been addressed yet by the Ubuntu folks - at least not for 12.04 LTS:

When opening several documents in Writer, Calc etc the windows are not grouped to a single Unity icon.

As you might know from earlier posts I like the Unity desktop very much (and it also has become very stable) and so I am very glad for the workaround that has been posted to the according bug report at https://bugs.launchpad.net/bamf/+bug/1026426 (comment #166 by Marco Trevisan) which is just one command in the terminal window:
sudo sed '/StartupWMClas
s=.*/d' -i /usr/share/applications/libreoffice-*.desktop
(all one line).

Problem solved, thank you very much, Marco!

Related posts: Open Office and Libre Office starts slow, Normal.dot in OpenOffice or LibreOffice, Default Paper Size in Open Office.

2013-10-04

Maintaining multiple Calendars

While I have to put the Outlook Calendar entries into the office calendar I do have my own private calender on Google that I share with my wife and vice versa. I want my wife to know when I am at customers or in foreign countries. That enables her to make appointments for us without the need to call me several times a day.

There are two problems:
  1. And this is a general problem of the crappy Outlook*): With version 2007 or 2010 they changed the style how invitations are sent and this means: When on an Android phone for example or you do not allow HTML display in your mails due to security reasons you don't see the Outlook appointment information on your phone or mail-client. Both is given in my case.
     
  2. I need to create each work-related calendar entry twice - once in the Outlook Office 2010 calendar and one on my Google calendar.

Solution for problem 1: Install Invitation Processor Pro on your Android device as unfortunately by default Microsoft Outlook inviations cannot be processed by Android (while gmail invitations and those sent with Thunderbird+Lightning which are also distributed as .ics file are displayed fine so this is not a general problem with event invitation mails). Say thanks to Microsoft.

Solution for problem 2: I thought of several possible solutions, but a) I am not using the Desktop Outlook at all (so all Outlook plugins for syncing calendars are irrelevant for me) and b) I do not want extra hosting for calendar syncing. You might be in a similar annoying situation so here is another still a little annoying, but acceptable way:
  1. Create two rules via Outlook web access 2010:
    a) Forward all mails of type meeting request to your private gmail address:
    Rule Name: Forward event invitation
    After the message arrives and...
    the message is Meeting Request.
    And my name is in the To or Cc box
    Do the following...
    forward the message to 'you@gmail.com'
    and
    b) Delete your own meeting responses from yourself (confirming events on GMail side):
    Rule Name: Meeting response from Google Calendar
    After the message arrives and...
    the message was received from 'calendar-notification@google.com'
    And the message is Meeting Response.
    And the message includes specific words in the subject '(YourFirstName YourLastName)'
    Do the following...
    delete the message
    And stop processing more rules on this message
  2. Use Outlook (web-access) 2010 to confirm appointment requests (at work for me the 90% case). When creating appointments on your own then invite yourself (your private or your work email address).
And the good thing when solving problem 2 this way: You also solve problem 1 as GMail is able to display the invitation details (date and time) even for the .ics files originating from Outlook. I installed the Invitation Processor Pro anyway to see the event details also when currently in K-9 Mail on Android.

There are four different use cases:
  1. Co-Worker sends me a meeting request:
    => I confirm in the same way using Outlook web access 2010 and GMail. This way I have to confirm two times, but don't have to recreate the appointment twice manually (and using wrong dates or times) so I can be sure they match. And just to see it in GMail I don't even have to respond to the meeting request because on arrival in GMail I can see it in Google Calendar.
     
  2. I have to create a private appointment:
    => I simply create this event in my private Google Calendar.
     
  3. I have to create a work appointment that is completely irrelevant to my private time planning (maybe just a time blocker or reminder):
    => Just create this event in my office Calendar (using Outlook Web access).
     
  4. I have to create a work related appointment:
    => Create the appointment in my private calendar and invite myself (send invitation to my work/office email address) and
    => confirm the incoming message with the Outlook web access.
    OR
    => Create the calendar entry in Outlook web access calendar and invite myself (send invitation to private email-address) and
    => Confirm invitation in GMail.
The remaining little annoyance with this solution is: As I usually use Thunderbird to access my Microsoft Exchange Mail account from the office, I need to switch to Outlook web access for confirming meeting requests.

Related posts: Outlook Calendar Meetings, Outlook 2010 Meeting Requests, Thunderbird and the Outlook global address book.

2013-09-25

Priceless Developers

When I get contacted by headhunters they are usually searching either for a developer or for a consultant and there is an interesting observation which I do see confirmed when I read forums or talk to friends:

Companies are willing to pay much more for a consultant than for a developer.

I am both - developer and consultant - and I can tell you: The best consultant cannot solve the issues that have been introduced by bad programming and software design mistakes. In a software company the whole business depends on the quality of the software released to the customers.

Only in very rare cases in my consultant role I have access to the source code of the base products in use at the customer. My daily job includes customizing bricks of software and tying them together. Of course this often means writing code on my own to make everything work together. So I am dealing a lot with APIs of software products.

During implementation of projects the vast majority of time goes into dealing with bugs, unfinished features and bad software design (or a software design that simply does not fit the needs)! And is pretty irrelevant which software product I am thinking of, it's the same everywhere. It would be better if I could focus on the customer needs and on building solutions instead.

There are people who have the opinion that most problems are just organisational problems or can be solved on the organizational level. I do not really agree with this. Of course, in most companies there is room for improving the organisation, but a software flaw should not be the reason for implementing workarounds on the organisational level.

Software vendors and their customers depend on stable, secure - good quality software. Those, who are building the software, often are poorly paid. Most of my ex-class-mates stopped the programming work completely in the meantime. In the same time I do not know any software vendor having enough good quality programmers. Instead bug lists are only getting longer over time. Really strange.

Related post: IT Dependencies.

2013-08-22

Surveillance, privacy (NSA, PRISM, ...) and encryption

It's been now a while that the "whistle-blower" Edward Snowden caused heated discussions about the NSA and it's PRISM program. Privacy since then got a big issue for many.

Some of my friends consider to close down their Facebook accounts, their Google Accounts and think of refusing many other internet activity.

That could be a good idea - if you want to have more spare time with your children, your family or your hobby - but to avoid being spied out they ignore a root problem:
  • Most of them use Windows: As long as you are using Windows and that machine somehow is connected to the internet you are at risk. As long as there is a feature in the operating system kernel to harvest your data that can be done already before encryption happens. Linux is Open Source and can be checked by everybody who understands the programming language (C). And indeed nations are interested in having an operating system that is secure so even the NSA has contributed code to Linux (SELinux). They want to spy out others but they are not interested in getting spied out themselves by others. ;-)
     
  • They don't refuse email: EMail is like sending a post card. Everybody (postman or IT guy) that sits between the sender and the receipient can see the content/text of the letter/mail.
    OK: Now, the more informed people are not thinking of using PGP. They usually find out after a while that while I can help them setting up their PGP encryption they need to have their peers also having the required software. While it is very easy to get started using PGP in Thunderbird using enigmail it might get a little more difficult to get Gpg4win to run smoothly not to talk about webmail <your favourite product here>. Oh, on Android you can use K-9 Mail and APG to send and read encrypted mails on the go.
    Apart from that even less people know that using PGP only the email content is encrypted, but not the header information like sender, recipient or subject. So when sending private encrypted mail it makes sense using a nonsense subject like "Thank you for the fish" ;-).
In many cases it is not a practical short-term solution to ditch Windows completely and switch to Thunderbird + encrypt all your mails. And you should also stop using your mobile phone (you can be tracked not only via GPS but also via antenna mast your mobile phone connects to). But as long as you don't do that and also do not encrypt any other data that you have saved somewhere in the cloud, it is quite irrelevant if you close down some of those accounts. Sincerely: Are you writing serious stuff in Facebook or Twitter that may really hurt your privacy if it would be made public for everybody?

There is always a tradeoff in having security and so is in having privacy. To avoid beeing hacked you can close down as many ports and sites as you want, but in the same time you loose access to features that might boost your productivity. We can be private and secure but then you wouldn't be able to use the benefits that the technical solutions offer.

Related posts: Pros and cons of cloud solutions, Administrator ethics, Social networking sites, Your holy machine, IT Dependencies.

2013-07-23

What the Tech Industry Has Learned from Linus Torvalds

Lately I often suppressed my gut feeling in some technical issues.

Finally I stumbled over a video that completely supports my gut feelings:

Jim Zemlin, boss of Linus Torvalds is talking about the lessons learned working with Linux:

Lesson 1: Don't dream big
Lesson 2: Give It away
Lesson 3: Don't have a plan
Lesson 4: You don't always have to be nice

2013-05-23

Why RSS Feeds and alternatives to Google Reader

When reading about Google Reader closing down on 1. July, I was in panic because to stay on top of the news (mostly IT specific news in my case), I was depending on Google Reader. I was depending on Google Reader because I am depending on RSS feeds.

Google writes (in the article linked above):
"While the product has a loyal following, over the years usage has declined. So, on July 1, 2013, we will retire Google Reader."
I would never have imagined a decline of use in RSS (and I assume that the decline of Google Reader usage also means a decline in using RSS in general because it is very hard to find good alternatives for Google Reader). And therefore before diving into the alternatives I want to - no, I need to - go into the advantages of using RSS feeds first. And although there are plenty of articles about Google Reader alternatives out there, it was very hard for me to find the proper substitute and this is the reason why I decided to write yet another article about this topic.

The reasons why I am depending on RSS:
  • Knowledge is power
    Information overflow is a problem these days. Recently I was asked (again) why one should - in these days - foster information overflow even more by opening even more channels where the too much of information rushes in.
    Information (as long it is not misleading or wrong) can be a life changer. You want samples? Think of a company investing in technology that is about to be obsolete (like Adobe flash) loosing a lot of time and money investing into the wrong product, think of a friend who found his spouse over the internet, think of going on a cheap vacation not knowing about risk of war in the appropriate country. Oh and another example I have experienced already several times: I get informed by RSS feed about food that gets withdrawn from market because polluted or containing toxic bacteria and strangely I sometimes see them on sale in the supermarket the day after I've read the article. Who has the knowledge has the edge over the others!
    The problem is not the information, the challenge is the appropriate filtering of information! And RSS feeds help!
     
  • Time and information
    I do not have the time to visit each single website or blog providing (probably) interesting information. Many sites and blogs do publish very important or very interesting information - from time to time.
     
  • More efficient scrolling through articles
    Many sites do publish a lot of information, but I am interested only in a few articles, so searching through many articles to find one or two interesting ones is annoying. An RSS reader (be it through the web or a local application) allows more efficient scrolling through articles.
     
  • Different user interfaces of websites and blogs
    Different sites have different GUI (graphical user interface) and different layout. Visiting the sites one by one also implies being familiar with many different user interface styles. Many of them are not very efficient or it is difficult to find the information.
     
  • Ads, bulk and other time and space wasters
    Even if you use an ad blocker in your browser often big graphics already consume a third of your screen distracting from the core information. Not only because of big graphics, but also because of many third-party service-sites (like Disqus, Facebook, Twitter, Adthis, Sharebar, ...) that are integrated on websites/blogs those sites take longer to load and having you to wait for the content that ... maybe then isn't so interesting today (while tomorrow may show a very interesting story that makes it worth waiting).

The reasons why I was using Google Reader (= the 5 core requirements of the substitute):
  1. In-Sync-View on the Laptop/Web and on the mobile device (so what I've already seen on my mobile phone did not get presented when reading news on my laptop - one of the most important features for me).
  2. List view option for feeds - I hate the hyped square interface. I want to read from top to bottom - that's it.
  3. Simple and efficient user interface for dealing with the news fast.
  4. Fast and reliable feed loading.
  5. Nearly identical user interfaces on the web and on the mobile device - or at least not lacking core functionality. (Mobile device in my case is Android, Mac and iPhone users, when reading this article, Apple-only alternatives are left out here).
Reasons 1 and 2 are a must have  for me, but found that not having 3 and 4 can also drive me mad in minutes. So, now you are understanding the focus I had while choosing the alternative, here are my proposals:
  • Feedly
    Feedly was the first alternative I got aware of and I observed it was the first alternative where the masses took refuge. However, I wondered if it will continue to work after Google Reader shutdown as it seemed to be just a front-end for Google Reader. Indeed they were (or are still while writing this) relying on Google Reader but developed a new backend on their own - see comments here. Not sure if the transition will work flawlessly and if the performance can be kept due to massive increase in amount of users. While I also find it one of the best alternatives, I am not as convinced as most of the others.
    Pros: Many features, mobile app (for Android, iOS, Kindle), similar GUI, laptop stays in sync with mobile app.
    Cons: Needs a plugin for Firefox (why the hack?), No mobile interface via browser only, even no https connection, Don't see how many articles still left to scroll through (no scrollbar) on mobile app. When I want to share an article link via K-9 mail (or other mail app than GMail) from within Feedly it does not transfer the article title as email-subject which is quite annoying. Further it restarts accidentally when returning from another app back to feedly (e.g. browser view - does not happen always) which is even more annoying.
     
  • netvibes (= Bloglines - same GUI, same login)
    Pros: Clean, simple and compact web interface, additional widgets in addition to rss feeds. Also looks ok and is usable on mobile device in browser being very, very similar to Google Reader - but only with default browser and Dolphin (Firefox and Opera Mini displayed it totally different and it was total crap). Videos are displayed directly in the article detail view.
    Cons: No dedicated mobile client and using some browsers (in particular Firefox and Opera Mini) you get complete crap. Due to mobile app missing, it does not offer any enhanced features via menu button (normal browser menu displayed). Limited share options given (Mail, even multiple clients plus Twitter and Facebook).
     
  • RSSly
    Seems to use Tiny-Tiny-RSS (which you can also install on your own server, if you have enough permissions there - see below).
    Pros: Many features, mobile app, similar GUI on laptop and mobile phone, laptop stays in sync with mobile app, display in browser on mobile device is also very good (Dolphin and Firefox - which is seldom - see below), many features including list of not responding feeds or feeds that seem abandoned as well as filter settings to filter out spam posts.
    Cons: It took me a good while to find out, how articles are marked as read on the mobile device. It does not work automatically, but when you do it manually it had unexpected effects until I found out, that doing it on the first page marks the first 30 entries as read and on the last page it marks the complete feed as read. On the mobile device I have cannot switch between show all articles or only unread of a feed. And RSSly seems to load feeds respond to article clicks a little slower than Feedly. I could also not get it to display article title only without abstract on mobile device.
     
  • Fever°
    This is not free and no hosted service. You can buy it for about 30$/23€ and host it on your webserver. I took the risk and bought it. Installation was very easy. I only had to temporarily disable PHP securiy settings on admin interface on my hosters website for my page (for the time of installation and activation).
    Pros: This is then yours, no risk of the next RSS service closing down. Clean interface, some extra features (kindling and sparks) to make your RSS experience even more efficient.
    Cons: You need a web server with PHP support for it. If you don't have a web host with your domain then you cannot use this. Mobile client meltdown for Android still missing some features and available only for Android 4.0 and later. Refresh of feeds is not done in background (you can cron it but in my hosting case I can only cron it once in the night) and I experienced it also to be slow.
     
  • The Old Reader
    Pros: HTTPS connection supported. Simple - no other clutter than plain RSS feeds. Few but clean settings, you will be familiar with it fast.
    Cons: No mobile client (yet). When importing my feeds it queued me up after 12 other users. This makes me worry if they have enough servers to have my feeds stay on top of the news. Although they say that their mobile web interface is good, I had already troubles logging in from my smaller phone (small screen) and categories were completely missing and similar issues here when using Firefox or Opera Mini (complete crap is the result).

What I also looked at but excluded from closer investigation and why:
  • Pulse
    Pulse has a mobile client but no simple list view of the news feeds - they always use the squares or rectangulars and I am never sure about the direction into which to read. Also I could not find a button to set a feed to completely read. So this lacks a lot of important switches in my opinion.
     
  • NewsBlur
    Free version has limits which I already exceed when importing my current feeds from Google Reader.
     
  • Mocharoll (=former Blogroll)
    Failed importing my RSS feeds from Google Reader (took a very long time and I then gave up first. Looking back later it had imported my feeds but I had no chance to switch to list mode instead of the square view. And in general configuration options are not really existing. Also refreshing problems - so didn't look either how it behaves on the mobile device.
     
  • Feederator
    Looked similar to netvibes or TheOldReader, but could not find a method for importing opml files or my Google Reader feeds.
     
  • Good Noows
    Looked nice on my laptop, but mobile view again awful (does not wrap around text. On the laptop I also had problems getting a complete feed beeing set to read. At least it supports https connection (not all of the online services do).
     
  • Tiny-Tiny-RSS
    As for Fever, TT-RSS is not a hosted server. It is free, but you have to install it on your own server. I could not test it because it said that it requires open_basedir turned on which seems to be disabled by my host.
     
  • CommaFeed
    Looks simple but already on Dolphin sucks in display (too small but when you zoom into it, display gets mangeled.
     
  • Flipboard
    Mobile app only - no sync-view between mobile app and laptop.
     
  • Feed2Imap
    Self-hosted solution, so requires your own server and then forwards RSS news items as mails into an IMAP account. I am not sure, if my hoster supports ruby and I did not want to introduce another protocol (RSS->Mail) where again something can go wrong.
     
  • feeder.co
    For what I need, I would need the variant that costs monthly fee.
     
  • FeedBooster
    Online-Reader only with https capability but no specific mobile device/browser adapted display.
     
  • Flud
    Seems to have a web plus mobile client but people reporting stability problems of the mobile app and pricing is not completely clear to me (maybe because this is not 100% RSS focused) so I refused testing this.
     
  • news360
    Web and mobile app but no possiblity to add your own RSS feeds - just what you get from them.
     
  • More alternatives here...
    I skipped everything in testing that obviously
    - syncs with Google Reader (and hence die with it)
    - does not have any sync option
    - does not have a mobile app or at least a useful mobile web stylesheet in use to show an adapted GUI for small screens
    - costs money on a monthly basis
    - does not have a list view for articles
So despite this long list of alternatives (Feed2Imap apart, I have listed only those I have also tested), in reality there are 4 which are fairly useful for me: Feedly, RSSly, netvibes and Fever. All the others had too many (for me important) flaws. I have Fever up and running and I feel good with it - as it is mine (nobody can shut down the RSS-service). However, best efficiency is given by Feedly and netvibes. Reading this (Feedly gets Unity webapp integration in Ubuntu) was one reason to go with Feedly for the next weeks. I still feel bad about it's desire to read my Google profile but I hope that will be gone when they synchronize with their own alternative but with Google Reader - currently Feedly still remains in sync with Google Reader. I can work around the mailing issue with the subject by first opening it in the external browser (there is an option for this in the advanced settings) and send the link from there. What I find more alarming: Feedly already thinks of asking money for the service. They already created a survey for that. Anyway, I have 3 other alternatives now I can immediately switch to and this gives me some feeling of safety.

Related post: Efficiently following web news with RSS.

2013-04-18

Proof of Concept

More and more companies tend to set up proof of concept projects before they buy software or IT solutions.

Apart from the fact that there is nothing wrong with that, I can see that companies do believe less and less of the stuff they get told by sales. And I think, they are right. Be it economic crisis or greed, to get a deal, salesman simply lie. When they lie they often the don't really lie explicitely, they often just choose words and phrases that can be easily missunderstood or lead to high or wrong expectations. Then of course there is usually the technical part of the story that salesman mostly don't understand well - and they guess or are just happy with the positive attitude.

Well, this is business as usual, you might argue - and you might be right.
But the product features/limits/facts and expectations of the people in the project are a crucial part not only during the evaluation period.

Who suffers?
  • The IT administrators at the customer.
  • The consultants doing the installation and configuration stuff.
  • The final end-users (some of them - they key-users - are nowadays often involved, even if often too late).
All those people are often not involved during the early project phase, although they are very relevant for the final project success.

What is worse than having few work only and a tiny amount of new customers only? When you have your consultants blocked working in projects which are always short before escalation or at high risk that customer wants unwinding the contract!

So I try not to feed high expectations and I prefer overdelivering over underdelivering. In the long run this brings more satisfied customers getting back to you for further projects.

Related post: The truth about software.

2013-01-13

Firefox and RSS feeds in Google Reader

Update: Google Reader will be closed down at July 2013 so this article is quite obsolete - read the newer article "Why RSS Feeds and alternatives to Google Reader".

However, here is the old story:

Lately I explained RSS feeds to someone and wondered why Firefox is not behaving the same way as on my machine when subscribing to RSS feeds. I did not remember what I exactly did on my machine to get it to work because it is so long ago that I created my profile for new that I first started searching the internet. Interestingly I could not get it to work so - back home - I investigated my own settings. Interestingly they do not match what I found on the net so I think it could be worth writing this article.

Preamble: Google Reader is an online RSS news reader that is also available for Android phones which is very fine when you (as I do) use your phone a lot to read news (for example while on the bus or waiting for it). What you read on your phone is synchronized with what you see when you are back on your laptop or PC. What I show here is how to get subscriptions with Firefox:

  1. Newer Firefox versions do not show the RSS feed symbol by default any more. - Right click next to your tabs or somewhere between your toolbars and choose "Customize...". Look for the "Subscribe..." button and drag it onto your toolbar (I have it next to the refresh and abort button).
     
  2. Type "about:config" into your url location bar and search for "feeds".
     
  3. Change "browser.feeds.handler" to "reader"
  4. Change "browser.feeds.handler.default" to "web"
  5. Change "browser.feeds.handlers.webservice" to "http://fusion.google.com/add?feedurl=%s"
  6. You might also need to change "browser.contentHandlers.auto.application/vnd.mozilla.maybe.feed" to "http://fusion.google.com/add?feedurl=%s"
  7. You might also need to change "browser.contentHandlers.types.0.title" to "Google"
  8. You might also need to change "browser.contentHandlers.types.0.type" to "application/vnd.mozilla.maybe.feed"
  9. You might also need to change "browser.contentHandlers.types.0.uri" to "http://fusion.google.com/add?feedurl=%s"
Now when you are on a site that offers RSS feeds the "Subscribe" button should be active (sometimes, when there are many different RSS feeds available on a site they are available through separate links on the site while the main RSS subscribe button is inactive so you might need to dig a little for the RSS  subscription link) - however in both cases you should get the option to put the RSS feed onto your iGoogle page or subscribe with Google Reader then.

Related post: Efficiently following web news with RSS, Why RSS Feeds and alternatives to Google Reader.

2013-01-12

The truth about software

To summarize the software-troubles:
  • Too many bugs
  • Too difficult to use
  • Too much administration and maintenance work
As you might already know, as it seems obvious for you - or maybe, if you are listening to your inner voice, you only hear it from somewhere burried deep down in your mind: software is full of bugs. There is no bugfree software.

Since I started programming, I could see the IT world complexity growing and growing. In the beginning there was one processor and one process running at a time - no other software to integrate with. Everything was easier. When I think back to times of Commodore C-64 or when I was using the MS DOS Borland Turbo Pascal or C compilers - they were all extremely robust and when there was something not working as desired, I could be to 99 % sure that it's my fault. So at least the core system and the development platform were rock-solid and stable. That did not always apply to my programs... ;-)

Nowadays, operating systems and their core services as well as development environments - and in addition to that a bunch of third-party libraries all have their issues. So the software developer doesn't even start on a rock-solid base as it happened to be back in the early eightees (at least according to my experience - YMMV). In addition to that: If you want to produce cars, toys or whatever other physical stuff, in most cases you need a factory and a lot of money before you can start. For producing software, all you need is a computer and download some tutorial from the net and even a fool can get started - and unfortunately a lot of fools do...

But the low entrance barrier is only one reason for the lot of issues around. In my opinion the complexity is the worst thing here. Even with the honest strong desire to get everything right, you can't - apart from the fact that IT world has grown far too big to be completely covered by a single person.

But the growing IT world did not bring only troubles - we do have far more possibilities since computers were invented. Software development is far easier than in the beginning of computers. We can build software with far more features in much shorter time now. The problem: The software can often do far more than the users can handle.

And last but not least: I remember times when the "installation" of a program was just copying it to the machine and run it. Today it requires dependency checks and sometimes complex installation procedures. Although still possible - only a very few programs that run fine when you just copy them. Nowadays many software products have a bunch of required preconditions and a lot of integration options that need configuration. Highly integrated software means more maintenance work regarding updates (of any of the involved components). Another reason for increased maintenance work are the customization options that most software comes with.

A normal user nowadays is working with a lot of different software products and often there are some software products that are used very seldom only. I have seen users dealing with software they need to touch only once a month. From one month to the other they need to re-find all needed menu items again because from one month to the other they always forgot.

The challenge these days is:
  • To reduce complexity (of the problem and feature set) as far as possible (while maintaining flexibility).
  • To make using the software easier - software must be intuitive to use (only a very few people do read documentation or help file text).
  • And to make configuration obvious and simple.
Related posts: IT fallout and buddhism, New user experience, Proof of concept, IT Dependencies.

2012-08-07

The truth about hardware support

Since the time I first started using Linux at home I know that one must be careful when choosing hardware to avoid pain when installing Linux.

When people say that Windows supports more hardware than Linux I always confirmed from my own experience.

But: Linux - out-of-the-box supports more hardware than Windows does (out-of-the-box)! Microsoft "outsourced" most hardware support to the vendors and when you buy new hardware with Windows preinstalled, vendors did the job in getting everything to work!

Lately I wanted to help out a new co-worker reinstalling Windows on his work laptop (HP Pavilion g6). There was an extra partition prepared by the vendor which probably contained possible required drivers. However, somehow it was inaccessible so we couldn't get drivers from there. After a clean Windows 7 installation: No WLAN, no sound and no ethernet either! After long search on the net (from another machine of course), my co-worker found the most important download (ethernet driver) on a separate site from HP for businesses (after finally also identifying the exact sub-model of the g6) - more than 100 MB download - for a freakin' ethernet card!

After that I was so frustrated loosing so much time just to get the normal ethernet to work (let alone WLAN and the rest), that I left the rest up to him. Later in the evening he called me about activating Windows and Office and I could not get to the Microsoft action pack site because somehow the login did not work any more.

The next day he arrived at the office with Ubuntu installed on the HP Pavilion g6 - everything worked out-of-the-box - no single extra driver required and of course fully usable (without the need of activating any software)!

But this is not always the case. There are plenty of vendors that do not write drivers for Linux and many even do not publish the specifications so that somebody else could write the driver. If there is an open source driver - or at least a free driver available, Linux already contains it, where on Windows you need to get separate driver setups or CDs from the appropriate box or vendor site.

There are currently software updates running on a Dell Latitude E6530 next to me. As usual, all I need to tell Dell: I need a laptop and I don't pay the Microsoft tax, I will install Ubuntu on it and the hardware must support it. I don't want and don't need to search forums for possible problems, I can rely on Dell shipping fully supported hardware - everything out-of-the-box - also no additional drivers required.

My recommendation: Even if you don't plan yet to use Linux, tell your vendor when buying a new PC or laptop that you want the hardware to be Windows AND Linux compatible. If you plan to use Windows: Hope that you don't need to reinstall yourself grabbing all the required drivers from the internet!

Related posts: Ubuntu compatible hardware, About Dell, The hardware.

2012-06-22

Ubuntu 12.04 LTS Precise Pangolin - Optimized


Preamble:
If you are a recent Linux convert, just new to Linux or only a casual computer user, you don't have to worry: Whatever of the main Linux desktop distributions you are choosing (be it Ubuntu, Zorin OS, Linux Mint, Fedora, ... - whatever flavor of those) to use or try out - you are ok. The following is for power users who want to save clicks and mouse-miles to the absolute minimum required.

This article partly applies also for other distributions that offer compiz.


Introduction:
Since Ubuntu 11.04 which first introduced the new Unity interface for the main desktop instead of Gnome, I was testing many different Linux desktop alternatives because I worried about the future of the Ubuntu desktop. After testing several distributions (see preamble above) and all the main desktop environments including XFCE, LXDE, KDE, Gnome3+AWN, Gnome3+Cairo Dock I came back and settled with Unity on the current Ubuntu 12.04 LTS (Precise Pangolin) production work desktop. I do consider myself as a Linux Desktop power user on a daily basis at home and work and I focus on usability, efficiency and stability. On 10.04 I was experimenting with Gnome 2 plus AWN or Cairo Dock finding a more efficient desktop configuration. Basically I ended up with something similar to Unity. Except: I was doing hard work on configuration ending up with several small but annoying problems (including crashes of particular applets now and then).

Honestly, I find Unity on Ubuntu 12.04 (not so in the versions before) very stable and useful out-of-the box. There are still a few very first actions, but anyway far less post-install-configuration work than everywhere else (not to talk about Windows which is the OS with the most-post-install work ever existed).

First actions after install (applies to debian based distributions such as Ubuntu, Mint or Zorin OS):
  1. Click Settings/Power Icon in the right upper corner, then "System Settings"->"Appearance"->reduce "Launcher icon size" to 32. Default size is just too big to get most icons fully displayed that I need on a daily basis (ok this first one is only for Ubuntu users with Unity).
     
  2. Start Nautilus (Windows/Ubuntu/Super key + 1), move mouse to top of screen (new way to get to the active application's menu) and choose "Edit"->"Preferences" and change "default view" to "List View".
    And in tab "Display" I also change the date format to ISO (yyyy-mm-dd) - you might want to keep the default.
     
  3. Start Firefox and under "View"->"Toolbars" check "Bookmarks Toolbar".
     
  4. On the commandline (open a terminal):
    sudo apt-get install synaptic

    I now, there is a nice app store now - pretty fine for the normal user and even for me if I want to look around for interesting stuff. But I still like to see the original package names, have overview and full control about the repositories and the like. therefore I still like synaptic - in addition to what comes with Ubuntu.
     
  5. On the commandline (if on Ubuntu or other distribution with Desktop environment that offers/works with compiz):
    sudo apt-get install compizconfig-settings-manager compiz-plugins-extra

    That's for configuring my desktop to get the best usability and efficiency.
     
  6. Enable partner repositories:Press ALT+F2 and type synaptic then press Enter.
    In the menu select Settings->Repositories.
    Enable the partner and independent repositories.
    Close the sources dialog and on the synaptic main window click on the reload button (this is the same as the commandline "sudo apt-get update" - without the quotes).
     
  7. Managing passwords:
    It is always recommended to use different passwords on different sites where you register and login. After several registrations nobody can remember all the passwords. Therefore it is helpful to use a password manager. My current favorite is keepass2. It can be installed this way:
    sudo apt-add-repository -y ppa:jtaylor/keepass
    sudo apt-get update
    sudo apt-get install keepass2
     
  8. And then I install a lot of other tools - such as (on the commandline again - this is all one line):
    sudo apt-get install ubuntu-restricted-extras ubuntu-restricted-addons adobe-flashplugin ffmpeg vim cups-pdf gnome-utils thunderbird k3b p7zip-full gufw libdvdcss2 xdotool gthumb vlc shutter gtk-recordmydesktop openjdk-6-jre icedtea-plugin openjdk-7-jre grsync galternatives soundconverter winff asunder ogmrip thoggen k9copy google-talkplugin skype pidgin emesene mc htop traceroute secure-delete pdftk imagemagick rar unrar jhead what-utils ttf-linux-libertine ttf-isabella ttf-dejavu-extra ttf-inconsolata ttf-sil-gentium ttf-junicode ttf-rufscript ttf-radisnoir remmina remmina-plugin-gnome remmina-plugin-xdmcp remmina-plugin-nx freerdp-x11rem chmsee jxplorer mdbtools-gmdb nautilus-filename-repairer smbclient clamav clamav-freshclam clamtk libmotif4 curl network-manager-openconnect-gnome network-manager-openvpn-gnome network-manager-vpnc-gnome openconnect ttf-mscorefonts-installer acroread
    Note: You need to enable a few repositories before:
    #Adding medibuntu (all the next on one line)
    wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && apt-get --quiet update && apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && apt-get --quiet update

    #For Google-Talk-Plugin (2 lines)
    wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

    sudo sh -c 'echo "deb http://dl.google.com/linux/talkplugin/deb/ stable main" >> /etc/apt/sources.list.d/google.list'

     
  9. On Ubuntu with Unity? - Then these help:
    sudo apt-get install classicmenu-indicator lo-menubar unsettings myunity indicator-weather
     
  10. For the professional IT guys (continue on the commandline - again all one line):sudo apt-get install gparted dconf-tools gconf-editor gisomount bum vim-gnome gedit-plugins geany geany-plugins scite meld diffutils diffuse diffpdf gitg bless ghex build-essential xmlcopyeditor
     
  11. For the developers or server guys more might be highly relevant (on the commandline one line again):
    sudo apt-get install mysql-server mysql-client mysql-query-browser mysql-gui-tools-common mysql-admin pgadmin3 gsql
     
Enhanced usability:
Now - if you are on Unity or using a desktop environment with compiz - here are the tweaks to maximize usability:
  1. Start ccsm (e.g. Press ALT+F2 and type ccsm and press Enter). This is the compizconfig-settings-manager.
     
  2. Choose "Desktop Wall Plugin" under "Bindings" category and set "Move Left" to "Bottom Edge + Button 1" and "Move Right" to "Bottom Edge + Button 3. - That let you switch the desktop left and right easily with the mouse on the bottom edge.
     
  3. Still in "Desktop Wall Plugin" go to "Edge Flipping" and uncheck "Edge flip move" as well as "Edge Flip DND".
     
  4. Go back to main screen and select "Scale plugin". Go to "Bindings" and set the "Initiate Window picker" to "BottomRight" and/or "TopLeft".
     
  5. Go back and switch to "Application Switcher" plugin. Under "Bindings" choose for "Next Window" the TopEdge+Button 1.
     
  6. Set "Next Window (all Windows)" to "TopEdge+Button3".
Related posts: Locale configuration on Ubuntu, Firefox change default page format, OpenOffice and LibreOffice starts slow, Default paper size in Open Office, Normal.dot in OpenOffice or LibreOffice.

2012-04-15

New user experience

Yesterday I made an experiment which for me is difficult to do: I showed Ubuntu 12.04 to a person (about 70 years old) completely new to computers (only used the mouse to click through a set of photos so far but that's it). I only know a very few people of this type (most already have used computers).

I have seen a lot of funny and interesting behaviour (like hit the key with the pipe character written on it instead of i ;-) - never thought of things like this). Don't want to go into detail - just share the most relevant results in very short:

  1. Big icons are not only for people visually handicapped - also for people who are not familiar with a mouse (or relevant for touchscreens: have big fingers). A quadratic form is easier to click than a rectangular shape (text on websites is rectangular shape and more difficult to click than the Ubuntu Unity launchers for example).
     
  2. Without explanations - whatever Operating System - a complete newbie person cannot learn only on his/her own. There needs to be a person that explains. Not to talk about administration. A newbie with low experience level will never administrate the computer on his/her own. There must be a person with higher experience level helping out and doing this for everyone who just wants to do a few things (or must do). This draws a very important conclusion for me - confirming my belly feeling somehow: The operating system must try to minimize the annoyance for that guy behind everything. The person that needs to help out the core family and a dozen of friends! - That usually are IT people or at least the very technical interested guy/girl. So companies or communities building an operating system need to focus more on the technical person than on the new user! If the guy/girl that needs to administrate, hates the OS he/she will install something else and the user needs to adapt. For the unexercised user efficiency differences of one or the other operating system are irrelevant - not so for the power user or IT guy! So those driving an operating system forward with their experience and with their desires for improving efficiency are the key group - they are the experts others will trust. Who would you rather ask which new car to buy - the flower lady at the corner or the taxi driver?
     
  3. Most websites are far more complicated to use than the base operating system. Navigating those sites is far more hassle. Last but not least because they do not tend to look similar. Imagine, all websites would have a standardized menu so that whataver company site you are at, you find the link to the office hours at the same position.
Related post:  The truth about software.

2012-04-10

A few Linux related videos

Here are a few easy and overview videos related to Linux that might increase your interest:

Ubuntu spot:

How Linux is built:

Linux vs Windows (in brief):

Linus Torvalds: Why Linux is not successful on the Desktop:


Ubuntu TV:

Ubuntu for Android Demo:


Linux is better than Windows:

Unity technology overview:


Microsoft Office vs OpenOffice / LibreOffice:

Linux does what Windows does not:

10 reasons Windows 8 will fail:

Related posts: Why Linux?, Going Linux, The Open Source ideaUser lock down, The community, Popular Ubuntu desktop myths, Why companies do not use Linux on the desktop, Distribution choice.