25 January 2017

Interview Finn Lorbeer

Last year I ran a workshop at Quest for Quality, a young Devops and testing conference in Ljubljana. On of the speakers was Finn Lorbeer. During the conference dinner he helped me with suggestions for vegetarian food choices - the dinner was meat heavy unfortunately - which I appreciated a lot. I am not strictly vegetarian but since I talked to Carlos, I have reduced my meat consumption considerably. Now let's hear his views on meaningful work.

Finn, please take a few sentences to introduce yourself.
I am Finn and I work for a consultancy called ThoughtWorks. I am specialised in all aspects of building a high quality product. I analyse software as much as the team composition, the established processes, the business and data around it. With this heuristic approach I consult the ThoughtWorks teams themselves.

Feeding time in the free stallFinn, I know that you are vegetarian and concerned with preserving the environment. Why does that matter to you?
I am a sensible human being. Plus - and this is probably the differentiation - I do not close my eyes to what is going on in the world. I became vegetarian after thinking about where the meat that I was consuming (daily!) really came from. I ignored what marketing told me, and tried to be smarter than blindly believing what I saw in the supermarket. If you are really aware of how much suffering you inflict for you convenience, how would that not change your behaviour? It changed mine.

Years later, investigating more on the topic, I found out that it’s not only about meat. The entire animal farming industry is the root cause for a huge part of our CO2 emissions. Nothing in my private life has a bigger impact on the world's climate than having a vegan diet. I have no idea how people can get up in the morning being aware that with most of what they do over the day destroys the chemical composition of the atmosphere of our planet. So I guess they are not aware. And this is the main difference. It matters to all people, not just me.

What do you actually do regarding these things?
We are right now changing the chemical composition of our atmosphere and destroy our planet we live on. We are very close to a tipping point where the climate may change very fast. We have to stop this madness right now. And there is something everyone can do easily.

The CO2-Footprint of the beef of one burger is about equal to driving 100km by car. I neither eat meat nor drive a car. I organise film screenings about climate justice topics and I am in exchange with people from Ecuador, the US, Australia, China, India and more countries to think how we cannot only impact our private lives, but also our work environment.

What do you consider the biggest challenge (for humanity) of our times?
Again climate change. The poorest areas of the world already suffer the most. Syria experiences the driest times in history. Central Africa, too. They are already hotspots of wars and uprisings today. And we really wonder why so many refugees come from exactly those areas? There are fights between citizens and police in Mexico, because the people have no more access to fresh water. The arctic is melting at an incredible speed. While I love sailing, I would not enjoy sailing over the north pole in a couple of years.

What could we do to engage in these topics? For example, did you take part in public protests, donate money to NGOs or sign petitions?
I think the best thing one can always do is to lead by example. It is difficult to just sent some money somewhere. There are programs where you can donate money based on the miles you flew by plane to counterbalance your CO2 footprint. But studies showed that the people fly more when they use such services. They do not have a bad conscious any more, they pay to be free, and fly more.

Traffic JamI would like to see more impact on these important topics of my regular work by just working on "the right things". Do you think that is possible in general?
No. If everyone does this our economy and lifestyle breaks down. This is not sustainable. Many people need to work so that we have the money that some can do "the right things". This is the basic idea of any social system. So the setting is there, but the balance is wrong: e.g. broker (who do not create value in the economy) earn up to 100 times more than people in child care. IT people earn 10 times more than activists working for NGOs. We have to balance that better than we did before. But it’s unreasonable to think that we will all just work for social justice issues.

There are many decisions we take before and during a project. Which choices do you think are relevant? (The recent VW scandal is an example. Developers could have chosen not to commit fraud.)
I think that this sounds easier than it really is. Imagine that you are together with 200 developers at VW. And all 200 seem OK with tweaking the software a bit. The reasoning - everyone else does it, too - seems just OK and so you go along. What is the alternative? Stand up against 200 colleagues? It is rare to find so very, very courageous people. If this discussion is going on it’s too late already. There is little you can influence as an individual in a large group. The least you can do is to refuse to do it. Someone else will do it, but at least it was not you.

