Blog resurrection

23/12/2012 Leave a comment

Ok, so the world did not end. Everyone gets another chance to start a new, better, life. That deep spiritual experience has changed me, and showed me new path. So here we are, on my own, new site.
I’ve done my part in the kitchen for Christmas Eve, and head to PC to clean up this place a bit.

You can find now only two categories, all other meta informations will be in Tags. I’ll also will try (again ;)) to try more frequently.
Second change is that I’ll be trying to write only in English here. Polish category is for older posts + I’ll be linking to DC blog, were I intend to start blogging also.

So let’s see how it goes. :)

Categories: English Tags:

Moving blog to new domain

23/12/2012 1 comment

Hi all,

It’s been quite a while since the last post. But good (at least I hope so) news ! :) I’ve moved this blog to the new domain. It’s now available under http://www.rits.pl and I sure hope that a bit of cleaning that I applied there, helped with the mess I’ve been making here.

I’ll try to post there regularly. Please update RSS feeds and change your bookmarks :)

 

Michal

Categories: English

33degree day3

22/05/2012 1 comment

Session 1:

Day 3 began with the same problem that I had during last talk on previous day. Venkat vs Nathaniel. I picked Venkat, as I expected that JVM languages integrate without any effort from developer, and abstract of his talk suggested something different.

Venkat showed some edge cases when something may go wrong. And after all I’d do better if I went to Nat talk. However now I’m certain that I don’t want to use in production any of the alternative JVM languages. Ok, maybe groovy for testing and tooling support.  But as the problems that I solve, are not complicated enough to raise  complexity bar of a project significantly, I choose to stay in pure Java world.

I know, I wouldn’t have to write semicolons or brackets anymore, but is it really worth it?

Also we are currently recruting Java devs, and it gives us enough of problems to find them, so I don’t even want to imagine how hard it could be to get experienced Scala devs.

There are tools that allow for some coolness level. And as for ceremony in Java -> we got Intellij, and it solves a lot of problems related to that :) Also I like my brackets! Hands off of them. For some they raise readability.

On the same page I feel that the time when Scala / Groovy / clojure or Kotlin (?) will be a must have skill, is near, so I have to reserve some time for learning them, soon.

 Session 2:

Second talk for me, was by Ken Sipe. Pre that talk I didn’t know much about noSQL DBs. I did some spiking, but I never even benchmarked it.

Luckily, Ken thought about noobs like me, and started with high overview what noSQL is.Then he showed up project where he used MongoDB and some cases which gave his team a problem during implementation.

As I don’t know much about Mongo, I hope that this talk has been recorded and I’ll be able to see it again later, when I’ll learn more in the topic.

Session 3:

That was probably the hardest of choices. I had to choose from 3 great speakers and 3 different areas of my interest. To make it simple: I knew that I don’t want to go about JAva 7 cloud talk, and Uncle Bob preaching about TDD. What I did not know, was do I want to learn more about Lucene, HTML 5 or Gradle.

I picked Gradle.

Szczepan had really hard time to decide whether he wants to show the basics (as most of the people never seen gradle before) or to go with the topic from title: building plugins in gradle. He tried two do both, and failed in my opinion.

He’d do better by abandoning the plugin part and just doing introduction into the build system. More people would benefit and those of us that know that tool already maybe would see something new. Even if not, I guess that we would understood.

As for me the most important part was after the talk itself as I had occasion to eat lunch with GradleWare team and ask couple of questions and make some requests regarding Intellij integration :)

By the way. In June there will be my talk on Tricity JUG about Gradle.

Ending Keynotes:

After lunch there were 3 good talks. First one was by Nathaniel about Craft. As I heard it many o times by different speakers I skipped most part of it.
Second one was by Jurgen Appelo, and I’ve also skipped it, but only because I’ve heard it recently as it’s available on InfoQ. If you haven’t seen it, go and watch it now! And I didn’t skip it entirely, what you could see on my twitter stream.

Last keynote was by Uncle Bob. One problem that I had with it was that it was a compilation of his other talks, and as I seen most (all?) of them, it was quite boring to hear all the punch lines again. Although it was good to see him live :)

Some thoughts on conference itself:

  • It was great, like last year. I’ll be there next year also :)
  • Number of must see talks  was too high. It was giving me headaches to pick where I want to be. Next year please invite some rubbish speakers ;) (e.g. me :>)
  • It was bit overcrowded (as many people noticed)
  • Grzegorz applied learning and fixed all the issues that I remember from last year.

CU next year :)

Categories: English Tags: ,

33degree day2

22/05/2012 Leave a comment

Session 1:

I started day 2 with some good old new desktop Java. Michael Heinrichs has been talking about Java FX usage in business. Topic reflected the presentation with small misstatement about business. It was very technical talk and for me it was bit boring (maybe because it was first talk of the day). I regret in the end that I haven’t picked up one of other two talks that I wanted to attend. But at least I got some takeaways from it.

As unofficial information Michael mentioned something about JavaFX applications working natively on iOS and Android. I don’t know how that’s possible, but it would be great :) Second thing is that I’ve learned that I don’t want to go back to Swing ever again. JavaFX does not have the same threading issues as Swing.

Session 2:

After not so good start, it was time for Matthew McCullough brand new talk titled “Economic games in software projects”.  He talked about various topics: from investing money into tools that we need in everyday work to showing simple tricks that make our products more attractive for our clients. Great talk, attend if possible.

I graduated on University with specialization with economy and econometrics, so I often calculate cost bit different than most of my friends, as most people  doesn’t count alternative cost. I do, and I’m glad that I’m not the only one in this industry ;)

And again I’ve missed one interesting talk. But it was worth it :)

Session 3:

From all talks during this session, most interesting seemed to be Venkat with talk about concurrency in pure Java. I don’t remember when I was solving threading issues for last time, however I remember that painful experience ;)

Venkat showed us first different approaches to concurrency using alternative JVM languages, and followed that with traditional Java (using synchronization and locks). Then he presented a new way, using Clojure libraries. It looked dead simple and it’s a useful  to know  about such tool. If needed then check Clojure ref and locks.

And yet again I’ve missed two talks. But luckily this time it were Polish speakers and I hope that there will be occasion to catch up on theirs ideas (in fact Sławek Sobótka will be in Gdańsk this week :))

Session 4:

Time for some Spocking action with Luke Daley. I heard about Spock couple of times, and checked some examples, but I’ve never gave it a try. It  was a good overview of interesting tool and well invested time. What can I say more, just google for Spock and give it a go.

Session 5:

After 3 good sessions and not so bad day I went to Anton Arhipov talk about “Mastering Java bytecode with ASM”. What I’ve learned is that there are better things to waste life than working with ASM :E As for talk itself, it had one very serious problem: it was too technical and focused on low level details.

Do I really had to learn about all the code numbers and flags used by Java? It would be better, IMHO, if Anton abstracted more and talked bit more about other tools that use ASM. That talk is probably great for experts, but the rest of us was zombiefied in the end, so there were no questions and it was probably shortest talk of them all (as it went for about 30 minutes)

Session 6:

was a hard nut to crack. I really wanted to see Nathaniel Schutta but as Scala is a cool kid (and I had pleasure to attend to Łukasz Kuczera talks about it), I decided to check out language again (and from point of view of different speaker). That how I end up, on Venkat talk about Scala. As this post is getting long and I want to sum up this talk with another from Venkat, please check Day 3 for my thoughts on Scala.

Session 7 (BOF session):

That one was easy -> I knew that I want to hear about what went wrong in Touk and what they learned from it.

They described couple of situations, how they approached the problem, what went wrong (in their opinion), and what is the proper solution (again: in their opinion).
What was most interesting for me is how differently we’ve looked on the same problem, it’s source and way to solve it. I won’t give detailed description, as I don’t remember examples good enough, but that reminded me, that I too often forget about such simple fact that people see different problems and have other ways of solving them.

Day end up in discussions and socializing :)

I also met Guys from JRebel and got one of their stickers. It went with me to UK, and through 3-4 major Polish cities + countless small ones. Should I invoice them for promoting JRebel? ;)

Categories: English Tags: ,

33degree day1

22/05/2012 Leave a comment

It took me a while to write down those relations, but right after conference I was coming back to Poland and that meant packing and other boring stuff, then climate change and small cold, catching on old projects and … ok, I was just lazy :)

Let’s start from the very beginning. Like last year I’ve arrived two days earlier. One of side reasons why 33degree > any other conference is that it takes place in Kraków. You attend to great conference and got whole weekend in one of  most beautiful Polish cities. Also same like last year, Grzegorz thought even about booking nice weather for the weekend, it was warm and sunny for whole time :D Thanks for that! ;)

Session 1:

On Monday (day 1) weather was more friendly for attendees. First talk was by Raffi Krikorian from Twitter. He told us about migrating  Twitter from Rails towards JVM (read Scala). What I really liked is that he presented a lot of impressive numbers about Twitter. I’ve listened up to a moment when he showed the code. That was just too early in the morning for it and I was still before my first coffee.

My takeaway from that talk is that rails are production ready and can support very large site. If you grow as large as Twitter did, then you can afford to migrate to some other platform. Or to ease future migration you can start working on JRuby from day 1 ;)

I went for a coffee and while passing by, O’Reilly stand just sucked me in with 40% discount. I did as I always do when I see books: I’ve checked them all: touched, sniffed, took a peek inside everyone of them, to do what any reasonable and well educated man would do, a week before moving back from foreign country and while trying to reduce his baggage size: I bought one. Maybe it will learn me how to think and learn pragmatically.

After that I had enough of time to I stop by Luxsoft stand. Well it was quite obvious choice as else their ninjas would just tear me into pieces! For tad of my time (and filling a short form) I was rewarded with a ninja t-shirt :) But had to evacuate right after that as they asked me to solve a problem (I still was before that first coffee. And what the hell!  Me and thinking!? Maybe that book gave them a wrong idea?)

Session 2:

By the time that I’ve dealt with first coffee and said hi to many familiar faces it was time for second session, by Ken Sipe. It was about complexity and how we, developers, tend to mix up two ideas: complexity and complicated. We also like to make simple things more complex than it’s needed. Hard not to agree. Session was nice and it kick started my brain better than the coffee.

Session 3:

Next session was by Venkat Subramaniam. His talks are always fun to watch, and this time it was no different. Thanks to it I could relax before git workshop. Venkat showed 5 whys technique and explained where it come from. The talk had anything that is needed to pump up any g33k. There was Dilbert, rockets and horse butts. Awesome!!!

Thing to remember: “Hand out with smart people” (probably he should say -> go to 2013.33degree.org ;))

Session 4:

Lunch was great, as usual on 33degree. Kudos to Grzegorz for making sure that there will be real food. And after lunch it was time for git workshop with Matthew McCullough, the only reason why  I brought laptop with me to Poland. Session was fun, I always enjoy Matthew talks. I never seen him unprepared. He knows the subject and his presentation perfectly. Whats more he has no problem with answering questions. Seriously, if you want to see well prepared presenter go to any of his talks (or Neal Ford, who is also always well prepared speaker).

As I knew and worked with git before, the session was more of a chance, to structure my  knowledge better  and get some tips from expert. It was good decision, although I would like to see Kotlin live. Well, maybe next year :)

And that’s how the day went by. Well almost, there still was beer party from JRebel guys and integration with people, which is the best part of any conference :) Discussion about differences between living in USA, Australia and Europe :D

Categories: English Tags: ,

TJUG reaktywacja

05/02/2012 1 comment

Disclaimer as this post is strictly related to Tricity Java User Group, and is relevant only to Polish readers, hence it will be in Polish :) Although I’m not giving up on blogging in English, yet ;)

Ostatnimi czasy na liście trójmiejskiego JUGa pojawiła się informacja o reaktywacji! :) Na całe szczęście.

Jeśli jesteś developerem z trójmiasta, niekoniecznie związanym z samą Javą, interesuje Cię dalszy rozwój, chcesz się czymś podzielić bądź posłuchać o przygodach innych to odezwij się, to nic nie kosztuje a sporo możesz zyskać.

Dla mnie idea JUGa jest wspaniała. Dzięki nim miałem okazję poznać ludzi i usłyszeć o technologiach, które normalnie były by poza kręgiem moich zainteresowań. Teraz zawsze projektując coś, mogę pomyśleć o dodatkowych technikach/technologiach i przypomnieć sobie kogo mogę poprosić o pomoc.

JUG to również świetne miejsce do prowadzenia dyskusji. Po każdej prezentacji (a niejednokrotnie w trakcie), zaczyna się panel. Tematy najróżniejsze, od technik programistycznych po różnice pomiędzy technologiami.

Podsumowując: jeśli

  • Wytwarzanie oprogramowania to Twoja pasja (niekoniecznie w Javie)
  • Pochodzisz z trójmiasta, bądź okolic (niektórzy JUGowicze dojeżdżali nawet z Elbląga).
  • Chcesz spotkać innych pasjonatów
  • Interesują Cię nowe trendy / technologie wytwarzania softu

to zapraszamy. Może po jakimś czasie się ośmielisz i będziesz chciał opowiedzieć o tym co robisz? Super przeżycie, super doświadczenie.

A i zaproście znajomych. Dajcie znać w swojej firmie. Ma być nas wielu. Chcemy szerzyć wiedzę o technologii i krzewić dobre praktyki. Im nas więcej tym owocniejsze spotkania.

Ps jak wrócę to kombinuję nad darmowymi warsztatami / eventami a’la code retreat, które pewnie dało by się zorganizować w ramach JUGa. Za trochę swojego wolnego czasu możesz się przy okazji dużo nauczyć, może to być więc powód by dołączyć do grupy.

Link do grupy: http://groups.google.com/group/jug-trojmiasto Warto też sprawdzać http://it.wtrojmiescie.org/

Categories: Polish Tags: , ,

Questioning your assumptions

23/01/2012 2 comments

1. Lets play TDD (AKA rethink some patterns)

Some of you are probably already aware that I follow James Shore Let’s play TDD series. After last episode I started to think about  usual design and ‘The Best Practices” that I use everyday at work. Why? Because if you’re going to follow his videos from the beginning, you are going to see my comments every now and again, where I’m bitching about his design.

I especially didn’t like his dollar class (value object used across whole application for calculations and rendering), up to the point that I’ve decided to branch his repository (everything is hosted on github), and fix it. Trigger for that was making Dollar class responsible for rendering itself onto swing components.

So after picking up a recording tool, setting project to work in Intellij and changing layout to more familiar, maven structure, I started to refactor. It took me 3 or 4 attempts to discover that James design had truth in it. I still did not like it, felt wrong (still does), and was totally different from all I was used to, but that was the first time that I thought about shutting up and just letting him do his job. On a first occasion I asked him to add persistence to his application, and watched how he solves that problem.

In last episode James started to struggle with what I waited for: how to be consistent with his current design, don’t clutter VO with too many methods and don’t expose internals of Dollar class at the same time. He ended the episode with question to us, watchers, on how we would approach this problem. I still think that moving parsing string out of VO to external factory class would be a good idea. There we could add two way conversion from Dollars to some universal format, most likely to String (as we want to write the value to text files and to text fields). Later, if needed, we could add formatting object to e.g. display negative values in different form.

But that’s not what going to happen. I’ve seen in comments idea that he should persist only user inputs. After reading that I felt cheated, and that James is going to do something wrong, again. But after second thought I had to agree that it is a good option in this case, and fits well with how the rest of the application is designed. It’s even extensible, in boundaries described by James in first episodes. So although I feel bit cheated, about James slipping from what I’ve assumed to be a corner, in the end I feel like a winner. I may observe that different approach, and I still may disagree with it and search for shortcomings of the solution. And finally, the biggest win for me: I started to rethink all the patterns that I’m using in a day to day work.

