Showing posts with label photography. Show all posts
Showing posts with label photography. Show all posts

Wednesday, January 14, 2026

A Texas Sized Mystery: Solved

On a flight from New York City's LaGuardia to Washington's Reagan Airport I captured some photos of this curious sight:

Given its size and proximity to a main road, I figured I'd quickly identify it. But alas, trawling through Google Maps, chatting with ChatGPT and searching along FlightAware flight paths turned up nothing.

I finally gave up, and simply pronounced: I'd have to solve the mystery on our next flight from LGA to DCA.

My Dad wasn't having it. He took one look at the photo and explained, "you're looking for a quarry. It should be easy to find."

And a few days later he texted me with the answer!

I'd taken aerial photos of the Martin Marietta - Texas Quarry:

At first, I was like, "that's close Dad, but that can't be it. My photo includes a sort of racetrack type structure in the foreground, and I don't see that in the image."

To which he replied, and I'm paraphrasing here: zoom out.

Whoa! The "racetrack" was in fact the Maryland State Fair Grounds and was an exact match for the feature I was looking at.

He'd done it! He'd solved the mystery! Thanks, Dad!

When I asked him how he did it, he explained that he asked Gemini for a "list of quarries that can be seen from a plane on a flight from DCA to LGA" and then ran them down in Google Maps. Inspired by his effort, I tried again with Gemini.

I tried the prompt: "I took this photo on a flight from LGA to DCA. It appears to be a quarry. Any idea which quarry it is?" The first time I asked, I got a false positive. Trying again with the exact same image and prompt found it!

I can't believe the answer was there all along, I just had to know how to ask. I suppose this is the quintessential challenge when working with AI: knowing how to ask.

With the quarry identified, I was curious: (a) where did it get its name from, and (b) is it significant?

The name, Martin Marietta - Texas Quarry is easy to unpack. The quarry is currently owned by the company Martin Marietta. The "Texas Quarry" part comes from the fact that it's located in a Maryland village that used to be known as Texas. This location name has been in use since at least 1847.

As for (b), the quarry does appear to be significant. From what I can tell, marble from this site was used in the Washington Monument as well as other local sites. Here's how the USGS describes the marble that was used in the construction of the Washington Monument (emphasis is mine):

Three different kinds of marble were used in the construction of the Washington Monument, which was delayed by several problems. ... The first 152 feet of the monument, built between 1848 and 1854, is faced with marble from Texas, Md. Work stopped when funds ran out.

That sounds like my quarry, or at least one in the vicinity.

Another hint to the significance of this area, is this article published in 1874. It provides extensive details about the "Beaverdam Quarry", explaining that it was also known as the Cockeysville Quarries. The article proudly notes that "the National Capitol was built of marble from this quarry." It specifically calls out the "post-office building of Washington was also constructed of the same material."

Not only is the Texas Quarry located in Cockeysville, MD, but Beaverdam Road runs adjacent to the property. So while I can't say for sure the article is talking about the same quarry I photographed, it certainly seems to be in the same neighborhood.

What a gratifying mystery to solve! Thanks, Dad!

Tuesday, December 09, 2025

Sun Pillar!

On my run tonight, what appeared to be a normal sunset turned into a first for me: a sun pillar:

This effect is create by millions of falling ice crystals. It's sort of like a rainbow, but also not at all like a rainbow. Either way, how magical!

Wednesday, October 22, 2025

ESOXOFFORE Kids Camera - Command Line Tool Automation

As my recent review implied, I've been enjoying my new ESOXOFFORE Kids Instant Print Camera. It didn't take long, however, before I identified a couple of camera-related tasks that I could streamline with code. I give you: toycameraassist, a command-line tool for working with the ESOXOFFORE.

This short script, which depends on gphotoassist and sdcardassist handles two common workflows: archiving pictures from, and loading pictures to, the camera. Here's the script in action.

Archiving Photos

Step one, of course, is to shoot some photos. My morning tea may not be the most interesting subject, but it's one that I had at my fingertips:

Next, I popped the SD card out of the camera and into my laptop. I'm running Mint Linux, but toycameraassist should work equally well from a WSL2 or Mac OS terminal. I then ran toycameraassist -a archive.

