When Kodak discontinued T-MAX P3200 film back in 2012, I had never shot any so
didn’t really miss it. They recently brought it back so I
thought I’d give it a try.
KODAK PROFESSIONAL T-MAX P3200 Black & White Negative Film is a multi-speed continuous-tone panchromatic black-and-white negative film that combines high to ultra-high film speeds with finer grain than that of other fast black-and-white films
I shoot mostly indoors and that means using faster film whenever possible. T-MAX P3200 is rated at EI 800 when exposed and processed normally, but they claim that “Because of its great latitude, you can expose this film at EI 1600 and yield negatives of high quality…with only a small loss of shadow detail.” I like high-contrast, grainy photos so I decided to go for it and try shooting it at 3200.
I put a roll in the Nikon F3, set the ISO to 3200 and just plinked a few shots around the house. I processed it in HC-110 (dilution B) for 9 minutes at 70 degrees (F). I scanned it on the Pakon, then imported into Lightroom and applied minor contrast adjustments only.
At first glance, I like it. Of course it’s quite grainy but that’s expected and actually desirable to me. It’s wild being able to shoot indoors with very low light and still get the shutter speed up to 160 or more, even at F4.
Amazon Web Services (AWS) have always baffled me, but I have been determined to untagle them. To this end, I’ve been migrating my static sites into S3 and using Cloudfront distributions as CDN. This gave me some real problems to solve, which makes learning more fun.
The final candidate for migration was this here blog (baty.net) and if you’re reading this, it worked.
Here’s a rough sketch of the steps I took…
Created S3 buckets
I created an S3 bucket for www.baty.net and configured it to host a static website. I also wanted to redirect requests for the apex domain (baty.net) to www.baty.net, so I had to create a second bucket named baty.net. The baty.net bucket is configured as a redirect-only website with all requests redirected to www.baty.net. Creating a separate bucket for each host name is a little cumbersome, but not difficult.
Provisioned SSL certificate
There’s no way (that I know of) to add an SSL certificate to an S3-hosted site, so for that I had to request a certificate using Certificate Manager and attach it to a Cloudfront Distribution. I used the wildcard *.baty.net so I could reuse the cert for other subdomains.
Created Cloudfront distributions
I created a Cloudfront distribution using the www.baty.net S3 bucket as its origin1 and configured it to use the new SSL certificate. Now, Amazon is managing updates for the cert at no extra cost and, as a bonus, I get a nice CDN for content.
I needed to create a second distribution using the the same SSL certificate and the baty.net bucket’s website endpoint so that I could redirect both http and https requests for baty.net to https://www.baty.net. This wasn’t necessary but I’m sure there are old links to pages in https://baty.net and I wanted to make sure those were properly handled.
Moved DNS into Route 53
Another change I made was to move DNS for the baty.net zone into Route 53. I’ve used DNS Made Easy for years and have never had any trouble, but I wanted to go through the process with Route 53 just to see how well it worked. For $0.50/month per zone, Route 53 sure makes working with DNS and other AWS tools easy.
Updated my deployment script to use s3deploy
I use a Makefile to run my site deployment. The deploy recipe used rsync and synced files to a directory on my DigitalOcean instance. The move to S3 required that I change it so that the site’s files are synced to the S3 bucket instead. I’m using s3deploy for this. To deploy the site I just type make deploy and Make builds the site, commits and pushes to my github repo, then uploads changes to S3 using the following command:
My AWS credentials are kept in environment variables2 so I don’t need to keep them in the Makefile.
s3deploy is smart enough to sync based on etag hashes rather than file modification time so only files that have actually changed get uploaded3.
Invalidate objects after deployment
The nice thing about a CDN is that content is efficiently cached, sometimes for a very long time. The trouble this causes is that updates to the site are not immediately visible. Cloudfront needs to be told to re-fetch changed objects from the origin. To force this, I added an invalidate recipe to the Makefile. I tell Cloudfront to re-fetch the pages that should be updated immediately, namely /index.html, /index.xml, and /page/*. I do this using the following command:
I may decide to tweak the paths later. For example, I’m not invalidating /tags/* but probably should. I only get 1000 path invalidations per month for free so I’m being conservative.
That’s it. It took me a long time to figure all of this out. AWS has deep and thorough documentation but few useful resources for getting started. I’m finally starting to get my head around how AWS services4 work and how to use them.
I’ll be watching costs closely, but best I can figure this entire setup should cost me less than $2.00/month. That includes hosting, DNS, SSL, CDN, and storage.
You must use the S3 website URL as the origin rather than the bucket itself otherwise it won’t serve /index.html files when visiting just the directory (e.g. /about/ will not find /about/index.html)
AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY[return]
Amazon’s aws command line tool uses timestamp and file size when determining whether to upload a file
“services” is redundant here but it sounds better to me this way
I wish I could just delete my Facebook account and be done with it, but I can’t. Or at least I’ve been unable to convince myself that everything would be fine if I didn’t have a Facebook account. Deleting the account entirely would prevent me from seeing things that I really want to see. As disappointing as it is, Facebook is where my family communicates and no sane person would suggest I try getting them all to move elsewhere.
So, while I’d love to be one of those people who just deletes Facebook and then writes a smug blog post about it, for now I’ll be trying to at least limit my usage and exposure.
The goal is to use Facebook for keeping up with friends, browsing groups about specific topics, and occasionally posting stuff my family may find interesting. This way they can also keep up with me without me having to constantly remind them that “I still have a blog, you know!”. And let’s be honest, I’m not always worth the extra effort.
As a side effect, this should drastically reduce my exposure to the usual noise and nonsense.
First, I’ve downloaded all of my content, just in case I decide to take more permanent measures later.
Second, I’ve updated privacy settings so that only “friends” can see my stuff.
Third, I’ve unfriended everyone who is not a coworker, collaborator, or family member. (Please don’t take it personally.)
Fourth, I’ve unfollowed all pages and groups. I’m still a member of the groups but they don’t appear in my timeline. I can just visit them directly whenever I want to catch up.
My timeline is now filled only with posts from those I’m interested in seeing updates from. Well, that, and ads…so many ads. Still it’s a huge improvement.
I look forward to the day I can delete Facebook entirely, but for now I’ll just dial it down to a manageable level.
So I began to take note each time I experienced a little hit of outrage or condescension or envy during a Twitter session. What I found was that nearly every time I felt one of these negative emotions, it was triggered by a retweet.
I’ve been noting my reactions to tweets and found the same thing - that retweets are the single most toxic component of my current Twitter feed. I will use whichever Twitter client allows me to completely disable retweets. Some, like Twitterrific let me disable retweets for individual users, but not for everyone all at once. Lifehacker posted a script for doing this on twitter.com but it doesn’t work for quoted tweets and I’d have to remember to rerun it each time I follow someone new. It might be worth a try while I wait.
An unwelcome consequence of living in a world where everything is “easy” is that the only skill that matters is the ability to multitask. At the extreme, we don’t actually do anything; we only arrange what will be done, which is a flimsy basis for a life.
Today’s cult of convenience fails to acknowledge that difficulty is a constitutive feature of human experience. Convenience is all destination and no journey. But climbing a mountain is different from taking the tram to the top, even if you end up at the same place. We are becoming people who care mainly or only about outcomes. We are at risk of making most of our life experiences a series of trolley rides.
My recent experiment with Linux has me rethinking my password management strategy.
I’ve been using 1Password to manage passwords on my Mac and iPhone. 1Password is a great way for most people with Macs to manage passwords. Since I recently started using Linux alongside my Macs, I need better cross-platform support. I could use something similar to 1Password that also runs on Linux such as KeePassX. Or, I could run 1Password for Windows under Wine.
As it happens, I’ve also been using the wonderful command line password tool “Pass” for years and love it.
Pass is basically a simple wrapper around a folder full of gpg-encrypted text files. This means I can manage password files using the usual set of either command line tools or the Mac Finder or whatever else that can shuffle files around. I can also maintain history by keeping them in a Git repo. Pass has extensions for Alfred on Mac and dmenu on Linux. Using these, I can find and copy my passwords at least as fast as with 1Password…probably faster.
The thing that had kept me from going all-in with Pass is that I didn’t have acccess to my Pass passwords on my iPhone. Then I discovered Pass for iOS. Pass for iOS is an iOS app that works with Pass passwords. Using a git repo of the encrypted password store with ssh and gpg keys, I have full access to all of my passwords from pass. It also has an iOS extension for Safari so that it works just like 1Password on iOS. Pass for iOS even has support for one-time passwords, although I haven’t tried that yet.
I have exported all of my 1Password passwords and converted them using Pass and now all my passwords are stored as encrypted text files in a nice, organized folder hierarchy. I can copy them, move them, and back them up using any of the usual tools. This feels liberating.
I’ll keep 1Password around for a month or two just in case, but unless something weird happens with Pass, I’ll be able to cancel my 1Password subscription. The fewer subscriptions I have to deal with, the better.
I keep trying to move my photo processing and library workflow out of Lightroom,
and I keep failing. This post is just me thinking it through (again).
First, why would I want to do that? Good question. It’s popular to hate on
Adobe, and some of this is justified, but sometimes it feels like bandwagoning.
For me, the urge to move away from Lightroom is mostly due to Subscription
Fatigue. I would love to not have to pay $10/month for the rest of my life
just to manage my photo library. It’s not the price, as $10/month for the
photography package is a fine deal. It’s just that it weighs on my mind, and
wouldn’t it be nice to not think about it?
Here are the things I’ve tried.
This is the quick and easy option. With iCloud Photo Library I can have everything
everywhere all the time. The editing features are pretty good and it can use
things like Luminar as an external editor. I don’t have to import my iPhone
But, a requirement for me is that all of my photos must be kept in a set of
folders that I create and maintain. I don’t mind so much if there’s a “Library”
for metadata and edits and such, but I can’t abide not having a “Show in Finder”
command available. I know I should just get with the program, but I’m a little
stuck in my ways here so Apple Photos is not yet the right thing for me.
Photo Mechanic and an editor
Photo Mechanic is by far the best way I’ve found to
ingest, caption, and keyword photos. It’s super fast and is made for this. It
works directly with the Finder so my precious folder system remains intact.
There’s no library at all - it’s just a browser. Select an image, hit “E” and
the image opens in whatever editor I have configured. It does the right thing
with raw files. It can export/rename/upload to just about any service or format.
Photo Mechanic is the option I want to use. It’s simple, lightweight, fast and
flexible. But sometimes I want a library. I want to make collections or do some
fancy searching. I also kind of want to edit “in place” without sending files to
a separate editor and back. I may end up back here someday, but for now the
benefits don’t outweigh the effort.
I love Capture
and it’s the most likely alternative. Earlier this year I tried going all-in.
I’ve done this before, and it almost stuck this time. Capture One does a great
job with Fuji Raw files. Although it’s easy to be brainwashed by The Internet
into thinking that Capture One is great with Fuji and Lightroom sucks. I don’t
find that to be true any more. Lightroom does fine, and Capture One is slightly
The UI of Capture One takes a bit of getting used to, but it’s very customizable
and quite nice once I got settled in.
It just doesn’t have the export options or plugins or ecosystem of Lightroom.
I’ve tweaked my process in Lightroom over the years to the point where I can
crank through image processing, filing, exporting, and sharing without thinking
much about it. With Capture One it feels like I’m always swimming upstream. That
would eventually pass, but why bother? Capture One costs pretty much the same as
Lightroom if I pay for the upgrades each year or so.
I really wanted to like the new Lightroom CC, but I didn’t. I’ll keep an eye on it but at
this point it feels like an Apple Photos workalike with the overhead of the
Adobe subscription. Also, no “Show in Finder” command which I still can’t get
past. It’s certainly one to watch.
Luminar is a very cool new photo editor. There’s
no library yet, and it’s a bit slow on my machines. We’ll see what happens when
they introduce the library features but I’m not ready to throw all my efforts
behind it yet.
Lightroom CC Classic
So here I am, back in Classic. For me, right now, the familiarity, ease,
flexibility, and power that Classic gives me is unmatched by any of the other
options. Even though I’m not always comfortable with Adobe, I’m comfortable with
Lightroom. I’m used to it. My fingers are hardwired for using it, and I get the
results I want quickly and easily.
There is a fear, probably justified, that Adobe will break their promise to keep
Classic around indefinitely the way they did with the downloadable version. I
worry about Adobe abandoning Classic, leaving me hanging.
But let’s say they do discontinue Classic in, say, three years. What’s the
difference between being forced to move off Classic in three years and deciding
to move off it now, other than it would be on my terms if I did it now? I
guess I could congratulate myself for ending one more subscription but is it
really worth it? Right now, for me, it’s not.
And who knows, the new CC could become just as good or better than Classic. Or
one of the alternatives could be even better. Or something new could come along
and sweep me off my feet.
Point is, I’m already invested in Lightroom so fighting to move to something
else just in case seems like unnecessary effort, and for what? So I can be
free of one of the most useful subscriptions I pay for? So that if it goes
away someday I’ll be able to say “I told you so!” but only because by that time
I’ll have forgotten the pain I’d already suffered through when switching?
Adobe may do things I don’t love, and no, I don’t completely trust them, but
right now they offer a darn good photo management and editing solution that I’m
I’ll try to remember all of this next time I get the sudden urge to move to
something else for one reason or another that day.
It’s breaking my heart, but I decided I needed to find a new home for Josie.
I adopted Josie last spring from the Humane Society in Grand Rapids. I knew the
minute we met that I wanted to bring her home, so I did. And I fell in love.
She is sweet, funny, playful, and affectionate. She doesn’t chew things she’s
not supposed to. She doesn’t bark. She doesn’t poop in the house. She curls up
next to me on the couch. She loves car rides and chewies and sticks.
Josie is 99% perfect, but she simply can’t be around other dogs.
I’d never met a dog that just never figured out how to get along with other
dogs, so I just assumed I’d figure things out. It’s not that I didn’t work at
it. I worked at it. I spent thousands of dollars on training and consulting. I
brought her to “finishing” school, where she did pretty well in groups. This was
encouraging, but whenever she was one on one with another dog she just couldn’t
control herself. And even with all the training, I had trouble controlling her.
I don’t give up easily on dogs. I’ve had dogs that needed to be carried around
in order to pee or get up stairs. I had dogs needing multiple surgeries and
long, expensive, recovery periods. I’ve had dogs that couldn’t control their
bladders and would just pee everywhere all the time. I never once considered
getting rid of them.
My life involves dogs. Everyone I know has dogs. My girlfriend has two small
dogs. None of us can ever be in the same place when Josie is with me. I worry
that someone’s dog is going to get hurt. After nearly a year of working at it, I
didn’t know what I could do to resolve all this.
So, a couple weeks ago I contacted one of Josie’s trainers and asked for advice.
It turns out that his sister had recently lost a dog, lived alone with no other
pets, and was interested in meeting her. She took Josie home for a week to see
how they got along. She (of course) fell in love immediately and expressed an
interest in keeping Josie. I said yes.
I’m told by people who know this woman that Josie will be well cared for and
probably spoiled a little. I’m ok with that.
Part of the reason I’m writing this is to convince myself that I shouldn’t hate
myself for failing her. Adopting a dog isn’t something to be taken lightly with
just an easy “never mind” if things get inconvenient. I hope that’s not what
I’ve done. I don’t think I gave up too easily. I think I’ve done the right
thing, but damn it hurts.
Josie will be fine. Considering the easy access she’ll have to professional dog
people, I expect her to be happy and to thrive.