Mastodon LinkedIn GitHub Bandcamp Instagram X.com

Latest stuff

Draft previews for a writing boost

Draft previews for a writing boost — Implemented a simple setup for viewing drafts live using tokens, allowing me to preview things without hitting publish. I’m a somewhat visual writer, as in I like to be able to see my writing alive in order to validate how good it is. I.e. I can’t function with just Markdown, and need a more rendered experience to help me write well.

Continue reading ...

Getting there with outbound mentions

Getting there with outbound mentions — Would you look at that? A nice reply-context box, meant to display things that I’m replying to on this website. This is more of a UI-only thing for now, but a step towards sending outbound webmentions around.

Continue reading ...

Test-driving inbound webmentions

Test-driving inbound webmentions — Okay now I’ve implemented an endpoint for all you folks to send webmentions to. On each post, use your preferred endpoint discovery method to find it. These are only collected to an internal queue for now, and cool UI stuff comes later, as I mentioned in the last post.

Permalink #

Webmentions status update

Webmentions status update — Been working on the initial Webmentions implementation of my website for the past week or so. Webmentions by themselves are simple messages, but sending, reading, and processing them can get complicated real quick if you want to make it sensibly automated.

Continue reading ...

Generated media blindness

Generated media blindness — Ages ago we found out about banner blindness. People internalized that most banners are useless adverts, and subconsciously trained their brains to just ignore anything that resembles a banner ad.

Continue reading ...

Corrupted Windows DLLs quickfix

Corrupted Windows DLLs quickfix — After a botched auto-update I had some mangled DLLs in my Windows installation. Namely a p9np.dll file. Running dism /online /cleanup-image /restorehealth in an elevated cmd.exe fixed it. Remember to check that it worked with sfc /scannow.

Permalink #

Building and installing RediSearch

Building and installing RediSearch — The official Redis documentation and RediSearch repo contains shaky documentation on how to build and install the RediSearch module, unless you're on the Docker bandwagon.

Continue reading ...

These smaller post things

These smaller post things — I added initial support for “lightweight” posts for my site. These are easier for me to use in case I need to just share something quickly or if I have nothing big to say otherwise. The difference right now is mostly visual for readers, but that might change.

Permalink #

Thoughts, thinks, gardens, blogs, wikis, and more

I’ve tried to keep myself thinking about how I want to write and create things on this website and elsewhere in the future, and how it would/should/could affect the way I design the building and reading experience here on the site.

Continue reading ...

Website technical sitrep

Website technical sitrep — Last week I posted that I had hopped back onto PHP, and a custom built CMS base to be more precise. I’ve done some more development since then.

Continue reading ...

Creating an FFI-compatible C-ABI library in Rust

This is part 2 in our PHP FFI + Rust blog series. Previously we took a look at how the FFI feature can be enabled and used in PHP 7.4, and now we will jump over to Rust and see how we can create C-ABI libraries ourselves, which can then be loaded using PHP FFI.

Continue reading ...

Protecting Caddy-powered websites with Fail2Ban

Protecting websites with stuff like Fail2Ban is a task I occasionally get to do. It is also a kind of task the details of which I manage to forget after every time I do it. This website runs on Caddy, and I had to do a few shifty moves to make it easier to get it working with Fail2Ban.

Continue reading ...

Backtracking

Some of you may remember how a few years back I ditched a CMS and embraced a static site generation approach for this website. Well I've now backtracked on that decision and will continue with a live-backend powered "normal" website again.

Continue reading ...

What AI has to say about mobbing and agile software development

ChatGPT is all the rage right now. I decided to try it out a bit. Eventually I wanted to see how it expands on knowledge we can verify exists, with something else we may or may not agree about.

Continue reading ...

Introduction to PHP FFI

In this series of posts, we will be getting acquainted with a new PHP feature: FFI! In addition to getting to know PHP FFI, we will be learning how to create and use FFI libraries written in Rust.

Continue reading ...

DigitalOcean automation with Terraform and Ansible

This post will walk you through a very basic setup of setting up automated infrastructure and server provisioning on DigitalOcean using Hashicorp Terraform and RedHat Ansible.

Continue reading ...

A week with ErgoDox

ErgoDox is a mechanical split keyboard built with ergonomics in mind. In the past, I’ve owned good old staggered QWERTY keyboards so this was my first foray into split and ortholinear keyboards.

Continue reading ...

Terminal coloring on Windows using Ansicon

