Installing GraalVM on OSX with SDKMan

Want to install GraalVM on OSX? It's easy. First, get SDKMan. Trust me. You want it. Almost as much as brew, if you're doing anything with the JVM. You'll want to install bash - via brew - because SDKMan uses bash and the OSX bash shell is badly outdated. Once you have SDKMan installed and… Continue reading Installing GraalVM on OSX with SDKMan

Metrics, new Macbook charger, testcontainers

Things I'm learning about, on this day of verbs: "What metrics matter: A guide for open source projects" has a lot of good information. It's interesting.I get to buy a new Macbook charger today; my "old" one is giving out, I think, which is frustrating.Testcontainers looks like an interesting project. I may have to try… Continue reading Metrics, new Macbook charger, testcontainers

Art, JDBC, coffee, JSoup, Gradle, Hallelujah, Resetting

Things I may have learned recently-ish: Painting pottery is fun. I'm not very good at it. I apparently also have a thing for beer steins... out of which I drink coffee, because beer isn't very good in my opinion. But steins are also a LOT of coffee, so it's impractical to drink coffee from steins.Speaking… Continue reading Art, JDBC, coffee, JSoup, Gradle, Hallelujah, Resetting


Things I have learned recently: People still don't really get JNDI, and the Java frameworks around today make it easy to ignore, even though it's still a core technology. It's not difficult to see how it can be confusing: context in JNDI is everything, and context makes it a challenge to create examples that make… Continue reading JNDI

Blogs are so eh

Things I think I've learned today: Blogs are so yesterday, man. It's probably the medium and platform I've chosen - I don't use Medium, for example, although I have an account there - and I don't publish often enough, or with enough direct focus, to really attract users, because I'm really not trying to build… Continue reading Blogs are so eh

A New Maven Archetype for Starter Project

I've recently put together a new Maven archetype, based on something I saw in Freenode's ##java channel a few weeks ago. Basically, someone had built their own archetype for "standard projects," with a few sensible dependencies and defaults, and while I thought it was a worthwhile effort, it didn't fit what I found myself typically… Continue reading A New Maven Archetype for Starter Project

A Simple Grappa Tutorial

Grappa is a parser library for Java. It's a fork of Parboiled, which focuses more on Scala as a development environment; Grappa tries to feel more Java-like than Parboiled does. Grappa's similar in focus to other libraries like ANTLR and JavaCC; the main advantage to using something like Grappa instead of ANTLR is in the… Continue reading A Simple Grappa Tutorial

Test-driven development can be great.

Test-driven development is, loosely defined, a practice in which tests are written before anything else, without regard to correctness. For example, if I want to write a program to generate "Hello, world," I would write a test that validated that "Hello, world" was generated - before I had anything that might create the output. When my tests pass, I know I've "finished," because my tests define a specification. By having tests in place, though, not only do I have a record of the specification, but I also have a way that I can add to the specification in such a way that I know I'm not breaking code - I would simply add more tests that corresponded with the changing specification, and I will know if my changes break other code. Here's the thing: I wrote the Java implementation using test-driven development practices (TDD), and the automaton is kinda neat; TDD also provided me the opportunity to fix the names of structures (renaming `Dataset` to `Generation`, for example) because the tests made it obvious that the names were inaccurate. However, seeing the differences in the development process between my Python implementation and the Java implementation, I might look into TDD with Python anyway.

An Incomplete Introduction to OWLAPI

OWL is a language used to describe ontologies - systems of knowledge. It's found primarily in the Semantic Web, which mostly means "hardly anywhere," and part of the problem is that using OWL is really pretty difficult. You can find plenty of technical language, but very little that describes how and why you'd actually use… Continue reading An Incomplete Introduction to OWLAPI