Craftsmen and Their Tools

This is kind of a follow-up to my earlier post Using the Right Tool. This one focuses more on how people tend to migrate towards tools. Do you know any great craftsmen? Anybody really great at carpentry, or art, or even more traditional tradecrafts like electricians or plumbers? What kinds of tools do they use? … Read more

Builds, and Pomodoros

Do you use the Pomodoro Technique? Many tech folks migrate towards that to help enhance their productivity. I know you do and follow builds, both locally and in a build server somewhere. How do you make these things work together? If your builds take any amount of time, more than 10 seconds or so, that … Read more

When To Rearchitect

Just like any other piece of a software system, a system’s architecture can accumulate dust, and turn into a form of technical debt. Sometimes this debt is non-prohibitive, or even useful, but if it is not considered and re-evaluated on a regular basis, it can jump up suddenly as a crushing debt, keeping you from … Read more

Java JMX in Docker

How to enable JMX in a container running in a local, or remote Docker container. These are the flags that I typically pass: This enables jmx, allows it to be remote, specifies port 9000, and allows it to bind to all the network interfaces. Then, you just need to make sure to expose port 9000 … Read more

Macroservices

Or, Partial Microservices There has been much discussion lately around how microservices may not actually be the appropriate architecture for many teams and companies, especially those working on legacy applications. The idea behind this is that while microservices may perhaps be ideal in some circumstances, they most definitely have their limitations, and really are not … Read more

User Experience

How do users interface with your app?  Do they take actions in a UI with a keyboard and mouse?  Do they tap on their phone’s screen?  Do they open up a chat in their favorite chat client?  Do they dictate actions to Siri?  I don’t know about everybody else, but those are usually questions I … Read more

Refactoring Microservices – Error Codes

Do you have legacy microservices?  It’s not surprising if you do, especially if some of those microservices (or macroservices, or miniliths) were really just a lift-and-shift of some already legacy software into a microservice structure and deployment.  Microservices present a unique challenge for refactoring, because the clients are so much harder to find than in … Read more

Don’t Fear Build Failures

We tend to fear the red marks, the little indications of something wrong, the failures.  We try to do our due diligence to avoid them wherever they are, whether on the paper for school, our IDE’s compiler output, or in our build pipeline.  Why are we so afraid of those little failures?  These failures help … Read more

WebLogic Library EARs in Gradle

As a follow-on to my previous post, here’s a word specifically on building and using Library EARs in gradle. What is a Library EAR? WebLogic allows you to create a Library EAR, which basically acts like a third-party library dependency in other contexts.  A single location for some shared code.  I won’t get into what … Read more