Feeds:
Posts
Comments

Paint and Notepad are the two small and lightweight tools Microsoft Windows offers to edit simple images and texts. The former allows the manipulation of plain pixels, the latter the manipulation of basic ASCII texts. In Linux you will probably use GIMP and GEdit instead (at least if you are using Gnome or Ubuntu). GEdit is a very simple text editor, just like Notepad, and a bit more comfortable than VI or VIM. GIMP is the Linux equivalent of Microsoft Paint, a simple GUI application to do basic image manipulation. Sometimes you don’t want heavy applications to create WYSIWYG texts or sophisticated images. You just want to add or remove some characters or pixels. Enlarging or shrinking an image in GIMP seems to be complicated at first sight. Yet it is as simple as doing this in Microsoft Paint.

Load the image you want to enlarge with GIMP. Choose the menu item ‘Image > Canvas Size’. In the opened Resize Dialog, select a new Width or height (if you click on the chain symbol and break the chain, you can set Width and Height separately). Then click ‘Resize’ to close the dialog. Now choose the menu item ‘Image > Flatten Image’ and you are done: you have got your old image embedded in a larger picture. The same method can be used to crop or shrink an image.

The Google Generation

A few years ago if you wanted to solve a problem as a developer you just sat down and tried to come up with a solution. You remembered what you had learnt, looked at the code you had done before, read the manual for your programming environment or tried to find a similar problem in a book. If all this does not work, you would ask your colleague. And if it would be a really difficult problem or important change, you would ask your colleagues anyway.

Today, the chance is good that your colleagues are no longer needed. Someone else on the internet has probably already solved your problem. For nearly every possible problem there is a blog entry or a snippet somewhere with the solution. The developers of the Google generation – those born after 1993 – act differently. If there is a bug, if they get stuck, if they have a problem, they google it (or ‘bing’ it). There is nothing wrong with that. Often it will offer a good answer of quick solution. The drawback is not that you will find code which is wrong, or that you will read dangerous half-truths, which may happen in rare cases. The drawback is that you don’t try it yourself, and – most of all – you don’t communicate with your colleagues anymore. You are no longer asking your co-workers for help or advice. You share your problems and ideas with Google – instead of sharing them with your colleagues.

Yet it is impossible to establish a good relationship with your colleagues without talking to them. If you don’t share your problems and ideas with your co-workers, they will have the impression of being ignored. Mutual respect is difficult to achieve if people have the impression that they are ignored. The digital age is dangerous by threatening our ability to communicate. This is perhaps the biggest challenge of the Google Generation. We know how to formulate our questions and sentences so that Google understands them, but we no longer care about talking to our co-workers and colleagues. Someone said this ability to communicate is perhaps the most important thing if you want to have a successful career:

the single most important thing you must do to improve your programming career is improve your ability to communicate

Programming Quotes

“Good, Fast, Cheap, pick two”. This is a well-known saying in the software world. The Project triangle illustrates that you can’t have all three: Quality, Speed, Quantity.

Here are a few other quotes about programming:

Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
- Bill Gates

The function of good software is to make the complex appear to be simple.
- Grady Booch

Controlling complexity is the essence of computer programming.
- Brian Kernighan

You can’t have great software without a great team, and most software teams behave like dysfunctional families.
- Jim McCarthy

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
- Martin Fowler

Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.
- Martin Golding

It’s the only job I can think of where I get to be both an engineer and an artist. There’s an incredible, rigorous, technical element to it, which I like because you have to do very precise thinking. On the other hand, it has a wildly creative side where the boundaries of imagination are the only real limitation.
- Andy Hertzfeld, about programming

Facebook is evil

Facebook is evil. Even the NY Times has noticed it now. Facebook sells the privacy of users, and tortures developers. It should go away.

It abuses users

It lures users in, but does not let them out. Facebook makes it easy to join, but hard to quit. Although the number of accounts is a key topic in their advertising, it is impossible to delete your account. Users who do not want to use Facebook anymore should be able to DELETE their account at any time. The only way to get rid of your Facebook account is to manually remove ALL content and then deactivate it. This is annoying.

It makes money by selling your privacy

All Facebook has is the private data of users. As a company it must make money from the information it gathers, which means selling your identity and privacy to anyone who wants to buy it: advertisers and government agencies. Mark Zuckerberg officially announced that the age of privacy is over. Any questions?

It tortures developers

Writing applications for Facebook is a nightmare. It is hard enough to write applications for the web, Facebook applications are even worse because they are constrained to a small page inside the page and special FBJS Facebook Javascript. Facebook apps are impossible to debug. I have worked on Facebook applications myself, they are horrible to write. The platform is not stable, the API changes frequently and is not well documented. Frequent redesigns frustrate many developers. Developers hate to write facebook applications, and they hate to use Facebook Connect.

It is a horrible place for developers themselves. Writing code for a site with million of users is hard, especially if it is written in unstructured PHP. The code of Facebook is largely written in PHP, and it must be a mess. The development of new code must be mental torture, and the deployment of the code a misery. The startup has over 300 developers now. The large number of developers is a sign that the developers have to face insurmountable obstacles. Among 300 developers, a single one is dispensable. No developer wants to feel dispensable while working on insurmountable obstacles.

I like programming

Keri Hilson sings about the things she likes:

“I like just you and I touch at first sight,
And the world around us won’t stop turning
tonight, I like, I like [..] We’re caught in
this moment, I won’t let you go”

Maybe this “You”, is her computer? And she sits before it the whole night? I remember my first programs, and my first Apple II computer – love at first sight, or to be more precise, at first touch..