I believe that we all as individuals should work on a culture where such a discussion does not even start. If 200 people would not even consider an idea to manipulate their software, then no one dare to ask. If we build software "properly", we build it secure and with high quality. Both characteristics oppose fraud. I think here a positive attitude towards the (real) product you are building goes hand-in-hand with a guidance to what is right. One should never blindly code, like a code monkey.

How do you think about selecting industry, customer and project based on your values and social responsibility?
This is really difficult! There is something "bad" to find about almost any company. Twitter and Facebook create the little interests-spheres. Amazon tries to make us buy more than we want (and more than some people can actually afford). Uber replaces long-lived taxi companies. Amnesty International does only oppose small third world countries. But what do they do about big companies that are even worse than some small nations? Did Amnesty ever raise issues about Google and their mass-surveillance? No.

Do you have problems with any industries? Why? What about Porn industry or weapon manufacturing?
So while I think there is not "the" company to work for there are definitely some not to work for: companies earning money in tobacco, oil, porn or weapon industry are not worth looking at. They do actually nothing to improve our world.

I think I can work in the finance sector or insurance. Usually, those clients pay well. And this money can then be used for a better course, like helping programs that are working on the social justice mission.

There is a Waste ProblemDid you ever reject a customer or an actual project, that would bring you money based on your values?
No. But I never had a client or project that was totally aligned with my values either. As I explained above: while there is no perfectly aligned company, I never join or reply to offers, that do not fit with my values.

On the other hand, what would be industries, customers and projects that you would love to work on?
I am lucky to work for a company that shares some of my values, especially about social and economic justice. ThoughtWorks just released an open source hospital system that was built together with doctors in India. It is now being rolled out in Pakistan and Bangladesh. There were some developers working on it, so my part was simply to ensure we have the money to do so, e.g. by joining "any" project in Germany.

If I could choose freely, I think I would either go into the automotive industry or renewable technologies. Why automotive? We are at the brink of electro mobility. But our old, rusty German companies move really slow in this direction. I would love to help them get up to speed and get rid of their 130 years old model of explosion-driven-vehicles. A society that is mostly vegetarian and bases on electro mobility is be something I would be proud to be a part of.

Thank you
Thank you, too!

22 November 2016

Followup Global Day of Coderetreat 2016

This is an email I sent to all the participants of the recent Global Day of Coderetreat, Vienna. Because it applies to all participants worldwide, I repost it here.

Looking back at the Global Day of Coderetreat 2016
It is a month since you participated in the Global Day of Coderetreat. Let us look back for a moment. At the end of the day, during the final retrospective, you answered the questions
  • What you learned at that day?
  • What surprised you during that day?
  • What you planned to do differently?
Final RetrospectiveSome of you learned "new programming concepts" and that "it can be done in a simpler way". (These quotes were things you wrote on the Post-its on the picture on the right.) Others found new ways "how to split the problem". Several people discovered that pair programming was productive. You were surprised that there were so "many different ways to do the same functionality". But most important you decided to do things differently in the future. Here are some things that you wanted to do:
  • "Try TDD at work!"
  • "Learn more shortcuts!"
  • "Aim for simpler code!"
  • "Code more!"
These were just a few examples for the 21 things you wanted to do differently. Try to remember your personal plan. What did you write on your Post-it? In the last month, did you apply the things you learned? Did you do the thing you wanted to do differently? Did it work for you? We fall back into old patterns easily - changing habits is hard. If your first attempt failed, I encourage you to try again. Do not give up!

