Integrating AI into Java projects has traditionally been complex—requiring multiple SDKs, custom integrations, and provider-specific code. Spring AI simplifies this process by providing a single, consistent layer for working with large language models in Spring Boot. No more stitching together libraries or rewriting code for every provider. In this guide, we’ll explore what Spring AI is, why it matters for ... Read More The post Spring AI: An Overview appeared first on Keyhole Software.| Keyhole Software
Working within a software development team has tremendous benefits, but it also comes with its share of complications. One of those complications is inertia – the more people who get used to a process or a certain set of tools, the more difficult it can be to introduce changes. Maybe this manifests in a positive way, where repetition and familiarity ... Read More The post Best Practices for Proposing Improvements to Your Development Team appeared first on Keyhole Software.| Keyhole Software
Cloud platforms now sit at the center of business planning. Many teams compare AWS for its wide service range, Azure for its ties to Microsoft, and Google| Keyhole Software
The terms DevSecOps and DevOps are often compared because they both focus on improving software delivery. DevOps connects development and operations to speed up releases and reduce errors. DevSecOps builds on this by weaving security into every step of the process. It ensures vulnerabilities are caught early, downtime is minimized, and systems remain safe for users. How DevOps Helps Teams ... Read More The post DevSecOps vs DevOps: What’s the Difference? appeared first on Keyhole Software.| Keyhole Software
This blog walks through building a clean, modular service layer in Flutter to keep mobile apps scalable, maintainable, and resilient to change. Using real examples with third-party APIs, it demonstrates how to abstract logic, structure code for API calls, and easily swap data sources without major rewrites. You’ll also learn strategies like creating request/response classes and centralizing error handling to reduce redundancy and improve code quality.| Keyhole Software
In the dynamic world of software development, the phrase “the best Java testing frameworks for high-quality software” is more than just a statement; it's| Keyhole Software
Outdated deployment practices can slow down even the best software teams. When you’re still manually moving files between servers, it’s easy for small| Keyhole Software
A familiar challenge for many businesses is knowing when it’s time to modernize. Legacy applications that once ran smoothly on in-house servers start to| Keyhole Software
Deploying a mobile app is often more difficult than building it. In this guide, we simplify the confusing, often poorly documented process of deploying a Flutter app for internal testing. Learn step-by-step how to distribute your app through Google Play Internal Release and Apple TestFlight, so real-world testers can start using your app sooner.| Keyhole Software
In this blog, we'll explore how CI/CD automation with tools like JIRA Cloud, Jenkins, Slack, GitHub, SVN, and Postman benefits Agile teams as a whole.| Keyhole Software
Industry: Supply Chain & LogisticsTechnologies: Java, Azure DevOps, Terraform, Helm, Azure Kubernetes Service (AKS), CrossplaneServices: DevOps| Keyhole Software
Google Cloud Platform (GCP) offers developers and organizations the ability to create and deploy serverless Cloud Run functions. This code – whether it’s written in Node.js, Python, C#, or another language – can interact with other parts of GCP’s infrastructure. By default, the function is triggered by a basic HTTPS request. However, that is not our only option. In this blog, we’ll introduce the concept of event-driven functions—a powerful way to automatically respond to changes a...| Keyhole Software
Virtual machine deployments are no longer the standard for running modern software. If you’re using Docker for event-driven applications, choosing the| Keyhole Software
Get ahold of the Keyhole Software team! If you have questions regarding our consulting, application development, or learning services, send us an email.| Keyhole Software
It's an exciting phase when you decide to build a web application for your business. Whether you're looking to launch a new digital product, streamline| Keyhole Software
The purpose of this demo is to show you how easy it is to leverage Power Apps to quickly create an internal Attestation page. Power Apps can easily be tailored to meet your company’s design guidelines and delivered to your platform of choice, individualized, and tied to complex workflows leveraging the tools you use. This post is organized into three, fairly simple steps. I tried to break it down into minute, succeeding tasks, so it’s easy to follow along. Without further ado, let’s jum...| Keyhole Software
Streamlined frameworks like Spring Boot make it easier to build enterprise Java applications, but getting them to perform well under real-world loads| Keyhole Software
Security is the cornerstone of software built for regulated industries. Applications must work properly and meet strict compliance standards while| Keyhole Software
Expert developers, hands-on leaders & technical educators providing quality software consulting and solutions your organization can rely on.| Keyhole Software
We specialize in developing robust, well-documented APIs that serve as the backbone of enterprise applications. Whether you're building new digital products, modernizing legacy integrations, or enabling secure access to your data, our expert developers help you design and implement APIs that are reliable, scalable, and built to last.| Keyhole Software
A team of six highly skilled Keyhole Software developers collaborated to deliver a robust full-stack solution for an advanced insurance platform tailored| Keyhole Software
A Keyhole Software consultant has played a pivotal role in modernizing a complex financial management platform, seamlessly transitioning a key section of| Keyhole Software
As a Standard Tier Consulting Partner in the Amazon Web Services (AWS) Partner Network (APN), Keyhole joins an elite group of technology partners nationwide.| Keyhole Software
Keyhole Software has experience developing custom mobile apps using Flutter for various industries, including healthcare, finance, and education. Advisory & PoC Services: Custom consulting and training services, including guidance on best practices, architecture, and design patterns, as well as training developers to create their own Flutter apps. Flutter Development: Building custom Flutter apps, leveraging the framework to create high-quality, visually attractive, and performant mobile appl...| Keyhole Software
Accelerate software delivery and modernize legacy systems with AI-powered development. Keyhole Software leverages tools like EnterpriseGPT, RAG, and Windsurf to boost quality, reduce time to market, and ensure secure, scalable solutions.| Keyhole Software
Project description of a successful large-scale COBOL modernization and microservices implementation by Keyhole Software for KC Southern Railway.| Keyhole Software
Case Study: Modernizing Legacy COBOL Batch Processing for a Leading Food Wholesaler Keyhole Software successfully modernized a legacy COBOL batch processing system, addressing inefficiencies and integration challenges through an AI-optimized POC. Keyhole accelerated development efforts by 20-30% leveraging AI-driven tools in the migration from COBOL to Spring Batch, enhancing scalability, maintainability, and cloud-native capabilities for the client’s system. Download the case study -| Keyhole Software
The process of hiring quality developers has become more complex in today’s AI-driven world. With automated resumes and advanced interview technologies on| Keyhole Software
Keyhole Software is excited to announce the release of EnterpriseGPT, a powerful web application designed to help enterprise IT organizations leverage AI| Keyhole Software
This post walks through a hands-on experiment in agentic development using an AI-powered digital twin embedded in the IDE. See how a single, well-structured prompt enabled the agent to implement a real user story, generate behavioral tests, and prepare Git commit documentation—with minimal developer input. Includes real-world code samples, implementation insights, and a candid look at what worked, what didn’t, and where human oversight is still essential.| Keyhole Software
And we're not talking about the surface-level stuff! We dive into how these bleeding-edge revolutionists use GenAI to increase revenue and decrease operational costs. You'll learn how they have woven GenAI into the very fabric of their business to push themselves to new limits, beating out competition and exceeding expectations.| Keyhole Software
Welcome to the Keyhole Software Development Blog Join below to subscribe to the Keyhole dev blog and receive new posts by email. Free, no spam & opt out anytime. Categories Filter - All Topic - Choose One: .NET .NET Core Agile Angular Architecture ASP.NET AWS Azure Blockchain C# Cloud Consulting Databases Design DevOps Docker Flutter Git GraphQL Java JavaScript Kubernetes Microservices Mobile Node.js React React Native Spring TypeScript Testing Vue.js Video Xamarin.| Keyhole Software
Keyhole Software is passionate about providing consulting, education, and high-quality software development services for organizations of all sizes.| Keyhole Software
I wanted to take some time to put together a summary of some popular dependency injection (DI) frameworks for Java. This is a high-level overview of| Keyhole Software
You’ve officially made it! We’re almost ready to wrap up our conversation about the Scaled Agile Framework. In case your memory is hazy, I’m a senior consultant and team lead on the Keyhole Software team. I’ve been working with a client who is adopting SAFe, guiding their team and helping to set the right culture for the methodology. I’ve learned a lot about SAFe over the past year, and in this blog series, I’m sharing what I’ve learned with you. In this final series installment...| Keyhole Software
Good code can run, but clean code endures. In the world of Java, writing clean, efficient code is essential for building robust, maintainable applications| Keyhole Software
The toolset of the JavaScript developer is ever-evolving and ever-changing. Array manipulation saw dramatic improvements in usability, utility, and readability with the release of the ECMAScript 6 standard in 2015. This update was released with game-changing features like arrow functions, scoped variables like ‘let’ and ‘const’, and many other commonly used tools. As a developer, I use these features on a regular basis when developing in a Javascript environment, whether that’s a fr...| Keyhole Software
Helping your business harness the benefits of mobile platforms and achieve your goals through expert consulting & custom development.| Keyhole Software
In this guide, we'll show you how to leverage Ollama, a popular tool for local LLM execution, and the Continue VS Code extension to create a powerful coding environment. Follow along, and you'll be running AI-powered code suggestions in no time!| Keyhole Software
This blog describes the basics of what it takes to get an existing LDAP server moved from the PV virtualization type to HVM. I encountered this situation personally while working for a client earlier this year. Efforts have been made to keep most of it generic enough to be useful for other situations involving system upgrades or replacements as well.| Keyhole Software
The world of technology is constantly evolving, but despite the rise of cutting-edge programming languages and modern software frameworks, COBOL| Keyhole Software
Application Development Services At Keyhole Software, our core focus is application development, creating custom applications that solve real business problems. We cater to a wide range of clients, from well-funded startups to Fortune 100 organizations. We excel in providing high-quality new development or adding new features to existing applications. Additionally, we specialize in integrating with systems or third-party gaps to ensure seamless operations.Custom Application Development We bui...| Keyhole Software
When it comes to building applications in the .NET framework, performance is a critical aspect that can make or break the user experience. However, even| Keyhole Software
I am working on a project that leverages both Azure Functions as well as Cosmos DB. In trying to get both of these components wired together, I found that there are very few examples that work with the most recent versions of these components. I also saw examples that could work at a small scale, but don’t show industry-standard best practices, and would lead to performance issues if deployed in an environment with any meaningful traffic. To that end, I put together this blog post showing h...| Keyhole Software
In this post, I show how to cajole Array.sort() into producing the following order. This: instead of this.... The answer is to pass the sort function a comparator argument from the International Collator built into every major browser and Node.js. This approach is simple and declarative for lists of flat strings. The comparison function arguments default to each string being compared. For sorting objects such as a list of dropdown choices, just pass a pair of the sort field drill-downs to the...| Keyhole Software
Is offshore software development really the best option for your business? At first glance, the lower costs and larger teams may seem appealing, but in| Keyhole Software
In Part 4 of the Keyhole Blazor Server in .NET 6 series, we covered adding events in our Blazor components. In sum, I demonstrated how to add a service that contains the events that components can listen to with methods to notify when to invoke our events. After that, we added that service to the BaseComponent. The section is complete with adding the new character to our list of current characters in storage in order to notify all listening components of this event. I hope you’re enjoying w...| Keyhole Software
Parts of this blog, including the code examples and architecture frameworks, were generated using Keyhole Software's EnterpriseGPT web client—an| Keyhole Software
We help clients to plan, prioritize, and implement DevOps strategies that reduce time from "code commit" to deployment while maintaining uptime and quality. Services include Assessment & Strategy: Analysis of current practices, tools, and workflows, identifying areas for improvement and developing a tailored DevOps strategy that aligns with unique business objectives and goals. Containerization & Orchestration: Containerizing apps and adopting container orchestration platforms to automate the...| Keyhole Software
From its humble beginnings to its current status as a cornerstone of enterprise applications, Java has profoundly shaped the world of software| Keyhole Software
In today's fast-paced web development world, Next.js is one framework that's becoming popular among developers. It’s a powerful React-based solution that offers a lot more than just a traditional React and Node.js setup. What makes it so great? Let’s take a closer look.| Keyhole Software
Keyhole Software offers a range of services related to Microsoft Azure, helping clients leverage the capabilities of the Azure cloud platform. Services include Cloud Migration: Migrating applications and infrastructure to Microsoft Azure by assessing the existing environment, developing a migration strategy, and executing the migration process while ensuring minimal disruption to business operations. Azure App Services: Building and deploying web & mobile applications using Azure App Services...| Keyhole Software
Helping nationwide clients embrace cloud technologies through custom modernization, migration, and cloud-native development services. Services include Cloud Strategy & Consulting: Assessing current status and defining cloud adoption roadmaps, identifying the right cloud for specific needs. Cloud Migration: Migrating existing apps & infrastructure to AWS, Azure, and Google Cloud Platform through lift-and-shift, re-architecting, and re-platforming. Cloud Native Development: Developing apps from...| Keyhole Software
We work with organizations in every industry, all of which employ different technologies & development processes. To demonstrate, look at our recent projects.| Keyhole Software
Joining this elite tier of Microsoft Partners signifies that Keyhole has achieved the highest level of app development competence with Microsoft technologies.| Keyhole Software
If you work with Java, you're likely aware that performance is crucial. No one wants a slow application, especially when scalability and user experience| Keyhole Software
This blog post serves as a thought experiment, delving into potential solutions for a pattern I have noticed on projects throughout my career. As a consultant, I work with many companies, each with unique ways of organizing and handling software development. However, throughout my career at Keyhole and elsewhere, I’ve noticed something that seems to be consistent across all dev teams: the existence of legacy code. Legacy code can be frustrating and time-consuming to work with, so I used AI ...| Keyhole Software
In this post, we will walk through using Terraform to create a Google Cloud function that triggers when a file is uploaded and outputs the file details in| Keyhole Software
Have you ever wondered why some companies remain committed to Java while others thrive with .NET? As technology rapidly evolves, making the right choice| Keyhole Software
The digital landscape is constantly shifting, compelling enterprises to seek out strategies that not only streamline their development processes but also| Keyhole Software
AI is already changing the way developers build, test, and deploy software. At Keyhole Software, we have been using AI tools for over five years to| Keyhole Software
MSAL, or Microsoft Authentication Library, is an essential tool for developers aiming to implement robust authentication systems efficiently. It| Keyhole Software
Keyhole Software is proud to announce its Top-Four rank as a Software and Web Development firm by the Kansas City Business Journal. The ranking is a testament to Keyhole's contributions and growth in Kansas City’s technology sector.| Keyhole Software
The pace of technological change is faster than ever, and enterprises are under constant pressure to improve their software development processes. AI has| Keyhole Software
Discover how Terraform IAC setup simplifies cloud infrastructure management, with a focus on Identity Aware Proxy (IAP) configuration on Google Cloud Platform (GCP). Learn from real-world challenges and solutions to streamline your cloud environment and automate processes.| Keyhole Software
Software development constantly evolves, with new architectural trends emerging and reshaping how we build applications. Over the years, we've seen| Keyhole Software
Mainframes have long powered critical financial transactions and government operations. However, across the U.S., particularly in Kansas, these systems| Keyhole Software
Keyhole Software has a team of experienced architects who can help clients design scalable and efficient software architectures that can handle complex business requirements.Architecture Design Designing software architectures that are tailored to client business needs. This includes identifying the best technologies, frameworks, and design patterns to use for the project.Performance Optimization Optimizing software architectures for performance, enhancing application responsiveness to handle...| Keyhole Software
We are thrilled to announce that Keyhole Software is a Bronze Sponsor of Big Slick 2024! This annual event, which combines a passion for charity with the excitement of entertainment, brings together celebrities and the community to support a cause close to our hearts. As a company deeply committed to community engagement and social responsibility, Keyhole Software is honored to contribute to this noble cause. Our sponsorship reflects our dedication to supporting initiatives that make a tangib...| Keyhole Software
Your PostgreSQL database might be handling today’s workload just fine, but what happens when traffic surges, data volume skyrockets, or queries start| Keyhole Software
With a strong foundation in machine learning and automation, Keyhole helps clients design robust AI architectures that deliver at scale.| Keyhole Software
AI is changing how mobile apps work, and it no longer requires constant internet access. With on-device machine learning, mobile applications can run AI| Keyhole Software
In software development, certain patterns can make or break the maintainability and flexibility of your codebase. If you've ever faced challenges managing| Keyhole Software
JavaScript development has transformed dramatically since its inception, mirroring the rapid evolution of the digital world. Every few years, the tools| Keyhole Software
It’s time to release your latest front-end changes to production. However, as you create a new tag, you notice a large number of commits unrelated to the| Keyhole Software
Imagine a world where coding for the web was akin to painting with charcoal on rough cave walls—primitive, cumbersome, and lacking finesse. That was the| Keyhole Software
Choosing the right development framework can directly impact your app’s performance, scalability, and long-term success. In 2025, two major options stand| Keyhole Software
In my last post, “Introduction to Web Apps with Next.js”, we went through the steps of setting up a new Next.js project, customizing a landing page, and implementing a very simple web application. In this post, we’ll implement an Open Authentication (OAuth) based Single Sign-On (SSO) API within Next.js using NextAuth.js. We’ll be using GitHub as our provider, but the steps here are very similar for other platforms, such as Google or Discord. This will allow us to place portions of our...| Keyhole Software
Automated testing is a great way to ensure that any application can continue to grow and change while still giving fast and practical feedback to developers. This feedback can tell developers whether or not the changes introduced meet the requirements of the product and don’t introduce bugs. As discussed in a previous blog series, automated testing can be a valuable resource when trying to deliver both agile and maintainable applications. But where should you get started and what technologi...| Keyhole Software
In the software development space, RAG solutions are being used to enhance productivity and streamline processes. By indexing and searching the entire codebase of a project, these solutions provide relevant, context-aware results from an LLM. Instead of simply suggesting code snippets, RAG-based tools can analyze and generate entire use case implementations across multiple programming languages. The result is a significant boost in productivity, enabling software teams to work faster and more...| Keyhole Software
In this post, I am going to demonstrate how to set up a simple Next.js web application. Next.js is a heavily opinionated JavaScript framework, in that it has a lot of conventions and recommended tools built into its design. We'll use Next.js version 14.2.2 to set up the groundwork for a simple web application. By "web application," I mean an application that is designed primarily to collect input from a user in a web browser and return some output generated from that input.| Keyhole Software
Choosing the right API protocol is an important decision for any enterprise. The wrong choice can lead to performance issues, integration problems, and| Keyhole Software
Choosing the right database can make or break your application. It affects how your data is stored, how fast your app runs, how easily it scales, and how| Keyhole Software
Welcome to the second part of our series on Codeium Windsurf. If you haven't yet, check out Part 1 to get detailed insights into what Windsurf is and the features it brings to your coding environment. In this section, we'll explore how you can leverage Codeium Windsurf's features to accelerate your coding projects using real code examples.| Keyhole Software
Choosing the right development platform can greatly enhance your operational efficiency and innovation. Among the many options available, .NET development| Keyhole Software
As enterprises increasingly adopt cloud technologies, the importance of scalable and efficient solutions like Microsoft's .NET has never been more| Keyhole Software
This post covers three options for customizing an iOS or Android keyboard in a Flutter mobile application, with a code walkthrough of using the Keyboard Actions package to easily add keyboard features that increase user efficiency. Mobile app developers, have you ever noticed that the native iOS numeric keyboard does not include certain features that might be helpful? For example, a Done button? Or how about arrow buttons to traverse form fields? To jog your memory, here’s what the native i...| Keyhole Software
As a mobile developer, I have had to create a lot of listing pages. The content, styling, and layout may all differ, but structurally, they are the same. When I first started using Flutter, I was immediately impressed by how fast they are to stand up. Nearly out of the box, the ListView and the Card work extremely well and support a wide variety of devices and use cases with no additional styling - all while remaining extensible. With this in mind, when I needed to create a listing page that ...| Keyhole Software
Keyhole Software gives readers an in-depth code walkthrough and tutorial for how to integrate Avaya Agent for Desktop using React and SignalR. This integration allows the web-based application to asynchronously receive information about an inbound call, which enriches agents' experiences and protects against context switching and double documenting. As for technology, AAfD (Avaya Agent for Desktop) is used as the softphone, React as the library to compose the SPA (Single Page Application), an...| Keyhole Software
As access to AI models has become more widely available and more and more people are using these tools on a regular basis, many organizations are| Keyhole Software
As discussed in a previous blog post, Selenium is a popular choice for automation testing, and when you pair it with Cucumber, you unlock even more benefits. By writing test cases in Cucumber’s human-readable format, teams can improve clarity, boost maintainability, and make collaboration easier — even for non-technical stakeholders. In this post, I’ll walk you through how to integrate Cucumber with Selenium to create efficient, effective tests that set your team up for success.| Keyhole Software
Windsurf Series Introduction This is Part 1 of a 2-part blog series. In Part 1, you’ll learn: How to go from 10x to 100x productivity using the AI-assisted coding tool Windsurf What Windsurf is and how it enhances your IDE with Retrieval-Augmented Generation (RAG) Best practices for using features like Autocomplete, Supercomplete, Chat, Command, and Cascade How context-aware code generation can save time and reduce errors Tips to get the most out of Windsurf without falling into common pitf...| Keyhole Software
In this blog, I’ll demonstrate how to harness .NET MAUI’s capabilities by building a Google Maps app. I’ll walk you through how to set up your environment and how to integrate native services like the Google Maps Android SDK—all within the modern, unified framework that .NET MAUI provides.| Keyhole Software
Microservices have taken the tech world by storm, and with them, the complex challenges of ensuring they run smoothly under pressure. Enter the unsung| Keyhole Software
Artificial intelligence (AI) is transforming how businesses operate by improving efficiency, decision-making, and customer engagement. At Keyhole| Keyhole Software
The best ways to improve .NET performance hinge on understanding how crucial every millisecond is to user satisfaction and business outcomes. Enhancing| Keyhole Software
I’ve been developing JavaScript through all of the major existential changes we’ve had. Browser wars? I remember those. Trying to make a complex application before Firebug? Oh yeah, tell me about it. Having to roll my own AJAX request by hand? Vividly remember. Something that I experienced in all of my large JS projects before the last few years was an eventual point of no return, a metaphorical event horizon, beyond which the amount of time it took to build the code locally as well as on...| Keyhole Software
In the final part of the Blazor Server in .NET 6 blog series, we covered how to use data binding and dropdowns with lists and enums. This included a short introduction to setting up an HttpService, making a get call to the API, and viewing the results as a string. For further clarity, I also included a demonstration on how to add an HttpService that uses the built-in .NET HttpClient class to make calls to the D&D 5e API! Finally, I presented a way to add a dropdown with the available race opt...| Keyhole Software
Are you developing an AI-powered application but unsure whether Flutter or .NET MAUI is the right framework for your project? The decision you make can| Keyhole Software
LINQ (which stands for Language Integrated Query) is a library of collection manipulation methods that makes organizing and picking data out of collections much easier. LINQ can save a lot of time that would otherwise be spent writing complicated for or foreach loops. As with the nature of collections in programming, sometimes you will be working with gargantuan data sets and other times with smaller yet complicated collections.| Keyhole Software