Archives

Blog index

Blog

  • Week of November 20, 2023


    I’ve been mostly offline this Thanksgiving. I haven’t checked anything for work, checked Twitter (or Mastodon, Bluesky, or Threads), read my RSS feeds, or checked any news sites. I did play Wordle, text some friends, and research microwave sales (the power supply on ours died). This was good for me, and I think I need to keep it going on weekends as much as I can.


    Weekly Charlie photo dump.

    Charlie likes learning about things, and recently anything with an engine is interesting to him. So I thought, why not show him our car’s engine? He liked it. He also loves starting the car whenever we go somewhere.

    We joined the Richer family for Thanksgiving this year. It was nice enough that some of us opted to sit outside. Charlie and I also took a walk. Amanda and I were in charge of vegetables, so we made a dish of roasted butternut squash and a dish of roasted root vegetables (parsnips, rutabaga, onions, carrots, celeriac, and potatoes). With the leftover root vegetables we made a shepherd’s pie on Friday.

    Charlie took his first train ride this weekend and he loved it. We took a short 20 minute ride up to Cold Spring to see how he’d do. Since he liked it so much, we think rides down to Manhattan are doable.

    Charlie likes shopping at wholesale clubs.


    I feel imbalanced.

    • I frequently work evenings after Charlie goes to bed.
    • I’m not reading as many books as I’d like.
    • I feel a little bit stuck at work.
    • We have some house & property projects we need to figure out but keep putting off.
    • I find the two year old phase as challenging as it is gratifying. Watching Charlie learn and encounter the world for the first time is incredible. Teaching him new things is gratifying. Yet, the tantrums that come with him pushing the boundaries of his independence are incredibly frustrating. These past two weeks have been tougher than usual. Amanda and I are exhausted.
    • My friend Jon asked me during Thanksgiving whether or not I’m turning any Christmas ornaments this year. I sheepishly said that I wasn’t and didn’t have time, but that didn’t sit right with me and bothered me the next couple days. I haven’t made much in my workshop since Charlie was born.
    • I feel in a rut with what I’m cooking for dinner regularly.

    In short, it is time to make some changes.

    • I signed up for Automattic’s coaching program and scheduled my first couple coaching sessions.
    • I spent a couple hours this afternoon cleaning my workshop, which I used as storage for most of the past two years.
    • I made chicken stock tonight for the first time in almost a year.
    • I reached out to my friend Scott Scharl about going through The Imposter’s Handbook together in the new year.

    More I need to figure out:

    • Get in a regular stretching routine so I don’t feel so tight all the time.
    • Get back to regular meditation to help deal with frustration and anxiety.

    I almost didn’t blog this week, but I think it is important to keep documenting things for my future self and keep putting things out there to start conversations.


    I think a new theme is in my near future. Maybe using TT4. I’m trying it out for a project at work, so we’ll see how I like it. Looking at the current patterns, I think it needs one for a standard blog homepage with full content posts, so perhaps I’ll open an issue and put in a patch.


    I’m sipping a Fall Back from Sasha Petraske’s excellent posthumous book, Regarding Cocktails, while writing this.

    • 1oz Rye
    • 1oz Apple Brandy
    • 1/2oz Amaro Nonino
    • 1/2oz sweet vermouth

    Stir in a mixing glass with ice, strain over fresh ice into a rocks glass.


    I started this year’s versions of 100 things and 40 questions. Doing them gradually over the next month should be easier than trying to jam in them between Christmas and the new year.

  • Weeks of November 6 and 13, 2023


    Busy couple of weeks. I didn’t write last weekend because I spent the whole weekend doing work around the house: Putting things away for the winter and mulching in the leaves outside, and moving things in the basement, garage, and attic in preparation for getting foam insulation in those spaces.

    We were out of the house Wednesday through Friday morning to let the foam set and outgas. We got an Airbnb here in Peekskill. The house we stayed in was built around the same year ours was built, but not as well maintained. The basement was damp and dingy, the paint was peeling on a lot of trim, the floors were largely unlevel, and it had a base smell of old cigarettes (though obviously covered with a lot of primer.) It makes me thankful for our home.

    I’m really looking forward to seeing what kind of difference the added insulation makes. Before we had bare rafters in the attic! I also need to put the weatherstrip on the doors and windows. The goal was to cap off the main place where heat was escaping (roof) and the weatherstrip will deal with the incoming drafts. Then we’ll reevaluate.


    I’ve been bouncing around a lot with my book reading, starting lots of books that haven’t stuck. I think I’m scrolling too much on social media again. I started a new book (Candle by John Barnes), which I’m now halfway through. I credit that to putting my phone on the other side of the room while reading this week.

    Attention span is a muscle and sometimes it needs retraining.


    With it getting dark so early, it is time to start prioritizing morning walks again, as well as restarting my D3/K2/magnesium supplements.


    WordPress Site Editor question: I know how to set default site-wide padding for certain blocks, but how do I pick which block style is default for the site? For example, for the Separator block, I want to set the Dots style as the default.


    We attended a Friendsgiving at Meg and Jeremy’s on Saturday. Amanda baked a Milk Bar Pumpkin Pie cake, I made a punch bowl, and we made a sweet potato side dish. The kids provided the music.

    We had a nice sous vide pork shoulder, pastrami and rye dressing, roasted potatoes with fennel, homemade butter, crusty bread, and roasted cabbage. Good meal!

    An appetizer I enjoyed more than I expected was breaded and baked Boursin, served with water crackers. IMO much better than baked brie.


    Charlie got to ride a pony again today after Amanda’s lesson. He was excited about it for the past three days. The English saddle was hard for him to hold on to, probably need a Western next time. I bet he will want to take real riding lessons in a couple years.


    More Charlie photos from this week:

    This NY boy loves a bacon egg and cheese.

    Charlie loves to be included and help with whatever we are doing. While we were picking the last batch of tomatillos for the season, I noticed that he liked peeling the paper off the outside, so when it came time to wash and peel them, I asked him to help. It kept his attention the entire time and he helped with the entire bowl. Afterward, he enjoyed sorting them into two different bags. (Ignore the messy sink and kitchen. We did dishes after Charlie’s bedtime, I promise!)

    The Peekskill Library has a children’s room with lots of great books. Charlie enjoyed picking some out this week, so I think we’ll be there a couple evenings a month. We discovered that the deli the next block over also makes a great chicken over rice platter (which Charlie absolutely houses), so we go there afterward and pick up dinner.


    This OpenAI situation is wild. I don’t have any commentary other than I’m looking forward to finding out more real details about why sama was ousted. Did Ilya get spooked by new research, try to pump the breaks while Sam charged forward, and coordinate the board to push Sam out?

    Looking forward to more El Yud hot takes.

    I love that the firing went down over Google Meet. Even OpenAI with Microsoft as a huge investor, doesn’t use Microsoft Teams 😆


    I took apart my dryer for the first time today. It started making and awful squealing noise, which my Dad said is most likely the idler pulley. Changing that requires taking the whole thing apart, including pulling the drum out. I’m thankful that there were a few YouTube videos to watch and that Dad was available to FaceTime a couple times to answer my questions and talk me through a couple steps.

    I wish I had paid more attention watching Dad take dryers, refrigerators, and ovens apart while I was growing up. Half the battle was trying to get the thing taken apart in the first place, and having seen someone do it would have made replicating that easier. That said, I probably did see Dad do that a couple times (I know I was always by his side, holding the flashlight, and interested in what he was working on), but seeing something 20+ years ago is tough to recall. I guess so much of learning is doing something yourself and figuring it out. Next time it will go a lot faster because I figured it out this time.

    Charlie woke up from his nap and wanted to check it all out. I always appreciated my Dad being patient with me and showing me how stuff worked, so I took some time to show Charlie. He helped blow out the blower housing with the air compressor, too.

    I’m surprised that old dryers, especially gas ones, don’t catch on fire more often, given how much lint gets past the lint screen and packed around the blower assembly and in the bottom. I took some time to vacuum the whole thing out and blow out the blower housing with the air compressor while I had it all apart.

    When I put it back together, the squealing was gone, the drum still turned, and it heated up, so I think I did it right.

    Charlie wanted to help me put the screws for the control unit back in. “I fix dryer too!” I got the final screws started and let him finish them.

    I made a Digital Garden page for this:


    I’m really excited about FeedLand‘s implementation of Reading Lists. The general idea that you can subscribe to an OPML file of feed URLs that gets regularly polled and resynced. So you are subscribing to a list of feeds rather than individual feeds, and you see the items from the feeds on that list in your reader. Cool stuff.

    Since FeedLand generates OPML for each user, I’m also able to subscribe to other people’s subscription lists and their changes flow downstream to me. I’m busy subscribing to as many blogrolls in OPML format as I can find. That is where the best stuff comes from.

  • Notes on making a Digital Garden with WordPress

    Andy Sylvester wrote me asking about my digital garden:

    I followed links to your site from Dave Winer’s Scripting News site, your digital garden site is cool! I am interested in what theme you started with to create that site.

    Andrew Shell has developed some tools for creating feeds for Federated Wiki installations (https://feeds.fedwikiriver.com/). I am interested in your thoughts about how to create feeds for wikis.

    Andy Sylvester
    andysylvester.com

    Thanks, Andy! I hope you don’t mind me writing a full post as a reply instead of an email. I’ve received other questions about this recently and I find it useful to document this stuff so it is searchable and linkable.

    If you want to use the theme and templates I’ve set up, I can try to package it up for you. I didn’t want to do that here because it isn’t in a state I feel comfortable releasing publicly, but happy to share it privately and get your feedback on what would be good to add. I consider it an ongoing experiment and subject to change at any time.

    Theme and templates

    For notes.cagrimmett.com I used the Blockbase theme. I picked that one because it is barebones but has nice Site Editor support, and I didn’t want to fight existing conventions. I wanted something that would stay out of my way but give me modern WP tools.

    If I were to do it again, I’d probably use the new Twenty Twenty-Four theme. It is super flexible and has the lastest-and-greatest Site Editor and blocks support.

    As you can tell, I’m all-in on the block editor.

    If you haven’t used the Site Editor yet, the main way it differs from classic themes is that it gives you the ability to customize templates right in the block editor, which is very powerful.

    I customized the templates in the Site Editor for the Blockbase theme, so I thought I’d call those out:

    • Homepage
      • I have two lists at the top of my homepage: Recently Created and Recently Updated.
        • One is a list generated by published date and one is a list generated by post modified date. I like to be able to see not only what is new, but what has been updated recently. I use the more powerful query loop in Generate Blocks to sort by post modified.
        • In the garden metaphor, I think of these as Planted and Tended.
      • Page Index
        • I opted to use Pages instead of Posts because I liked the hierarchy of Pages and thought I’d use that. I think this might have been a mistake and I’m considering moving everything to Posts and forgetting the hierarchy altogether. The hierarchy does make things easy to find, but so would better tags and categories.
        • I do have some private pages that only I can see when logged in, so there is a section on the homepage for that, too.
        • This is generated by the Page List block. If I moved to posts, I’d probably have a bunch of query loops for different categories.
      • Categories
        • Self explanatory
      • Tags
        • Self explanatory
    • Single Page
      • At the top I’m trying to surface relevant metadata:
        • Hierarchy (basically breadcrumbs from the hierarchical pages)
        • Categories and Tags
        • Published date
        • Last Modified date
      • Some pages have a sidebar with links to child pages to try to show the note’s context within a similar group. I don’t think I’ve nailed this yet.
      • Pingbacks and trackbacks to surface cross-linking between posts. I don’t think the bottom is the right place for this… I think I should put this in the sidebar instead.
        • Cross/backlinking are handled via enabling trackbacks and pingbacks on pages.
          • add_post_type_support( 'page', 'trackbacks' );
        • I use Webmentions here, too!

    Plugins

    • Tags are topical and freeform, auto-linked by TaxoPress
      • TaxoPress only has posts turned on by default. You need to go into the settings and enable for pages.
    • Making use of the GenerateBlocks plugin, which has a great replacement for the core Query Loop block with the ability to customize the query just like you can in code with WP_Query
    • Breadcrumbs via Breadcrumb NavXT
    • Redirection to monitor permalink changes so I can easily reorganize things without breaking links.
    • Webmentions as an addition to pingbacks and trackbacks for the indieweb.
    • Post Modified Time Block for easily displaying the post modified date on a page
    • Bookmark Card for nice looking bookmark cards
    • Child Pages Card for displaying child pages in the sidebar

    Feeds

    I am interested in your thoughts about how to create feeds for wikis.

    I have some thoughts in the WordPress ecosystem, and some cross over to wikis.

    • WordPress has incredible feed support already. Categories, tags, and search queries have their own feeds, which is quite helpful for people only interested in subscribing to certain topics.
      • Wikis have categories, so they could have category feeds, too.
    • Pages do not have feeds by default, but you can add them with this plugin: https://wordpress.org/plugins/rss-includes-pages/
    • It would be great if RSS feeds could surface updates to existing content, too. I’d like a feed for my recently updated list. My colleagues at Newspack have a plugin that includes an <updated> tag, which is a step in the right direction. It might require a different sorting mechanism for the feed reader. I’ll float it by Dave for FeedLand 🙂
      • Wikis have a great history page, so it is theoretically possible to have an updated element in the feed for the most recent updated time.

    Future additions/ongoing work

    • I want to better surface cross-linking within the site and inbound links from around the internet.
    • I want neat previews for outgoing links. Transclusion. I have some code for this that Jeremy Felt wrote for perell.com, but need to integrate it.
    • I want better context. On each page I want to show related content by category and show page ancestry siblings rather than just children. This would be easier if I moved to posts rather than pages.
    • I want to show revisions and/or changelog to show how notes have changed over time. I’m working with the WordPress Gutenberg team to figure out how to do this.
  • Apple Shortcuts for posting to WordPress via the REST API and XML-RPC MetaWeblog API

    Jim Willis asks,

    it seems that the iOS WordPress app’s “Post to WordPress” is no longer working, so I’d like to fallback to the rpc endpoint. Any chance you could share a link to your shortcut so I could take a look what you did here?

    Certainly! I’m replying as a post because I think it might help other people, too.

    I made two versions, one using the REST API and one using the XML-RPC MetaWeblog API.

    REST API

    Docs for making posts with the WordPress REST API: https://developer.wordpress.org/rest-api/reference/posts/

    Shortcut link: https://www.icloud.com/shortcuts/182b3a80dff54b27a4d7464cfc139b81

    How it works:

    • Takes input for a title and content. These are turned into variables.
      • If you don’t want a title, you can change this, but make sure your theme supports not having titles.
    • When you first set up the shortcut, add your username and an Application password in the format: username:password in the provided text block. This gets base64 encoded and passed to the cURL request as a basic authorization header.
    • The Get Content of URL block makes a POST to /wp-json/wp/v2/posts (Update your domain here!)
      • The variables for title and content get passed into the appropriate key in the JSON request body. I included title, content, and status, as those are the three that are needed. You can include tags, categories, slug, excerpt, etc. Anything in the docs. All pretty simple, you just need to make more variables and pass them along in the JSON body.
    • I included a block that gets the link back from the successful POST and prompts you to view it. Feel free to remove it if you don’t like it.

    XML-RPC MetaWeblog API

    Docs for the WordPress XML-RPC MetaWeblog API: https://codex.wordpress.org/XML-RPC_MetaWeblog_API

    Shortcut link: https://www.icloud.com/shortcuts/4a199bb32d654721a4aac9a773c664f1

    How it works:

    • Takes input for a title and content. These are turned into variables.
      • If you don’t want a title, you can change this, but make sure your theme supports not having titles.
    • When you first set up the shortcut, add your username and an Application password in the provided text blocks. These get turned into variables and passed to the XML that we send to xmlrpc.php.
    • The XML is stored as a text block, which is then turned into a variable and passed as a file along with the request.
      • I only included the username, password, post title, and post content, but you can add whatever is supported by the API. You just need more variables and more members of the struct.
    • The Get Contents of URL block makes a POST to the /xmlrpc.php endpoint (change the value for your domain!) with Content-Type of text/xml and the request body as a file.

    If you run into any issues, let me know! I’m happy to help.

  • How can we keep domains working long after our death?


    Dealing with your digital legacy after your death is a big issue, and one that requires a lot of thought and a lot of problems to be solved, so let’s break it down into smaller pieces and think about them individually. This post is primarily a collection of thoughts about dealing with the problem from the domains side, not hosting. Hosting is a problem for more posts.

    The internet isn’t that old and most of the pioneers are still around. But we can see the wave coming, so let’s try to solve this problem before it breaks.

    Registry limits

    Registrars should offer the ability to register domain names for a very long period of time. Currently the max is 10 years. That max should be removed.

    Community-driven

    What about a community/reader-driven approach? What if there were a widget on the website showing the current expiration date for the domain and the ability to donate money to the renewal. Everything can happen automatically and any amount can be donated. Once enough money is raised to renew for another year, the renewal is processed automatically. With the max cap raised, popular sites can be renewed for decades in a short amount of time. This seems like something registrars should be able to support.

    Charity registry

    What if we start a 501c3 registry that people give their domains to and the foundation takes responsibility for keeping them renewed? Call it the Longevity Registry. This feels like something the Long Now Foundation would be open to, perhaps in concert with Wikimedia Foundation or the Internet Archive. It would need a fundraising arm and a rock solid set of tools.

    They would also be responsible for deciding where the DNS gets pointed, which is another problem. They could have a set of processes for determining that. They could also put together a bunch of boilerplate legal docs that people can include in their wills to transfer domains to the Longevity Registry after their death.

    Host files

    Alex Kirk had a great idea: Remember the early days of the internet where people passed around host files? How about doing the same for domain names after someone dies? Call it Open Registry and make a Chrome extension for it. For most people, making their site static and sticking it on GitHub Pages and adding an entry in Open Registry might be enough. We wouldn’t need access to their servers as long as we can make a good enough scraping bots to pull down everything.

    Related to this, what if we could point the domain at its archived version at the Internet Archive? We’ll have to pitch this to Mark Graham. This feels like a “keep the links blue”-type project. More on that in future hosting posts.

    I’m sure there is more I haven’t considered yet. This is meant to be an open dialogue. Please post your comments, or write a response with ideas on your own site.

  • Week of October 30, 2023


    Back to work. It was a jarring rentry. The very first thing I saw when getting online Monday morning was a ping about an issue that had major customer impact. Talk about getting the adrenaline pumping.

    It turns out GitHub and Cloudflare both had even bigger issues this week, too. And the time change didn’t even happened yet!

    Not the smoothest week in the tech world.


    Trick or treat was fun this year. We went to a friend’s house in Lake Peekskill and trick or treated as a group. Charlie really got into it and was pretty conscientious–he generally only took 1 piece of candy per bowl, and understood that it was communal, so he didn’t get upset when there were other people getting candy before and after him.

    He dressed up as a cow (Amanda made his costume!) and Amanda and I dressed up as farmers.

    We are really thankful for the friend group we have here. Really thankful.


    Unfortunately, it looks like Charlie picked up RSV at daycare, so the end of the week and weekend has been tough. Tired, sick toddler with tired, stressed out parents.

    I made this easy chicken noodle soup on Friday and I think it will be a new go-to when someone is sick. It is delicious and takes only 30 minutes to make. The secret is using ground chicken to speed up the process and retain flavor.

    Easiest Chicken Noodle Soup Recipe – NYT Cooking
    The majority of shortcut chicken soup recipes use rotisserie chicken It’s a convenient hack, but cooked chicken doesn’t absorb flavors very well On the other hand, sautéing ground chicken in olive oil with garlic, coriander and celery seeds (or fennel seeds and rosemary, or herbes de Provence) creates a deeply complex base
    cooking.nytimes.com

    I made some quick sheet pan meals this week, too. We have lots of sweet potatoes from the CSA right now, and those are quick to roast (peeled and 1in dice, 425F for 30 minutes) and tasty with paprika, garlic, and salt. Would probably be good with eggs for breakfast, too. Maybe I’ll do a breakfast sheet pan with sweet potatoes and bacon this week.


    One of my favorite new follows on Twitter is Nico Chuan, who posts great in-progress photos of his carving process. I’ve learned some things about the process just from his photos that I hadn’t quite figured out in my head.

    New favorite follow on Instagram: Ethan Neiderer, who makes skin-on-frame St. Lawrence River Skiffs. I thought they were ADK guideboats at first because they are so similar. The differences: No bottom board, all ribs are bent instead of laminated, and slightly different style of stem and deck. I’m comparing notes with Ethan soon and thinking of designing a hybrid style that combines the benefits of both the ADK guideboat and the St. Lawrence River Skiff. Not having to laminate all those ribs would save a tremendous amount of time and effort.


    Starting the winterization process. I pulled the last of the ACs out of the windows today, swapped the screen door for the glass one, and picked up some weather strip, weather seal, and foam kerf for the windows and a few doors. I plan to put that on tomorrow.


    I feel horribly behind on my reading and writing. I know that is all self-imposed, but I feel behind none-the-less.

  • Weeks of October 16 & 23, 2023


    While hunched over in my IKEA Poäng chair looking at my laptop, I thought, “I wish there were a desk for this chair.” So I fired up my web browser and typed in the magic incantation, and Bateman Labs makes one!

    I bought it, Charlie helped me put it together, and I love it. It has improved my posture and it makes a nice alternative to my standing desk.


    Using FeedLand I created a News Product for Peekskill with all of the local and city news feeds I could find. Check it out at https://peekskill.news/

    Future updates to make:

    • Split the feeds into tabs: All, City, Local news, Area news (like River Journal North, etc).
    • Figure out how to pull in Twitter and Instagram feeds. This probably requires me setting up a service to make feeds on one of my servers.

    Gabriel Sim-Laramee remixed one of my Sol LeWitt wall drawings that I did in javascript. Pretty cool!


    I spent a week in Málaga, Spain, for work. We had a Division Meetup (here is last year’s in Denver) with ~250 of our coworkers. It was a great time!

    • I gave a workshop on using Grafana and Logstash for tracking down problems.
    • I gave a flashtalk on FeedLand, a project we’re working with Dave Winer on.
    • I got to meet and chat with a bunch of cool people I haven’t met in person before, including Alex Kirk, proprietor of Friends, and Matrix guru.
    • I attended a lot good sessions and workshops, and collaborated across different divisions of the company. This is always pretty valuable for us.
    • A group of us walked down to the Mediterranean sea one night and jumped in. The water was a brisk 65F.
    • We got some free time to visit the Picasso Museum and walk around the city center, where I picked up some torrons from Vicens. I also got a smashed 5c piece to add to my smashed penny collection.
    • I ate my weight in jamon.
    • The way there and back was mostly uneventful, though I traveled about 20 hours each way. I do not love that. I read part of a book on the history of Spain of the way there, then watched a full season of Yellowstone on the way back.
    • We had so many people flying in that I saw my coworkers at multiple connecting airports: NYC (JFK), Amsterdam, and Paris.
    • I played beach volleyball!

    While I was gone, Amanda did a trunk or treat at Charlie’s daycare. Charlie wanted to be a cow, so Amanda went with a farm theme.


    When I got back, I spent the next morning with Charlie at the playground, and there was conveniently a construction site close by for us to watch. They are redoing an old football field and putting in pickleball courts and a new track. Charlie knows all of the construction vehicles!

    I then went down to Manhattan that night for a surprise birthday for Chris Johnson at Caledonia.


    Sunday Amanda and I met Meg, Jeremy, and Miles at an indoor halloween event in Elmsford. The boys had Jedi costumes. Last year that they dressed up as Mario & Luigi.

  • Digital gardens need RSS


    I was emailing with Aaron Young tonight about his digital garden and why I like to follow RSS feeds for digital gardens.

    Blogs these days are too polished and people don’t post enough on them. Old blogs used to be much more experimental and something that folks posted to multiple times a day without giving it a second thought.

    Now public digital gardens are much more interesting, IMO. People capture what they are researching, working on, and thinking about, and I usually find RSS feeds for peoples digital gardens much more interesting than I find their blogs.

    There is a much higher rate of discovering new things and interesting ideas in digital garden feeds than blog feeds. People generally write blogs for others first, whereas they write digital gardens for themselves first, and that is where the magic is 🪄

    Sadly, a lot of really cool digital gardens don’t have RSS feeds. They should. Think of it as an interop layer for your notes, allowing not only you to make connections between your notes, but other people to make connections, too. They should have pingbacks or webmentions, too, so you can see those connections and links.

    I’ve added all of this to notes.cagrimmett.com, my digital garden built on WordPress. Still, lots to improve there. I view it as a long-term project, something I want to exist for the rest of my life and hopefully beyond it, and I make it just a little bit better every day. I need even more interop on there as well, essentially being able to publish there from every other tool I use. I’ll get there.

  • Week of October 9, 2023


    Charlie had Monday off from daycare for the holiday, but Amanda and I had to work, so we switched off every couple hours. Charlie and I started off the morning by going to the coffee shop, picking up some cheese at the grocery store, and watching trains at the train station. We also played in the yard for a while before naptime. Charlie and Amanda decorated small pumpkins.

    That evening some friends had us over to carve pumpkins and have a bonfire.

    Monday was a great day for Charlie.


    The Whole Earth Catalog is now available online. Incredible resource to have archived. Here is how the online archive came to be.


    I’m fascinated by the image prompt injection people are doing with GPT-4V. Much more interesting than text prompt injection, IMO. Simon Willison has a good post up about itArchived Link.


    Neighbor spent all day lowering his car (a Subaru WRX, I think). Now he can’t get it in or out of the driveway without it bottoming out. So far he hasn’t lifted it back up, he just lets it scrape.


    Reminder to change the cabin air filter in your car occasionally. You can usually buy them on Amazon and replace them yourself pretty easily.


    This Wednesday was the last Wood Fired Wednesday at Pizzeria Baci. Of course we had to go. The pizza was excellent as always, and this week Charlie decided that he likes pepperoni, which is new. He didn’t like it two weeks ago, but now he loves it. My man. He is the latest in the long line of Grimmett men who love pepperoni pizza.

    It helps that saying “pep per O knee” is kind of fun!


    Charlie’s daycare had their annual Fall Fest on Thursday. We had fun hanging out with some of the other parents and watching the kids be in their element. There were hayrides, animals to pet, hotdogs, and an ice cream truck.

    Charlie and Amanda laughing on the hayride

    Here is last year’s fall fest.


    Charlie has been working really hard at figuring out the stairs without holding on to the rail. He is getting pretty good at it.

    Charlie takes recycling very seriously.


    Another Saturday, another walk in the rain. Seems like it has rained every Saturday recently. Charlie doesn’t mind. As long as we have our raincoat and boots, we are good.

    This is Charlie’s walking stick.


    Charlie has shown even more interest in music this week:

    • Jamming daily with a little keyboard
    • Watching videos of different kinds of instruments with Amanda. It keeps his attention longer than most videos!
    • Playing with a ukulele at a birthday party.

    Saturday afternoon was Miles’s birthday party. Little guy turned two. We ran into Miles’s parents at the coffee shop when Amanda was ~30 weeks pregnant and Meg was ~22 weeks. Amanda used to work with Miles’s dad Jeremy and we didn’t know they moved up here to the Peekskill area. We’ve been hanging out ever since. When Charlie and Miles came along, they joined the hangouts. It is fun watching them grow up together.


    I put in some water sensors so we get a bit of warning if our basement gets water. One in each low spot where water seeps in first and one under the sink in the kitchen. (I’m still wary of my plumbing work on the glass rinser.)

    Decided to go with YoLink. I like that they use LoRA to connect to a hub that then connects to the internet instead of adding a bunch of new devices to my wifi network. There’s enough on there already.


    Amanda takes horse riding lessons. This week Charlie went and got to ride a pony, which he loved. Maybe he will take lessons in a couple years, too!

    Poor thing has its mane and tail dyed so he can dress up like a unicorn for parties. His name is Henry.


    I’m maintaining a couple news products on FeedLand that pull in posts form a bunch of sources:

    1. https://peekskill.news – Local Peekskill news
    2. https://wordpressne.ws – WordPress Project Updates

    If you want to make one for your local area or for your niche interest, let me know!


    I revamped my notetaking. (Yes, longtime reader, again.)

    This time I’m using Tiago Forte’s PARA method in Obsidian. Both seem to work better with my brain than previous approaches. I’m due to write a blog post about my Obsidian setup and which plugins and external capture tools I use.


    I’ve been staying up very late every day this week. Haven’t gone to bed before 1am. Lots of irons in the fire and it feels good. It has taken two years, but Amanda and I are starting to feel like ourselves again, with the added bonus of having a sweet kid in our lives. (Contrast that with mostly feeling like caregivers the last two years.) Our energy and sleep are improved, which helps give space for our interests, projects, and new ideas.

  • Week of October 2, 2023


    When telling a friend that we wish our house had more space, they helpfully pointed out that the nice thing about small houses is that families spend more time together rather than each person going to a separate space most of the time. That is a good way to think about it. Yes, alone time is important, but so is spending time together as a family, and the constraint of limited space is a benefit in that respect.


    Charlie is getting more adventurous, independent, and capable of advocating for himself. He expresses his wishes and needs more, tries new things, ventures further and further from us when out on walks, and spends longer periods of time in solo imaginative play.

    This week a kid ran into him at the playground and Charlie turned around and loudly said, “Scuu Me!”

    This phase does come with some challenges, especially when his wants conflict with what is possible, safe, reasonable, etc. Such is life.


    One morning the trash truck came a little early and we slept in a little later than usual. Charlie heard it, got up, and shouted, “Momma! Trash truck! Wake UP!”

    Trash trucks are serious business in this house.


    Our new thing at the grocery store is having Charlie scan our groceries at the self checkout. He loves it.

    It is interesting how our checkout habits have changed in the past two years. We went from only self-checkout pre-Charlie, to cashier checkout while Charlie was younger, and now back to self-checkout with Charlie scanning.


    Some random play moments: Making a vacuum truck out of blocks, learning how to replace batteries with a screw driver, and vacuuming together.


    I made some roasted red jalapeno pepper sauce this week with our garden jalapenos. It smells like roasted red peppers, but has a kick.


    I made some Chile Verde Pork on Friday, and to my surprise Charlie seemed to like it. It is quick and easy to make, especially if we have salsa verde on-hand from our garden tomatillos. We like to serve it over rice with some sour cream and avocado.


    We finally went to the Tuscana pasta factory in Peekskill and got some fresh ravioli, pasta, and sauce. We are very pleased. Why didn’t we go here sooner?! It is 5 minutes from our house.


    We wanted to do some fall farm activities this weekend, and even though it rained we decided to make the best of it. We’re glad we did because we all had fun.


    We had fun in the woods throwing leaves in the creek, exploring the textures of different kinds of bark, finding hickory nuts and acorns, and picking up sticks. 🍂


    More fall stuff.


    Reminder to myself to take the air conditioners out of the windows this week. Even though we had 85F weather this week, it now sufficiently cools down at night so we don’t need them.

  • Setting up PagePark on a DigitalOcean Droplet

    A couple days ago I asked Dave Winer how he was able to point news.scripting.com to a FeedLand news product, because CNAME records have to point to a hostname and can’t include a path. I wanted to point a subdomain at one of my own news products on FeedLand and couldn’t figure it out.

    The answer was PageParkArchived Link, a simple web server he wrote in 2014 to park his unused domains, and later expanded to include useful tools like serving redirects, content from GitHub and S3, and aliasing content from another site.

    I realized that I had to set that up for myself. I have a bunch of domains I don’t use, some old sites that I should just turn into a static archive and stick somewhere, and domains that I’d like to point to other services, such as FeedLand news products.

    That night I decided to set up PageParkArchived Link on a DigitalOcean droplet. I thought I’d write out the steps in case I or anyone else want to set it up on DigitalOcean in the future.

    Assuming you have a DigitalOcean account and are logged in:

    1. Set up a NodeJS droplet. I used DO’s NodeJS droplet template, which as of the time of this writing uses Node 18.12.1 and Ubuntu 20.04. I don’t expect to need a high powered server due to the low traffic to these domains, so I started with a $4/mo basic shared 512MB CPU with 10GB SSD and 500GB transfer. Basically the lowest tier.
    2. After the server came online, I SSH’d in.
    3. At the root, I cloned the PagePark repo: git clone https://github.com/scripting/pagePark.git
    4. Go into the pagePark directory: cd pagePark
    5. Install the app and dependencies: npm install
    6. Start the app: sudo -u root pm2 start pagepark.js
    7. Edit the nginx config to serve the app to the world. The default hello.js app that comes with the droplet is set to serve from port 3000. PagePark is set to serve from 1339, so we need to edit the location / block in nginx:
      • nano /etc/nginx/sites-available/default
      • Look for the block that looks like this:
    location / {
            proxy_http_version 1.1;
            proxy_cache_bypass $http_upgrade;
    
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
    
            proxy_pass http://localhost:3000;
    }
    1. That second to last line, proxy_pass http://localhost:3000; is what we want to edit. Simple change 3000 to 1339. The line should now read: proxy_pass http://localhost:1339;
    2. Exit and save: ^X to exit, y to confirm save, hit enter to save it to the same filename
    3. Restart nginx: sudo systemctl restart nginx
    4. Delete the default app included with the droplet: sudo -u root pm2 delete hello
    5. Schedule the PagePark app to run at launch and stop the default hello app from running at launch: sudo -u root pm2 save
    6. Point a domain at the droplet to use for easy CNAME pointing for other domains. I used pagepark.cagrimmett.com and pointed it via A record to the IP address listed in the DO dashboard under the project I added the droplet to > Resources > Domains.
    7. Back on the server, I went to ~/pagePark/domains and added a folder for pagepark.cagrimmett.com, then added an index.html with a simple message to test my setup. I also moved the ~/pagePark/prefs/error.html and ~/pagePark/templates/* to the pagepark.cagrimmett.com folder to make the accessible, then edited them and changed the path for the ~/pagePark/config.json keys for the following items to serve them from this server rather than Dave’s:
      • urlDefaultMarkdownTemplate
      • urlDefaultOpmlTemplate
      • urlDefaultErrorPage

    That was it! pagepark.cagrimmett.com started working, then I set up a couple more domains by adding new folders to the domains folder (follow the docsArchived Link) and adding a cname record for the domains to pagepark.cagrimmett.com.

    • peekskill.cagrimmett.com shows my Peekskill news product, running on FeedLand. It pulls in feeds from local news sources and the City of Peekskill.
    • sideproject.showArchived Link shows the contents of a simple markdown file
    • behindtheart.xyz – an interview website I set up on WordPress where I interviewed generative artists in 2021, then abandoned. I want the interviews to stay live, but I’m probably not going to do them anymore, so I generated a static site and put the HTML files here instead of keeping the WP site live. I’m probably going to do this with a few more old WP sites.
    • More to come soon!

    Thanks for open sourcing PagePark, Dave! I’m already finding it useful.

  • What non-standard items do you always travel with?


    Our remote team had an online social hour today that I hosted. We used to do a freewrite when I first joined the team (where everyone writes for 30 minutes then shares), so I decided to reboot that with this prompt:

    What non-standard items do you always travel with?

    Of course I have the regular stuff like Advil and my computer, but here are the things I travel with that I think are non-standard:

    • LMNT
      • This is electrolyte drink mix powder. I am chronically dehydrated, even moreso when I’m away from home and don’t have the constant reminder of a water bottle on my desk, so I drink one of these every morning when I’m traveling to stay hydrated.
      • I go with either the Orange or Grapefruit.
    • Instant Coffee
    • Swimmer’s Ear drops
      • I get ear infections from water in my ears, and I tend to swim more when traveling than at home. So I keep these drops in my travel bag.
    • Watch battery tool
      • Without fail, my watch battery dies when I’m not at home, so the little tool I need to replace it lives in my backpack.
    • Packable rain jacket
      • I keep a packable rain jacket in my backpack at all times. I don’t like umbrellas, but don’t like getting caught in the rain, either.
      • I have one from Columbia that I bought off the discount rack at Dick’s Sporting Goods 10 years ago.
    • Shout wipes
      • Nothing worse than spilling coffee on your shirt first thing in the morning and having to go to a bunch of meetings like that. Shout wipes are an essential part of my backpack.
    • NYTimes Mini Crossword book
      • These are fun, mini versions of the NYTimes crosswords collected in a book. Amanda and I have passed a lot of time in airports, on airplanes, on trains, and on ferries doing these mini crosswords together. This is one of those things that is better in the physical format than on the phone, IMO.

    If I’m traveling by car for more than an hour:

    • Small tool kit
      • Multi-bit screwdriver
      • Ratchet set
      • Pliers
      • Zip ties
      • Duct tape
      • Super glue
      • Utility knife
      • Flashlight
    • AC recharger
      • Ever been on a roadtrip and the AC stops working? It is easy to recharge, so I keep one in the car.
    • Beach towel
      • To be honest, this mostly gets used at the playground to wipe off wet slides that Charlie wants to go down, but it is also useful for cleaning up spills, etc.
    • Picnic blanket
      • Never know when you need to hang out for a little while outside. Chilling at a playground, impromptu meals outside, sitting on the beach, etc.
      • We have a Yeti Lowlands blanket. Soft on one side and canvas (waterproof) on the other.
    • Regular blanket
      • We keep a fleece blanket in the car. It can double as a picnic blanket if needed, but nice to be able to have a blanket if you get stuck or are just outside and it gets chilly. Or if someone wants to take a nap on a long drive.
    • Furniture blanket
      • Useful to kneel on if you need to change a tire, also useful to throw down to protect your seats if you need to move something.
    • Backup clothes
      • Sometimes toddlers puke on themselves or you. Or they jump in mud and then get it on you. Backup clothes are essential for everyone in the car.
    • Tourniquet/bleeding control kit

    Dear reader, what non-standard items do you always travel with? Write your post and drop it in the comments.

  • ChatGPT on the 2023 MacArthur Genius Grant fellows’ work

    I saw the new MacArthur Genius Grant fellow list this morning and I only recognized a few names from the list, so I asked ChatGPT what I should be familiar with from the fellows. I mistakenly asked what I should read by them, forgetting that not all of them are authors, but I got good recommendations back for each field nonetheless. Thought I’d share.

    The response:

    Given the diversity and expertise of the Macarthur genius grant recipients you’ve listed, here’s a selection of works or major contributions from each of them that you might consider exploring:

    • Rina Foygel Barber:
      • Her research papers are mainly technical in nature. You can refer to her Google Scholar Profile for her most cited works.
    • Ian Bassin:
      • As a lawyer and advocate, Bassin’s impact comes through his contributions to legislation and policy. Check out Protect Democracy, an organization he co-founded.
    • Raven Chacon:
      • His compositions and art installations are best experienced directly. Refer to his Personal Website for a list of works and upcoming performances.
    • Linsey Marr:
    • Dyani White Hawk:
      • Her artworks such as “Listen” and “She Gives” can be viewed on her Official Website.

    For further exploration:

    1. How has the MacArthur Fellowship influenced or changed the trajectory of past recipients’ careers?
    2. What’s the selection process for the MacArthur genius grant, and how do they determine the potential and uniqueness of a recipient?
    3. How have other countries or organizations replicated or been inspired by the concept of the MacArthur genius grant to support innovators and thinkers?
  • Week of September 25, 2023


    We are pretty much recovered from COVID, though we still fatigue faster than normal and food still isn’t tasting quite right.

    This week was a long and tiring one. Amanda had to work in Houston, TX, from Monday to Thursday, so between the COVID fatigue and Charlie’s momma separation anxiety, it was a struggle. Even so, Charlie and I got a lot of bonding time, and he seemed happy to get back to his regular daycare routine.

    After daycare, we usually had dinner right away, went out for a walk if the weather was nice, and then watched a couple episodes of Trash Truck before getting ready for bed.

    We tried out a new burger place that opened this week in Peekskill. It was pretty good! It is right across from the train station, which is one of Charlie’s favorite spots to hang out (where else can you see trains, busses, tow trucks, and boats from one location?).


    Some work news: Our team saved the Blogs.Harvard network from being shut down back in July and now host an archived version of it on Automattic’s infrastructure. We see it as a major win to keep this important piece of internet history available, and keep links from 2003 still working.

    We upgraded the network from WordPress 4.8.1 and PHP 5.5.9 to WordPress 6.3.1 and PHP 8.2. No small feat with ~1500 blogs with tons of themes and plugins.


    We had another crazy rainstorm on Friday that flooded the region for something like the 3rd time this year. There was too much water in our basement this time to only use the shopvac, so I bought a non-submersible transfer pump and ran it every 20 mins or so for about 4 hours until water stopped seeping up through the floor.

    I don’t think this weather pattern is going to get any better, so the first call I’m making on Monday morning is to a sump pump guy and get that on the calendar.


    Amanda’s college sorority little, Kat, visited us this weekend, in from London for a wedding in upstate NY this week. We hung around this general area, made dinner, drank wine, visited Muscoot Farm, walked along the riverfront with Charlie, and caught up after 4 years like no time has passed. Kat give us a couple of book recommendations:

    At the farm I liked the pitch forks made from single branches. I’d like to try to make one. Charlie liked the tractor and the mud puddles the best.

    We have a lot of apples right now, so apple desserts are the thing right now. Apple galletes and apple sauce are always good, and I made this apple crisp, which employs pecans for the topping. Better than oats, IMO. 🍎


    I changed my mind on something this week: We decided to hire cleaners once a month to help us clean the house. Until now I’ve been against it, probably because of my midwestern work ethic and Appalachian self sufficiency (family roots run deep!), thinking that we should save the money and take care of it ourselves. After all, we had the time and I thought it was lazy to not do it ourselves.

    What changed my mind was struggling to do the base-level things like mopping, dusting, kitchen grime, etc, after we had Charlie. Not only do we have less time now, but he also creates more messes than Amanda and I combined. When he was 3 months old we had someone come babysit him while we cleaned all day, but that has our priorities backwards. Why not pay someone to clean so we can spend that time with Charlie instead?

    Needing to get the house ready for a guest while Amanda was traveling and I had a busy week at work pushed me over edge. It was more affordable than I expected and they did a great job in a couple hours while I was working. We’ll probably have them come once a month.


    I redid my Likes page to be closer to a linkblog.

    I’m thinking about changing my permalink structure to no longer include the category slug. We’ll see. I just need to make sure my redirects will work as expected.

    I fixed a spacing issue around images and galleries with adjacent text that has been bothering me for a while on this site. The answer was sibling selectors.

    p ~ figure, p ~ div.wp-block-jetpack-tiled-gallery {
    	margin-top: 1rem;
    }
    
    figure ~ p, div.wp-block-jetpack-tiled-gallery ~ p {
    	margin-top: 1rem;
    }
  • Week of September 18, 2023


    This was not our week.

    We ended a long, challenging weekend of potty training on a high note and felt pretty confident about Charlie telling us when he needed to go to the bathroom and holding it until we got there. Then we hit a wall because Charlie refused to use the potty at daycare. They only have regular sized toilets there with inserts, and we trained him on a tiny toddler-sized toilet. He was so thrown off by having to use a big toilet that we are back to square one, using diapers and regrouping until we can get another three-day weekend to try again.

    Then the next day we got hit by COVID after successfully avoiding it for three years. It was surreal seeing a positive test after having seen so many negative ones.

    Charlie and Amanda got pretty mild cases and mine was the worst of the house. I had fevers, vomiting, chills, sweating, and intense headaches for three days. That finally stopped by the middle of the third day, but the sore throat, cough, and fatigue are still here. Amanda’s developed into a chest cough. I break out in a sweat whenever I try to do anything physical.

    Taking care of a toddler who is at full energy while you have Covid is quite challenging.

    Hopefully next week is better 👋

  • Week of September 11, 2023


    Wildlife relocation count: Three groundhogs, two skunks. One groundhog eludes us.


    We had a nice Friday night. We went to the local used book store and Charlie showed some real interest in browsing for books there. Then we ate outside at the new Gaucho’s Steakhouse, which was pretty good. N. Division St gets closed off Thursday-Saturday nights and all the restaurants on the street put out tables and hire local musicians. Charlie loved the live music.

    I don’t think we’ll be going out to eat much this winter. Charlie is in a stage where he does not like to sit in one place in a restaurant, and if he can’t get down and move he starts to get loud. That is more acceptable outdoors at picnic tables than indoors, and since it is starting to cool down, it might be takeout only for us for a while.


    Christie WrightArchived Link convinced me to carry a tourniquet in the car. She recommends this Bleeding Control Kit from SAM. I ordered one for the car and one for my workshop, the two places I’m most likely to be around an accident that causes severe blood loss.

    This was part of a conversation about what we travel with that is non-standard. Blog post about that coming soon.


    Our tomatoes are almost done for the season. I picked the second to last batch of Firmino plum tomatoes on Saturday and made a small batch of pizza sauce that I really liked, based on this Detroit-style sauce recipe. Now that I know we like it, I’m going to make a bigger batch to freeze in 4-pizza quantities (roughly 3 cups each).

    The tomatillos are still trucking along! They tend to keep growing until the first frost.

    Looks like it is time to switch these garden beds to ground-level raised beds. The posts rotted out. I knew it would happen eventually, but I thought I had another year or two. I thought the plywood would go first. Oh well. Ground-level will mean easier access for Charlie, too, and he loves helping with the garden. I’ll have to make the fencing easily removable. I’ll probably do that this fall after the first frost, and make sure I have enough time to get some garlic planted.


    We decided to start potty training Charlie this weekend. As I write this we are halfway through day two. We are making progress and cleaning up fewer messes on day two, but holding in our poop. All three of us are pretty tired, but staying calm and sticking with it. We are hopeful that by Tuesday he’ll have the hang of it.

  • Week of September 4, 2023


    New app I’m enjoying: Texts.com, an inbox for all of your messaging apps. Been using it all week and am not looking back.


    This week I kicked some home projects I’ve been neglecting into high gear.

    • Scheduled a quote for spray foam insulation in our two attic spaces
    • Had someone come out and get rid of our groundhogs
    • Scheduled someone to come out and do some maintenance on our boiler
    • Had our pile of tree limbs removed
    • Picked up what I need to fix the tile in our bathroom
    • Picked up what I need to replace the broken piece of flooring in the basement

    Next up on the agenda:

    • Get a quote on installing a sump pump + radon mitigation system
    • Buying water sensors for the basement and under the sink. Probably going with YoLink once they have another sale.
    • Decide whether we want to replace the fence now or in the spring. Leaning toward the spring.

    Charlie updates:

    • He is singing a lot more and making specific song requests for us to listen to in the car. They sometimes come out of left field and it is fun.
    • He is recognizing more letters and numbers by sight and saying what they are.
    • He is getting potty curious, so we think it is time to start potty training in the next couple weeks before this window closes.
    • He is doing a lot more imaginative play, such as pretending he is a bus driver or a chicken, or making some Duplo figures act out something, and building his Duplos a lot more in general.
    • Puzzles that were tough for him 6 months ago are a breeze now.
    • He got invited to a birthday party on Friday and it was fun to see him play with other kids. His friend Lorenzo ran up, grabbed Charlie’s hand, and they ran off to play.
    • He is more independent on the playground now and doesn’t feel the need to stick close to us.

    I didn’t take many photos this week. I was busy at work getting caught up from being out for a week, and it was very hot here all week (weather station reported a high of 101.2F/38.44C), but I did take a couple. Here they are:


    Most of our plans for the weekend fell through because of the rain. Bummer.


    If your name is Dave Wasmer and you are still reading this, here is your reminder to start your weekly post 😄

    Here is how I generally do mine:

    1. Take notes throughout the week in my favorite notetaking app. Just a couple bullet points as I think of them.
    2. Look through the photos I took that week and new bookmarks I made that week for inspiration.
    3. Don’t proofread or stress about it. Just press post once I’m done.
    4. I write them while Charlie is sleeping, either naptime or after bedtime.

    In fact, I hear Charlie waking up from his nap, so it is time to press Publish on this and close my laptop 👋

  • Week of August 28, 2023


    As mentioned at the end of the last post, we spent the week in Cape Cod for an end-of-summer getaway. We had a great time.

    The summer season was winding down, so the Cape wasn’t very busy, but almost everything was still open. We went once a couple years ago in late autumn and found summer to be a completely different vibe.

    We stayed on West Yarmouth in an Airbnb next to a so-called cranberry bog (I went hiking in there and didn’t see a single cranberry bush) with lots of rabbits and turkeys as neighbors.

    Some things we enjoyed:

    Whale Watching! We went with https://whales.net (what a great domain!) and saw a bunch of humpback and minke whales. We even saw a breach!

    Beaches

    • Mayflower – Bay side. Restrooms, lots of parking, big beach to explore.
    • Skaket – Bay side. Incredible tide pools and grassy mud flats with razor clams.
    • Chatham Lighthouse Beach – Nice beach to walk, lots of sand dunes, Atlantic side, but protected by some small outer islands.
    • Coast Guard – Atlantic side. Lots of surf, seals, and sand dunes. Very limited parking.
    • Race Point – Atlantic side. Lots of sea birds, seals, and sand dunes.

    Restaurants

    • Sesuit Harbor Cafe – I really liked the stuffed quahog, Amanda liked the shrimp.
    • Captain Frosty’s – According to my friend (and former chef) Eric, this has the best fried food around.
    • Mac’s in WellfleetArchived Link. We tried to get into the main restaurant, but the wait was an hour long and we had a cranky toddler, so we went down the road to the place on the pier. Amanda and I shared a dozen Wellfleet oysters, then Amanda had a lobster and I had a pulled pork sandwich.
    • Cape Cod Creamery
    • The Knack – Great burgers, onion rings, and lobster rolls.
    • Old King’s Coffeehouse – Pretty good breakfast sandwiches.
    • Three Fins Coffee – Really solid coffee roaster
    • Chequessett Chocolate – Good chocolate bars and truffles in Truro. Cute shop.
    • Cape and Island Distillers – Amanda liked their canned Sippewissett Gin & Tonic and I liked their canned Shark Bite Rum Punch. When you don’t have time or space for mixers and a shaker, canned cocktails are convenient.
    • Double Dragon Inn – This looks like a regular Chinese restaurant on the outside, but they have an old-school tiki bar inside serving up things like Zombies, Scorpion Bowls, Fog Cutters, and Navy Grogs. We had to go. We shared a Scorpion Bowl, the service was great, and the food was pretty standard Americanized Chinese food.

    One thing we learned on this trip: For the next couple years, eating outdoors at picnic tables is much more our speed with a toddler.

    It seems like the dockside places are all BYOB, which I wish we had figured out sooner. Everyone seemed to carry in a cooler and pull out their own drinks. Now we know.

    Lighthouses

    • Chatham Light
    • Highland Light
    • Nauset Light
    • Sandy Neck Light

    Signs

    I love informational signs. There were some good ones in Cape Cod.

    On the way back home on Friday we stopped for lunch in Providence, RI, to visit one of my teammates, Nate Allen. We also stopped in Danbury to eat at Frank Pepe’s (IYKYK) and shop at Stew Leonard’s (again, IYKYK).

    Labor Day Weekend

    Amanda and I both had things we wanted to do with friends on Saturday, so she hung out with Charlie in the morning while I went kayaking with my friend Jeremy Wall (we saw an eagle on Iona Island!), and I hung out with Charlie in the afternoon while she went to see the Barbie movie with Kristin Richer. Charlie and I cut the grass, rode bikes, fixed the screen door and Amanda’s bike handlebars, picked tomatoes, played on the swingset, and ate leftover pizza. You know, cool dude stuff.

    Sunday we went grocery shopping, Amanda went horseback riding, then went to a friends’ house for an end of summer party. We all had a pretty good time.

    Monday we hung around the house. I cleaned out the fridge and did laundry, we all picked up the house, and then I made some ribs on the grill for dinner. I used this quick method from Meathead, which I think turned out great. They had a bit of bite left in them, which I like, but Amanda prefers them a little more fall-off-the-bone, so I might cook them longer next time, or finish hers in the oven.

    I also decided to replace the built-in soap dispenser with a glass rinser hooked up to the hot water line. It is awesome. $25 on Amazon.

    Unfortunately I made a stupid mistake while replacing it and got sprayed with 5 gallons of hot water while frantically running around to find a towel and trying to turn the hot water shut-off completely off. What a mess. I thought I had checked it, but in retrospect I must have only checked the cold water on the single-handle faucet. That is a mistake I won’t make again.

    This week it is back to work. The weather looks like a scorcher all week, so I made cold brew and have some easy dinner plans like taco salads and grilled chicken.

  • Week of August 21, 2023


    One cool thing that happened this week is one of my photos was selected to be in a special gallery at WordCamp US! I didn’t go this year, but some friends sent me photos. My photo is the one of the sheep, which I took in 2018. It was used in as a sign for a conference room, too.


    Not much I can talk about from work this week other than I have a much better understanding of WordPress Multisite and I’ve been thinking a lot about link checkers. Hopefully I can point to some public announcements soon.


    On Tuesday Charlie and I met our friend Dave and his daughter Lianella (one of Charlie’s friends from daycare) for dinner and some playtime down by the waterfront. To everyone’s relief, both kids were happily playing together and seemed to enjoy the outing. They shared well together, giggled a lot, and even carried on their own little conversation. Cool to see. It was nice to hang out with another Dad and let the kids play. We’ll definitely do it again soon.

    Charlie helped pick a lot of tomatoes this week, then helped us wash and freeze them. I have plans to make sauce once it cools down. He bit into them with gusto again this year. He has grown so much since this time last year!

    While peeling the Firmino tomatoes after Charlie went to bed, I discovered the joys of the Sherry Cobbler. It is delicious, low abv, easy to make, and adaptable to whatever fruit is in season.

    Charlie also helped Amanda make a galette. Galettes have become a go-to for us because they are faster and easier to make than pies and taste just as good. This one was blackberry peach.


    Though I haven’t carved much recently, I reconnected with two carving friends, Julia and Fahd, who came to pick up some of the cherry wood from my fallen limb. Also, I got Emmet van Driesche‘s new book in the mail, Greenwood Spoon Carving.


    We saw two frogs this week, both of which I think are gray treefrogs. In our four years of living here, I had only seen one other, but this week spoiled me. Charlie was pretty excited about seeing them, too.


    On Saturday we left for Cape Cod. We are staying in this cute little cottage next to a cranberry bog and spending as much time as we can at the beach this coming week 🏖️

  • On Broken Link Checkers


    I’ve been working with and thinking about broken link checkers a lot lately. Here are some thoughts on what features link checkers should have, open questions, and what to do with broken links once you find them.

    Features that should be standard, but aren’t

    • Link checkers should ignore share links.
    • Link checkers should ignore robots.txt on the sites they check.
      • Twitter blocks most broken link checkers. Every Twitter URL on every site I’ve checked comes back as broken, and upon further investigation they are almost always working.
    • Link checkers should follow redirects.
      • Redirects are valid, functioning links!
    • Link checkers should have robust support for services like YouTube and Vimeo.
      • Videos that appear missing on those services still return 200 status codes when checked, along with a message in the HTML that the video is not found. Most broken link checkers show those as false negatives.

    Open questions

    • Should we ignore comments? Most commenting systems allow links and also tend to link back to the comment author’s site. Those tend to be a significant source of broken links. Should those be left alone because they aren’t the site’s content, but rather user-generated content?

    What to do with the broken links once you find them?

    • I’m against changing historical content in a damaging way, so I do not support changing links.
    • I do support appending additional helpful information, such as a link to a working version of the broken link on the Wayback Machine in a format like this: Old link text with broken link (archive.org link)
  • Week of August 14, 2023


    We took Charlie out in the guideboat on Lake Sebago in Harriman State Park for the first time on Saturday and he had a blast. We did, too. Charlie loved rowing, did pretty well in the boat, was excited about his lifejacket, and was excited to catch a fish. I think we’ll be spending a lot of summers there.

    We are members of the American Canoe Association, and they have a camp on Lake Sebago for members. It is secluded, rarely busy, and inexpensive to use. It it one of the best kept secrets around here.

    Lake Sebago, Harriman State Park, NY

    My cartop carrying methods for the guideboat continue to evolve. I cut a 2×4 and wrapped the ends with the drawer liner we had laying around and I now rest the boat on that before strapping it down. It is a more stable base for the wide boat than the factory crossbars.

    Next I need to figure out a way to secure the oars inside the boat before putting it on top so that I don’t have to set them in the car. They go all the way up to the dashboard.


    Tomatoes are coming in hot! Picking a quart every other day. These are the Magic Bullet variety.

    I traded our neighbor a quart today for an eggplant. We gave another quart to the neighbors across the street on Friday, who asked us to borrow our ladder to clean a clogged gutter. It is nice to have friendly neighbors.

    Our hydrangeas are looking lovely this year and the bees love them. I think this variety is Limelight Panicle Hydrangea based on their hardiness, shape, and color (the flowers are green, then turn white.)

    I finally got around to cutting and cleaning up the branches in our backyard from the fallen cherry limb. Charlie was a big help dragging the branches to the front yard so we can have them chipped up.

    I’m glad our little guy likes helping!

    My coworker Kyle Runner suggested that Charlie needs a bell at the top of the climbing wall, so I got one and put it up. Charlie promptly climbed to the top and rang it.

    We took lots of walks and bike rides this week after dinner.


    For dinner tonight we went to the Jet Set Tiki Bar and Restaurant in Newburgh, NY. It is set on the river walk in Newburgh and has a nice outdoor seating area. We’ll be back! Midnight Ferry, an ice cream place a block down, was pretty good too.


    I used ChatGPT heavily this week at work. I had a ton of data to transform and work with and it excels at creating utility scripts. Some examples:

    • Taking an export of a full year’s worth of content in a Slack channel and extracting the links, deduplicating them, separating out the host and path from the links, detecting the RSS feed for each domain, and then turning that into an OPML file to import into feed readers.
    • Cleaning up the output from a broken link checker. Reduced the number of reported broken links from 75K to 13K on an old-school blog.
      • Filtering out all known social share links from sharing buttons.
      • Removing all Twitter links (Twitter blocks robots, so a lot of false positives)
      • Request each URL via cURL with a 5 second timeout and record the HTTP status code for each link in a spreadsheet.
        • This helped me weed out redirects vs 404s vs 500s vs timeouts (most like not on the internet anymore)
    • Filtering and converting a very large and needlessly normalized JSON export out of Contentful to a CSV
    • Taking the HTML of a large webpage and pulling out links with certain attributes and putting them in a structured JSON file
  • Week of August 7, 2023


    Hi there! 👋

    I took a bit of a summer break from blogging this past month. Here are some of the highlights:

    • I went to San Juan, PR, for work.
      • One of the cool things about working at Automattic is that meetups are a crucial part of our remote culture. We meet up twice a year to work together on a project in-person for 5 days and hang out. This time a couple teams decided to meet up together, so 12 of us were at the meetup.
      • We stayed in the Condado neighborhood at Stay at Mare and did most of our work there, with the exception of a few stints at a coworking space when our internet cut out.
      • We successfully shipped an MVP of an internal project and had plenty of time to hang out by the pool, have a picnic at the beach, and do a walking tour of Old San Juan.
    • When I got back, we had a week to prepare for Charlie’s birthday party, which we hosted in the backyard.
      • We trimmed the hedges, weeded, mowed and trimmed, etc. I also disassembled and fixed a problem with the feed on the weedeater.
    • Charlie turned two! We had a party with lots of his friends from daycare and some family friends. My parents came in from Ohio, too.
      • The theme was Wheels on the Bus and Amanda made all the decorations.
      • We served pizza from Pizzeria Baci, which was a hit.
      • Dan the Music Man provided the entertainment. He is great with kids. They loved the parachute.
      • After a scorchingly hot day, there was a torrential downpour just as the party was wrapping up. Thankfully we had tents, so we didn’t get too wet.
    • Charlie started learning how to ride a 2-wheeled balance bike.
    • I put in a big exhaust fan that mounts to the window frame on our second floor.
      • It is the best purchase we’ve made all year. I wish I had put it in 3 years ago. It pulls air in through the open windows downstairs and pushes it out upstairs, cooling the whole house down. It is essential at night when the outside temp drops to the mid 60s.
    • I finally bought a 24ft extension ladder. Another homeowner must-have.
    • Lots of time outside in the garden, mowing, eating ice cream, taking out recycling, catching lightning bugs, early mornings playing with .
      • On the recycling: Charlie has his own bag of bottles, cans, etc, that he carries out to the road and puts in the bin every Thursday.

    A mishmash gallery from the last month:


    2 years is a magical age. Their language skills and communication ability increases exponentially around 2 and it is so fun to watch. Charlie has been counting to 10, doing the ABCs, pointing to things and naming their colors (and names if he knows them!) and singing lots of songs.

    His physical abilities are ramping up, too. He is making progress on climbing the stairs without holding on to the railing (not quite there, but on his way) and he figured out how to climb both up and down his climbing wall completely solo.


    I worked from Automattic’s NYC offices this week for the first time in about a year. I had the privilege of working with Dave Winer, creator of RSS and podcasting, and early blogging pioneer. More to come on that soon. He even gave me a demo of his outliner, Drummer.

    It was nice to work in the office for a couple days, but I’m glad that we are remote-first and I don’t have to do that commute every day.


    Our cherry tree split in a storm on Tuesday and a huge limb dropped on our fence and garden. Thank goodness for chainsaws, rope, hand saws, and axes. It might finally be time to get that fence replaced.


    Despite the tree limb falling on the tomato and tomatillo bed, we are still getting plenty of tomatoes and tomatillos.

    We got a mediocre potato harvest this year. A groundhog ate all the leaves off the plant in early July, so the potatoes stopped growing and stayed small.

    We have black swallowtail caterpillars on our parsley. We go out every day with Charlie to look at them.


    I tried a new orgeat recipe this week. It makes a decent Mai Tai. I was able to stop at Astor Wines & Liquors while I was in Manhattan this week (just a couple blocks from the office!), so I picked up an aged agricole rum (Rhum J.M Gold), a Black Jamaican rum (Hamilton), and the Clement Creole Shrubb, all of which where soon put to use in said Mai Tai.


    I’m loving these Campfire Rudbeckia in our front yard.


    We went to Sloop Brewing in East Fishkill on Friday night. They have a nice restaurant space adjacent to their brewery. We already knew we like their beer, but their food is also good. We’ll go back for sure!

    Their website runs on WordPress and WooCommerce, which I love.


    Amanda’s brother, Ben, visited this weekend. We spent Saturday exploring Beacon and Cold Spring, then made dinner, a blueberry pie, and played with Charlie at our house. Charlie made friends with the cat at Split Rock Books. Sunday we went to the Bronx Zoo and then had pizza on our porch for dinner.

    Tip: Arthur Avenue, the Little Italy of the Bronx, is very close to the Bronx Zoo. You can get incredible sandwiches and stick them in a cooler for lunch instead of the overpriced and terrible concession food.

  • Week of July 10, 2023


    It has been a very damp week here. It rained 6 out of 7 days this past week.

    We are glad we came back on Saturday, because there is a big chance the route we took would have been washed out around the time we would have encountered it on Sunday due to the storms. We got ~6in of rain on Sunday night/Monday morning and our basement flooded, along with everyone else in the neighborhood. We removed 80 gallons of water, which is less than most of our neighbors got. It was seeping up through the floor because the ground was so saturated. We were spared compared to Highland Falls and West Point, though.

    It has been such a rainy and humid month that we haven’t sat out on the back porch for three weeks.

    On one calm evening, I took Charlie out to ride his bike by the river again. He was so conscientious and stopped and moved to the side when groups were walking by. He also thanked me for pushing him up hill.

    More water in the basement on Sunday the 16th. Much less than Monday, but still more than we’ve gotten at any other time living here. The last time we got close to this much was during Hurricane Ida in 2021. Probably time to put in a sump pump and re-seal the basement floor.

    We also lost power for much of Thursday evening and early night, unrelated to weather. We came home from picking up Charlie to find the power out, so we decided to go to The Feast of Mt. Carmel in Verplanck to get sausage & peppers for dinner. It has become one of those yearly traditions for us. We went for the first time two weeks before Charlie arrived, then two weeks shy of his first birthday, and now two weeks shy of his second birthday.

    I got a new bike with a seat for Charlie. Looking forward to family bike rides! Charlie loves his “bike hat.”

    Charlie is in a new “What’s this?” phase, except he is actually asking “What’s this?” instead of “Dat?” and when we tell him the word for the thing he is pointing to, he attempts the word, no matter how hard.

    He is also getting consistent with some colors. He seems to have Blue, Orange, and Pink down, and a solid start on Yellow and Purple. Green and Red still seem a bit tough.

    Big enough to push a child cart at Trader Joe’s, but not big enough to not run into people or displays.

    Rough time at work this week. I found a UI bug in phpmyadmin the hard way 😣 I’m not ready to post about it yet, but will once we track it down and propose a fix.

  • Weeks of June 26 and July 3, 2023


    We are entering my least favorite part of the year: The hot, humid season. I can deal with dry heat, but the 85+ % humidity we’ve been having just zaps my energy. The plants love it, though. Unfortunately so do the bugs.

    We finally had to put the air conditioners in when more smoke rolled in from the Canadian wildfires and stuck around, which limited the only source of relief we had: Fresh air from open windows. In years past we’ve put them in around our anniversary, so this isn’t too far out of the norm.

    This is our fourth year in Peekskill and the 10th year in the Hudson Valley. We’ve had more thunderstorms this summer than any other year we’ve been here. I hope smoke + heat + frequent storms isn’t the new normal, but I’m concerned that it will be.

    Perhaps I should revisit my disaster prep plan again (which I blogged about last year). I think the focus will be on getting us through a week or two without power, at which point we’d probably pack up and go stay somewhere else until power comes back on. That primarily means propane for cooking + powering the generator for a few hours at a time to keep the freezer cold. If I wait until the power is out to get propane, I probably won’t be able to get it, so I should get a couple more tanks of propane and stick them in a dry place.

    I also need to keep my garage clean so I can keep my car in there so it doesn’t get destroyed in a hail storm. We’ve had more of those here this year than all other years combined.


    It has been an exciting couple of weeks at work. I shouldn’t say much other than I’ve been working with some OGs of the blogging world, which has been pretty cool.


    I’m getting burned out on social media again. For how smooth the onboarding was, the content on Thread is completely terrible. Twitter is continuing to go downhill. Bluesky’s content is pretty good, but it isn’t yet a vibrant community (if you want an invite, hit me up). I’m enjoying the content on my Mastodon instance the most these days. There is a non-zero chance of my retreating to my feedreader again for a while.

    I saw someone on Mastodon post that they heard someone call mindlessly scrolling “rubbing the glass.” Everyone I’ve mentioned that to has recoiled, but that phrase is so good.


    Charlie decided two weeks ago that he really likes riding his bike. It is now one of his favorite activities. Cruising downhill on his bike fills his face with a smile and the air with giggles.

    This has been a big week for Charlie’s language skills.

    • He is singing songs on his own more. Wheels on the Bus and Twinkle Twinkle Little Star.
    • He counted to 10 on his own on Saturday! I’m not quite sure he grasps the concept of numbers all that well yet, but he is getting the sequence down.
    • His vocabulary is growing rapidly. He remembers words for more and more things.
    • Even more Thank Yous than before.
    • He is communicating more of his wants and needs rather than just being upset. He still has a ways to go, of course, but the increase has been helpful. The flip side is that he is saying “No!” a lot more, but that is part of communication too.

    Charlie is also getting more adventurous and capable every day. It seems like the 2 year mark is a time of incredible growth.


    I learned how to recharge the AC in my car with refrigerant. It was a lot easier than I expected. My Dad says that it tends to go out over the winter when the system is not in use, so it might be good to turn on the car AC once a month in the winter.


    We went to Ohio for the week of July 4 and had a great time. We spent time in the pool, Charlie had a lot of grandparent time, and we got to relax a little bit. It was nice to see Charlie open up around the rest of the family the way he does at home with just us.

    As you can see, Charlie realllllly liked playing on and driving lawnmowers. He also learned how fun it is to run around in the rain and stomp puddles, which he did again on Sunday after we got home.

    My favorite pizza place in Ohio, Yala’s Pizza, is now Fran’s Pizza. Apparently the name change is primarily to honor longtime owner Francesca DeSantis. No recipe change. Here is an article about it in the local Chronicle Telegram.

    Ohio and New York are both in the Eastern timezone, but on opposite sides. Sunrise and sunset in New York are so much earlier than in Ohio that they almost need to be in separate timezones.

    Charlie did great on the road trip. He is able to entertain himself more with imaginative play, he took a long nap, and we made a couple rest area stops to “run our sillies out.” The last hour and a half of the 8 hour journey is always the toughest, but Mamma sang lots of songs with Charlie and saved the day.

    Here is Charlie’s Car Jams playlist:


    It is amazing how having a 4-day weekend reinvigorates me a little bit. Ideas started flowing again for the first time in a while.


    Reading: I finished Golden Son by Pierce Brown and listened to American Terroir by Rowan Jacobsen and Cod by Mark Kurlansky on the road trip.

    From American Terroir:

    “The Yupik have a word, slungak, that translates as ‘coming to.’ It describes when awareness first blossoms in a child, when the child stops living purely in the moment and becomes conscious of time and place and self and starts to lay down memories. For many Yupik, slungak kicks in when the kings run.”

    Now I’m reading The House on the Lagoon by Rosario Ferré.

    New additions to the to-read list:

    • My Confession by Samuel Chamberlain, inspiration for McCarthy’s Blood Meridian
    • Birdseye: The Adventures of a Curious Man by Mark Kurlansky
    • American Nations: A History of the Eleven Rival Regional Cultures of North America by Colin Woodard
  • Week of June 19, 2023


    This week flew by.

    Last Sunday after my weekly post, getting pizza at Hudson & Packard didn’t happen. After an hour drive with a toddler who didn’t want to be in his carseat, they were sold out. We’ll try again in the future. We did have dinner somewhere else in Poughkeepsie, then got ice cream in Wappingers Falls, where Charlie had a lot of fun riding his bike around the parking lot (it basically lives in the car these days.)

    Amanda was off of work on Monday. I had to work, so we still sent Charlie to daycare and she was able to do some projects with the Cricut machine she just got. Tuesday, and Wednesday were pretty work-heavy for both of us, so I don’t have much of note to report. We opted for easy dinners and after dinner walks with Charlie.

    Getting Charlie to bed seemed more difficult than usual this week. Not sure what is going on there.

    Thursday was our 10th anniversary! We celebrated by making a nice dinner at home together (double cut ribeye, sauteed greens, side salad), then having a fire in the chiminea on the deck after we got Charlie to bed, sharing a bottle of wine, making s’mores, and writing down some of the big things from our first ten years of marriage. We’ve shared and grown a lot together.

    Yeah, I overfilled the chiminea. It did burn down pretty quickly and was soon at a more reasonable level.

    As I like to jokingly remind Amanda, our wedding anniversary and the day I started this blog are both on June 22. I’ve been blogging here for 15 years! On June 22, 2008, I was holed up in a hotel room in Tarrytown, NY, (not far from where we live now!), eating pizza, and learning how to install WordPress on my cheap shared hosting, writing my first post, and figuring out how to customize my theme. The rest is available via RSS.

    I caught up with Jeremy Felt on Friday afternoon, which was nice. I’ve been enjoying our catch up calls once every couple months. It is nice to chat with someone who also does remote work a lot like my own and has a child around the same age. We go through so many similar things! Jeremy is also a WordPresser, IndieWebber, and blogger. It is a shame we live on opposite sides of the country.

    Friday evening Amanda and Charlie hung out with some friends of ours while I opted to stay home for some quiet time. I ended up cleaning the dining room and kitchen, tidying living room, writing my weekly veggie share post, and reading a little bit.

    Saturday we met one of Charlie’s daycare friends and her parents at Barnes & Noble’s Saturday Storytime, where they read a children’s book, do live music, and some coloring. Everyone was having a good time, so we went out to lunch afterward. We love seeing Charlie and other kids play so well together. The original plan was to go to Muscoot Farm, but it was raining all morning.

    During naptime I worked on an iOS Shortcut for posting to this blog, Twitter, Bluesky, and Mastodon all at the same time.

    • You can download a stripped-down version here. It relies on the native Twitter app (which annoyingly prompts you to confirm posting), Ivory for Mastodon (you can swap out with your Shortcuts-friendly Mastodon app of choice), and two Get Contents of URL actions for Bluesky. You’ll need to swap in your Bluesky identifier and app password in the cURL sections. h/t to Eric Davis for sending me the Bluesky API calls.
    • Here is my shortcut for posting to a WordPress blog via Micropub.

    Later after naptime we went grocery shopping and made taco salads for dinner.

    Sunday I mowed and then replaced the shutters on our downstairs windows while Amanda and Charlie played in the sprinkler. I need a taller ladder to do the upstairs windows, so those will have to wait a few weeks.

    The humidity the last couple days has been rough. If this keeps up, I’m seriously considering putting the window air conditioners in. We’ve held off so far this summer because the evenings have been cool and it is nice to have the breeze.

    I remarked to Amanda that though Wednesday was the solstice, it still doesn’t feel like summer to me. Probably because we haven’t done the activities I typically associate with summer (swimming, rowing, kayaking, hiking, fishing.) We need to change that.