Considering online generation of certificate requests

Recently I’ve been researching what other Certificate Authorities do within the domain of online generation of certificate requests (and related private keys).

It is tricky territory: JavaScript and Crypto. Or more generic, webapplications and crypto. But with the advance of the WebCryptoAPI some issues that were raised (e.g. insufficient random number generation) by security experts have been addressed, but still: the WebCryptoAPI entry on MDN starts with a fair warning: “If you're not sure you know what you are doing, you probably shouldn't be using this API.”

Why think about a web implementation at all to create a certificate request? Typically tools to generate certificates are hard to use. Just look at the list of options a user has to generate certificates, which are typically all of…

Continue reading...

Total cost of ownership valt niet te generaliseren

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

Om de zoveel tijd komt de term weer terug: 'TCO'. Total Cost of Ownership. Hoeveel het allemaal bij elkaar kost. Het werd in het verleden ondermeer uit de kast gehaald door Microsoft om te waarschuwen voor de kosten die de conversie van naar opensource software met zich mee zouden brengen. Onder TCO wordt dan ook gekeken naar o.a. opleiding, de kosten van licenties, wat de onderhoudsmedewerkers kosten (linux beheerders zouden duurder zijn dan mensen met een microsoft diploma). Wat willekeurige observaties.

Jaren terug genoteerd:

> Grappig om te zien hoe hij met het bijna niets kostende stukje software (van een grote speler) vele uren bezig is om via de complexe interface iets relatiefs simpels voor elkaar te krijgen: een factuur te printen. Straks gaat het zich terugbetalen, zo gaat het argument… maar ik heb er weinig vertrouwen in. Niet in dit geval. Wanneer je werkt met relatief grote bedragen worden er niet zoveel facturen verstuurd. Automatische koppelingen met de bank is …

Continue reading...

Meerdere wegen naar Rome

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

Niet alle offerteaanvragen waarop ik reageer gaan goed. Onlangs kreeg ik een reactie terug dat ik iets niet geoffreerd had. En dat klopte, ik had een alternatief geoffreerd. Toegeven, ik was eigenwijs. Ik had het naar mijn idee redelijk beargumenteerd, en wat mensen die ik had laten meelezen waren erg enthousiast: een boekhoudsysteem ga je niet opnieuw bouwen.

Het was naar mijn mening niet slim om wijdverspreide functionaliteit vanuit het niets opnieuw te bouwen (je bouwt immers ook geen mailinglijst software vanuit het niets, niet? 🤦‍♂️).

Er zijn meerdere wegen naar Rome. En als de klant een route heeft gevonden, wie ben jij dan om daar als leverancier ineens vanaf te wijken? Probleem was immers ook dat klanten van die klant al eigen keuzes hadden gemaakt voor verschillende boekhoudpakketten, die er toch al naast gebruikt werden. En om met al die pakketten diep te integreren zou toch wel eens lastig kunnen worden. Ik dach…

Continue reading...

TL/DW: .css_day#ui-special

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

Yesterday I attended the CSS Day conference. This year only the first day, that focussed on designing user interfaces, less the building of it. Here are the key take aways for those who thought going through all slides is too long, or didn’t went.

Josh Clark - A.I. is your New Design Material

Josh urged designers to get feeling for the new design material called AI, the next big thing. We need to know what makes it different, the grain, and also know how we can use it for good. Design might have a seat at the board table, but they need to know how to align user considerations with business goals. More on AI and design by Josh Clark and more.

Steph Troeth - Behind the story

Storytelling used to be all the rage before mobile entered the scene, Steph recalls. Nevertheless, people prefer stories over plain lists of…

Continue reading...

Using your ruby-webmock configuration for your local test service

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

I recently shared an overview article about Stubbing External Services in Rails. I found it when looking for the best way to stub a pletora of services in a microservices environment. Sure, docker (or whatever) everything and run it locally / in your test suite. But unless you've plenty of disk- and memory space, this isn't always a viable option. The alternative: simulate the service. Mock or stub the endpoint.

VCR and Webmock

The go to gems are Webmock, which catches request and allows you to define the responses explicitly and VCR, which allows you to record responses, and play back.

VCR is quite cool, but as it is a recorder of earlier responses, there may be a lot of noise to dig trough when trying to make the responses a bit more generic (dealing with random token requests and what else)

For testing I pers…

Continue reading...

Tag descriptor

Programmeren leren

An article, posted 7 months ago filed in & .

Wil je beginnen met leren? Hieronder een reeks links voor opties in verschillende programmeertalen.

Continue reading...

De eerste vier zaken op een (macOS) ontwikkelmachine voor beginners

An article, posted 8 months ago filed in , , , , , , , , , , & .
  1. Update eerst naar de laatste versie van ’t OS, Mojave. Je kunt deze gratis downloaden in de App store, zie upgrade instructies voor Mojave.
  2. Installeer homebrew … macOS Terminal (zeg maar de Command Prompt van de Mac) vind je door Cmd+Spatie in te drukken en vervolgens "Terminal" te zoeken (meestal vind je die al na de eerste paar letters). Vervolgens de regel invoeren (kopiëren & plakken) die de website vermeld. Soms moet je extra dingen installeren; het script zal je daar doorheen leiden. Overigens, dat commando, Cmd+Spatie, opent wat Spotlight heet, ik vind dat de gemakkelijkste manier om programma’s te starten.
  3. Install Docker for mac (je hebt hier tegenwoordig helaas een account bij DockerHub voor nodig). Dit download een DiskImage, sleep het programma naar de programma’s map (zoals het image waarschijnlijk ook al aangeeft in de achterg…

Continue reading...

Global variables in Rails

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

A quick note, because I was using the wrong search terms. If you want to share e.g. the current user of an app with a model you can now (since Rails 5.2) use a model inheriting from ActiveSupport::CurrentAttributes. Before you were required to pass this current user explicitly or find another way to access state.

Note that this can either be a good thing or a bad thing (tl;dr: thread-local global state makes apps unpredictable)

And even the docs warn against abusing this feature. Powerful tools can come with dangerous consequences :) Global variables are immensely powerful. Use with care. I'm not even sure if I'm going down this path…

