History Book stores all the saved pages with Core Data, which means there’s an SQLite database somewhere on your Mac. If you want to export those pages somewhere, you can read that database directly. Disclaimer: This is all undocumented and unsupported by Apple. Only follow this tutorial if you’re comfortable with the terminal. Where is the database ~/Library/Group…
By far the most requested feature for History Book is some way to automate exporting saved webpages, so users can import them into other archival services or Obsidian or whatever. I added a simple export feature ages ago, but the SwiftUI modifier is very limited. When you’re exporting multiple files, you can’t even specify the file names. So you end up with names like Exported HTML text 1.html . I…
You’ve probably seen this before. You bought an app, then for some reason you deleted it. Later, when you tried to redownload it from the App Store, the button shows the price (like “$0.99”) instead of showing the redownload icon. This bug has been around for at least 11 years . Usually it’s because you’ve hidden the purchase, or the app was shared through Family Sharing. If you click the price…
Technotes is a browser extension that adds user-contributed notes to the Apple documentation website. It lets developers include extra explanations, sample code, and warnings right on the pages. Users can upvote helpful notes and downvote unhelpful ones, and notes that receive too many downvotes will disappear. If you’d like to learn more, read the origin story in this blog post . Technotes only…
After reading about the in-house analog cable channel project , I thought I’d do something similar for the next Chinese New Year when my relatives come over. Since I don’t have the engineering skills to follow the cable channel project, I figured I’d just AirPlay a bunch of videos to the TV. For some reason, QuickTime Player can’t play multiple videos as a playlist, and VLC and IINA don’t support…
Spool is a Safari extension that adds a few features to the Threads web app. With Spool, you can set Following as your default timeline. You can also filter posts from certain users (e.g. engagement farmers) or based on keywords (e.g. engagement bait). Threads like to show me posts from complete strangers, but I think it’s rude to mute them. So, instead of hiding posts completely, I added a reveal…
If you think about it, using passwords to log in is really weird. When you sign up, you’re basically shouting a secret word over the ether to the server. The server hears your word, writes it down, and stores it. Then when you want to log in, you shout your secret word to the server again. The server hears the word, writes it down, and checks it against their note. If it matches, you’re logged in.…
It took some time, but I’ve finally added the 13,000+ bang shortcuts to Lucky . (It was a somewhat labor-intensive process.) Bangs in Lucky are faster than DuckDuckGo’s because they don’t need to go through a server. Random things about bangs you probably already know Bangs are special keywords that allow you to search other websites directly. You’ve probably used the popular ones, like !g for…
The story begins with me getting overwhelmed by RSS. When I first set up my RSS reader, I stupidly subscribed to some “general” news sites. Soon, I was flooded with news from all of them. Then I unsubscribed from them all. I concluded that RSS is good for blogs that update 3 times a year, but not for constant news. Then I found the Wikipedia news page. But every time I visited that page, I had to…
There are 2 Safari extension bugs that drive me nuts when doing customer support. (Well, more than 2, but these 2 are the most notorious lately.) 1. Extension Activation Issue on iOS On iOS, after turning on the Safari extension in the settings and granting it permissions to access web pages, the extension may still not be active in Safari. How to Fix: Open Safari, go to the AA menu in the address…