Friday, March 28, 2014

Weekend Reader, Week 13

Inspired by Philip, I am going to try a new format: The Weekend Reader - A post every week about interesting stuff I read on the Internets during the past week.

 

IMG 0161

The Problem with Career Ladders

Jurgen Appelo (Author of Management 3.0) identifies the problem with career ladders: Management Bias, the Peter Principle and Linearity do no fit modern knowledge working environments. He has a vision:

Far in the future there won’t be any subordinates and superiors. Just people, working together.

I personally don’t believe that this vision will become generally true any time. But I believe that it can fit some very special work environments, and it’s the kind of environment that a true knowledge worker should try to find.

 

Github Inc. seems to celebrate to be such an environment:

GitHub Swaps CEOs, Proves It Doesn’t Need No Stinking Bosses

GitHub is a company that doesn’t have middle managers. Few of its employees have job titles.

 

A Day of Communication at GitHub

Let’s stay with GitHub: They also have an interesting culture of communication: Zach Holman claims: Meetings are really difficult to get right. Chats have a lot of advantages over meetings.

Ok, I know about the first part… but chats? Seriously? However after reading the article, I am impressed.

 

SAFe: the infantilism of management

About every major figure in the Agile community has now formulated disagreement with the Scaled Agile Framework (SAFe) and similar approaches:

But this lastest critique by Dave Snowden (the authority on the application of complexity theory to organisations) is especially cruel:

SAFe is not only a betrayal of the promise offered by AGILE but is a massive retrograde step giving the managerial class an excuse to avoid any significant change. OK its a obey making machine but the same applies to snake oil salesmen and the South Sea Bubble. People will get damaged by this nonsense and it needs to be hamstrung at least, garrotted at best.

[SAFe is] the failure to realise that software development needs to be seen as a service and as an ecology not as a manufacturing process.

 

Identify the Champion and the Valve Handbook for New Employees

Tudor introduced to me the notion of “championing” as a mechanism for Selection and Prioritization. I am wondering if this would be applicable to work environments that are paralysed by giant backlogs.

It seems that Valve (the other poster child of a flat organisation without bosses) is living a similar notion already according to their Valve Handbook for New Employees:

Other companies have people allocate a percentage of their time to self-directed projects. At Valve, that percentage is 100. Since Valve is flat, people don’t join projects because they’re told to. Instead employees vote on projects with their feet (or desk wheels). Strong projects are ones in which people can see demonstrated value; they staff up easily.

 

What makes knowledge workers productive?

BjhOC2HCQAATdfx

 

Defining Enterprise Applications

13 years after writing Patterns of Enterprise Application Architecture Martin Fowler tries to define the term “Enterprise Application” … not without sarcasm:

And then there's so-called "business logic". When you are writing an operating system you strive to keep the whole thing logical and stive to discover and implement simplifications to keep the software straightforward and reliable. But business rules are given to you as they stand, and if you want to change them you need sixty-seven meetings and three vice-presidents retiring. They are usually a haphazard array of strange conditions that interact in surprising ways. Their insanity derives from a good reason, each one is a case where salesman could close a particular deal by offerring some special one-off condition. Do this a thousand times and you have the complex business "illogic" that lies in the heart of many enterprise applications.

Roy Osherove has his own opinion on the topic:

“Legacy” and “Enterprise” - Two words that mean good things in real life, and really problematic things in software culture.

Sunday, March 23, 2014

JavaScript is conquering the world!

Any application that can be written in JavaScript, will eventually be written in JavaScript.

 

Two years ago I blogged The future smells like JavaScript. Where do we stand today?

This post lists my favourite examples that demonstrate impressively the power of JavaScript.

 

Cloud 9: A complete IDE written in JavaScript:

It’s funny, Adam Bien talked in 2008 in his session "Designing The Boundary - Rich UI Meets Efficient Java EE Backend” about desktop- vs. web-applications. IDEs were his canonical example for desktop applications that will never be replaced by web applications. Yet here we, are looking at Cloud 9:

Screen Shot 2014 03 22 at 23 35 37

And there are plenty alternatives, most noteworthy Visual Studio Online (Project Monaco) by Microsoft. But there are also codenvycode anywhere, eclipse orion and others.

 

Unreal Engine 4

While not yet publicly available, Epic Games and Mozilla have ported the Unreal Engine 4 to the web and it’s running nearly at native speed:


Office Replacements

Google Docs and  Microsoft Office Online are probably the most popular examples how traditional desktop applications are replaced by web applications. Another impressive one is Lucid Charts:

Screen Shot 2014 03 23 at 00 26 57

 

Rather playful examples of the power of JavaScript are the following emulations:

JSLinux: A PC emulator in JavaScript running Linux Screen Shot 2014 03 22 at 21 42 07

http://bellard.org/jslinux/

 

 

Doppio: A JVM implemented in JavaScript 

Screen Shot 2014 03 23 at 00 13 01

http://plasma-umass.github.io/doppio/

 

PCE.js: a Mac Plus emulator running Mac OS System 7

Screen Shot 2014 03 22 at 21 36 07

http://jamesfriend.com.au/pce-js/

Friday, March 21, 2014

Running Node.js applications on the JVM with Nashorn and Java 8

Jjs
I am naively playing around with Nashorn. Nashorn is the new JavaScript Runtime that comes with Java 8 and runs on the JVM.

In this post I show how to run simple Node.js applications with Nashorn on the JVM.