Continue reading...

Revisiting taming ruby's memory bloat meta-edition

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

There are a lot of things that I don't understand. One of these things is how memory management really works. Memory management is hard, and even though I use languages that do garbage collecting by themselves, long running ruby apps seem to run out of memory after n number of days. Even the pro’s find it quite hard. While I previously resetted the failing app every now and then, I was triggered by Mike Perham’s (creator of Sidekiq) post: “Taming Rails memory bloat”.

When you start searching for the memory bloat problem, you'll find several directions. The easiest is changing a global variable which changes the number of “arena’s” where memory allocation takes place (note: I’m in no position to explain all this, please follow the references). The fanciest, however, seems to be changing the memory allocator from glibc's default 'malloc' to jemalloc. See for example [this](https://www.speedshop.co/2017/12/04/malloc…

Continue reading...

De UX van de overheid

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

De tijd om aan het begin van dit jaar een nieuwjaarsrede te schrijven ontbrak mij volledig. Dus resteert niets anders dan plan b. goede stukken uitlichten van anderen die reflecteerden aan het einde / begin van het jaar (en nog wordt dit pas in maart gepubliceerd).

In het essay De fantasietjes van de elite wees Bas Heijne eind december op het mogelijke einde van de schijnprogressiviteit. We kunnen er niet meer in geloven dat topmensen vrouwenrechten en eerlijke beloningen belangrijk vinden, wanneer het compleet haaks staat op hun eigen daden. Hij haalt Giridharadas aan:

> “Schijnprogressiviteit is de nieuwe opium van het volk. Wie voor de bühne laat zien dat hij het hart op de goede plek heeft, dat zijn bedrijf zich inzet voor een betere wereld, kan achter de schermen gewoon zijn echte slechte gang blijven gaan. “

Giridharadas maakt “korte metten met he…

Continue reading...

Tag descriptor

CSS Grid

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

The modern, still relatively new, way of doing grids natively inside a browser: CSS Grid. Below some articles that you may also find helpful.

Continue reading...

Prometheus for slow stats

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

Prometheus is a statistics collecting tool that originated from SoundCloud. Designed to be used in high performance environments, it is build to be blazingly fast. Hence, the client typically is expected to be blazingly fast as well, gathering and presenting data within nanoseconds. For Ruby on Rails applications however this has lead to an unresolved issue with the Prometheus ruby-client when the same application is forked (typical for Puma, Passenger and other popular ruby-servers). The Prometheus client collects data within its own fork before serving it to the exporter endpoint. This can or cannot be a problem. When you measuring response times, running averages from a random fork may be good enough. However, when you're also counting data over time you're having separate counters in …

Continue reading...

Don't try to be more personal

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

Your persona's don't include someone who is visually impaired Your persona's are probably all white, or typically young and dynamic. None of your persona's went through a tragic event recently.

Be careful when creating emotional experiences for the lucky ones. You shouldn't congratulate everyone with another great year, and/or a better year to come. Don't try to be more personal than you can be.

See also this thread on persona's

Continue reading...

“Nee” verkopen

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

Soms moet je een klant proberen te overtuigen dat het niet doen van iets de beste optie is. Enige tijd geleden volgde ik een cursus effectief communiceren, en daar leerde ik het volgende.

Aan “Nee” verkopen gaat veelal het ontvangen van kritiek, of een gemis, vooraf. Het is dus belangrijk dat je die kritiek goed ontvangt. Als je kritiek geeft, als klant, wil je gehoord worden. Word je niet gehoord dan blijf je met een naar gevoel zitten. En word je bot. Tijdens de cursus leerde ik de 4 G’s (ja typisch cursusmateriaal) van een goed feedback moment te herkennen, en eventueel door te vragen voor een beter begrip. Mensen geven immers niet altijd goed feedback en zeker als opdrachtnemer is het goed om daar boven proberen te staan en de kritiek netjes te geleiden. De klant heeft kritiek, dus probeer te achterhalen:

  • Wat is het Gedrag dat niet goed werkt
  • Wat is het Gevoel dat de klant daarbij heeft
  • Wat is het Gevolg dat dat voor de klant heeft
  • en wat is het Gewenste gedrag …

Continue reading...

Delay your decisions

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

I design very little upfront. Sometimes I need to make an estimation, I design a little more. Sometimes the project is hardly specced and there is a lot of exploring to do.

In this post I would like to give a demonstration of how a recent project developed.

Initial stage

> Client: “We want a fancier frontend for our data”.
> Me: “Sure, any limitations?”
> Client: “We give you 4 months”
> Me: “Can I use any tech I want?”
> Client: “Na, we want to be able to continue on what you’re going to create, so please use P, X, Y and/or Z.”
> Me: “Sure, P is not my favourite, but some time ago I’ve dealt with it, so ok, we keep it simple anyway.”

The plan that followed:

Initially I thought I could fancy up the CSS, but the old product was in a very bad state and not really maintainable. So I decided to create a thin API layer in P (yes of PHP), a modern front-end layer in JavaScript using a framework that I co-introduced in the organisation a few years ago (R…

Continue reading...

murb blog