Sunday, December 27, 2015

Weekend Reader, Christmas Edition

Angular 2 is officially beta

We’re now confident that most developers can be successful building large applications using Angular 2.

The developer guides are already amazingly polished. If you have not yet started to look into this new framework, now is a good time.

We have closed the hype-cycle

The post is a good high-level overview comparing the basic concepts of React and Angular 2.

At the beginning of the year we have seen posts that were explaining React to developers that know Angular. Now we have posts that explain Angular 2 to developers that know React…

Angular 2 for Desktop Apps

Angular 2 promises to be a framework not only for web development but also for mobile development. This article show how the reach can even be extended to the Desktop by using Electron.

Jazoon in Bern: The future of Web Development

On April 4th there will take place the Jazoon TechDays on the beautiful Gurten. Traditionally Jazoon was a multi-track Java conference. For the next year however the organizers came up with a new concept of a one-day conference that focuses on a single topic. The topic for the upcoming conference in Bern is “The Future of Web Development” and they already have an interesting line-up of speakers (and I heard the rumor that there will even be more international speakers announced soon …).
I suggest you should get your ticket for that event soon, even if you are not living in Bern. I was lucky and could convince my employer to sponser my ticket :-)

Redux Screencast

Dan Abramov, the creator of Redux, created an amazing series of screencasts for Egghead. It is one of the most instructive screencasts I have watched the whole year. And it is available for free!
If you want to learn about Redux and how it approaches the ideas of Flux you should definitely watch these short lessons.
But even if Redux/Flux is not a topic that interests you, the screencasts teach a lot about using ES6 and test-driven development in JavaScript.

The future of JavaScript is (almost) now

Every once in a while, a piece of technology is situated in the right place at the right time, and it ends up taking over the world. […] ES6 is new foundation for what may be the most important programming language of the next several decades.

The article is good overview over the JavaScript ecosystem today and its relevance in the future.

The End of Dynamic Languages

Working in dynamic languages is fine if you’re just adding a feature on top of the pile of features. But anything else is impossibly difficult.

Not everybody agrees with the future relevance of JavaScript. According to the article the time for dynamic languages is over and it is time to move on.

Tweets of the Week

Monday, November 23, 2015

Weekend Reader, Week 47

Highlights from AngularConnect 2015

The post is a very good overview about the progress of Angular 1 and 2.

Angular 1 ist still making progress. I am looking forward to the component syntax and also to the component router and the new internationalization features which both are shared with Angular 2.

I am a bit concerned about the ever growing scope of Angular 2:

  • They plan to deliver their own command line interface called Angular-CLI for integrated tooling
  • They want to support APIs in 4 languages: ES5, ES6, TypeScript and Dart
  • They want to support the MV* pattern but also the Flux pattern for separation of concerns
  • They want to support different rendering targets besides html to support native mobile applications
  • They want to use WebWorkers to run most of the Angular code in a seperate process

I am really curious how all these features will turn out in regard to complexity and developer experience.

JavaScript Community in Bern

Just a reminder for the "Bärner JS Talks" happening next wednesday.

Very interesting topics, I am looking forward to all of the three talks.

The Thing about Bower

There is something going on around bower

It was proclaimed dead on redit

One reason for that proclamaition was this discussion on github.

As a reaction the bower team posted the following post: Bower is alive, looking for contributors and started a crowd funding initiative.

Meantime in the Microsoft World, VisualStudio is still betting on the bower horse and improved the integration with a new Bower Package Manager UI for ASP.NET 5.

Personally I am currently a fan of modern JavaScript workflows based on NPM/Webpack or JSPM … no bower for me anymore.

If you want to get rid of bower, the following post might be a good starting point: Why We Should Stop Using Bower – And How to Do It

New Rules for JavaScript

Kyle Simpson ist known for having other opinions about “best practices” in JavaScript. In this video he questions many common practices and rules of current JavaScript programming.

Business: Nobody Wants Your App

An interesting article as an interesting following up on "Don’t base your business on a paid app"

The article shows the story of a startup that wanted to create an app … and was not that successful.
Interesting is that they had a good visibility, but nobody wanted to download for the app:

One download for every one thousand web views.

The conclusion:

The app world is so bloated, it’s overwhelming to the consumer.

I see that effect myself: Some years ago I was browsing the App store to detect new cool Apps, but now I can’t remember when I actually opened an App Store the last time…

Tools: Classeur

I am using Markdown a lot. For my courses and for blogging. But I am still looking for my favorite Markdown tooling. For some time I have been using StackEdit for blogging. Recently I discovered Classeur.io which makes a neat impression. I am writing this post right now in Classeur …

Programming Humor: FizzBuzz Enterprise Edition

Fizz Buzz is a famous programming exercise, suggested to be used in programming interviews. A solution in JavaScript might look like this.

Somebody made an enterprise version of Fizz Buzz in Java … Hilarious!

Tweets of the Week

Saturday, November 21, 2015

Quo Vadis JavaScript?