A software developer wants to work on something interesting, exciting, and important. He likes to work on cutting-edge stuff. He would like to create a world with only a 4 lines of code or build a universe with a single keystroke. The ultimate dream of a software developer (beside world domination) is independence: to earn so much money that you can do what you want. For example living on a sunny island writing only 4 lines of code a day (which are so brilliant and awesome that everybody else is nearly blinded), or owning a Sunseeker Yacht, which embodies speed, success and independence. Well, of course everybody would like to own a yacht, a villa and a luxury car. Unfortunately, not every software developer is automatically as rich as Bill Gates and Paul Allen. For the very rich, a big boat is the real sign of wealth, for example the Octopus, a cross breeding between a small aircraft carrier and an atomic double-hulled icebreaker, the megayacht of Microsoft cofounder Paul Allen. At 125 meters it is the biggest private vessel in the world, of course with landing pad for helicopters. It has a permanent crew of 60 people, contains a theater/cinema and a basketball court, two helicopters, an 18 meter landing craft and a private 10-person submarine. Well, I do not even own a canoe ;-)

To be the hero

Whenever the applications we have built are broken, we become application repairman. “Clink! Screw! Bend! Inflate!”, and suddenly you are the hero in your company again. You are something special: only you can repair the system. But if we go on an IT conference, we are surrounded by other super heroes. Some of them look strange, other smell strange, but each of them knows how to build and repair an application. And in a Krypton world filled with supermen, the real hero is the guy who can do the ordinary. On a conference, this is the guy who can entertain the audience, who can give talks which are not boring, who can make the others laugh. It depends on the context who is gonna be the hero. If everybody is able to repair a bicycle, a bicycle repairman would hardly be special.

Bulletproof

I wonder if she sings about bulletproof web design? Somehow I have got the feeling that she does not know the book from Dan Cederholm. Hmmh. At least she sings about messages and information. Nice song, anyway. I have heard it the first time driving in a BMW near Frankfurt on a German highway. We rented it at the airport. German engineering in perfection. You have got to try this once in your life: there is no speed limit on most of the German highways.

Bad Idea #23

How a bad day begins.. Unaware of Kitty’s current anger, the dog attempts to make a friendly tackle. Moments later, Rupert was scarred for life – mentally as well as physically. The fight was over before he knew what hit him.

O MY GOSH KITTY KITTY KITTY KITTY KITTY KITTY YAAAA
moar funny pictures

Another nice cartoon from Oliver Widder: usually commenting out code does not lead to clean code, but sometimes we do it nevertheless. This explanation is nice: every line of code is a child of mine

C-Level Titles

You have heard of CEOs (chief executive officer), CTOs (chief technical officer), and CIOs (chief information officer). C-Level titles for jobs with high salaries. Dilbert has some more: CJO (chief janitorial officer) ..

Dilbert.com

.. CPO (chief people officer) and CACCO (chief artificial coffee creamer officer)

Dilbert.com

Ctrl-Alt-Del in Linux

Have you ever wondered what the Linux equivalent of CTRL-ALT-DEL in Windows is? Many Linux fans say in Linux an application cannot bring down the whole system. Well, it can. It happens rarely, but it does happen. Here is what you can do for example in Ubuntu, which uses Gnome:

  • With Ctrl-Alt-BackSpace you can kill the whole X-Server Window System (or your GUI session) and return to the login prompt.
  • If an app blocks the whole system, you can press Ctrl-Alt-F1 (or F2 through F6) to get a console and kill the evil process with ps aux or ps -e | grep program_name and kill -9. Finally go back to your display manager with ctl+alt+f7
  • In Gnome, you can add the System Monitor to the Panel. When you click on one of the monitors (for processor, memory, network or harddisk), a graphical list of processes opens, similar to the Task Manager in Windows, and you can stop processes through the context menu.
  • In Gnome you can also press Alt+F2, type in xkill, press enter, and kill the non-responding application. KDE is still different..

Is this so much better than the famous Ctrl-Alt-Del in Windows? I am not sure.. Anyway, it looks like this is a very operating system specific feature. For Mac OS X, there is no ALT key, but you have an option key instead and two Command or Apple keys. Option-Command-Esc brings up a force-quit menu. You can also open the activity monitor (by opening Spotlight with the shortcut Command-spacebar and typing “act”).

cat
see more Lolcats and funny pictures

Dilbert.com

Did you notice that Continuous Integration and Agile Development are similar? The principle of continuous integration means that members of a team integrate their work frequently, because merging is much easier to do frequently and small rather than rarely and large. Agile development means iterative development with many feedback rounds between customer and developer. The common thread is that frequent interaction reduces conflicts and prevents that things diverge too much from each other:

  • frequent integration through merging avoids in Continuous Integration that different branches diverge too much from each other
  • frequent feedback rounds and iterations in Agile Development avoid that expectation from the customer, specification from product manager and real product from developer diverge too much from each other

Powerful IDEs such as Eclipse or NetBeans are useful even for dynamic languages as Ruby, which don’t need to be compiled like Java or .NET applications. They offer all necessary functionalities, syntax highlighting, and debugging possibilities. Yet they also have drawbacks, sometimes they are quite slow: Eclipse seems to be very slow at large CSS files, while NetBeans constantly tries to scan all your projects. And sometimes their behavior is difficult to understand. For example, if you get the error message “Could not connect to webserver” in a NetBeans RubyOnRails project, then you might have a faulty plugin or gem. This is possible if you just have modified or edited it. Then you have to restart the server, and this does not work if you have introduced a fatal error. If the Rails application can not be started, then NetBeans does not display the correct error message. It simply says “Could not connect to webserver”. The reason can also be a missing or faulty gem which is required for your application, for example a broken rmagick gem after an OS update of Linux. In this case, examine the log in the output window (which can be opened in NetBeans with Ctrl-4) and install the required gem.

Older Posts »