Mimi Uploader is no longer in active development

I have decided to stop development of Mimi Uploader. The current beta will not be released, and there will be no more releases in the future.

The app will still be available in the App Store and continue to work. If I decide to remove it completely, I will give at least one month’s notice.

I thank you all for your support over the five year lifespan of this app.

If you’re wondering why I’ve decided to do this, please read on, although you might also want to read about the history of Mimi Uploader that I wrote 18 months ago.

So anyway, here are some reasons that went into the decision, although no single one was dominant:

  • Mimi Uploader’s role as a utility has diminished over time as alternatives have become possible and accessible.
  • The app makes almost no money. When I introduced subscriptions for supporting development, there was support for some time, but it plateaued, and then reduced.
  • Micro.blog has been introducing new features for managing and displaying photos and providing alt text. To be clear, I’m in support of that as these go to all users and make the service better for everyone, but they diminish the utility of Mimi, and also increase the burden of maintenance.
  • Some of the most ardent users and supporters have left the Micro.blog community in recent months.
  • I want to focus on newer projects and want to be clear to all users that this app is no longer a priority. If you subscribed to support development, then please feel free to cancel that subscription.

Thanks for a great five-year run 😊

Yesterday it dawned on me that it was Pi Day Eve, so obviously, I whipped up a little Swift iterator that iterates over values of Pi from Pi Delivery. You can get it at this gist.

Use it in your swift code and make fun stuff using the value of Pi up to 100 trillion digits!

Happy Pi Day!

A person wearing a “Lewis & Clark College” sweatshirt, ripped jeans, and sunglasses, is holding a soccer ball. They stand in front of a chain-link fence, with a table nearby. Trees and a building are in the background.

John at Level Beer. 28th February, 2025.

On Friday, I met up with some friends for happy hour. I got there early and was waiting when this guy noticed that I had a camera on me and asked for a photo. He was in a group that seemed to have come by after playing soccer.

A person wearing sunglasses, a bandana, a “Lewis & Clark College” sweatshirt, and distressed jeans is tossing a soccer ball. He stands outside near a table with a chain-link fence and trees in the background.

Making a Mallet

A wooden mallet held in a person’s hand, with a grassy background.

Over the last few evenings, I built my first mallet. As I was making it, I made a big mistake, but I went on making it. I made other smaller mistakes but in the end I have a mallet, that, while not perfect, is a nice addition to my tools. I will only build better mallets in the future.

I’ve been attempting to do more of hand tool woodworking, which involves joinery that takes some effort with chisels to get right. I’ve been using them with a cheap rubber mallet. That has worked fine but I wanted to make my own with hardwood.

I have some scraps lying around, and I found a nice piece of 1" thick walnut (Western, I think) in there. The wood had mostly the characteristic dark brown of walnut, but it all had some lighter sap wood. I decided to make the handle from the sap wood, so that I would have some contrast between handle and head.

A wooden board is lying on a surface. A measuring tape is stretched across the wood, showing its length.

I cut the pieces to dimensions that made sense but here is where I made the big mistake. I cut the pieces of the head in a way that the edge grain ended up on the top and bottom of the head, rather than on the striking faces.

Several rectangular pieces of wood arranged on a light-colored surface.

But the cuts were made and I was committed. I knew I would make mistakes going into this so this didn’t stop me from proceeding.

I lined up the pieces to shape the space for the handle in the head and glued up the pieces to form the head. This is where I made the second mistake. I had seen videos where the person would use a nail gun to hold the pieces in places, but I didn’t have one, so I got some small finishing nails, and hammered them by hand. This led to misalignment of the pieces. As a result, once the head was all glued up, it had to be trimmed to form proper faces.

Pieces of wood glued and clamped together on a workbench, with clamps securing them in place. Woodworking tools and supplies are also visible.

I also chamfered and/or sanded every sharp edge using the band saw and the belt sander. In the end I had a nicely shaped head. The handle was a tight fit but I glued it up and hammered it into place.

A mallet head and a handle lie on a table. Nearby, there is a red sanding block and a black rubber mallet.

The next day I sanded, and cleaned up all surfaces and applied two coats of Watco Danish Oil (Natural). After letting it cure for a day or so, it is now ready. I’m looking forward to chisel work with it in the near future.

