Posts
Beyond Beginning Git: Working Tree, Index and HEAD
TLDR: Once you get past the first few commands, you learn Git by solving the next problem. This article describes a common problem that helps us learn a little about how Git works. /TLDR
Every team using Git has that person who is an expert; the person that everyone asks when some strange thing goes wrong. That person usually got where they are one command at a time, starting with just a little more knowledge and then building on it by helping other people.
Posts
Hadoop Sample Application with Vagrant and Ansible
In a previous article I showed an example of using Vagrant and Ansible to deploy a pseudo-distributed Hadoop into a single virtual machine. The idea was, while Hadoop has support for running directly from a regular Java program or IDE, we can better learn how it works by running in a more realistic environment. We can also make something that’s useful for testing new applications at small scale.
The last article got a little long and ended a little abruptly, so I wanted to come back and discuss actually running a Hadoop application in the virtual machine.
Posts
Agile in the Defense Industry: Milestone Reviews
tldrDefense programs have built-in checkpoints, with formal reviews and document deliveries more suitable for waterfall than agile. Agile programs find creative ways to make things work./tldr
This is the third article in a series on the use of agile in the U.S. defense industry. The first article and second article are also available to read.
With characteristic dry aplomb, the Defense Acquisition Portal says, “[a]cquisition programs proceed through a series of milestone reviews and other decision points that may authorize entry into a significant new program phase.
Posts
Quick Hadoop Startup in a Virtual Environment
tldrA fully-featured Hadoop environment has a number of pieces that need to be integrated. Vagrant and Ansible are just the tools to make things easier./tldr
When getting started with Hadoop, it is useful to have a test environment to quickly try out programs on a small scale before submitting them to a real cluster (or before setting that cluster up). There are instructions on the Hadoop website that describe running Hadoop as a single Java process.
Posts
Dynamic Class Enhancement with CGLib
tldrPopular libraries like Spring use CGLib to dynamically generate classes at runtime. Understanding how it works can help you parse those notorious stack traces when something goes wrong./tldr
This is the third article on the subject of dynamic classes in Java. In the first article I discussed proxy capabilities built into the Java standard library. In the second article I discussed using CGLib in order to enhance a concrete class through a dynamic subclass.
Posts
Dynamic Proxies with CGLib
In a previous article I discussed creating dynamic classes using the functionality built into the standard Java library. However, it suffers from an important limitation, as it can only create dynamic classes that proxy interfaces. In order to provide services such as container-managed transactions (as done by the Spring Framework) or transparent lazy fetching of data (as done by Hibernate) it is necessary to create dynamic classes that appear to be an instance of a concrete class.
Posts
Agile in the Defense Industry: Organizing Teams
This article is the second in a series on how agile is being adopted in the U.S. defense industry. The first article discussed challenges specific to using agile in the defense industry, and why it is being adopted.
For any effort that uses the agile methodology, deciding “who is on the team” is a key step. The agile manifesto prioritizes individuals and interactions; for most users of agile, those interactions occur within a team.
Posts
Java Dynamic Proxies
tldrA lot of modern Java frameworks use dynamically generated code. This article is designed to demystify a little of what is happening behind the scenes./tldr
When I’ve worked with new users of the Spring framework and Java EE, I’ve seen a lot of initial confusion over why injection works in some places but not others, or at some times but not others. My theme when teaching this material is to repeat, “there is no magic”.
Posts
Building and Testing Go with GoClipse, Drone.io and Coveralls
In a previous article I showed building table-driven tests in Go. I then added another article to cover testing error conditions. Now that we have tests that cover all the cases, we deserve to get some green badges on our GitHub repository.
To help illustrate these articles with a simple example, I’ve posted a repository on GitHub that converts Roman numerals in string form into the numeric equivalent. I’ve added build support using drone.
Posts
Covering Error Cases in Go Unit Tests
In a previous article I showed table-driven tests in Go, which are a compact way to run lots of test cases. In this article I will show another way to improve unit tests in Go: table-driven tests with invalid values.
To illustrate this, I’ve created an example library in Go that converts Roman numerals in string form to their numeric value. Of course, not all strings are valid Roman numerals. In Go, functions typically return an error value rather than throwing an exception.
Posts
Table Driven Tests in Go
tldrFor a Java programmer, transitioning to Go can evoke “Where’s My JUnit?” Fortunately Go has both a built-in testing library and a very smooth way to write tests idiomatically./tldr
I’ve started working in Go both professionally and personally and have enjoyed the experience. One reason is that Go takes a quite different approach to Java in some areas, which makes switching between the two a mind-expanding experience.
One such area is in unit testing.
Posts
Models for 3D Printing with OpenSCAD
Like many others, I have recently acquired the hobby of maintaining and using a 3D printer (in my case from Printrbot). I was initially impressed with the wide array of models available from various sites, but that feeling wore off quickly. Being restricted to models made by others feels more like observer status rather than a real participant.
I spent a little time with SketchUp, but I’m a programmer, not an artist.
Posts
Agile in the U.S. Defense Industry, Part 1
tldrThe U.S. defense industry is the inventor of numerous software processes and even a programming language. This series discusses the challenges to using agile in the U.S. defense industry and some ways agile has had an impact./tldr
Introduction I was having a conversation with some of DZone’s Zone Leaders and the topic turned to how agile is used by defense contractors, especially in the United States. Allen Coin, with his eye out for interesting articles, was nice enough to suggest I try writing out some of those experiences and my thoughts.
Posts
Developing Atlassian Plugins with Vagrant
tldrDevOps tools are great for teams, but they are great for one-person efforts too. A basic knowledge of Vagrant and Ansible makes it much easier to create and maintain custom development environments./tldr
I’ve been a user of various Atlassian tools for several years, and have developed a couple plugins along the way to make things easier. Atlassian has a substantial SDK with toolkit available for use, but since I use Maven every day for work, I’m very sensitive to anything that wants to add new Maven configuration to my everyday machine, even as a separate set of commands and configuration file.
Posts
Presentations with Remark and Mermaid
tldrBrowser-based presentations are portable, easy to edit, and they convert easily to PDF. Plus embedded code snippets are a lot easier./tldr
Browser-based presentations seem to have taken over conferences, and for good reason. They can be hosted on the Internet, there’s less concern about portability between operating systems, and file sizes are very reasonable. However, in big companies PowerPoint is still the norm. Since I tend to split pretty equally between the two, I thought the story of how I moved toward browser-based presentations might be interesting.