About the Author
John Boardman

John Boardman

Twitter

John is a Sr. Keyhole Consultant with 20+ years of experience in C, C++, Java, and IoT enterprise software design and development. Also currently writing a multi-platform, multi-user game in Unity3d (and server in Java) and have written custom graphical game engine clients in C and C++ on several platforms.

Java Recursion in Action: CopyFlat

CopyFlat: Java Recursion in Action

John Boardman Java Leave a Comment

By using Java’s built-in file classes, along with recursion, it turns out to be pretty easy to implement the requirements that I came up! It’s fairly simple to copy a set of files nested inside a directory structure into a new flat directory.

Remember, while you probably aren’t burning your own CDs or cassettes nowadays, there are reasons why the concepts demonstrated here are still relevant. The computer science techniques in this small set of code (such as recursion, threading, and file manipulation) are basic skills all Java programmers should know.

Redux InitialState with TypeScript

Redux with TypeScript: Focus on InitialState

John Boardman JavaScript, TypeScript 2 Comments

For this blog, I’m going to continue using the example project I’ve used for the last several blogs, Whirlpool. You can find my last post on the Keyhole Dev Blog – Updating Microservices with Netty, Kafka, and React: Whirlpool revisited. Feel free to go back and read about microservices, Netty, Kafka, and React, or just start here with me and continue on the journey. Either way, I’m glad you’re here.

The focus of this blog will be creating Redux’s InitialState using TypeScript. It tends to be tricky to get it to stop complaining about types, so this should be helpful. Personally, I’ve encountered this issue several times across multiple projects, so I think it is worth talking about.

Updating Microservices with Netty 5, Kafka 3, and React: Whirlpool Revisited

John Boardman Development Technologies, Java, JavaScript, Microservices, React Leave a Comment

Back in 2015 and 2016, I wrote two blogs that went step by step to develop a microservice/Netty architecture with fully working code called Whirlpool.

A lot has changed in the years since, so recently I decided to come back to the project, update it with the latest versions of Kafka and Netty, and add a React UI to it (rather than the vanilla JavaScript version it used before). In addition, I also added Windows Subsystem for Linux (WSL) scripts in addition to the Mac and Linux scripts that were there before and made all of the scripts more robust.

This blog will be about the work that went into all of those updates, plus a look at the new React UI. This provides an excellent view into what it takes to update an outdated microservices application implemented with Kafka (version .9 –>3.0) and Netty (4.1.3->5.0.0-alpha2), bringing all versions up to date and adding a React UI. By the end you’ll be familiar with the latest versions of these frameworks, know some “gotchas” to avoid, as well as understand how to integrate WebSockets into React.

Native MongoDB to Sequelize with PostgreSQL

Native MongoDB to Sequelize with PostgreSQL

John Boardman Databases, Heroku, MongoDB, PostrgreSQL Leave a Comment

Every long-term project will outlive at least some of the technologies it was originally built with. For example, a project I have been involved with recently ran into this situation. The app is hosted on Heroku, and over the years, the available MongoDB add-ons have changed and dwindled until now, there is only one.

Several migrations between MongoDB add-ons have already happened because of shutdowns. So, it was decided that rather than migrating to the last one still in existence, the project would switch to using PostgreSQL, which is supported directly by the Heroku team.

Progressive Web Apps Tips and Tricks

Progressive Web App Tips and Tricks

John Boardman CSS & HTML, HTML5 4 Comments

PWA (Progressive Web App) is a powerful solution to multiple problems. Prior to PWA, there were some browser-specific implementations to some of the problems solved by PWA, but PWA is much more elegant while solving more problems at the same time.

In this post, we’ll cover the problems PWA was created to solve, some of the solutions PWA replaced, tools that make PWA development faster and more flexible, and tips to get the most out of PWA development.