Projects

Started releasing open source software online in 2007, and have build up a decent list over the years – below are 71 of them. Most are for developers, some are for power users, and a few are for casual users.

See also my Github profile, as well as lists of repositories and followers.

Popular projects (7)

xmouse-controls

Microsoft Windows utility to manage the active window tracking/raising settings. This is known as x-mouse behavior or focus follows mouse on Unix and Linux systems.

uvcc

USB Video Class (UVC) device configurator. Used for webcams, camcorders, etcetera. Command line interface for automation.

talkie

Text-to-speech browser extension button. Select text on any web page, and have the computer read it out loud for you by simply clicking the Talkie button.

multi-video-frames

Play/view multiple video player streams in the same browser window by using iframes.

npshell

Command line music queue manager. A music player from the comfort of your own shell.

node-dnssec-name-shame

Do the big companies use DNSSEC yet? Are you really safe online? We know who's been naughty and who's been nice -- and now it's time to name and shame them!

node-uvc

Node.js library for USB Video Class (UVC) devices. Used to write software for webcams, camcorders, etcetera.

Active projects (11)

eslint-config-joelpurra

Opinionated shareable linting configuration for Javascript/Typescript. By and for Joel Purra.

factorio-save-upgrader

Tool to upgrade old Factorio game save files to the newest version. Bring on the map nostalgia!

fly-the-rainbow-flag.com

Show your support by adding the rainbow flag to your photos!

joelpurra

Totally accurate github profile representation of @joelpurra, in the form of gifs

joelpurra.github.io

Serving demos and tests for projects

loopia-api-dyndns

Dynamically updates the IPv4/IPv6 DNS records for domains registered with Loopia.

node-libuvc

Low-level Node.js library for USB Video Class (UVC) devices, wrapping the cross-platform libuvc C library. Used to write software for webcams, camcorders, etcetera.

node-usb-issue-418-delay-at-exit

Reproducing an issue where exiting a program after using node-usb v1.7.0 is significantly delayed.

nodejs-configvention

A node.js configuration convention with a minimal readonly interface.

npshell-demo

Automate demo creation, showing the npshell `np` music player commands in action.

shell-keystroke-animator

Simulate stroking keyboard keys into another application/window while taking screenshots to create a `.gif` animation.

Inactive projects (10)

botten-nappet

A Twitch bot and streaming tool.

conversation-augmentation-chat-mediator-bot

Reduce anger and improve two-way human-to-human conversations with the help of a mediating/moderating chatbot. This particular bot blocks angry messages which have a bad sentiment score from being delivered to the other chat participant.

ffi-napi-issue-nodejs-v14

Reproducing an error loading multiple packages which use node-ffi-napi v3.0.1 on Node.js v14.

getdns-developer-support

Helper scripts and other developer notes for those working with or on getdns, getdns-node and related repositories, dumped into a repository in the case that they might be of use to someone else. See getdnsapi.net for additional getdns information.

github-data-cli

A small set of functionality to retrieve repository data from github, in JSON format.

homebrew-joelpurra

Homebrew tap containing specialized software created by Joel Purra, packaged for easy installation.

masters-thesis

"Swedes Online: You Are More Tracked Than You Think" — Joel Purra's master's thesis for a Master of Science in Information Technology and Engineering at Linköping University, Sweden

masters-thesis-presentation

Presentation/slides for Swedes Online: You Are More Tracked Than You Think

masters-thesis-site

Joel Purra's master's thesis' information site

more-tracked-paper

Paper based on the master's thesis "Swedes Online: You Are More Tracked Than You Think"

Archived projects (43)

autocleancallback

A jQuery plugin to clean input fields with common functionality, like trim, normalize whitespace, digits only. It is also easily extensible.

autocleancallback-canada

Canadian extensions to AutoCleanCallback (required).

bespoke-advanced

Auto advance slides on a timer in bespoke.js

bespoke-analytics

