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 (6)
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.
USB Video Class (UVC) device configurator. Used for webcams, camcorders, etcetera. Command line interface for automation.
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.
Play/view multiple video player streams in the same browser window by using iframes.
Command line music queue manager. A music player from the comfort of your own shell.
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!
Active projects (15)
Tool to upgrade old Factorio game save files to the newest version. Bring on the map nostalgia!
Reproducing an error loading multiple packages which use node-ffi-napi v3.0.1 on Node.js v14.
Show your support by adding the rainbow flag to your photos!
A small set of functionality to retrieve repository data from github, in JSON format.
Homebrew tap containing specialized software created by Joel Purra, packaged for easy installation.
Totally accurate github profile representation of @joelpurra, presented as gifs
Serving demos and tests for projects
Dynamically updates the IPv4/IPv6 DNS records for domains registered with Loopia.
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.
Reproducing an issue where exiting a program after using node-usb v1.7.0 is significantly delayed.
Node.js library for USB Video Class (UVC) devices. Used to write software for webcams, camcorders, etcetera.
A node.js configuration convention with a minimal readonly interface.
Automate demo creation, showing the npshell `np` music player commands in action.
Simulate stroking keyboard keys into another application/window while taking screenshots to create a `.gif` animation.
Inactive projects (7)
A Twitch bot and streaming tool.
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.
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.
"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
Presentation/slides for Swedes Online: You Are More Tracked Than You Think
Joel Purra's master's thesis' information site
Paper based on the master's thesis "Swedes Online: You Are More Tracked Than You Think"
Archived projects (43)
A jQuery plugin to clean input fields with common functionality, like trim, normalize whitespace, digits only. It is also easily extensible.
Canadian extensions to AutoCleanCallback (required).
Auto advance slides on a timer in bespoke.js
Visitor analysis per slide in your Bespoke.js presentation
Convenient extension methods for building Bespoke.js plugins
Keep track of the active slide in Bespoke.js
Keyboard shortcuts to jump straight to a specific slide in bespoke.js
Log bespoke.js events and state to the console
Show slide notes in a secondary window/screen with Bespoke.js
A service to extract and dump links and data from shut down claimid.com user pages
Copy a project's first-level `npm` package readme files to a separate directory for easy access.
Collects functions that should be called in the future
Compare two strings to see what has changed, and perform some string manipulation.
A jQuery plugin to emulate tabbing between elements on a page.
Using open data dumps from Parltrack to analyze erroneous, and subsequently corrected, votes by Members of the European Parliament.
Projects related to the European Parliament data-driven research, in particular regarding erroneous votes
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.
Scripts to extract HTML form field information from one or several webpages.
Selective fabric deployment of a compiled project using a git repository *betwixt and between* your source code and target machine.
A jQuery plugin to show and hide follow up questions in a form.
A simple wrapper around `git2json`: convert git logs to JSON for easy analysis.
Archived unofficial fork of gitslave 2.0.2. Install on Mac with `brew install joelpurra/joelpurra/gitslave`
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.
Extract data from HTTP Archive (HAR) files, quite possibly downloaded by har-heedless, for some aggregate analysis.
Scriptable batch downloading of webpages to generate HTTP Archive (HAR) files, using PhantomJS.
Using har-heedless to download and har-dulcify to analyze web pages in aggregate.
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.
How to improve #UX in #HTML forms: 10+ #usability projects explained!
Improving user experience in HTML forms presentation slideshow
A very simple Jekyll theme with the specific purpose of allowing for basic example/demo pages projects on github's gh-pages.
A bunch of jq snippets to manipulate json files, collected from other projects.
A jQuery wrapper/plugin for mutation-summary, the DOM mutation-observers wrapper.
A simple wrapper around mice.py.
Search, discover, watch, and share talking videos from the VIDY API, using the CLI or code.
A jQuery plugin to check if *anything* has changed in *any form* on a page, and warn the user before leaving the page.
A jQuery plugin to use the numpad plus key (configurable) as a tab key equivalent.
A collection of notes from talks, conferences, meetups.
A small utility to extract a list of first name, surname and email to all members of the Swedish Parliament
Add colors to shUnit2 output.
A jQuery plugin to exempt selected form fields from the forward tab order.
Search, discover, watch, and share talking videos from VIDY in Slack.
A tool for Windows to compare and select images with the same name from two folders, and copy to a third folder.