Deep dive into AngularJS – my review of “Mastering Web Application Development with AngularJS”

Tags: , , ,

AngularJS is very popular JavaScript framework for writing Single Page Applications but despite its popularity, it had surprisingly poor book coverage. There were no really good, reference book covering all aspects of using Angular and covering it in a more detailed way. But thanks to “Mastering Web Application Development with AngularJS” that is no longer the case.



The book starts with gentle introduction to the framework, we have a simple Hello World application just to get a quick glance how AngularJS works. Then in later chapters we learn how to organise project (directories layout, build system), communicate with backend, get data and display data to the user, design navigation and other usual topics which are covered in every book about all web frameworks. Luckily everything is provided in an easy to understand way with a lot of useful tips and code snippets.

And when after reading this part of book  I thought “Oh man, AngularJS is easy, now I get it ” I reached  two chapters about directives. And trust me, if someone says “I fully understand directives from AngularJS” he either is AngularJS committer/author or a liar. I knew that directives are powerful and complex, but I wasn’t aware that they are so powerful and so complex. These two chapters are a masterpiece in taking you into world of getting as much as possible from this flagship AngularJS feature. But it is so complicated topic that I had to read these chapters twice probably only to get to “I understand it more or less” level. But at least I know that every time I need to write non-trivial directive I could grab this book as a reference and find detailed explanation of how directives work and what they are capable of.

After section about directives there are easier topics like internationalization, quick look at framework internals and very useful part describing how to detect and solve performance problems of your application.

What I liked:

  • level of detail, this book is most complete reference guide to understand and leverage power of AngularJS
  • best explanation of directives and their powers
  • many useful tips from people using AngularJS in they daily job
  • very test-oriented examples
  • avoiding step-by-step tutorial approach and choosing more systematic way of introducing a framework

What I didn’t like:

  • Almost nothing about various projects around AngularJS that could be helpful during development and learning
  • Nothing about animations


Simply Must Have reference title for every AngularJS developer. The most advanced book about this framework on the market with plenty of practical suggestions. Very detailed but written in a way that is easy to follow. If you want to understand AngularJS and how to use if effectively, this book is a very good choice.

Recenzja “Oprogramowanie szyte na miarę: Jak rozmawiać z klientem, który nie wie czego chce”, czyli o tym co każdy programista umieć powinien

Tags: ,

Dear Reader
This post is in my native language as it is a review of book pyblished only in Poland. Please feel free to check my other posts which are mainly written in English.

Dość rzadko sięgam po książki informatyczne wydane w naszym ojczystym języku. Powód jest dość prozaiczny: z reguły w momencie, gdy wychodzi polskie tłumaczenie “JavaAwesomeWebFramework 1.2 w Akcji” po angielsku jest już  dostępna “JavaAwesomeWebFramework 2.0 in Action” i cała wiedza zawarta w polskiej wersji jest, delikatnie mówiąc, lekko nieaktualna.

Ale są tematy, które można nazwać, choć to dość górnolotne słowo, ponadczasowymi, bo dotyczą zagadnień aktualnych zarówno teraz jak i kilka lat temu. I do takich należy właśnie komunikacja z klientem. Temat dość ciężki, należący do tzw. “obszarów miękkich” i przez co traktowany przez programistów mocno po macoszemu. Co niestety powoduje częste napięcia na linii klient-zespół programistów, bo programista uważa, że on jest bez winy, a to klient wyraził się niejasno i jest źródłem wszystkich problemów.

I właśnie na takie problemy receptą jest lektura i stosowanie rad zawartych w książce “Oprogramowanie szyte na miarę: Jak rozmawiać z klientem, który nie wie czego chce” Michała Bartyzela.

Audiobooks Oprogramowanie szyte na miarę. Jak rozmawiać z klientem, który nie wie, czego chce. eBook. Pdf

Continue reading this post …

Agile By Example 2013 – review

Tags: , ,

I’ve just returned from my trip to Warsaw to attend 3rd edition of Agile By Example.


Here’s my thoughts, impression and notes after this event.


This year’s Agile By Example (or simply ABE) was my 2nd visit to this conference, I’ve missed only the first edition. Last year I felt really refreshed by the conference built not only around code, coding, testing and developing software. This edition was bigger and had more famous speakers, also venue was really much more impressive. Cinema (as everyone who attended Devoxx can confirm) is a great place to held any event of this type and Kino Praha was no different. Enormous screen, climatic rooms and cozy seats are things that really improve perception of the conference.

Continue reading this post …

Transparently persist and retrieve encrypted data from database

Tags: , , ,

It’s over two months since my last post here but June and July were extremely busy and intensive months this year. First, organisation of Confitura (the biggest free conference for Java developers in Europe) was taking all of my free evenings and then, after quite nervous period in hospital, our 2nd son was born. But now, I will try to blog regularly again, so please stay tuned.

In this post I will shortly describe how we can store encrypted data in our database and retrieve it as already decrypted in a simple, transparent way using Jasypt library. Our use case will be to store Twitter Api credentials so they are safe in our database but still easy to retrieve and use to post updates in our timeline.
Continue reading this post …

Taking a screenshot when UI tests written in Geb fail

Tags: , ,

This is a second post about Geb in a short time. This time we will learn how to configure Geb to take a screenshot every time our UI test fails. Image of page at the moment when test failed is often very helpful in debugging mysteriously failing UI test on CI server and can save a lot of time when trying to solve such problems.

The Problem

We need a simple way to configure Geb UI tests to take a screenshot on each test fail. This should be “add and forget” config that does not need any changes when we add more tests to our application.


We have to find some type of listener that waits for different test results and fires proper method when test fails. In TestNG we have a TestListenerAdapter so probably Geb or Spock should have something similar.
Continue reading this post …

Reusing browser instance in Geb UI tests

Tags: , , ,


When I originally wrote this post, I was Geb newbie. Despite the fact that approach presented below is valid and works, there is a much simpler solution to this problem incorporated by Geb itself and I strongly suggest using it instead of mine, home-crafted hack. All credits go to Artur Gajowy for showing me better approach.

I have added short paragraph about this simpler solution at the end of this article, probably you should go directly there :).


Geb is next-generation UI testing library that frees developer from dealing with Selenium API which is in many cases not so friendly. The most important feature of Geb is its support, or I would even say, strong encouragement to use Page Objects in your UI tests. Page Objects are also present in Selenium, but they are not as intuitive and east to use as in Geb.
But enough about Geb itself. Today I will share with you simple trick how to share one browser instance when running many Geb UI tests. This will significantly reduce time needed to execute UI tests and also reduce memory usage on test machines.
Continue reading this post …