Rails: The Next Five Years by Yehuda Katz

Rails: The Next Five Years by Yehuda Katz

When Ruby on Rails burst onto the scene in 2004, it excited web developers by showing that you could build next generation apps quickly and efficiently. Rails was one of the first frameworks to embrace Ajax, giving everyone the power to do partial page updates and whiz-bang effects in a conventional, effortless way.

TextMate folder pattern

I reinstalled my Mac recently. Because it was a new installation a had to install everything from scratch which includes a TextMate. After a while of using it I get annoyed by dialog window for opening a file. It list lots of similar files from vendor folder in my Rails env. So I investigate little bit and find that you can modified settings for that (Preferences -> Advanced -> Folder references -> Folder pattern). When I’m trying to open a file, TextMate is ignoring vendor folder, now. You can see regexp for that bellow.

Looking for Ruby on Rails contract

To follow my passion which is writing my own applications and running, I decide to leave  Unboxed, where I had really great time. I was there almost 2 years and during that time I learn a lot, met lot of interesting people and work on lot of different types of projects. This is list of my projects that I was working on and my role.


simple platform, designed to enable teachers to connect, share their resources and start collaborative projects. Winner of Core 77 design award 2011. Responsibilities included:

  • Lead Back-end developer and Technical Architect
  • Performance optimisation for current 14000 active users
  • Skype API integration (Authentication)
  • integration with Amazon S3, SES (Emailing service), EC2 (Cloud hosting)

Skype New Year Eve

To bring in 2011 Skype launched an HTML5 site that tracked NYE as it happened around the world. Users uploaded videos to YouTube via the site which, in turn, were displayed on an interactive timezone map of the world. The site was designed to work across multiple platforms in including mobile and tablet optimisations. Responsibilities included:

  • Lead Back-end developer and Technical Architect
  • YouTube API integration with download performance optimisation

Skype Theme

Skype Theme is site where Skype Apple users can upload themes for Skype UI. Responsibilities included:

  • improvement of unsecured parts of application. Based on Security report from independent agency.

Extra special trust

The ExtraSpecial Trust is charity that offers small personal grants towards some of life’s important extras to help make a wish come true. Responsibilities included:

  • finishing of html templates
  • deployment set up for Heroku
  • Amazon S3 integration

Edna (Channel 5)

The Edna is programme database. It has been design to streamline the working processes of the Digital Media team. It provides sources programme, series, episode, cast and VOD availability data from a variety of sources for different sites. Responsibilities included:

  • integration with Movida (programme database)
  • export dat in XML and JSON – contained information are based on type if requested player or platfiorm

If you are interested to work with me you can sand me an email to petr(at)zaparka(dot)cz or if you are just interested what am I up to just follow me on twitter @zaparka

Art of presentation

I’m big fan of good and interesting presentations, especially if they make you think or change your life. Today I was browsing Mixergy talks (btw Andrew Warner is doing great job, although I’m missing that giant book shelf that he had behind in earlier episodes) and I saw talk The Presentation Secrets Of Steve Jobs – with Carmine Gallo. As the title says in this talk Andrew and Carmine are talking lot about Steve’s presentation skills and why he is the best presenter. I made couple of notes, so if  you don’t want to spent 1 hour watching interview on mixergy, here are couple of bullet points.

  • Tell a story – most of presenters are presenting just facts like dry numbers, graphs, long list of bullet points, … etc. You should start your presentation by telling a story. You should say, why the subject that you are talking about matter.
  • Educate your listeners –  when Marrisa Mayer had a presentation at SF Museum of Modern Art, she did’t start talking about what news she have. She start talking about search evolution. She said that in 1935 it would have taken you day and a half to find information on certain painting. Because you would have to travel to get to the library. Than she went through every decade, describing how search evolve. Her point was that what took you day and a half takes now 3 seconds.
  • 10 minutes rule – you will notice that every great presenter will take a ‘brake’ around 10 th minute of his/her talk. Reason is that human mind loose focus after 10 minutes and it doesn’t matter how good presenter you are.
  •  Intermezzo – is kind of brake that your brain need to re-focus on presentation. You should change interaction with your listeners by playing video or showing demo of your ‘thing’.
  • Twitter friendly headlines – did you notice that great presenters are not using slides with lot of texts on them ? The reason is, if you can’t formulate your idea in short twitter friendly headlines, your audience could misunderstood you or get quickly bored.
  • Numbers as equivalent of … – when Steve Jobs has been presenting iPod he says that device has 5GB big storage capacity which is equivalent of 1000 songs in your pocket. There was also ad called iPod 1000 songs in your pocket. If you saw that presentation did you remember that iPod had 5GB or that you can download 1000 songs to it? :)
  • Presentation are not just powerpoint/keynote – when you start working on presentation, to sit infront of your laptop and opening keynote should be the last thing that you should do. Start with sketches, draw a timeline, be creative and don’t be afraid to do something new and original.

During the interview Carmine mentioned couple of times Steve Jobs iPhone presentation  in 1997. Carmine also write a book called “The Presentation Secrets of Steve Jobs: How to Be Insanely Great in Front of Any Audience”.

To be honest, I like Steve Jobs presentation but my number one presentation is Identity 2.0 by Dick Hardt, you can watch it on youtube too.

Good luck with making your own great presentations.

Steak vs Cucumber as BDD tools

