Saturday, October 27, 2012

Kindle as a cookbook

I'm a Kindle owner for few months. My primary reason for having Kindle was to read technical books as I'm not keen on reading from the screen and most of them already came in electronic formats. It's working well. Moreover, I've almost completely abandoned reading blogs on the laptop in favor of Kindle, thanks to great tools like Calibre or Send-To-Kindle widgets. I'm also using Kindle to check my e-mail from bedroom etc.

These are really nice additional use cases for the reader. But there is one thing I do with my Kindle I'm most surprised about. We had a lot of recipes printed out, our collection grows quite fast and it was getting hard to find something there. Now, instead of printing the recipe we found on the web, we're just selecting it and sending it to Kindle using two-click Amazon's widget that is configured to deliver the documents directly to my Kindle, in readable and searchable format with proper title. On Kindle, I have a separate collection for recipes, what makes it easy to browse. And then in kitchen, recipes on Kindle are easy to read, search through and navigate. Have a try!

Image borrowed from

Wednesday, October 10, 2012

After DevDay 2012 in Kraków

It's almost a week since DevDay 2012 conference that was held in Kraków, Poland, but I think it's still not too late to share my thoughts about this quite fabulous event. First of all, it was completely free, what at once gives you great price/quality ratio. But even if it had been paid conference, it would be worth paying. Top-class speakers, very interesting topics and ideas and perfect organization. A pity it was one day only.

Let me summarize each session briefly.

1. Scott Hanselman - It's not what you read, it's what you ignore

Scott is for sure one of the best developers amongst showmen and best showmen amongst developers. His session about productivity was absolutely great. Even if he doesn't say anything revolutionary, everything was worth reminding. These rather well-known ideas applied to our developers world with a great sense of humour made a good start. And hey, Scott doesn't suck that much! ;)

2. Mark Rendle - Hidden Complexity: Inside Simple.Data and Simple.Web

First technical session, quite insightful yet interesting and easy to follow. Mark showed some crazy stuff he implemented in his software and I was really impressed how much we can squeeze out of our old friend C#. Finding a real-life example when overriding true operator to return false makes sense was amazing!

3. Sebastien Lambla - HTTP Caching 101

A bit chaotic but funny and practical session about misuses of HTTP caching, with some advice about how to send proper headers and what to look for when dealing with IE failing to conform to the standard. Quote of the session: "[you can go with much cleaner solution XYZ] if you're a purist, but I don't think you are as I know all six of them".

4. Rob Ashton - Javascript sucks and it doesn't matter

Great session about the role of JavaScript in nowadays developers world, exactly hitting the jackpot. Rob discussed the five phases of attitude towards JavaScript - from negation and frustration to acceptance and reconciliation. I'm almost arriving to the end of this path, so I felt this session was exactly about me and my experiences. He also gave some useful advice on testing, JS code structure etc.

5. Martin Mazur - Why you should talk to strangers

Nice session about the fact that we developers are all in the same craft, no matter in which technology we work in and how useful is to look broadly and borrow good ideas and solutions from the "others", even from PHP developers ;)

6. Antek Piechnik - Shipping code

Well-prepared and practical presentation about how the development looks like in Antek's company - and it is organized according to all the current trends. But actually I think the session would better match at career days at some university. It stood out a bit from the other sessions, but still was not bad.

7. Greg Young - How to get productive in a project in 24h

Interesting session about code metrics in practise. Greg shown some useful tools to quickly measure things in the project in order to identify most smelly areas. He calls for using version control system as a data source to be inquired for a lot of useful data. Very interesting conclusion of the very well-spent day!

What to add more? Looking forward for the next year!

Monday, October 1, 2012

NoSQL Distilled - a small review

NoSQL DistilledI've just finished reading NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence, a fresh book by Pramod J. Sadalage and Martin Fowler and that's a good opportunity to do my first short book review. I don't have real NoSQL experience other than few hours of experiments with RavenDB, one Ayende's presentation and few posts on his blog, but it's enough to have some basic understanding of the topic. So I took the paperback dated 2013 with a lot of enthusiasm and curiosity.

The book is divided into two parts. The first consists some background shown from more theoretical yet readable perspective, different than on Ayende's blog, but still far from dry academic papers. The part covers concepts such as scaling or sharding and mentions CAP theorem. It also provides quite a good map-reduce idea explanation, but few more different examples will surely make it even easier to understand. This background information is not a must to start early experiments with NoSQL databases, but can be really useful for more DBA-minded programmers to become more familiar with the ideas.

The second part of the book, called "Implement", looks through the different NoSQL paradigms. Unfortunately, authors haven't avoided some repetitions from the first chapter, what is not really needed for such a thin book, I think. The second half compares key-value stores, document databases, column-family stores and graph databases using common criteria like terminology, scaling possibilities, query features, availability, support for transactions etc. There is also a strong emphasis on discussing the capabilities for operating in clusters. Some implementations for each NoSQL approach are mentioned, few pros and cons discussed, but the book doesn't fulfill a role of quick start guide for these databases - in order to implement even something very simple in each technology, one have to seek for another sources.

Although I was not extremely delighted with the book, I find it worth reading even only for the final thoughts and overall remarks. On the one hand, a trendy buzzword schema-free was demystified. The authors stressed that there is always a schema somewhere as the clients need to understand the data somehow and NoSQL solutions are just moving the responsibility of keeping the data definition from server side to the clients and this has some non-negligible consequences e.g. for data migrations. On the other hand, they are urging to use the proper tools for given scenario and convincing that RDBMS is not the one and only tool for everything. Even the book's subtitle mentions "polyglot persistence" - the concept that a single application can benefit from having multiple underlying data storing technologies, each of them designed exactly for the job it's doing.

And the final answer for the question "whether to use NoSQL databases" is as always: "it depends".