Projects
Started releasing open source software online in 2007, and have build up a decent list over the years – below are 84 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.
Project list A-Z
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
botten-nappet
A Twitch bot and streaming tool.
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
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.
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.
eslint-config-joelpurra
Opinionated shareable linting configuration for Javascript/Typescript. By and for Joel Purra.
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.
ffi-napi-issue-nodejs-v14
Reproducing an error loading multiple packages which use ffi-napi v3.0.1 on Node.js v14.
fly-the-rainbow-flag.com
Show your support by adding the rainbow flag to your photos!
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.
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.
git2json-wrapper
A simple wrapper around `git2json`: convert git logs to JSON for easy analysis.
github-data-cli
A small set of functionality to retrieve repository data from github, in JSON format.
gitslave
Unofficial fork of gitslave, hopefully more active than the original has been since 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.
homebrew-joelpurra
Homebrew tap containing specialized software created by Joel Purra, packaged for easy installation.
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.
joelpurra
Totally accurate github profile representation of @joelpurra, presented as gifs
joelpurra.github.io
Serving demos and tests for projects
jq-bigint
A big integer library for working with possibly-signed arbitrarily long decimal strings.
jq-bugfix-jq-552
This repository is now made obsolete by upstream fixes in jq, in commits after jq-1.5rc1-12-gcca3e92
jq-counter-buckets
Count occurrences of values within a range.
jq-disarray
Manipulate arrays while avoiding general disarray.
jq-dry
Don't repeat yourself! Apply a filter `f` to its own output `n` times. Can be used to apply filters 'n' recursive levels, to build deep objects and for arithmetic.
jq-fallbacks
Provide fallbacks for bad values.
jq-hopkok
A bunch of jq snippets to manipulate json files, collected from other projects.
jq-interval-buckets
Counter buckets which also collect values outside an integer interval '0..n-1' in the first and last buckets respectively.
jq-key-counter
Count occurances of values across objects and arrays.
jq-math
A collection of basic mathematical functions.
jq-object-sorting
Sort objects by keys or values.
jq-random-prng-bsd
An implementation of the BSD libc rand() pseudorandom number generator (PRNG) function. The range is [0,2147483647].
jq-random-prng-microsoft
An implementation of the Microsoft C Runtime rand() pseudorandom number generator (PRNG) function. The range is [0,32767].
jq-random-prng-vdc
An implementation of the Van der Corput quasirandom sequence generator function. The range is [0,1).
jq-ratio-buckets
Counter buckets for the [0,1] range.
jq-stress
Manipulate strings without stress.
jq-zeros
Integers and floats as strings, padded with zeros to your liking.
jqnpm
A package manager built for the command-line JSON processor jq.
jquery-mutation-summary
A jQuery wrapper/plugin for mutation-summary, the DOM mutation-observers wrapper.
loopia-api-dyndns
Dynamically updates the IPv4/IPv6 DNS records for domains registered with Loopia.
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
mice-wrapper
A simple wrapper around mice.py.
more-tracked-paper
Paper based on the master's thesis "Swedes Online: You Are More Tracked Than You Think"
multi-video-frames
Play/view multiple video player streams in the same browser window by using iframes.
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-vidy
Search, discover, watch, and share talking videos from the VIDY API, using the CLI or code.
nodejs-configvention
A node.js configuration convention with a minimal readonly interface.
npshell
Command line music queue manager. A music player from the comfort of your own shell.
npshell-demo
Automate demo creation, showing the npshell `np` music player commands in action.
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
shell-keystroke-animator
Simulate stroking keyboard keys into another application/window while taking screenshots to create a `.gif` animation.
shunit2-colorize
Add colors to shUnit2 output.
skipontab
A jQuery plugin to exempt selected form fields from the forward tab order.
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.
uvcc
USB Video Class (UVC) device configurator. Used for webcams, camcorders, etcetera.
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.
xmouse-controls
Windows utility to enable or disable active window tracking, raising and also the delay in milliseconds. This is known as x-mouse behavior or focus follows mouse.