Java Software Development & Consulting Services

Discover Keyhole Software’s expert Java consulting services. From custom application development and project augmentation to training and advisory, our U.S.-based Java practitioners deliver enterprise-grade solutions tailored to your business needs. Learn more!

State Machines Using XSTATE

An Introduction to State Machines Using xstate

Mat Warger Articles, Development Technologies & Tools, JavaScript, React, TypeScript 1 Comment

State machines are an old concept. They are a proven solution that provides a solid architectural foundation for application processes. In this article, I hope to provide an introduction to what they are and how they can be useful for a modern web or mobile application engineer. We’ll be focusing on one library in particular – xstate – and how it can allow anyone to easily leverage state machines for managing global or component state.

Expression Parser with Antlr4

An Antlr4-Based Expression Parser

Lou Mauget Articles, Development Technologies & Tools, Java, Programming, Python 1 Comment

In this blog, we’ll present a simple arithmetic expression parser implemented through an Antlr4 parser generator. It will be able to take in an input string (such as 2+4+-4+-2*10%9*7) to produce the result (-12.0).

You may be thinking, “Great, but what’s the point?” Well, to answer your question, as simple as this example may seem, the principles involved actually extend to use cases such as DSLs, transpilation, and anything else expressible by grammar rules.

This post has two parts. In part 1, we’ll discuss the background components of a parser. In part 2, we’ll cover building the demo and running it. If you already understand grammar parsing, you could skip part one.

Centralizing Configurations with Spring Cloud Config

Bing Liu Articles, Development Technologies & Tools, Microservices, Spring, Spring Boot Leave a Comment

When the Microservices approach became popular a few years ago, many companies rushed to build their own microservices or to convert their legacy applications into microservices. Over the years, companies have implemented an abundance of microservices, mostly with Spring Boot. Each of them manage their own configurations across deployment environments like Dev, Test, and Prod.

Due to the nature of a complex business process, there are many common configurations (e.g. databases, queues, email servers, and FTP servers, etc.) used in the distributed services. This can result in services having redundant and confusing configs on a distributed system. It can become challenging to update the configs for too many services on a distributed system across multiple environments.

Thankfully, Spring Cloud Config provides the implementation to successfully resolve these issues. It provides server-side and client-side support for externalized configuration in a distributed system. With the Config Server, you have a central place to manage external properties for applications across all environments. The concepts on both client and server map identically to the Spring Environment and PropertySource abstractions, so they fit very well with Spring applications.

In this post, I’ll demonstrate Config Server and Client with example code. I’ll show you how to use Git or a local repository as a central place to store all the config files. The diagram below illustrates how the distributed client services (e.g. Investment Position/Price/Reporting Data service) fetch their configuration from the Config Server, which in turn retrieves them from one central place.

How to Create a Dystopian Future at Home with Python, OpenCV, and Microsoft Azure

Derek Andre Articles, Azure, Cloud, Development Technologies & Tools, Python, Tutorial 2 Comments

Facial recognition is both amazing and horrifying. Some amazing things it can do is the ability to find missing children or seniors, using your face to unlock your phone, and being able to board an airplane faster.

In this blog post, I want to highlight some powerful tools and platforms that allow you to create distributed facial recognition systems with OpenCV and Azure’s Cognitive Services. By the end of this post, you will have a working face detector using OpenCV that can communicate with Azure’s Cognitive Services.

I used Python 3.7.4 and pip 19.2.3 for this project. You can view the code from this blog at https://github.com/dcandre/Dystopian-Future-At-Home.