A cat is perched on the back of a patterned chair in a dimly lit room. A table with a puzzle in progress is in the foreground, illuminated by an angled desk lamp. The background features artwork on the walls and a blurred interior setting. The photograph is black and white.

Puzzling. 1st December, 2024.

πŸ“· Hasselblad 500C/M
🎞️ Cinestill Double-X (ISO 200)

A large group of protesters gathered at a street intersection, holding various signs. The signs express political messages and slogans, some of which reference Elon Musk and Donald Trump. The scene is set in an urban environment with trees and buildings visible in the background.

President’s Day Rally at City Hall.

Portland, Oregon. 17th February, 2025.

A diverse crowd of protesters holding various signs stands in an urban setting. The signs display messages about democracy, power balance, and political accountability. People are dressed for cold rainy weather.

A group of people is gathered outside the Portland City Hall building in the rain, participating in a protest. Some hold signs with messages like β€œTrans Lives Matter” and β€œTrans Youth Deserve Healthcare.”

A group of people are gathered in a street protest. Many are holding signs with various messages, and a transgender pride flag is prominently displayed in the foreground.

A street protest scene with people holding signs. The signs express messages about economic inequality, such as “The only dangerous minority is the rich.” Some participants wear rain gear and backpacks, standing on a wet sidewalk.

A group of people gathering for a protest on a city street corner. They hold various signs, one of which reads “Make American Science Great Again.” Other messages on signs include opposition to concentration camps and other political statements. The scene is active and crowded.

A group of people are gathered on a rainy street engaging in a protest. The sign on a car reads “STOP THE COUP!” Some individuals hold cardboard signs, and others are dressed in rain gear.

A snowy street scene featuring a person walking on a snow-covered sidewalk. The trees and ground are blanketed in snow, with a small house partially visible in the background and some parked cars on the street.

Snow day in the neighborhood.

Portland, Oregon. 14th February, 2025.

Three children push a very large snowball on a snow-covered street. Several parked cars are visible, with snow on their roofs. In the background, a person stands near a house with trees and stairs, also covered in snow.

Two people stand on a snowy street. One of them is holding a dog on a leash, and a baby. The dog is wearing a purple coat. They’re in front of a house with snow on the roof.

A snowy residential street with houses and cars covered in snow. A person pulls a child on a sled while another child walks in front of them, and a person dressed warmly walks on the sidewalk. Bare trees and power lines are visible.

A shovel lying on snow-covered ground with visible footprints around it. There are several snowballs scattered near the shovel.

Snow-covered street scene with a turquoise house, chain-link fence, and parked red car. A person wearing a black jacket and orange hat stands near a dark green house. Bare trees and overcast sky.

My Valentine

A woman is sitting in living room wearing a “Portland Marathon” sweatshirt.

My valentine, my wife of nearly eleven months, is such an inspiration to me in so many ways. She inspires me to be a better husband and man, and to take better care of myself.

I want to especially call out her incredible determination over the last couple of years to running regularly. She took it upon herself to start running again after a long pause. I recall how hard it was for her to train up to running her first 5K, and then her first quarter marathon. Later that same year, with an amazing effort, she ran her first half marathon, followed one year later by her second one.

These days a 5K is just a regular run, which blows my mind. Through all the seasons, and injuries, she is going stronger than ever.

❀️

A woman jogging on a paved path surrounded by tall grass and trees. The scene is in black and white, with overcast skies and a wooden fence lining the path on one side.

πŸ› οΈ Long Workbench

After building storage shelves towards the end of the year, I turned my eyes to the other side of that area and decided to build a workbench there. The idea being that it would house my new 3D printer, and also have room for other projects that I didn’t want to do in the dusty environment of the woodworking area. I drew up a rough plan on a photo and it came to 12 feet by 2 feet.

A workshop wall with a pegboard holding tools on the left. Centered is a computer setup with cables and networking equipment mounted on wooden panels. Overlaid on the image is a green and black sketch of a structure.

Its frame would be made of 2x4 lumber held together with pocket screws (a first for me, so I went and bought a jig!). The top would have two layers of 3/4" plywood. It didn’t need to be fancy, so I decided to use more of the same birch plywood I’d used for the storage shelves.

A woodworking setup featuring a Kreg pocket hole jig with a piece of wood clamped in place, showing two drilled pocket holes. A Makita cordless drill with a drill bit is nearby, along with a tool bag containing various tools.