$ toycameraassist -a archive -v | mightee
PICT0000.jpg:https://photos.google.com/lr/photo/AHnaBgstn16lDqnQQrVMfHk6gO8fdEpEjvIeTpSsxhcSZceegzJv0y02L2CfEahXoumYzj9Ri6YS7TTHIkT6KbAf5qftppapcw
PICT0001.jpg:https://photos.google.com/lr/photo/AHnaBgsorU4SZmzW0wjCxwgoyRk3Yp17wLMX6gKLlS1jQw61BZSwX2dlJt8TjZ4CzRc3YkaLOGQhgfY-GHEoPI1mbIUM3XMycQ
PICT0002.jpg:https://photos.google.com/lr/photo/AHnaBgvh2-7_R680yo6RdqpTI5Syz0xoKCXwUozB8IkZmhyEr1dDDv-_UobwpJmfvUGXDud87ImYvlZPyobHwD9c6JbMcMLjCg
PICT0003.jpg:https://photos.google.com/lr/photo/AHnaBgvrr7dsmQ1F3SMm7GWg0g312kkfbgyF9WlP4BpHkb8PDaDu_zJVUaJokZmzFR5Fk9ySSagXLGLb12SUxzojVnZewHCmNQ
PICT0004.jpg:https://photos.google.com/lr/photo/AHnaBgukO4g_SYSd3MG18iKA59WFBiyIL-pl-GFLSWpfpvpVAIgZiv1i8ZFrLL56pzmGv_srClEcAvRGMrN7vtmou_sIYKyLIw
PICT0005.jpg:https://photos.google.com/lr/photo/AHnaBgtznwDNI8dPAJKbI0aqvLBc3_jBVVAAJbY_I6WcmM5dZq62PeCyNMVItWcJR7tyqFmIeET0zJyVTKOHQYNEvVd4KaFO8Q
PICT0006.jpg:https://photos.google.com/lr/photo/AHnaBgulFX2cWEgLjZN6RLrajeSxYJR0mJYdwl0RWvnLJjenyJoZtpqOOAChbCuJexWEZLHe1O4otS4jIqk844caQ1zLWhHXhw
PICT0007.jpg:https://photos.google.com/lr/photo/AHnaBgvHd-eicj_6aqYhBuHtEtgZwzWteTjYAwIcCtywQpHfVaJWsZm-7DyuE9tKAenc2OQ6bLobuLf3SSQ65oepK99KipQbbg
PICT0008.jpg:https://photos.google.com/lr/photo/AHnaBgu3ucZo8ogslauMNYnFc7rlgD5eQMHpu3zhTqnbGhyFLE_YltjI9Tos6kg4MlMN0GG8zbar0_7pfQdPyL2LzsQ1XCJFTg
PICT0009.jpg:https://photos.google.com/lr/photo/AHnaBgsDu4KbJO5JoLeHAWvRNoWtNi5EyMuqga7n8KFAb1C3WbNrQBQHz8Xe80qmJEpKNT6ZGHXJwZDWOvi3mEktmaTE9ib7rg

And that's it. All the images have been taken off the card and pushed to a Google Photos album that's defined in ~/.config/toycameraassist/default.config.

After a few moments, the images appeared in my Google Photos feed, as well as in the default folder that I set.

The process isn't as magical as Google Photos' backup on Android, but it's miles ahead of manually managing and uploading photos.

Loading Photos

Next up, toycameraassist allows you to load arbitrary photos into the camera, so you can use the camera as a low-cost photo printer.

Step one again begins with a selection of photos. This time, however, I'm pulling them from Google Photos as they're taken with my Galaxy S22 Ultra.

I downloaded these photos to a local directory, and put the camera's SD card into my laptop. I then ran toycameraassist -a load.

  # In Google Photos, I clicked 'Download all' on a 'Print Photos'
  $ unzip Print\ Photos-1-001.zip
  $ cd Print\ Photos
  $ toycameraassist -a load *.jpg

The SD card now has the photos scaled, stripped of EXIF data and named as the camera expects. Surprisingly, stripping the image metadata is a key step, as the camera refused to read images that skipped this step.

I then ejected the card from my laptop and put it back into the camera. Finally, I fired up the camera and was able to browse and print the pictures as though they had been captured with the ESOXOFFORE.

Here are the prints from the camera, hastily mounted on 3x5 index cards:

