Will vs Technology

Where I, William Rudenmalm, document my quixotic struggle against technology.

Web components - Using the Lit library

In my last post about Web components we looked using webcomponents without using any libraries. In this part see how far we can get by using Lit, a framework or more accurately a library for building web components.

Web components - a short introduction

Web components have experienced something of a second wind in recent years. This article takes a look at the possibilities and limitations of web components in the context of the move back towards native web APIs.

Building a Kafka based key-value store in Rust - Part 3: API

The third part in the series implementing a kafka based key-value store in Rust. In this part we implement the API itself.

Push-down automatons in Rust

Push-down automatons, essentially finite state machines with a Stack, are in adddition to being theoretically interesting useful for a number of tasks, such as ensuring that parenthesises are balanced in a string

Building a Kafka based key-value store in Rust - Part 2: Implementation

The second part in the series implementing a kafka based key-value store in Rust. In this part we finally start writing code and implement the logic for storage as well as Kafka.

Building a Kafka based key-value store in Rust - Part 1: Design

In this first part of a series about building a key-value store in Rust with Kafka and sled. We completed the design of the service and reason about the choice of tech.

Picking a Tech Stack - Part 1 identifying the must-have criteria

One of the first things that you have to do when embarking on a new project is choosing the set of technologies - the tech stack - that you will be using. This article discusses the principles to keep in mind when making this critical decision.

Functional programming in Java8: Filters

Java 8 adds the new Stream APIs to the Java language and runtime. These APIs increase the succinctness of the Java languages and making it almost as expressive as many dynamic languages such as Ruby and Python, without sacrificing Java's compile-time type checking. This article discusses how these new features can be used.

Never write another for-loop: Replacing Java 8 for-loops with forEach calls using the Stream API

Java 8 and JDK 1.8 introduces a new functional programming concept called a stream to java

Writing good React components

This article looks at best-practices for writing React components

The Implicit — Explicit Gap

A discussion of the connection of Implicit and Explicit processing informs UI design

Bower.js and the Future of Client-side Modularity

Twitter recently released Bower, a dependency manager for client-side JavaScript. This article discusses how Bower compares to other dependency managers and how this release affects the client-side JavaScript space as a whole.

Deduplication with BTRFS

BTRFS is an alternative filesystem for Linux that provides copy-on-write support which enables deduplication.

k-means clustering in R

This post documents who to perform K-means clustering in R

Installing Meteor on ArchLinux

Guide on how to manually install Meteor on ArchLinux