PGP0045 13A0 36B0 CC0C 1522 9298 02AD DA75 7E46 0478


softwareSoftware projects
documentsDocuments and articles
contactContact information for the author
pgpPGP information
public domainPublic domain dedications
linksLinks to important third parties


project description
blueberry End-user automated junit test runner
changelog Software changelogs
ftgr Fossil → Git replayer
gtyrell Git repository mirroring tool
ieee754b16 Functions for converting to/from IEEE754 binary16 values
immutables-javaslang A set of Immutables encodings for Javaslang
jaffirm Simple and fast contract checking
jareas Area types
jaux Auxiliary library
jboxes Box types
jcache Generic cache algorithms
jcage Run-time configurable JVM sandboxing
jcamera Camera implementations for 3D simulations
jcanephora OpenGL plus static safety
jcoords Functions for specifying and converting between coordinate spaces
jdae JAXB COLLADA bindings
jequality Equality handling
jeucreader Unicode codepoint reader
jfppg Java fixed-point code generator
jfprop Server for synchronizing Fossil repositories
jfsm Finite state machines
jfunctional Functional types
jguard FreeBSD jail management tools
jintegers Integer handling
jinterp Interpolation functions
jlexing Lexer types
jlog Hierarchical logging
jmurmur Java implementation of the Murmur hash function
jnfp Normalized fixed-point value functions
jnull Null pointer handling
jobj Java Wavefront OBJ parser
jorchard Mutable rose-tree types
jparasol Minimalist, pure functional shading language
jpismo OpenGL text renderer
jpita Simple text alignment algorithms
jpplib An improved fork of the unmaintained jpplib
jpra Fast, mutable, packed records for Java
jproperties Typed property handling
jptbox Unicode box drawing
jpuddle Trivial object pooling
jranges Range handling
jrcl Restricted class loader
jrpack Rectangle packing algorithms
jserial Serial number arithmetic
jspatial Spatial data structures
jstructural Java implementation of the structural document language
jsx S-expression parser
jsycamore OpenGL GUI library
jtensors Vector/matrix math package
jtimeline Generic timeline package
junreachable Exception types for marking unreachable/unimplemented code
junsigned Missing unsigned value conversions
jvvfs Virtual filesystem
jwhere Disk cataloguing tool
kstructural Kotlin implementation of the structural document language
plain-site-skin Boring Maven site skin
r1 Aggressively minimalist deferred rendering system
r2 Aggressively minimalist second-generation deferred rendering system
saxon-plugin Simple XSLT processing with Saxon
smfj Minimalist sequential mesh format
sombrero Shader management and preprocessing system
timehack6435126 JVM high-resolution timer bug workaround


Support for the packages here is also available from #io7m on 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-19A brief history of vertex specification in OpenGL
2012-04-252D GPU displacement mapping
2012-04-26Lightweight static exceptions
2012-06-18Type Tricks 0 - Propositions In Constructors Of Immutable Objects
2012-06-19Type Tricks 1 - Phantom Types
2012-07-29Crash course in algebraic types
2012-07-30Glow maps
2013-07-24Type Tricks 2 - Interfaces as Capabilities
2014-06-28Fragment shader outputs - Through the ages
2015-06-03Type Tricks 3 - Generic Visitors
2016-01-19Algebraic Types On The JVM
2016-08-20Reliable UDP Algorithms
2016-09-03A Brutal Approach To Logging In An Embedded Apache Felix


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
8168 DAE2 2B15 D3ED C722 C23D 0F15 B7D0 6FA8 0CB8 2017 personal key
9522 485E 761B 94D5 F98B 4259 2866 9282 EDBB 1971 2017 release key

The following keys have either expired or have been revoked:

key status comment
0045 13A0 36B0 CC0C 1522 9298 02AD DA75 7E46 0478 Expired 2016 personal key
70F8 92EF E93D F62A 0932 47A6 1611 A16B 44B1 A3D9 Expired 2016 release key
2852 08CD EA52 43CE 0AFC 4845 AB99 78DB 38AB 74C4 Expired 2015 personal key
6F5B B84E 2D32 3F61 E5D4 1501 1C61 65A3 1016 1791 Expired 2015 release key
AC7F 360E 1C07 2C47 00EB 566E E801 55B7 1982 CC07 Expired 2014 personal key
14F0 A524 8273 4791 55C4 1574 E936 2A12 2FE7 EC66 Expired 2014 release key
D888 CA9C 04F4 6734 7E27 E0C5 18AA A506 6082 4220 Expired 2013 personal key
42D2 06D4 F928 C8C2 A45A F938 4F47 F254 8FB0 2F3F Expired 2013 release key
277E 24F7 B6D4 F684 5A66 A37A 7A45 3572 0297 BB27 Expired 2012 personal key
098E EF85 1E84 43A9 BBD7 50C1 1A78 101E 09E7 56BB Expired 2012 release key
1E47 D42C A0F4 2576 4D98 1642 CBB9 BC80 492F 580C Revoked 2011 release key
2EF5 6FF0 DEA1 1C9C CC5E 5C5D F4F3 4B44 5535 2F86 Revoked 2011 personal key
3898 ED48 93C0 C9B8 8087 A11A 5149 8BCC 7C76 927C Revoked Coreland release key

public domain

This section records public domain dedications as they occur.

name date file
jspatial 2014-12-23 jspatial.asc
jrpack 2015-08-23 jrpack.asc
timehack6435126 2016-04-27 timehack6435126.asc