Blog

Back to Blog

PlayFramework at Confitura 2011 conference

Details

Organizer
Warsaw JUG
Location
Warsaw, Poland
Date
2011.6.11
Language
Polish

Introduction

I have given a speech titled: Play!Framework – ewolucja w świecie aplikacji webowych (Play!Framework – evolution in web applications world) dedicated to a Java/Scala web development framework, showing participants some advantages (and disadvantages) of this tool. Play have already been there for a while, so most of you have probably already heard of it.

Presentation was 60 minutes long and I assume there were ~150 participants. I used Prezi as presentation tool and official Play’s screencast to present basic coding patterns.

Abstract

PlayFramework is a young web development framework for Java and Scala. It throws away some fundamental Java world solutions (like Servlets) in advance to provide extremely robust development environment. This presentation answers to couple basic question each developer would ask about a new framework. It shows PlayFramework’s MVC fundamentals, dynamic reloading and build system.

Full stack web development framework is a subject more for a training than a short lecture, so many topics will be at most just mentioned during 60 minute talk. That’s why I let participants choose topics they want to hear about. Seeing a round of options with small sub-presentation connected to each seemed a great idea for this purpose.

Survey

About two weeks after I got a survey filled by participants. Thanks to that I could see how bad idea was to use official PlafFramework’s screencast. On the other hand the second part of the lecture felt a lot better.

Video

You can see the full video at Vimeo.

Here I am at Cofitura 2011
Huge public during the long conference day
SPOINA - really good party after

Comments

Back to Blog

4Developers 2013 - konferencyjne notatki

W tym roku wyjątkowo mało szumu było wokół 4Developers. Aż dobrze, że miałem zapisane w kalendarzu, kiedy jest, bo bym przegapił :-) Zgłosiłem swoją prezentację na długo przed konferencją, ale dopiero na dwa tygodnie przed została zaakceptowana. Nie mniej jednak się cieszę, że dostałem możliwość zaprezentowania RoboSpocka.

4dev_inter_PL

