Sign in

Software Engineer at Hoppinger (Rotterdam, The Netherlands) • Student MSc Software Engineering • Functional programming enthusiast

Create and edit online Excel files from your application

The example application we will be creating with an Excel export feature

Microsoft’s Excel has been one the biggest applications to be ever released for business software. Even today, in a world with ‘big data’, ‘data lakes’ and more fancy buzzwords a lot of companies still primarily use Excel for their administration and Business Intelligence. And even if if tools like Power BI are available, Excel is still a powerhouse when it comes to generating and processing raw data. …

Make your React application part of the Microsoft 365 ecosystem

The file picker that we will be creating

The Microsoft 365 platform has really taken of in the last decade with a lot of transitional enterprises finally moving their IT-landscape to the cloud. For developers this means that there is more and more value to be gained by integrating their applications with those cloud environments. To facilitate this Microsoft has created the Microsoft Graph platform where all the different systems come together in a single OData gateway to the outside world.

In this article I want to show you how you can use Microsoft Graph to build a file picker that selects files from an users online drive…

Photo by Tim Gouw on Unsplash

Cross-Origin Requests are a part of the HTTP specification that has driven many developers to the limits of their sanity for how seemingly complex it is to make two websites talk with each other. In principle CORS actually exists to make this easier: it allows an opt-out for the same-origin policy. This means that without CORS it would be absolutely impossible to make an API call to another domain.

So, apparently CORS is here to help so what does it? The CORS specification allows a server to set headers that indicate with part of the same-origin policy should not be…

Server-side events in the Chrome dev-tools

In modern web development seeing data on websites update in realtime is very common. Look for example at the courier on the map of your Takeaway order or at the ETA on a track-and-trace page for the delivery of your new shoes. That is (most-likely) all live data, coming directly from the server to your screen.

There are various ways you can implement such features. With Dotnet Core you can of course use SignalR, but if you just want to live update an ETA this is a pretty big and relatively complicated hammer for a small problem. On the other…

Photo by Jessica Ruscello on Unsplash

Creating a collection library for continuations

Last week I published an article on continuations in TypeScript. In that article, I mentioned that continuations (unlike promises) act like collections of values that start existing over time. In this article I want to explore this further and see how much your traditional array has in common with continuations.

The big limiting factor when implementing a collection library for continuations is that we don’t know the values the continuation is going to output or even how many. As a result of this not all of the methods that are widely accepted to be standard collection operators can be implemented…

Abstracting common patterns in TypeScript

Photo by Bruno Figueiredo on Unsplash

A major challenge while developing an user interface is dealing with the events that are triggered by user interaction. Not only are there often many possible events that can occur at any given time, the order in which events get triggered is also variable (or they can happen simultaneously). Outside of those events JavaScript applications has to deal with other asynchronous code like handling API calls.

During the decades in which JavaScript evolved to where we are today there have been a multitude of ways to write async code. From the event listeners in html, the callback-hell of JQuery and…

Five rules for designing great states

Photo by Daniel McCullough on Unsplash

Type-driven-development is a programming style where you first define types and extract functions from those types. This style is closely connected to functional programming as they share the concept of functions being transformation from data of type A to data of type B and objects just storing data and not logic.

When working with modern libraries like React and Vue we have a state (of a certain type) that gets transformed into a DOM and receives updates when the user interacts with the generated DOM. Here the type of the application’s state is absolutely central to the inner workings of…

Sorted and heap-based priority queues explained

Photo by Hal Gatewood on Unsplash

Queues and stacks are used in programming to process a collection of items in a certain order. Those data structures work either with a first-in-first-out or last-in-first-out system in which the order of processing is always directly coupled to the order of insertion. However, sometimes you need to have more control over the processing order then offered by the insertion order. The priority of items in the queue can depend on several external factors and some of the items will then have to (partially) skip the queue.

This concept is abstracted into a data structure called the priority queue. A…

Fuzzy string comparison demystified

Photo by Jason Dent on Unsplash

Fuzzy string matching is something that has many applications in programming but is not that trivial to implement. There are a lot of different ways two strings can be different while still looking similar to the human eye. One (programmable) way to determine the ‘sameness’ of two strings is to count the amount of single character modifications you need to make to a string to get the to the other string. This is called the Levenshtein distance between two string.

To calculate the Levenshtein distance we determine the minimum amount of edits we need to perform on one string to…

Deal with Lists without dealing with indexes

Photo by Brandon Mowinkel on Unsplash

Lists are data structures that save a sequence of items in order. Because of this we can work with indexes and modify them to get items with an offset to some index. This is great, but it can lead to code that modifies a lot of integers just to get and set items in the list on a certain position. In this article we look to positional lists, a kind of list that abstracts the concept of indexes and allows us to reason with just the concept of previous and next items.

Positional lists are lists that store items in…

Wim Jongeneel

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store