Monday, January 12, 2015

“Soft Skills” by John Z. Sonmez

“Soft Skills” by John Z. Sonmez is a “software developer's life manual” and every reader wants to find there wonderful recipes for making more money. However author makes things different. He rather presents different ways of changing your life to a more reasonable and meaningful. The reader do not have to agree with the author but it is worth to listen what tells on different things such as:
  • Boost your career by building a personal brand
  • John's secret ten-step process for learning quickly
  • Fitness advice to turn your geekiness to your advantage
  • Unique strategies for investment and early retirement
And after rethinking them programmer can become a more conscious and aware of his advantages and weakness. There are also many recipes at the end of all the 71 chapters which can quite fast change current

And for me this book is still open. I usually do not finish book after reading it and I try to return to because one lecture is too little. The time devoted for it will repay soon. But you must be careful and patient reader.

“The Well-Grounded Java Developer” by Benjamin J. Evans and Martijn Verburg

The book “The Well-Grounded Java Developer” by Benjamin J. Evans and Martijn Verburg, with a subtitle “Vital techniques of Java 7 and polyglot programming”, has become the most important book of recent months. Mainly because I am still reading it and I am still finding many new interesting things.

This book presents many things introduced in 7 version of java such as:
  • New Java 7 features,
  • Tutorials on Groovy, Scala, and Clojure,
  • Discovering multicore processing and concurrency,
  • Functional programming with new JVM languages,
  • Modern approaches to testing, build, and CI.
And it makes it in a very reasonable, and readable way. It is worth to mention that a reader must has previous experience in Java - so this book is not intended for rookies and beginners.

I think that I do not stop reading this book and I will return to it continuously. Some parts of it (i.e.  “Class files and bytecode” and “Understanding performance tuning”) are a great source of things for further analysis.

And there are many examples which present in the best way all of the newly introduced things so readers do not receive only dry theory.

In general I recommend to read it for every rather advanced java programmer because it greatly improves skills in the area of Java, JVM and some recently introduced languages like: Groovy, Scala and Clojure.

“Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages“ by Bruce A. Tate


All of those languages are presented beginning with a genesis, followed by a short tutorial, and a rather non trivial example which is solved in this language’s best way. What is worth to mention is that all those examples present pros and cons of all the languages.

Such a formula seems to be very interesting, and indeed it is. In my case I tried to write some more code in those languages, but it is hard when a language it is not used in everyday manner.

For me the most interesting laugnage of all of them is Scala. Later I finished a course Functional Programming Principles in Scala, and started reading several books about Scala: Scala in Action and Functional Programming in Scala, etc.

In general I recommend this book for everybody interested in other languages, and paradigms than those he uses in everyday programmer’s life. Reading this book can result in starting to think in a different way.

Saturday, January 10, 2015

"Scrum. O zwinnym zarządzaniu projektami" by Mariusz Chrapko [polish only]

Książka “Scrum. O zwinnym zarządzaniu projektami” autorstwa Mariusza Chrapko doczekała się kolejnego wydania “Scrum. O zwinnym zarządzaniu projektami. Wydanie II rozszerzone” i myślę, że to świadczy o tym, że jest chętnie czytania i ludzie są nią zainteresowani.
Dlaczego?
Myślę, że odpowiedź głównie jest zawarta w tym co napisał o sobie autor: “O mnie”. Książka opowiada dość swobodnie o czymś tak bardzo poważnym jak jedna z metodyk tworzenia oprogramowania a mianowicie o Scrumie. I taka też ta książka miała być w założeniu: nietypowa, lekka i przystępna.
Z mojego punktu widzenia udało się to w 100% a nawet więcej. Aczkolwiek w sieci można znaleźć głosy krytyki i ja nie jestem zdecydowanie osobą, która nie jest w stanie osądzić czy są uzasadnione czy nie. Mnie ta książka się podoba i myślę, że autor ma dużą łatwość w wysławianiu trudnych rzeczy w prosty sposób.

Jaka jest zawartość?
Składa się ona z 12 rozdziałów podzielonych na krótkie sekcje, które w prosty sposób skupiają się na wybranym temacie.
Z mojej perspektywy każdy rozdział jest perełką okraszoną anegdotami i przykładami. Autor bardzo ładnie ilustruje role, ciekawie opisuje cały cykl życia projektu: płynnie przechodzi od szacowania i planowania sprintu do jego składowych jakimi są codziennie scrumy, przeglądy sprintu i retrospekcje.
Myślę, że każdy, kto styka się z projektami zespołowymi, powinien sięgnąć po tę książkę, bo sam sobie w scrum jest bardzo wartościowym narzędziem i pozwala sporo rzeczy uprościć.

Szkoda tylko, że scrum jest tak często traktowany na opak, że tak często jest traktowany wybiórczo, bo wtedy to już nie scrum tylko okaleczona metodyka.

Dobrym wprowadzeniem do książki jest rozmowa z autorem.

“Making Java Groovy” by Kenneth A. Kousen

“Making Java Groovy” by Kenneth A. Kousen is a “practical handbook for developers who want to blend Groovy into their day-to-day work with Java. It starts by introducing the key differences between Java and Groovy—and how you can use them to your advantage. Then, it guides you step-by-step through realistic development challenges, from web applications to web services to desktop applications, and shows how Groovy makes them easier to put into production.” This is taken from the manning.com site and it is the best summary for this book.


In general I’ve been a java developer for a couple of years. Recently I am a bit daunting with the whole Java ecosystem but of course Java is a very reliable and quite a good language (it has pros and cons but it is very, very popular). And I like it. But in recent years I started looking for something else and the result of it is Groovy. It is an interesting language: dynamic, concise and very powerful. I used it sometimes but I seldom mix Java and Groovy - I have not got idea what an interesting cohabitation can be. This book has changed my perception of both of them.


It is divided into three parts: “Up to speed with Groovy”, “Groovy tools” and “Groovy in the real world”.


Part 1 “Up to speed in Groovy”  is introduction of Groovy and why to use. It is not some kind of a tutorial but is a good source of reason why Java developer should get accustomed with this language.


Part 2 “Groovy tools” presents tools for the build process (and how we can simplify the whole process) and tools for testing. We can find introduction to such excellent tools as Gradle and Spock.


Part 3 “Groovy in real world” demonstrates how Groovy extends, improves and changes the way we develop various applications. This part presents such subjects as:
  • extension to the Spring Framework,
  • improvement on the ground of databases such as: JDBC, Hibernate, JPA, GORM and last hype NoSQL,
  • development of RESTful Web Services with recent extension such as Hypermedia,
  • full stack build web applications. We can see extension and recipes how to test in general webapps.
There are also several valuable appendixes about Groovy features and installing Groovy and developing SOAP-based Web Services.


I think that good introduction and motivation for reading this book is a presentation given by the author: “Making Java Groovy” .

I strongly recommend this book for every Java developer who wants to start using Java in different ways than those he used to.

Friday, January 9, 2015

“Apache CXF Web Service Development” by Naveen Balani and Rajeev Hathi

“Apache CXF Web Service Development” by Naveen Balani and Rajeev Hathi is a book which touches all the main and important topics related to Web Services using Apache CXF. Unfortunately it only touches main topics and it is hard to find something more deep. But it does not mean that it is bad book. I think it is worth reading because there are many valuable examples of usage of the Apache CXF.

This book from my point of view can be divided in two parts: the first about JAX-WS and the second about JAX-RS so we receive the complete panorama of development Web Services in Java.

From this book you will learn:
  • Become familiar with the different features of Apache CXF architecture and set up the CXF environment
  • Develop a simple web service using CXF-based Spring configuration
  • Build a web service using contract-first and code-first approaches in simple frontend APIs such as JAX-WS
  • Create dynamic web service clients by using various CXF frontend APIs
  • Develop web services with different transports by configuring various CXF transports such as HTTP, HTTP(S), JMS, and CXF Local
  • Create RESTful services that support JSON and XML as the message formats
  • Develop services with features such as Interceptors by implementing advanced CXF features
  • Attain configuration and dependency management by integrating web services with the de facto Spring framework
  • Unit test POJO services in a stand-alone environment as well as promote applications to the Tomcat container for production ready deployments
  • Speed-start developing web services by using CXF tools effectively
  • Basics of Spring framework and IOC container for readers who are not acquainted with Spring framework

What is worth to mention is that harder things and intricacies must be find elsewhere. My main reference in advanced topics was debugger, the main site and sometimes web (as usual).
But the most important fact about this book is that it is an excellent source of basic knowledge in the world of developing Web Services. So it fulfills its main role and I recommend reading it to anybody interested in building the Web Services in Java.  

This book can be bought here.

Saturday, October 27, 2012

resize event on IE8 (and other browsers as well)

You know that IE8 is not very fast browser? Have you experienced it?
Now I am working on a project which has to run on various browsers like Internet Explorer 7, Internet Explorer 8, Internet Explorer 9, various versions of Firefox, various WebKit based browsers like Chrome or Safari, etc. So it is quite ordinary range of browsers.
But browsers are different, sometimes very different. I do not want to write that some browsers are better than the others. For me it is easier to find a solution for a one browser than the other.
And in mentioned project there is quite a large portion of JavaScript because of requirements of clients and a fulfilment of those demands require a lot of client side scripting. Of course you can always use jQuery and jQuery UI (or other excellent JavaScript library which simplifies development in it like YUI, dojo, etc. But from my point of view when something simplifies development it cannot be efficient because of solving cross-browsers problems. So sometimes I have to give up those excellent libraries and write some pure code.
In my project somebody has experienced strange behavior: IE8 is frozen when one page was open.
So how to find what is going on?
My first attempt was to turn on and off different parts of page. And the result was that jQuery dialog was a doubtful component, but it is used on various pages and there it works. So the problem is somewhere else.
After it I turned on Compuware dynaTrace (it is an interesting tool and it is worth to get acquaintance with it). And I quite fast found that something strange was going on with resize event handler. This was quite expensive but required so it must be like it was.
The real problem was a number and a frequency of calling this handler.
There is one important thing - resize event was attached using jQuery in this way:
$(window).resize(function() { /* calling something */ });
This is usual way of adding handlers so nothing should be wrong with it. And indeed there is nothing wrong. It is worth to mention that handler was changing sizes and positions of some elements. But some browsers fire resize events when something changes on page. And such a browser is IE8. Is it bad? For me it is not. In some situation it can be good but sometimes it can cause problems. So there was endless chain of calling resize handler. How to solve this problem? I solved it by attaching resize handler in this way:
document.body.onresize = function () { /* calling something */ };
for IE8 (and lower version). And it works. This problem is quite well-known but the whole situation shows that nobody was aware of it. More about this problem and resize event can be found on such pages: