what we blog

Setting up a Rust Development Environment

In this post we'll be discussing one way to set up your machine for Rust development. There are different ways, particularly related to the text editor, so feel free to skip what is irrelevant to you. We'll focus on:

  • Setting up Rust via Rustup...
Read more

The Future With Futures

Recently there has been a lot of progress in the Rust language towards a robust asynchronous stack. In this article we'll take a look at what these things are, take a tour of what's available, play with some examples, and talk about how the pieces...

Read more

What I Learned from Giving a Rust Training

Over the last three days, I've given my first full training on Rust to ensure there's now four people in Germany that can call themselves "trained Rust engineers". Thanks to everyone who attended and thanks to Linuxhotel for organising the training...

Read more

Come work at asquera!

Asquera is looking for a full-time Senior Backend Developer (all gender) with interest in databases and backends to complete our inclusive team. Our office is located in Kreuzberg and unfortunately not wheelchair accessible.

Who we are

Asquera, that...

Read more

TDD with Guard

Using Guard for TDD

In the Ruby community testing and in particular test-driven development (TDD) is a common practice. When writing a gem this is often one of the first steps to set up by picking a suitable test framework. Creating a gem via Bundler

Read more

Writing a command line application in Elixir

During the last days I got the chance to spend a bit of time playing around with Elixir. Elixir is, compared to other languages still a very new one. It has a Ruby-like syntax and compiles to Erlang VM bytecode. It is available for all major Linux...

Read more

Testing external APIs in Ruby

Writing web services or applications that consume APIs is a common part of web development. Be it either a web service that is developed internally or by using an existing API from a 3rd party.

When writing tests against an external API one can face...

Read more

Getting git right

On the 27th November, after the last Mrgn of the year, I spent the afternoon at the Getting Git Right event organised by Atlassian (makers of JIRA, Confluence, Stash, Bitbuckets and some other developer tools we have used before at asquera) and Codecentric...

Read more

Asquera on Eurucamp

August is here and with August, eurucamp. Our CEO Florian was involved in the organising team as in previous years and the Asquera team will be attending the conference.

eurucamp started in 2011 as a reject conference for EuRuKo. This year eurucamp...

Read more

Properly using Elasticsearch Script Filters

Elasticsearch comes with a vast number of filters and queries for all sorts of things, including special strategies and combinations of those. In some rare cases though, these are not enough. For these cases, Elasticsearch ships with the script filter, allowing arbitrary scripts to run on a document to decide whether it should be filtered or not.

These come at a high cost and are impractical to run on larger datasets. However, given the right approach, this can be mitigated.

Read more

systemtap and Ruby 2.1 (on Ubuntu)

I like dtrace. I also like Linux. And thats where the problems begin: there is no proper dtrace for Linux. However, systemtap exists. systemtap is compatible to dtrace probes, however, it comes with it's own scripting language.

For those who don't know what any of these are: both are tools to efficiently trace programs at runtime, with a very low overhead. To allow that, they use so-called "probes" compiled into the program. Your kernel is usually equipped with such probes and Ruby 2.0 or higher also comes with quite a few of them.

However, the whole process is a bit involved and I found no good explanation for the whole setup and the pitfalls. Read on for my attempt. I will use Ubuntu as an example system.

Read more

Berlin/wroc_love.rb Bus, 2nd Edition

We are big fans of the wroc_love.rb, not only because the first edition fell together with the founding of this very company. It is a nice, very affordable conference with a very well-picked, software-focused program. Because Wrocław is so close to...

Read more

Jan Schulte joins Asquera

This month, we welcome Jan Schulte to strengthen our backend development team at asquera.

Jan Schulte