Avatar.js is a project to bring the node programming model, APIs and module ecosystem to the Java platform. Unfortunately Avatar.js does not officially provide a binary distribution and the build process looks quite intricate (involving Python and C++).

There is also Project Avatar, an upcoming web-platform by Oracle. Project Avatar builds upon Avatar.js.

By reverse-engineering Project Avatar I found the necessary artefacts of Avatar.js in the java.net Maven repository. These artefacts can be used to run Node applications with Avatar.js without having to build Avatar.js yourself.

The following steps show how to run a simple Node.js web application on OSX. The steps should be very similar for Linux or Windows.
  1. Download avatar-js.jar from the java.net Maven Repo.
    Current version is here: https://maven.java.net/content/repositories/public/com/oracle/avatar-js/0.10.25-SNAPSHOT/
    Example file: avatar-js-0.10.25-20140313.063039-43.jar 

  2. Download the native library avatar-js.dylib from the java.net Maven Repo.
    Current version is here: https://maven.java.net/content/repositories/public/com/oracle/libavatar-js-macosx-x64/0.10.25-SNAPSHOT/
    Example file: libavatar-js-macosx-x64-0.10.25-20140312.062209-35.dylib
    For Linux you would download the corresponding .so file from ../libavatar-js-linux-x64/0.10.25-SNAPSHOT/
    For Windows you would download the corresponding .dll file from ../libavatar-js-win-x64/0.10.25-SNAPSHOT/

  3. Rename the native library to avatar-js.dylib and rename the jar to avatar-js.jar and put both in a directory called dist

  4. Create a simple Node.js app in the a file called app.js:


  5. Run the command:
    java -Djava.library.path=dist -jar dist/avatar-js.jar app.js
  6. The output should be:
    Server running at http://127.0.0.1:8000/

  7. Navigate to http://localhost:8000/

Wednesday, March 19, 2014

Performance: Nashorn vs. Node

250x250xJavaScript logo png pagespeed ic I5rUk2FRl9

I am naively playing around with Nashorn. Nashorn is the new JavaScript Runtime that comes with Java 8 and runs on the JVM.

I am using the current Build b132 of the Early Access Release of Java 8 on a recent MacBook Pro (2.3 GHz Intel Core i7)

One of my first experiments is comparing performance with node.js.

I have run the following script with Nashorn and with Node:

The results:

Nashorn:
✔ jjs fib.js
Input: 30, Time: 66
Input: 31, Time: 40
Input: 32, Time: 58
Input: 33, Time: 90
Input: 34, Time: 154
Input: 35, Time: 242
Input: 36, Time: 348
Input: 37, Time: 556
Input: 38, Time: 920
Input: 39, Time: 1483
Input: 40, Time: 2426
Input: 41, Time: 3928
Input: 42, Time: 6360
Input: 43, Time: 10303
Input: 44, Time: 16602
Input: 45, Time: 26802
Input: 46, Time: 43384
Input: 47, Time: 72201
Input: 48, Time: 116425
Input: 49, Time: 188520
Node:
✔ node fib.js
Input: 30, Time: 13
Input: 31, Time: 20
Input: 32, Time: 33
Input: 33, Time: 53
Input: 34, Time: 88
Input: 35, Time: 142
Input: 36, Time: 226
Input: 37, Time: 365
Input: 38, Time: 590
Input: 39, Time: 954
Input: 40, Time: 1530
Input: 41, Time: 2522
Input: 42, Time: 4047
Input: 43, Time: 6534
Input: 44, Time: 10557
Input: 45, Time: 17161
Input: 46, Time: 27712
Input: 47, Time: 46323
Input: 48, Time: 73521
Input: 49, Time: 118905
Pure Java:
✔ java -cp fibdemo.jar FibDemo
Input: 30, Time: 5
Input: 31, Time: 6
Input: 32, Time: 11
Input: 33, Time: 18
Input: 34, Time: 27
Input: 35, Time: 45
Input: 36, Time: 71
Input: 37, Time: 121
Input: 38, Time: 188
Input: 39, Time: 304
Input: 40, Time: 490
Input: 41, Time: 804
Input: 42, Time: 1276
Input: 43, Time: 2067
Input: 44, Time: 3361
Input: 45, Time: 5445
Input: 46, Time: 8901
Input: 47, Time: 14253
Input: 48, Time: 23288
Input: 49, Time: 37160

Out of the box the performance of Node seems to be almost a factor 1.6 better than of Nashorn.

Of course this naive experiment is not representative for real world performance and this is still an early access release of Java 8. It might well be that the performance of the final release will be better. Also the JVM can probably be tuned in many ways unknown to me.

Still I would be interested in thoughts about the findings of this experiment...

Friday, March 14, 2014

Myco for iOS7

Icon170x170

This week I released Myco 2.0.0 for iOS7:

 

5 en identification

 

5 en identification


Of course the app is available in English, German, French and Italian.

We are looking forward towards the next mushroom season. It will be hard to beat the over 60'000 downloads from last season, but we are close to releasing the Android version which might give another boost.

Sunday, March 9, 2014

Quotes of the Week: Backlogs

quotes2.jpg

Making something a BIG RED TOP TOP BIG HIGHEST #1 PRIORITY changes nothing but text styling.

Story card hell is when you have 300 story cards and you have to keep track of them all.

If your product backlog contains more than 50 Stories, there probably are inconsistencies due to lack of comprehensiveness.

A stuffed backlog is a stale backlog.

Often traditional requirements gathering bloat up Agile product backlogs so that they cannot be prioritized anymore.

Related Posts Plugin for WordPress, Blogger...