Building WebLogic EARs in Gradle

I recently wanted to convert an old Ant WebLogic build to use the Gradle build tool instead of Ant.  The main driving force behind that change was that the Ant build.xml file housed many different responsibilities, from building and testing the source code, to maintaining property files, to deploying and running the application, along with many tasks … Read more

Words Have Meaning

The Meaning of Words We are living within a Post-Modern worldview, where people are trying to convince us that words and objects no longer have meanings.  What something means for me may not be the same as it means for you.  This worldview has gained so much momentum because it is true, up to a … Read more

Cutting Corners

When is it acceptable to cut corners when moving from one architecture to another?  I’m talking about things like architectural requirements, such as a requirement that all services integrate with an APM monitoring tool.  When is it all right to cut corners when trying to get a service migrated from one architecture to another, and … Read more

Workin’ It

How do you keep a legacy application up, running, and maintained all while trying to refactor it to a new architecture?  We all know that the world isn’t going to stop and let you go off for x months/years to rewrite a legacy system in the new shiny architecture and language/framework.  Even if you do … Read more

Reverse Engineering

Sometimes, fixing a bug in legacy software requires quite a bit of reverse engineering.  In order to figure out why a bug is occurring, you may first need to learn how a whole subset of the system works at all.  Most of your time is spent following method usages and stack traces.  You have to … Read more

Nitty Code

Some people view certain code quality practices, especially code formatting standards, as very nit-picky things to enforce.  Somehow, these always seem to only apply to the practices that we don’t agree with though.  It’s not nit-picky to require braces on a new line, but it is to require spaces instead of tabs. Why do we … Read more

Java Memory Settings in Docker

I have not yet been able to find any correct example of setting Java memory settings when running in Docker containers.  There are numerous examples, yet they are all wrong. Wrong Example 1: Setting Nothing By default, Java doesn’t look at the cgroups restrictions that Docker uses for resource isolation.  So, if max heap is … Read more

Unbreakable Code

Quite often, when working with legacy code, there is a tremendous abhorrence to change.  Usually this does have good reasoning behind it.  If a system has been working for x number of years, you don’t want to just come in and starting changing things without cause.  You will constantly come across bits of code that … Read more

Code Reviews and Pull(Merge) Requests

I wanted to take some time to compare and contrast the different ideas of code reviews and merge (or pull) requests. Code reviews and merge requests seem to have different connotations.  A code review seems to be more defensive, where you are putting your code out there saying “hey, I think this is good, what … Read more

Zooming In

It is extremely difficult to keep track of both the “big picture”, and the small details of things you are working on.  For things like personal organization, you can use tools such as Trello to help you keep track of your big-picture projects and the tasks for each of those projects at the same time.  In the … Read more