Friday, April 22, 2011

33degree conference – a great place to be!

Between 6 and 8 April I had a pleasure to attend the first edition of 33degree conference. It was really a great learning experience, as the schedule was literally filled up with interesting talks from well-known speakers. Talks for the conference were all hand-picked, to eliminate accidentalness typically caused by standard call for papers. This played out rather well – even if talk's topic wasn't exactly my cup of tea, I could still enjoy it a lot. It was also very fruitful to see some of the speaker rock stars in action – overall quality of such performances, their ability to catch your attention and not let it go really makes a difference.

Of course, it's never all moonlight and roses and I wasn't always 100% happy with all the presentations, but I must admit that to some degree it was my poor choice. Most tech talks (to differentiate them from 'soft' ones that concentrated on self-management etc.) were at quite introductory level, and I made a mistake once or twice of going to a talk focused on a features that I was already familiar with. Maybe it would be a good idea to add some indicator of talk's level, because sometimes abstract is either cryptic or doesn't discuss prerequisites. Below I will describe shortly all the talks, so should you come across any of them on future conferences, it will be easier to choose. Also, I believe there will be a lot of posts from other attendees with such summaries (the complete list should be available on the conference website), so I will be able to find out what I've missed :).

Linda Rising – deception and estimation

The first keynote was pointing out that every person is prone to deceiving herself and that we must be aware of it at every stage of planning. Linda Rising argued that every estimation is to some degree biased and that we should estimate only in short, agile sprints, so every mistake is quickly exposed and fixed before it becomes costly.

Matt Raible – comparing JVM frameworks

I was especially interested in this talk, as we're evaluating different JVM frameworks on the job right now, and had used Matt's previous slides in the process. In the new version, Grails became the leader, but the list of top 7th frameworks according to Matt's criteria remains more or less stagnant for over 2 years now. The most important thing to keep in mind is that you cannot go wrong with any of the top solutions and it's best to make prototypes in a few of the most promising solutions and check which is the most exciting for the team. At some point, every technology causes some problems, so it's best to have strong motivation to overcome them.

Nathaniel Schutta – Hacking Your Brain for Fun and Profit

This talk intersected its content a lot with a book that I'm currently reading: Pragmatic Thinking and Learning: Refactor Your Wetware by Andy Hunt. Nevertheless, it was brilliantly delivered and also brought some new points. I highly recommend Nath Schutta for his engaging style and excellent contact with the audience; I think that even if he talked about advanced functions of Microsoft Paint, he would grab my attention anyway.

Ted Neward – Busy Developer's Guide to Scala: Patterns

Ted Neward is a very vivid personality and is really insightful. He began his talk with interpretation of classic GoF patterns in Scala, and soon went to conclusion that catalog of patterns always mutates: some of them are now part of languages, some don't make much sense in realm of functional langs, some start to appear due to more expressive tools we have at hand. Although I'm not very familiar with Scala (I've seen the syntax and I'm able to make most of it by parallel to Erlang), the talk was highly enjoyable for me – it was clear and concise, sarcastic, but funny.

Workshop: Neal Ford – The Productive Programmer

Workshops were 3 hours long and I'm not exactly sure how well this formula turned out. Neal Ford's workshop was divided into two parts: the first one showed various tips and tricks for increasing productivity. Unfortunately, they were targeted on Windows and Mac users, and being Linux guy for many years, they haven't really surprised me – using sed and awk is my essential tool for many years now. Neal also showed some key shortcuts for Eclipse, but it was also nothing new to me. I was also quite surprised that he didn't mention power of bash command history, especially tweaking its settings (length, duplication, eliminating navigational commands). Overall, I think that the first part could be very beneficial for a programmer that works with Windows, but I wasn't quite the intended audience.

Second part was totally different, so maybe they would rather have split the talk into two separate ones. I've actually enjoyed this one, as it presented several ways to increase your productivity by eliminating distractions, increasing focus etc. It was also quite relieving to hear that problems with maintaining interruptions is so common and that it's just another challenge we can tackle.

Multiple presenters – BOF: Web frameworks shootout

The last presentation of the first day was conceived to present 'new-wave' frameworks, namely Play, Wicket, Grails and Lift, in short practical examples shown by enthusiasts of these technologies. Unfortunately, it turned out pretty chaotic, because due to short time all the presenters were in great hurry, showing for a while some code snippets without virtually any time for questions. Only Wicket talk had easy to follow example that we were presented before showing us the code, so it was the most informative. I think that it's hard blame the speakers, as it's hard to show any useful code in 15 minutes, so maybe it would be better to make an hour-long moderated discussion with all 4 enthusiasts, concentrating more on philosophy of the solutions?

Jevgeni Kabanov – Do you really get Memory?