When I joined the world of Ruby on Rails development and testing I was quite happy with all the tools and testing frameworks available, I was using a lot of them during development process. Words like Rspec and Cucumber quickly became part of my vocabulary, along with other ‘magic’ words like Kanban and Scrum. BDD, or ‘Behaviour Driven Development‘ became a permanent part of my life!

It’s crucial for a project, that the features that a customer would like to have implemented into the finished product are captured as well defined stories early on. We’ll eventually use these stories as a template for our tests. Cucumber is an especially good tool for using these stories as templates for testing. So what is Cucumber and what does it look like?

Here’s the explanation on Cucumber’s own wiki.

Cucumber is a tool that executes plain-text functional descriptions as automated tests. The language that Cucumber understands is called Gherkin.

Here is an example:

As you can see, Cucumber allows you to easily describe the behaviour of your new feature. In fact, it’s that good that some of our customers are using Cucumber descriptions as the acceptance criteria on their project’s stories. So where’s the catch? Well, not everything in cucumber is as easy as it may look. Even though cucumber has lot of pre-defined “phrases” to describe the behaviour of an application, you soon find out that sometimes it can be really tricky to preserve the readability of stories that are more complex than just: “And I should see ‘a yellow box” for example. When it gets tricky it gets really time consuming. And even if you know that implementing the related functionality is really easy – writing the proper, readable cucumber test that makes sense is sometimes very hard. I’m not complaining about writing tests in general. I’m complaining about how hard it is sometimes to achieve basic readability of tests! Does the average customer really have to understand the tests we use? If they do, then ok – I’m here and I’m prepared to write those nice, readable tests for them.  But what if they don’t care? Well there is another way around: the solution is called Steak.  So what is Steak? Steak is an Acceptance BDD solution (like Cucumber) but in plain ol’ Ruby. This is how an acceptance spec looks in Steak…

As you can see, there is a Feature description and a Scenario description, but the rest is Ruby language with Capybara syntax. But why do I think this is so special, and why do I think you should use it? Well it’s much, much faster to write those complex, yet readable tests, and it’s easy to maintain.

Recently, I was working on a tough project where I was the only back-end developer and there was one front-end developer; let’s call him Tom. At the start of this project we were using Cucumber. It took such a long time to write some of the tests, and because there were a lot of front end changes, we had to fix and re-write a lot of these Cucumber tests. Tom found he wasn’t that comfortable writing Cucumber scenarios, so it took him longer to fix them. At the start of the new iteration, I decided to use Steak instead of Cucumber. I discussed with Tom how Steak works, and he preferred it immediately. We started implementing new stories and development suddenly went really well and much quicker. I was writing Steak stories much faster, and Tom was faster too. So, by the end of the iteration there was no complaining about fixing Cucumber stories, and there was a lot more delivered functionality; them were some good times.

Is it Steak final solution?

Maybe, maybe not. It really depends on you and your customer’s needs, but what you really should do is to try it out yourself. You will see how much faster your development process can became.

Are you victim of Stockholm syndrome?

I recently listened to a podcast called ‘Developers Life’ where a couple of developers and project managers talked about some rotton projects they’d worked on and how it’s sometimes hard to get perspective and realise that some projects are so bad they’re more bother than they’re worth.

When you’re a developer or project manager working in a framework like Scrum, Kanban or Agile, you can usually look over at the wall and see a big white board with the name of all the projects, and all the stories pertinant to them. The stories will all be in different states: ready for dev, in development, in testing etc.

From a success point of you, you and your team might be cracking the project and delivering the code to the client; but there is another issue you may need to consider. Can you remember how long the project has gone on for? Did you notice that customer or product owner keeps changing their mind all the time, or do you feel they’re doing other things to unwittingly sabotage your work? Did you find out yourself implementing the same functionality again and again?

I know it’s the client’s money, and I know it’s the money that pays your wages and enables you and your team to buy all the fancy toys for you want or need. However even though money is good in the short term, in the long term the happiness of you and your team is much more important. Bad, negative projects are out there all the time and what’s even worse is that you could be working on one right now and you haven’t even noticed! If you are, than I am sorry to say – you could be victim of Stockholm Syndrome!

Stockholm Syndrome, as many of you probably know was observed in Stockholm, when, “bank robbers held bank employees hostage for 6 days. The victims became emotionally attached to their captors, and even defended them after they were freed.” (source: http://en.wikipedia.org/wiki/Stockholm_syndrome).

Imagine that, 6 days in a terrible environment with violent people. Could this make you lose your “common sense” ? Now, how long have you worked on these bad projects? They last for longer than 6 days don’t they? You might be working in great environment with great people, which this actually could be much worse, because the beast is out there and you didn’t notice. You are a victim, and you should be freed, but how you can tell if this is really the situation you’re in?

Don’t worry, there is a way to recognise what’s happening. One solution could be found in doing retrospectives. It’s good practice to do retrospectives because it allows you to improve your process and you’re taking an active role in solving any problems with the project or the team. It’s about upfront communication. That means if you notice there are repeating complaints about the customer or project’s craziness, you can let everyone know and solve the problem quickly and for good.

Another way to realise that there’s something wrong is Pareto principle (http://en.wikipedia.org/wiki/Pareto_principle) also known as 80/20 rule. In short, roughly 80% of the effects come from 20% of the causes. That means you can spend so much time and effort to keep going on a nightmare project, but the income and achievement just doesn’t match up. The last way is outside observation by somebody who is working in your company or for your company, but not on the same project. This person could give you proper insight.

Do you have any other suggestions of how to be aware of Stockholm Syndrome in your project ? If yes, then share it with us please :).