A box of things to take from the Coderetreat
At the end of the Coderetreat the facilitators, Houssam and I, talked about things you might want to try after the event. Houssam called it the "Box of things to take home".
  • Code Katas. Code Katas are exercises like the Game of Life. You can find many suitable exercises at codingdojo.org or codekata.com. If you like to crack some math problems I recommend Project Euler. It is a lot of fun!
  • Coding Dojo. A Coding Dojo is an event like a Coderetreat, just shorter. In Vienna there is the Coding Dojo Vienna. If you need for more practise this is the place to go. The dojo happens once a month. To get notified about upcoming events register at Softwerkskammer Gruppe Wien or follow #CodingDojoVie on Twitter. More information about Coding Dojo can be found in Emily Bache's excellent book.
  • Pair Programming. You can run your own practise session in a coffee shop or McDonalds. Talk to people in your company or at local meetups and find some like minded individuals.
  • Screencasts. Recordings of Code Katas, sometimes called Katacasts, are a great source for learning. This way you can (kind of) pair program with famous people like Robert C. Martin, J.B. Rainsberger, Sandro Mancuso and others.
  • For more details on how to improve your skills further, I recommend Houssam's (and Boris Gonnot's) article How to Boost Your Skills to Become a Better Developer.
Craftsmanship Community
Finally I want to point you to the Software Craftsmanship community in general. In Germany, Austria and Switzerland the local Craftsmanship communities are hosted by the Softwerkskammer. There is a group for Vienna and Linz. These communities run yearly conferences, the SoCraTes (Software Craftsmanship and Testing) unconferences. Currently we have SoCraTes conferences in many countries. In Austria the next SoCraTes will be autumn 2017 in Linz.

I wish you all the best for your future. You can do it!

9 September 2016

Mechanical Keyboards

Over the years I developed a love for keyboards. It is not surprising as I used keyboards since 1995 to do my work. I spent countless hours typing and writing. I am not a collector, I own some cheap and a few mechanical keyboards. Each of them has its use. Recently I did some research about them. Here is what I found:

Cherry G81-3000 KeyboardCherry - G81-3000 (DE)
The Cherry G81 does not look special. I did not select it, I just bought it together with one of my early computers. It is a regular 105-key PC German QWERTZ keyboard as used in Austria and Germany. (The 104/105-key layout is like the 101-key keyboard including some special keys to activate common Windows functions.) I bought it in 2000 and it worked well. Two years later - when I killed it by pouring a glass of water into it - I bought another one. It is connected via PS2 plug, which gets rare these days.

Switches: It was cheap and I always believed it to contain rubber domes. But even after buying my first mechanical keyboard I went back to using it. I was used to it and liked the typing experience. Recently I found out why. During cleaning I recognised the typical Cherry MX mounts - could my old Cherry keyboard be a mechanical one after all? The Cherry G81 contains the Cherry MY switch, a semi-mechanical keyboard switch, with a spring in each switch. It is considered something between rubber dome and MX with a life expectancy of 50 million presses, which is the same as of modern MX.

Typing: The Cherry MY have no tactile feedback and actuation happens two third on the way down. The counter force of the spring increases linearly while pressing it, with a peak force of 120 cN. In a way they feel like linear MX switches. (Some people say MY feels like MX-Black but harder. I do not own any MX-Black, but the keys are definitely harder to press than any MX I know, even MX-Clear. The comparison of MX switches states that MX-Black has an actuation of 60 cN, much less than the MY.) There is no click sound, only some slight noise from the key caps. This is the most muted keyboard I know. When I press slowly then there is absolutely no sound at all. None of my other keyboards are that quiet.

The Cherry G81 is heavy because it has a steel plate, like high quality keyboards nowadays. This might explain why I stayed with it for such a long time without looking somewhere else. For the small price of 29 Euro (price in 2002), it is definitely the best keyboard I own.

DasKeyboard Model S Ultimate KeyboardDas Keyboard - Model S Ultimate (III) (DE)
Das Keyboard Model S is a "high-quality mechanical keyboard." I was new to mechanical keyboards - thanks to peer-geek Michael Clay for telling me about them - and had no idea about switches. The Model S was the first high quality mechanical keyboard that I liked which I found on the German market. It was supposed to be cool so I bought it. I even went for the ultimate version with blank key caps, because I wanted to master touch typing.