JavaScript went through a makeover extraordinaire with ES2015 which was finalized this summer.

This is not your grandma’s JavaScript any more:

import React from 'react';

export default class Catalog extends React.Component {
    constructor(){
        super();
        ...
    }
    buy(product) {
        ...
    }
    render() {
        ...
    }
}

But it seems this was just the beginning… the metamorphosis is far from done for JavaScript.

For future versions of JavaScript there are many proposed new language features. Among the most outstanding proposals for me are decorators, async functions and private state

Some years ago nobody would have believed that the following snippets are (will be) valid JavaScript.

Decorators:

@createStore(alt)
@datasource(CatalogSource)
export default class CatalogStore {
    
    ...
    
    @bind(CatalogActions.searchLoaded)
    onSearchLoaded() {
        ...
    }
}

Async Functions:

async function fetchJson(url) {
    try {
        let request = await fetch(url);
        let text = await request.text();
        return JSON.parse(text);
    }
    catch (error) {
        console.log(`ERROR: ${error.stack}`);
    }
} 

Private State:

class DataObj {
  private #data1;

  constructor(d) {
    #data1 = d; 
  }

  get data() {
    return #data1;
  }
}

I think its now safe to say that Silverlight and Flex were failed attempts to bring other languages than JavaScript into browsers … but looking at the snippets above, it might sure look like some C#/Java infiltration squad sneaked into the Ecma building …

Babel and TypeScript both already support decorators and Babel also supports async functions (TypeScript is working on it). So you can use those language features right now in a modern JavaScript project setup.

Of course the JavaScript ecosystem/community is going through a tremendous development and learning process right now. We are slowly getting the new features piece by piece and figuring out how to use them … while that slow metamorphosis process can be healthy, it can also be painful…

In the future, once JavaScript has completed it’s metamorphosis, people might legitimately ask why we did not just integrate C# or Java into the browsers … ?

Tuesday, November 3, 2015

Karma and Protractor Illustrated

For my JavaScript / AngularJS workshops I created two illustrations to explain how unit-testing with Karma and end-to-end-testing with Protactor is working:

In both setups the code is running in the browser. The main difference is, that with Karma I am testing isolated ‘code-units’ that are run individually, there is no complete running application involved.
In the Protractor setup a complet running application has to be availabe and the test drives a browser to interact with this application.

Wednesday, October 28, 2015

Next Teaching Engagements

During winter 2015/16 I will deliver inhouse courses about development with JavaScript and AngularJS to teams at Puzzle ITC, mtrail GmbH, Mobiliar, Postfinance and SBB.

I will also deliver public courses for DigiComp and TechTalk:

At DigiComp my next course “Frontend-Entwicklung mit AngularJS” is scheduled for December 17th & 18th 2015 in Bern.
There are already enough registrations so that the course is guaranteed to take place, but there is still room for more participants …




I am delivering a three day course “Front-End Development with JavaScript, AngularJS and Visual Studio 2015” for TechTalk.
The course will take place:
- November 16th - 18th 2015 in Vienna
- January 25th - 27th 2016 in Zürich
… there are still places left.

Update 2015-12-01: Here is a nice summary from a participant of the course in Vienna.

Monday, October 26, 2015

Weekend Reader, Week 43

Angular Connect

Last Week was the Angular Connect conference in London.
Unfortunately Angular 2 is still alpha … the highly awaited beta version was not released at the conference.
Besides Angular 2, TypeScript and Reactive Extensions seem to be the technologies that you should start to look into for future develoment with Angular.
The sessions are available on YouTube, I am still catching up, but the qualtity of most sessions is very high.

The Angular team also updated the docs for Angular 2, definitely worth looking at …

JavaScript Community in Bern

Next Meetup of “Bärner JS Talks” is on November 25th.
Next Frontend Pizza is on November 3rd.

Don’t base your business on a paid app

The App and Play stores have turned out to be exceptionally poor places to run a software product business for most developers.

DHH (the creator of Ruby on Rails) argues against the myth of profitability of mobile app development today. Apps are a great distribution channels for services, but they are not the product you should try to make money with.

SVG Porn

Nice logos made with SVG.

A cartoon guide to Flux

Flux is not easy to grasp. This illustrated guide is a funny intro into the pattern.

The State of JavaScript on Android

the fastest known Android device available today performs 5× slower than a new iPhone 6s, and a little worse than a 2012 era iPhone 5

The post is highly interesting. It seems that iOS users are much better off using modern web sites and the Android ecosystem is actually threatening to hold back the progress of web technologies …

Is Eclipse Dying?

Eclipse is not the shiny thing every developer loves any more … but is it really that bad and is the predominant IDE dying?

Video: Web Development in 2020

Web Development in 2020 - Steve Sanderson from NDC Conferences on Vimeo.

Steve Sanderson looks into future trends of Web Development.
An interesting Presentation with a very funny intro.

Tweets of the Week

Friday, October 9, 2015

React vs. Angular: A personal anecdote

