Sharp-eyed readers of this series may have noticed something…suboptimal: Up until this point, we’ve been creating certain objects as global variables. They’re immutable, so that may be technically OK, but those of a certain age have been taught for years how wrong that is, so technically OK or not, it just feels gross. In this post, we’re going to fix that with by implementing inversion of control with Koin...
Read More ›
In the last entry, we looked at how to read data from the device’s local database using Room and display it on the screen, but we did so using dummy data. In this entry, we’ll look at how to use Room in our components to persist user-entered data in our SQLite database...
Read More ›
In the last post — months ago (and, yes, I hand typed the em dash, not some soulless AI :) — we added support for the Room database API, so now we can store data, but we have no way of seeing what we’ve saved. We also have no way of giving it data to save. In this post, we’ll tackle the first part by creating views to show what we have, then loading the database.....
Read More ›
So far, we have a runnable application that has two screens. We can navigate between those screens, but the app doesn’t really do anything. In this post, we’ll start to fix that. We’ll lay out the data model for the application, then introduce the library, Android Room, we’ll use to access it...
Read More ›
In the last post, we added the various pieces to make navigation possible and stopped JUST short of the goal line. In this post, we’ll finish up our navigation discussion by adding a new screen and seeing navigation in action...
Read More ›
So far, we have an app that runs but has only one "screen". Decompose makes adding more screens — and navigating between them — pretty simple. In this post, we’ll start to see how that’s done...
Read More ›I'm a Java Champion and Principal Software Engineer at IBM with over 25 years of experience building enterprise-grade applications. I’ve been a professional developer since 1997, using a variety of languages, including Java, Kotlin, C/C++, JavaScript, PHP, Python, Delphi, C#, and even a bit of COBOL and JCL. I currently work for IBM on the WildFly/EAP team, where, among other things, I maintain integrations for some MicroProfile specs, OpenTelemetry, Micrometer, Jakarta Faces, and Bean Validation.
As President of the Oklahoma City JUG, I'm passionate about community building, mentoring developers, and advancing the Java ecosystem. I am a frequent speaker at our local JUG, as well at a variety of technical conferences across the country.
I published Java 9 Programming Blueprints, and actively contribute to several major open-source projects, including WildFly, Undertow, and Arquillian.
I am a life-long learner who loves to apply what I've learned to real-world business problems to find a solution to make employers and customers alike happy. My favorite place to be is slightly out of my depth as I strive to grow while bringing value to the project.
On the personal side, I’m active in my church, and enjoy bass guitar, running, fishing, and a variety of martial arts. I’m also married to a beautiful woman and have two boys, who, thankfully, look like their mother.
Build new systems with modern architecture patterns, microservices, and cloud-native design. Careful in choosing the right technology stack for your specific needs.
Mentor junior developers in their journey to master the latest technologies and best practices. Provide guidance, support, and mentorship to help them grow.
Design and implement robust, scalable REST APIs using MicroProfile, Jakarta Rest, and modern API best practices. From design to documentation and versioning.
Maintain high standards through comprehensive test-driven development (TDD) strategies, code reviews, CI/CD pipelines, and quality automation. Build maintainable, production-ready code.
Work actively on multiple open-source projects, contributing to the community and sharing knowledge. Collaborate with industry experts to solve complex problems and drive innovation.
Present at conferences and user groups, sharing knowledge and experiences on cutting-edge technologies. Sharing as I build and learn to bring others along with me.
President, Oklahoma City JUG - Leading one of the most active Java User Groups in the region, organizing regular meetups, workshops, and knowledge-sharing sessions. Committed to fostering growth and mentorship in the Java community.
Packt Publishing, 2017
A comprehensive guide featuring 10 projects demonstrating Java 9's powerful features, including modules, reactive programming, and modern development patterns. This book helps developers master the latest Java capabilities through hands-on, real-world examples.
Whether you need enterprise application development, legacy system modernization, junior developer mentoring, or any help with any other variety of enterprise concerns, I bring 25+ years of proven expertise to turn your vision into reality.