Switches and typing: The Model S contains gold-plated, mechanical, Cherry MX-Blue switches. They offer the classic mechanical typing experience: There is a tactile feedback halfway down as the key actuates. The noticeable bump lets you know that your key press has been registered. And it is noisy. Really, the MX-Blue clicks noticeably, and can be disruptive in close working conditions. It makes so much noise that it breaks my own thoughts when I type fast, especially as I am used to the super quiet Cherry G81. Due to this noise I am not using it on a daily basis. Maybe I should by it again with other switches.

The Model S comes with an USB hub included, which is very handy to connect a mouse or other devices, especially when working with a different computer almost every day. I love the look of its blank surface. The packaging includes a tiny cloth to wipe it and keep it shiny black. Its blankness makes it perfect to show off your mastery of the keyboard to your peers. Most colleagues are confused (and unable to use it) or amazed. It is definitely useful to improve typing accuracy, and it has improved mine.

TKL Keyboard Bag, courtesy of Michael ClayTKL (Tenkeyless)
Since my Pair Programming Tour and working as freelance Code Cop, I am almost exclusively programming in a pair. When I visit someone to pair with, I bring my own keyboard. I have to carry it, which makes me wish for a small one. I do not like compact or laptop keyboards, because I am really used to regular QWERTZ layout. The answer is TKL - "Tenkeyless". As the name suggests, tenkeyless keyboards are standard full-sized keyboards without a tenkey / number pad on the right side. The number pad contains not ten but 17 keys, making the TKL an 88-key PC German QWERTZ keyboard (if such a thing exists). As the TKL is a standard keyboard I am able to type as usual. The only slight problem is that I am unable to press Ctrl Numpad / which toggles line comments in IntelliJ IDEA. I own a bag for the TKL, courtesy of Michael Clay. When he heard about my planned Code Cop Tour he showed up with four different TKL keyboards so I could chose one. I bow to the master of keyboards.

Diatec Corp Filco Majestouch-2 TKL KeyboardDiatec Corp - Filco Majestouch-2 TKL (DE)
I needed a TKL to put into my backpack. While I could have created one by myself, I bought a Filco Majestouch-2.

Switches and typing: This time I avoided Blue switches and bought the Majestouch with Cherry MX-Brown ones. The Brown switches are one of the most widespread switches today. They are tactile, non-clicky and relatively soft with an actuation force of 45 cN. They are supposed to be silent, still there is some sound from the key caps themselves. When I type fast the plastic key caps make a high pitch noise. Of course the sound is not as nasty as from the Model S, but it is quite noisy for my liking. Fortunately its noise is not a problem during pair programming because there are no extended periods of silent, fast paced typing.

The Filco Majestouch-2 is a basic keyboard, exactly what I need. Maybe it is a bit of an understatement because it looks so very basic. The TKL version is ideal for travelling. I always carry it with me when I am going to pair with an Austrian or German developer during work or Coding Dojo. With the Majestouch I mistype more often. I guess this is because the mechanical switches actuate half way down, while the MY switches register the key around two third of the way. I am just too used to my old Cherry G81.

Cooler Master NovaTouch TKL KeyboardCooler Master - NovaTouch TKL (US)
During my pair programming activities I often work under UK or US layout. I am able to operate the English layout sufficiently well if I see the right labels on the keys. So one TKL is not enough. I took the NovaTouch with (87-key PC) US English QWERTY keyboard layout. It is "exceptionally quiet and suitable for heavy-duty typing or gaming."

Switches: The NovaTouch contains Topre switches with MX compatible key caps which is great if you love custom keys. The Topre switches are semi-mechanical, hybrid capacitive switches "that combine the benefits of a mechanical spring-based switch and an electrostatic capacitive sensor to provide excellent tactility, comfort, and durability. The unique design of these Hybrid Capacitive switches require no physical mechanical coupling, therefore eliminating key switch bounce and chatter for a frictionless experience."