Wyruszyłem zatem z rana na ulicę Bobrowiecką, do kompleksu znanego choćby z dwóch (czy więcej?) edycji Javarsovii/Confitury. Po odebraniu skromnego pakietu rozstawiłem się w małej salce przygotowanej pod ścieżkę mobile, aby tuż po 9:00 móc zacząć swój wykład. 4devs-robospock Niewielkie grono słuchaczy przeszło ze mną ścieżkę od podstawowego schematu testów (niby) jednostkowych dla Androida, poprzez podmianę klas w czasie runtime aż do Spocka w połączeniu z Robolectric. Slajdy umieściłem na moim GitHubie, a kod, który pokazywałem jest do zobaczenia na stronie projektu, oraz kolejny projekt Open Source, który z RoboSpocka korzysta do zobaczenia tu.   Następnie wybrałem ścieżkę Python a tu czekał na mnie bardzo fajny wykład Bartosza Kupidury o OpenStack. Podobało mi się bardzo początkowe rozróżnienie pomiędzy chmurą a wirtualizacją! Prezentacja bardzo dobrze ułożona, a prowadzona dynamicznie i luźno. Dominowały opisy i schematy zamiast kodu pythona, a więc nawet ktoś niezwiązany z językiem mógł skorzystać. Poza tym Bartek pracuje z OpenStack na codzień w Allegro, jeśli dobrze zrozumiałem, więc mówił o doświadczeniach, nie tylko o teorii, co sprawiło, że łatwo było mu odpowiadać na pytania, nawet te już bardzo związane z konkretną sytuacją. Neo4J jest tematem, o który już kilkukrotnie się ocierałem, ale coraz bardziej mnie ciekawi, zwłaszcza, że w Polidei ostatnio niektóre projekty bardzo pasują do abstrakcji bazy grafowej. Również i ta prezentacja zrobiła na mnie dobre wrażenie. Temat usłany przykładami i kodem. Polecam Grzegorza Godlewskiego i ten temat. 4dev_slawekA na chwilę przed obiadem wybrałem prezentację Sławka Sobótki o tym, że model jest wszystkim czego potrzebujesz. Sławek nie ma łatwo prezentując swoje tematy, ponieważ wszyscy, którzy już mieli przyjemność wcześniej uczestniczyć w jego wykładzie, stawiają mu wysoko poprzeczkę (w tym ja po 33rd Degree i ”Czego mama nigdy nie mówiła Ci na temat testowania automatycznego”). Nie mniej jednak udaje mu się utrzymać ten wysoki poziom i słuchaczy nigdy nie brakuje. Dla mnie bardzo wartościowy był przykład z przepełnieniem modelu i wydzieleniem wyliczania podatku z zamówienia. Z każdym wykładem o DDD, modelu czy lekturze (właśnie rozpocząłem DDD Evansa) zbliżam się, aby na poważnie spróbować tego podejścia w real life projekcie. 4dev_lunchUfff, po takiej dawce wiedzy cieszę się z chwili wytchnienia i lunchu. Posiłek to ostatnio gorący temat konferencji. Niby nikt nie przychodzi po to, aby się najeść, tylko aby się nauczyć, ale negatywne wrażenia przy jedzeniu potrafią solidnie popsuć wrażenia z całego dnia. O zgrozo, solidna kolejka daje dojść głodowi do głosu, więc już po otrzymaniu ciepłego posiłku wchłonąłem go z wilczym apetytem. Tu pewien minus dla organizatorów. Na bonach obiadowych podana była godzina przyjścia, z tym, że część wypadała w innych prezentacjach :-( Na szczęście była to tylko sugerowana godzina i dostałem swój posiłek trochę później. Ogólnie ocena obiadu: 4 (w skali szkolnej). 4dev_maciej Zaraz po lunchu udałem się do Maćka Górskiego znów w ścieżce Mobile na wycieki pamięci oraz nowe API map Google. Maciek w pierwszej części miał zestaw anty-patternów i popularnych błędów popełnianych przez programistów Android. Co było najlepsze, bardzo często podawał źródła, dyskusje, skąd brały się przykłady, a także bardzo dobrze rozumiał o czym mówi. Może nieco gorzej z przekazem, bo (może głównie przez to, że nie jestem Androidowcem) ale miałem problem ze zrozumieniem niektórych use case’ów. W drugiej części także bardzo fajnie o nowym API. Luźna atmosfera i sporo żartów pozwoliło na z dystansem spojrzeć na API (jeszcze nie do końca stabline ;-)). Duży plus za te dwie krótkie prezentacje. Autor obiecał umieścić materiały na https://github.com/mg6maciej I znów ścieżka Python. Tym razem problem mi bliski, czyli skalowanie aplikacji (ostatnio właśnie pracujemy nad pomiarami wydajności i optymalizacją apki Pythonowej opartej o Heroku). Prowadzący to Marcin Lulek, kolejny praktyk, a więc słucham z przyjemnością. Zaczęło się od wstępu (i poparcia wiedzy prelegenta pracą nad portalem z 5mln użytkowników). Następnie prezentację ogarnia chaos - narzędzia mieszają się z praktykami czy use case’ami. Brakuje mi jasnej ścieżki prezentacji. Wydaje mi się też, że zbyt szybkie przeskoki między tematami dla początkujących i zbyt podstawowe tematy poruszane jak dla zaawansowanych. Ogólnie pierwsza słaba prezentacja tego dnia. Czułem, że Marcinowi nie brakuje wiedzy, ale zabrakło lepszego sposobu jej przekazania. Na sam koniec największy hit pod wodzą Jarka PałkiArchitectural Kata. Otrzymaliśmy od niego zamówienie na system i mieliśmy szansę sprawdzić się w zespołach kilkuosobowych układając i definiując architekturę. Jarek zaś wystąpił w roli klienta doprecyzowującego wymagania. Bardzo mi to dużo dało i pomogło rozruszać szare komórki - super pomysł! Podsumowanie W porównaniu do zeszłorocznej edycji byłem bardzo pozytywnie zaskoczony! Zmieniło się wiele na plus i z pewnością będę wyczekiwał przyszłorocznej edycji. Dziękuję organizatorom za przygotowanie bardzo dobrego eventu! W pigułce Na plus:
  • listwy w salach
  • bogata agenda
  • poziom prezentacji
  • sprawny net
  • niezbyt wypchane sale
