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 |
---|---|
anethum | Generic parser API specification |
audiobook-android | The NYPL audio book player API |
blackthorne | Functional streaming XML data extraction |
bodyrecomp | Body recomposition tools |
boxwood | EPUB parser |
brooklime | Nexus Pro staging repository API and command-line tool |
cedarbridge | Generic, strongly-typed, versioned message protocol compiler |
changelog | Software changelogs |
checkstyle_rules | Common Checkstyle rules for io7m projects |
claypot | JCommander conventions for io7m projects |
coffeepick | Java runtime retrieval API and shell |
coffeepick-gui | CoffeePick GUI |
datepicker | Minimalist Android date picker |
epubsquash | Java EPUB size reduction API and tools |
ethermaker | Ethernet MAC address generator |
fieldrush | High-performance, low-allocation, type-safe, recovering stream JSON parser |
flail | DNS server stress testing tool |
gtyrell | Git repository mirroring tool |
halite | Maven plugin to accumulate dependencies and artifacts |
http | Tiny HTTP interface |
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 |
jbssio | Java bytestream structural I/O |
jcalcium | 3D realtime skeletal animation package |
jcamera | Camera implementations for 3D simulations |
jcathinone | Apache Artemis message directory spooler |
jcoords | Functions for specifying and converting between coordinate spaces |
jcoronado | Type-safe Vulkan wrapper |
jdae | JAXB COLLADA bindings |
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 |
jpismo | OpenGL text renderer |
jpita | Simple text alignment algorithms |
jpplib | An improved fork of the unmaintained jpplib package |
jpra | Fast, mutable, packed records for Java |
jproperties | Typed property handling |
jptbox | Unicode box drawing |
jpuddle | Trivial object pooling |
jrai | Apache Artemis → IRC relay bot |
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 |
jstructural | Java implementation of the structural document language |
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 |
jwheatsheaf | JavaFX file chooser |
jwhere | Disk cataloguing tool |
jxe | Hardened, boilerplate-free XML parsers |
jxtrand | Utility classes for XML string resources |
kstructural | Kotlin implementation of the structural document language |
lfa-launcher | LFA Android launcher application |
lwjgl3-osgi | LWJGL OSGi packages |
mime | RFC2045 MIME type parsing |
minisite | Tiny software project static site generator |
modulechaser | Maven plugin for reporting on the modularization status of dependencies |
oakleaf | Minimalist article schema and stylesheet |
opds1_2 | OPDS 1.2 parser |
opds2_0 | OPDS 2.0 parser |
opdsget | OPDS feed retrieval tool |
openjdk-api-java-client | Java client for the AdoptOpenJDK API |
pallene | An ultra-minimal single-file static web server |
percentpass | Percent-passing extension for JUnit 5 tests |
primogenitor | Ancestor POM for io7m projects |
r2 | Aggressively minimalist second-generation deferred rendering system |
readme | Tiny README generator |
scando | Tiny japicmp command-line wrapper |
servicedirectory | Android-oriented lazy application service directory |
sigiltron | Mysterious symbol generator |
simplified | The Android client for Library Simplified |
smfj | Minimalist sequential mesh format |
thoth | Experimental, extensible OSGi-based IRC bot |
timehack6435126 | JVM high-resolution timer bug workaround |
waxmill | FreeBSD BHyve manager |
xstructural | XSLT implementation of the structural document language |
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 |
ftgr | Fossil → Git replayer |
jareas | Area types |
jaux | Auxiliary library |
jboxes | Box types |
jcache | Generic cache algorithms |
jcage | Run-time configurable JVM sandboxing |
jcanephora | OpenGL plus static safety |
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 |
jrcl | Restricted class loader |
jrpack | Rectangle packing algorithms |
jtimeline | Generic timeline package |
jvvfs | Virtual filesystem |
plain-site-skin | Boring Maven site skin |
r1 | Aggressively minimalist deferred rendering system |
saxon-plugin | Simple XSLT processing with Saxon |
sombrero | Shader management and preprocessing system |
Support for the packages here is also available from #io7m on freenode.net. Please be patient, it's most likely that all channel users are in different time zones and may be asleep.
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 |
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:
Alternatively, there's always IRC.
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 |
---|---|
3E10 4C4C AE29 C040 1A26 6247 177C 64B8 7BA5 CD8A | 2021 android signing |
FDE9 3549 7094 0B4D 5637 2157 53A8 207B C03F 0ACE | 2021 jenkins-maven-rsa-key |
B32F A649 B192 4235 A6F5 7B99 3EBE 3ED3 C53A D511 | 2021 maven-rsa-key [RSA key to sign Maven Central releases] |
2C83 11D5 E344 626A E76E B866 CB39 C234 E824 F9EA | 2021 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 |