I am currently working for a team that is about to build a web frontend for their in-house legacy system. The web frontend is basically a greenfield project, and the team can freely choose their technology stack.

I developed a small technology prototype in AngularJS and React. For both solutions I used npm and webpack as a build environement. In the AngularJS solution I used TypeScript and in the React solution I used ES2015 (formerly ES6) and Babel.

The prototype is here: https://bitbucket.org/jonasbandi/webshop/

I presented both solutions to the team, and let them decide which stack they like to choose for the actual project.

The team decided that they felt more comfortable with the solution based on React.

There were two main reasons:

  • AngularJS is currently in a strange state, since Angular 2.0 is announced and hyped but not ready for production yet. If you start a project based on AngularJS now, you get the feeling that you are writing in a legacy technology right from the beginning.
  • The React solution left a conciser impression and was clearer to grasp by the team. For example to realize a “component” in AngularJS you have to understand Directives (a DDO is pretty arcane for a newbie) and the implementation is spread over several entities (DDO, controller, template …). In contrast to that the approach of React to components is much easier to grasp.

This decision was made some weeks ago. In the meantime I set up the real project with the following components:

Monday, September 14, 2015

Weekend Reader, Week 37

Security: How a bug in Visual Studio 2015 exposed my source code on GitHub and cost me $6,500 in a few hours

Wow! Amazon and the Hackers are both continuously scanning public repositories for passwords!
This story should make you reconsider where you leave your credit card information… things might get out of hand, even if you think that you are just using a free service …

Agile: Avoiding the most common pitfall of large-scale agile

Gojko wrote an interesting article about the current trend of scaling Agile. Unconventional as always, he draws anaglogies with “The Lord of the Rings” and escaping a concentration camp in WWII.
He argues that our industry is obsessed with effort instead of focusing on outcome.
His main explanaition why Agile does not scale in most attempts is:

On a small scale, effort does boost outcome.[…] On a larger scale, effort no longer directly relates to results.

Salary in IT: An endless topic on Quora

Interesting to see different perspectives. Although I have a hard time to take the second answer seriously. In my experience not many enterprises are looking for the mythical “10x engineer” and are willing to pay these extravagant figures …

Stack overflow has also some info about salaries.

SwissJS: Videos of the sessions are online

If you missed SwissJS last July, the recorded sessions are now available on YouTube.
If you just want to watch one session, I recommend “Creating UIs for the WebA Audio API” by Stephen Band. His usage of the browser to create music is impressive and its a refreshing non-enterprisy topic.

Video: How to make your code sustainable

Christin Gorman is adressing the problem of over-engineering in typical business applications. This one is more serious than previous presentations by her, but she kept her refreshing way to present …

How to make your code sustainable - what they don't teach you - Christin Gorman from JavaZone on Vimeo.

Community: First JS Community Meeting in Berne

Four intereting talks. I am looking forward to this event …

Tweets of the Week

Sunday, August 30, 2015

Weekend Reader, Week 35

Web Dev: Stop pushing the web forward

Peter Paul Koch of QuirksMode argues that we are maneuvering the web into a dead end. Instead of trying to compete with native apps by cramming more and more features into browsers, we should focus on the web’s strengths: simplicity, URLs and reach.

We get ever more features that become ever more complex and need ever more polyfills and other tools to function — tools that are part of the problem, and not of the solution.

Web Dev: A hex editor in the browser

https://hexed.it/ - Just another instantiation of Attwood’s Law:

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

Work: Long Hours Backfire for People and for Companies

In sum, the story of overwork is literally a story of diminishing returns: keep overworking, and you’ll progressively work more stupidly on tasks that are increasingly meaningless.

JavaScript: Angular 2 Migration

The supported migration scenario from Angular 1 to Angular 2 will not be based on the Angular New Router (aka. Component Router) any more (it seems as the New Router has been killed as a standalone project anyways). The Angular team posted a sophisticated plan how migration will look like. It looks interesting, but as far as I gather it’s still only a plan, the bits are not available yet …

WebDev: Phoenix Framework 1.0

The hype moves on: Elixr seems to get traction. And the Phoenix Framework is certainly worth having a look at for modern web development …

Online Education: A lucrative business

Online courses are sprouting out of the internet like mushrooms in autumn … I for myself have currently a subscription to Pluralshigt and to Egghead.io. But there is so much more …
The business seems to be lucrative, at least for some teachers …

Funny: Readable code - and the long lost secret of how to achieve it

(funny and provocative … see the comments)

Readable code - and the long lost secret of how to achieve it from JavaZone on Vimeo.

Tweets of the week

Sunday, August 23, 2015

Weekend Reader, Week 34

A look at the United States Digital Service (USDS) - An agency to save government IT projects that got on the wrong track

The original enrollment system cost $200 million and would have required $70 million a year to maintain. The new version of the site cost $4 million to produce, with annual maintenance costs also $4 million.

There is a lot of debate whether the 10x developer is reality or not. But this article proves that the 10x team is definitely reality.
But the article also points out that it does not (only) depend on the people in the team, but also on the project setup: Is the team in a position to make a difference, or is it helplessly entangled in bureaucracy.