Na minus:
  • kolejka po lunch
  • miejsce (jednak ciasne korytarze, sypiące się łazienki)
PS. Wybaczcie nieco chaotyczny styl. Pisane nieraz w trakcie prezentacji pod wpływem chwili :-)

Comments

Back to Blog

Wrażenia po 'Wprowadzeniu do OSGi' Jacka Laskowskiego

Na ostatnim spotkaniu Warszawskiego JUG założyciel tej grupy prezentował temat niezwykle ciekawy, choć często niedoceniany - OSGi. Nie mam większych doświadczeń z tą technologią (mniejszych też nie), więc tym bardziej ucieszyłem się na wieść o ‘wprowadzeniu’ do tematu. Wykład zasponsorowała firma ATM SI, której jak widać zależy na pracownikach z najwyższej półki, skoro zdecydowała się o nich pokusić wśród JUGowiczów. Podobało mi się wprowadzenie o firmie i projekcie. Prezenter wziął sobie do serca uwagi dotyczące prezentowania ofert i było bardzo technicznie. Mnie zainteresował! Później Jacek przystąpił do wykładu i rozpoczął od wytłumaczenia nam, że jeśli jego wykład nie sprosta naszym oczekiwaniom, jest to wina naszych zbyt wygórowanych oczekiwań :-) Myślę, że wielu z nas zna już Jacka dostatecznie i zna jego sposób prowadzenia prezentacji, który bardziej od wyczerpania tematu ma na celu zachęcenie słuchacza do dalszego zgłębienia wiedzy samodzielnie. Kto inaczej zakłada zawsze wyjdzie zawiedziony :-) 2013-02-05 18.23.13 W dalszej części po pobieżnym ustaleniu położenia tematu prezentacji  w całej dziedzinie Jacek przeszedł do przykładu, który już miał mu towarzyszyć przez całą prezentację. Dowiedziałem się między innymi czym jest Enterprise OSGi w wersji IBMowej i co ma nam do zaoferowania. Szkoda, że nie wyszedł niemal żaden z przykładów, co ewidentnie wybijało Jacka z rytmu. Ten znów także często wdawał się w dyskusję z pojedynczymi słuchaczami, co często bywa zgubne (nie dobrnęliśmy do planowanego końca), w tym jednak przypadku uważam, że bardzo pozytywnie wpłynęło na przebieg wykładu, co widać choćby po komentarzach do wykładu. To spotkanie obfitowało w nagrody. Dzięki firmom wspierającym JUG - centeractive ag i JetBrains mieliśmy do rozlosowania kilka książek Practical Unit Testing Tomka Kaczanowskiego oraz licencję Intellij IDEA i retrospective log analysera. Także dzięki Jackowi za trafne pytania książką o Enterprise OSGi in Action nagrodzony został jeden z uczestników. Co za spotkanie! Po spotkaniu dobrą tradycją jest wyjście na piwo i kontynuacja tematu, a więc mogliśmy nacieszyć się dyskusją w klubokawiarni Mam Ochotę. Wszystkim, którzy po wykładach uciekają do domów polecam wybranie się choć raz aby zobaczyć co tracicie :-)   Tyle relacji ze spotkania. Dzięki Jacku za fajny wykład! Do zobaczenia na NameCollision (jutro) i Rozmowach kwalifikacyjnych na JUGu (wtorek).  

Comments

Back to Blog

Warszawski hackathon - NameCollision