This talk brought up an important subject of shift in CPU architecture (multiple cores, various cache coherence problems) and how it changes the landscape for Java developers – Jevgeni Kabanov argued that now we are always programming in a distributed environment, even if the execution environment is limited to only one box, and that we should revisit our knowledge of memory management, because a great number of the today's performance problems can be related to it.

Brad Drysdale – HTML5 WebSockets – the Web Communication revolution, making the impossible, possible

Actually, I missed on this one, because I hoped for some more advanced application of this tech, but instead was presented by reasons why WebSockets are superior to old methods of simulating duplex HTTP communication (which is out of discussion) and how Kaazing solutions can help in transition by providing fallback to e.g. Flash in older browsers.

Dierk König – Pro Groovy

During this talk (the only one without a single slide!), Dierk König presented interesting techniques he is using taking as examples some code katas such as quicksort or arithmetic operations on lengths with different measurement units. Overall, very interesting and inspiring talk, but quite slow-paced.

Patrycja Węgrzynowicz – Patterns and Anti-Patterns in Hibernate

The most important conclusion that one can draw from this talk is that using Hibernate correctly and efficiently is quite hard task that requires deep knowledge of the technology itself, as well as the details on how it works with particular RDBMS. We were presented with bugs found in example application coming from Java Persistence with Hibernate book to underline that subtle, but dangerous errors can be made even by the most knowledgeable experts. To err is human, so we should analyze closely and profile our application for strange behaviors (especially under load), before it will go intro production and our mistakes become costly.

Nicolas Leroux – Play! framework: a revolution in the Java world

It was introduction to Play! framework from one of its core committers and was quite intriguing in its content (Play designers has made some interesting decisions like completely getting rid of state on server-side), but I'm afraid that it wasn't very compelling for the attendees, because during coding Nicolas spoke very silently; on top of that not everyone is used to French accent. Overall, it was an informational presentation, but not very thrilling.

Steve Freeman – Five years of change, no outages

It was basically a retrospective of a complicated ETL project in bond trading domain. It was a huge success (being 5th approach to the problem) thanks to strong team culture focused on quality, wide use of testing (especially fixtures), short iterations (the problem could be partitioned horizontally) and good communication with analysts (they eventually participated in writing fixtures). The study was quite thought-provoking, but in my opinion the presentation was too tied to the specific project. The presented methodology was perfectly Fit (pun intended) in the specific situation, but the talk lacked some generalization, ideas was therefore hard to grasp and the outcome seemed uninteresting.

Nathaniel Schutta – Agile UI

Really brilliant talk on how to think about user interface design in order to have something usable in the end. The most important thing is to be in touch with the users, have their workflow in mind while designing the application and using the product personally from time to time. Users grade our work on look&feel, not the amount of design patterns used or the version of framework.

Sławomir Sobótka, SSEPP members – BOF: Dokąd zmierza Software Craftsmanship (Polish)

It was a discussion initially planned to cover topics related actual state of software craftsmanship in Poland, but it mostly turned into complaining how developers feel underestimated by the society and how it relates to other professions that have long history, which is quite difficult topic itself, because our profession is young and has its roots in academia, not common folks' needs.

Michael Nygard – Failures Come in Flavors

Really excellent talk about problems related to scalability and hearth-warming conclusion that there are finite classes of such, so we can prepare for them, if we only accept that they are inevitable. Michael Nygard has really wide experience in running large scale systems and shared some of the most peculiar accidents he experienced, like e.g. one of the servers mysteriously starting streaming "Weird Al" Yankovic songs to other components :).

Costin Leau – Using Spring with non relational databases

Nice presentation about Spring Data project and NoSQL connectors for GORM. It was particularly interesting to see SpringSource approach at NoSQL (the talk was before CloudFoundry announcement, so there were big points to add to this image later). Moreover, I've encountered Spring Cross-Store project for the first time, which is basically a solution to ease storing domain object across different database products – as for example entity attributes in key-value store and relations between them in graph DB – taking care of all housekeeping stuff.

Szczepan Faber, Bartosz Bańkowski – Lost Chapters of Divine Code: 7 Deadly Sins

Thought provoking talk kept in its style in line with "Divine Code" April Fools' book – it presented different patterns and anti-patterns in language of heresy and dogma. I think that it was very inspiring, if only approached with a sufficient dose of humor. Sometimes it's easier to have some stimulant discussion if you hear something that initially makes you tremble, but after some thought you can see some behind it – not that in the end you will agree with such "heresy", but it will make you question some "dogmas".

Neal Ford – Abstraction Distractions

Another "soft" talk concentrating on cognitive biases, this time in terms of abstractions (that we build all the time while building software). The're were several good points there, of which the most memorable for me was: "abstraction first are walls and then turn into prisons" – meaning that we build abstractions to separate ourselves from too many incomprehensible things out there in the wild, but with time, they start to limit our imagination and perception.

Michael Nygard – Architect for Scale

