Getting Things Done: David Allen in Budapest

Yesterday – 4.12.2014 – we had an amazing presentation from David Allen, author of  Getting Things Done (GTD). He had drunk a bit of our famous Hungarian white wine and said, that he would be direct. Indeed he was 🙂

He also had a keynote on STRECH 2014 conference, titled “The Art of Stress-Free Productivity”. You can watch it here.

There is an excellent course available on this subject on LYNDA.COM.

My primary takeaways

  1. As soon we leave the room, his speech will be “prehistoric”. (Apparently not, I am still writing about it 😉 However this may be true for many very wise speakers.) This statement in itself represents for me decades of teaching experience.
  2. Life will hit us with a fire hose every day. Our management skills are really tested in special situations, like a move, marriage or divorce. In critical situations, we usually have no chance to act in an appropriate way, unless our life is well organized.
  3. If you care about the newest and loudest, you are in a dark tunnel. There is no light at the end of that tunnel.
Tunnel of newest and loudest
Tunnel of newest and loudest (background tunnel picture is from Vladimir Agafonkin)

David spoke about the immense clarity that awaits us after writing down everything from our heads. Our heads are to have ideas, not to hold them. You also cannot do it halfway: either you hold your stuff in your head – humanly impossible – or write everything down. If you have only some stuff left in your mind, it will bog you down. Unload your mind.

“Share anything of value you’ve gleaned from this with someone
else. (It’s the fastest way to learn.)” says the book. Luckily we have a GTD meetup group in Budapest, so everyone, who wants to organize his/her life properly is kindly invited.

GTD workflow
GTD workflow. I got this picture from (


How to minimize JavaScript development costs with SAP OpenUI5

Each line of code costs money. Not only writing code, but also maintaining it later on. As SAP turned toward the OpenUI5 environment a huge need emerges for JavaScript skills. In this article I discuss aspects of JavaScript programming in SAP and my subjective view on how to optimize this process. It is aimed for SAP developers and project managers.


In his 1981 book Barry W. Boehm stated that an average of 60% or more of software costs is maintenance. This experience is still valid as discussed in “Frequently Forgotten Fundamental Facts about Software Engineering” by Robert L. Glass (an article in IEEE Software May/June 2001).

I would argue that maintenance costs and risks even increase while using a relative new and changing development environment like JavaScript or responsive design. So before starting costly projects it’s worth looking around for solutions.


Meanwhile “SAP’s OpenUI5 JavaScript Library is Surprisingly Well Done”, there is an ever growing need for responsive apps that can run on phones, tablets and on the desktop as well. For example business would like to have access to service orders on phones and tablets. How can one deliver such apps without sacrificing hundreds of hours of development time?

ABAP versus JavaScript

Let me give a very short comparison of ABAP and JavaScript:

Of course JavaScript brings a lot of new cross-platform functionality and new paradigms. It runs on billions of computers and many companies pour millions of dollars into JS development. I don’t mean that it is not a usable tool; however I have some issues regarding some aspects of it.

JavaScript Technical Issues

Some programming details are mentioned here, you can skip this paragraph if you don’t have interest.
Who coded a JS app more than a few hundred lines long might know this line ending: …”)}})()”
You have a multitude of closing braces of different types. This is the result of flexibility of JavaScript:  expressions usually have return value that are used for the next step. JS hand coding works for small apps, but if you have any issues with something thousands of lines long, you can spend frustrating hours and maybe days until you solve it. This whole issue gets exponentially worse the larger JS code base you have. I don’t want to paste screens of code here, because it would distract most of my readers. However basically you will need more than one full time JavaScript developer fixing these issues and working on new transactions.

Browser Wars

There was a “browser war” between Internet Explorer and Firefox starting around 2003. This “war” costs millions of dollars and as of 2014 is still raging on between current browsers. SAP OpenUI5 tries to cover these issues, but a certain JS function suddenly not running in some browsers might cause headaches.

Retrain ABAP developers?

One possible solution is to train conventional ABAP programmers to develop in JavaScript. I consider it like retrain truck drivers to drive sport racing bikes. (I am an ABAP dev too, so I may say this 😉 ) It is not impossible, but the tool itself is totally different: Way faster, way more error prone, especially if you want to carry products on it.

What then?

