Last week was a great week for ZeroTurnaround. On Monday we grew by 10% head count wise and I plotted the trend. It was humongous. My calculations showed that we will reach 600 billion people by the end of the year. This introduced a lot of questions and couple of interesting threads. Also it meant that our first intern ever hired had a lot more on his plate than first expected. I’ve compiled one of the public threads just for you guys. It tells you how and why we have a document Will ZeroTurnaround reach Gravitational Singularity and also to state that we actually don’t pack people together 100% flesh to flesh.

Blog

“GeekOut is the coolest and most laid-back event in the Baltics for me so far. It was One day, One track, One crowd in 2011. Highly interested coders, great medieval setting in Tallinn and the great care of the ZeroTurnaround conference crew make this one of the best kept conference secrets in Europe.”
- Peter Neubauer, Neoj4, speaker from the first ever Java Developers Conference in Estonia.
What’s happening at GeekOut 2012?
You better get ready for a tech-vacation in the capital of e-Country Tallinn, where startups grow on the trees and developers are productive (thanks to JRebel). Ed Burns, Kirk Pepperdine, Jaroslav Tulach, Matthew McCullough and more speakers are there for your benefit, helping you get new angles and views. Not to mention having some time to discuss that with your team-mates, other devs around Europe.
We had developers from over 30 Estonian companies+some Finnish. We had Peter Neubauer, John Davies, Martijn Verburg, Joonas Lehtinen and Alex Snaps as the speakers and over 130 developers attending. I bet they all remember a full day tech-talk topped with beer and pizza? Having a successful conference and receiving feedback that the event should be larger this time, we set the date for June 14th – 15th in 2012 and can list over 10 Java experts from around the World to come to little e-Estonia. It is an ambitious plan, that you can be part of in fulfilling by attending the conference.
Six reasons to come if you are a developer:

- 12 talks to attend a choose from during two days;
- Highly technical talks to learn best practices;
- Get inspiration at evening party&networking by meeting speakers, other developers over a beer and discuss how you can improve your work;
- Get time off to discuss work in light of new ideas with your own team;
- Cloudbees, Vaadin, Odnoklassniki.ru and more to come to show off their tools and projects;
- You can make it into a small vacation, exploring the beautiful Tallinn over the weekend.
Four reasons you can tell your Team Lead or HR Specialist to send you to GeekOut:
- The conference will increase developers motivation and productivity;
- Developers can learn best practices and get ideas;
- A chance for your team to take time and talk to other team members, field experts and – colleagues getting ideas how they can improve their work, what they are doing wrong and what else could be done to add value;
- Estonia is a close by and reasonably priced country so you can send more developers to get trained then with a regular conference.
Don’t miss out the GeekOut 2012!
During the season of holidays, even the code-geeks lift their heads from the computer and ask themselves: what is it that I am doing and why am I doing it? At ZeroTurnaround, the answers came quickly when we had a all-hands-aboard team meeting in Estonia last week.
The answers were quick to come (hey, we need to get back to our code, not fool around and do nothing!), such as that ZeroTurnaround has a product that actually gives value and is needed by our customers (have you heard of JRebel?), that our team consists of intelligent people who take responsibility for their work, and on top of that we can still have tequila shots at work parties. There was something else that still is ringing in my head like a Christmas Carol, which is what Oleg from the LiveRebel team said: “When I look at Lauri’s or Rein’s written code, I think to myself that it’s a work of art!” All in all: We make art with passion in our office.
We hope that our passion for making Java fast and fun helps you write gorgeous code, and inspires you to turn your work into an piece of art. Have a wonderful holidays and a great New Year!
President Toomas Hendrik Ilves of Estonia is a tall, impeccably dressed man with a bow tie whose 45-minute visit to our bigger and brighter offices might at first seem intimidating to a group of geeks. Luckily, President Ilves has a bit of inner geek of his own–the visit marked an occasion to celebrate ZeroTurnaround’s contributions and impact on Estonian economy and awareness and reach of Estonian IT in the world. ZeroTurnaround’s innovations are making waves in the global IT world by winning three awards in a single year (the JAX Innovation Award, Duke’s Choice Award and the Estonian Innovator of the Year Award), and growing the team size by 250% in 2011 alone.
So what did we talk about?
Well, President Ilves is not a JRebel user, so we described our first product line with gusto and snacks, then described LiveRebel and how we see the future of continuous deployment (and continuous delivery). More related to his interests, co-founders Jevgeni Kabanov and Toomas Römer discussed ZeroTurnaround’s global markets, spreading the good word and raising awareness about the Estonian IT sector and e-Estonia, our drive to hire the best developers in the Estonian market, and the company’s ambitious plans for 2012 and beyond.
Thank you, Mr. President, and hope to see you soon for a sauna visit! ;-)

Morning coffee between the man who created JRebel, Jevgeni Kabanov and The President of The Republic of Estonia, Mr Toomas Hendrik Ilves

From Tartu to the World: Mr President's visit was a huge honor to ZeroTurnaround's team and their efforts
Pictures by Rein Raudjärv
ZeroTurnaround has become approximately 250% more geeky in 2011, according the our latest numbers. We grew from 14 to 35 team members, expanding our offices in Tartu, Tallinn, Prague and Boston. It’s fair to say that these last months have seriously been focused on building Team ZeroTurnaround! Growth like this can only happen when there is something attracting new, talented developers (maybe it’s our Jobs 2.0 page?). Developers at ZeroTurnaround are looking for a challenging, exciting job environment, fueled by innovative product development, rapid growth and, occassionally, beer. We like to think that this is a chance to be part of creating something new, something that makes a world a better place.
But let’s face it, the people and the working environment also matter. This year, we have been fortunate enough to go on a team vacation to Crete and opened new offices in Tartu and Boston. On 11.11.11, we had another party to test out the capacities of the Tallinn office, including our brand new sauna and considering the party went on until the wee hours, we were happy to consecrate a new hub for the best Java developers in Estonia. Here are some pictures:

Anton and Kristina, in charge of Tallinn team & office

We like to do things differently :)

The guests of ZT geek-party listening to Jevgeni’s famous cool-speech

We work hard and now we have a chance to relax thoroughly in our sauna as well

