A match made in heaven….

Photo by Martin Zangerl on Unsplash

Recently I began a new photo journey for my wife — see: https://allangraves.medium.com/birding-long-range-b5ed180b86c1

I settled on a camera setup — but now of course, I needed software to import, store, categorize, and backup our new hobby. For the record, my personal photos are backed up like this:


Birders are crazy.

The hawk down the street from my house

My wife came to me the other day with an interesting challenge. “Honey, I cannot see far enough to identify the sea birds!”.

All images in the this article are available full resolution at: https://allangraves.myportfolio.com/bird-scoping. I encourage you to look at the larger versions for comparisons.

For the record, my wife is using a 30x Superzoom, the Panasonic Lumix FZ80 camera. For $279, it’s a fantastic value — allowing you to take reasonable pictures of birds (or your neighbors) from down the street. At 18MP, with a tiny sensor, it won’t get you many career keepers though…


Photo by Markus Spiske on Unsplash

It’s 2021, and Covid-19 is running rampant. You’ve lost your job, or you’re looking for a career change, after being told you were essential, but not going to get any hazard pay.

You know the kid down the street drives a really nice car, and looks like they have it all together.

You also know that they are something known as a ‘coder’.

Then you see yet another article online — 10 easy steps to start programming, and follow that one to 5 weeks to learn programming.

“This thing is easy!”, you think to yourself, and you set off to…


Photo by Hunter Harritt on Unsplash

The key mark of any experienced coder is one who is willing to refactor the code. Code deals in abstractions and generalizations at the high level, and with specifics at the low. If you imagine a ruler with abstract at one end and specific at the other, you might get a sense for the two endpoints. Thus, as your design comes to fruition, you begin to move pieces of code around on the abstract ← → specifics metric, adding additional abstraction layers to handle your cases.

My design was beautiful, my code flawless, my testing strategy without peer. There was…


Or… How I learned to love React FlowBox.

Photo by Bailey Heedick on Unsplash

This one should have been easy — or so I thought. I had a block of text, and I needed to highlight text in that block. I figured I’d whip something together, and be done in a few minutes. Then, I started WAY overthinking things.

Let’s walk through all the things I did wrong. :)

First — here’s my stated output:


Photo by Markus Winkler on Unsplash

“To Err is Human, to Really screw things up requires a computer”

Oh, how true. While React seems conceptually simple, it deals with a state model that requires us to hold multiple state machines in our head. It is all too easy to put state in various places and really screw it up — and then you get to figure out why.

In creating a story app for my kids — I ran into an interesting issue.

It worked just fine through out a single story — but I wasn’t able to reset the story through the parent component.


A long time ago, in a galaxy far, far away… Or so it seemed, a work friend of my Dad’s gave me a strange gift for Christmas. I’m going to date myself now — but it was a circa 1980’s Electronic Project Kit. I had many, many hours of building with that Kit — really enjoyed it.

You can see the way it was connected — you would run a wire from a little spring to another component, all over the board. …


Every good app needs a good navigator. Just like a cross-country trip, a good navigator takes us from place to place in our app, ensuring that we get to the place we want to go. A bad navigator takes us… well, where the navigator wants to go. We get frustrated and put the app down, lowering user engagement.

I’m sure all of us remember the early days of Android where the use of the back button might take you to… the previous screen, a navigation menu, the previous app, or really anywhere! …


Photo by Alexander Andrews on Unsplash

A few hours ago, I was working on a piece of React Native code that required dynamic image exports off the file system. Of course, I started with the React Native Image document: https://reactnative.dev/docs/image

React Native has some great docs, so after reading this, I figured it would be a piece of cake.

Specifically, what I wanted to do was have a JSON file with data, and have a list of images in that data with information about them. I didn’t know how many images, or how much data ahead of time.

After perusing the React Native docs, I realized…


Photo by Ben on Unsplash

So, my daughter *loves* Choose Your Own Adventures, and everything like it. The one thing that has driven her nuts though — she cannot truly customize them. Instead, she loves the stories I tell — she can participate and customize them, to her heart’s content.

For instance, when she gets to paint a robot, she wants to specify the color. When she names her pet, she wants to name it a different name than the story specifies. She gets pretty irritated — but I don’t want to call it “Gus”!

So, I got to thinking, how could we do this…

Allan Graves

Years of technology experience have given me a unique perspective on many things, including parenting, climate change, etc. Or maybe I’m just opinionated.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store