Programming Phoenix review

Elixir and Phoenix crossed my path multiple times last year. I read a really interesting tutorial on building a web framework from scratch. Furthermore, Phoenix is really popular as an Elm backend, so I decided it was time to dive a bit deeper and learn myself some Phoenix. It just happens that Program Phoenix by by Chris McCord, Bruce Tate, and José Valim was published recently, so this seemed like a good opportunity to learn more! »

Explain Manillen with types and Elm

At Domain Drive Design Europe I met the wonderful @Felienne. In the evening we played the card game bridge (a game the Felienne likes a lot). As a West-Vlaming I love the card game Manillen more, of course, and we joked about it. Felienne has the ambition to create an AI to compete at the world championship of Computer Bridge, and I have joked about some similar ambitions of mine at Socrates Belgium, but this blog post has a much more humble goal. »

Modelling money in Elm

After reading the blog post of Mathias Verraes (@mathiasverraes) on (Type Safety and Money)[], and after doing a real short modelling attempt in Haskell at Socrates Belgium, I wanted to try to model Money in Elm. I don’t want to go to deep and too far so I’ve set some basic constraints for myself: You cannot add money of different currencies (you need an explicit conversion) - Add constraint We also want a Price. »


Welcome to the my new site written in hugo. While busy, I’ve set up https via letsencrypt. (see tutorial. You can find the source code of the blog here. This is a reboot of my site, and an attempt to blog some more. So without further ado, let’s start blogging :) »

Thomas Coopman on #general,

Refactor till you drop

Introduction Iteration 1 function getSymbol(symbolName) { return 'replace'; } function escapeRegExp(string) { return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"); } function SymbolReplacer(s) { this.alreadyReplaced = []; this.stringToReplace = s; } //iteration 1 SymbolReplacer.prototype.replace = function() { var symbolPattern = /\$([a-zA-Z]\w*)/g; var matches; while (matches = symbolPattern.exec(this.stringToReplace)) { var symbolName = matches[1]; if (getSymbol(symbolName) !== null && this.alreadyReplaced.indexOf(symbolName) === -1) { this.alreadyReplaced.push(symbolName); var toReplace = new RegExp(escapeRegExp(matches[0]), 'g'); this.stringToReplace = this.stringToReplace.replace(toReplace, getSymbol(symbolName)); } } } var x = new SymbolReplacer('dit $is een $test $test $test $is $complex gewoon woord'); console. »

Testing ES6 code

Recently, I’ve changed my webpack workflow, and switched to 6to5, to be able to write more of my React code in ES6 than the current jsx transpiler supports (and because 6to5 just rocks!). You can find this workflow in my boilerplate-webpack-react project. Switching was easy. I’ve just replaced jsx-loader with 6to5-loader and everything worked correctly. Writing code and developing is a breeze with this workflow, especially with react-hot-loader. I didn’t look into writing test though yet, and it took me a little while to find out how to do it, so I explain it here. »

Flux and cqrs

About flux and cqrs, what do I want to write about this??? Things I want to find out. actions in the past: because it’s something that has happend. nothing todo about it. deleting actions is not possible, only update. Store all actions in an event store for replay? How about authentication and validation actions and flux. For example: action ‘MESSAGE_SUBMITTED’. But the message must be validated before it is added. The MessageStore is responsible for validating because it’s specific logic of the store. »

About the site, about me

My name is Thomas Coopman and I’m a 29 year old developer. Recently I’ve officially started freelancing/consulting in my spare time. That’s the main reason for creating this site and blog. On this site you can find some more information about me. At the portfolio page you can see some things I’ve created. That page is empty at the moment but it will be coming soon. I’m a developer, mostly a web-developer (backend and frontend). »

Thomas Coopman on #other,

Creating my first cordova app

installation on ubuntu 14.04 prerequisites sudo apt-get install default-jdk sudo apt-get install ant npm install -g cordova android sdk creating a project in folder cordova create test-app cd test-app set the android emulator PATH=$PATH:~/Software/android-sdk-linux_x64/platform-tools/:~/Software/android-sdk-linux_x64/tools/ android installed Android 4.4.2 (API 19) add a platform cordova platform add android set everything in www run connect device in debugg cordova run android emulate android tools cordova emulate android webview chrome://inspect/#devices http://www. »

Creating this site

This is not valid anymore. The site is build with hugo This blogpost will be a about the why, but mostly about how I’ve created this site. I’ve created this site mostly for these reasons: Make myself visible on the web. Practice my design and web-development skills. Practice my writing (blog). Record things I’ve learned for myself. Maybe someone else will find something useful here. Content The contents of this site contain information about me, to make me more visible on the web. »

Thomas Coopman on #other,