Typing: The Topre switch is similar to the Cherry MX-Brown, a tactile, non-clicky switch. There is the bump halfway down. Compared to the Majestouch-2 the force needed to press the key is slightly higher and the bump seems "bigger" and more articulated. (Actuation is at least as strong as for MX-Clear as used in the CODE keyboard described below.) While the marketing description above describes the keyboard as exceptionally quiet, unfortunately it is not. Like the Majestouch-2, its plastic key caps create some noise when pressed. The NovaTouch ships with a set of o-rings which made it more quiet, but some sound remains, especially when typing fast. At least the noise of the key caps is more low pitched than of the Majestouch-2.

The NovaTouch is a bit bloated because it has some audio and repeat rate adjustment function keys, which I never use. Even worse, the function (Fn) key replaces the menu/right click key. I do use the menu key because I love keyboard navigation and I rely on it to activate functions from context menus that do not have their own keyboard shortcut.

The NovaTouch is despite the missing menu key a very nice keyboard. Its cable is braided and can be removed from the keyboard. It comes with o-rings and and a wire key cap puller to remove the key caps. But the best thing is its box. While all other keyboards ship in a simple cardboard box, the NovaTouch lies in a large, shiny black box, softly bedded on rubber foam. It looks like decoration inside its jewel case. It is marvellous.

I use the NovaTouch when I pair program with someone who uses UK or US layout. I bring it to international Coding Dojos or workshops. It is small enough to fit into my hand luggage when flying. During my Pair Programming Tour I even carried both, the DE and US layout because I never knew which layout my next pairing partner would use.

WASD Keyboards CODE V2B KeyboardWASD Keyboards - CODE V2B (DE)
Despite all these keyboards I was still looking for a keyboard to use every day - as a replacement of my trustworthy Cherry. I did not really need it, but somehow wanted it - the perfect opportunity for a present. For Xmas I ordered a WASD CODE V2B, with 105-key PC German QWERTZ layout. It is a "simple, clean and beautiful mechanical keyboard, a collaboration between WASD Keyboards and Jeff 'Coding Horror' Atwood."

Switches and typing: I selected the CODE because of its switches. The MX-Clear are stiffer than the Brown ones, with a tactile bump and weighting of 65 cN. The harder actuation force is good for me, being used to the Cherry-MY keys, which are still harder to press. The tactile bump feels right. Again the plastic key caps make some noise and the keyboard is louder than the NovaTouch.

Like the Majestouch-2 the CODE is a very basic keyboard, without any label, its black matte surface looks sharp. Like the NovaTouch its cable can be removed and a key cap puller is included. Most important has a series of dip switches which enable the function key, caps lock and different layouts. This is most useful, because I can have my menu key instead of the function key. It also has LED back lighting, which probably is the reason for it to be more expensive than my other keyboards. (The CODE is around 200 Euro where my other keyboards are between 100 and 160 Euro.) There is a slight glitch: when my computer wakes up from power-saving/standby mode, sometimes the keyboard is not activated and I need to disconnect and reconnect the USB cable to activate it, which is annoying. After a few months I got used to the CODE and despite the glitch it is my favourite German keyboard. I enabled LED back lighting and found it quite comfortable because I am working a lot in the evenings.

It is difficult to predict the future. At the moment I like my CODE and it looks like I finally found a keyboard to keep. On the other hand I have not tried all Cherry switches, e.g. MX-Black. Maybe I should get a Cherry MX Switch Pro Sampler to compare them. The sampler looks like a great desk toy to impress and confuse colleagues. At the moment MX-Clear is the stiffest switch available from Cherry, so I might need to look for alternatives. I am curious about the Buckling Spring as used in the original IBM's Model M. People say that this is the best keyboard ever made. I will have to try it one day.