ActionCable and authentication with Devise (2/2)

This is a short follow up on the previous article in which the ActionCable basics were explained. We can now add some level of authentication. Authentication is a bit harder than simply registering some before_action’s, but it is perfectly doable, especially if you've survived the previous tutorial.

From the official Action Cable guide we can simply reuse the full connection.rb template:

module ApplicationCable
  class Connection < ActionCable::Connection::Base
    identified_by :current_user
    def connect
      self.current_user = find_verified_user
      def find_verified_user
        if current_user = User.find_by(id: cookies.signed[:user_id])

Continue reading...

Getting started with Rails ActionCable (1/2)

An article, posted 22 days ago filed in , , , , , , & .

As the lead developer at I wanted to try the new Rails ActionCable technology for a new feature: shopping lists. The idea is that you can walk in a store or on a market, mark an ingredient as checked when you add it to your (physical) basket and continue shopping. ActionCable can make the experience nicer because it, based on WebSockets, allows for real time notifying other viewers and editors of the same shopping list. No more shouting around in the supermarket: I’ve got the milk! Sure, nothing essential, but I needed an excuse ;)

(Note that we recently migrated from Rails 4, so not everything was in place in our app, just ignore the bits Rails already made for you; everything has been tested with Rails

Getting the basics right

To start: You need a web server that can open multiple threads, so if you’re still using Webrick in development (which can’t rece…

Continue reading...

Try not using Javascript first

An article, posted 23 days ago filed in , , , , , , & .

My guiding principle in web-development is (still): Always make things work without (client side) JavaScript first.

Aside from offering a graceful degradation of the experience by progressively enhancing it leads to better code. Three reasons why:

  1. it forces you as a developer to think about logical endpoints for your form submits, your data requests etc. Typically this leads to fewer cases of overloading a resource with all kinds of unrelated functionality (yep, I'm a big REST-first advocate).
  2. your application will probably be more web-native, and hence more future proof, more easily cache-able, etc.
  3. the front-end JavaScript to enrich the experience will typically also be less complex and can be generalized more easily.

Yes, I do shiver when I hear things like CSS in JS, KISS!

Photo by [Dmitry Baranovskiy](…

Continue reading...

We don't need more silos

An article, posted about one month ago filed in , , , , , , , & .

Apps are a great commercial succes. Every new operating system is claimed to be doomed. Still, most people use only 3 apps, 80% of the time (and 10 apps total 96% of the time).

While we cherish simple, little and focussed, these constitute a too limited view on what software could be. Not because simple, little and focussed is bad, but because many apps lack an important bit: interconnectivity. Most apps are silos.

We need integration

Integration nowadays is limited to simple sharing (typically ironically mostly urls) and a look and feel of the applications which is carefully described in Human Interface Guidelines that make things look integrated, like these: iOS UI guidelines and Android Material Design.

Still, wh…

Continue reading...

Be careful with what you ask for

An article, posted 2 months ago filed in , , , , , , , & .

Since we all seem to know that every other field in the registration form is another percentage of users failing to register*, we think of alternative ways to gather information. We gamify the user profile completeness by adding a progress bar to our user account, we present a full form after the confirmation link or we ask questions while using the application.

But there is another reason why we might not even ask all the questions. Ask the wrong questions and you may alienate your user.

It can be relatively minor things like picking your favourite colour, where the form just lets you pick one colour, while many have multiple. But it may also be more personal (or one could argue, more political): not everyone defines oneself as male or female, so why only present just these options (and do know that it isn’t particularly nice being referred to as ‘the other’ all of the time).

These issues are well discussed in this [talk by Ca…

Continue reading...

De principes van murb

Toelichting: Niet iedereen maakt applicaties op dezelfde manier. In de loop der jaren heb ik wat principes ontwikkeld waaraan ik mij probeer te houden wanneer ik oplossingen realiseer. Het zijn handvatten waaraan ik mijzelf probeer te houden. Ik hoop ook dat opdrachtgevers mij hieraan helpen herinneren mocht het, vergeef me, toch nodig zijn. Vandaar deze openbare declaratie.


Het idee dat zaken veelal onnodig complex gemaakt worden? Het komt maar al te vaak voor dat IT-bedrijven oplossingen willen bouwen die geschikt zijn voor alles. Maar dat heeft een prijs: complexiteit. De minder complexe software van murb is eenvoudiger te gebruiken en ook nog eens goedkoper aan te passen aan jouw wensen.

De eindgebruiker staat centraal

Heb je het gevoel dat de gebruiker wordt vergeten bij lange lijsten met features? Er wordt door murb in de eerste plaats gewerkt aan gebruiksvriendelijke oplossingen. Met een duidelijke mens-machine interactie en interactieontw…

Continue reading...


An article, posted 2 months ago filed in , , , & .

It seems to happen, people who are at their thirties completely lost in their career.

For life’s problem of feeling lost there is no GPS, nor a map. Don’t expect enjoyment in random short lived ‘interesting’ idea consumption, try week+ long exploration of unknown territory instead.

When young, society allows you to try new stuff, but at the age of 30 you might start to think that society expects you to know it all. That you’re the senior. Stop believing this.

There is no route other than the one you’re taking. Continue, explore and experience, but ignore expectations. Finding optimal happiness is an NP-hard problem, try to find your happiness in traversing.

Continue reading...

Let’s encrypt! It’s easy!

An article, posted 3 months ago filed in , , , , , , , & .

There important reasons to use HTTPS. It makes your systems more secure, helps to protect your users privacy, and will prevent others to hijack your account to deface your site.

If you’ve ever tried to secure your site you may have found how hard it is. You have to generate a private key, a certificate signing request, upload that request somewhere, pay, process the e-mail, upload the certificate, configure your server and set a reminder that in 1, 2, 3 or 5 years you’ve got to go through most of that same process again (which I described before in more detail in an earlier "how I do it"-article. Well, no longer! Enter: Let’s encrypt.

> Actually, Let’s encrypt is so easy that I had doubts whether I should even write this post. But maybe it wins an extra soul or two over.

The recommended way to get sta…

Continue reading...

Notes: How to Hack PR for Your Startup

An article, posted 3 months ago filed in & .

Just attended a free webinar from Founder Institute: “How to Hack PR for Your Startup”. Here are some of their (Adeo Ressi (FI) and Conrad Egusa ( main takeaways:

  • Make sure you have a great design, no-one needs to tell you that
    1. Formulate the announcement: Make sure you’ve got news when you approach TechCrunch etc;
    2. Amplify your dreams; Let’s go to Mars!
    3. Messaging: the press release; make sure to make it as easy as possible: $20 /article; E-mail pitch (sell), press release is the make it easy to write. Make sure you use social proof, interesting stuff that adds to an interesting tool. Link your LinkedIn, Twitter etc. “Hi I’m Maarten (LinedIn, @murb”.
      1. Make sure you follow up, but don’t spam
      2. Don’t sell!
      3. Own: Make it your own
    4. Outreach. Create exclu…

Continue reading...

Mijn werk: QKunst Collectiebeheer

An article, posted 3 months ago filed in , , , , , & .

murb bestaat 6 jaar. Een goed moment om terug te blikken op de opdrachten van weleer. Deze keer: QKunst Collectiebeheer

Wat is het?

Dit is wat QKunst zelf schrijft:

> QKunst is gespecialiseerd in het inventariseren van grote bedrijfscollecties. Om deze inventarisaties nog soepeler te laten verlopen, ontwikkelden wij QKunst Collectiebeheer, een web applicatie voor collectiebeheer. Hiermee worden grote hoeveelheden informatie over een collectie toegankelijk en kunnen we uitgebreide rapportages uitdraaien.

Het probleem

QKunst had te maken met meerdere zaken die verbeterd konden worden ten opzichte van hun oude tool: Excel.

  • De foto’s van kunstwerken waren lastig te beheren,
  • Rapportages waren moeilijk te maken,
  • Versiebeheer vroeg te veel aandacht.

Gaandeweg ontonden er nieuwe ideeën waarmee de dienstverlening verder verbeterd kon worden: communica…

Continue reading...

User vs usage friendly

An article, posted 3 months ago filed in , , , & .

In English usability folks typically talk about user friendliness. Literally translated, user friendly translates in Dutch to "Gebruikersvriendelijk". In Dutch "Gebruikersvriendelijk", however, is used interchangeably with “Gebruiksvriendelijk” (see also: Taaladvies) which translates literally back to “usage friendliness”. Not too fast: these might be two different concepts after all.

  English Dutch
User friendly / gebruikersvriendelijk 61,300,000 622,000
Usage friendly / gebruiksvriendelijk 5,930 250,000
Ratio 1 / 10.000 5 / 2

Table: Google’s frequency counts for the different languages

User friendly

User friendly is about being nice to the user. Making something user friendly may be about nice icons, nice words, nice visual design, but you can, strictly speaking, still be very friendly and not allow a user to accomplish a certain task.

Continue reading...

Agile is dood, leve agility!

An article, posted 3 months ago filed in , , , , , & .

Niet lang nadat ik een eerste post had geschreven in mijn miniserie over het agile manifesto kwam ik een talk tegen van Dave Thomas, een van de opstellers van het manifest voor agile software ontwikkeling, die verklaarde dat Agile dood is.

TLDW (too long, didn't watch); Agile is geen zelfstandig naamwoord, dus 'Agile Manifest' is sowieso een raar begrip, maar het verkoopt lekker. Agile wordt verkocht als een kant en klaar pakketje wijsheden dat je gemakkelijk kunt implementeren met behulp van (goed betaalde) experts. Deze wijsheden worden gepresenteerd als universeel (iets dat geen enkele regel is). Probeer daarentegen altijd stapsgewijs je proces, product, project (… eigenlijk alles) verder te optimaliseren volgens het enige universele stappenplan dat er is:

  1. Weet waar je je bevind
  2. Neem een klein stapje naar je doel …

Continue reading...


An article, posted 4 months ago filed in , , , & .

I had a few projects that I thought could use some share 'buttons', but I didn't like to include the JavaScript loaded and privacy invading share buttons that the networks try to sell you by default. Neither did I like to concatenate the links with all variables required for each project… so I wrote a small rubygem on a back and forth train trip (#ilovetrains ;)): social_linker.

The idea is that you share something about a certain subject, hence you initalize the SocialLinker::Subject and then you'll be able to generate share links from it:


How it works

Initialize the subject with enough material to generate links from, such as the page's url, maybe the media url (mainly for Pinterest type-shares), a description, tags etc.

For example, initialize the SocialLinker::Subject as follows:

social_linker_subject = SocialLinker::Subject...

Continue reading...

Mijn werk: HeerlijkZoeken

An article, posted 4 months ago filed in , , , , & .

murb bestaat 6 jaar. Een goed moment om terug te blikken op de opdrachten van weleer. Deze keer: HeerlijkZoeken

Wat is het?

HeerlijkZoeken is een zoekmachine voor recepten in kookboeken, en sinds enige tijd ook foodblogs.

Het probleem

Het internet staat vol met recepten, maar de kwaliteit is zeer wisselend. In veel boekenkasten, in het bijzonder die van kookliefhebbers, staan veel kookboeken met mooie recepten, maar de recepten zijn slecht vindbaar. De boeken verstoffen terwijl het gemak van online zoeken het wint van de hang naar hoge kwaliteit. Ook de meeste kookliefhebbers zijn toch satisficers. Het wordt tijd dat die lekkere recepten veel beter doorzoekbaar worden, zo dacht Peter Bakker, mijn oud werkgever en kookgek.

De oplossing

Samen zijn we de beste zoekmachine voor recepten gaan bouwen die niet alleen h…

Continue reading...

Context vinden

An article, posted 4 months ago filed in , , , & .

Een klein informatiebordje is gemakkelijk bij een object te plaatsen om meer informatie te bieden, maar hoe kun je een informatiebordje verrijken met nog meer informatie die een gebruiker gemakkelijk tot zich kan nemen? Hiervoor zijn verschillende technieken beschikbaar zoals Beacons, QR-codes, Afbeeldingsherkenning, (nummer)codes beschikbaar. Maar wat zijn de voor- en nadelen?

Bluetooth Beacons

De Bluetooth Beacon technologie lijkt op papier de mooiste manier om locatie-gebaseerde informatie door te geven. Sta je op een meter afstand van een werk dan kan een telefoon gesignaleerd worden om een melding te presenteren wanneer je een daarvoor speciaal ontwikkelde app hebt geïnstalleerd. Beacons worden in de cultuursector gebruikt door o.a. het Groninger museum (zowel op iOS als Android). Het nadeel van Beacons is dat deze (nog steeds) relatief duur zijn (~€20 per stuk voor zelfstandig opererende beacons) en …

Continue reading...

murb blog