The biggest foe is generally risk aversion. People in government are trained to not do things differently because there’s often really bad consequences when you try something differently and it fails. We run up against this all the time

I also find the philosophy how the USDS attracts people and forms teams very interesting:

We don’t make career hires. We’re not building a career organization. […] We are relentless about trying to hang onto the ruthless mission focus here. We are built for short term appointments.

Agile: No. Agile Does Not Scale.

At small scale, Agile is great. At large scale, Agile is stupid.

Jurgen Appelo, the author of Management 3.0, gives his thought about the recent attempts to scale Agile and the fundamental flaw that at the base of all those methodologies that want to apply existing Agile practices at large:

Scaling Agile is indeed a problem, because the Manifesto doesn’t scale
in the first place. It was intended to describe small projects, not
large enterprises.

Agile: It used to be simple

It is sad where Agile has ended up:

Today consulting companies position themselves to help other companies to choose an Agile framework that fits their specific Agile needs:

Agile: Simplicity and Unscaling

As we introduce agility into larger instances, we’re losing the very essence of agility that made it attractive in the first place.

We don’t have a scaling problem, we have a “trying to throw too many people at it” problem. We have a “love of size and scope” problem.

Work: Living in Switzerland ruined me for America and its lousy work culture

So, I guess I should feel privileged to be born in Switzerland …

Funny: Snapchat murders Facebook

… an intro to Snapchat, ideal for old people like me who are still blogging and can’t stay up to date on the latest fashon in social networking:

Tweets of the week

Tuesday, August 18, 2015

JavaScript vs. ECMAScript 2015


JavaScript, it might have been botched but we loved it because it was simple: Write the code and press reload.


ECMAScript 2015, formerly known as ECMAScript 6 … to use it today, you have to understand transpilation and module loading and deal with all the accidental complexity around Node.js, npm, webpack, babel, traceur, jspm, SystemJS etc.


ES2015 … for nerds that love toys?

The slides are from my JavaScript courses.

Saturday, August 15, 2015

Weekend Reader, Week 33

Tudor Girba on .NET Rocks

.NET Rocks is still one of my favorite podcast. In this episode my colleague Tudor talks about his ideas of modern software development, especially about reading code an source code analysis.
A very interesting conversation, Tudor is eloquent as always. But Richard also cuts to the chase at the end: “This all sounds very academic” … listen to the conversation and judge for yourself.

No Estimates: A critique by Steve McConnell

The NoEstimates movement is a new trend in Agile that critizises many Agile methodologies that set heavy focus on planning and therefore spend a lot of effort for estimating.
The proponents of the NoEstimate movement argue that Software Development essentially is nothing like building housese but rather like building a science theory (do you think Einstein estimated how long it would take him to figure out relativity theory?).
As a conclusion software estimation is mostly a farce according to NoEstimates:

It seems that the NoEstimates movement now gained momentum, as the famous author Steve McConnell deems to reply with a video:

No Estimates: The Reply of Ron Jeffries

Ron Jeffries, one of the main proponents of NoEstimates, has an elaborate reply to Steve McDonnell where he shows flaws in the arguments of McDonnell and defends the ideas behind NoEstimates.

NoEstimates: More Resources

The only way out of the estimating nightmare is to call “bullshit” on it, and publicly accept - indeed, embrace - the uncertainty that’s inherent in what we’re doing.

JavaScript: Universal JavaScript at Netflix

Netflix introduced JavaScript on the server to reuse the same logic on the server and the client.

Context switching between languages was not ideal.

After PayPal announced switching all their Java code to JavaScript, this is another big company investing heavily on JavaScript on the server.

JavaScript: Building a desktop application with Electron

A very detailed tutorial on how to build a desktop application with JavaScript and web technologies.
After the browser and the server, JavaScript sets out to conquer the desktop …

JavaScript: Using Server Side Javascript with Wildfly

JBoss, the traditional Java server, jumps the bandwaggon and introduces support for server-side JavaScript. Interesting … probably the first sensible usage of Nashorn I have seen so far (after Project Avatar was killed by Oracle)

But what I find even more interesting, is the new hot deployment mechanism that allows you to map the web content root to your local workspace. This migth be a huge productivity boost for Java web development … so I might have to revise my tweet:

Oldie but Goodie: Gavin King about ORM

It turns out that ORM is a difficult problem, in subtle ways. It always looks simpler from the outside than it turns out to be once you start getting your hands dirty.

People try to apply ORM where it is not really suitable.

Tweets of the week:

Tuesday, July 28, 2015

Weekend Reader, Week 30

SwissJS was Great!

Here are some good summaries:
- SwissJS 2015 - The JavaScript Conference To Meet and Socialise by nothing.ch
- Impressions of swissJS 2015 by Chaosmail Blog

History of Icons

A visual brief on icon history through different graphical user interfaces in different operating systems.
A neat site that reminds us how time is passing …

Startup Timelines

