Born Geek

Photo Post-Processing

June 23, 2018

I know that in the world of photography, post-processing is a very personal topic. Every photographer has a different workflow, especially when it comes time to process their photos. Mine has always been pretty haphazard, and for a long time I haven’t been as happy with my photos as I would like.

I shoot RAW images, which ultimately gives me a lot more creative control over the end product. Maximizing those possibilities, however, requires effort that I frankly haven’t been putting in. I’ve recently decided to change that, and I’m already seeing improved results. One of my recent photo albums, focusing on garden macro images, is the first album into which I put extra effort into the post-processing step. I’m really happy with every single photo in that album.

Over the past few weeks, I’ve been watching a lot of online tutorials on post-processing workflows, tips, and tricks. Anthony Morganti’s YouTube channel has been particularly helpful to me (he has lots of great pointers).

I’ve posted a few photos below to show the before and after effects of what I’ve learned. All of the “before” shots are photos that are posted in my public albums (all three of these shots come from the Lausanne, Switzerland photo album). If you happen to be reading this in an RSS reader, click through to the site for a better before/after experience where the images are stacked.

The first photo is a shot of a castle we visited. My “before” shot lacked detail, was fairly flat, and was generally overexposed. The “after” shot uses improved color, is a better crop (removing a stray head from the bottom of the shot), and has more detail.


This second photo was taken in the castle above. Again, there was missing detail, highlights were really overblown, and there was a general lack of contrast.


One final example originally suffered from overexposure and a lack of contrast. Note how so much more detail shows up in the leaves of the grapevine.


I’m looking forward to using my new-found skills in future photo albums.

June Garden Macros

June 12, 2018

I’ve posted some new macro photos taken from my garden tonight. The colors in some of these photos are really beautiful, in my opinion. I hope to continue posting new photos like this.

Switzerland Photos (Part 2 of 2)

May 30, 2018

The second set of photo albums from last year’s trip to Switzerland have been posted. First up this time is an album on our visit to Lausanne and its surrounding areas (a nice place to visit), followed by an album about Zermatt and the Matterhorn. Enjoy!

Switzerland Photos (Part 1 of 2)

May 26, 2018

Last year, my wife and I spent two glorious weeks in Switzerland. While there, we hiked over 90 miles and visited a number of incredible places. We both fell in love with the country, and we intend to return in the future. If I had enough money, I’d even consider living there (though the cost of living is ridiculous)!

I’ve finally posted photos from this trip to my photos site. The first two albums cover our visits to Luzern and Wengen. Wengen is my top spot in Switzerland, and is perhaps the most beautiful place on Earth.

I will post two more albums in the next week or so, covering the second half of our trip. Stay tuned!

Linked Photo Albums

May 12, 2018

I’m trying something new on my photos site. Starting with the NC Arboretum album, photos will now be hosted at Google Photos. This has a number of benefits:

  • Users can comment on photos
  • I can now embed videos in the album
  • Nicer viewing experience on all devices
  • Simplifies the import process for me

New albums will still show up on my photos site, but they will now be links to the external albums. The RSS feed for albums should still work to track what I post.

I’m not yet sure how to handle the “favorites” section of the photos site. I’d like to be able to point to favorite photos as I take them, but how to do that is still to be determined.

Let me know what you think of this new setup. I’m looking forward to giving it a try, and I have a backlog of photo albums to post.

A Subtle Python Bug

February 23, 2018

I recently had a very subtle bug with an OrderedDict in my Python code at work. I constructed the contents of this object from a SQL query that was output in a specific order (can you spot the bug?):

qs = models.MyModel.objects.all().order_by("-order")
data = OrderedDict({x.id: x.name for x in qs})

My expectation was output like the following, which I was seeing on my development system (Python 3.6):

OrderedDict([(4, 'Four'), (3, 'Three'), (2, 'Two'), (1, 'One')])

However, on my official sandbox test system (which we use for internal testing, running Python 3.5), I was seeing output like this:

OrderedDict([(1, 'One'), (2, 'Two'), (3, 'Three'), (4, 'Four')])

There are actually two issues in play here, and it took me a while to figure out what was going on.

  1. First, I’m constructing the OrderedDict element incorrectly. I’m using a dictionary comprehension as the initialization data for the object’s constructor. Dictionaries are (until recently) not guaranteed to preserve insertion order when iterated over. This is where my order was being screwed up.
  2. Second, the above behavior for dictionary order preservation is an implementation detail that changed in Python 3.6. As of 3.6 (in the CPython implementation), dictionaries now preserve the insertion order when iterated over. My development system, running on 3.6, was therefore outputting things as I expected them. The sandbox system, still running 3.5, did not. What an annoyance!

I’ve learned two valuable lessons here: (a) make sure you’re running on the same levels of code in various places, and (b) don’t initialize an OrderedDict with a dictionary comprehension.

Comments Off on A Subtle Python Bug Tags:

High Contrast Mouse Pointer

February 19, 2018

As I age, my vision is getting worse (and it’s already pretty bad). At work, I use a three monitor setup: my laptop is the middle screen, and two external monitors sit to either side. Given the large screen real estate, and given my increasingly bad eyesight, I’ve been having a tough time finding my mouse pointer. Windows has an option to show the location of the mouse pointer when you press the Ctrl key, but that has limited usefulness (though I do use it from time to time).

I recently stumbled upon a neat feature in Windows 10 that has helped me tremendously. There are several mouse-specific features in the Ease of Access section of the Windows settings. The pointer size can be adjusted (which is helpful to a degree), but the most helpful feature is the Pointer Color setting. There’s an option to adjust the pointer color based on whatever color is beneath it. It took a little getting used to, but I can now find the mouse pointer a lot easier than I could before.

ThruNite Archer 2A Flashlight

February 11, 2018

I have always liked a good flashlight. As a kid, I even asked for a 5-cell D Maglite for Christmas (which Santa brought!). This past December, I picked up the ThruNite Archer 2A flashlight from Amazon, based on a review from The Wirecutter. At $30 it’s not cheap, but boy is this thing great.

It uses two AA batteries and puts out an incredible amount of light. There are four brightness settings, ranging from dim (great for when your eyes are adjusted to the dark) to blindingly bright. I also like the fact that it’s compact; you could easily store this in a bag, car console, or junk drawer without taking up much space.

Since I bought it, I’ve put it to use in a number of ways (looking for dropped items in the car, using it on walks at night, and hunting under furniture for lost cat toys). I highly recommend this spectacular flashlight.

Sunset of Firefox Content

January 7, 2018

This post serves as a notice that all Firefox content on this website has been removed. This includes:

  • CoLT
  • Googlebar Lite
  • Firefox Toolbar Tutorial
  • Firefox Profile Tutorial
  • Automatic Extension Updates Tutorial

All links to that content should now redirect to this notice statement. If you’re looking for information on the above, here are a few external references for your use: