A helpful process for figuring out what’s broken and where

night photo of earth with city lights visible
night photo of earth with city lights visible
Photo by NASA on Unsplash

Ah yes, “It works fine on my machine!” Perhaps the most famous saying in our industry. Even with the advent of containers that provide consistent environments across the SDLC, we still hear developers fall back to this claim when a defect is found. But in the end, if the code doesn’t work in test or production, it doesn’t work, even if it works locally. So as a developer, being able to deep dive into your containerized application to fix the problem, regardless of the environment, is a critical skill we must all learn.

Let’s look at a sample app that works locally, but fails when deployed, and how you might use the scientific method (you remember that from school, right?) to debug these failures in containerized apps. …

Image for post
Image for post

[Learn how to add DocRaptor to a Spring Boot project to convert HTML to a PDF with advanced features, such as custom headers, footers, watermarks, and endless styling options. The results? A URI that can be called by any RESTful client.]

Building modern applications has become easier for feature teams, because of wonderful frameworks like Spring Boot, Angular, ReactJS, and Vue. Services from Amazon, Heroku, Microsoft, and even Google have provided exciting options to further compliment the modern application experience. However, the need for a rich output format (PDF or Microsoft Excel [XLS] ) seems to remain a few steps behind everything else. …

An alternative method for secret handling

Various colored plants in white pots
Various colored plants in white pots
Photo by Scott Webb on Unsplash.

Many software projects use secrets, usually keys to external APIs or credentials to access an external resource such as a database. Your application needs these keys at runtime, so you need to be able to provide them when you deploy your application or as a step in preparing your deployment environment.

In this article, I’m going to show you how to use git-crypt so that you can safely keep your application secrets in your source code repositories — even if they’re public.

The Problem With Application Secrets

Most projects have some sort of secret keys or credentials. For example, if your application is hosted on Heroku, you might provide an API key to your Heroku application using a command like…

Image for post
Image for post
Photo by Joshua Ness on Unsplash


With ever-increasing demands from other business units, IT departments have to be constantly looking for service improvements and cost-saving opportunities. This article showcases several concrete use-cases for companies that are investigating or already using Kafka, in particular, Kafka Connect.

Kafka Connect is an enterprise-grade solution for integrating a plethora of applications, ranging from traditional databases to business applications like Salesforce and SAP. Possible integration scenarios range from continuously streaming events and data between applications to large-scale, configurable batch jobs that can be used to replace manual data transfers.

Why Kafka and Heroku

Apache Kafka started as an in-house project at LinkedIn intended to replace the various queuing and message-passing systems that had evolved over the years. The goal was to create a horizontally scalable system, able to reliably store and handle many millions of messages per second. Today, the Kafka community provides a whole ecosystem of tools and features ranging from simple log-message passing to performing basic on-the-fly ETL jobs to complex data-pipeline processing. Its versatility and robustness in addition to its scalability makes Kafka a great choice for the enterprise. …

[TL;DR: In the second part of the series, I fine-tune the original recommendations engine, add a secondary data source, and write an Angular client to consume the data.]

In the “Building a Recommendations Engine Using Spring Boot and Slash GraphQL” article, the recently released Slash GraphQL hosted GraphQL backend by Dgraph was utilized as a system of record for a Java-based recommendations engine. A graph datastore is a great fit for a use case such as a recommendations engine, where the relationships between the data are just as important as the data itself. …

Improve your GraphQL skills by building something practical that can also help your career

A silhoutte of a man looking up at the stars.
A silhoutte of a man looking up at the stars.
Photo by Greg Rakozy on Unsplash

In this article, I’m going to explore graph databases/GraphQL by building a proof-of-concept blog powered by the recently launched Slash GraphQL — a hosted-GraphQL back end.

Graphs are a fascinating way to model the information in a system where the relationships (edges) between pieces of data (nodes) are first-class entities of the system. This is a different approach to the more common relational database (RDBMS) model, where the relationships between records are implied. For example, “this user owns this post because user.id == post.user_id.”

Graphs are most useful when the relationships among the data are as important as the data itself. …


Over the past decade, continuous integration (CI) and continuous delivery (CD) have become staples of the software development lifecycle. CI automates the process of merging code and checking for basic regressions and code quality issues, relieving some of the code review burden on your dev team. CD and automated deployments eliminate the overhead involved each time a new feature or a hotfix needs to get deployed.

Imagine if there were no more nights and weekends spent packaging builds and manually deploying across servers! …

If you’re a team developing and maintaining a software monolith, there’s a good chance you’re considering or planning a move to an architecture based around microservices. I’m won’t go into the various trade-offs involved in that decision in this article; rather, I will focus on one specific technique that might help you make the transition: Change Data Capture (CDC)

It’s relatively straightforward to build a system around microservices if you’re starting from scratch. However, it can be difficult to plan and manage a transition from an existing monolith. …

An in-depth look at nginx and Heroku

Angular modern building with many windows against a grey sky
Angular modern building with many windows against a grey sky
Photo by Matt Reames on Unsplash

Open source application diversity is both the biggest boon in the free and open source software (FOSS) movement and its greatest hindrance to adoption. You don’t always own the application you’re consuming, and it often comes with certain opinions and limitations imposed by the software author — either intentionally or otherwise.

Reverse proxies are one means of taking back control of the implementation details of these products. By filtering data into a Layer 7 (or, application-level) capable processor, you can manipulate, encrypt and decrypt, redirect, and otherwise control how data destined to your services can flow and behave.

What is nginx and Why Do You Need It?

One great example of controlling this data is nginx. nginx is an open source web server that is a world leader in load balancing and traffic proxying. It comes with a plethora of plugins and capabilities that can customize an application’s behavior using a lightweight and easy-to-understand package. …

Image for post
Image for post

I had great fun writing my recent article “Objects, Relationships, and the Cat” in which I shared one of the things I enjoyed most about working on the Salesforce platform using a rather unconventional story-telling style. In fact, I enjoyed it so much, and based on the positive feedback from readers, I thought I’d do it again. As before, this is a work of fiction with the exception of the technical aspects.

I didn’t really notice that the conversation between my housemate and Angie had gotten louder. I was accustomed to their heated technical discussions. After all, spending several months mostly stuck indoors during a pandemic hadn’t exactly put us in a state of mind to be calm or quiet. …


Michael Bogan

25 years of startups, products, and software architecture. Currently run DevSpotlight — tech content for tech companies. michael@devspotlight.com.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store