So to stay with the truck-bike metaphor I propose another solution: let’s put self-driven electronic bikes into those trucks to deliver packages to their end customers. What does it mean in development terms? It means that it is possible to generate JavaScript code using predefined application structures.

OpenUI5 without the JS-headaches

You can have this:

Instead of this:

It is just 1300 lines, but if you have spent hours – if not days – looking for a mistyped character in it, you understand the difference. All this code will be generated for you from the application screen you see above.

So basically you don’t need to build up a separate Eclipse environment, you just need your conventional ABAP/Web Application Server stack and everything will be generated for you.


This video was made by Neptune employees and shows the generation of apps.


Before investing in new projects in your country or in any other outsourced country I would consider using a code-generating solution like Neptune. It has costs, it is only an assumption of mine that generally it has a ROI under two years. You calculate your numbers yourself. I don’t know if any other similar generative approach is out there, I was looking for it, didn’t find it yet.
Disclaimer: I have to tell, that I got a two day course in my company about this system.


I always think from the viewpoint “if it would be my system” what would be the best solution. However I might have been totally wrong about this. Please feel free to point to alternative solutions or give some constructive critique. Trademarks like “SAP” and “ABAP” belong to their rightful owners.

Poker Programming Challenge

Last week Saturday, 26.April 2014,  a few curious developers gathered together at the Morgan Stanley offices in Budapest to learn about a new type of challenge: Lean Poker.  Everyone was excited and after a short introduction the game started. The croupier was already dealing out cards, collecting responses and measuring points. One thing was missing though: not one program was yet able to respond to any move requests. All of them were just sitting there frozen.

You find the event on this link:

Lean Poker @ Morgan Stanley

Saturday, Apr 26, 2014, 9:00 AM

Morgan Stanley Business Technology Centre
Lechner Ödön fasor 8.

17 retreaters Went

English:Due to the success of the new Lean Poker format we will do one more event this spring. Lean Poker is a continuous delivery and lean startup workshop built around a robot poker tournament. You don’t need to know poker, will teach you in the first half an hour! There is no price for the winner except for a round of beer the other teams may …

Check out this Meetup →


Let’s get back to how it started: What is LeanPoker? It is a workshop for developers to practice and improve coding skills, especially agile development and continuous deployment. Participants are divided into groups and competing with one another using algorithms in different programming languages.

These type of workshops existed before, just they were not as competitive and exciting as Lean Poker. The father of Lean Poker is called Coderetreat, although in itself it is also just a few years old, existing since 2009. Rafael Ördög organized many such events and came to the idea to iterate it further using the poker rules for a poker robot competition. Thus Lean Poker was born in January 2014.

At least 60-70 developers participated in Coderetreats in Budapest already, so it was not difficult to find 13 coding heroes for this event. Only one of the following language was required:

  • C++
  • Go (Under review)
  • Groovy (Under review)
  • Haskell
  • Java
  • JavaScript
  • Perl
  • PHP
  • Python
  • Ruby

Actually not even these programming languages were required, a few participants came just to enjoy the fight and have a great time. A casino for developers and math fans.


I can program in C++, Javascript and PHP, but for this purpose PHP seemed the most comfortable tool I could think of. So Attila, Gergely and I formed the PHP team. Gabor joined later on and we choose the name “AllLean”. (For non poker players this refers to “All in”, a term I will describe later on.)

One “sit and go” looks like above. It means that all the teams grab 1000 USD and start to play.  They play until only one player has any money left. Then the first player gets 5 points and the second best get 3 points. This measurement system leads to a few interesting strategies you will see later on.


  • AllLean: PHP
  • Charlie Firpo: Java
  • Cppoker: C++
  • Grandious: Groovy

Each point in the chart represent a “sit and go”. The point average is deducted to clearly see the differences between the teams. In real life all the programs went up to above 400 points.

Beginning Phase

After seeing the charts starting we realized we have to do something quickly not to loose too many points in the beginning. We posted a basic player and so until 10:47 we took the lead. Basically all other clients were just setting up their coding environment and we had this half an hour to our advantage.

First fight