NameCollision to nowy, niezależny hackathon dla warszawskich programistów, który odbędzie się w piątkowy wieczór, 22 lutego w centrum stolicy. Organizowane przez Google Developers Group i Warszawską Grupę Użytkowników Java wydarzenie ma na celu stworzenie sprzyjającej atmosfery dla dużej grupy programistów i pasjonatów. Luźna formuła hackathonu powinna pomóc w możliwie najlepszym wykorzystaniu czasu na programowanie oraz poznanie ciekawych osób z programistycznego środowiska. http://techcrunch.com/2011/05/21/the-hack-is-on-at-the-hackathon/

Jeśli jesteś zainteresowana(y) udziałem, zajrzyj na stronę hackathonu gdzie możesz zobaczyć obecną listę uczestników, przejrzeć propozycję tematów i oczywiście zapisać się na wydarzenie. Jeśli spodobał Ci się któryś z opisanych już projektów, możesz na tej stronie do niego dołączyć, lub, jeśli wolisz inny temat, zaczekać z wyborem do samego hackathonu. Jeśli masz pomysł na własny projekt strona ułatwi Ci przybliżenie innym uczestnikom Twojego pomysłu i znalezienie chętnych.

Aby dzielnie pracujące głowy mogły się skupić nad problemami programistycznymi, a nie nad bardziej przyziemnymi sprawami, zapewnione będą przekąski, ciepły posiłek i napoje, a nawet domowe piwo warzone przez jednego z najlepiej rozpoznawanych domowych piwowarów w Polsce - Pawła Leszczyńskiego. http://www.flickr.com/photos/gijsbertpeijs/7988262046/ Aby docenić ciężko pracujących hackerów, a z drugiej strony nie zamienić wieczoru w zawody za najlepsze projekty będą na Was czekały 3 bony na książki w Amazonie, oraz w większej ilości Raspberry Pi - komputery niewiele większe od karty kredytowej. Do zobaczenia!

Comments

Back to Blog

A deep dive into Tapestry Plastic – adding behavior to a method

In the first part we’ve prepared an environment for work. Now it’s time to do some basic stuff with Plastic. The most basic AOP example often used in hello world examples is logging and we’re gonna do that as well. To follow the work you might wanna fork from GitHub project. So first to run a project we use Gradle, here’s the configuration [gist id=”4414700”] I’ll create a simple nothing-producing method:[gist id=”4414801”] Next let’s prepare a specification, that tests whether our method actually has logging behavior. You don’t need to know Spock to understand it. I will externalize creating a class reference to a method, so it’ll be easier to add Plastic code in the next step. [gist id=”4414910”] Of course no such behavior is there at the moment, so the spec fails:[gist id=”4414897”] Let’s add Plastic code now. To create an object of modified class we need to prepare org.apache.tapestry5.plastic.PlasticManager. This we may build using static builder methods in it’s class, e.g.[gist id=”4432985”] Next there’s a place for a delegate (meaning class transforming delegation). For this we will use org.apache.tapestry5.internal.plastic.StandardDelegate adapter, which brings org.apache.tapestry5.plastic.PlasticClassTransformer interface to Delegate interface. So now we end up needing a transformer, inside of which we’ll use an advice (org.apache.tapestry5.plastic.MethodAdvice). See creating and putting them together in the following snippet:[gist id=”4433014”] As you have seen by now, Plastic is a pretty high level, object oriented and well designed tool for modifying classes. Although creating a simple case of adding an advise to a method requires a lot of boilerplate code. In next part we’ll go deeper into the Plastic API.

Comments

Back to Blog

A deep dive into Tapestry Plastic - part 1

