Posts

  • Implementing Drag and Drop in UICollectionView and Core Data – Part 2

    In Part 1 of this series, I walked through the process of adding drag-and-drop functionality to a UICollectionView backed by Core Data. While I got it working, I mentioned that the solution, while functional, wasn’t as modern as it could be. The NSFetchedResultsControllerDelegate implementation, with its manual block operations, felt a bit clunky and error-prone. This post is about that additional refactoring: moving from the traditional NSFetchedResultsControllerDelegate to the more modern UICollectionViewDiffableDataSource.

  • No More Off-Season: Building a Garage Golf Simulator - Part 2: Launch Monitor and Software

    Welcome back to my DIY golf simulator journey!. In Part 1, I talked about measuring my space and figuring out the basics of my simulator setup. Now it’s time to choose the heart of the system: the launch monitor. This is the technological brain that translates a physical golf swing into a virtual shot. Making the wrong choice here could mean inaccurate data, endless frustration, or a system that just doesn’t work in my space.

  • No More Off-Season: Building a Garage Golf Simulator - Part 1: Introduction

    It’s a dream many golfers share: the ability to play a round at Pebble Beach or St Andrews at a moment’s notice, rain or shine, day or night. No tee times, no weather delays, just pure golf. For a while now, I’ve dreamed of having my own golf simulator. This year, I’m finally turning that dream into a reality, and I’m taking you along for my entire journey.

  • Implementing Drag and Drop in UICollectionView and Core Data – Part 1

    One of the feature requests I received was to allow users to rearrange gun photos in a custom order. Since I was planning other changes to the photos module, I decided to tackle this request first as it would lay a solid foundation for future updates. What seemed like a simple task turned out to be a bit more complex than expected, so I decided to blog about it.

  • Taming a Herd of View Controllers: Refactoring for Simplicity in Core Data with Swift

    If you’ve worked on an iOS app of any significant size, you’ve likely encountered it: the copy-paste monster. It starts innocently. You build a view controller, get it working perfectly, and then you need another one that’s almost the same. You duplicate the file, change a few lines, and move on. But then you need another, and another. Before you know it, you’re the reluctant owner of a herd of nearly identical view controllers, and any change to one means a tedious and error-prone update to all the others. To be fair - there is the Rule of three (three strikes and you refactor), so some temporary duplication is very much okay as long as it is addressed in a timely manner.

  • Implementing client credentials grant flow with public/private key pair, client assertion, and JWKS in Node.js

    This blog post will walk you through an implementation of the client credentials grant flow using a client assertion. We will build a system to create, sign, and validate JSON Web Tokens (JWTs) using public-private key pairs and JSON Web Key Sets (JWKS) in Node.js. We’ll use Node/Express for the server framework, Jose for JWT signing and validation, and Axios for HTTP requests. The system is composed of a bootstrapper and three microservices, orchestrated with Docker Compose for easy setup and execution.

  • Auto-sizing UIImage on top of UITableView during rotation

    As part of version 1.2 of Gun Vault I decided to include the functionality of having the primary image of a gun included on top of the Gun Details screen. I wanted the image to take 1/3 of the screen when the device is in portrait mode …

subscribe via RSS