Visitor analysis per slide in your Bespoke.js presentation

bespoke-convenient

Convenient extension methods for building Bespoke.js plugins

bespoke-indexfinger

Keep track of the active slide in Bespoke.js

bespoke-jumpy

Keyboard shortcuts to jump straight to a specific slide in bespoke.js

bespoke-logbook

Log bespoke.js events and state to the console

bespoke-secondary

Show slide notes in a secondary window/screen with Bespoke.js

claimid-dump

A service to extract and dump links and data from shut down claimid.com user pages

collect-npm-readmes

Copy a project's first-level `npm` package readme files to a separate directory for easy access.

collectcalls

Collects functions that should be called in the future

editdidwhat

Compare two strings to see what has changed, and perform some string manipulation.

emulatetab

A jQuery plugin to emulate tabbing between elements on a page.

ep-erroneous-votes

Using open data dumps from Parltrack to analyze erroneous, and subsequently corrected, votes by Members of the European Parliament.

ep-projects

Projects related to the European Parliament data-driven research, in particular regarding erroneous votes

ep-the-corrections

Using data on erroneous/corrected votes in ep-erroneous-votes, based on open data dumps from Parltrack, to visalize erroneous, and subsequently corrected, votes by Members of the European Parliament.

extract-fields

Scripts to extract HTML form field information from one or several webpages.

fabric-git-betwixt

Selective fabric deployment of a compiled project using a git repository *betwixt and between* your source code and target machine.

followup

A jQuery plugin to show and hide follow up questions in a form.

formfieldinfo

A javascript plugin used to collect information about forms in a page. This information is then used to filter out potential form problems, like missing values for radio buttons etcetera.

git2json-wrapper

A simple wrapper around `git2json`: convert git logs to JSON for easy analysis.

gitslave

Archived unofficial fork of gitslave 2.0.2. Install on Mac with `brew install joelpurra/joelpurra/gitslave`

guest-browser-start-page

A friendly start page for your secondary/guest browser, letting your guests know that you are OK with them using it, and that no information is saved.

har-dulcify

Extract data from HTTP Archive (HAR) files, quite possibly downloaded by har-heedless, for some aggregate analysis.

har-heedless

Scriptable batch downloading of webpages to generate HTTP Archive (HAR) files, using PhantomJS.

har-portent

Using har-heedless to download and har-dulcify to analyze web pages in aggregate.

hexagonif

Played around with the HTML5 <canvas> element for use in the background of a website, and ended up with this little toy. Play around with the interactive demo. The name "hexagonif" comes from hexagon and gonif.

html-forms

How to improve #UX in #HTML forms: 10+ #usability projects explained!

html-forms-presentation

Improving user experience in HTML forms presentation slideshow

jekyll-theme-demivolte

A very simple Jekyll theme with the specific purpose of allowing for basic example/demo pages projects on github's gh-pages.

jq-hopkok

A bunch of jq snippets to manipulate json files, collected from other projects.

jquery-mutation-summary

A jQuery wrapper/plugin for mutation-summary, the DOM mutation-observers wrapper.

mice-wrapper

A simple wrapper around mice.py.

node-vidy

Search, discover, watch, and share talking videos from the VIDY API, using the CLI or code.

pagehasformchanges

A jQuery plugin to check if *anything* has changed in *any form* on a page, and warn the user before leaving the page.

plusastab

A jQuery plugin to use the numpad plus key (configurable) as a tab key equivalent.

recap

A collection of notes from talks, conferences, meetups.

riksdagens-ledamoter

A small utility to extract a list of first name, surname and email to all members of the Swedish Parliament

shunit2-colorize

Add colors to shUnit2 output.

skipontab

A jQuery plugin to exempt selected form fields from the forward tab order.

vidy-slack-bot

Search, discover, watch, and share talking videos from VIDY in Slack.

wellcomparedir

A tool for Windows to compare and select images with the same name from two folders, and copy to a third folder.