Originally from a small village in NRW, Jan worked in Hamburg for 1,5 years. He started his developer life with the Microsoft toolchain (Windows, Visual Studio...

Read more

Ernesto Miguez is an Asquera - dor

We are pleased to welcome @xemig to the team. Ernesto brings his polyglot skills with computers and humans to Asquera where he will be part of the backend team.

Ernesto speaks fluent spanish, english, dutch, french and some german. His list of programming...

Read more

An elasticsearch development workflow with curl and bash

elasticsearch is not quite like other databases - this is unsurprising, because elasticsearch is actually an index server. Data storage is secondary and happens though attaching the input data to a special field for later retrieval (thats the _source) field. This has interesting implications to your workflow. For that reason, I'd like to present my workflow when developing elasticsearch indices.

Read more

Vagrant on Mavericks


Since this post got a lot of attention last night (hey all of you upgraders!) I'll add a couple of things that I figured out since writing the post.

  • Please note that this post refers to VirtualBox 4.2. In the meantime 4.3 has been released...
Read more

My mum is a bad example, yours too

Just by accident, a tweet hit a nerve today and made me finally write this blog post. Also, to not bore you to death, its a "how I got started with IT" kind of story in disguise.

Please stop using "my mom" as a stand-in of "computer-illiterate" (and generally a bit dull on the technical side) person in your talks (and anywhere else, for the record). You will lose me there. Not because its subtly sexist (it is, for as long as "your dad" is not mentioned quite as often in that context), its also a subtle mistake. This might sound a bit like arguing semantics here, but let me explain on how its really an issue of not opposing your audience, because some of your audience does not hold your world view.

Read more

Decoupled first

In Frontend first, Andrzej Krzywda argues for developing Frontends without any backend interaction first to make sure that all the user flow works and where and what you actually need to persist. I'd like to present a similar approach, but on another level.

Read more

ElasticSearch pre-flight checklist

I attended the ElasticSearch base training this week and took away lots of very interesting details. I can definitely recommend taking them, the training made a lot of things clearer to me. One of my most immediate benefits was that it allowed me to compile a little "pre-flight" checklist of things that should never be skipped when bringing an ElasticSearch cluster to production. To ensure that I don't forget it and you don't start into your ElasticSearch life with huge amounts of pain, I'll document it here. Thanks to bascht for proofreading and fixes!

Read more

Getting bored of the Rails Monotheism

Every once in a while, this tiny quote pops up in my twitter feed. I am not even sure where it originated.

This time, it ended in this conversation with Steve Klabnik.

As someone who has seen and implemented several successful and clean projects using Sinatra and subsequently Padrino, I'd like to call anyone out who uses this or any similar quotes to easily and try to explain both projects from my point of view. It basically comes down to a point of misunderstanding of what both projects try to accomplish. It might also be some miscommunication in the community as a whole. And the biggest point is a community that dukes out things like this on Twitter using 140 character quotes.

Sorry if things might become a bit inconsistent, I am basically writing a few things off my chest that nagged me for a while. I'll start by explaining where I see both Sinatra and Padrino in the webframework ecosystem.

Read more

Hip but flawed: CFPs on Github

CFPs as pull requests on Github are the new hotness in town, at least when organizing a Ruby conference. Euruko 2012 did it, Sapporo RubyKaigi did it and RubyConf Australia and RuPy are following suit. My tweet today that I don't like the approach at all was met by a fair amount of reactions and I was asked to elaborate, so I'd like to do this here. I organized eurucamp this year and we consciously decided against it for various reasons, but these reasons are solely my own.

Read more

Category: Open Source

Open source is the third category we'd like foster in this blog. We use a lot of open source and we write some as well. In this category, we'd like to talk about libraries we've found an like, changes to our own and things we learned in the process...

Read more

The beginners track

The beginners track is another category that we want to turn into a regular one on this blog. Helping beginners is my hobby (granted, sometimes it pays the bills, too) and I still see a lack of high-level resources about programming techniques. While...

Read more

Ruby tricks: in need of rescue

Throwing exceptions is nice, but handling them can get a bit of a chore. One of the main reasons: constant reindenting of your code because you insert or remove a begin end section. While your text editor should be able to cope with that just fine, reindenting is just a mess in source control. But, for trivial cases, we can call Ruby to the rescue!

Read more

Ruby tricks: detect evaluation of default arguments

Default arguments are an often used feature of the Ruby programming language. Their basic syntax is simple:

def foo(bar = nil)
  bar == nil

This gives us two ways to make sure that foo evaluates to true:

a = nil
foo #=> true
foo("a") #=> false
foo(a) #=> true

Curious as we are, there is one question left: How do we detect whether the caller passed no argument or that he passed an argument, which just happened to be nil?

Read more

Ruby tricks: introduction

Its one of our hobbies and thats why it became launch categories as well: weird ruby tricks. This category will show small ruby tricks that allows you to take a glimpse at how the language works. Some of them are useful, some are not, but usually fun...

Read more

meet the team

[{"date":"4-08-2017","name":"SHA 2017","place":"Zeewolde","member":"asquera","link":"http://sha2017.org"},{"date":"3-06-2017","name":"Ruby C Kiev 2017","place":"Kiev","member":"florian","link":"http://rubyc.eu"},{"date":"6-05-2017","name":"JSConf EU","place":"Berlin","member":"brigitte","link":"http://2017.jsconf.eu"},{"date":"4-05-2017","name":"Mozilla Roadshow","place":"Berlin","member":"florian","link":"https://www.meetup.com/Zalando-Tech-Events-Berlin/events/238078772"},{"date":"2-05-2017","name":"Mozilla Roadshow","place":"HH","member":"florian","link":"https://www.meetup.com/decode-hh/events/238288684"},{"date":"30-04-2017","name":"RustFest","place":"Kiev","member":"asquera","link":"http://rustfest.eu"},{"date":"4-03-2017","name":"IFF","place":"Valencia","member":"asquera","link":"http://internetfreedomfestival.org"},{"date":"24-02-2017","name":"BOB Konferenz","place":"Berlin","member":"ernesto","link":"http://bobkonf.de/2017/en"},{"date":"20-02-2017","name":"Relaunch","place":"Berlin","member":"asquera","link":"https://infopark.com/de/relaunch"},{"date":"27-10-2016","name":"RubyConf PT 2016","place":"Braga","member":"asquera","link":"http://rubyconf.pt"},{"date":"27-10-2016","name":"Rust Belt Rust 2016","place":"Pittsburgh","member":"asquera","link":"http://www.rust-belt-rust.com"},{"date":"17-09-2016","name":"RustFest EU 2016","place":"Berlin","member":"asquera","link":"http://www.rustfest.eu"},{"date":"22-07-2016","name":"RGB Beginners Workshop","place":"Berlin","member":"asquera","link":"http://railsgirlsberlin.de/beginners-workshop"},{"date":"02-07-2016","name":"RuhrJS Conf 2016","place":"Bochum","member":"asquera","link":"http://www.ruhrjs.de"},{"date":"08-06-2016","name":"June 8th meetup","place":"Berlin","member":"asquera","link":"http://www.meetup.com/Rust-Berlin/events/231188250"},{"date":"01-06-2016","name":"Rust Hack and Learn","place":"Berlin","member":"asquera","link":"http://www.meetup.com/de-DE/opentechschool-berlin/events/230297272"},{"date":"18-05-2016","name":"Rust Hack and Learn","place":"Berlin","member":"asquera","link":"http://www.meetup.com/de-DE/opentechschool-berlin/events/hrrtmlyvhbxb"},{"date":"04-05-2016","name":"Rust Hack and Learn","place":"Berlin","member":"asquera","link":"http://www.meetup.com/de-DE/opentechschool-berlin/events/230041339"},{"date":"26-04-2016","name":"Search UG Berlin","place":"Berlin","member":"asquera","link":"http://www.meetup.com/de-DE/Search-UG-Berlin/events/230166132"},{"date":"23-04-2016","name":"Rails Girls Berlin WS","place":"Berlin","member":"asquera","link":"http://railsgirlsberlin.de/beginners-workshop"},{"date":"23-04-2016","name":"JS Unconf Hamburg","place":"Hamburg","member":"asquera","link":"http://2016.jsunconf.eu"},{"date":"20-04-2016","name":"Coach the Coaches","place":"Berlin","member":"asquera","link":"http://railsgirlsberlin.de/coach-the-coaches"},{"date":"11-03-2016","name":"Bath Ruby UK","place":"Bath","member":"asquera","link":"http://2016.bathruby.uk"},{"date":"03-02-2016","name":"Leaf and Collenchyma","place":"Berlin","member":"asquera","link":"http://www.meetup.com/Rust-Berlin/events/227321071"},{"date":"26-01-2016","name":"Search UG Berlin","place":"Berlin","member":"asquera","link":"http://www.meetup.com/Search-UG-Berlin"},{"date":"13-01-2016","name":"Rust Berlin","place":"Berlin","member":"asquera","link":"http://www.meetup.com/Rust-Berlin"},{"date":"13-01-2016","name":"RubyShift MUC","place":"Munich","member":"asquera","link":"http://www.meetup.com/Munich-Rubyshift-Ruby-User-Group"},{"date":"27-12-2015","name":"CCC (32C3)","place":"Hamburg","member":"asquera","link":"https://events.ccc.de/congress/2015/wiki/Main_Page"},{"date":"17-10-2015","name":"EuRuKo","place":"Salzburg","member":"asquera","link":"http://www.euruko2015.org"},{"date":"14-09-2015","name":"RubyConfPt","place":"Portugal","member":"asquera","link":"http://rubyconf.pt/"},{"date":"31-07-2015","name":"eurucamp","place":"Berlin","member":"asquera","link":"http://2015.eurucamp.org"},{"date":"07-05-2015","name":"rug-b","place":"Berlin","member":"asquera","link":"http://www.rug-b.de/"},{"date":"25-04-2015","name":"ROSSConf","place":"Wien","member":"jan","link":"http://www.rossconf.io"},{"date":"21-04-2015","name":"para//el","place":"Karlsruhe","member":"florian","link":"http://www.parallelcon.de/veranstaltung-4710-parallele-programmierung-in-rust.html?id=4710"},{"date":"26-03-2015","name":"mrgn.in","place":"Berlin","member":"asquera","link":"http://mrgn.in/berlin"},{"date":"27-11-2014","name":"mrgn.in/berlin","place":"Berlin","member":"asquera"},{"date":"25-11-2014","name":"Elasticsearch UG","place":"Berlin","member":"asquera"},{"date":"14-11-2014","name":"Silicon Drinkabout at Le Labo","place":"Berlin","member":"asquera"},{"date":"13-11-2014","name":"UI versus UX at Betahaus","place":"Berlin","member":"asquera"},{"date":"06-11-2014","name":"goto conference","place":"Berlin","member":"asquera"},{"date":"01-08-2014","name":"eurucamp","place":"Berlin","member":"asquera"},{"date":"31-07-2014","name":"mrgn.in/berlin","place":"Berlin","member":"asquera"},{"date":"29-07-2014","name":"Elasticsearch user group","place":"Berlin","member":"asquera"},{"date":"24-06-2014","name":"Elasticsearch user group","place":"Berlin","member":"asquera"},{"date":"05-06-2014","name":"RUG:B","place":"Berlin","member":"asquera"},{"date":"28-05-2014","name":"Elasticsearch Hackfest","place":"Berlin","member":"asquera"},{"date":"23-05-2014","name":"RubyConf Uruguay","place":"Montevideo","member":"florian"},{"date":"12-05-2014","name":"Scottish Ruby Conf","place":"Perthshire","member":"asquera"},{"date":"08-05-2014","name":"RUG:B","place":"Berlin","member":"asquera"},{"date":"29-04-2014","name":"Elasticsearch Meetup","place":"Berlin","member":"asquera"},{"date":"03-04-2014","name":"RUG:B","place":"Berlin","member":"asquera"}]