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 links below.

I help development teams create code that is more type safe and consistent, with better and formalized domain models, and more easily testable and maintainable pure functional data pipelines. Feel free to contact me for freelance and consulting projects.

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:

  • Single Page Web Applications with React, Solid, or Angular

  • Desktop applications with Electron, or Tauri

  • Interactive websites with regular HTML, CSS, JavaScript, and/or HTMX

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

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.

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

FP-TS Fetch

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

Open Source

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.

Article

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.

Article

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

Warped Components

An opinionated way to build frontend applications. A library for gluing 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 ergonomics.

Open Source

Warped Reducers

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

Article Fluture related

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.

Article

Composable Callbacks: A Promise implementation in under sixty characters

You’ve heard it before: callbacks don’t compose. I beg to differ.
Article 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

Furry

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

Open Source

momi

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

Open Source Release Largely Adopted

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

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

Forall Framework

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

Open Source

Mokuji

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

Open Source

JQuery Postpone

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

Open Source

Dollar.MVC

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