Another site that reminds us how time is passing …

Assessing Employee Performance: You’re Doing it Rong

Some interesting thoughts about tracking value and a lot of bashing of issue trackers.

Ironically, the best way to get fired for underperformance is to be a 10x developer.

Feature Toggles are one of the worst kinds of Technical Debt

Feature toggles are a (better) alternative to excessive feature branching, but guess what, they have their own problems … so we keep looking for the silver bullet.

Why you might not need MVC

React.js was critizising MVC from the beginning. I never understood the argumentation against MVC, 2-way-binding and the need for the Flux architecture. This article helped me to understand some of the concepts behind that argumentation.

The container revolution

A good writeup about how container technologies evolved and the consequences.

That means your developers can move faster, you can ship faster, you can iterate faster, your business grows faster – speed improves everything.

This Developers Life is back

After almost two years of silence they released a new episode … it does not top my favorite episode, but it’s well done.

The ??!??! operator in C

No joke: ??!??! is a valid operator in the C programming language …

Saturday, July 25, 2015

Next Speaking Engagements

I will hold my workshop “JavaScript for real Developers: A survival Bootcamp” on September 1st at the “ch/open Workshoptage“.
I have been holding workshops at the “ch/open Workshoptage” for the last 9 years, and I think it is one of the best tech event in Switzerland.
It’s the third time I hold the “JavaScript for real Developers” workshop at the “ch/open Workshoptage” (but I have held the same content at many in-house trainings). The last two years the workshop was always fully booked in a short period of time.

Update July 31: The workshop is almost full, a re-run is scheduled.



I am proud that I was invited for the fifth time to speak at the annual SBB Developer Day on September 9th. I will give an introduction to TypeScript.

On August 3rd I will hold my course “Einführung in die Frontend-Entwicklung mit JavaScript und AngularJS” at DigiComp for the first time. The course is not yet fully booked, there is still time to register …

Saturday, July 18, 2015

Weekend Reader, Week 29

The Software Paradox

A short book about the rise and fall of the commercial software market.

Product Backlog Bankruptcy!

I have been in teams where the effort to maintain (the illusion of) a backlog was just rediculous … the idea to declare the product backlog bankruptcy makes sense to me.

Agile & Scrum Go Mainstream

Ok, many teams in software development have moved past the scrum hype … but general management seems to just start discovering it.

Scrum is a Copernican revolution in management.

… I remain sceptical.

Monolith First

Martin Fowler about the current hype around microservices:

You shouldn’t start a new project with microservices, even if you’re
sure your application will be big enough to make it worthwhile.

Microservices and JavaEE: No paradox?

JavaEE desperately tries to be fashIonable by squeezing traditional application servers in the corset of microservices … I wonder if this is a good aproach:
- WildFly Swarm
- Payara Micro
- KumuluzEE

The birth and death of JavaScript

Another great talk (WAT is a classic!) by Gary Bernhard. Watch out for the point where he crosses from reality to fiction …

Some people seem pretty crazy

How Richard Stallman uses computers:

I usually fetch web pages from other sites by sending mail to a
program that fetches them, and then mails them back to me.

I am in awe at all the obstacles he is willing to take on by staying true to his principles.

Funny: Introducing Atom 1.0

Atom is the text editor from GitHub based on web-technologies.

Friday, May 15, 2015

Upcoming JavaScript & AngularJS Workshop in Vienna

I will be giving a public JavaScript & AngularJS workshop in Vienna from July 6th to July 8th 2015.

If you are interested you can register here.

Thanks to my former employer TechTalk for organising the event.

WebCourses3

Please contact us, if you are interested in a in-house course for modern JavaScript development (also covering topics like HTML5, ES6, AngularJS, React, Gulp, Grunt etc). 

Sunday, May 10, 2015

The curious Life of JavaScript: The slides from my talk at SI-SE 2015

JavaScript



I had great fun presenting "The curious Life of JavaScript" at SI-SE 2015.
I went trough the demos and code examples very quickly, rather as a teaser to show how modern JavaScript development might look.

If you are interested in a deep dive into the topic of modern JavaScript development, HTML5, ES6, AngularJS, React, Gulp, Grunt etc, please consider my courses.

Sunday, May 3, 2015

Weekend Reader, Week 18

Visual Studio for OSX and Linux



Last week at Build 2015 Microsoft announced Visual Studio Code. Visual Studio Code is a completely new code editor that distinguishes itself a lot from the traditional Visual Studio family. It is available for free and it is available for Windows, OSX and Linux.

I think Visual Studio Code is a very exciting announcement from different perspectives:
First, it seems a real commitment from Microsoft to truly go cross-platform. Last year in my Weekend Reader 46, I predicted that open-sourcing .NET is rather a “markteting” move, since mainstream .NET development will still happen on Windows. This might well change now. With Visual Studio Code it becomes a very attractive scenario to develop .NET web applications on the Mac or on Linux.

