Skip to main content

Full-stack dev

Posts about front-end and/or back-end development

Better word counts and reading time in Eleventy (11ty)

I recently switched to using Eleventy to generate my blog. As part of this process, I needed to implement word counts for each of my posts. I made my own plugin for this as I was unable to find an existing one that met my requirements - they either used regex to parse HTML or included non-text like scripts and code snippets in the count.

Read more of "Better word counts and reading time in Eleventy (11ty)"

The cover of "I have joined the IndieWeb"

I have joined the IndieWeb

The collapse of Twitter last year got me thinking about closed platforms and reducing the hold that privately owned platforms have over the Internet.

I’ve been blogging for nine years now on my personal website. I like owning my own domain as it allows me to retain control and stay independent of particular services. Private platforms have a tendency to be bought out and/or ruined by commercial interests, especially now with tech growth slowing down and investors getting uneasy.

Read more of "I have joined the IndieWeb"

The cover of "Bing (and DuckDuckGo) shadow banned my website"

Bing (and DuckDuckGo) shadow banned my website

Bing has now unbanned my blog. My site is still penalised/low in the results, but at least it's appearing now. See the bottom of this article for their response.

My domain was shadow banned by Bing and DuckDuckGo last year, and I don’t know why. Since then, my root domain (rubenwardy.com) has been unbanned but my blog remains banned. The event also negatively impacted the search placement of my root domain; another site that reuploaded some of my content is appearing as the first result when searching for it.

Read more of "Bing (and DuckDuckGo) shadow banned my website"

The cover of "Developing ContentDB"

Developing ContentDB

In 2018, I had the opportunity to create a web app for University coursework, as a solo project. I chose to create a package repository for Minetest, an open-source project I help maintain.

Minetest is an open-source game engine with millions of downloads and thousands of weekly players. The project has a very active modding community, and many available games to run. There was one big issue - you had to manually install mods and games by unzipping their files into a directory. This was a very poor user experience.

Read more of "Developing ContentDB"

The cover of "Securing Markdown user content with Mozilla Bleach"

Securing Markdown user content with Mozilla Bleach

Markdown is a common choice for rich text formatting due to its readability and ease-of-use. Unlike a lot of markup, it aims to match natural text. It’s even easy for beginner users, and there are WYSIWYG editors available.

We will be using the Python Markdown library to convert Markdown to HTML. Markdown doesn’t have a well-defined standard. The library aims to comply with what little is defined by the Markdown syntax specification, meaning that it is also often stricter than other parsers.

Read more of "Securing Markdown user content with Mozilla Bleach"

Getting user profile data from external phpBB forums

I recently wrote and released a python module to allow fetching of profile data.

You can install it using pip:

pip install beautifulsoup4 phpbb-parser

Here’s how you import and use a profile:

import phpbb_parser as parser

username = "rubenwardy"
profile = parser.get_profile("https://forum.minetest.net", username)

if profile:
    signature = profile.signature.text
    location = profile.get("location") or "unknown"
    github = profile.get("github") or "none"

    print(username + " from " + location + " has github " + github)
    print("Signatue: " + signature.text)
else:
    print("Could not get profile!")

profile.signature is a beautifulsoup4 object.

Next: Linking a user account to an external phpBB forum.

Read more of "Getting user profile data from external phpBB forums"

The cover of "Employee Task Management System"

Employee Task Management System

I was contacted by a client to create a system which calculates the workload for employees based on their assignment to tasks and appointments.

The system needs to solve two problems: Firstly, different staff members work different numbers of hours, which makes it hard to allocate tasks fairly and proportionally. Secondly, the client wanted to use the system to analyse past workloads and to anticipate future workload, in order to improve her system of work.

Read more of "Employee Task Management System"

3D Projection

Hello 2015! Recently I have created an implementation of the 3D projection algorithm. It is just wireframe models. It works pretty well, except it doesn’t do frustum culling. You still see things that are behind you, but upside down.

The source code of this implementation is available under the WTFPL or CC0 licenses - you can choose which one you want to use. Use WASD to move, arrow keys to rotate, space to ascend and shift to descend.

Read more of "3D Projection"