
Monthly Donations: The FreeBSD Foundation and the “Panopticon” Foundation
It’s the 15th day of the month, which means it’s time for our monthly donations. The organizations that we’re supporting this time have been selected by Grzegorz Błach.
Since Grzegorz is involved in the FreeBSD project, it was only natural for him to choose to donate to the FreeBSD Foundation, which is the organization behind that project (and which we already supported back when we were just starting this initiative of regular donations). We have been using FreeBSD on our company servers all through the nine years we’ve been in operation, and will happily continue to do so.
The second organization that we’re supporting this month is the “Panopticon” Foundation, which was formed in 2009 and is devoted to the protection of human rights in this age of rapidly developing technology. This is an excerpt from their mission statement:
Our mission is to protect human rights, in particular the right to privacy, in the clash with modern technology used for surveillance purposes. We want to analyse the risks associated with the operation of modern surveillance systems, monitor the actions of both public and private entities in this and intervene when human rights or democratic values are threatened.
We wish both the FreeBSD Foundation and the “Panopticon” Foundation all the best in their efforts.
Uncle Bob’s Video Presentations: TDD Part 2 and Being a Software Architect
It has been more than a month since our last post about the screenings of Uncle Bob’s video presentations (organized by the Łódź Java User Group) that we’ve been happily attending. During this time, we had the opportunity to watch two more episodes in the series.
The first of these episodes continued on the topic of Test-Driven Development (introduced in the previous episode) and Uncle Bob’s approach to it. He addressed a number of arguments against TDD – I won’t go into the details, let me just say that Uncle’s counter-arguments were very convincing. In addition to that, a complete example of a bowling game program written with TDD was presented (this example seems to be quite popular as a demonstration of TDD).
Our team is currently participating in one project that makes extensive use of TDD techniques. For me personally, watching Uncle Bob’s videos on this subject was a good learning experience. Of course, this won’t transform you into a TDD expert overnight – there’s a ton of things to learn about writing tests, and even more about writing good tests, but I’d definitely recommend the videos as a starting point.
The next episode in the series was devoted to the concept of software architecture, and the myths around it.
Uncle Bob presented his philosophy that software architecture is not about the selection of the right tools (e.g. an IDE), solutions (e.g. a specific DBMS), or technologies (e.g. an application framework). According to him, it’s all about the use cases (or, if you prefer, user stories) and having a good understanding of the purpose of the software that is being built.
Expanding on that idea, the source code of the software should clearly represent what it’s for. A programmer should be able to quickly identify that he’s looking at, e.g., a payroll application, rather than noticing that it uses the MVC pattern or is built upon a particular framework.
Uncle Bob believes that programmers and software architects should learn to decouple the layers of the system as much as possible, and be able to defer the decision of which framework/database to use until later in the project. The system ought to be designed in a way that allows for easy replacement of these components.
One point brought up in the video that I considered crucial was that software architects should also actually write program code. Understanding the business needs of a client is not enough to be able to design a robust software system. I think the most desired skill for a good software architect is the ability to work with both the business perspective and the technology perspective in mind.
To be honest, the overall ideology of software architecture presented by Uncle Bob seemed a bit demagogue-ish to me, but I guess that’s often the case with areas where business needs and technology overlap. If you are a programmer whose job is simply implementing parts of the system according to the provided specs, then the philosophical lecture on software architecture won’t be of much use to you, and you can probably skip this episode of the series.
Monthly Donations: Modernizr and the “Brave Mother” Foundation
We have managed to survive last month’s health crisis and are thus able to get to yet another round of our initiative of supporting open source projects and charities.
This month we are supporting Modernizr, a small library written in Javascript which detects native implementations of HTML5 and CSS3 features in web browsers. It allows us to benefit from newest technologies in our projects, while still being able to support older browsers by utilizing additional libraries and scripts that simulate new features for them.
The charity organization that we support this month is the “Brave Mother” Foundation, based in Jabłonna, a village just north of Warsaw. Since its founding three years ago, the Foundation focuses on helping mothers of children with disabilities. We wish the four founders further successes in their own struggles as well as in providing help for others in need.
Monthly Donations: GnuPG and the Animal Shelter in Łódź
It’s the middle of the month, and although half of our team is battling illness, this is not going to break our spirit and stop us from making our monthly donations to open source projects and charity organizations. This month the recipients have been carefully selected by Karol Pasternak.
We’re supporting GnuPG, the free implementation of the OpenPGP standard, which allows you to encrypt your e-mails in a fairly easy way (especially with the help of e-mail client extensions such as Enigmail). We often use it when communicating with more security-aware clients or when we need to send sensitive information by e-mail. Congratulations and thanks to the maintainers of GnuPG, g10code, and especially to Werner Koch, the original author of the program!
The charity organization that we’re donating to is the Animal Shelter in Łódź. We already supported them last year, but we know they are doing a great job helping animals and deserve more than just a one-time donation. We send our best wishes to all the people (and animals) of the shelter!
Uncle Bob vs. Mr. Spock – Video Presentation on Test-Driven Development
Not much time has passed since we blogged about attending a video presentation on clean code by Uncle Bob (Robert Martin), and we already had the pleasure of participating in another one in the series. This time the subject was Test-Driven Development (TDD).
After seeing the first video, I was already accustomed to the rather eccentric style of Uncle Bob and found his use of props and changing backgrounds entertaining rather than distracting. The new presentation had the form of a conversation between Uncle Bob and Mr. Spock, who is known for his purely logical worldview.

