“Nee” verkopen

Een artikel, 15 dagen geleden geplaatst onder , , & .

Enige tijd geleden volgde ik een cursus effectief communiceren. Een observatie die daaruit volgde:

Aan “Nee” verkopen gaat veelal het ontvangen van kritiek 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. Voordat je dus goed "nee" kunt verkopen moet je dus die kritiek, de feedback van de klant, goed ontvangen. Dit kun je doen door proberen de 4 G’s van een goed feedback moment te herkennen, en eventueel naar te door te vragen. Klanten geven immers niet altijd goed feedback en het is aan jou, om daar als opdrachtnemer boven te staan en 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 dat de klant zou zien

Pas dan, wanneer je het antwoord …

Ga verder met lezen en/of reageer...

Op de hoogte blijven?

Maandelijks maak ik een selectie artikelen en zorg ik voor wat extra context bij de meer technische stukken. Schrijf je hieronder in:

Mailfrequentie = 1x per maand. Je privacy wordt serieus genomen: de mailinglijst bestaat alleen op onze servers.

Delay your decisions

Een artikel, 2 maanden geleden geplaatst onder , , , , , , , & .

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…

Ga verder met lezen en/of reageer...

Getting started with Cypress - a modern frontend testing framework

Een artikel, 3 maanden geleden geplaatst onder , , , , , , & .

Cypress is a new, open source integration test runner for modern JS applications (its development is sponsored by their online dashboard that allows you to record test-runs). It doesn’t require setting up Selenium, or other browser plugin, manually. Add it to your package.json and everything you need will be set up:

npm install cypress --save-dev

You can open even a GUI using:

./node_modules/.bin/cypress open

Alternatively, you can run the tests headless using the run command:

./node_modules/.bin/cypress run

Running the test will leave you with video recordings of what has been happening visually on the frontend for further review.

Ok. All nice, but you're right, these are tests running against a locally run server. So let's move the examples directory out of scope of the test runner:

mv cypress/integration/examples cypress/integration-examples

*(when exploring a new framework, I typically like …

Ga verder met lezen en/of reageer...

Be a (unit-testing) minimalist

Een artikel, 3 maanden geleden geplaatst onder , , , & .

Still (2013) a great talk by Sandy Metz on testing, and how to do it right, without getting too theoretical. While this talk is on ruby, and it uses a Rails framework for testing, it really is applicable to any other language (only the syntax will probably be a wee bit shittier ;))

Watch Rails Conf 2013 The Magic Tricks of Testing by Sandi Metz on YouTube

(and while unit-testing is between brackets, in general, being a minimalist when writing code really is a good idea)

Ga verder met lezen en/of reageer...

Really concise guide to package.json scripts

Een artikel, 3 maanden geleden geplaatst onder , , , , & .

Being unable to find a really concise description at a stable endpoint, the "scripts"-section of package.json, central to node/npm/yarn/euh. JavaScript-development these days, here it is.

The package.json is a json file which typically contains things like version and name of a project, the typical metadata. It also contains the dependencies of a project. But this is about the scripts-section. Completely optional, but so convenient that typically your project has one already:

{
  "name": "hello world",
  "version": "0.0.1",
  "main": "index.js",
  "scripts": {
  }
}

The "scripts"-section contains snippets of code that you typically run using npm or yarn:

So let's say you're typing git add . && git commit -m "wip" && git push a lot (totally not recommended), you could do:

{
  "name": "hello world",
  "version": "0.0.1",
  "main": "index.js",
  "scripts": {
    "wipitup": "git add . && ...

Ga verder met lezen en/of reageer...

Het groene slotje en Symantec

Veilige verbindingen zijn gebaseerd op een keten van vertrouwen. Browsers en computers vertrouwen standaard een beperkt aantal zogenaamde ‘root’-certificaten. Deze root certificaten kunnen gebruikt worden om een groen slotje te geven aan een site. Meestal gebeurd dat met een tussenliggend certificaat: De site betrouwbaar omdat deze Certificaat A heeft welke vertrouwd is omdat het ondertekend is door Certificaat B en Certificaat B wordt vertrouwd omdat het ondertekend is door een root certificaat (de keten kan complexer en langer zijn); een certificaat dat vastgelegd is in de browser of het besturingssysteem. Het is dus belangrijk dat een beheerder van een root certificaat er alles aan doet dat diens vertrouwen niet wordt geschonden. Dat is vorig jaar bij Symantec (het bedrijf dat bekend is geworden met Norton Utilities en later AntiVirus) gebeurd.

Certificaten mogen alleen worden uitgegeven aan eigenaren van een domeinnaam; certificat…

Ga verder met lezen en/of reageer...

*nix: find the largest files/directories within a directory

Een artikel, 4 maanden geleden geplaatst onder , , , , , & .

Every now and then I’m searching for this little snippet in my notes using NotationalVelocity (or currently actually a fork):

du -hsx * | sort -rh | head -100

It’s a variation of a snippet I found somewhere, but hardly invested any time in understanding what it actually does. Let’s decompose, from head to taildu.

head -100

head simply limits the results to a maximum of 100 lines. Not much more to explain here

sort

sort sorts. by default it sorts the files by filename, but adding ‘-h’ to it allows it to sort by “human readable numbers” (e.g. 5M > 6K); if ‘-n’ would be added as option 6K would be > 5M. The ‘-r’ options reverses the sort wich is by default ascending.

du

du by defaults crawls a directory recursively for all files. passing '-s' tells it to sum the values of files within directories. the '-x' option is used to n…

Ga verder met lezen en/of reageer...

Tag descriptor

Online film kijken

Een artikel, 5 maanden geleden geplaatst .

Iedereen kent Netflix inmiddels. Maar er zijn aardige alternatieven die zich op niches werken. Een lijstje van (alternatieve) online filmdiensten. Kun je een bepaalde film niet vinden, probeer JustWatch eens.

Ga verder met lezen en/of reageer...

Gebruiker als in...

Een artikel, 5 maanden geleden geplaatst onder , , , , , , & .

> Je zou je kunnen afvragen of het goed is om geld te investeren in b.v. Facebook; als adverteerder of als content producent. Een 'gebruiker' van Facebook is eerder een 'gebruiker' zoals bedoeld in "gebruiker van heroïne" dan een gebruiker zoals in "gebruiker van biologisch afbreekbaar afwasmiddel". Ga op zoek naar frissere nettere plekken om die gebruiker te treffen.

Ga verder met lezen en/of reageer...

Tag descriptor

Rails CMS-systems

Een artikel, 6 maanden geleden geplaatst onder , & .

When developing full stack webapplications, I typically use Rails. While Rails is the perfect system to create CMS'es, for sites that are less applications and more websites CMS-gems for Rails may help.

Ga verder met lezen en/of reageer...

Tag descriptor

Online biologische winkels

Een artikel, 6 maanden geleden geplaatst onder & .

Meestal schrijf ik hier over technologie. Bij technologie wordt vaak gestreefd naar efficientie. Voor leven is dat niet altijd het beste. Akkers overbemesten met stikstof, monoculturen door met gif te spuiten, de natuur gaat steeds verder achteruit. Door biologisch te eten hoop ik daaraan minder bij te dragen.

Maar efficientie is wel handig, ik sleur niet graag iedere dag door de supermarkt (en al heb ik geen auto, dan zou ik ook niet iedere zaterdag m'n auto willen volladen). Boodschappen laten bezorgen is een uitkomst. Hieronder een lijst biologische supermarkten die bezorgen.

Vooralsnog maak ik zelf gebruik van Ekoplaza, maar sinds kor…

Ga verder met lezen en/of reageer...

Tag descriptor

Intrusion Prevention Systems

Een artikel, 6 maanden geleden geplaatst onder , , , & .

Attacks happen daily and on an automated basis. While you can use always up to date software on a server, develop with a security first mind set, an extra layer of security helps. IPS is such a layer that is something like a virusscanner for servers, detecting typical attacks before they occur.

Ga verder met lezen en/of reageer...

Is maatwerk te duur?

Een artikel, 8 maanden geleden geplaatst onder , & .

Definieer maatwerk: Iets op maat gemaakt, of met de hand gemaakt speciaal voor jou? Of is het iets dat precies past, ongeacht hoe het gemaakt is?

De massa wil geen maatwerk om het maatwerk, de meeste mensen zullen blij zijn met iets dat (heel) goed past. Confectie van een goed merk kan heel goed passen, en wellicht nagenoeg perfect na wat kleine aanpassingen. Écht onderscheidend kan confectie als serieproduct moeilijk zijn, maar het is daarentegen niet alléén het pak dat de man of vrouw maakt. Er zijn nog schoenen, een blouse, de wijze waarop hij of zij het haar draagt. Het is het samenspel.

De samenhang van verschillende onderdelen maakt ook het bedrijf. Maatwerk om het maatwerk is bijna altijd te duur wanneer het helemaal speciaal met de hand gemaakt voor jou. Maar wat verkocht wordt als maatwerk-software in de IT wereld is eigenlijk nooit volledig met de hand gemaakt.

Maar besef ook dat zelfs dat dure atelier niet de stof zelf weeft. Om de lagere budgetten te bedienen h…

Ga verder met lezen en/of reageer...

Waarom ik eigenlijk niet schrok van mijn Facebook (en Google) download

Een artikel, 8 maanden geleden geplaatst onder , , , , , & .

Er gaan wat schokkende verhalen rond over Facebook. SMS contacten zouden er in staan, terwijl die toestemming nooit gegeven is; vele adverteerders zouden gegevens hebben overgedragen. Ik had het al wel eens gedaan, maar dacht, misschien zijn ze er beter in geworden. Maar weer viel het eigenlijk wel mee. Maar ik neem dan ook mijn maatregelen. Veel van de onderstaande tips gelden dan ook niet alleen voor mijn omgang met Facebook, vaar voor mijn omgang met bijna alle diensten.

Zorg voor zo min mogelijk aanknopingspunten

Nee, ik heb het hier niet alleen over het beperken van likes, maar vooral over een paar simpele zaken waarmee Facebook gemakkelijk gegevens aan elkaar kan knopen: T…

Ga verder met lezen en/of reageer...

The `matches` operation

Een artikel, 9 maanden geleden geplaatst onder , , , , & .

I’m slowly migrating projects away from jQuery. It has served me really well in the past, and it still works, but it is no longer necessary. One of the few things that have been bothering me though was the lack of ‘live’-attaching of EventListeners. jQuery allows you to bind an onsubmit event listener to any , evens that haven’t been added to the DOM yet. It used to be called live() (from version 1.3 to 1.9), but the functionality was later reintroduced with on(). You would bind the event listener not to a `` directly, but to a container (up to document).

$(document).on('click', 'p.alert', function(e){ 
  confirm("Did you read this carefully?"); }
);

Moving away from jQuery, we use the ‘standard’ addEventListener(): but it has no easy way of delegating the events.

Introducing matches

Element.querySelector(".CSS.selector.here") is probably quite well known by know, but I was …

Ga verder met lezen en/of reageer...

murb blog