End of the year is coming and I’m starting the next year with talk on WJUG about Plastic - code generation tool from Tapestry author - Howard Lewis Ship. It’s definitely time to start preparing. I was impressed by authors talk about the library you may see here - http://www.infoq.com/presentations/Have-Your-Cake-and-Eat-It-Too-Meta-Programming-Java So let’s start by jumping to the source… and there’s a sad surprise - it’s not that easy to find the source :-( Author said Plastic is separate from the rest of Tapestry 5, but all the links for GitHub repo leads to 404 page. It seems that the idea of an independent library is past. But there’s hope! On Lewis’ GitHub page there’s a repo named plastic-demos. Fast git clone and you may see it’s a Gradle project with Spock unit tests presenting simple Plastic functions. Trying gradle test would be natural next step, but still no luck there: [gist id=”b6115bf9b9758b1a2980”] Missing dependency, huh? Let’s take a quick search in http://mvnrepository.com/ and there it is, http://mvnrepository.com/artifact/org.apache.tapestry/plastic/5.3.5. I’m changing version in build.gradle to ‘org.apache.tapestry:plastic:5.3.5’ and it worked: [gist id=”4df97a8cf51325afde4c”] So where do I find the sources? Well, it wasn’t hard to guess, it’s inside Tapestry source package, which actually isn’t that nice, because the promise was, it’s a separate project. Now that we have the source and some examples we can have some more fun… in the next part. One thing you can see already is that Howard L. Ship is using all the new, cool stuff to develop (Spock, Gradle), which makes it so much better experience to use the code, than it would be using old mainstream tools like Maven2 or JUnit.

Comments

Back to Blog

Hurray to 33rd

So it starts like last year’s. Woo-hoo I love 33rd Degree conference. I could copy most things from last relation, so let me focus on couple concrete talks. This is my Top 5: 5.  Robert C. Martin Demanding Professionalism Shocking that he’s not no. 1 here. Shocking he didn’t get all 5 positions here, right? Am I a fan? Well, who isn’t? His talks could be fun for newcomers, but most of us know his speeches already and he didn’t say almost anything new (the LASER starter is not new to us any more). I liked the iPhone metaphor, but “demanding professionalism” should mean more that just fast builds. The most valuable thing I think I’ve got from that talk is actually… a photo with Uncle Bob. On the other hand it’s the usual when you’re expecting too much from a talk and then comes the reality… Well, it’s still great he came to Poland :-) I wish he came next year!   4. Raffi Krikorian Twitter: From Ruby on Rails to the JVM The news about Twitter JVM romance is there for a long time, so we (Java devs) should be already pretty familiar with that fact, but seeing the numbers is still amazing. It was a well prepared presentation for awesomely interesting subject. And I was expecting the leader of Ruby to JVM migration to hate Ruby more, but he wasn’t. That’s a nice thing he sees pros and cons of solution with such a distance. 3. Jurgen Appelo How to Change the World I have to admin, I’ve never heard about this guy before. But Grzesiek gave him the keynote, so he must be good. He started with putting himself in a light of a total life failures. You think - hmmmm, so why do I listen to that guy? I don’t wont to follow his steps… But then the main content comes, the guy is great, extremely motivating and energetic. Exactly something I’ve needed for the conference ending. 2. Sławomir Sobótka Ścisły przewodnik po aspektach miękkich dla ekspertów IT (Polish) It’s a pleasure to see Sławek so well prepared! This guy is taking things seriously, how much practice does it take to prepare such talk, I wonder. He took us for a little trip through the steps of learning process, with many digressions to a human brain’s characteristics. Funny, dynamic talk, with lots of thing to remember and more to think through.   1. Venkat Subramaniam for the whole conference Last year’s no. 1 is my 1. this year as well. Even knowing the subject well I still didn’t want to miss any of his talks. Venkat is a fame of 33rd conference and it’s easy to tell why - you get full pockets of his dynamism and go back to work with tons of motivation to make changes :-) especially the throw-away-java kind of changes. He’s a very positive person so don’t miss the chance to talk to him between the talks if he comes (I’m sure he’ll be invited) next year if you haven’t this year.   Huge kudos to Grzesiek Duda to the 33rd degree once again! It’s hard to make the expectations after such a good event last year and you made it! Thanks again!

Comments

Back to Blog

How to send a link to a Gmail email?