Uncle Bob explained how applying TDD improves the quality of source code, especially in large scale projects. He pointed out a common problem encountered by programmers working with complex systems, who are often afraid of making changes in existing (working) code, because it might cause unexpected problems. As a result, lower quality code is kept in the system.
Implementation of rigorous testing procedures mitigates these fears, since it allows the programmer who is making changes to the code to immediately run the tests and discover any problems. However, this only works when the programmer can fully trust the test suite. To make sure the tests are in fact trustworthy, the following three rules must be met:
- Any production code that is to be written must fix an existing, failing test.
- Every test must correspond to a specific missing feature or bug in the system, and must only check the minimal set of conditions sufficient for it to fail.
- It is forbidden to write more production code than is sufficient to make one failing test pass.
The advantages of the strict TDD approach are indisputable – in large projects, it allows programmers to work more effectively, it makes quality control much easier, and (as was already said) it eliminates the dangers of making changes in “old” code.
I won’t spoil the ending of the presentation and tell you whether Uncle Bob succeeded in convincing Mr. Spock of his perspective. He definitely did encourage me to try implementing TDD in a formal manner – I hope I will get a chance to do that in one of the projects that I’ll be working on in a near future.
Highcharts Legend Highlighter Plugin
We published a new project on our GitHub profile – a plugin for the Highcharts charting library, called Legend Highlighter, which adds the ability to highlight a specific data series on a chart.
The plugin was created as part of our work on a project that uses Highcharts, and it was initially supposed to only add a simple “slice out” effect for pie charts. We then extended it to support other chart types, making it more flexible and useful. We created a page with a few examples of how the plugin works with various charts (based on the demo charts provided by Highcharts) – go ahead and take a look.
The source code of the plugin is published under the MIT license, so feel free to use it any way you like, and fork it. We’re also looking forward to your feedback.
Monthly Donations: Nginx and the “KOTYlion” Foundation
Today is Sunday, so technically we’re enjoying the weekend, but since it’s also the 15th day of the month, we’re bound by tradition to do the monthly donations. This month, Krzysiek Skarbek had the honor of selecting the open source project and organization to support.
The first donation that we’re making this month is to Nginx, the BSD-licensed HTTP server which is famous for its scalability and performance. We appreciate Nginx’s qualities and often use it in our work with web projects, and have used it as a deployment server for a number of our client’s applications. We send our thanks and congratulations to the developers of Nginx, especially to Igor Sysoev, the original creator.
We are also supporting the “KOTYlion” Foundation in Lodz, who helps abandoned and stray cats. We send our best wishes to the Foundation’s crew and volunteers, and of course to all of the cats under their care!
Comments Are Lies! – Uncle Bob’s Video Presentation on Clean Code
In the spirit of expanding our knowledge on both the basic and advanced programming concepts, most of our Lodz-based team members have attended a video presentation on how to write code in clean fashion, delivered by the one and only Uncle Bob. The event was organized by the Lodz Java User Group and took place at the Department of Microelectronics and Computer Science, at Lodz University of Technology. It was sponsored by Rule Financial.
Robert Martin, known as Uncle Bob, is a recognized American consultant and author. His book “Clean Code” is a classic and recommended reading for anyone who develops and maintains source code. Uncle Bob founded The Clean Coders, a company that creates educational videos for programmers (code-casts). The videos are made available under community license and can be shown to a group of up to 50 people outside of business hours (and only one time).

Seeing the presentation was a rewarding experience for all of us. Once in a while, it’s valuable to listen to a senior guy wielding a samurai sword and ordering you to stick to the proper coding standards!
One of the things we’ve been told is that every comment in the source code is a personal failure of the programmer, because it proves that he didn’t manage to express the purpose of the code fragment with the programming language itself.
Uncle Bob underlined the importance of keeping your source files small, in the range of 60 to 200 lines of code. This was supported by real-life statistics coming from many mature projects.
The presentation also explained the difference between a class and a data structure, as well as how to use both concepts in the design of solid business solutions.
My personal favorite was the well-deserved ridicule of getter and setter methods. I always found the concept somewhat disturbing, especially when it was preached as gospel by college instructors. In my opinion, having private variables and then accessing them with methods like getFoo() demonstrates a lack of understanding of the basics of object-oriented programming.

Another enlightening observation was that a database does not store real objects coming from the business world, but merely their representation in the form of a data structure (with columns acting as public members of the structure).
The video was entertaining and filled with funny moments, but personally I found some of Uncle’s props a bit distracting (such as the magic wand). Anyway, overall it was a very good presentation.
Since we all liked it, and more presentations in the series are in need of sponsors, it’s highely likely that our company will act as one in the near future (and we’ll be sure to announce it here on our blog).
Monthly Donations: Apache Software Foundation and the “IRMA” Foundation
It’s donations time again! By tradition, in the middle of the month we’re making donations to open source projects and charity organizations. This month’s beneficiaries have been chosen by Piotr.
Our first donation goes to the Apache Software Foundation, which supports numerous open source projects. The Foundation was formed in 1999, and their flagship project is the Apache HTTP server, world’s most popular web server since 1996. We have been using the Apache server for years in our work, both as a crucial development tool, and as a platform on which our clients’ applications are launched. We also often use other software that is developed thanks to the support of the Apache Software Foundation, such as Lucene, Cordova, or JMeter. Thank you, ASF guys!
We are also sending a donation to the ”IRMA” Foundation, located in Poznan, which is devoted to promoting the idea of the use of search and rescue dogs. The Foundation is named after Crumstone Irma, a German Shepherd that helped rescue people trapped under collapsed buildings after the bombings of London during World War II. The Foundation was formed recently (it’s less than a year old), but has some dedicated people on board and is growing quickly. “Irma”, we wish you all the best in your efforts!








