Taco Steemers

A personal blog.


Consider backing up build dependencies

Software build dependencies are a risk in general. A specific risk less often discussed is that libraries and packages might become unavailable.

In case you have doubts about putting your (hobby) stuff out there

There is going to be someone out there who is a good fit for what you made. They will like it, and even though you might not know they exist, and they forget about you the moment a notification comes in on their phone, something good was accomplished there.

Checking checksums

This page is about file checksums for situations where the distributor of the file also provides the checksum. If available, we always want to compare a given checksum with the checksum of the file we downloaded.

Avoid unmaintained and undifferentiated forks on your repository hosting profile

By forking many projects some people end up with too much on their profile page. Their original projects are hard to find. If you want to check out a project you can make a local clone. When you fork a project online, you are offering that project in that state. People might take you up on your offer and start using it as-is. You have a responsibility there.

On clarifying the status of demoed products

Giving a demonstration of a future product or feature can be a great way to check if development is on the right track. Unfortunately stakeholders don't always understand that a demo can be very far from a finished product.

Thoughts on self-managing teams

Self-managing teams are great. People feel their shared responsibility and come together to solve problems. There should be someone that is authorized to make decisions on specific topics. And the topic 'people' should not be forgotten.

The Twitter share button does not need javascript

When we let Twitter generate a 'tweet this button' for our website, Twitter includes a javascript file. We don't need to include this javascript file. The share button can be just a hyperlink. Twitter uses the referrer header to determine which URL the user wants to tweet about.

The javascript …

Git pull without merge

Applying remote changes to our local branch without an additional merge commit

When (not) to squash commits

In this article I want to talk about squashing (flattening) a series of commits in to one commit. Squashing is a good tool to have, but not everything should be squashed away. Intermediate commit history can have value.

Please use root relative URLs

Resources with URLs that do not specify the root will not be loaded if the user visits a subpage directly.

Notes on making drag-and-drop functionality with Javascript

When I wanted to make drag and drop functionality I found there were plenty of tutorials out there. I am adding a few more words on the topic because I had to find workarounds for issues that I didn't find mentioned elsewhere.

Why can the data we just stored on disk not be read?

Data that our code writes to a file may not be accessible immediately after writing. One reason is that some output stream implementations use buffers, and prefer to write out their whole buffer in one go. In these situations, if we want to be sure the data can be read …

How to avoid displaying directory listings on your website

Our websites contain directories with files that are not usually read by humans. Examples are directories containing Javascript files or files for XML feeds. Sometimes we want to disallow directory listings for these directory contents.

How to include HTML documents inside HTML documents

There are two good ways to include our static HTML documents inside the main HTML documents that make up our website. One is to include them server-side, before the server sends the main HTML document to the web browser. The other is client-side loading where we have Javascript on the …

Mistakes will be made

I occasionally make a mistake in a professional environment. Mistakes will be made, that is just how it is. We do have to keep looking at how we handle them and make sure we are not making a habit of it. Here I share some of my thoughts on the …

Still searching for a daily use computer that just works

Unfortunately there have been several problems with my macOS install, and with the Unix ports I install with brew.

There has been a time when the Finder appeared to not get an updated list of inodes. After moving files with the Finder the files appeared in the original directory as …

Quick text manipulation, a practical `sed` example

Suppose you have received a 10k line file of text in a format that is difficult for you to work with, like XML. You want to get some specific information from that file, and realize that getting that information by hand will take a long while.

In some cases an …

I found myself working hard instead of smart

Ah, the often mentioned "work smart, not hard". As well as "not invented here"...

I had set out to re-launch my blog. Somehow, in my enthusiasm, I ended up writing a static website generator almost to completion. The only two remaining topics were the two topics that most looked like …

Setting up a Secure FTP server (SFTP)

We want to set up a secure FTP server (let us call this 'the service', to avoid confusion). This service will receive backups. The service (and it's clients) don't need access to any unrelated commands. So we will make an empty PATH and won't let the users perform a normal …

Some notes on trying out Crashplan, Duplicati and BackupPc

Observations after testing Crashplan.

The Crashplan test-setup has not been able to connect for a while. As a result these notes are partially from memory and could not be revisited. The user interface is confusing, buttons are placed far away from the context they operate in. There are buttons that …

Configuring an Apache installation for use with the SSL protocol

Is your ownCloud client saying Failed to connect to ownCloud: Connection refused?

A possible cause could be that the webserver that is serving your ownCloud does not have SSL enabled. In this note I will describe how I did that for my own Apache 2 install. If you do a …

Memory for the SuperMicro X7SPA-H-D525-0

I recently bought the SuperMicro X7SPA-H-D525-0 motherboard. The Micron memory listed as compatible by SuperMicro was no longer available. I then checked Kingston's compatibility list. It listed two options for this motherboard.

Some blog- and forum posts mentioned using similar Kingston memory for similar SuperMicro motherboards. Taking the Atom D525 …

Switched from Wordpress to Pelican

Over the past two years I've posted some writing on a different domain. That is a shared Wordpress site which hasn't been seeing much love (the other party hasn't made any posts). I've been thinking of also writing some smaller notes, things that I tend to forget and then have …

Something to think about when storing or processing files in your web app

Recently I saw code that looked like the following:

function handleFileRequest
    variable file = getFile('storage/${params.filename}')
    send file

This code readily accepts a user-supplied piece of information to retrieve a file. This is very wrong, luckily it was caught in a code review.

It is wrong because it allows …

Weak references, are you sure you want to use them?

One of the projects that I have been working on lately is a standard C# codebase, a framework of sorts, for a particular niche category of software.  This is for a client that develops and uses a lot of this kind of applications in-house. Many of these have been written …

Setting up network shares with NFS and Linux systems

For quite a while, I have had a backup solution that I was not happy with. I have now remedied this. I am using a small server, a HP Proliant Microserver N40L. I tend to use Debian-based GNU/Linux systems at home. While I do eventually want my new solution …

Minimal Linux and Windows process spawn test

I am working on a small backup utility meant to add value to other, proper backup utilities. At the least, I want this program to run on any vanilla install of a (semi-) recent Linux or Windows desktop version. I would also like to keep a small file-size, and prefer …