There aren’t much things I’m missing from working in corpo, but saving and attaching emails from M$ Exchange is one of them. You could simply save an email, put that to JIRA or any other store and your grandchildren could read the communication that led to this solution. And even more important functionality was to send someone this response ‘you wanted it so - here’s the email: <url to that exact email>. The latter couldn’t be done with Exchange, but at least I could attach that conversation. So now being in a small, agile company devs would probably throw up when seeing Exchange. Everyone (including me) want to use GMail. But what about my beloved sending discussion functionality? I don’t think GMail has an option to link to the message, but there’s a solution. Not very good one or anything, but still worth sharing I think. Go to your inbox, let’s open some random spam message, settings > show original (sorry for polish on s-shots):   Then find message id And the ugly hack is that when searching for e-mails GMail searches message id as well, so let’s simply search for it and send the link to whom we’ve been mailing to (message id stays the same for all inboxes). So the url is like https://mail.google.com/mail/u/0/#search/[message id] and in our case it’s: https://mail.google.com/mail/u/0/#search/bwwt0zvb12d1hjau60z0dqchs8bhce.14706468600.4473@mta802.e.digg.com And what the other person sees after opening is: Cheers

Comments

Back to Blog

33rd Degree + Scala Community Talk

33rd degree is where the Java Community is right now. Kudos to Grzegorz Duda once again. I enjoyed few talks already (the great Venkat, long awaited non-blocking architecture in Play2 and the ‘must’ Raffi Krikorian with Twitter to JVM migration). Right now there’s a talk from Zeroturnaround about the LiveRebel and the continous delivery. I’ve you’re interested with Scala (or just curious) join us today @ BOF (Scala community talk) ~ 5.10 PM, just after Rebelion Beer Party. We’ll show a bit of state of the art in Scala world together with Venkat Subramaniam and Sadek Drobi. Feel invited :-)

Comments

Back to Blog

Method injection with Guice and Scala

This is English version of a post I’ve written for Polish Scala User Group. I have moved Scala recently from hard and heavy J2EE/Spring world. I know hord hard is testing when you don’t have a proper dependency injection mechanism. Mocking ability has been a priority for me for years now. On the other hand having several deps in object and delegating them work is not in the functional Spirit of Scala. Scala makes it possible to move a step forward and inject methods, which gives you the pleasure of functional writing but still having object oriented flexibility. Let’s take a look at this example: let’s say you’re registering a user, and want to hash his password. But it’s generally a good idea to add some salt. Not hardcoded one :-) So we keep a salt in our DB, then something that would calculate the has (a hasher) needs to obtain DB connection. And when registering a user we need a hasher instance: [gist id=1861032] That is not the Scala beauty we could expect to see. What we want is: password.hash. So let’s take advantage of Scala mixins to use hasher as a hidden dependency and an implicit that would extend String class with hash method: [gist id=1860959] Now we may mixin hashing capability to our class and take a look at beautiful, but still flexible and possible to mock or whateva piece of code: [gist id=1860972] Notice that thanks to minimal hasher scope UserRegistrator will never know about such details as hasher class nor such field existence.

Comments

Back to Blog

Git rebasing lesson learned

Some days ago I learned a painful lesson I want to share with you. Lately I discovered git rebasing (I’m a fresh git user) and rebasing is awesome. First let me explain what it is as some of you might not know.

Rebasing

For me rebasing is merging 2.0. Assume you have a branch and some new code was introduced to master (or default or trunk, whatever). Now code tree looks like this (A, B, C, X, Y, Z are some commits) [sorry for those awful images of mine]:
So when we want to check in the code we have to merge it. But instead of merging (which has it issues, like less clean history or unnecessary merge commit) let’s try to delete commits X, Y, Z and apply them to our HEAD which is on top of C commit. After such operation our code tree looks like this:
Pretty straitforward isn’t it? History will be proud of you if you switch from merges to rebases. But remember X’ is not the same as X (if i.e. there was a conflict between C and X, he had to resolve it while rebasing, so X changed to X’).

More advanced example

Ok so let’s get back to real world. Let’s say we have some changes in branch feature1branch and we finished working on it. While waiting for code review to be done we want to start to work on feature2 in feature2branch, but we need some changes we made in first branch. So we build feature2branch on top of feature1branch. Here’s the graph: Code review is done, and we are free to check in to master. So we go to branch feature1branch and execute rebase master

