z The Flat Field Z
[ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ]

Schema Validators

stack validation typescript

Most back end services will accept input by way of JSON. After verifying that the JSON is well formed there is a large amount of validation that will need to performed such as:

A class of libraries called schema validators solve this problem in an elegant and declarative way.

Query Builders

stack sql typescript

Most back-end services will end up making calls to a relational database. The two most popular ways to do this are with raw SQL, or using a an Object Relational Mapping (ORM) library. But there is a third level of abstraction out there called a query builder. I believe that of the three approaches the query builder one is the best.

Exploring the MPD Protocol

clojure mpd

MPD is a popular music server for Linux. It's controlled with a custom protocol over TCP. This post explores that protocol.

Vite SPA with ASP.NET Core Backend for Frontend

csharp docker typescript vite aspnetcore

Single-page-applications (SPAs) have a lot of desirable characteristics such as a high level of interactivity and ease of deployment. Unfortunately the security story is not as strong. Without a backend they have to store sensitive credentials they need to access APIs on the client side. These difficulties are further compounded by increasingly strict browser cookie defaults that make implementing more complicated auth flows like OpenID Connect very difficult.

Nuget Packages with Native Dependencies

csharp docker cmake cpp nuget

I often find myself having to consume native libraries in Nuget packages I publish. There are a lot of Nuget packages out there that do this, however there is very little up to date documentation about how you would do it yourself. Given the broad platform and architecture support of dotnet this can be decently complicated. Thankfully recent advancements in tooling have made this considerably easier, so let's get started.

Prev T Next