Second talk in the series concerning scalability, this time covering techniques to fight with the problems pictured in the first one. It made great job of explaining different solutions that can be used while building medium and large scale systems. What also was quite an eye-opener: scalability is a measure of system speed-up capacity: how long will you gain improvement to system parameters while adding more machines, before you will run into the wall of synchronization and coherency overhead and the system will actually become slower due to more nodes. So the shocking truth here is that optimizing system in terms of sequential operation is in fact decreasing scalability, because less work will have to be parallelized.

Venkat Subramaniam – It could be heaven or it could be hell: On being a Polyglot Programmer

Very energetic talk on upsides and downsides of learning and using multiple languages. I think that the whole audience was carried away by Venkat's enthusiasm. For me, it was encouraging to hear that dilemmas related to introducing new languages to the rest of the team are normal and that we should concentrate on possible productivity boosts of such change, not on the worst scenario or being rejected.

Ted Neward – Rethinking "Enterprise"

Another thought-provoking talk showing how easily we are manipulated by school handbooks and big company's marketing departments alike and what lies behind constant need of seeking a new, ideal technology to learn (to prevent being fired/outsorced) or thinking of software landscape in terms of 'sucks/rocks' dichotomy. The talk was quite provocative, but no less than the author of the words that neatly describe the talk's main point: "Think for yourself. Question authority".

Most of the talks have slides available for download from conference site, if you would like to give them a peek.

To sum up, I think that the conference was a great success – the organization was great (some guys were complaining about lack of WiFi – not a problem for me though), one of the most remarkable things was giving the attendees a chance to shape the conference by organizing online surveys beforehand. It also gathered a great number of visionary people, both speakers and attendees, so it was a really great place to grab some inspiration and return to the daily work with a bunch of new ideas to spread. Congratulations go then to the organizer of the conference – Grzegorz Duda! He also announced that the next edition of the conference will feature such speakers as Uncle Bob, so stay tuned for even more thrilling event next year!

Sunday, March 20, 2011

Long time no see...

It's been quite a while (over a year, to be precise) since I've last posted to the blog. I took hiatus from writing mainly because of great changes in my life: change of employer, followed by change of martial status, job position and master's thesis subject. So you can imagine that all the adaptation kept me pretty busy :D.

I've also managed to pass two certifications in the meantime:

So, to reflect all these changes, I've decided to move my blog to a custom domain, and switch blogging platform to Blogger. I was quite satisfied with, but I needed more freedom with editing CSS (12$ 'upgrade' for small corrections is too much I think) and using custom Javascript. I had some experience with customizing Wordpress blogs, so hosting one on my own would look like a logical choice, but I've opted for Blogger mainly because it's quite flexible and of course much easier to set up and maintain.

I think that great improvements will come to Blogger, as it has a huge user base and is an invaluable source of content for Google – so important in times when so much user-generated content is buried in uncrawlable social sites like Facebook. So I wasn't very surprised to see Google announcement on new features that will come to the platform this year. They look really promising – I like especially the user experience design borrowed from Google Docs – the more document-oriented interface seems cleaner, exposing the posts as the most important element and I think that's the way to go. Also, the functionality of blog exploration based on topic clustering looks pretty cool (although everything depends on execution, so we need to wait to see it in action).

Transition to Blogger went pretty smooth, thanks to this conversion utility. I simply needed to export my blog from Wordpress, upload the XML file to the mentioned tool and then I've got another XML to import into Blogger. There is a very nice Google effort on making it easy to transfer your data in and out their products: The Data Liberation Front. There are however few things that aren't so smooth:

  • Blogger has really awkward handling of paragraphs: it encloses them in div, inserting br elements on every hard break. There is an option to turn off the later functionality, but it doesn't get you plain old <p>s anyways; it's pretty annoying, because it caused extra empty lines after my each paragraph and makes the markup very non-semantic. I'm writing the posts in HTML then to have control over it, but the editor is also pretty strange, because it seems to interpret whitespace – I hope that it will be fixed soon.
  • The platform doesn't let you define your own 404 pages. It's maybe not a big deal on its own, but because I've set a 302 redirect from my old blog here and URL patterns differ between Blogger and Wordpress, it causes all redirects from the old blog to land on the standard 404 page, so visitor feels a bit lost.
  • Great thing about Blogger is that you can host static resources like CSS or Javascript files on Google Sites. The catch here is that Google Sites block the traffic if the original request was performed outside of Google domains (which include So it's easy to host JS files if your blog is in namespace, but if you choose to use a custom domain, you need to host the files elsewhere. I don't really think that this restriction will be lifted, because other checks for request coming from actual Blogger blog could be counterfeited; luckily, there are lot of CDNs (I'm using the one from Google) that host the most popular Javascript frameworks and toolkits and for simple scripts and CSS, you are free to modify the head element of the page.