Week 2023-38

    Last weekend, I installed the iPadOS Release Candidate on both of our iPads because I anticipated a busy week ahead and knew I wouldn’t have much time to explore the new system. As for my phone and watch, I decided to wait for the official release.

    This weekend, I did the same with Sonoma by installing it on my personal computer. There were a couple of new APIs I wanted to try, and considering the upcoming busy week, I thought it would be more convenient to do it this way.

    Sonoma, along with iOS/iPadOS 17, finally introduced a feature I’ve been longing for in Safari: Profiles. I had been using Firefox and Arc primarily for this feature, which allowed me to have separate containers for regular browsing, banking, online shopping, and more.

    After upgrading all my devices, I dedicated some time to resetting Safari and transferring all my bookmarks back into it.

    Speaking of Safari and Firefox, I came across a Firefox Coffee Stand next to an Apple Store on Friday, with a sign that read, “Safari is a great browser… to download Firefox.” But I won’t comment on this, as I use Safari on all my devices, while my wife prefers Firefox for hers…

    I visited the Apple Store to check out the new iPhones and decided to get one. Apple offers a good trade-in value for my iPhone 13 Pro Max, so I made the decision to switch. The only problem is that it might take some time, as the Apple Store app indicates that there are currently no iPhones in stock, and the next delivery date is in November. This gives me ample time to decide whether I want to buy a FineWoven Case or not.

    In the digital realm, I deleted my Bluesky, Twitter, Flickr, and Babbel accounts. I also removed my Playdate account since I don’t plan on ordering a Playdate anytime soon.

    And I made a minor adjustment to my Micro.publish plugin development workflow. Now, whenever I create a git tag on the plugin’s source code, it triggers a GitHub Action that creates a release. This eliminates the need for manual steps such as dragging and dropping files.

    Other than that, business as usual. It was a busy week.

    Week 2023-37

    It was a shorter week for me as I took Friday off to unwind. Well, I must admit, I did spend some time reading and catching up on articles from the ‘read-it-later’ service I use, and watching the news from my Country.

    This week, I released version 2.0.0 of my Obsidian plug-in, Micro.publish, which now allows users to edit Micro.blog posts that were previously published using the plug-in. Implementing this feature was a lot of fun, and I’m thrilled with the results. In fact, both of the lengthy posts I published this week were composed and edited (a couple of times) using the plug-in:

    As they say, “eat your own dog food.”

    I also wrapped up the second season of The Bear, which is a fantastic TV show. I’m crossing my fingers for another season!

    Additionally, I finished watching the second season of The Afterparty without any idea who the killer would turn out to be.

    And I’m all caught up with Only Murders in the Building, yet another killer — pun intended — TV show.

    On the digital front, I decided to delete my Pixelfed, Lemmy, and Kbin accounts. Since I never really used these accounts, it made sense to bid them farewell.

    Lastly, there’s some exciting news on the personal front: tinyScientist sprouted another tooth! The milestones just keep coming!

    Micro.publish 2.0.0

    Starting from version 2.0.0, it is possible to update a post that was previously composed and published via Micro.publish.

    Before diving into the specifics of this feature, it’s important to mention a few design decisions that were made in order to implement this functionality.

    Technical Details

    Micro.blog conforms to the Micropub protocol, which outlines the procedures for publishing notes, uploading images, assigning categories, saving bookmarks, and updating posts.

    When updating a post, the protocol requires the inclusion of the following information:

    • The original post’s URL.
    • The blogID, especially relevant for users managing multiple blogs.
    • The updated content and/or title of the post.

    Obsidian offers plugins developers the option to locally store data within the vault. However, this capability is limited and necessitates custom implementation. For this reason, it was decided to store the published post’s URL within the Obsidian note itself using YAML frontmatter (and the new Properties feature). This approach ensures that the information remains readily accessible and easily modifiable if necessary.

    Version 2.0.0

    For posts published with version 2.0.0 or newer, the post’s URL will be added to the Markdown file in the YAML frontmatter/Property.

    For those in Edit mode, it appears as a Property as shown below:

    Properties

    And for those utilizing the Source mode, as YAML:

    Frontmatter

    Once the note or title has been edited (either through the filename or YAML/Property), updating is as simple as using the Post to Micro.blog command from the Command Palette. A simplified version of the Review view will appear, displaying the post’s title. For users with multiple blogs, it will prompt them to confirm which blog the post belongs to.

    Review/Edit

    Editing posts from previous versions

    It is also possible to update posts that were published using Micro.publish versions prior to 2.0.0. To do so, you must include a Property (or field in the YAML frontmatter) named url containing the URL of the published post, as illustrated below.

    To include a new Property, simply follow these steps in the Command Palette:

    Add Property

    And add the url with the published post URL:

    Properties

    Those who prefer the YAML file can add the the url using the format:

    ---
    url: https://example.com/path/to/post.html
    ---
    

    After editing the note or title (either through the filename or YAML/Property), updating is as straightforward as utilizing the Post to Micro.blog command from the Command Palette. Similar to the process for version 2.0.0, a simplified version of the Review view will be presented, featuring the post’s title. For users with multiple blogs, it will inquire about the blog to which the post should be associated.

    Week 2023-36

    I’ve been working on version 2.0.0 of Micro.publish, which will introduce the ability to edit Micro.blog posts originally composed and published through Obsidian. I’ve managed to allocate a small fraction of my daily time to this project, and progress has been quite promising. I already have it functioning, and I’m currently in the testing phase before releasing it.

    I made a change in my online presence, deleting my old Matrix account, which had been lying dormant, and creating a new one using the omg.lol server.

    Also part of the recent changes, I decided to remove Bluesky from my phone and disabled cross-posting to Bluesky and Nostr. I’ll continue cross-posting to Mastodon but have enabled the “Automated Post Deletion” feature for posts older than one week. In the case of Bluesky, I went ahead and deleted all of my posts there.

    I went on a trip to Lithuania for our Apple Team off-site. We spent our time in cabins in the countryside, and the remarkable thing about our getaway was that work was the only topic we deliberately avoided. During my stay, I made the most of the picturesque setting to capture numerous photos.

    When returning home, I was warmly welcomed by scientist and tinyScientist at the airport. tinyScientist seemed frozen at first when he saw me, but quickly jumped into my arms once we reunited.

    Last but not least, exciting news, tinyScientist just sprouted his very first tooth!

    👨‍💻 Posting and updating a Micro.blog post via Obsidian. Soon.

    👨‍💻 The next iteration of Micro.publish will be version 2.0.0, and I intend to add a new feature enabling users to edit their Micro.blog posts. When? Later this week!

    Week 2023-35

    Earlier this week, I published Micro.publish 1.7.0, which introduces support for YAML frontmatter/Properties for titles and tags. I am so happy with all the feedback I received and all the coffees I was gifted!

    I renewed my subscription to Obsidian Sync. I had canceled it a while ago, but I realized that Obsidian is the best solution for note-taking and syncing notes between different devices. I need my Zettelkasten on both my personal and work devices.

    We took tinyScientist to two doctor’s appointments this week. The first was a routine checkup with the pediatrician, and the second was a follow-up appointment with a specialist (related to the surgery he had earlier this year). tinyScientist is doing well!

    I am very particular about color schemes and wallpapers, but this week I found the perfect wallpaper for my computer and phone.

    I also updated several entries in my Digital Garden:

    and the Micro.publish page on GitHub, which is the content displayed in Obsidian’s Community Plugins section.

    I received some very sad news that my favorite barista in the city passed away suddenly. Not only was her coffee amazing, but she was also a wonderful person. She always treated tinyScientist very well, and he loved her.

    Last but not least, it was my work anniversary. I have been with Nord Security (NordVPN) for two years now. Every year, we receive a gift from the company, and this year I got a baseball cap with the NordVPN logo on it.

    👨‍💻 I’ve updated the following pages:

    👨‍💻 Micro.publish 1.7.0 is out. The plugin is available in the Community Plugins area inside Obsidian.

    Micro.publish 1.7.0 Preview

    👨‍💻 I am adding YAML frontmatter support to Micro.publish. It also works with the new Properties feature introduced in Obsidian 1.4, which is essentially a user-friendly interface for the less aesthetically pleasing YAML syntax.

    • Micro.publish will use the title property in the frontmatter or Properties, if it exists. Otherwise, it will fall back to the filename.
    • Micro.publish will use the tags property in the frontmatter or Properties, if it exists. Otherwise, it will use the default categories configured in Micro.publish’s preferences.

    I plan to code review my code tomorrow and release version 1.7.0 by the end of the day, hopefully.

    👨‍💻 Decided to work on my Obsidian plugin Micro.publish a little bit today. Managed to get the frontmatter information from a note and am thinking of using it when posting to Micro.blog. Post title and categories/tags would be in the first implementation.

    Week 2023-23

    The last notes I wrote are from Week 2023-18, and so many things happened since that post that I won’t even try to remember all the details. Instead, I’ll focus in some of the highlights.

    Personal

    tinyScientist had his first surgery and had to stay in hospital for almost a week for recovery.

    The surgery took seven hours, from the first incision to the last stitch, according to the doctors, followed by another two hours in post-anesthesia recovery. An eternity if you ask us. But we were waiting and preparing for this day since the fourth month of pregnancy, having monthly appointments with doctors and midwife to talk about the surgery, steps for before and after, etc…

    The surgery was a success, and tinyScientist is recovering well. He was exhausted and bored during the week he had to stay hospitalized, but that’s all in the past now.

    To celebrate I asked Andy Carolan to create profile pictures for the family. They’re all awesome, but tinyScientist’s is a piece of art.

    Watching

    Watched two movies recently, Dungeons & Dragons: Honor Among Thieves and The Super Mario Bros. Movie.

    I was skeptical about D&D, but loved the movie. The balance between humor, action, and luck is perfect. Great easter eggs as well!

    Super Mario is fun, good entertainment. I don’t understand why people were complaining about it. It’s a kids movie, what were they expecting?

    Playing

    The Legend of Zelda: Tears of the Kingdom was released the day my son had his surgery. On the day before - thanks Amazon! - I got the standard version and on the release day I got the Collector’s Edition.

    The days after the surgery were extremely busy and I didn’t find time to play it, but this week I finally did. What can I say? It’s even better than the best game ever made (The Legend of Zelda: Breath of the Wild).

    Reading

    I love a good dystopian story, and when I saw the trailer for Silo I decided to buy the The Silo Saga to read.

    Hacking

    Micro.publish

    A user reported that Micro.publish allowed to run the publish command with an empty post, resulting in error since Micro.blog doesn’t support empty posts (obviously).

    So I released a minor update - 1.6.0 - fixing it. After the change, users will be prompted with a message saying they have to write something before publishing into Micro.blog.

    I’ve also updated the donate button inside the Plug-in to use Ko-fi instead of BuyMeACoffee. I like that platform better.

    omg.lol

    I’m back working on my omg.lol client for macOS. Didn’t put much time on it, but was using and testing the app to make sure it looks good for releasing it.

    App.net import

    Quickly wrote a script to download all my App.net posts and published them as a page in my blog. I might, someday, import those posts as regular posts in this blog, but for now I’ll keep them in a separate page.

    🔗 Otávio C.

    Canceled Obsidian Sync and Publish today. I’m using Micro.blog to host my mini Digital Garden.

    I’m not using any plugin to maintain a Digital Garden on Micro.blog. It would require a lot of transformation (file paths, dealing with file names, etc…) and I don’t have much time now to put into a new plugin. For now it’s all manually maintained.

    The only Obsidian plugin I use is Micro.publish, for blog posts.

    👨‍💻 Once I finish the Webpage Feature of my omg.lol client I’ll add support to editing a Micro.blog post to my Obsidian plugin, Micro.publish.

    Week 2023-14

    Personal

    tinyScientist got a new bed. They grow so fast!

    After using so many Read Later services in the last decade, I believe I can finally stop looking for the right one for me. Readwise’s Read works the way I need a Read Later app to work. Both their apps, Readwise and Read, have performance and UX issues, but they work, deliver what they promise, and are always improving. I was skeptical with all those YouTube videos praising the service, but I decided to give it a try and am impressed.

    Last week I migrated all my personal notes from Obsidian to Bear, but maybe I was too eager to try Bear’s update that I rushed things. Thinking again, Obsidian (and some other apps) offer something Bear doesn’t: access to the notes without having to use the their app. Obsidian uses simple Markdown files in the file system, while Bear stores all notes and assets in a sqlite database, hidden away from the user.

    Portability is an important thing nowadays, especially with so many apps hiding their features behind subscriptions. With simple Markdown files I can edit my notes with anything, including my beloved Vim.

    Work

    Another short week at work, 7th of April was the first day of Easter (Good Friday). But I went to the office twice, on Monday and Wednesday, for 1-on-1s with the folks from my team, to support them with their Development Plans.

    Hacking

    I had plans to work on the Webpage Feature of my native omg.lol client for macOS, but decided to work a little bit on Micro.publish, my Obsidian plugin to post to Micro.blog.

    Readwise’s plugin for Obsidian automatically fetches highlights and notes when Obsidian launches, so I decided to do the same for Micro.blog categories. Now, when the user opens Obsidian, it fetches the categories one has on their blogs.

    The command to force fetch categories is still present and can be used at any time to retrieve categories (e.g., in case new categories were added directly to Micro.blog while Obsidian was open).

    Another feature I’ve added is the ability to schedule a post for a future date. I usually don’t scheduled my posts, but it’s a nice feature to have.

    I’ve also updated my blog’s colors to match the Obsidian dark theme I use, and used Xcode dark colors for the code snippets. Feels much more natural to me now.

    Photography

    During the week I published another page to my Digital Garden, Obscura, where I detail the setup I have to take Monochrome photos using the app.

    Later during the week I updated the page to include the missing piece in my setup, which was causing Glass not to show the EXIF of my photos.

    After talking to Ben, Software Engineer behind Obscura, we found what was missing, and now my setup is exactly the way I wanted it to be: Monochrome photos by default, saving JPEG SOOC, and with EXIF preserved, ready to share online (or not).

    👨‍💻 I’ve updated Micro.publish with the following features:

    • As a user I want to schedule my post to be published in a specific date
    • As a user I want Obsidian to automatically fetch my Categories when the app launches

    The plugin can be installed from within Obsidian in Community Plugins.

    👨‍💻 I forgot to mention, but I’ve added to Micro.publish, my Obsidian Plugin to post to Micro.blog, a picker to select Categories to apply to a post. There’s a command to force Obsidian to synchronize the Categories, and the picker will remember the categories added and won’t suggest them again.

    Week 2023-06

    Braille Institute released a font for low vision readers, Atkinson Hyperlegible. The font is great and I asked Matter to add it to their list of supported fonts. Matter accepted my requested and within a couple of hours they deployed the changes. I’ve update my blog to use Atkinson Hyperlegible as well.

    I keep going back-and-forth between Reminders and Things. Every time there’s a new macOS version I go back to Reminders to see what changed. But the truth is, Things is an amazing app and I decided to go back to it. The best of all, I can synchronize Things on all the computers I use, no matter if they’re using the same Apple ID or not. Reminders use iCloud, so I’m limited to the Apple ID I’m using. The downside is that I had to pay for Things twice.

    Same goes for Safari and Firefox. I’m a big Firefox fan (since it was called Phoenix) and love the Multi-Account Containers feature, but Safari is so much faster and has better support for physical keys and Apple Pay so I keep going back to it.

    I read a review about ReadKit and decided to give it a try. I deleted Reeder from my devices to force myself to use it. The application is actually nice and I’m enjoying it a lot. I like the way it integrates with Pinboard as well, which is a service I use for about 15 years. It supports Smart Folders, a great feature when subscribing to tons of feeds.

    Decided to create a mini Digital Garden on Micro.blog. It’s not perfect because I have to create all the links between pages manually. But at least all the content is hosted in my blog. I have to check if there’s an API to post Pages on Micro.blog directly, and add an option to my Micro.publish plugin so that people can publish posts and pages from Obsidian. For now, the digital garden has notes about Unit Testing, Open Source, and Child Benefits in Germany.

    I released a minor change to Micro.publish plugin, including a link to my Buy My a Coffee page. I added a link to Buy My a Coffee in all my mini Digital Garden pages as well.

    We’re cat sitting for friends and I usually go to their house at night, after tinyScientist goes to bed. I’m using my time there to work on my omg.lol native client for macOS and iOS. My client is fully modularized and each feature is a micro app on its own. Once all the setup is done, the app should scale pretty well, and adding new omg.lol features should be a breeze. I plan to write about Modularization once the setup is finished.

    I finally started playing Fire Emblem Encore, but already have my eyes on Metroid Prime Remastered. I must resist, in two weeks there’s Octopath Traveler II and in May, The Legend of Zelda: Tears of the Kingdom.

    LEGO Series 24 is complete. We went to a LEGO store and they had hundreds of minifigure bags. Spent a good amount of time there, feeling the bags and found the last two.

    And finally, I had to use Twitter to talk to my ISP’s support. Their service is too unstable and every now and then I have to contact them to complain (and ask for my money back). Maybe it’s time to switch providers so that I don’t have to use Twitter anymore.

    Like this plugin? Say thanks with a coffee :-)

    I added this to my Obsidian plugin 👨‍💻

    I’m a big Obsidian fan - even created Micro.publish to send posts from Obsidian directly to Micro.blog - but Obsidian Publish is a little bit pricey. I’m thinking if it makes sense to use Micro.blog Pages to build a Digital Garden… 🤷‍♂️

    I added a categories picker to my Micro.publish plugin today. Currently testing it to make sure it’s all good and will release the update later today or tomorrow morning 👨‍💻

    My Obsidian plugin Micro.publish - to post notes to Micro.blog - was accepted and can be installed directly from the Community Plugins. New features coming soon 👨‍💻

    I’m still waiting for the Obsidian team to review my Micro.publish plugin👨‍💻

    Micro.publish

    Obsidian is the source of truth for most of my writings1 and I though it would be interesting to post to Micro.blog directly from it. In the past I explored several applications such as Ulysses, iA Writer, and many others which allow publishing to Micro.blog, but they don’t work for me, they don’t reflect the way I think and take notes. Obsidian does.

    So I searched on Micro.blog and found this post from @philbowell:

    I wonder if there is a way to post to Micro.blog from Obsidian. 🤔

    And nope, there isn’t. So I took the challenge.

    Obsidian isn’t a native application and I can’t remember when it was the last time I wrote something which isn’t compiled to run on an specific architecture 👨‍💻, so I had to learn TypeScript and npm, and spent a good amount of time making Visual Studio Code look pretty (stealing ideas from my friend Atila).

    Luckily for me, the TypeScript syntax isn’t that different from Swift, so in a matter of hours I had something working. Since the Obsidian Plugin architecture is OOP, I decided to go with OOP using MVVM, without third-party dependencies to avoid taking unnecessary complexity into Obsidian.

    The result of all this is Micro.publish, my Obsidian plugin to publish to Micro.blog. The plugin isn’t available to install from Obsidian’s Community Plugins yet since they review all the plugins there, but it’s possible to install it directly from GitHub by following some manual steps.

    Micro.publish has the features I need. It allows

    • setting default tags
    • setting the default post visibility
    • setting a default blog (for those with more than one M.b blog)

    And before publishing, it’s possible to override these default settings for the post being published.

    More features are planned, and will be coming soon.


    1. DayOne, don’t worry I won’t dump you. ↩︎