User group for Viennese rubyists

organizing meetups for Ruby and Rails developers in and around Vienna, Austria.

Viennarb #30 - Summary

Hello! We had a lot of fun at our thirtieth edition of Vienna.rb. Quite a milestone! As commemoration, our lovely meetup-ers were treated to delicious cupcakes and banana bread.

If you missed out on the deliciousness, fret not! Here’s the brain food:

Our Talks

Tawan — Domain Specific Languages — What are they good for, and how does Ruby help

Tawan was very kind to introduce us to the world of Domain Specific Languages, or DSLs, for short. He started by drawing up the distinction between technologies that fall within the definition of a DSL, and which don’t:


  • SQL
  • HTML
  • Rspec

Not a DSL

  • Ruby
  • Java
  • PHP

When trying to categorize these, it’s important to think about what you want to achieve against how you want to achieve.

The fun image of an onion chopper was brought up: It’s easy to use, it’s safe, easy to explain and to learn. This is what we want to achieve when designing a DSL! Thank you Tawan!

Emi — Super fast image resizing with ruby

Emi gave us some insight into what goes on during work!

Creating smaller or bigger versions of images in a ruby application needs to be done quickly! Usual toolks used for this are things like imagemagick or CoreImage.

On this fateful day, Emi introduced us to libvips. On the surface, its advantages include:

  • Being quicker than imagemagick
  • Using less memory than the above
  • Being open source

We have a nice ruby wrapper, too! It’s called ruby-vips.

Other nice things include calling up header data without reloading pixels, shrinking an image upon loading, specifying target resolutions quickly, and more!

Of course, there are downsides:

  • It’s not as simple or as high level as rmagick
  • It has the occasional memory leak
  • The contribution is not so active

Thanks for the talk, Emi!

Max — Mongo on demand — NoSQL in PostgreSQL

In Max’s talk, we dive into the world of NoSQL, which is a term for databases that don’t use tables.

NoSQL databases have their uses in the world of data storage. For example, Trello cards have several parts into them that don’t fit a specific data type.

Max showed us how to use a Mongo-like data storage in postgres. This is done using JSON. Postgres offers either JSON or JSONB, the latter of which is a decomposed binary format, but allows indexing, which means faster queries.

After showing us a demo, Max made it apparent that using JSONB is much faster, and using the store_accessor declaration in rails lets us declare fields that will be accessed often.

One thing that needs to be noted, though, is that the JSONB type is available starting with postgres 9.4. Thanks for sharing, Max!

After our talks

Brave volunteers came up and gave us some tips and insights into their work. Below is a list of these (should be most, if not all):

We wrap up with some friendly chit chat.

Wanna stay in touch? Follow us @viennarb.

‘Til next time!