The Java team “Charlie Firpo” realized, that these minutes meant 30 points already, so they pushed out a simple player. This player was doing “all (money) in” all the time, no matter the cards. Like a blind player, betting all his fortune on the game, even without seeing his cards. Interestingly this tactic was winning, because if all other players just bet a certain amount and then fold, the bluff just wins the game. And they won big time, especially since we pushed in a buggy player. Our player was frozen until around 10:45, they took the lead around 11:05 and were most of the time first until 12:05. We realized our mistake around 11:10 and quickly pushed in a version to simply fold all the time. This player could never win, but it became the second from 11:40 till about 12:12 all the time. Second place means three points, what is much better than loosing all the time and having zero points.

Other teams rise

Finally the Grandious team with Groovy language set up their environment and started to play actively. They had an excellent series from 12:15 till 13:45. Then they saw 2-3 lost games and pushed in something. This new version couldn’t really compete against the other players and they lost quite many games until 14:30.

Social Engineering

Seeing Charlie Firpo getting almost always a second place I figured they do an always folding always second place tactic. Cppoker had quite bad performance at the beginning, so I’ve even tried some social engineering: So I went to the Cppoker team and I explained, that for both teams AllLean and Cppoker would be beneficial, if Cppoker would always fold. Then they would be second half the time with an average of 1.5 points, what was better than their performance until 12:00. And for AllLean it would be good to decrease the folding points of Charlie Firpo from a single folding player three points to a second folding player 1.5. Of course this move is debatable, because to advance among players one needs an algorithm with more two points on average. (Sorry Csaba, if I influenced your team in a wrong direction. I thought you were below one point average. Moreover I admit, that first of all I wanted AllLean to advance against Charlie Firpo.)

This is an important takeaway for me: If I advise anything to any other team, especially if they are not doing so good, it can cause some personal emotions and mistrust. And good performing teams don’t need my advice anyway, so I should better keep them to myself in this case 🙂


At around half past two all language envirnoments were working well, basic algorithms were in place. The real fighting started. Charlie Firpo saw a decline, what was not really a decline, but simply other players getting active. They invented a new routine in a rush, but then a real decilne for them started. Grandious seemlingly choose an always folding algorithm first and then they started to implement new better and better algorithms. Cppoker was also getting better and better. I would not be surprised if they would have won the game, had it been started only around 14:00.

Final struggle

Around 15:30 push came to shove, teams just wanted to win, as many points as possible. Any “always folding” or “always all in” strategies caused a long term decline. For a short time starting around 15:40 we – the AllLean PHP team – tried an always folding tactic. We saw, that all other teams became very agressive and thus a sure three points were above the possible five ( 5/3 = 1.67 I would count, if we would have the same winning strategies). But we knew, that we cannot win with always fold, because another always folding player immediately puts our robot to an 1.5 average, what is way below the remaining player average: 5/2 = 2.5. So we implemented a pointing system with a special shortcut: If we didn’t have pairs or cards above seven average, we fold immediately.


Interestingly team Grandious with the Groovy language caught the wave and in this final half an hour their performance was better than any other team, but they didn’t have enough time left to outperform us.

I wanted to change our basic tactic, but my team members just hushed me down and said that they would rather go have coffee for half an hour, so we cannot make any rushed and buggy changes :). We brought in around 2.1 points on average, what was enough to first catch and then overtake Charlie Firpo. They had serious technical problems around 15:30, what lasted for half an hour.


Winning is clearly not rewarded by the organizers, because it is not winning what really matters. It is the effective learning what matters, what you will do differently afterwards. Answers to these questions became imprinted to our minds, we cannot forget anymore:

  • What does continuous deployment really mean?
  • How can one devise and use a simple algorithm until one comes up with something better?
  • What is the attitude necessary to survive and thrive in a constantly changing environment?

So I personally thank Rafael Ördög (Devill) for taking his time to realize this great competition. I honestly wish this becomes a great championship with international gatherings.

Also thanks for the office and lunch for Morgan Stanley.

For more info on Lean Poker, check

View from the office terrace.

总结 / Summary in Chinese

我们的小组,”AllLean”用PHP语言赢了,但是重要的不是赢输,而更重要的是经验“持续部署”(continuous deployment),各两分钟,以及对其他小组进行的策略。比如,我们经验了“上市时间”的重要性。
我感谢Raffael Ördög为了准备和组织这次活动,并感谢摩根士丹利为我们提供办公室。

