I’m just testing Hookmark integration with my Bike blogging script.
So now I can…
Blog freely in Bike using a new outline for each month.
I can keep posts private using the SKIP keyword.
Or I can publish them on the blog by adding a timestamp.
I removed embedding the permalink into the root node. Instead I use Hookmark to navigate between the post and the Bike node.
Replacing Craft with Bike as a thinking tool
One of the best features of Craft is daily
pagesnotes, which can be used as a starting point for many ideas and drafts.
I’m thinking of giving Bike a go as a daily logging app.
Still, I like Bike better because there is so much power behind this simple app.
I can automate things around my notes using standard Apple Script.
I can parse Bike files using Ruby and Nokogiri.
It can link to other parts of a document, even link to other rows in other Bike files.
One of the best things about using Bike as my daily logging tool is that I can write blogposts inline and post them instantly.
I can’t do that with Craft.
Craft is excellent for writing documents, so I’m not getting rid of it, but as a thinking tool, I like Bike better.
I can consider Bike as a starting point for everything I do creatively.
Enhanced with Hookmark, I can even start a new anything and still go back to the source.
I can continue a line of thought in a different app, like TaskPaper, which can be better for the task at hand.
Posting digital garden seedlings from Bike
I added a way to post digital garden seedlings to the blog.
What are seedlings?
Seedlings are half-done articles/notes kept in a digital garden.
They are like drafts, but we keep them public because not every one of them will be finalized.
I can also use seedlings to privately reply to people using my blog and send them the link.
Seedlings are entirely hidden, but you can find them if you know their URL.
The goal of my Zettelkasten is to develop my notes into posts I publish here.
I’m migrating my Zettelkasten notes from Craft into Bike because it’s more open, and I can do fun things with it, like post directly from it to my blog.
Posting seedlings from Bike
There are note branches in my Zettelkasten, which can be migrated to a seedling, so I can start working on it.
I extract these notes into separate files, naming them using their number from my Zettelkasten.
I can invoke a simple Ruby script, which is going to prepare and post to my blog.
The script also links them using Hookmark, so I can switch back and forth between writing the post and previewing it.
Excellent app, but you can switch tabs from the keyboard in Safari by focusing on the URL bar and typing the tab’s name. Safari will offer you to switch to a matched tab.
It works on iOS and macOS too.
Downloading YouTube videos with DEVONthink
How I download YouTube videos into DEVONthink automatically.
1. While browsing YouTube or checking my subscriptions from Reeder, I can save videos to my Decoding playlist.
2. By subscribing to the channel using its hidden RSS feed from DEVONthink, I can get saved videos into my Decoding database.
3. DEVONthink watches this RSS feed via a smart rule and downloads videos using
Here’s a screenshot of the rule and the attached script.
yt-dlpbecause it’s faster than youtube-dl lately.
I use a custom “Seen” field to mark videos in the RSS feed as downloaded, so the script downloads them only once.
4. The script saves videos into my inbox folder at
~/Library/Application Support/DEVONthink 3/Inbox, which automatically gets imported by DEVONthink.
5. From here, I can organize downloaded videos, start watching them and take notes.
I constantly tweak my workflows this time of the year. I usually provide tools for others—that’s what I do for a living—but I also have to keep my knives sharp.
This year I’m tweaking two things.
Take better notes while watching a video.
1. I set up a YouTube channel piped into DEVONthink using RSS to download videos automatically.
2. I can use DEVONthink’s Annotations feature locally to insert timestamp-specific notes for the video.
3. I can export the annotation into Craft and create “permanent notes” in my Zettelkasten.
Moving my Zettelkasten over to Bike.
I like to think about my Zettelkasten being a large outline. Keeping it inside Bike could be beneficial.
I’m trying to mimic the analog Zettelkasten (or Antinet).
I won’t use an analog one since I like the digital one’s benefits better, but I also want ideas from the analog one.
I’m a programmer and I use my Zettelkasten to understand coding concepts. I have some code snippets stored in SnippetsLab, so it’s easier to link to those from my Zettelkasten outline than keeping them on paper.
I can nest notes under each other.
I can easily link notes together thanks to the Bike and Hook integration.
I don’t have backlinks, but I’m not sure I need that inside a Zettelkasten.
BTW, I just love this new way of blogging.
I can just edit a file in Bike, press
⌘⌥⌃Pand the post just shows up here.
Trying to figure out how to send a reply to Mastodon instances from this blog using webmentions.
I think it doesn’t work because I don’t have an account on any Mastodon instance to POSSE the reply, so sending a webmention alone doesn’t do anything.
Micro.blog actually supports replies: Replies and @-mentions – Getting started – Micro.blog Help Center
I added ActivityPub integration to the blog, so you can follow me via Mastodon (or any other similar application that uses ActivityPub) by searching for my profile (
firstname.lastname@example.org) from your instance.
Blogging with Bike
I had this short post from a couple of years ago, where Dave Winer showed how he could blog from an outliner in a video. Basically, he edits an OPML file that gets synced to his blog—the website also looks like an outline.
I still like this outline-based blogging approach. It is so easy to change and publish. I wanted to have this for myself too.
Jesse Grosjean (the guy who did TaskPaper) recently released an outliner app called Bike, which I often use. Since Bike is just using HTML behind the scenes, it occurred to me that if I feed that into a Ruby script, I could create something similar to what Dave has.
So, I created two scripts.
One is called
publish_from_bike.rb, which accepts a Bike file and pushes changes to my blog.
The other is a simple AppleScript which starts the Ruby part, saves post permalinks into the Bike outline, and does some general housekeeping.
I have a small system to publish from my blogging outline. I use the following format.
Posts with a timestamp are a published.
I can create drafts by marking them as DRAFT (or IDEA).
I can also add notes or just bullets which will be skipped with the publishing script.
I want to have a proper toggles for these outline type posts, like Bike does.
It would be nice to mark them with a custom icon, like my other post formats has.
I may release these scripts if there is a need and they are well tested.
I collected my reading notes and highlights from “Digital Zettelkasten: Principles, Methods, & Examples” by David Kadavy.
daunting projects to compete with little dopamine hits
How can I increase the dopamine hit of completing a project?
When you have a digital Zettelkasten, there’s a third option: do small things with small notes, straight from your phone.
When we have a small amount of time, we can do small things with our notes, even on our phone.
A lot of small steps can take us very far.
Yet instead of these tiny actions adding up to essentially nothing, they feed your curiosity in a productive way and drive your projects forward.
GTD takes us closer to our goals with small steps.
We have to set up small next actions when we are tired, so we can do a lot of small things which gives us some form of baseline success.
Instead of using my brain power to try to remember things, I’m using it to write better articles, newsletters, and books. I finally found a bicycle for my mind.
We have to use the brain for doing creative stuff, not remembering things.
Yes, we should rethink educational curricula centered around memorization, but looking things up is at some point a waste of working memory. That’s brain power that could be used to think creatively, rather than to try to grasp a bunch of facts just retrieved.
Instead of looking up information that we have to understand, we can use the energy of the brain for creative things.
Sometimes ignorance is more comfortable than learning, because learning means we have to go through the work of changing.
Learning is harder than ignoring facts.
It’s not so easy it’s boring, and it’s not so hard it’s a slog.
We can create new permanent notes with Craft inline of another note, which can be extracted out into a new note.
Some examples of fleeting notes, from my own Zettelkasten:
Uses of fleeting notes:
- highlights from books
- highlights from articles, blog posts
- our ideas
Yes, Henry Ford’s assembly line went quickly by eliminating waste, but the cars had to be designed first – a process that wasn’t so easy to speed up.
It’s easier to automate a system than invent it. That’s a long and hard process.
As you read, make fleeting notes.
Once you’ve exported your highlights, review them and highlight, once again, the parts of those highlights that are the most interesting.
Look at the highlights of your highlights and re-write the interesting ones in your own words.
I’m taking notes as I read, I don’t rewrite them afterward.
Associative thinking promotes a positive mood, so it shouldn’t be a surprise how fun this task is.
It feels good when we find a connection between two Zettelkasten notes.
Now take only the most interesting ideas from the literature notes, and turn each into individual permanent notes.
Next, I have a link back to the literature note from which I wrote this permanent note. That looks like this:
We can link permanent notes from literature notes, so we can see in backlinks where it’s coming from.
If you try this process and it feels boring to you, it may be because the material you’re reviewing doesn’t feel relevant, doesn’t interest you
It is a warning sign if we are bored while writing our Zettelkasten. It means that we don’t care about the topic, or we know it well already.
The main con of Folgezettel is it’s unnecessary in a digital Zettelkasten. Folgezettel is most advantageous in a paper-based Zettelkasten, because it allows you to easily arrange paper based upon how a sequence of notes follow one another.
Having a series of notes (or outline of notes) can be helpful in a digital Zettelkasten too because we are forced to stop and think about where a new note should fit in the outline.
create keywords based upon patterns you see, which inform theories you’re working on.
Having an index is the same as having “Table of Contents” notes.
Tot for iOS is on sale, so I bought it, but I’m not sure if I need it when I’m already using Drafts. Tot almost does the same thing, but I like that is very fast. I used it multiple times today to draft Slack messages, store random pieces of information, keep a bunch of temporary links around for a coding session.
It is a better version of Stickies which syncs with my iPhone and my iPad.
I assigned ⌃⇧T as a global keyboard shortcut for Tot, which opens it from my menubar. Speaking of keyboard shortcuts, I like that I can open each slot via ⌘ paired with its corresponding number key; ⌘1 opens the first slot, ⌘2 opens the second one, etcetera.
Right now, I’m tinkering with Tot. I have Drafts running next to it, and I feel like they overlap too much, but Tot is just better for storing random pieces of bits and blobs.
Maybe at the end each of them will have its place in my tool chain.
Using an old MacBook Air for a home server
I just assembled this temporary home server “rack” with my 2018 MacBook Air on top.
It does the following things:
- General file sharing and project archival
- Backups my iCloud Drive and Photos to a Time Capsule
- Runs Time Machine server for my M1 MacBook Pro
- Tests Rails code against Intel via a local GitHub runner instance
- Processes files via DEVONthink smart rules
- Schedules some of my RSS feeds which are published via Feeder
- Archives my websites using rsync
- Filters my email via Mail rules
- Keeps my Reeder queue up-to-date
- Content caching
- Local device backups for my iPad Pro and iPhone
- Media server based on the Apple TV app and Home Sharing
- I don’t care about Plex.
- Torrent server to acquire the latest Linux ISOs
- Connects my DYMO labeler, because it caused kernel panics on my M1 MacBook Pro
I plan to get a proper Mac mini after we moved into our new house, but for now, this is more than sufficient.
11 of my favourite tips for Safari
- If you have bookmarks on the Favourites Bar, you can quickly open one by pressing
⌥⌘-1through ⌥⌘-9where the number corresponds to the number of the bookmark.
- You can do the same thing for tabs by pressing
⌘-1through ⌘-9and Safari will switch to the corresponding tab.
- If you do a Google search and go deep into a result, you can pick Search Results SnapBack from the History menu which instatly goes back to your Google results.
- You can reopen your recently closed tabs by long-pressing on the plus button in the top right.
- If you quickly want to switch to a different tab from your keyboard, you can go into the Address Bar with
⌘Land then type the title of the desired tab. Safari will show you search results in the Switch to Tab section. This even works across tab groups and iCloud Tabs.
- If you search for a video on YouTube, Safari will remember that. Next time you can type “youtube whatever you want to search for” into the Address Bar, and Safari will give you an option to search YouTube directly. This works with a bunch of websites, like Amazon, Wikipedia (with autocomplete) DuckDuckGo (with autocomplete).
- You can quickly switch your default search engine by going into the Address Bar, pressing
Space, then picking another search engine from the list.
- If you want to keep and eye on a long-running download, open the Downloads popover from the toolbar, then detach it by dragging the popover off the main window. This will keep the Downloads window open until you close it or quit Safari.
- To disable auto-play on a website (like YouTube), go to the site, Control-click on the Address Bar and pick “Settings for website.com”. This will bring up a popover, where you can disable auto-play for videos.
- In the same popover, you can turn on “Use Reader when Available”, which will automatically bring up the Reader view on the website when you open an article. Useful for cluttered news sites.
- If you regularly want to quickly open the current tab in Chrome or Firefox, you can enable the Develop menu in the Advanced preferences, which will give you an option to “Open Page With” any browser installed on your Mac.
Always show proxy icons in macOS Monterey
You can choose to always show proxy icons in Accessibility preferences.
Drafts is a digital Hipster PDA
- Drafts is an app optimized for taking quick notes and sending them to other places instead of storing them in the long term.
- Each Drafts note has a unique ID which can be understood as a digital index card linkable from anywhere.
- These notes are temporary, so I’m not keeping them in the system. After I processed one, it can be thrown away.
- Notes in Drafts don’t need much organization; everything is on a simple list. When I’m done with a note, it can be trashed or archived.
Think with paper and store conclusions digitally
- There is quite a big difference between paper and digital tools, but they can complement each other nicely.
- You can use paper to get an order in random ideas by doing doodles, wireframes, mindmaps, diagrams, or what have you. Because of its tactile feel and freeform nature, paper is a better tool for organizing your thoughts.
- Digital tools make information easier to search, so they are great to store the results of your thinking that you unraveled using paper.
- Unlike paper, digital tools are rigid, so they are not the most optimal way to support thinking.
- Unlike paper, digital tools are rigid, so they are not the most optimal way to support thinking.
As I refresh my online presence with a new avatar and a new Dribbble profile, it occurred to me that I don’t have a page, which I can hand to somebody, and he/she can see what my work is all about. Not a portfolio, but a more superior page than a simple “About Me” in WordPress.
So I built one, featuring some of my work I did lately and, more importantly, the first web development tutorial I promised a couple of months ago. I plan to extract this article into a separate mini-site just for these tutorials, but for now, it nicely complements my “About” page.
Anyway, check out my work!
I’m on Dribbble (again)
It was a long time since I posted anything on Dribbble. In the last couple of years, I did so many exciting things, but I haven’t shown them anywhere; I did show some bits and blobs on Twitter.
Since I like to think about UI interactions and building tools, I should have a platform to show the results. And Dribbble is excellent for that. So from now on, I try to post new stuff I’m working on.
Checkout my Dribbble profile →
(Feedback is always welcome.)
Készülőben a webfejlesztői leírásaim első része
A múltkor beharangozott webfejlesztői guide-ok első részéhez elkészült a példa repository. Ez egy custom date picker implementációját fogja bemutatni egy Rails alkalmazáson keresztül.
Még össze kell szednem a lényeges részek működésének pontjait, majd jöhet a poszt elkészítése. Annyit már előre jelzek, hogy a leírások angolul lesznek.
Hamarosan indítani fogok egy új szekciót a blogon web fejlesztési tutorialokra. Az első rész a múltkor megosztott date pickert fogja lebontani és részletezni. További tervek között a tokenes kereső és egy videó chat kliens is.
Olvasói jegyzetek a “How to Read a Book: The Ultimate Guide by Mortimer Adler” című bejegyzésből.
Az olvasásnak két célja létezik: amikor azért olvasunk, hogy megértsünk valamit, vagy azért hogy információt szerezzünk. Az első nehéz, a második könnyű.
Mortimer Adler négyféle olvasási módot különböztet meg.
- Általános iskolai olvasás: amikor különösebb erőkifejtés nélkül olvasunk úgy, ahogy azt az iskolában tanultuk.
- Áttekintő olvasás: gyorsan átszaladunk a szövegen. Hasznos lehet arra, hogy eldöntsük el akarjuk-e olvasni az adott szöveget, vagy mielőtt azt újra elolvasva elmélyülnénk benne.
- Analitikus olvasás: az olvasás olyan módja, amikor elmélyülünk egy szövegben és kiszedjük belőle a számunkra érdekes tudásanyagot. Ha az áttekintő olvasás esetében fel kell gyorsítani, akkor itt pont, hogy le kell lassítani és alaposan átrágni a szöveget.
- Összehasonlító olvasás: az olvasás legnehezebb szintje. Itt már több szöveget is elolvasunk ugyanarról a témáról, hogy lehetőségünk legyen különböző nézőpontok összehasonlítására. Az egész témakör megértéséről szól, fő célja, hogy kitöltsük az ismerethiányainkat.
Az összehasonlító olvasás öt támpontja:
- Megtalálni azokat a könyveket, amik segítenek kitölteni az ismeretanyagunk üres részeit.
- Kifejezések megállapítása: Amikor már több könyvet is olvastunk ugyanarról a témakörről, akkor az analitikus olvasással meg kell találnunk a különböző kulcsszavakat, szakkifejezéseket.
- Kérdéseink tisztázása: ahelyett hogy a szerző által megfogalmazott problémákra fókuszálnánk, arra kell figyelnünk, hogy milyen kérdéseink vannak és ezekre a szerző tud-e választ adni.
- Problémák definíciója: azzal, hogy kialakítottuk a saját kifejezéseinket és megfogalmaztuk a kérdéseinket, látni fogjuk, hogy különböző válaszok állnak egymással szemben. Ezeket rendszereznünk kell. Ahhoz, hogy véleményt tudjunk formálni, fontos, hogy ismerjünk több nézőpontot is az adott problémára.
- Az információcsere vizsgálata: nincs egy jó válasz semmilyen kérdésre sem. A mi válaszunk az egyéb szembenálló válaszok konfliktusában rejlik.
Befejeztem a napokban Sönke Ahrens – How to Take Smart Notes c. könyvét, ami legalább annyira fontos a mentális munkával foglalkozó emberek számára, mint a Getting Things Done könyv David Allentől.
A lényege számomra az volt, hogy felismertem mennyire fontos a külső eszközök használata a gondolkodásunk támogatásához, felszabadítva az agyunk kreatív kapacitásait. A másik big takeaway pedig, hogy mennyire fontos definiálni, szeparálni, majd rutinként beilleszteni egy munkafolyamat különböző lépéseit. Így kézzelfoghatóbbá válik minden bonyolult dolog.
Két jegyzet a könyvből:
- Externalizálásra alapuló módszertanok
- A hasonló típusú munka csoportosításával kímélni tudjuk a figyelmünket
Elkezdtem összegyűjteni és kiválogatni a jegyzeteimet a külső eszközök és a gondolkodás kapcsolatára. A későbbiekben ebből tervezek majd kitenni ide is egy hosszabb blogposztot.
Gyors tipp: sok webes alkalmazás billentyűzettel is irányítható.
Ha kiváncsi vagy ezekre a parancsokra, akkor nyomd meg a kérdőjelet. Az esetek 90%-ban meg fog jelenni egy panel, ami listázza az adott alkalmazásban elérhető billentyűparancsokat.
While almost everybody is moving mindlessly into the cloud, I try to move out of it more and more and store a lot of my stuff locally (some of it are not even synced). I’m very conservative about my privacy lately. Although I use iCloud when I can, for 3rd-party syncing services, I prefer the ones where I can host them on my own server. I still use some services which store my data on their own servers (like YNAB), but I’m trying to get rid of them quickly.
One week ago I started running my own WebDAV server for OmniFocus and DEVONthink. There is an easy-to-follow tutorial from Bytemark that explains how to set up a couple of Docker containers with an automatic reverse proxy and SSL renewal service using Traefik.
I bought a cheap $5 server on Digital Ocean which is located in Frankfurt, that’s way closer to me (I live in Hungary) than OmniGroup’s sync service which is located in the US, I assume in Seattle.
When I switched to OmniFocus from Things, one thing I missed from Things was the instant and invisible syncing that they offer. Cultured Code really nailed that one: you can change anything in your Things database and it instantly shows up on your other devices, even in the background. OmniFocus’s sync was always slower for me, but shortening the distance between the server and the client looks like boosts the performance in a very big way. Using my own sync server located in the EU, I’m getting almost the same speed in OmniFocus as Things has. The good thing is that my data is now hosted on my own server.
DEVONthink also getting some speed increase compared to iCloud, but it’s not that big of a difference as with OmniFocus.
Okay, I had enough with that bullshit that Google does with AMP. I can’t even find the link to the original site anymore, it just loads this dumbed down version and that’s it. It feels like using WAP again…
I’m switching to DuckDuckGo everywhere. At least they don’t fuck around with the open web (and have a dark theme). I’ll use LaunchBar or bangs when I need to search something on quickly Google.
Now that I have Jekyll in place, I had to come up with a way to upload images to the server. Sometimes I still can’t wrap my head around how capable Shortcuts is. This ~~workflow~~ shortcut uses TinyJPG to compress, then Transmit to upload compressed images to the server.
Here’s a video about this process:
- I run the image through the CropSize app which optimizes it’s size and removes metadata.
- After this, I share the image to Shortcuts which compresses the image using TinyJPG, generates a unique name using MD5 on Unix epoch, then uploads the file to the server.
- At the and of this shortcut, I get a URL to the image, which I can paste into iA Writer (which I’m testing at the moment).
I’m turning off crossposting my blog to Twitter via Micro.blog. It was a drag when I posted something here since I had to think about all the “others” who can’t pull out their heads from a social network’s ass. I don’t want to think about that anymore.
Twitter is its own thing, it’s weird when I post something on my blog, but I have to check reactions separately on a closed social network. At least I get a webmention from Micro.blog, but nothing from Twitter. Fuck that, my content is here and not over there. If my stats get lower, because of that, well fuck that too… I don’t have stats turned on anyway.
Day One 3 is out and I’m not going to use it anymore. Yesterday I exported all my stuff and deleted my account. Usually I’m fine paying for subscriptions, but in this case, I’m afraid of lock-in. There is precious stuff in my database and I don’t want to keep it on their servers.
I have a Day One to WordPress importer, which I created a couple of months ago, but I’m still not comfortable using it on a site that publicly available on the web regardless of having my Day One entries imported as private posts. What I’m going to do instead is set up an Ubuntu install in VMware, install WordPress on it, and run it locally. I’m not going to write there—I’ve consolidated all my text into Ulysses—but it’s a nice way to browse this archive sometimes. Maybe someday I’ll import everything into Ulysses as well, just have it at hand.
I’ve had separate RSS feeds before for statuses and posts. I’ve removed them and everything is collected under one feed now. Why did I do that?
- It’s easier for me to post things since I don’t have to deal with categories and decide which feed get what.
- I don’t post as many status updates as I expected, so no need to worry about filtering them out for specific groups.
- My subscribers get everything. No skipped posts just because you subscribed to the wrong feed.
- If you use a decent RSS service, you can filter stuff for yourself.