Started releasing open source software online in 2007, and have build up a decent list over the years – below are 83 of them. Most are for developers, some are for power users, and a few are for casual users.
Project list A-Z
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 Twitch bot and streaming tool.
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
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.
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.
Reproducing an error loading multiple packages which use ffi-napi v3.0.1 on Node.js v14.
Show your support by adding the rainbow flag to your photos!
A jQuery plugin to show and hide follow up questions in a form.
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.
A simple wrapper around `git2json`: convert git logs to JSON for easy analysis.
A small set of functionality to retrieve repository data from github, in JSON format.
Unofficial fork of gitslave, hopefully more active than the original has been since 2.0.2. Install on Mac with `brew tap joelpurra/joelpurra && brew install --devel 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.
Homebrew tap containing specialized software created by Joel Purra, packaged for easy installation.
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.
Totally accurate github profile representation of joelpurra
Serving demos and tests for projects
A big integer library for working with possibly-signed arbitrarily long decimal strings.
This repository is now made obsolete by upstream fixes in jq, in commits after jq-1.5rc1-12-gcca3e92
Count occurrences of values within a range.
Manipulate arrays while avoiding general disarray.
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.
Provide fallbacks for bad values.
A bunch of jq snippets to manipulate json files, collected from other projects.
Counter buckets which also collect values outside an integer interval '0..n-1' in the first and last buckets respectively.
Count occurances of values across objects and arrays.
A collection of basic mathematical functions.
Sort objects by keys or values.
An implementation of the BSD libc rand() pseudorandom number generator (PRNG) function. The range is [0,2147483647].
An implementation of the Microsoft C Runtime rand() pseudorandom number generator (PRNG) function. The range is [0,32767].
An implementation of the Van der Corput quasirandom sequence generator function. The range is [0,1).
Counter buckets for the [0,1] range.
Manipulate strings without stress.
Integers and floats as strings, padded with zeros to your liking.
A package manager built for the command-line JSON processor jq.
A jQuery wrapper/plugin for mutation-summary, the DOM mutation-observers wrapper.
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
A simple wrapper around mice.py.
Paper based on the master's thesis "Swedes Online: You Are More Tracked Than You Think"
Play/view multiple video player streams in the same browser window by using iframes.
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!
Search, discover, watch, and share talking videos from the VIDY API, using the CLI or code.
A node.js configuration convention with a minimal readonly interface.
Command line music queue manager
Automate demo creation, showing the npshell `np` music player commands in action.
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
Simulate stroking keyboard keys into another application/window while taking screenshots to create a `.gif` animation.
Add colors to shUnit2 output.
A jQuery plugin to exempt selected form fields from the forward tab order.
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.
USB Video Class (UVC) device configurator. Used for webcams, camcorders, etcetera.
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.
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.