Software | Software projects |
Documents | Documents and articles |
Contact | Contact information for the author |
PGP | PGP information |
Public Domain | Public domain dedications |
Links | Links to important third parties |
Software projects of which I am (or have been) the primary author and/or maintainer:
Project | Description |
---|---|
abstand | Interval trees. |
anethum | Generic parser API specification. |
aradine | Modular programmable synthesis. |
audiobook-android | The Palace audio book player API. |
aurantium | Aurantium audio sample map format. |
bishopsgate | JMS → Matrix relay. |
blackthorne | Functional streaming XML data extraction. |
bodyrecomp | Body recomposition tools. |
boxwood | EPUB parser. |
brooklime | Nexus Pro staging repository API and command-line tool. |
calino | Strongly-specified 3D texture file format. |
canonmill | Directory-based Java Keystore. |
cardant | Inventory server. |
cedarbridge | Generic, strongly-typed, versioned message protocol compiler. |
certusine | ACME client. |
changelog | Software changelogs. |
checkstyle_rules | Common Checkstyle rules for io7m projects. |
chione | Opinionated builds of Apache Artemis for small-scale deployments. |
cxbutton | Customizable embossed CSS buttons. |
datepicker | Minimalist Android date picker. |
digal | Java FX rotary dials. |
dixmont | Dixmont Jackson extensions. |
epubsquash | Java EPUB size reduction API and tools. |
ervilla | JUnit 5 Podman container creation. |
ethermaker | Ethernet MAC address generator. |
fieldrush | High-performance, low-allocation, type-safe, recovering stream JSON parser. |
flail | DNS server stress testing tool. |
gatwick | BOSS GT-1000 controller. |
genevan | Generic protocol negotiation algorithm. |
gtyrell | Git repository mirroring tool. |
hibiscus | RPC Client API Specification. |
http | Tiny HTTP interface. |
idstore | Identity server. |
idstore_gui | GUI for idstore. |
idstore_trafficgen | Traffic generator for idstore. |
ieee754b16 | Functions for converting to/from IEEE754 binary16 values. |
immutables-vavr | A set of Immutables encodings for Vavr. |
jaccord | Java library to assist with musical analysis. |
jade | Java application directory etiquette. |
jaffirm | Simple and fast contract checking. |
jarabica | Type-safe OpenAL wrapper. |
jattribute | Observable, functional, mutable variables. |
jbssio | Java bytestream structural I/O. |
jcamera | Camera implementations for 3D simulations. |
jcathinone | Apache Artemis message directory spooler. |
jcip | Clean-room JCIP annotations. |
jcolorspace | Color space conversions. |
jcoords | Functions for specifying and converting between coordinate spaces. |
jcoronado | Type-safe Vulkan wrapper. |
jdeferthrow | Defer and combine exceptions. |
jdownload | Resumable HTTP downloader library. |
jequality | Equality handling. |
jeucreader | Unicode codepoint reader. |
jfsm | Finite state machines. |
jintegers | Integer handling. |
jinterp | Interpolation functions. |
jlexing | Lexer types. |
jmulticlose | Collective try-with-resources. |
jmurmur | Java implementation of the Murmur hash function. |
jmutnum | Trivial mutable numbers. |
jnfp | Normalized fixed-point value functions. |
jnoisetype | SoundFontⓡ I/O. |
jobj | Java Wavefront OBJ parser. |
jorchard | Mutable rose-tree types. |
jpita | Simple text alignment algorithms. |
jpplib | An improved fork of the unmaintained jpplib package. |
jproperties | Typed property handling. |
jptbox | Unicode box drawing. |
jpuddle | Trivial object pooling. |
jqpage | SQL pagination functions. |
jranges | Range handling. |
jregions | Immutable area types. |
jsamplebuffer | Audio sample buffer types. |
jsay | Tiny JMS text message sender. |
jserial | Serial number arithmetic. |
jspatial | Spatial data structures. |
jspiel | Java RIFF I/O. |
jsx | S-expression parser. |
jsycamore | OpenGL GUI library. |
jtensors | Vector/matrix math package. |
junreachable | Exception types for marking unreachable/unimplemented code. |
junsigned | Missing unsigned value conversions. |
jvindicator | Type-safe HTTP servlet parameter validation. |
jwheatsheaf | JavaFX file chooser. |
jxe | Hardened, boilerplate-free XML parsers. |
jxtrand | Utility classes for XML string resources. |
kabstand | Kotlin port of the Abstand package. |
lanark | Restricted dotted name specification. |
laurel | Image caption management. |
lfa-launcher | LFA Android launcher application. |
looseleaf | Minimalist transactional HTTP key/value store. |
medrina | Role-based mandatory access control. |
mime | RFC2045 MIME type parsing. |
mime2045 | RFC 2045 MIME type parsing. |
minisite | Tiny software project static site generator. |
northpike | Continuous integration server. |
opds1_2 | OPDS 1.2 parser. |
opds2_0 | OPDS 2.0 parser. |
opdsget | OPDS feed retrieval tool. |
oxicoco | Embeddable Java IRC server component. |
palace | The Android client for The Palace Project. |
pallene | An ultra-minimal single-file static web server. |
percentpass | Percent-passing extension for JUnit 5 tests. |
primogenitor | Ancestor POM for io7m projects. |
quarrel | Strict, opinionated, typed command-line argument parser. |
quixote | Tiny embedded web server for unit testing. |
repetoir | Service directory. |
scando | Tiny japicmp command-line wrapper. |
seltzer | A specification for structured, user-facing error values. |
servitor | Static podman/systemd service generator. |
sigiltron | Mysterious symbol generator. |
smfj | Minimalist sequential mesh format. |
streamtime | Input/output stream progress tracking. |
sunburst | Asset package system. |
tabla | Plain text table rendering. |
tavella | Podman Java interface. |
timehack6435126 | JVM high-resolution timer bug workaround. |
trasco | SQL database schema revision system. |
usq | Unsupervised persistent queues. |
verdant | Binary protocol for HTTP endpoint version announcements. |
verona | Semantic versioning types. |
wendover | Java NIO channel tools. |
xoanon | JUnit 5 JavaFX test harness. |
xstructural | XSLT implementation of the structural document language. |
zelador | JUnit 5 cleaning service. |
zeptoblog | Tiny, modular, static blog generator. |
The following software packages will no longer be receiving updates:
Project | Description |
---|---|
blueberry | End-user automated junit test runner |
cantoria | Java 9+ API analysis tool |
claypot | JCommander conventions for io7m projects. |
coffeepick | Java runtime retrieval API and shell. |
coffeepick-gui | CoffeePick GUI. |
ftgr | Fossil → Git replayer |
halite | Maven plugin to accumulate dependencies and artifacts. |
jareas | Area types |
jaux | Auxiliary library |
jboxes | Box types |
jcache | Generic cache algorithms |
jcage | Run-time configurable JVM sandboxing |
jcalcium | 3D realtime skeletal animation package. |
jcanephora | OpenGL plus static safety |
jdae | JAXB COLLADA bindings. |
jfppg | Java fixed-point code generator |
jfprop | Server for synchronizing Fossil repositories |
jfunctional | Functional types |
jguard | FreeBSD jail management tools |
jjacob | High-performance, memory and type-safe bindings to the JACK API |
jlog | Hierarchical logging |
jnull | Null pointer handling |
jparasol | Minimalist, pure functional shading language |
jpismo | OpenGL text renderer. |
jpra | Fast, mutable, packed records for Java. |
jrai | Apache Artemis → IRC relay bot. |
jrcl | Restricted class loader |
jrpack | Rectangle packing algorithms |
jstructural | Java implementation of the structural document language. |
jtimeline | Generic timeline package |
jvvfs | Virtual filesystem |
jwhere | Disk cataloguing tool. |
kstructural | Kotlin implementation of the structural document language. |
lwjgl3-osgi | LWJGL OSGi packages. |
modulechaser | Maven plugin for reporting on the modularization status of dependencies. |
oakleaf | Minimalist article schema and stylesheet. |
oatfield | OSGi bundle I/O and analysis. |
oci-images | OCI images for various projects. |
openjdk-api-java-client | Java client for the AdoptOpenJDK API. |
plain-site-skin | Boring Maven site skin |
portero | Matrix Homeserver invitation token service. |
r1 | Aggressively minimalist deferred rendering system |
r2 | Aggressively minimalist second-generation deferred rendering system. |
readme | Tiny README generator. |
saxon-plugin | Simple XSLT processing with Saxon |
servicedirectory | Android-oriented lazy application service directory |
sombrero | Shader management and preprocessing system |
thoth | Experimental, extensible OSGi-based IRC bot. |
waxmill | FreeBSD BHyve manager. |
All packages on the site use semantic versioning. Please consult the referenced site for the exact rules. Informally, this means that backwards-incompatible changes, new functionality, and bug fixes are unambiguously indicated by version number changes.
Date | Title |
---|---|
2012-01-19 | A Brief History Of Vertex Specification In OpenGL |
2012-04-25 | 2D GPU Displacement Mapping |
2012-04-26 | Lightweight Static Exceptions |
2012-06-18 | Type Tricks 0 - Propositions In Constructors Of Immutable Objects |
2012-06-19 | Type Tricks 1 - Phantom Types |
2012-07-29 | Crash Course In Algebraic Types |
2012-07-30 | Glow Maps |
2013-07-24 | Type Tricks 2 - Interfaces As Capabilities |
2014-06-28 | Fragment Shader Outputs - Through The Ages |
2015-06-03 | Type Tricks 3 - Generic Visitors |
2016-01-19 | Algebraic Types On The JVM |
2016-08-20 | Reliable UDP Algorithms |
2016-09-03 | A Brutal Approach To Logging In An Embedded Apache Felix |
2018-09-11 | Aeron For The Working Programmer |
2021-08-29 | The ATMega328P From (Almost) Nothing |
2022-10-30 | Simple GPU Outline Shaders |
Using PGP (and therefore, the email addresses contained within the PGP keys) is preferable. But if this is not an option, the author can be contacted at:
All packages released on Maven Central are signed by the current release key. Personal correspondence is signed by the current personal key. The current key policy is yearly-expiring keys, with each new set of keys being signed by the previous set. Expired/revoked keys are archived here in order to allow for the verification of old releases.
Key | Comment |
---|---|
E288 E54A 25D3 F5A9 BF68 6BB4 E64D 38C0 2097 0A85 | 2024 github-ci-maven-rsa-key |
37A9 97D5 970E 145A B9DB 1409 A203 E72A D3BB E1CE | 2024 maven-rsa-key |
E362 BB4F 16A9 981D E781 2F6E 10E4 AAD0 B00D 6CDD | 2024 personal |
The following keys have either expired or have been revoked:
This section records public domain dedications as they occur.
Date | Name | File |
---|---|---|
2014-12-23 | jspatial | jspatial.asc |
2015-08-23 | jrpack | jrpack.asc |
2016-04-27 | timehack6435126 | timehack6435126.asc |
2019-03-21 | unbolted_frontiers | unbolted_frontiers.asc |