It’s all good, when beer is at hand
Today, we are 35 people from three countries (and many more nationalities). What will the year 2012 bring? Ain’t the sky the limit?
If you want to be part of the most innovative company in Estonia, see vacant positions in ZeroTurnaround here.
Pictures by: Liisi Toom, Aleksandr Motsjonov, Rein Raudjärv
Wow – we won again!!
ZeroTurnaround received the honor of being recognized as the Estonian Innovator of the Year award for 2011. It is heart-warming to be recognized in the country the product is developed.
Each year, Enterprise Estonia, the Estonian Chamber of Commerce & Industry and the Estonian Employers’ Confederation give out awards for Entrepreneurship and Innovation. IT is definitely an important industry sector in Estonia, and also very competitive areas in today’s market. We are happy to have competed so well among other innovative Estonian firms, and thrilled to have received the award.
Our thanks goes to the jury for the prize and our best regards to the other nominees! Congratulations to Martin Koppel, on the left of Jevgeni in the photo, and Fortumo for winning the main prize, Entrepreneurship Award 2011!
It’s been quite a year – just a few months again, we received a JAX Innovation Award for JRebel, which was named “Most Innovative Java Technology” or 2011. In 2009, we got a Jolt Productivity Award. What could possibly be coming next?
Innovation is in our blood ;)!
Here you can see the clips of other nominees and the award ceremony (In Estonian).
While planning my trip to San Francisco for JavaOne (catch me there for a beer), I saw that there is a Jenkins User Conference coming up October 2nd, 2011, just prior to JavaOne. As I was signing up for the event, I started thinking that we’ve been using Hudson/Jenkins for years now. Through the years, certain Jenkins features/plugins have really paid off and been life savers for getting higher-quality software out quicker. So I thought, why not share this with you? Here is a list of my own and the team’s top 10 must-have Jenkins features/plugins.
GeekOut Estonia 2011 is over and it turned out great – we seldom see so many geeks in one place in Estonia! It was an awesome time for everyone – before the day was half-way done we already wanted to try out a dozen new concepts and frameworks! See what other people had to say about it on Twitter.
(more…)
The major features are:
- Full support for reloading changes to EJBs 3.x. Includes adding new components and adding @EJB references on-the-fly, across Weblogic, WebSphere, JBoss and Glassfish.
- Support for anonymous class reloading. Previously, adding a new anonymous class would cause the other ones to be renamed (Class$3 -> Class$4) and JRebel would complain that a superclass has changed and fail to reload. Never again.
- Instrumentation/HotSwap integration. Although JRebel always used a -javaagent to bootstrap, it hasn’t actually used the Instrumentation API before. Now, on Java 5 or later, we make use of this functionality to minimize the runtime performance overhead and to further improve the debugging behaviour. This also lays ground for some future improvements.
- Full Seam 2.x support. Now you can add new components and wire them in on-the-fly. Enjoy!
- Better integration across the board. Hibernate Validator and Spring Security are the biggest names, but we have severely expanded our test suite with support for 35 frameworks, not counting the server, standard and miscellaneous integrations.
And of course a score of smaller features and fixes as usual that you can find in changelog.
Well, what are you waiting for? Grab it now!
For couple of weeks now, I’ve been looking into Continuous Integration with multiple branches with Jenkins/Hudson. I’ve searched the intertubes, talked to friends, colleagues and other nerds out there.
My greatest discovery was that although CI is about committing, pushing and getting feedback often (i.e. the CI cluster provides you with feedback that your workstation could never give you in the same amount of time), the true purist CI actually has one more requirement — that the team needs to work on the same baseline.
I wish there was some kind of tooling for not-so-purist CI and I’ll try to explain why…
First, the non-technical view of the problem
I work on products that are distributed as downloads. After a person downloads, it is up to them to update to a newer version if they want to. So I can’t push out quick fixes that get deployed to clients automatically — the software will inform the user when a new version is available, but there are no guarantees that they will upgrade.
This means we need to take extra steps in our quality assurance (QA). In contrast, if your product is offered as a service then most of the time you can push out changes and they are visible to all clients out there. No such luck for me. This limitation puts extra attention on QA.
We have created two main branches, DEV and STABLE. DEV is the mainline that we share. The CI cluster provides extra quick feedback on this branch. It runs a test-suite of our software, testing it on a handful of JEE containers out there (e.g. Tomcat, JBoss and Websphere series). If the tests succeed, then the code is pushed to the stable branch. The CI cluster then runs the test-suite on 50 container versions.
This approach would take the pressure to have a machine or OS that supports so many test environments away from devs. They get quick feedback if their push has broken any container that they did not test locally (e.g. “Did my Resin changes break anything on Glassfish?”)
Okay, I seem to have stuff figured out, so what’s the problem then? Well, if developers want to live in their own branch for a while and still get the benefits of automated testing on a large variety of environments, then they won’t be able to do that. They are not CI engineers.
Technical view of the problem
Jenkins/Hudson uses a notion of jobs. A job is something that is usually tied to a VCS URL and then gets built (run) when there is a change in the VCS repository. The build can do anything, from executing shell scripts to sending out tweets of the status of the build.
The build can produce all kinds of results. In our case, we use Maven and Maven artefacts are the results. The artefacts are stored in one repository for the DEV branch, and in another for the STABLE branch. This is because multiple DEV branch jobs can re-use prebuilt snapshots that won’t conflict with STABLE snapshots.
There are two set of jobs. The DEV jobs and the STABLE jobs. There are two because the VCS urls differ and the maven repositories differ and now we have a problem. The two set of jobs needs to stay in sync. So if we change a job in DEV (e.g. add a new step), we’d want to change a job in STABLE and vice versa.
If devs want to live in their own branch, they need to sync any jobs that they duplicate. And now the job management is just getting out of hand:
- They start the duplication of jobs
- They try to keep them in sync
- They start debugging the jobs (e.g. “Why is there a port race between SAP NetWeaver and OC4J9?”)
- The delete the jobs after integration
Instead of developing the feature, the dev is now becoming a CI engineer. Shouldn’t he just get fast feedback from a large variety of environments without any hassle?
Solutions
The many posts that I’ve read through suggest writing the tooling for branch management. Shell scripts and ANT tasks that duplicate jobs on the filesystem level are popular. Scripts using the Jenkins/Hudson API are also a good choice.
But what if I don’t want to write another set of tooling? This is something that should be provided by the CI software I’m using. I’m sure I’m not the only one out there using branching and wanting CI support for it.
The CI purists will say that I’m doing it wrong and that I should either drop the feature branches or live with the problems. But does it have to be that way?
I’d really like to see a Jenkins plugin that will understand multiple branches, multiple Maven repositories and just deal with the problem. If CI necessarily implies a single branch, maybe we can change the name of these servers to Continuous Integration and Build Automation servers and we could throw out the implication?
We’ll have to wait and see…
Materials used
- Multiple Branches Best Practices – post to Jenkins list
- Is it possible to handle multiple branches where some jobs should run on each one without duplicating – post to Jenkins list
- Parallel Development with Branches – post to Jenkins list
- Configure or Create Hudson Job Automatically – stackoverflow.com
- Continuous Integration with Multiple Branch Development – stackoverflow.com
- Handling Multiple Branches in Continuous Integration – stackoverflow.com
- Continuous integration – Martin Fowler
- Continuous integration – Wikipedia






