Atlas Van Lines, 2023-01-23
Luther Rd. Natural Area, Springwater Corridor
Portland, OR
#portland #pdx #SpringwaterCorridor #LutherRoadNaturalArea #photography
Atlas Van Lines, 2023-01-23
Luther Rd. Natural Area, Springwater Corridor
Portland, OR
#portland #pdx #SpringwaterCorridor #LutherRoadNaturalArea #photography
Coffee Walk, 2023-01-25
Springwater Trail, Foster Floodplain Natural Area
Lents, Portland, OR
Stopped through the Feral Cat Cove skate park on the way to the floodplain this morning.
I left out the salmon I caught this morning, so here they are.
Coffee Walk, 2023-01-24
Foster Road, Mt. Scott
Portland, OR
#portland #pdx #MtScott #FosterRoad #photography
Hi, I’m Mike Hall. I live in Portland, OR. Here are some things I like: Movies! If I had to list five to give you an idea of my tastes: In the Mood for Love: Heartbreaking every time. The Godfather Part II: Yes, I love the original, but Pt II just feels bigger and more lush. Jackie Brown: I was ready to give up on Quentin Tarantino and then he made this.
The site it built with Hugo, a static site generator. The theme is hugo-simple-css. hugo-simple-css depends on SimpleCSS, a classless CSS framework. The color scheme is Catppuccin Source is hosted on GitHub The site is hosted on Cloudflare Pages.
Haircut Loitering, 2023-01-23
Downtown Portland, OR
My barber was running late so I drank a pineapple thing and milled around.
#pdx #Portland #downtown
Haircut Day, 2023-01-23
Downtown Portland, OR
Downtown for lunch with a former colleague and a haircut/beard trim.
#portland #pdx #downtown
Coffee Walk, 2023-01-23
Foster Road, Mt. Scott/Arleta
Portland, OR
#FosterRoad #Portland #pdx #fujifilm #photography
Working on my homepage. Wanted to get the branding right for each social network.
My first swing at overriding the basic palette for SimpleCSS was overdone. This pulls in catppucin’s palette and overrides the basic variables in SimpleCSS with catppucin variables. Much simpler.
📺 The Wire (2002) - ★★★★★
Doing a rewatch. Wonder how the last season will land this time.
Most of my photography energy went to workflow stuff. I finished up the minimum useful version of imgup, a little Sinatra app that lets me upload images to my SmugMug account, then grab little snippets ready to be pasted into a blog post or whatever.
It's part of a bigger thing I'm trying to do around my photo workflows in general, consolidating around SmugMug as my sort of presentational home, then take advantage of all the affordances it offers, with a little layer of automation to make things less clicky and make for fewer stops along the way from capture to edit to publish to share.
Most of my writing this week is invisible to the outside world.
Early in the year I established a practice of writing about how I do things that are important to me. Whenever I think about a big change that will require a new tool or new way of doing things I pull out my notes from last time and review, then usually start with a prompt like "what problem are you trying to solve?"
This week I did some writing about my journaling practice, my web presence, and my RSS practices.
Since my last day at Puppet I've been keeping a small daily journal in DayOne. I don't usually put much: Just the highlights and maybe a general impression. I try to include an image of some kind. It has been a little perfunctory and detached. I found myself going back and adding days so I could keep a streak going. I didn't like how that felt.
I also revived my Daily Pages practice. That's just a simple lookahead thing:
That has the disadvantage of sort of mixing up a few goals: An opportunity for introspection with a more straightforward "what the hell needs to happen today" kind of thing.
So long and short I'm just going to make my daily page a todo thing and my daily journal something more introspective. One is amenable to handling tasks in my Obsidian kanban boards, one is better suited for entering things in Day One as a normal journal.
I finally finished Kim Stanley Robinson's Aurora this week. I think I'll just repeat about it what I said when I was closing in on the home stretch:
It’s like KSR woke up one morning and said “someone needs to warn the future about generation ships, but if they’re posed as engineering nightmares it’ll only make people try harder. I know. I’ll write a novel and let the people who care about ethics and stuff have something to chew on, AND break down for them how these things would be engineering nightmares.”
I don't read enough science fiction anymore to make broad generalizations about how modern hard-ish SF handles the idea of generation ships, so maybe there's more skepticism about them these days. Certainly we have stuff like Adrian Tchaikovsky's Children Of Time that don't make them sound like clean utopias with matching jumpsuits.
Anyhow, I liked it a lot. Would recommend. Parts of it are haunting.
You know, what's the routine look like?
I added a weekly look-ahead to my daily pages routine. Sunday night is for sitting down with the calendar and a list of standing items:
I make sure I understand how my social calendar will line up with the prosaic stuff I have to get done so I can make sure I'm picking the times that are most likely to help me succeed when I schedule the time to do those things.
... and I pick the big objective for the week: The thing I most want to make some progress on. I try to keep it strategically valuable, but last week I had a major household thing to do that I knew I simply did not want to touch, so I made that the big objective.
It feels very structured, but I've been thinking a lot about how time moves and feels during this current period of unemployment. It would be very easy to just put things off and stay absorbed in stuff I just enjoy doing. With a little bit of structured time -- in the end we're talking about maybe 20 hours out of the week, I know I'm keeping things up that need to be kept up, making progress on things that matter, and keeping what I described to my counselor as "a fundamental level of tension" in the system.
No so much that I'm stressed out or trying to recreate work conditions, but enough to know I can look back on the week and say "you kept everything up."
You know, pretty good?
I had an interesting moment this week when I was filling out my daily page and got to the "what are you most happy about prompt" and found myself writing "I'm me."
By which I meant that in the middle of a pretty uncertain time with a lot of variables, I like how I'm handling that, and I like how I am gradually recovering a feeling of personal fun -- a sense of unselfconscious play -- I had lost touch with.
Usually I write things like "finances solid," or "stuff is getting done" or whatever. I never really say things like "I'm okay." Felt pretty good.
Last night I finished up the /recent
page for imgup’s SmugMug version.
It provides the last 20 uploaded images along with their title
and caption
metadata wrapped up in a Markdown image link. The caption is pulling duty as my alt text.
Having this in place gives me a way to process and upload images to SmugMug from Lightroom in bulk, then visit imgup to get the markup for sharing. Work put into adding metadata, titles, etc. can happen in one place, and I can easily amend it in the SmugMug organizer if needed. It saves me a little clicking around and manual editing.
Probably seems small, but I hated all the file shuffling I was doing and realized that some images I posted on my microblog over the past few years weren’t compressed/scaled very well. This gives me a tool for quickly rehabbing blog post images by finding them again in Lightroom, re-uploading them, and grabbing them out of imgup to update blog posts over time.
📺 The Last of Us (2023) - ★★★★
Hope it keeps up the standard set in E1. Also hope it doesn’t go full puzzlebox or bog down. Never played the game so it’s all new to me.
Most of my photography energy went to workflow stuff. I finished up the minimum useful version of imgup, a little Sinatra app that lets me upload images to my SmugMug account, then grab little snippets ready to be pasted into a blog post or whatever.
It's part of a bigger thing I'm trying to do around my photo workflows in general, consolidating around SmugMug as my sort of presentational home, then take advantage of all the affordances it offers, with a little layer of automation to make things less clicky and make for fewer stops along the way from capture to edit to publish to share.
Most of my writing this week is invisible to the outside world.
Early in the year I established a practice of writing about how I do things that are important to me. Whenever I think about a big change that will require a new tool or new way of doing things I pull out my notes from last time and review, then usually start with a prompt like "what problem are you trying to solve?"
This week I did some writing about my journaling practice, my web presence, and my RSS practices.
Since my last day at Puppet I've been keeping a small daily journal in DayOne. I don't usually put much: Just the highlights and maybe a general impression. I try to include an image of some kind. It has been a little perfunctory and detached. I found myself going back and adding days so I could keep a streak going. I didn't like how that felt.
I also revived my Daily Pages practice. That's just a simple lookahead thing:
That has the disadvantage of sort of mixing up a few goals: An opportunity for introspection with a more straightforward "what the hell needs to happen today" kind of thing.
So long and short I'm just going to make my daily page a todo thing and my daily journal something more introspective. One is amenable to handling tasks in my Obsidian kanban boards, one is better suited for entering things in Day One as a normal journal.
I finally finished Kim Stanley Robinson's Aurora this week. I think I'll just repeat about it what I said when I was closing in on the home stretch:
It’s like KSR woke up one morning and said “someone needs to warn the future about generation ships, but if they’re posed as engineering nightmares it’ll only make people try harder. I know. I’ll write a novel and let the people who care about ethics and stuff have something to chew on, AND break down for them how these things would be engineering nightmares.”
I don't read enough science fiction anymore to make broad generalizations about how modern hard-ish SF handles the idea of generation ships, so maybe there's more skepticism about them these days. Certainly we have stuff like Adrian Tchaikovsky's Children Of Time that don't make them sound like clean utopias with matching jumpsuits.
Anyhow, I liked it a lot. Would recommend. Parts of it are haunting.
You know, what's the routine look like?
I added a weekly look-ahead to my daily pages routine. Sunday night is for sitting down with the calendar and a list of standing items:
I make sure I understand how my social calendar will line up with the prosaic stuff I have to get done so I can make sure I'm picking the times that are most likely to help me succeed when I schedule the time to do those things.
... and I pick the big objective for the week: The thing I most want to make some progress on. I try to keep it strategically valuable, but last week I had a major household thing to do that I knew I simply did not want to touch, so I made that the big objective.
It feels very structured, but I've been thinking a lot about how time moves and feels during this current period of unemployment. It would be very easy to just put things off and stay absorbed in stuff I just enjoy doing. With a little bit of structured time -- in the end we're talking about maybe 20 hours out of the week, I know I'm keeping things up that need to be kept up, making progress on things that matter, and keeping what I described to my counselor as "a fundamental level of tension" in the system.
No so much that I'm stressed out or trying to recreate work conditions, but enough to know I can look back on the week and say "you kept everything up."
You know, pretty good?
I had an interesting moment this week when I was filling out my daily page and got to the "what are you most happy about prompt" and found myself writing "I'm me."
By which I meant that in the middle of a pretty uncertain time with a lot of variables, I like how I'm handling that, and I like how I am gradually recovering a feeling of personal fun -- a sense of unselfconscious play -- I had lost touch with.
Usually I write things like "finances solid," or "stuff is getting done" or whatever. I never really say things like "I'm okay." Felt pretty good.
I finished up the initial SmugMug version of imgup today.
There are some things I’d like to add, but it’s good enough to stick in Docker and run locally as a drop-in replacement for the Cloudflare edition I’ve been using.
The basic workflow of the tool is:
title
and caption
properties. The caption
goes on to be the alt-text.
Why? Because I get better control of the quality of images I share (SmugMug wants them to look nice at a variety of sizes and compresses/resizes accordingly), I’d like to move to having permanent URLs for images in posts (and I think I’m a SmugMug lifer now), and I’d eventually like to save the messy scattering of copies of images made just for sharing then discarded.
Because SmugMug has a pretty nice ecosystem of plugins, uploaders, and apps, there’s more I mean to do. For instance, it’s possible to just shoot an image straight from Lightroom CC on an iPad to SmugMug. There’s also a good desktop Mac uploader that can snarf up things saved to a specific folder. So if I just pick up the habit of adding title and caption metadata in Lightroom, it’ll show up in anything else I do with imgup
. Uploading, ultimately, will not be something I do a lot with this tool as I build the parts where I can get back recent uploads and get easy sharing snippets.
Still on the list of things to do with this:
post this
buttons for micro.blog, Mastodon, etc..env
file to save tokens. I could just dump that into a file, look for it, and spare the manual uncommenting of code.In the process of debugging oAuth, I ended up building a manual solution to the problem of keeping an oAuth session alive after restarting the app: Once you do a SmugMug auth with the app, there’s a /tokens
page that tells you enough to stick your oAuth access token and secret in an environment variable. In the development environment it pulls this stuff from a .env
file. You can use the app without doing this at all, at the cost of having to re-auth the app with SmugMug each time you restart it.
🎵 I Told You So - Delvon Lamarr Organ Trio
brain.fm has been fine, but honestly I think this is just as good, if “motivational, vocals-free” is the agenda.
Currently reading: Aurora by Kim Stanley Robinson 📚
In the home stretch. It’s like KSR woke up one morning and said “someone needs to warn the future about generation ships, but if they’re posed as engineering nightmares it’ll only make people try harder. I know. I’ll write a novel and let the people who care about ethics and stuff have something to chew on, AND break down for them how these things would be engineering nightmares.”
Coffee Walk, 2023-01-19
Foster Road, Portland, OR
Bonus self portrait.
oAuth is sort of a pain. Now that I sort of know how to plumb it in – enough that I’m going to make myself a little repo with a reference application – it has opened up a lot of interesting possibilities.
The whole experience reminded me of when I was doing Drupal development for a job I took to get into tech and out of pure editorial. We needed to do some work migrating a bunch of content between sites. My predecessor, who’d established the site on a previous version of Drupal, had done a similar task with a certain plugin, so working from his notes I installed and learned – that it wasn’t a clickable GUI thing with a wizard anymore – it was now a content migration “framework,” which meant I was going to spend some time learning its API and writing my own PHP plugin to support our particular needs, or … nothing. Ask for money for the outside guys, I guess, because I’d been hired to get better at PHP, not know it. I ended up hobbling through, and I still remember hopping around my office when the damn migration just ran on our 800,000+ user database.
So this weekend I was shopping around for a library to help me get oAuth plumbed in. OmniAuth presented itself right away, and seemed to have a SmugMug “strategy” – their word for “module” or “plugin” – so my eyes lit up. Then reality set in: The strategy was for an older version, and it targeted the old SmugMug API. Okay, fine, I was feeling industrious so what even was a strategy? I looked at a few and my eyes glazed because I had a nodding understanding of how all this worked, but not enough to sit down and implement a plugin for my specific problem.
I think that’s probably okay. I set OmniAuth aside and went with the vanilla Ruby oAuth gem and a reference Sinatra app someone wrote that did a really nice job of creating routes that recreated the oAuth dance. I had found a few other examples, but they were less systematic and harder to peel apart. By the time I was done fiddling with it to get it to work with SmugMug’s particular oAuth endpoints, I felt a lot more confident on how the protocol actually works.
So, do I “know oAuth?” No, I do not. Asked to implement an oAuth signin process from scratch, I could not just implement it. But I do know, more or less, the vocabulary, the steps in the process, and what it’s doing behind the scenes. Using standard libraries is a repeatable task. Good enough.
What else?
I was a little more forward-thinking this time around and picked up dotenv to manage API tokens. I might even be over-using it a little, because it can use the variables you store in it to make other variables. It just makes the core app a little less busy at the expense of having a .env
file to consult if something seems to come from nowhere.
I have never been a big linter person, so I decided to give rubocop a shot. I appreciate it as an education tool. There are a lot of things about good Ruby style I never learned, so it was a little alarming at first. Sort of like I’d been made to code in a small room with a large speaker on the wall that was fed by a room full of the most earnest Ruby style pedants monitoring me from a hidden camera.
I ended up turning off a few things it wanted to complain about for … reasons … (like shebangs) but did learn a few things and did find that by paying attention and accepting the corrections I no longer guiltily run a beautifier before every commit because things are at least consistent and tidy. Plus it complains about a few things that are at least potentially problematic.
What else?
Not much. I think I’m feeling voluble because juggling oAuth’s needs with what I wanted to accomplish was a pain in the neck, and SmugMug maintains a separate API for uploading that is harder to interact with than the one I will need to use for the rest of the project. I don’t even really need the uploading API because their own uploaders and tools are great. Cloudflare was simple to figure out, hence alluring, but using my normal stuff (e.g. Lightroom) I can also get titles, keywords, exif data, etc. and do more interesting things without having to build out a database of some kind, or building special UIs to get that stuff. But anyhow, adding then managing the complexity of oAuth feels like an accomplishment. I don’t know how many little ideas I’ve bounced off of because the API I would have needed to touch had moved on from simpler approaches.
And I am feeling good because I realized at some point over the past couple of weeks that I am doing all this because it is playing. I used to do a lot of little utility scripts and silly gadgets because it was fun and absorbing, not because it was hugely practical or efficient. It was just playing. I stopped playing for a long while. It feels good to play again.
I found a lab result on the Kaiser website from 2012 I never opened. I often struggle to remember the dates of the five days I was nearly killed by $1 sushi & could only lie in bed watching all the existing eps of Sons of Anarchy on an iPad, praying for death, so that was nice.
I do remember that watching, like, three seasons of that show continuously when not explosively voiding or slipping into fevered, tortured sleep did nothing to increase my desire to live. But part of me was, like, “you’re dumb enough to eat $1 sushi, you deserve this, too.”
I made a shortcut that pretty much does what imgup does, except from an iPhone (or Mac, I guess, if you want to pick an image from Photos instead of sending it via an iPhone/iPad share sheet.
It just squirts an image up to the Cloudflare Images API, gets back a URL, and copies some pre-made Markdown to your clipboard suitable for pasting somewhere. Pretty simple to add a step to send it to a Drafts draft, etc.
Cloudflare doesn’t do ProRaw, and I’ve got my phone set to default to that, so the shortcut converts image input into 90% JPEGs (both to make them acceptable as a filetype and to compress them down under the Cloudflare file size limit. Generally I share from Lightroom anyhow, and that shares out however you choose and at whatever quality level.
I like sticking stuff up in Cloudflare Images because I get some dynamic options for presentation, quality, etc. that I don’t get when I’m sending things to micro.blog. Any automation I build against that API can eventually enjoy some reuse for the ideas I have around an image feed. If I need to abandon ship, it’s a simple API I can use to retrieve things.
I’m still plugging away at Smugmug automation, though. Cloudflare is fun to play with, doesn’t cost a ton, and is giving me some practice/learning opportunities. Ideally, though, I’ve had some kind of relationship with Smugmug for a very long time, I trust them, and would prefer to use them as the resting place for “seemed worth sharing” content.
I’m also curious about Adobe’s API.
What I’m ultimately interested in is whichever of these will let me layer in some basic metadata in the form of descriptions, etc. then retrieve it programatically for different re-presentation.
Coffee Walk (No Coffee, Just Doctors Edition), 2023-01-17
Mt. Scott Medical Clinic
Happy Valley, OR
Routine checkup day for the first time in a while.