Default image for blog posts - purely decorative

Pseudo-Static Row Mappers, a Healthy Alternative to Static Row Mapping

Ryan McCullough Articles, Java, Spring Leave a Comment

If you know Spring, chances are pretty good that you’ve also worked with RowMappers and everyone’s #1 favorite BeanPropertyRowMapper. Okay, maybe not EVERYONE. But EVERYONE will acknowledge BPRM’s power potential and how wonderfully easy it is to use!

While BeanPropertyRowMapper may be the smartest and most beautiful on the RowMapper block, many in the industry refuse to give it the time of day, and for perfectly justified reasons.

Sometimes, when we can’t have beauty and wisdom, we’re forced to settle for loud and predictable. Yes, I’m talking about hardcoded, unchanging, tell-it-like-it-is, static RowMapper. Hate on them all you like, Static RowMappers are fast, easy to understand, and they seem to replicate like tribbles.

But, as many of you know, an application can grow into a swamp of one-off RowMappers. ESPECIALLY if you are working with a lot of high-throughput batch operations that need to run strictly optimized queries for performance as to avoid any unnecessary marshaling of data.

Recently, I’ve tried a mildly clever alternative to RowMapping I like to call Pseudo-Static Row Mappers. In this post, I introduce the basics of Pseudo-Static Row Mappers. We show how they give the tough rigid optimization and control of hard-coded naming and data typing while retaining BeanPropertyRowMapper’s spirit of freedom.

Thoughts on Application State

Mat Warger Articles, AWS, JavaScript, React 1 Comment

Use Redux! Use MobX! Just use `setState`!
Redux is functional! Mobx is reactive! `setState` is built-in!
But Redux has so much boilerplate! But MobX is more difficult to debug! But `setState` doesn’t scale!
Why don’t you just use Rematch to abstract the Redux boilerplate? Do I use redux-thunk? redux-saga? redux-observable?
How about using Unstated? How about just using the Context API?

:head-explodes:

There are a lot of options for developers regarding how and when to use state management libraries (SML).

Remember those last two articles (The Joy of Forms with React and Formik & One Router to Rule Them All: React Router) about the massively underplayed game library? There was a third part to come — a follow-up meant to implement an example of state management for an application. The application was small, granted, but this somewhat contrived example would tie it all up. It’d be the cherry on top. It would complete the rule of threes. 😉

There is not going to be another tutorial about which state library we can use to better manage our game library. Rather, in this post, we’re going to look at how and why you might use a library to manage your application’s state, and why that particular application is a perfect example of when you might not need a SML at all.

Keyhole Sponsoring Azure Dev Days Kansas City 2018

Keyhole Software .NET, Articles, Azure, Cloud, Community, Company News, Educational Event Leave a Comment

We are excited to announce Keyhole’s partnership with Microsoft to sponsor Azure Dev Days, a one-day workshop in Kansas City on Wednesday, April 25, 2018. This is a free community event to provide education on application modernization, microservices, and Microsoft Azure topics.

In addition to providing technical educators for this workshop, Keyhole Software will sponsor food and beverages. The topics Keyhole will champion include Microservices and Containers, as well as App Services.

Each technical session will be followed by a hands-on Azure lab and a whiteboard design exercise. This workshop will help attendees gain a thorough understanding of the components of Azure and how you can take advantage of them as a developer.

This is a traveling community event, with other events available to attend in St. Louis and Oklahoma City. The event will be held at the Microsoft offices in Overland Park…

user story mapping

Every Agile Software Project Needs a User Story Map

Rusty Divine Agile, Articles, Microservices, Project Management Leave a Comment

In this blog, I share an example of a real-world, agile enterprise modernization project that benefited from a User Story Map.

I’m the team lead for a project to convert a business solution from COBOL to a .NET microservices architecture. Other than some interesting challenges with designing a robust microservices solution, the business logic is very straightforward – input files are processed, databases queried, output files are produced and dropped in a folder, and our goal is to match the output produced by the COBOL solution perfectly.

Yet, we lost our way fairly early on in the project because we had a typical prioritized backlog. Unfortunately, even on a straightforward, well-defined project with an engaged team, we still managed to veer off course.

Our project manager started asking questions about where we were in the project and where we were going. I struggled to answer those questions because I couldn’t make sense of all that was in our backlog. It was around this time that I took a spreadsheet and created our first User Story Map….

Fluent Assertions with AssertJ

Billy Korando Articles, Effective Automated Testing With Spring Series, Java 1 Comment

I recently gave a presentation to my Keyhole team members about JUnit 5. I started off the presentation by covering the importance of automated testing, how lack of automated testing affects an organization’s ability to deliver code to production, and how without automated testing you are building legacy.

I pointed out two key benefits of automated testing: confidence you are fixing what you set out to fix, and confidence you are not introducing a new bug. A co-worker however pointed out an important third benefit of automated testing: providing living documentation.

My co-worker made the very good point that automated testing can do more than just checking for code correctness. It can also provide valuable documentation for current and future developers on a project.

In this article, we look at how using AssertJ can make automated tests easier to read and write. We take a look at how AssertJ improves the readability of assertions in test cases, as well as how it helps make the task of comparing complex objects and performing list validations easier to read and write. The goal is that when tests are easier to read and write, it will hopefully encourage developers to write more tests (i.e. documentation).