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.