Sights from a walk in the neighborhood.

A street view of a house and its backyard with a partly cloudy blue sky above. In the backyard is a metal tower taller than the house with a bicycle mounted on top of it.

A view from the street of a meadow with a few trees with a skate park beyond. A skater can be seen approaching a ramp.

πŸ“· Hike at Lacamas Park

A couple of weeks ago we went hiking at Lacamas Park in the city of Camas, about 20 minutes drive from Portland. This was our first time there and it was a lovely hike in a park that is well maintained and has lots of crisscrossing trails.

A waterfall and rapids visible from the trail.

A few times I got the feeling of being farther from the city than we actually were, like when the trail drops down to the base of a waterfall.

Jenni in front of a waterfall.

We even spotted some trilliums!

Purple trillium flower amongst other plants.

Jenni stands next to some rapids viewed from a bridge above.

You can get right next to the water, so this one might be worth revisiting on those hot summer days.

Activity Stats and Map

Distance: 3.38 miles
Elevation Gain: 450 ft
Time (including breaks): 1h 56m

See full screen

It’s the colorful season.

Blue and yellow plants in a small cluster potted in a barrel.

Jenni’s tiny air plant has a super tiny flower. Fountain pen nib for scale.

A very small fuzzy white flower in the middle of a small red air plant.

Sidewalk view of a bright orange house with the shadow of tree branches. On a window sit two cats looking at the camera. Two signs on the lawn in front say β€œLove”.

Our poofs have arrived.

A hand holds a cluster of pink cherry blossoms basked in the warmth of late morning sun.

In the last week I used ChatGPT to replace three text manipulation scripts I used on and off. And yes, I spent hours writing/maintaining those over the years.

I also used it to aid in creating a new shell script.

It was disgusting/wonderful how straightforward all that was.

New version of Mimi Uploader is out πŸŽ‰

The latest version of Mimi Uploader is out. This one was a long time coming as the beta cycle started over two months ago. I just had several other things taking my time. Thank you for your patience.

Here’s what’s new:

  • Fix for alt text editor issue that caused editing text to go under the keyboard. Very annoying!
  • Redesigned Help screen. Won’t glare at you in dark mode anymore!
  • Bug fixes and performance improvements.

Get it from the App Store!

The bespectacled PNW life

An animated GIF from behind the left lens of spectacles being removed. It starts with showing blurry water droplets and a focused view but then transitions to a blurry view with focused droplets on the lens.

Time to check those teeth.

A man in workwear examines a chainsaw seated within a pile of large chopped up tree trunk pieces.

πŸ“· Rosalie, with her 1978 Checker. Portland, Oregon. 25th March, 2023.

A woman stands next to a car by the side of the street in a neighborhood.

Rosalie has been driving a Checker since 1964. Her dad owned the 1964 model but at some point traded it in for the 1978 model. She inherited it from him and still drives it to this day.

I was walking by with my camera, noticed the car and took a few photos. She noticed me doing so and came out to talk to me about it. It was great to hear her story and to get a glimpse into her love for the car and their story together.

Reservoirs at Mt. Tabor. Portland, Oregon.

Grainy black and white film photo of an empty reservoir sloping wall with a curved shape.

Grainy black and white film photo of an empty reservoir in the distance framed by two tall trees and with an expansive view of trees and city skyline with clouds above behind it.

Film: Kentmere PAN 400
Camera: VoigtlΓ€nder Bessa R2a

It was as if the AI had cast 21st century Americans to put on different costumes and play the various cultures of the world. Which, of course, it had.

πŸ”— AI and the American Smile. How AI misrepresents culture through a facial expression. | by jenka | Mar, 2023 | Medium

Love articles like this that show how much bias lies within these generative algorithms. Biases that run so deep that they are not even talked about in social conversations.

Jenni and I got engaged a few days ago πŸ₯°

Selfie of me and Jenni with a background of driftwood and the Pacific Ocean. A sparkling ring is visible on her hand.

Interior of a brewery hall with tables and chairs in the foreground and a large mural on the back wall. The mural depicts a brewery and bottling in operation with a number of people working on various jobs.

Always enjoy seeing this mural at Assembly Brewing. Also love their food, beer and service. Great spot in our neighborhood πŸ‘

On a scale of 1 to 10, the entropy of my home office and the desk therein hovers between 4 and 8. Currently both are at about 8. Each time I organize, I try to get it below 4 but it never happens.

An App for Mapping My Outdoor Activities With Apple Watch Using GPX Tracks

I use an Apple Watch to track my activities, whether that be workouts or recreational. For outdoor activities, the watch records location data throughout the activity. This is later shown on a map in the Fitness app on the iPhone. While that map is interactive, exporting it only exports a low resolution image, and not the actual route.

A walking track is overlaid on a map.

When I share an activity on a blog post I like to show the map but I don’t like the idea of just sharing an image of the map. I would like to get the actual data out so that it can be overlaid on an interactive map using various mapping tools.

I found an app on the App Store that can export the data, among many other features, but I wasn’t keen on paying a subscription for this one small occasional use case. As an app developer, I know that access to this data is controlled by the Health related privacy settings on the iPhone and is accessible using the HealthKit framework. So I decided make a small app to get this data out while also gaining familiarity with that part of the iOS SDK. A few weeks ago I got started on it. I worked on it in small chunks of time, as I usually do with such side projects. The UI came together pretty quickly as a SwiftUI app. It is nothing special but looks presentable and gets the job done.

Screenshot of an app showing a list of workouts with options to fetch and share the route from some of them.

It took just a little bit longer to get the data out from HealthKit. Converting it to GPX files was straightforward. Once I had created a file I could use the share sheet to get it into other apps or to simply save it. From there it can be imported into tools that put it on a map.

For example, here’s a GPX file of a walk at Mount Tabor Park. It can be utilized to create an embedded map as shown below.

See full screen

Or even into Google Maps. In fact once imported there, you can view the track with elevation by selecting the option for Google Earth and enabling the 3D view. I love this option as it adds another dimension (literally πŸ˜‚) to the activity.

Screenshot of track on 3D view from Google Earth.

Both these presentation styles are far more interesting to me than just a low resolution image out of the Fitness app.

Grainy black and white image of a view through a window to an arbor in the yard. The window has blurry reflections of a geometric pattern.

Film: Kentmere PAN 400
Camera: VoigtlΓ€nder Bessa R2a

Adding API Accessible Devices to the Home Climate Monitoring Setup

I was thinking about getting more of those AcuRite sensors for expanding my home climate monitoring when I realized that I already have a couple of devices recording this and other data.

Screenshot showing charts of temperature, humidity, and air quality time series.

These include my Ecobee Thermostat and Remote Sensor and my IQAir AirVisual Pro. Both of these have means of getting the data off of them using an API. This blog post by Den Delimarsky really helped with the IQAir API. Ecobee API was straightforward. And after some coding and testing, I had a couple of scripts running that could pull metrics from them and send them to influxdb. So now I have a few more data points for existing metrics, and have added air quality to it.

In the previous blog post , I wrote:

I’m going to take a break from any further optimizing/tweaking for now.

Well, that didn’t happen! But maybe now πŸ€”

P.S. The screenshot above illustrates a few other things:

  • How I got the scripts going in starts and stops as I figured out the issues in having them always running.
  • A macOS update that I started before heading out for a few hours, which led to a large gap because I still have all of this on my desktop Mac.
  • The dots show how some data was reduced in granularity overnight because of device settings that put it to sleep. So I changed those settings the next day.

The Unfocused iOS Developer Life

A screenshot of four identical squircle icons containing a geometrical pattern.

#iosdev