Installing the frame was a little bit tricky but I managed to do it by myself by stacking some boxes for support, and attached it to the bare studs with lag screws.

A wooden frame structure, possibly a tabletop or workbench, is mounted on a wall. It is supported by storage boxes with yellow lids. A level tool rests on the frame.

Then it was time to make the front legs. The floor in the basement is not only not level but also has lumpy concrete in some spots. So each leg had to be constructed by trial and error for the place it would stand.

A wooden workbench situated against a pegboard wall in a garage or workshop.

Now I was ready to build the surface which had a base, and a top. The base went on pretty quickly. I screwed down from the top to attach it to the frame. The top was made of the same plywood but I finished it with two coats of polyurethane using a spray. Spray was a bad idea, but more on that later. I installed the top by screwing up from underneath the base.

After a week I started to build the other half. It was the same process but due to issues with the studs, I had to cut a couple of dados.

A close-up of a woodworking joint showing two intersecting wooden beams, with precise markings and measurements on the wood.

The rest of it went smoothly, and I lined it up as best as I could with the first half.

A wooden workbench frame inside a workshop or garage. It is constructed with natural wood and secured with screws. The wall has pegboard and exposed studs.

Next I fastened 2x2 boards all along the edges, and mounted a strip of the same plywood along the back, and with that, it was completed.

Workshop setup with a wooden workbench, a fabric enclosure labeled “TOPCUBE,” with a 3D printer inside, and a network rack with cables on the wall. Yellow-lidded storage bins are underneath the bench.

So far I don’t feel the need for all the legs I had in the sketch, but I can add more if needed.

Lessons were (hopefully) learned. Mainly to not use spray poly to finish a large flat surface, and also not to do it in the house, even if it was in the rough basement. I finished the second one in the shed.

A monochrome photo depicting a cozy living room scene. A person covered with a blanket is sitting on a couch. A cat is perched on the back of the couch, looking towards the person. Sunlight creates patterns on the wall.

Good morning. 6th January, 2025.

πŸ“· Hasselblad 500C/M
🎞️ Cinestill Double-X (ISO 200)

A black and white photo of a fallen, decaying tree trunk in a forest. The textured bark and exposed wood are prominently visible, surrounded by leaf litter and foliage. Trees can be seen in the blurred background.

Laurelhurst Park, Portland, Oregon. 9th November, 2024.

πŸ“· Hasselblad 500C/M
🎞️ Cinestill Double-X (ISO 200)

Black and white diptych of a park scene. The left side features a large, gnarled tree trunk with branches extending outward, surrounded by other trees and fallen leaves on the ground. The right side shows a tree with dense foliage, fallen leaves revealing a pattern of concentric curves.

Laurelhurst Park, Portland, Oregon. 9th November, 2024.

πŸ“· Hasselblad 500C/M
🎞️ Cinestill Double-X (ISO 200)

A black and white image showing the corner of an old building with large windows. The building’s surface is weathered with visible textures and shadows. On the left, leafless tree branches extend into the sky, creating a stark contrast with the structure.

Black and white image of Ankeny Square featuring an elaborate archway with three arches. The scene is framed by bare trees, casting intricate shadows. A skateboarder is silhouetted, partially visible near the arch.

A black and white image of a city street with leafless trees and a building in the background. A person is walking on the sidewalk. Street signs and lampposts are also visible.

Trees and nearby structures were catching my eye on a little afternoon walk in downtown. Portland, Oregon. 25th January, 2025.

A colorful RV with vibrant graffiti-style artwork is parked on a street. Behind it, a building with red walls features large windows and graffiti art, including the word “LORDS” and other abstract designs. A smaller car is parked nearby. The scene is lit by the warm glow of the morning sun.

A street corner with a blue building featuring a yellow door and several windows. A vintage pickup truck is parked nearby. Visible signs advertise ice cream. Power lines cross the sky, and a pedestrian crosswalk with traffic lights is in the foreground. The scene is lit by the warm glow of the morning sun.

A bagel sandwich with egg, sausage, cheese, tomato, and other fillings is placed on a table in a lined basket. Beside it is a blue plastic cup and a napkin holder. A small potted plant is in the background. The sandwich is lit by the warm glow of the morning sun.