Not bad for a $30 camera and $0.09 worth of materials.

You can grab the script and its dependencies here. Enjoy!

Monday, October 20, 2025

ESOXOFFORE Kids Camera - Review

Back in June, I picked up a ESOXOFFORE 'Kids Instant Camera' from Amazon for the impressively low price of $30.00. Ostensibly, I bought it for various kids in our lives. But let's be real; I totally bought it for me.

The Amazon product page promised a fully-featured camera, but given the low price and random brand, I braced myself for disappointment.

Quirk and Flaws

Spending a few minutes with the ESOXOFFORE reveals its biggest flaw: its user experience (UX). To an adult, the buttons and menu system are clunky. To a child, they must seem utterly random.

To print a picture you've previously captured, you just have to: long press #4 to turn the camera on, press #3 three times to highlight playback, press #5 to select playback, use buttons #1 and #2 to pick the image. At some point, you need to press #5 to toggle printing. Finally, when the image you want to print is selected, press #3 to print the photo. Easy, right?

At one point, I was chatting with Shira about the camera's UX and said, you know, the camera really needs a touchscreen. Her response: wait, it doesn't have one? No wonder she struggled to get it to work.

An interesting exercise would be to tweak the buttons and camera software to be kid-friendly without significant hardware upgrades. Some obvious improvements: make the buttons into clear predictable shapes; stop using text on the buttons; and consider dropping the "OK" button and making the shutter button do double-duty for capturing photos and selecting an item.

Another quirk is that there's a single volume level for the camera. To hear audio during video playback, you need to crank the audio setting way up. This results in making the beep that occurs after pressing every button equally loud, which gets annoying quickly.

Toggling whether prints are produced or a filter is enabled can be subtle and easy to miss. This can result in wasted paper or capturing images with an unexpected filter.

But, All Isn't Lost

So the ESOXOFFORE has its flaws, but here's the thing: the photo quality of this camera is downright impressive for $30.00.

Both the digital images and "prints" are totally usable. Here are some examples (most taken by kids):

The built-in filters are surprisingly fun and are far more of an asset than I imagined.

AI, especially Google's Nano Banana, will gladly take the digital images and turn them into a fun creation. Here's L transported into the kitchen of a fancy restaurant:

Photo printing is accomplished by using a cheap thermal printer. The three rolls of receipt paper included with the camera promise about 372 photos and you can buy refills at about $0.013 cents a print. This is far more kid-friendly than $0.50 cents a print ZINK cartridges or $1.50 per photo of an Instax Fulfilm.

All this means that you can unleash your little Ansel Adams and let them shoot and print as much as they want. And if they happen to capture some amazing shots, then the quality will be good enough to share on Instagram and Facebook their blog.

To put the quality in perspective, consider the twice as expensive Phonemo printer's output against the ESOXOFFORE's.

That's impressive, right? It's possible that I could have further tuned the Phonemo's image, but the ESOXOFFORE's is solid by default.

The thermal-paper-based prints are fragile and curly. Mounting them on a standard 3x5 index card using glue tape has proven to be an easy way to increase their durability.

I also use clear packing tape to secure the loose photos to my notebook, making for an easy way to use them in a collage.

I experimented with using our laminator to protect the flimsy pictures, but this was a bad idea. The laminator works by sealing the plastic with heat, and the photo paper is printed with heat. Laminating added a layer of dark gray over the picture. It looks like cold lamination is a thing, so maybe that would work. It's hard to beat the simplicity of a strip of clear packing tape, though.

Skip or Buy?

Is the ESOXOFFORE 'worth it?' I think so! With one caveat: there are heaps of kids' cameras out there, so it's possible that another model delivers on both the UX and quality front. But until I find such a model, ESOXOFFORE is an excellent choice.

I say, buy the camera for your toddler to save your iPhone. Or, buy it for your teen with some fairy light photo clips, so they can cover their walls in fun moments. Heck, even the photographer in your life who covets pricey gear will appreciate the camera as an opportunity to find creativity through limits. In short, if you need a cheap camera that produces surprisingly usable pics, the ESOXOFFORE is a winner.

Monday, August 25, 2025

US Open 2024 - Day 4

[Composed 8/29/2024]

