I had to do a bit of soldering and heat shrink to fix Lily's bike lights
{
"type": "entry",
"published": "2026-05-18T14:38:33-07:00",
"url": "https://aaronparecki.com/2026/05/18/10/",
"category": [
"365"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/de6196a2eadf7395b683d4db899abb1a70e824514c341caf5edddbc398420d01.jpg"
],
"content": {
"text": "I had to do a bit of soldering and heat shrink to fix Lily's bike lights"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "48399999",
"_source": "16"
}
Built a little removable floor for the package locker so boxes don't sit on the ground all day, but we can still clean under it when we need to.
{
"type": "entry",
"published": "2026-05-19T07:55:26-07:00",
"url": "https://aaronparecki.com/2026/05/19/12/",
"category": [
"365",
"triplex"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/4751baca0587b3e881560434b6c6028cc6c7528877109765e27f006380646b21.jpg"
],
"content": {
"text": "Built a little removable floor for the package locker so boxes don't sit on the ground all day, but we can still clean under it when we need to."
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "48399973",
"_source": "16"
}
Long day of meetings, at least the cats kept me company
{
"type": "entry",
"published": "2026-05-21T14:30:45-07:00",
"url": "https://aaronparecki.com/2026/05/21/12/",
"category": [
"365"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/ee3e70db8fc7f66b355d3605cb88dcaed3e64f10e1a62c394e14b6e465f16edc.jpg"
],
"content": {
"text": "Long day of meetings, at least the cats kept me company"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "48399932",
"_source": "16"
}
The 3D printed nylon version of the parts arrived! Did a quick test fit but will have to actually build this later
{
"type": "entry",
"published": "2026-05-20T18:22:10-07:00",
"url": "https://aaronparecki.com/2026/05/20/14/",
"category": [
"3d",
"365"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/5023008ddc3c86ebe644ce32c7f4b724202c200a82bec5b9d8baf481c7c06d8e.jpg",
"https://aperture-media.p3k.io/aaronparecki.com/394d86196afc540e8dc0bc6a4ba230b54ed935e5596370a24e8f1cc4bd98845d.jpg"
],
"content": {
"text": "The 3D printed nylon version of the parts arrived! Did a quick test fit but will have to actually build this later"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "48399933",
"_source": "16"
}
This week's LEGO build progress, saucer section is coming together
{
"type": "entry",
"published": "2026-05-24T10:06:39-07:00",
"url": "https://aaronparecki.com/2026/05/24/10/",
"category": [
"365",
"lego"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/bcb5d12c97ba3e769f04bd51ea2018b2d1b64503edce4830ec732e0874aa0b71.jpg"
],
"content": {
"text": "This week's LEGO build progress, saucer section is coming together"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "48399896",
"_source": "16"
}
Assembled the frame for the rear rack shade/mount and took it on a little test ride! Now I have 100W of solar panels on my bike and a shaded area for things below!
{
"type": "entry",
"published": "2026-05-23T17:44:00-07:00",
"url": "https://aaronparecki.com/2026/05/23/14/",
"category": [
"365",
"bikesummer"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/3ca44c06134c00f7f0cc61711d0bb21f7be4da268a78d9028563d18fa0d36996.jpg"
],
"content": {
"text": "Assembled the frame for the rear rack shade/mount and took it on a little test ride! Now I have 100W of solar panels on my bike and a shaded area for things below!"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "48399897",
"_source": "16"
}
Took a quick break from meetings to run the fiber and cat6 between the buildings finally!
{
"type": "entry",
"published": "2026-05-22T14:18:01-07:00",
"url": "https://aaronparecki.com/2026/05/22/9/",
"category": [
"triplex",
"365"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/ee3a271747bf91e38fd6d5b1ab875bbe49982ca6e8ec9a72db50e3c584644595.jpg",
"https://aperture-media.p3k.io/aaronparecki.com/58d551598996134755c949772f65b9b0389374daf3176b46b57263ca98fae615.jpg"
],
"content": {
"text": "Took a quick break from meetings to run the fiber and cat6 between the buildings finally!"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "48399898",
"_source": "16"
}
Pizza on the grill... still learning, but I like where this is going
{
"type": "entry",
"published": "2026-05-27T19:03:20-07:00",
"url": "https://aaronparecki.com/2026/05/27/14/",
"category": [
"365",
"cooking"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/f4ed6b46d579ccb74e23d5935afcf4c26493d48d2d7129a6b7b83156a35314e4.jpg",
"https://aperture-media.p3k.io/aaronparecki.com/675c8f8454f6137cbaf961350683cc8aeb3b6c3cc88aa3b251c981a511352915.jpg"
],
"content": {
"text": "Pizza on the grill... still learning, but I like where this is going"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "48399856",
"_source": "16"
}
Working on hydroponics plumbing
{
"type": "entry",
"published": "2026-05-26T08:58:20-07:00",
"url": "https://aaronparecki.com/2026/05/26/11/",
"category": [
"365",
"hydroponics"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/88ea103835ef132cde65be8c33ed9d016d412b370ec8a13778bb5982f9fa34b8.jpg",
"https://aperture-media.p3k.io/aaronparecki.com/46414454659535b958c2bb41023493cba64f7e23520fbc2a8d06d61817583d84.jpg"
],
"content": {
"text": "Working on hydroponics plumbing"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "48399857",
"_source": "16"
}
Finally got the connection between the buildings moved over to the new underground fiber line!
{
"type": "entry",
"published": "2026-05-24T18:26:15-07:00",
"url": "https://aaronparecki.com/2026/05/24/9/",
"category": [
"triplex"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/4437321f589d80bb04a86e1601dcf8b9842e072b0a7df32a4b0f113f13fedfe5.jpg",
"https://aperture-media.p3k.io/aaronparecki.com/b1ddb5b74cb1724566a5ef6032aa05a66a539c805e1e177203d03b96e0720627.jpg"
],
"content": {
"text": "Finally got the connection between the buildings moved over to the new underground fiber line!"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "48399858",
"_source": "16"
}
These Steam Deck price hikes are making me worried that the Steam Frame is going to cost a hojillion dollars.
{
"type": "entry",
"published": "2026-05-28T01:44:21.462406+00:00",
"url": "https://cleverdevil.io/2026/these-steam-deck-price-hikes-are-making",
"syndication": [
"https://cleverdevil.club/@jonathan/116649666905747199",
"https://bsky.app/profile/cleverdevil.io/post/3mmuvj2sgxx2e"
],
"content": {
"text": "These Steam Deck price hikes are making me worried that the Steam Frame is going to cost a hojillion dollars.",
"html": "<p>These Steam Deck price hikes are making me worried that the Steam Frame is going to cost a hojillion dollars.</p>"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://cleverdevil.io",
"photo": "https://cleverdevil.io/profile/photo"
},
"post-type": "note",
"_id": "48399355",
"_source": "10"
}
{
"type": "entry",
"published": "2026-05-27T14:17:05-07:00",
"url": "https://boffosocko.com/2026/05/27/segment-pick/",
"category": [
"Acquisition",
"Social Stream",
"Typewriters",
"Ames Typewriter Co.",
"segment picks",
"typewriter tools"
],
"content": {
"text": "",
"html": "<a href=\"https://typespec.com/ames-segment-pick-an-artisan-tool-for-sale-20/\"><img src=\"https://boffosocko.com/wp-content/uploads/2026/05/Segment-Pick-1024x683.jpeg\" alt=\"A pen-sized typewriter segment pick with a curved-shaped tip at the end of a thin metal shaft. It sits on top of a typewritten index card that reads: Last week I ordered a recreation of the Ames Supply Co. segment pick from Paul at Bremerton Typewriter Co. It arrived in the mail today and I'm excited to add it to my typewriter tool collection. Even better, I've recently gotten two new typewriters that will need full clean, oil, and adjusts. I can't wait to put it to good use.\" width=\"660\" height=\"440\" /></a>"
},
"author": {
"type": "card",
"name": null,
"url": null,
"photo": null
},
"post-type": "note",
"_id": "48398912",
"_source": "2785"
}
Cross-domain access is everywhere in today's software landscape. Whether you look at enterprise SaaS applications, AI agents interacting with user data across multiple platforms, or "integrated experiences" pulling information from a calendar, a chat tool, and a wiki—everything eventually needs to talk across boundaries.
{
"type": "entry",
"published": "2026-05-27T16:35:08-07:00",
"summary": "Cross-domain access is everywhere in today's software landscape. Whether you look at enterprise SaaS applications, AI agents interacting with user data across multiple platforms, or \"integrated experiences\" pulling information from a calendar, a chat tool, and a wiki\u2014everything eventually needs to talk across boundaries.",
"url": "https://aaronparecki.com/2026/05/27/10/cross-domain-api-access",
"category": [
"oauth",
"okta",
"xaa",
"id-jag",
"ai"
],
"syndication": [
"https://www.linkedin.com/posts/aaronparecki_ai-agents-interacting-with-user-data-across-share-7465546234120900608-bbbb/?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAF6n2UBIZD-4sM0W4WF1KUgW38CmNh16vU"
],
"name": "Cross-Domain API Access: Beyond the \"Obvious\" Shortcuts",
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "article",
"_id": "48398544",
"_source": "16"
}
In a pre-web analog world, this is what a CMS really was. (Hint: there's actually two in this photo.)
{
"type": "entry",
"published": "2026-05-27T09:34:35-07:00",
"summary": "In a pre-web analog world, this is what a CMS really was. (Hint: there’s actually two in this photo.)",
"url": "https://boffosocko.com/2026/05/27/pre-web-cms/",
"category": [
"Social Stream",
"Typewriters",
"analog office",
"card index as database",
"content management systems",
"The Chicago Manual of Style"
],
"content": {
"text": "In a pre-web analog world, this is what a CMS really was. (Hint: there's actually two in this photo.)",
"html": "In a pre-web analog world, this is what a CMS <em>really</em> was. (Hint: there's actually two in this photo.)\n\n<img src=\"https://boffosocko.com/wp-content/uploads/2026/05/wp-17798992255946808612683483855781-1024x768.jpg\" alt=\"An orange covered 14th edition of The Chicago Manual of Style sits on a table in front of an Olympia SG1 typewriter with an oak card index filing cabinet beside it.\" width=\"660\" height=\"495\" />"
},
"author": {
"type": "card",
"name": null,
"url": null,
"photo": null
},
"post-type": "note",
"_id": "48394906",
"_source": "2785"
}
The Stanley Kramer comedy classic film It's a Mad, Mad, Mad, Mad World (United Artists, 1963) has a handful of Royal KMG typewriters featured in the office settings at police stations throughout the film. The KMG was Royal's top-of-the-line office standard machine and was manufactured from 1949 to 1952 before being replaced by the Royal HH (1952 to 1957) and the Royal FP (1957to 1962). By the time the film premiered in November of 1963, the newest desktop manual would have been the Royal Empress (1962-1966).
The featured Royal KMG of the film sits in the center of Capt. T. G. Culpeper's (portrayed by Spencer Tracy) squad room and another appears in the background there.







Another Royal KMG appears in the sheriff's office of Crockett Country with the Sheriff portrayed by well known character actor Andy Devine.
[caption id="attachment_55835731" align="aligncenter" width="660"]
Andy Devine as the old sheriff with bushy gray eyebrows and a reddish face is on a black rotary desk phone in his office as a closely cropped deputy sits behind him at a desk where we see the left side of a gray Royal KMG typewriter in the background.[/caption]
Of tangential note, comedian and writer Carl Reiner, who portrays the tower controller at Rancho Conejo at which Mickey Rooney and Buddy Hackett attempt to land their airplane, is known to have have used a Royal KMG, though one doesn't appear in any of his scenes in the air traffic control tower.
{
"type": "entry",
"published": "2026-05-26T00:22:37-07:00",
"summary": "The Stanley Kramer comedy classic film It’s a Mad, Mad, Mad, Mad World (United Artists, 1963) has a handful of Royal KMG typewriters featured in the office settings at police stations throughout the film. The KMG was Royal’s top-of-the-line office standard machine and was manufactured from 1949 to 1952 before being replaced by the Royal … <a href=\"https://boffosocko.com/2026/05/26/the-royal-kmg-standard-typewriters-of-its-a-mad-mad-mad-mad-world/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">The Royal KMG Standard Typewriters of It’s a Mad, Mad, Mad, Mad World</span></a>",
"url": "https://boffosocko.com/2026/05/26/the-royal-kmg-standard-typewriters-of-its-a-mad-mad-mad-mad-world/",
"featured": "https://boffosocko.com/wp-content/uploads/2026/05/Tracy-Royal-KMG-010257.jpg",
"category": [
"Typewriters",
"Andy Devine",
"It's a Mad Mad Mad Mad World (United Artists 1963)",
"Royal KMG",
"Royal typewriters",
"Spencer Tracy",
"typewriters in media"
],
"content": {
"text": "The Stanley Kramer comedy classic film It's a Mad, Mad, Mad, Mad World (United Artists, 1963) has a handful of Royal KMG typewriters featured in the office settings at police stations throughout the film. The KMG was Royal's top-of-the-line office standard machine and was manufactured from 1949 to 1952 before being replaced by the Royal HH (1952 to 1957) and the Royal FP (1957to 1962). By the time the film premiered in November of 1963, the newest desktop manual would have been the Royal Empress (1962-1966).\n\nThe featured Royal KMG of the film sits in the center of Capt. T. G. Culpeper's (portrayed by Spencer Tracy) squad room and another appears in the background there.\n\n\n\nAnother Royal KMG appears in the sheriff's office of Crockett Country with the Sheriff portrayed by well known character actor Andy Devine.\n\n[caption id=\"attachment_55835731\" align=\"aligncenter\" width=\"660\"] Andy Devine as the old sheriff with bushy gray eyebrows and a reddish face is on a black rotary desk phone in his office as a closely cropped deputy sits behind him at a desk where we see the left side of a gray Royal KMG typewriter in the background.[/caption]\n\n\u00a0\n\nOf tangential note, comedian and writer Carl Reiner, who portrays the tower controller at Rancho Conejo at which Mickey Rooney and Buddy Hackett attempt to land their airplane, is known to have have used a Royal KMG, though one doesn't appear in any of his scenes in the air traffic control tower.",
"html": "The Stanley Kramer comedy classic film <em>It's a Mad, Mad, Mad, Mad World</em> (United Artists, 1963) has a handful of <a href=\"https://typewriterdatabase.com/Royal.KMG.72.bmys\">Royal KMG typewriters</a> featured in the office settings at police stations throughout the film. The KMG was Royal's top-of-the-line office standard machine and was manufactured from 1949 to 1952 before being replaced by the <a href=\"https://typewriterdatabase.com/Royal.HH.72.bmys\">Royal HH</a> (1952 to 1957) and the <a href=\"https://typewriterdatabase.com/Royal.FP.72.bmys\">Royal FP</a> (1957to 1962). By the time the film premiered in November of 1963, the newest desktop manual would have been the <a href=\"https://typewriterdatabase.com/Royal.Empress.72.bmys\">Royal Empress</a> (1962-1966).\n\nThe featured Royal KMG of the film sits in the center of Capt. T. G. Culpeper's (portrayed by Spencer Tracy) squad room and another appears in the background there.\n\n<img src=\"https://boffosocko.com/wp-content/uploads/2026/05/two-typewriters-in-office-2221-1024x576.jpg\" alt=\"A switchboard operator with a headset in a police department office. In the background is a secretary at a gray Royal KMG typewriter on a small typewriter desk. On the wall behind them is a map charting the chase route of the people chasing the missing money. In the back corner in front of the map is another Royal KMG.\" width=\"660\" height=\"371\" /><img src=\"https://boffosocko.com/wp-content/uploads/2026/05/Royal-KMG-in-office-2224-1024x576.jpg\" alt=\"The switchboard operator at her board in the foreground as Culpepper's secretary types on a Royal KMG just behind her at a small typing table next to her tanker desk.\" width=\"660\" height=\"371\" /><img src=\"https://boffosocko.com/wp-content/uploads/2026/05/KMG-on-desk-2401-1024x576.jpg\" alt=\"A sargent in a white uniform leans over a tanker desk to talk to the secretary outside of Captain Cullpepper's office. The secretary is facing away from him working at her Royal KMG typewriter\" width=\"660\" height=\"371\" /><img src=\"https://boffosocko.com/wp-content/uploads/2026/05/Tracy-with-two-royal-KMGs-fore-adn-back-1024x576.jpg\" alt=\"Spencer Tracy in a 3/4 shot wearing a black suit and tie and a fedora while he's on the phone. Just in front of him is a secretary's Royal KMG typewriter. Another typewriter sits on a desk in the far background.\" width=\"660\" height=\"371\" /><img src=\"https://boffosocko.com/wp-content/uploads/2026/05/Tracy-with-Royal-KMG-foreground-010240-1024x576.jpg\" alt=\"Spencer Tracy on the telephone next to his secretary at her Royal KMG typewriter. Between them in the background is a map tracing the route of the bank robber.\" width=\"660\" height=\"371\" /><img src=\"https://boffosocko.com/wp-content/uploads/2026/05/Tracy-with-Royal-KMG-background-2242-1024x576.jpg\" alt=\"Spencer Tracy walking out of the Detective's Division. In the background are another officer and a Royal KMG typewriter.\" width=\"660\" height=\"371\" /><img src=\"https://boffosocko.com/wp-content/uploads/2026/05/Tracy-Royal-KMG-010257-1024x576.jpg\" alt=\"Tracy pointing across the room in the foreground as his secretary types on a standard Royal KMG.\" width=\"660\" height=\"371\" /><img src=\"https://boffosocko.com/wp-content/uploads/2026/05/KMG-on-desk-edge-022147-1024x576.jpg\" alt=\"A police station bullpen with five officers gathered around a desk as one radios out orders. On the right hand side just behind them on a desk we see the left side of a Royal KMG typewriter\" width=\"660\" height=\"371\" />\n\nAnother Royal KMG appears in the sheriff's office of Crockett Country with the Sheriff portrayed by well known character actor Andy Devine.\n\n[caption id=\"attachment_55835731\" align=\"aligncenter\" width=\"660\"]<img src=\"https://boffosocko.com/wp-content/uploads/2026/05/Sheriff-typewriter-2302-1024x576.jpg\" alt=\"\" width=\"660\" height=\"371\" /> Andy Devine as the old sheriff with bushy gray eyebrows and a reddish face is on a black rotary desk phone in his office as a closely cropped deputy sits behind him at a desk where we see the left side of a gray Royal KMG typewriter in the background.[/caption]\n\n\u00a0\n\nOf tangential note, comedian and writer Carl Reiner, who portrays the tower controller at <em><span title=\"translates from Spanish as Bunny Ranch\">Rancho Conejo</span></em> at which Mickey Rooney and Buddy Hackett attempt to land their airplane, is <a href=\"https://site.xavier.edu/polt/typewriters/reinerkmg.jpg\">known to have have used a Royal KMG</a>, though one doesn't appear in any of his scenes in the air traffic control tower."
},
"author": {
"type": "card",
"name": null,
"url": null,
"photo": null
},
"post-type": "note",
"_id": "48376059",
"_source": "2785"
}
I’m working on a new search feature in indiebookclub which uses Open Library and supports cover images. It has me tinkering with the UI of the posting form and I’m interested in feedback about this first pass.
My first thought was to display the selected book information in a more compact, read-only block at the top of the form so you only have to select the status (want to read, currently reading, finished reading), then optionally add tags and other choices if you are using Micropub.
However, I still want to give people the option to update the book information before they post, so I was considering a button that would change the book information into editable fields. I experimented with various options and did not come up with anything I loved. I am now leaning towards always showing the fields with the populated values. Keep it simple.

Screenshot 1: on larger screens

Screenshot 2: on smaller screens
I did make the form more compact overall: less padding inside the form fields, less vertical space between them, and a horizontal layout on larger screens (using this WCAG technique). I also moved the timezone offset field out of a collapsed details element.
For comparison, below is a screenshot of the form as it exists. There are still a few parts of it that need to be put into my mockups, like choosing ISBN or DOI.

Screenshot 3: the posting form as it appears currently, for comparison
There will still be an option to use this form without searching Open Library, so if you are using a bookmarklet or prefer to type in all the fields, that will continue to work.
I look forward to any feedback or questions!
{
"type": "entry",
"published": "2026-05-25 16:06-0700",
"url": "https://gregorlove.com/2026/05/im-working-on/",
"category": [
"indieweb",
"dev",
"indiebookclub"
],
"content": {
"text": "I\u2019m working on a new search feature in indiebookclub which uses Open Library and supports cover images. It has me tinkering with the UI of the posting form and I\u2019m interested in feedback about this first pass.\n\nMy first thought was to display the selected book information in a more compact, read-only block at the top of the form so you only have to select the status (want to read, currently reading, finished reading), then optionally add tags and other choices if you are using Micropub.\n\nHowever, I still want to give people the option to update the book information before they post, so I was considering a button that would change the book information into editable fields. I experimented with various options and did not come up with anything I loved. I am now leaning towards always showing the fields with the populated values. Keep it simple.\n\nScreenshot 1: on larger screens\nScreenshot 2: on smaller screens\nI did make the form more compact overall: less padding inside the form fields, less vertical space between them, and a horizontal layout on larger screens (using this WCAG technique). I also moved the timezone offset field out of a collapsed details element.\n\nFor comparison, below is a screenshot of the form as it exists. There are still a few parts of it that need to be put into my mockups, like choosing ISBN or DOI.\n\nScreenshot 3: the posting form as it appears currently, for comparison\nThere will still be an option to use this form without searching Open Library, so if you are using a bookmarklet or prefer to type in all the fields, that will continue to work.\n\nI look forward to any feedback or questions!",
"html": "<p>I\u2019m working on a new search feature in <a href=\"https://indiebookclub.biz\">indiebookclub</a> which uses <a href=\"https://openlibrary.org/\">Open Library</a> and supports cover images. It has me tinkering with the UI of the posting form and I\u2019m interested in feedback about this first pass.</p>\n\n<p>My first thought was to display the selected book information in a more compact, read-only block at the top of the form so you only have to select the status (want to read, currently reading, finished reading), then optionally add tags and other choices if you are using <a href=\"https://micropub.net/\">Micropub</a>.</p>\n\n<p>However, I still want to give people the option to update the book information before they post, so I was considering a button that would change the book information into editable fields. I experimented with various options and did not come up with anything I loved. I am now leaning towards always showing the fields with the populated values. Keep it simple.</p>\n\n<img alt=\"screenshot of new posting UI that has fields: read status, title, by, ISBN, tags, status, visibility, published date, and timezone offset; all displayed in a horizontal layout on a larger screen\" src=\"https://gregorlove.com/site/assets/files/7277/screen_shot_2026-05-25_at_15_15_25.png\" /><p>Screenshot 1: on larger screens</p>\n<img alt=\"screenshot of new posting UI with the same fields described above; all displayed in a vertical layout on a smaller screen\" src=\"https://gregorlove.com/site/assets/files/7277/screen_shot_2026-05-25_at_14_53_23.png\" /><p>Screenshot 2: on smaller screens</p>\n<p>I did make the form more compact overall: less padding inside the form fields, less vertical space between them, and a horizontal layout on larger screens (using <a href=\"https://www.w3.org/WAI/WCAG21/Techniques/css/C38\">this WCAG technique</a>). I also moved the timezone offset field out of a collapsed <code>details</code> element.</p>\n\n<p>For comparison, below is a screenshot of the form as it exists. There are still a few parts of it that need to be put into my mockups, like choosing ISBN or DOI.</p>\n\n<img alt=\"screenshot of current posting UI with the same fields described above\" src=\"https://gregorlove.com/site/assets/files/7277/screen_shot_2026-05-25_at_15_49_05.png\" /><p>Screenshot 3: the posting form as it appears currently, for comparison</p>\n<p>There <em>will</em> still be an option to use this form without searching Open Library, so if you are using a bookmarklet or prefer to type in all the fields, that will continue to work.</p>\n\n<p>I look forward to any feedback or questions!</p>"
},
"author": {
"type": "card",
"name": "gRegor Morrill",
"url": "https://gregorlove.com/",
"photo": "https://gregorlove.com/site/assets/files/6268/profile-2021-square.300x0.jpg"
},
"post-type": "note",
"_id": "48374774",
"_source": "95"
}
First day with the new grill worked out pretty well!
{
"type": "entry",
"published": "2026-05-25T18:27:39-07:00",
"url": "https://aaronparecki.com/2026/05/25/14/",
"category": [
"365"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/35dc5b8cc0d9cbf5dc459062902733bfe7a771d1872a3a7a86a98888c4c7aa3c.jpg"
],
"content": {
"text": "First day with the new grill worked out pretty well!"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "48374599",
"_source": "16"
}
I once offered gRegor to write up a bookmarklet for turning Bookshop.org book pages into want-to-read (or currently-reading or finished-reading) posts on your own site with Micropub courtest of IndieBookClub.biz.
Then I lost my main computer’s SSD and my browser bookmarks!
Today I re-created it to make some posts on my site, so here it is!
javascript:(function()%7Bconst%20ld%20%3D%20JSON.parse(document.querySelector('script%5Btype%3D%22application%2Fld%2Bjson%22%5D').textContent)%3B%0Aconst%20p%20%3D%20new%20URLSearchParams(%7B%0Atitle%3A%20ld.name%2C%0Aauthors%3A%20ld.author%5B0%5D.name%2C%0Aisbn%3A%20ld.isbn%2C%0Atags%3A%20'books'%2C%0A'post-status'%3A%20'published'%0A%7D)%3B%0Adocument.location%20%3D%20'https%3A%2F%2Findiebookclub.biz%2Fnew%3F'%20%2B%20p.toString()%3B%7D)()
Here’s the original source for study or to edit to your enjoyment! (I enjoy Marek Gibney’s Bookmarklet Editor for this!)
const ld = JSON.parse(document.querySelector('script[type="application/ld+json"]').textContent);
const p = new URLSearchParams({
title: ld.name,
authors: ld.author[].name,
isbn: ld.isbn,
tags: 'books',
'post-status': 'published'
});
document.location = 'https://indiebookclub.biz/new?' + p.toString();
What does this do?
Bookshop.org book pages have a <script> tag marked as a “JSON-encoded Linked Data island” (pejorative) also known as JSON data.
The bookmarklet finds and parses this then (quick and dirty) pulls out likely book title, ISBN, and author and combines these with another couple of options (I tag all my reading posts with “books” and I want the posts to be published by default). Those options are turned into URL query string parameters, as described in IndieBookClub.biz’ documentation and sends your browser over there, where IndieBookClub(dot biz) handles the rest!
{
"type": "entry",
"published": "2026-05-25T17:24:30-0400",
"url": "https://martymcgui.re/2026/05/25/172430/",
"category": [
"IndieWeb",
"bookmarklets"
],
"content": {
"text": "I once offered gRegor to write up a bookmarklet for turning Bookshop.org book pages into want-to-read (or currently-reading or finished-reading) posts on your own site with Micropub courtest of IndieBookClub.biz.\nThen I lost my main computer\u2019s SSD and my browser bookmarks!\nToday I re-created it to make some posts on my site, so here it is!\njavascript:(function()%7Bconst%20ld%20%3D%20JSON.parse(document.querySelector('script%5Btype%3D%22application%2Fld%2Bjson%22%5D').textContent)%3B%0Aconst%20p%20%3D%20new%20URLSearchParams(%7B%0Atitle%3A%20ld.name%2C%0Aauthors%3A%20ld.author%5B0%5D.name%2C%0Aisbn%3A%20ld.isbn%2C%0Atags%3A%20'books'%2C%0A'post-status'%3A%20'published'%0A%7D)%3B%0Adocument.location%20%3D%20'https%3A%2F%2Findiebookclub.biz%2Fnew%3F'%20%2B%20p.toString()%3B%7D)()\nHere\u2019s the original source for study or to edit to your enjoyment! (I enjoy Marek Gibney\u2019s Bookmarklet Editor for this!)\nconst ld = JSON.parse(document.querySelector('script[type=\"application/ld+json\"]').textContent);\nconst p = new URLSearchParams({\n title: ld.name,\n authors: ld.author[].name,\n isbn: ld.isbn,\n tags: 'books',\n 'post-status': 'published'\n});\ndocument.location = 'https://indiebookclub.biz/new?' + p.toString();\nWhat does this do?\nBookshop.org book pages have a <script> tag marked as a \u201cJSON-encoded Linked Data island\u201d (pejorative) also known as JSON data.\nThe bookmarklet finds and parses this then (quick and dirty) pulls out likely book title, ISBN, and author and combines these with another couple of options (I tag all my reading posts with \u201cbooks\u201d and I want the posts to be published by default). Those options are turned into URL query string parameters, as described in IndieBookClub.biz\u2019 documentation and sends your browser over there, where IndieBookClub(dot biz) handles the rest!",
"html": "<p>I once offered <a href=\"https://gregorlove.com/\">gRegor</a> to write up a bookmarklet for turning <a href=\"https://bookshop.org/\">Bookshop.org</a> book pages into want-to-read (or currently-reading or finished-reading) posts on your own site with Micropub courtest of <a href=\"https://indiebookclub.biz/\">IndieBookClub.biz</a>.</p>\n<p>Then I lost my main computer\u2019s SSD and my browser bookmarks!</p>\n<p>Today I re-created it to make some posts on my site, so here it is!</p>\n<pre><code>javascript:(function()%7Bconst%20ld%20%3D%20JSON.parse(document.querySelector('script%5Btype%3D%22application%2Fld%2Bjson%22%5D').textContent)%3B%0Aconst%20p%20%3D%20new%20URLSearchParams(%7B%0Atitle%3A%20ld.name%2C%0Aauthors%3A%20ld.author%5B0%5D.name%2C%0Aisbn%3A%20ld.isbn%2C%0Atags%3A%20'books'%2C%0A'post-status'%3A%20'published'%0A%7D)%3B%0Adocument.location%20%3D%20'https%3A%2F%2Findiebookclub.biz%2Fnew%3F'%20%2B%20p.toString()%3B%7D)()\n</code></pre><p>Here\u2019s the original source for study or to edit to your enjoyment! (I enjoy Marek Gibney\u2019s <a href=\"https://www.gibney.org/bookmarklet_editor\">Bookmarklet Editor</a> for this!)</p>\n<pre><code>const ld = JSON.parse(document.querySelector('script[type=\"application/ld+json\"]').textContent);\nconst p = new URLSearchParams({\n title: ld.name,\n authors: ld.author[].name,\n isbn: ld.isbn,\n tags: 'books',\n 'post-status': 'published'\n});\ndocument.location = 'https://indiebookclub.biz/new?' + p.toString();\n</code></pre><p>What does this do?</p>\n<p>Bookshop.org book pages have a <code><script></code> tag marked as a \u201cJSON-encoded Linked Data island\u201d (pejorative) also known as JSON data.</p>\n<p>The bookmarklet finds and parses this then (quick and dirty) pulls out likely book title, ISBN, and author and combines these with another couple of options (I tag all my reading posts with \u201cbooks\u201d and I want the posts to be published by default). Those options are turned into URL query string parameters, as described in <a href=\"https://indiebookclub.biz/documentation#query\">IndieBookClub.biz\u2019 documentation</a> and sends your browser over there, where IndieBookClub(dot biz) handles the rest!</p>"
},
"author": {
"type": "card",
"name": "Marty McGuire",
"url": "https://martymcgui.re/",
"photo": "https://martymcgui.re/images/logo.jpg"
},
"post-type": "note",
"_id": "48373074",
"_source": "175"
}
📕 Finished reading House of Leaves by Mark Z. Danielewski ISBN: 9780375703768
{
"type": "entry",
"published": "2026-05-25T17:09:50-0400",
"summary": "\ud83d\udcd5 Finished reading House of Leaves by Mark Z. Danielewski ISBN: 9780375703768",
"url": "https://martymcgui.re/2026/05/25/170950/",
"category": [
"books"
],
"author": {
"type": "card",
"name": "Marty McGuire",
"url": "https://martymcgui.re/",
"photo": "https://martymcgui.re/images/logo.jpg"
},
"post-type": "note",
"_id": "48373075",
"_source": "175"
}
📕 Finished reading Lessons in Magic and Disaster by Charlie Jane Anders ISBN: 9781250867322
{
"type": "entry",
"published": "2026-05-03T16:22:00+0000",
"summary": "\ud83d\udcd5 Finished reading Lessons in Magic and Disaster by Charlie Jane Anders ISBN: 9781250867322",
"url": "https://martymcgui.re/2026/05/03/122200/",
"category": [
"books"
],
"author": {
"type": "card",
"name": "Marty McGuire",
"url": "https://martymcgui.re/",
"photo": "https://martymcgui.re/images/logo.jpg"
},
"post-type": "note",
"_id": "48373076",
"_source": "175"
}