Programming is also Teaching

Programming can be thought of as something that takes place as part of interacting with a culture - a culture with two very different audiences. One "audience" is the CPU, and the other audience is made of other programmers - and those other programmers are typically the ones who get ignored, or at least mistreated.… Continue reading Programming is also Teaching

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


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 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

Smart Grids series reposted

I just republished an article I'd worked on for Red Hat, called "Smart Grids." It's got twelve parts already, with two more not actually finalized; I'd been pulled off of the smart grids article and never quite got back around to it. I'd still like to, though. It's a good walkthrough of an "Internet of… Continue reading Smart Grids series reposted