Today consisted of little more than our short flight from LGA to DCA. I love that both airports are surrounded by impressive skylines. I get to pretend I'm on a private photo tour whenever we leave NY and land in DC.

As we flew back to DC, Shira and I reflected on this year's Open. For the first time in nearly a decade, we watched Tuesday and Wednesday at the Open instead of Friday and Saturday. A scheduling conflict caused us to move our plans up in the week.

We arrived Tuesday morning with some hopes and worries. On the hopes side, we wondered if arriving earlier in the week would make for fewer crowds. On the worry side of things, we wondered if the quality of tennis would be less, as there's more chance for lopsided games.

Both of these guesses were wrong. The grounds were just as busy on a Tuesday as they have been on Friday. Still, if you arrive early, you can sail right in through the gates.

As for the quality of tennis, it was excellent. The fact is, ranking alone isn't a solid predictor of a match.

We arrived thinking that this year would be an anomaly, and that next year we'd be back to our Friday/Saturday attendance. But, by the end of this trip, our thinking has changed: there's just so much tennis to see, coming earlier is for sure a win. Yes, it means taking more time off from work, but the trade-off seems worth it.

In short, more tennis, more better.

US Open 2024 - Day 3

[Composed 8/28/2024]

We started our second day of spectating at the US Open with a daunting realization: there were a staggering 63 matches available to us today. Yikes, that's a lot of tennis!

We started the day watching a favorite player of ours: Taylor Townsend. We've been fans of hers since a memorable match back in 2019.

Today she took on Paula Badosa. Despite her putting on an emotive performance, and the crowd strongly rooting for her, she wasn't able to get the win. Still, she was entertaining as always to watch.

On the food report side: the garlic, taro, and mango-flavored treats we picked up at Tous Les Jours have all been outstanding. So even if Taylor couldn't pull out the win, one of our favorite bakeries did.

We then caught an Alex vs. Alex match in Alexander Zverev vs. Alexandre Muller. Zverev is a favorite, and Muller is a wildcard. So, Zverev taking the match wasn't a big surprise. But, Muller put up a heck of a fight and we were sitting in the shade, so all in all, it was delightful.

Then we headed over to see Big Foe take on Alexander Shevchenko (yet, another Alexander!). Foe came out strong, but alas, Shevchenko ended up retiring in the 3rd set, so it wasn't really a complete match. Tiafoe, a Maryland native, is considered our hometown player, so we always love to see him succeeding. Even with only 2 full sets played, Tiafoe managed to turn his player's area into a dorm room tornado. That's impressive!

From Tiafoe's match, we made our way to Lucia Bronzetti vs Aryna Sabalenka. Man, Sabalenka hits with power. Her play feels like a mix of Serena's massive power, with Nadal's thirst to win every single point. It's an impressive combination, and today, Bronzetti didn't have an answer.

From Sabalenka's match, we made our way to Ben Shelton vs. Roberto Bautista Agut . At 37 years old, Agut has been around forever. So this was a classic age vs. experience showdown. Yeah, age won the day. Still, given my age, I'll root for the geriatric player any day!

By now it was 6 p.m., and any normal person would have called it a day. And yet, we still had 5 high-quality matches ahead of us:

We actually managed to hit all of these matches. We had relatively high hopes for Djere vs. Djokovic, as the last we saw them play Djere took two sets off Djokovic, and an upset looked possible. Djere again started strong, but an injury of some sort caused him to retire early in the third set.

We again cheered on experience over youth, hoping that Monfils would pull out the upset against Ruud. Monfils did have a strong start but petered out against Ruud starting in the second set.

Azarenka is another favorite of mine and showed why in her match against Burel. Azarenka came out strong, taking the first set 6-1. I stepped away to get ice cream—which was paid for by a US Open employee flashing her badge—and came back to find Azarenka in tears with the trainer.

Apparently, a migraine had struck. Burel took the offensive, getting the break. Azarenka sat at the changeovers with a towel over her head, no doubt trying to find some relief.

Somehow, Azarenka managed to not only pull out the win but also, in dark glasses, she did the on-court interview and even signed autographs. If my head was throbbing, the last thing I'd be thinking about is interviews and autographs. She's a professional, and it shows.

Is Berrettini still the sexiest man on the tour? Yes, next question. If only you could earn points for sexiness. Sorry Berrettini, better luck next time.