Second, Visual Studio Code is written in TypeScript running on Electron (formerly Atom-Shell) which runs on top of io.js and the V8 JavaScript engine. Only two Weekend Readers ago I mentioned Atom-Shell as an interesting option for writing desktop applications in JavaScript. Thats exactly what Microsoft did. And ther re-use of the editor code is amazing: They are using the same codebase for their online editor (in Visual Studio Online, OneDrive and in Azure) and now for Visual Studio Code. It is also interesting that Microsoft is building their new product on top of Electron (an open source project by Github) and V8 (a project by Google). This is really not the closed Microsoft we knew 10 years ago …

Third, Visual Studio Code is amazing. It might well be that this becomes my default IDE/editor for web development in general (JavaScript, Angular …). Watch the presentation by Erich Gamma for more details.

Software Surgery - Beyond Features

The craft of software develoment is not about programming

As always Dan North is a great presenter. In this presentation Beyond Features: Rethinking Agile Planning and Tracking he is pointing out problems in current Agile transition attempts:

Methodology eats manifesto for breakfast.

Agile methods today optimize for predictability. That is not what the Agile Manifesto was originally about. Doing mini-waterfalls and calling it Scrum is actually worse than the traditional waterfall.

In the presentation Dan also questions the analogy between software development and civil engineering. He draws a new analogy beween software development and surgery… and he has some interesting points. See Olivers post (in German).

For my part, I have been in dysfunctional software “projects” where I felt like part of an emergency room team: Every morning we were not sure what the day will bring, but we were prepared for anything …

Criticising SAFe (again)

It might become a boring recurring theme on my blog: I don’t believe in scaling Agile to the enterprise … at least not as preached by current methodologies.

This time it is Ron Jeffries (one of the 3 founders of Extreme Programming) who critizises SAFe:

SAFe’s strength is that it appeals to large organizations who are not Agile.

SAFe tells corporate dinosaurs that those little mammals downstairs are nothing to worry about. Agile, on the other hand, thinks mammals are the answer.

I collected other critics here.

Knowlege work is changing the world

An interesting article questioning the position of firms and employees in a modern knowledge work economy.

If knowledge is more important than money, it gives human capital more power relative to financial capital, potentially changing the concept of the corporation.

Learning JavaScript

What the heck is the event loop anyway? - A good presentations about the internals of the runtime that powers web applications.

How software was written before I was born …

Tuesday, April 28, 2015

Upcoming Speaking Engagements

On May 8 the 20th SI-SE Fachtagung will take place in Rapperswil. The title of the Conference is “Next Generation Web & Mobile UIs”.

I will give a talk titled “JavaScript - Past, Present, Future”.



On June 30 I will hold a hands-on workshop “JavaScript for Real Developers” at the Java User Group in Zurich.

Saturday, April 18, 2015

Weekend Reader, Week 16

You Might Have Too Many Developers

An argument in favor of small teams and small incremental projects.

Why are we still talking about scaling agile with things like SAFe when the root problem is you might have too many developers?

There are no unicorns: forget about “better developers”, address organizational dysfunctions

(in response to the article above)

Size may be the symptom of organizational dysfunction.

It goes wrong when we try to make management easier by treating knowledge work as if it were physical work.

Industrial-age management is a really bad system for managing software development.



Sidenote: questioning the 10x developer productivity myth: The Leprechauns of Software Engineering, Fact and folklore in software engineering, StackExchange Question, Quora Question

Don’t use Microservices

As in my previous Weekend Reader, here is another article that has a good discussions about challenges and problems when trying to adopt microservices.

Classes: A bad Idea?