Morning walk on Foster Road to get a bagel sandwich. Portland, Oregon. 18th January, 2025.

A cat in a harness sits on a porch railing, looking up at a hummingbird near a red feeder. The porch has a hanging bell and decorative elements, with a background of a yard, trees, and a neighboring house.

Friends.

A black and white landscape photo of tall trees silhouetted against a cloudy sky. Below the trees is a view of a town with rooftops and more trees stretching into the distance. The sky is mostly cloudy with some brighter patches and dramatic cloud formations.

Mt. Tabor Park. Portland, Oregon. 12th January, 2025.

A new version of Mimi Uploader is out with even more support for Photo Collections πŸŽ‰

The previous release had the ability to see your list of collections. This new one adds the following features:

  • Add photos to collections from the list of recent uploads. Tap and hold a single photo, or use the “…” menu on en entry that has a batch of photos to add them all.
  • Delete a photo from a collection. When browsing a collection, tap and hold on a photo to see the option to delete.
  • Create a collection. Just tap “+” on the collections list.

I’m finding this way of managing my collections to be great. Hope you like it too!

You can get Mimi Uploader for free from the App Store.

As discussed in a previous post, the Photo Collections feature is only available to Supporter. You can become a Supporter using the sliding scale in the app.

I enjoy podcasts but I got the feeling I was listening to a lot of tech. In 2024, I reduced the time to about 50%. In 2023 they were close to 65%.

The image shows a 2024 summary of top nine podcasts listened to in Overcast, with a total of 288 hours spent, 156 of which were in tech podcasts.

Maybe I can get it down to 40% this year.

I’m listening to several at 1.5x speed now. I was very averse to that a few years ago.

πŸ› οΈ Basement Storage Shelves

Over the last week or so I designed and built freestanding storage shelves in our basement. Inspired by this video, and other similar ones, I decided that I would give it a go.

The basement had become a mess of stuff, about 70% of which was worth keeping. So we started by re-organizing what we wanted to keep and the rest we discarded/donated/gave-away.

On the 23rd I drew up the plan, and we went and bought the first set of materials from a neighborhood building material store, which has amazing people. Then came the holiday, so I didn’t start to build until the 26th.

A photo of a basement wall with outlines for a shelving unit sketched on it. A black storage bin with a yellow lid sits on the concrete floor.

The first set took a while to make as I was new to it and wanted to make sure I got the measurements right as we had already got the plywood cut at the store. On the 27th I put the first shelf together.

Wooden storage shelves in a basement, holding yellow-lidded plastic containers, rolled-up fabric, boxes, and folded items. To the left, there are suitcases and folded tables. The background features a concrete wall and a window.

The design allows for expanding on either side, so right away I built an extension. This time it went really fast, even with a drive to the store to get more materials.

This second set had only two shelves that were half as deep so we didn’t block the window, and also Jenni could place her paddle board bag vertically to easily pick up or drop off. I noticed that the there was a sag on this shelf, so later I added a strip of wood for additional support.

Wooden shelves in a basement with various storage items. Black and yellow plastic bins line the left shelf. A rolled-up fabric item sits on top. A large blue and black backpack, clear plastic bins with tools and supplies, and smaller blue bins are also visible.

On the 28th I built yet another extension. This time I didn’t have enough plywood for three levels, so for the time being it only has two, but hey, those box fans fit nicely in there.

Wooden storage shelves in a basement with various items organized on them. Black and yellow storage bins, a wrapped blanket, a large backpack, stacked boxes, a covered item, clear plastic bins with contents, a power tool box, and two box fans.

Yesterday I completed another extension and that should be good for our current needs. From one end to another these shelves are 15 feet (~ 4.5m)

Wooden shelving units in a garage storing various items, including black storage bins with yellow lids, a rolled-up item, a large backpack, plastic boxes, a box, etc.

I will observe how it performs, and have ideas to add more structural support if needed.

I’m really happy with how these turned out, and with our efforts, the entire space looks and feels so much better already.

P.S. As I was building this I also organized my basement shop that I hadn’t used in a long time, including installing these wall-mounted shelves to hold lumber.

P.P.S The end posts are also 2x4s, but they look like 4x4s in the photo, likely due to distortion from the use of an ultra-wide lens.

Happy New Year! πŸ₯³