Build a real-time chat app with Go

person looking at a smartphone they’re holding in their hands
person looking at a smartphone they’re holding in their hands
Photo by Yura Fresh on Unsplash

Go emerged from Google out of a need to build highly performant applications using an easy-to-understand syntax. It’s a statically typed, compiled language developed by some of the innovators of C, without the programming burden of manual memory management. Primarily, it was designed to take advantage of modern multicore CPUs and networked machines.

In this article, I’ll demonstrate the capabilities of Go. We’ll take advantage of Go’s ability to easily create concurrent apps to build a chat app. On the back end, we’ll use Redis as the intermediary to accept messages from the browser and send them to the subscribed clients. On the front end, we’ll use WebSockets via to facilitate client-side communication. We’ll deploy it all on Heroku, a PaaS provider that makes it easy to deploy and host your apps. …

[One may not expect to use Salesforce for Planning Poker sessions, but see how Aditya Naag’s planning-poker-salesforce repository can make this happen quite easily.]

Feature teams often employ the concept of Planning Poker (or Scrum Poker) to help estimate the effort required to complete a given user story. Each team member is provided a set of cards, which are used to provide their estimate for the level of effort required for a given story. Most teams employ decks that utilize a Fibonacci-like sequence of the following values: 0, ½, 1, 2, 3, 5, 8, 13, 20, 40, 100.

Experienced scrum masters make teams aware that an eight-point story should be able to be broken into a three-point and five-point story. As a result, stories are typically not worthwhile to estimate as anything greater than a value of eight. …

GraphQL is a relatively new way to build user interfaces and APIs for consumers. It’s essentially a querying language backed by a strongly typed schema, which makes it easy to write human-readable requests to get exactly the data you need. Compared to REST, whose responses are dictated by the server, GraphQL queries place the power squarely in the hands of the client.

However, GraphQL is really just a spec that describes an API. Many features one might expect from an API, like authorization/authentication logic, bi-directional communication, or rate limiting, still need to be implemented. …

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 == 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! …


Michael Bogan

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

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