Crash

What would I expect to see is

and what we actually get is:

See the difference? Branch feature2branch now has it’s own copy of commits X, Y, Z and isn’t changed a bit! Rebasing only worked for the branch we specified. Pretty cool is you think about it, but misunderstanding this costed me some time couple of days ago.

Comments

Back to Blog

AgileByExample 2011 survey

What did I learn during ABE2011? I earned some knowledge from practitioners, everyday tricks, straight from the tranches. I’m glad to know what kind of issues people have when introducing Agile to teams that weren’t familiar with it, or were using it in the wrong way. But most of all I’m happy to hear some incredible ideas from great agilers, like Marek Kirejczyk and his team rebuilt. Did it fix into my expectations? Absolutely. Most important part was to be a part of Warsaw Agile Community at one of the biggest Agile events in Poland. With that I’m fully satisfied. I even wasn’t expecting to learn that much of those speeches (I thought that value/show rate would be way lower, I’m glad to be wrong). Three speeches I will remember Rebuilding Agile Team - Marek told us a story of how did he accomplished rebuilding a team after loosing most of it in a short period of time. Story contained job interviews using Codility, pair programming (with himself as a driver and a candidate as navigator) and other stuff. He showed an example of how to put effort in such an important part of building the team as choosing the right people, instead of simply ask few questions about last projects or try to solve deep programming language riddle [booooring]. How to Lose a Team in 10 Days - I’m not sure if the title fits the content well. Inbar Oren was speaking mostly about the role of Product Owner and about how it’s often degenerated to simple proxy between the team and the client. Also one VERY important issue pointed here - when you train a PO to actually play the extended role, to keep working with the team during the sprint and making decisions himself, you have to train him on how to handle additional work AND stress connected to additional responsibilities (but no additional working time). Don’t Start with Kanban - Marcin Czenko was in my opinion the best presenter on ABE. The title says for the presentation, don’t introduce an agile methodology by starting with Kanban. Marcin showed us some very important issues teams are facing when they are not familiar with scrum or XP. What about the place and coffee? It was the first time I had a conference in a swimming pool :-) Great place for a conference in my opinion. Lots of air above our heads, original audience in pool placement and awesome acoustics made CBA the best conference room I remember of. Coffee and snacks were fine for me, but I would still appreciate to eat a sandwich perhaps, or a salad instead of tons of cookies (it’s hard to stop eating them ;)). Anything else? Let’s not forget of a cool ABE party after day 1. We enjoyed beer in the ticket price, pizza and great Agile community in unofficial mood :-) Great opportunity to get to know some new people, to ask speakers some additional questions or simply relax between two days full of lectures. Thanks for organizing it! It was a pleasure to attend  

Comments

Back to Blog

Confitura 2011 summary

