Understanding the New Cross-Platform .NET

Part 1 of a 4-part series. A link to part 2 is at the bottom. Java has been my primary bread-and-butter for more than 15 years. However, over the past five years, my two most recent companies have been mixed shops that use both Java and C# to some degree. My initial impression was that “C#-as-a-language” is about five years ahead of Java, but “.NET-as-a-ecosystem” is a decade or more behind. [Read More]

Go for Java Programmers: Simple Types

Part of the Go for Java Programmers series Before we get into custom types, and Go’s version of object-orientation, let’s cover the simple types that come out of the box. Full details can be found in the (surprisingly readable) language spec, but here are some highlights that are important from a Java programmer’s perspective. Booleans Boolean variables are declared with type bool, and their value must be one of two constants, true or false. [Read More]

Book Review: Practical Vim

I picked up a copy of Drew Neil’s Practical Vim on a lark. With Java being my main programming language for professional use, I spend most of my time coding within an IDE. For over a decade that was Eclipse, and more recently it’s been IntelliJ, but I would definitely not use a plain text editor for non-trivial Java development. I do use vi/Vim when I’m forced to edit something within a shell session. [Read More]

Simplify Time Intervals in Java With TimeUnit

In Java, like most programming languages, it is fairly common to represent and pass around time interval lengths as a number of milliseconds. This how most hardware thinks of time under the covers, anyway. It’s very easy to get a millisecond representation from any Java date or time object, and you can always get the current time from System.currentTimeMillis(). Therefore, milliseconds are a “universal language” that is often used in API’s, to avoid worrying about who’s using the Java 8 time library vs. [Read More]

Hosted Continuous Integration Options for Java Projects

Recently I’ve noticed a lot of GitHub projects containing .travis.yml files, indicating that the owner uses the Travis continuous integration service to periodically build their project and run unit tests. Out of curiosity, I thought I might I try out some of the hosted offerings that are popular in the open source and startup communities. In my professional Java developer life, the industry standard for years now has been Jenkins (formerly Hudson prior to the fork). [Read More]