Aldwin Vlasblom

Alt Shift Win

About

Hi I'm Aldwin. I make computer programs for a living.

I publish code as Avaq on GitHub, publish articles as Avaq on DEV (previously also Medium), and I help people with coding problems as Avaq on StackOverflow. You can find a list of my publications below.

I am available for freelance and consulting projects. I can design and/or build you a system, offer consultancy and code reviews, or coach your development team to improve development processes and code quality. Feel free to send me an email or contact me in any of the ways listed below.

A picture of Aldwin Vlasblom

Expertises

I'm a back-end-leaning full-stack (web-) developer with particularly deep knowledge about functional programming. To be exact:

Primary Expertise

Functional Programming

For years, I have worked on bringing the best of the functional programming paradigm to JavaScript, and educating my peers about it. I've got deep understanding of combinatory logic, algebraic data types (Monads), and the following technologies:

Primary Expertise

Back-end Development

Most of the application of my knowledge has gone towards back-end development for websites and web-applications. Over the years I have gained expertise within the following technologies:

Secondary Expertise

Front-end Development

While I'm stronger on the back-end, I've contributed quite a lot to front-end codebases as well, in particular with regards to their structure and architecture. The following technologies are some of which I have experience with:

Secondary Expertise

Linux Tooling

I have worked with Linux for my whole career, and picked up a thing or two. I do almost everything on the command line. Here's a few highlights though:

Contact

You can reach me in the following ways:

  1. Matrix: @avaq:matrix.org

  2. Keybase: avaq

  3. Discord: avaq_ or Avaq#4470

  4. Email: aldwin@altshift.win

PGP: E13E F0CC 82C8 209B 5961 F40C 307A 15CE FE01 AF5C

Employment History

I started writing code at the age of 12, and had my first programming job at 19, directly after an internship. Here's a timeline with the places I worked at.

Freelance Current occupation!

Freelance software architect

I started working as a freelance software architect / full stack (web) developer after gaining fourteen years of experience working for various software development agencies (see below).

Employment

Senior full-stack developer

I worked with JavaScript, TypeScript, Node.js, Redis, MySQL, MongoDB, CouchDB, git, React, Angularjs, Docker, Heroku, Nixos, Fluture, Redux, fp-ts, and many other technologies. Custom-building software for the web, from prototypes to production applications. Sharing knowledge and working on Open Source. Improving developer workflow. Assisting with project acquisition and job candidates. Acting as a development manager. Architecture and technical leadership.

Employment

Developer consultant

I worked with JavaScript, Node.js, React, Redux, Ramda, and Fluture. Assisting and advising the development team at ExpandOnline to break up their monolithic PHP application into small individually functioning web-services.

Employment

Developer

I worked with PHP, C#, MySQL, Microsoft SQL Server, Node.js, and git. Fixing bugs as part of the SLA team. Improving the git-workflow of the company. Adding new features to existing PHP projects. Reviewing the security of applications. Improving the security of the acceptance environment. Work on experimental internal tooling.

Employment

Back end developer

I worked with PHP, Laravel, MySQL, Node.js, MongoDB, ElasticSearch, Redis, JavaScript, HTML, and git. Improving the company's internal PHP framework and assisting in its usage. Creation of RESTful JSON API's to serve as back-ends to mobile applications.

Employment

NodeJS developer

I worked with JavaScript, Node.js, Express, Chaplin, Backbone, MongoDB, Brunch, git, HTML, and CSS. Creating RESTful JSON API's to serve as back-ends to web applications, and assisting in building those applications using web technologies that were cutting edge at the time.

Employment

Application developer

I worked with PHP, HTML, CSS, JavaScript, jQuery, Composer, SVN, git, AuraPHP, and MySQL. Improving the company's internal PHP framework and occasionally using it to build solutions for Tuxion customers.

Internship

Intern application developer

I worked with PHP, HTML, and CSS, assisting in the creation of simple websites, and explore the potential for improvement to the company's internal PHP framework.

Publications

I have worked on open source projects pretty much from the beginning of my professional career. Below, you'll find the list of my published code and articles. I've highlighted some of my personal favourites.

Knowledge Reference

Algebraic Law Cheatsheet

An overview of algebraic laws from the perspective of a functional programmer.

Open Source Release

FP-TS Fetch

Fetch wrapper for fp-ts users, inspired by my Fluture Node library.

Open Source Release

FP-TS Bootstrap

A module aimed at application bootstrapping using types from fp-ts. Its ideas and most of the code were ported from the fluture-hooks library.

Publication

Nixpkgs: A community-maintained package lock file for all of Unix

NixPkgs can be thought of in a lot of ways; One of those ways is as a lazily evaluated, community-maintained, programmable package lock file for all of Unix.

A small introduction to Nix from the perspective of a JavaScript developer for other JavaScript developers.

Publication

Application Bootstrapping with fp-ts

An article exploring an an approach to application bootstrapping with fp-ts. This approach was later packaged as the FP-TS Bootstrap lib.

Open Source Release

Warped Components

An opinionated way to build frontend applications. A library for glueing together React, Redux, and CycleJS in a way that allows for fast and convenient creation of complex React components and applications that are easy to test and provide great developer ergonmics.

Open Source Release

Warped Reducers

Compile a standard Redux reducer from a brief definition. An alternative to things like `reduce-reducers` and other Redux reducer creation utilities.

Publication About my Fluture lib!

Introduction to Fluture - A Functional Alternative to Promises

In this piece we'll be going over how to use Futures, assuming the why has been covered sufficiently by Broken Promises.

This article introduces new users to the latest iteration of Fluture, the well-received library that I made.

Publication

Composable Callbacks: A Promise implementation in under sixty characters

You’ve heard it before: callbacks don’t compose. I beg to differ.
Publication Personal Favourite!

Broken Promises: The unspoken flaws of JavaScript Promises

A few years ago, JavaScript had a callback problem. The community worked hard to replace callbacks with Promises. Now, JavaScript has a Promise problem.

This article managed to make some waves in the JavaScript community.

Interview

Fluture - Fantasy Land compliant alternative to Promises - Interview with Aldwin Vlasblom

SurviveJS asked me for an interview related to my release of the Fluture library, which was rapidly growing in popularity.

Open Source Release

Furry

Fast curry with cyclical placeholder semantics. A slightly different way to bring function currying to JavaScript.

Open Source Release

momi

Monadic Middleware - An approach to the problems being solved by Express and the likes using functional concepts.

Open Source Release Large Adoption!

Fluture

FantasyLand compliant (monadic) alternative to Promises. This library got widely adopted within the "Functional Programming in JavaScript"- community, and even saw usage by Mozilla.

Knowledge Reference Popular

Common combinators in JavaScript

A reference of common combinators from the untyped lambda calculus and their implementation and occurrences in JavaScript.

Open Source Release

JSLite

The next iteration of Dollar.MVC, aimed at bringing classical inheritance to JavaScript whilst not getting in the way of JavaScripts prototypal design.

Open Source Release

Forall Framework

A modular PHP framework with an emphasis on fluent data transformations with higher order methods. Spiritual successor to Mokuji.

Open Source Release

Mokuji

A framework and CMS in PHP, originally only used internally by Tuxion.

Open Source Release

JQuery Postpone

A JQuery plugin for setting timeouts and intervals and resolving them using the jQuery Deferred API (the predecessor to Promises).

Open Source Release

Dollar.MVC

Model View Controller in JavaScript - An attempt to bring what I've learned in PHP to the front-end.