The Windows command-line interface is quite a bummer when compared to the terminals on Linux and Mac. One of those bummer-factors is the absence of proper color handling.

Continue reading ...

Quick guide: remote Windows access with Bitvise SSH Server

Forget Windows Remote Desktop (or whatever it was) and TeamViewer. Let’s see how to get a baseline remote access to your Windows installation using SSH.

Continue reading ...

Long paths return: the hell called npm on Windows

Long paths return: the hell called npm on Windows — Previously I wrote about too long paths regarding Compass and Sass when using .sass-cache.

Continue reading ...

Sass compiling and too long directory paths

Recently I ran into a problem with a Compass project: I couldn’t compile any SCSS assets into CSS assets and Ruby threw a file not found error.

Continue reading ...

Sharing responsive design breakpoints between CSS and JavaScript using SassyExport

Wouldn’t it be useful if you could define breakpoints in one place and your whole frontend code would update accordingly? That’s what I wanted a while back on a project. I came up with a way to automate this procedure using SassyExport, a Compass plugin used to export Sass maps to JSON files.

Continue reading ...

Automated Apache virtual hosts on Windows

Generally all web development should take place on a local development environment. Often usually this includes an AMP-stack. One great feature of Apache is the ability to set up virtual hosts using configuration files. After setting the virtual host configuration, changing the system’s hosts file to point a certain domain name to 127.0.0.1 will allow http://localhost/projectname (which could be pointing to /path/to/www/projectname/ on the system) to become projectname.local for example.

Continue reading ...

Facebook plugins and AJAX loading

Facebook plugins and AJAX loading — I ran into a small issue earlier today while developing a client website. I was trying to load an external page fragment using jQuery.load(), which worked just fine until the code broke the Facebook Like button plugin.

Continue reading ...

Beginner PHP: Custom array sorting functions explained

Many of you most probably are familiar with PHP’s built-in array sorting functions, such as sort, ksort and similar. The built-in sorting functions are quite straight-forward and easy to use. But what about situations where you need to use a custom sorting scheme to order your arrays properly? Say hello to usort, uasort and uksort (u standing for “user-defined”), a set of functions used to map a custom sorting function to handle the more complex ordering problems.

Continue reading ...

Using CSS3 gradients to create text leading lines

The new CSS3 gradients are quite powerful and simple when in need of simple repeating background patterns. Although these will not work in older browsers and partly in newer browsers, they are an option to look for to lessen image usage for things that may work without the image file. This entry will guide you through to make leading lines for text (as has been for ages in notebook paper and similar stuff) using some CSS3. This effect can be useful for lines of code within <pre> tags and similar.

Continue reading ...

Returning multiple values from PHP functions

We are learning some basic PHP programming at school this semester. An exercise required to use functions and display data with possible error reporting on that data. I had a validation function to check my form, but I needed to return more than true or false to make the error reporting work properly. I needed to get the amount of errors and the description of each error.

Continue reading ...

Age of Empires 2: how to fix the odd colors on Windows 7

As some of you might have noticed, Age of Empires 2 (and its The Conquerors expansion) has a color bug on Windows 7 (and most probably on Vista too). Grass turns red, water becomes purple and every second tree is a christmas tree (or palm for that matter). Gameplay related problems include player colors displaying wrong either on the minimap or when outlining units behind obstacles. Annoying as hell and no normal option is around to fix it.

Continue reading ...

Getting the page count of paginated queries in WordPress

I was playing around with a WordPress theme and I wanted to display a simple number indicating the amount of pages a certain paginated part of the site had (front page’s recent entries in this case). I looked and looked but didn’t find any straight-forward variable or method which could output the value. Seemingly the only choice was to make the thing myself.

Continue reading ...

CTF-Austere for Unreal Tournament 3 released

I’m pleased to write that my award winning Capture The Flag level for Unreal Tournament 3 has been finalized and released.

Continue reading ...

Remember to backgroundify your <body> elements

Remember to backgroundify your <body> elements — Today I was in trouble. My girlfriend had turned the user setting of the page background to black on her Opera. This she did to “save energy”, which sounds a bit trivial to me, as she has a small LCD.

Continue reading ...

Selfie of Otto Rask on a sunny day, taking part in a political rally. He's wearing a cap and blue-tinted sunglasses.

Otto Rask

A software and product professional, leftist activist, urbanist, cargo biker, husband, dad, electronic musician, gamer, and more. I live in Espoo, Finland.

Read more →