Right now I’m on the last lecture of Confitura 2011, so it’s the time to write a summary. First things first - great thanks to organizers! Javars… Confitura is a great and huge conference and it isn’t easy to make it all work. Thank guys (and girls). And what did go wrong? Where the hell is my coffee?! Why couldn’t I get a cup of coffee during a lecture? I have to wait until some special break? C’mon! It is the first time you couldn’t drink coffee on a Java conference I remember. Another (and last) thing I’m complaining about is the food - it was weak and it was hard to find some place to eat it. <off-topic> At this moment a guy sitting next to me after noticing I’m writing memos suggested me to write that it’s stuffy and I fully agree. But I’ve never seen anyone solving problem of 1-2 hundred people sharing air in one room. :-( </off-topic> And now the lectures: first in the morning was the keynote given by WorldIT Systems guy. I’m gonna remember two things:
  • He showed that server cost per performance is underlinear (1 big computer costs less that two small) - I always believed the opposite
  • He showed us the ease of vertical optimization as the future, not horizontal, as we see it.
Somehow I just don’t buy it. [huh - I didn’t make the whole memo that day, so I am finishing it couple of days later, after cooling down] Next one - Jakub Koperwas with webapps security. Some basic knowledge for beginners, too much about SQL injection (believe or not - we know not to concatenate strings for queries already). And when some more interesting examples were coming to the day light he ran out of time. Good luck next time - I hope to see other examples :-) I picked Adam and Tomek with the Amazon cloud stuff as last presentation before lunch, and I picked them because I didn’t want to risk :-) I knew that they are going to give a very good show with possible live coding and they didn’t disappointed me. It was the best presentation I that day. I wanted to prepare a bit for my presentation, so I picked the smallest room with jPalio lecture. For me it’s an awful tool (just making people to use not their favourite IDE is enough not to use it). I wish I went for Paweł’s or Jarek’s sessions that were on the same time, I heard a lot better comments on them. Last session - Mateusz Grzechociński. I picked it up because I am about to start some Android development and so I choose everything connected to Android lately. Mateusz has a lot of useful knowledge, but it was hard for me to understand problems he meant. That’s it, I will surely participate next year and I’m waiting for this years videos. And I am curious - organizers kept saying carefully that this is the biggest free Java conference in Poland. Isn’t that true that this is the biggest free European Java conference and one of the 2-3 biggest Java events in Europe (not necessarily free?).  

Comments

Back to Blog

Confitura presentation

After reading Sławek Sobótka’s blog entry about showing his presentation before the lecture itself I decided to paste my too.
I know that it’s only a couple of hours earlier and nobody is reading this blog anyway, but I thought I won’t do it afterwards, because there are gonna be some higher prioritized tasks to do.
So here are my slides, just like during Warsjawa 2010 I decided to do them in Prezi.
See you on Confitura 2011.

Comments

Back to Blog

JRebel with multiple module Maven2 build

This post is dedicated to put together Maven2 project with JRebel reloading. Until now i worked only with single module apps or apps I didn’t need to reload dynamically because of all the tests that didn’t need application started. But now is the day to do the configuration and I had some trouble with it. I hope this post helps someone not to loose 2-3 hours senseless, because it is an extremely easy thing to do. jrebel.xml Until now all all I needed was jrebel in JVM opts (-noverify -javaagent:/path/to/jrebel.jar). But when Maven2 builds our WAR file (instead of using exploded app) we need to tell JRebel where it can find our compiles classes. Thanks to this information it can scan the whole destination and replace classes when needed.



  
    
  

Now when we add JRebel as javaagent to app it will start by reading this class and knows to check the directory (instead of dir we can watch jars and other stuff). Like in our example we would probably like to exclude some paths in directory not to scan the whole folder because it’s just too expensive. How to do that? Just add exclude/include tags in <dir/> tag. JRebel is a smart beast that can scan all the resources in classpath, including dependency jars. All we need to do is to put proper rebel.xml into each one of the (each we want to follow). Each has to say where JRebel can find new classes. I just lost about 2 hours because I called the file jrebel.xml instead of rebel.xml and wondered why doesn’t it scan path… :-/ Next thing to automate all of this is to add JRebel support to Maven build lifecycle, then we don’t need to create rebel.xml by had, and all of developers can use unified pom.xml (which will add project root path to rebel.xml). Remember to do this on all modules you want to have reloaded! Not just root or web project! Here’s how mine looks:

    org.zeroturnaround
    jrebel-maven-plugin
    
        
            generate-rebel-xml
            process-resources
            
                generate
            
        
    

Comments

Back to Home

About Me

Introduction

Not yet ready, expect this page in a couple of days/months/years...

My Skills

Java
90
Groovy
70
Scala
70
JavaScript
45
Linux/Unix
75
OOP
75
TDD
80
Web Frameworks
90
Spring/Guice
90
Build tools
85
App servers
85
RDBMS
75

Downloads

Contact Me

Contact Information

Phone
+48 790 028 608
Address
Osowska 23, 04-302 Warszawa, Polska
VAT ID
5342222700
Bank account no
77 1950 0001 2006 0240 3210 0002