The next version of JavaScript (EcmaScript 6) will add classes to the language. Classes are available in many object-oritented languages, and most developers who learned object-orientation the traditional way (C++, Java, C#) might be wondering how object-orientation is even possible without classes.

However Douglas Crockford, the author of “JavaScript the Good Parts“, thinks that the introduction of classes in JavScript might not be a good idea:

Classes in EcmaScript 6 are gonna be a bad part. (direct link)
The gift of JavaScript to humanity is class-free object-oriented programming. (direct link)



In the “The Two Pillars of JavaScript” we get a similar opinion from Eric Elliott, the author of “Programming JavaScript Applications” who argues also against classes:

You never need classes in JavaScript, and I have never seen a situation where class is a better approach than the alternatives.

Angular Tidbits

Toptal has published some nice short videos, each describing a advanced concept of Angular. Perfect fill-ins for a short break.

A processor simulator written in JavaScript

Geeky. But never underestimate what you can do with JavaScript …

Conferences

SwissJS
SwissJS 2015 (formely SwissJeese) is announced for July 18th 2015 in Bern. Last year the conference was my highlight of tech events. Make sure to get a ticket early, the first batch of “Blind Bird” tickets is already sold out …

SoCraTes Day
The first SoCraTes Day Switzerland takes place on Friday, June 19th in Zurich. This software craftsmanship conference is organized as an unconference, where the participants define the agenda on the day of the conference.

Funny Advertisement

Everybody complains about the ever more aggressive advertisement on YouTube, however if YouTube presents me advertisement like this, I gladly watch it to the end … and I then search for the clip on YouTube to watch it again:

Saturday, April 11, 2015

Weekend Reader, Week 15

Don’t use Microservices

The hype curve for microservices seems to have reached a plateau. The article suggests that a microservices architecture might not be a good fit for new (greefield) applications. Actually. there seem to be quite some reasons why not to use micorservices. I like the dicussion, however I think it’s not specific to microservices, but applies to any decoubled service-oriented architecture … any many failed SOA projects have probably suffered from the pitfalls described.

The Salary of Programmers

It was a topic already in my last weekend reader. This week we get more information about that topic from the Stackoverflow Developer Survey 2015. There are many interesting/surprising insights:
- Developers in the US are much better paid than in Western Europe
- Objective-C and Node.js development pays best.
- You should not be a Java developer if you are in it for the money.
- Developers who work remotely earn significantly more than non-remote workers (probably this is a symptom not a cause: good developers are hired for remote work)
- Mobile developers are more satisfied with their job than other developers.
- Product manager and quality assurance are among the least satisfying jobs

The Rise of TypeScript

The decision of the Angular team to build Angular 2 with TypeScript and to treat TypeScript as the best way to write Angular applications puts a lot of momentum behind the TypeScript language. With this step TypeScript will almost certainly leave its current Microsoft-centric niche and be more widely adopted among web developers.

JavaScript for Desktop Application Development

Many developers will cringe at that notion. But the “reuse-story” is actually compelling. For example with Angular, Atom Shell and Ionic you have a development stack that is applicable for Web, Desktop and Mobile.

More links for that topis:
- Atom Shell Starter (base application skeleton)
- Alternative: NW.js (formely known as node-webkit)
- The State of Desktop Applications in Node.js

There is Hope for Java

Traditional Java development has grown old and cumbersome compared with many other platforms/languages and it has a hard time keeping up with many current software developement trends.

But there is hope (ok the article series is already a year old):
- An Opinionated Guide to Modern Java Development, Part 1
- An Opinionated Guide to Modern Java Development, Part 2
- An Opinionated Guide to Modern Java Development, Part 3

On the same topic:
- Java Doesn’t Suck – You’re Just Using it Wrong

Geek Sarcasm: Could it be that programmers have been human all along?

An nice tale from Christin Gorman (watch her hilarious-all-time-highlight lightning talk) about a project far away from the idiocy of enterprise application development.

On the same topic:
- It Takes 6 Days to Change 1 Line of Code
- The story about Ashton from Joel Spolsky

And finally the wait is over:

I am especially curious about the upcoming season, since I stopped reading the series at book 4 (I wanted to wait until the end ... haha, that was 10 years ago) … will they even go further than the books?

Friday, April 3, 2015

Weekend Reader 14

Scrum Critics

Gilles Bowkett is quite provocative, but his points in Why Scrum Should Basically Just Die In A Fire are interesting:

Scrum covers up the inability to recruit (or even recognize) engineering talent, which is currently one of the most valuable things in the world, with a process for managing engineers as if they were cogs in a machine, all of equal value.

“Velocity” is really too stupid to examine in much further detail, because it very obviously disregards this whole notion of “working software as a measure of progress” in favor of completely unreliable numbers based on almost nothing.

Scrum gives you demeaning rituals to dumb down your work so that people who will never understand it can pretend to understand it. Meanwhile, work which is genuinely difficult to track doesn’t have to deal with this shit.

I don’t think that these critics are all inherently valid for Scrum, but I think they are valid for most adoptions of Scrum today. James Shore has blogged about the Decline and Fall of Agile several years ago:

These teams say they’re Agile, but they’re just planning (and replanning) frequently. Short cycles and the ability to re-plan are the benefit that Agile gives you. It’s the reward, not the method. These psuedo-Agile teams are having dessert every night and skipping their vegetables.

The Salary of Programmers

I find it hard to believe that there are “celebrity programmers” that make over $2 millon a year just for programming … But the Quora answers have are some interesting discussions about what drives the salary of a job on the market.

Anguar 2.0 is taking shape

The biggest news for me from ng-conf 2015 is that Angular 2 is developed in TypeScript, and that the suggested way to develop Angular 2 apps will be to use TypeScript. I guess this finally motivates me to learn this language …
To get an overview of whats coming and the design and motivation behind Angular 2 I suggest watching the Keynote from Misko Hevery. Angular 2 makes a much cleaner impression, neatly designed around some consistent concepts, compared to the organically grown first version of Angular.

Wat? - Geek Humor

The original WAT talk from Gary Bernhard is a classic. If you have not seen it, you should watch it now.

At ng-conf 2015 Shai Reznik did an adaption to Angular (the actual talk starts at 4:20):

The workforce crisis

According to that prediction the future for companies looks not so bright, the power-balance between workers and employers will shift. It will become a mayor issue for companies to attract and retain employees. As a freshly baked freelancer I think I should be happy about these predictions…

Frameworks as a recruiting investment

The article is primarily a rant about React and how the design of React is bad and that it is basically an unnessecary framework. Instead on investing on “proprietary” frameworks, we should focus on technologies that make the web better as a whole.

But the rant contains an interesting theory: Angular and React are actually a recruiting investment for Google respective Facebook:

So why release an open source Web framework at all? Because Facebook is battling Google for engineers. So you’ve got a big fight between two companies over which company is the coolest place to work, and both of them are companies that your grandparents love. How are you going to win this fight? One way is to have the hippest Web framework.

I find that theory very interesting, and it is one reasonable explanation why companies are investing in developing open-source frameworks.

Relay: Yet another Facebook framework

Speaking of companies releasing frameworks: After React and Flux and the announcement of React Native the next announced open-source framework out of Facebook is Relay.
Relay is an interesting proposition how to solve a classical “mash-up” problem: UI-elements and backend are inherently coupled, since the UI-elements render data that is provided by the backend. In a “componentized” UI the UI-elements should be decoupled from each other, so it is easy to add or remove elements from the UI. However with the traditional separation between frontend and backend, each change in the UI composition leads to changes in the backend, since the UI needs different data. Relay and GraphQL tries to solve the problem with a generic server that can serve any data requests and a protocol that allows UI-elements to delclare what data they need.
Looks intersting, however I am always afraid of generic solutions …

Versioning is Hard

I have been in many projects, where there were endless discussions about versioning and there was never a really satisfactory solution. I am relieved that it seems that there really is no good solution as the recent discussions about semver (semantic versioning) are showing:

Amazon vs. Google vs. Facebook vs. Apple

(via fime’s weekend reader)

An impresseive analysis of the leading four digital companies. A lot of information in 15 min, but if I understand the prediction correctly, we should not bet on Amazon and Google…

Friday, February 6, 2015

Weekend Reader 6

Agile Critics

The current state of agile is critizised by some more prominent figures:
Martin Fowler: Not Just Code Monkeys

Developers should not just be passive receivers of product backlog items. This is where most Agile transitions fail.



Dave Thomas: The Death of Agile
The first ten minutes are hilarious, where Dave is mocking the commercialisation of Scrum in the past and the new trend of selling “Enterprise Agile”.

Facebook announces React Native

With React Native Facebook invented yet another approach to program mobile applications in JavaScript. They promise to combine the best of native apps and the web. As far as I understood they use native components of iOS/Android (no HTML, no browser, no WebView), but they wrap them in JavaScript/JSX and use the JavaScript runtime on iOS/Android to orchestrate the application including the rendering. A very interesting approach …
However they are not chasing the “pipe dream of write once - run everywhere”. You will write apps dedicated for iOS or Android, however the programming environment will be the same. They call it “learn once, write anywhere”.

On a side note, the React Native presentation comes with a strong statement in favour of native app development and against web/hybrid mobile apps.

Yet Another JavaScript Framework with big Ambitions


Aurelia is a next generation JavaScript client framework, created by Rob Eisenberg, the creator of Durandal. Rob was for a short time part of the Angular team, but he changed his mind and decided to go his own way … the result is a modern framework that builds on ES6 and WebComponents. Sounds interesting, but sceptics might say:

The JavaScript ecosystem is broken

In the interesting article Generation Javascript the desolate state of the JavaScript ecosystem is revealed.

Not every week-end project should be made public and available through Bower. The Javascript community needs to learn to filter itself.

In the same direction goes: Why we should stop using Grunt & Gulp or my own post: Gulp is the Wild West

Client Side Templating: Good or Bad?

There has been some recent discussion about client side templating (like it is done by most modern JavaScript frameworks like Angular, Ember and also React):

The challenge was
- The problem with Angular
- Angular and templating

It reminded me of a debate from some years ago:
- Progressive Enhancement is Dead
- Progressive Enhancement: Still Not Dead,
- Progressive enhancement is faster

This time there was a very interesting reaction:
- Experimentally verified: “Why client-side templating is wrong” .
I like the conclusion that is backed up by data: For typical (line of business) web applications the advantages of the client-side rendering approach outweight the disadvantages by far. For public facing sites, where displaying initial content matters and functionality is only a second aspect, client-side rendering can be slower and optimizations with server-side rendering can be worth the effort.

You should start looking into ES6

ES6 will bring a lot of changes. JavaScript codebases will not look the same once ES6 catches on. Features like the arrow functions, template string and especially generators will change the face of JavaScript substantially.

The following videos give a good introduction to what is coming in ES6.

ES6 the future is now:



Netflix JavaScript Talks - Version 7: The Evolution of JavaScript:



To get started quickly with using ES6 now, this is a good tutorial: Javascript in 2015

Learning Promises

Promises in JavaScript are not the easiest concept to grasp. However due to the asynchronous nature of JavaScript they are a very important concept, that can and should have a major impact on the architecture and structure of JavaScript applications. I learned a lot from the following presentation: Promise-Based Architecture

Related Posts Plugin for WordPress, Blogger...