Sunday, February 14, 2016

Weekend Reader, Week 6: Bricks

Software is not made of bricks

Once you understand that software is not a simple pile of bricks, you understand that the minimum level of competence required to contribute positively to a project is non-trivial.

I think this essay should be a “must read” for anyone involved into software development. It shows the problems with the widespread mentality that developing a piece of software is like building something fairly simple out of bricks.
One point which shows the fundamental difference between laying bricks and software development particularly stuck with me: Skilled developers typically come up with solutions that are simpler and consist of less code than less skilled developers. This does not fit a “brick mentality”, where you have a fixed amount of bricks to move.

ChakraCore is now Open-Source

The JavaScript engine by Microsoft is now available under the MIT License at the ChakraCore GitHub repository.

There is already a pull request to make Node.js run on ChakraCore. And there is a new node-chakracore repo under the Node.js Foundation. Unfortunately it seems that it is only working on windows for now …

Project Raider

JetBrains is building a cross-platform C# IDE … the missing piece in true cross-platform .NET development.

Angular 2 versus React: There Will Be Blood

Of course the title is link-bait and the article is provocative. But it is still a good comparison between the different approaches and concepts used in Angular2 and React.

Video: Be Predictable, Not Correct

The talk gives a good overview to different approaches for data-binding in current web-frameworks. It also explains the concept and benefits of using a virtual dom.

Piracy in online education

There was a lot of money to be made if you got into online education early: Scott Allen earned over one million dollars in 2013 from his Pluralsight courses!

Today the landscape looks not that promising any more… especially Udemy seems to attract/enable piracy and price-dumping:

The Sad State of Web Development

The web (specifically the Javascript/Node community) has created some of the most complicated, convoluted, over engineered tools ever conceived.

A very critical view on the current trends in web development. The author seems pretty frustrated … but he has some points.

Shields Down

Happy people don’t leave jobs they love

An accurate analysis how people get to the point where they quit their job. I have gone through that process many times in my career …

Coders Without Clothes

Without comment …

Funny: This is what happens when you reply to spam email

If you like it, here are more scam baiting stories: 419 Eater

Tweets of the week:

Saturday, February 13, 2016

Trainings and Courses Update

The first month in 2016 was very busy in regard to my trainings. I updated my courses to reflect the latest trends in web development:

I held a 3 day course at SBB for JavaScript and AngularJS. I updated this course to contain a module about the ES6/ES2015 language and corresponding tooling with Webpack and Babel.

I also updated my course module in the CAS “Mobile Application Development” at the University of Applied Sciences. Besides HTML5 as a platform for mobile development I am also teaching an intro to Ionic and React Native. These frameworks show two different approaches for mobile development that are using current web technologies.

In February & March I will run two 3-day in-house courses about JavaScript and Angular development at ELCA.

In April I will run a 4-day in-house course at Puzzle. In this course I will compare Angular and React/Flux and it will also contain an intro to Angular 2.

Please contact me, if you are intersted in a course about those latest trends in web technologies.

I will also continue to offer public courses in 2016:

At DigiComp my next course “Frontend-Entwicklung mit AngularJS” is scheduled for April.

At BBV Academy my next course “Frontend-Entwicklung mit JavaScript & AngularJS” is scheduled for May.

Sunday, January 3, 2016

Weekend Reader, New Year's Edition

Microsoft’s modern JavaScript Engine is going Open-Source

Chakra, the JavaScript Engine that powers Microsoft Edge is going open-source!
This is very interesting, since Chakra is currently the fastest JavaScript engine and the engine with the widest ES6 compatibility.
Microsoft already showed that Node.js can run on top of Chakra. I am curious if this will be a scenario picked up by the open-source community …

However right now, the step to open-source has not yet happened. According to the announcement it will happen “after the holidays”.

Visual Studio Code is Open-Source

Open-source, once scolded as “cancer”, is becoming the new black at Microsoft. The sources of Visual Studio Code are available on Github.
Also Visual Studio Code now supports extensions.

Exploring the new .NET “dotnet” Command Line Interface (CLI)

Apart from the fact that .NET Core and ASP.NET 5 will be cross-platform, Microsoft is also working on a simple cross-platform CLI for .NET… It very much looks like Node/NPM!
I am really looking forward when .NET development becomes as accessible as Node development is today. With the possibilities to develop .NET on Mac/Linux and to run .NET application on Linux servers. Combine the elegance of C# and the dynamic compilation of ASP.NET with the simplicity of this CLI and you get a package that looks really productive for all kinds of enterprise applications … hard times for Java :-)

Free eBook: Modern Java EE Design Patterns

Hmm… I did not read the whole book, but I rather skimmed it. In my opinion this book is not about Java EE. It is about microservices, and it claims that microservices are the “modern” way for developing enterprise applications. It shows some interesting patterns for implementing applications with microservices.
But it also shows that Java EE does not offer much for microservices and in appendix A it lists a set of technologies that are (in my opinion) better suited for implementing micorservices.

Free eBook: Professor Frisby’s Mostly Adequate Guide to Functional Programming

A very readable introduction to the concepts of functional programming in JavaScript. Currying, functional composition, functors … learn all those constructs and many more.

Apps: The iPad Pro has an App Store problem

Apps on iOS sell for unsustainably low prices

I really like my iPad Pro. For most scenarios it replaced my iPad Air (execpt reading in bed). However the app landscape of optimized apps for the iPad Pro really is disappointing. This article has an explanation why.

Funny: Bret Victor - The Future of Programming

A really interesting presentation from 1973 … or is it? Funny in a geeky way but also very insightfull.

Tweets of the Week

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.

Related Posts Plugin for WordPress, Blogger...