Thanks for that Mister Shore (and to the all commentators as well).

2. My quest for knowledge

As you probably know I’ve moved couple months ago to UK to work in ProQuest. If you haven’t heard about it, then please check out my previous post.

While coming here I promised myself that I’ll shut up and will try to listen more, especially that there are many, much more experienced people around. It’s not easy as I disagree with many thins but I try to first see the bigger picture and ask why some things are done this way. Often it makes sens ;)

I should mention that any big change I let through peer review process. Thanks to feedback from other developers with much more experience in this code (and with programming at all), I’m able to observe how other people approach my problem and what they think about my ideas.

Working in PQ gave me a lot already. Enough to make this post go through long corporate approval if I would try to describe it, so I’ll just skip to next point ;)

3. Open source and Pair programming

Following on mentioned experiences, recently I wanted to join some open source project. Warsaw JUG had a great timing on that, as Michał Margiel proposed to create software (link in Polish) for one of Polish conferences, Confitura (again, Polish link).

Sadly it took some time before he responded to volunteers and I already agreed to do Pair Programming with a good friend of mine, with hope that he’ll be able to use that in his master thesis. So every Tuesday and Thursday we are obliged to show up and write some stuff. As a motivation tool, we agreed to pay small fees to wikimedia foundation or one of animal shelters, if we won’t show up. But as it figures, they are unnecessary as we’ve been doing more informal/unscheduled sessions than the planned one :)

What I’ve learned from that?

My friend is coding a small financial application, that he’s preparing for our other friend. He want to do it as fast as possible so he often cuts corners, IMO, in a bad way. However those session reminded me that sometimes simplest approach works well, and it is possible that it will be developed faster (initially), and actually may work better than well crafted solution.

Despite breaking many sacred rules (like encapsulation, using wishful file parsing, etc) what he created works. What’s worse (for my ego) it works better than things that I proposed after first glance at code that was already there (e.g. parsing input files by regexp instead of relying on magic numbers).

Task done by application is fairly simple, parse input files, do some calculations and write the output of calculations into spreadsheet. Bread and butter of almost any application that we write, right? It’s a standard application, with small exception tat it  won’t grow when is done.

And who am I to tell if that solution is worse then mine. They both works, and as there is no need for maintenance my approach is just over-engineered. I just feel like an idiot sitting in ivory tower, shouting why we should do this or that,  when in fact those things won’t ever be a problem. Same as with James Shore application. They both picked the right hammer for the job.

Don’t get me wrong, I’m not going to advise you to start using public fields, violate DRY, single responsibility, or other basic rules. Those recent experience, helps me to take another step back and take a look on applications that I wrote/designed from bit other perspective.

In both cases (Lets play and PP coding) they are not over-thinking the solution. Features and solutions on how to implement are being introduced Just in Time.That is something I need to try out, although I don’t know how yet. When I’m writing code it’s like moving small parts, one at a time, from big drawing board inside my head, and placing them in the IDE. Breaking that will be hard, but I’ll try at least once! :)

All of us want to change  something in our application. That’s natural, we are constantly learning. If you don’t see way of improving your older code, then most probably your doing something wrong. When coding on daily basis in same environment with same people, it’s easy to start improving our very specific style. But there are many people who want to and actually share their knowledge. Go out and check out, maybe someone will inspire you in very same way as James Shore inspired me to skip finishing drafts of other posts and write this one.

In 2012 I hope to change my style. I don’t know how. In 2011 I was playing with different techniques, this year I want to learn at least one new language starting with coffescript/node.js (yes, js is a new language for me. Other than making things appear and disappear I don’t do much with it ;)). I look forward to that and hope that it will affect my style at least a bit.

I also set myself resolution to write more often, so I hope that at least those 2 I can keep :) Till next time

Categories: English Tags: ,