Short Summary in English

(if you want to study technical language in Chinese)

We organized a poker computer program challenge. Here we were divided into teams and each team used a different programming language:C++, PHP, Java and Groovy. We constructed programs, that could play poker against each other.
Our team, “AllLean” with the PHP language won, but not winning is what matters. More important is the experience with continuous deployment (each two minutes) and employing strategies against other teams. We experienced how important for example “time to market” can be.
I thank Raffael Ördög for preparing and organizing this event and for Morgan Stanley for the office space.

Interface Design Course Summary

The expression “interface design” was so hot that I immediately applied for the course. It was an inspiring eight weeks and now I would sum up my experience right here. If you speak Hungarian, you can check out the basic info here:

We followed the process how apps and sites are designed. It starts with “needfinding” a process to find both your and your clients needs. Some projects – actually quite many I’ve encountered – fail because of inexistent or poorly executed needfinding.

Then we continued to project brief and use cases. It was revealing to write my own specification and I could clarify the bigger part of the project without executing any direct task. This clarity helped me later on to focus on major user stories.

Then there was a part for wireframes. “No forms or colors please!” was our slogan and now I understand why. I would not do it otherwise myself.

We continued to lectures about typography and layout. As I had some experience with fonts before, so theory was almost nothing new, but the little practice we did helped a lot. Can you imagine, I didn’t really know about ?

So after fixing wireframes we spent a few hours in Axure(beta). It is easy to handle although it has it’s limitations. You can digitalize your wireframes and even have some mockup funktionality. Still without colors of course.


Then came Photoshop, we fleshed out our wireframes. Of course Adobe Illustrator was a big help in creating any icons or UI elements. Actually we started by creating our own UI kit fully vector based of course. Then it was simply copy-pasting UI element into app screens.

One of the surprising values I experienced here is experiencing the different viewpoints of my classmates and teachers. It’s much more than just pieces of information, it is the way people think and speak about projects or designs.

Finally I came up with a zoomable email/twitter client:



Interaction Design Course

Just a few excellent pictures composed together to communicate the mood of my project
Moodboard for my pet project Zooming Emails

I consider my life mission to “create a better way to use computers”. So I had to take this interaction design course in University Moholy-Nagy:

We were asked to prepare a pet project and I choose the subject of “zooming emails”. I was discouraged, because it is difficult to design zooming interfaces. However I believe that ZUIs will simply take over windowed interfaces, so I started on this one anyway.


User experience, interaction design, app developer are all brand new fields and I think they are kind of difficult to find in formal education. So I was very happy to find this course announced in September 2013. I felt that with my profile it is a must to go.

Of course an eight week course cannot prepare us for all cases, but it can start us on the road. Real life projects and references are the real milestones here, not certificates.

We have “theory” on Monday and Tuesday and practice on Saturday. On the first day Thomas Fogarasy said, that having an idea in itself is like 1%. I agree. The other 99% is planning, preparing and getting “deep in the jungle”.

Until now we are through some interface design theory, formulated project ideas, created personas and wireframes. I am curious how far we will get.

Here you see an example moodboard, personas and a basic description of purpose and functions:

Download (PDF, 1.48MB)

The one to contact with hot zooming projects: zbalaiemil

Videogames and Learning: An Excellent Coursera Course

I’ve enrolled to an excellent Coursera course on video games and learning. This subject is so hot for me and I believe new generations will use games as major part of their blended learning experience.

Constance Steinkuehler and Kurt Squire are doing everything to give as a great learning experience.


I stole this diagram from the course (Kurt Squire). It shows clearly where social context has a role. Newbies or intermediate players are in my experience not the core of these groups. It starts by master players and it continues to designers or game community leaders.

I just started this course, but in my opinion it has surprisingly high quality. (As by the Coursera Gamification course from Kevin Werbach.)

I consider these forms of education as valid as any classroom education and I really appreciate the effort for putting all this together.

SAP development tools

We do not code like we did in 1992. SAP Walldorf is trying to be an attractive platform for developers. They moved IDE onto Eclipse, trying to unify the many different programming languages: ABAP, Java, JS, …

I’ve found this video about the evolution of SAP development tools (Put to full screen for details).

About debugging ABAP Web Dynpro with Eclipse: