Bite-sized things I pick up day to day â tools, tricks, and tidbits worth remembering.
Creating custom raycast extensions
Apr 4, 2026
raycast
productivity
At my company, we use notion extensively.
I often found myself clicking through things to open notion pages.
Or, I was looking at my bloated up favorites list to find the link.
I wondered if there is no better way to do this that is quicker and easier.
I looked into the main notion extension, but that did not work for me.
The page search was just too broad, and filter's could not be preset.
90% of the time I look at the same 10 pages. Given this fact I just wanted those to be listed. Plain and simple.
Making a raycast extension is actually really easy, especially if you only intend to use it yourself locally.
It took me about 10min to create and iterate on with Claude Code, to get something personalized for myself.
Basically, the essence of my extension is just the below tsx.
I have a fixed list of pages, with custom aliases to show, and i can fuzzy search them and open them easily.
I registered this, and then assigned the cmd+shift+N hotkey to it. Now I can open my most used pages in about 2s consistenly.
Let's think about what external & internal quality actually mean and what their relationship is.
External quality is the externally observable quality of software.
Does you software look good? Is it easy to use? Does it run fast? Is the security rigid?
Those kinds of things.
Internal quality is the internally observable quality of you software... what does that mean?
This is way more vague than the external one.
There is no checklist we have all agreed on as to what internal quality means.
It requires deep understanding of the product, of the software, of the vision ahead to interpret whether our current situtation is high quality or not.
Is it easy to extend and add new features to? Well that depends on which part we are talking about. Some are some not.
Well, we really care about the parts that we actually intend or are highly likely to extend, but that is only known to a person with a deep understanding of the product vision.
Is it easy to undertstand? (which also partially feeds into easy to extend)
Well, who is the audience? How experienced are they? Are the domain concepts quite common sense things, or are they really domain-specific and need a detailed explanation?
So I think internal quality is quite hard to grasp.
You could just say have tests, write loosely coupled code, have a unified and good way to handle errors etc.
These are true and important.
But, internal quality is not of value by itself. It is only valuable insofar it enables us to uphold and improve the external quality. (which is where the true raison d'etre of our software lies)
Internal quality tends to become a checklist of things that are way too generalized, and way too simplified.
The amount and type of "internal quality" required is very differnt per software product.
To say "internal quality" makes it seem that we have high quality and low quality.
And then we say that automated tests improve internal quality.
Well that means to have "high quality" we must have automated tests.
Well, some products probably won't need too many automated test. Especially when we have other means to test external quality & the product features are frozen.
What "internal quality" means differs from product to product because their goals and situation differs.
So the answer is, we can lay out high-level guiding principles & axis alongst which we should inspect our software to make "high internal quality", but there is no simple checklist with things like many autmoated tests are required for high quality.
So
External quality â the end
Internal quality â the means to sustain the end
And they can each be further split into (but no limiting to)
External quality â does what it should
Correct
Does the right thing
Usable
People can actually use it
Performant / Reliable
Does it consistently and well
Internal quality â easy and safe to change
Easy to understand
Clear naming and structure
Well defined boundaries / separation of concerns
Easy to change
Small, focused, decoupled components
Changes are localized, don't ripple
Safe to change
Tests catch regressions
Changes are reversible / version controlled
Well, if it is safe to change, then it is easy to change so these things are quite overlapping and connected, but this is what the big picture looks likes to me.
Internal quality especially depends on your product and your team, so what "internal quality" means to your product should be discussed per product & team.
Custom RSS Generator
Apr 1, 2026
DIY
I wanted to read the Anthropic Engineering Blog through RSS. It does not support it. This is how I did it.
I use NetNewsWire to get all my daily news to consume.
It is a free & high quality RSS / Atom reader.
Most blog sites provide an rss file, then it's as easy as just adding it in the UI in a matter of seconds.
For Podcasts, most of them support rss so same thing.
For newsletters, I use the Kill the Newsletter! service to convert the newsletter into an RSS feed.
For YouTube channels I want to get updates for, I use Inoreader to convert them into rss feeds, then add Inoreader as a folder in NetNewsWire.
Most things can be covered this way so that I get all my news in a singular space, which is what I need.
But some blog sites just don't provide rss in which case I had no means to import their content.
To solve this issue, you could use the Inoreader premium feature to create an rss feed from any page, but their auto-detection feature did not seem to be too sophisticated? (Not sure just fiddled shortly with it.)
The solution I cam up with was to just vibe code a custom scraper + rss generator with claude code that does the following
Daily cronjob that regenerates the rss files (With an custom adapter per site)
Serve the rss files on localhost:8888
Both are done with launchd since I am using a macbook. So launchd makes sure the rss files are served at all times, such as after reboots.
In the past, creating a custom adapter for each site would have been too much work so this would not have been viable.
But now it's a matter of minutes, and once you've created it, you can keep getting information forever! (probaly not forever...)
This also means that as long as you create this adapter, you're not limited to only blog sites, but you can import any kind of content you can imagine that has periodic update.
So, I finally could get updates for the Anthropic Engineering Blog through RSS! Hurray!
At the end I noticed that the blog appearently now provides a developer newsletter monthly...
Well that might have worked too through Kill the Newsletter!, but it is only monthly so some delay I presume and I am not sure if it is the same content so I am still happy with my solution.
Especially that I now have almost no constraints to what I can read with RSS!
Today, I created a tmux plugin to list all claude sessions, and jump to their respective tmux windows.
I use tmux extensively with many sessions and windows existing at the same time.
Also, I use claude code a lot resulting in many claude code session dispersed across many tmux sessions / windows.
As a result, I often had a hard time tracking which claude code session is still running, what is done and what requires additional input.
Futhermore, I have it setup such that I get notified with a sound when claude code has completed or requires permissions.
But when I run multiple claude code sessions, I had a hard time figuring out where to go, which caused some friction in my development process.
My tailored solution was to create a plugin that utilizes tmux-fzf, a tmux plugin that can have a floating pane where you can fuzzy find, and list all running claude code sessions & their respective states (completed, waiting, running) shown.
Also, it allows me to attach to that specific tmux window that runs it.
Not with one stroke I open this pane, can confirm the total state, and then jump directly to wherever I need to be.
Shared it with some coworkers and they seem to enjoy it too!
We become what we think about
Mar 24, 2026
mindset
Recently I think about this phrase from Earl Nightingale a lot. "We become what we think about".
This implies that our thoughts shape what we become.
If you think about failure every day, you're likely to fail.
If you think about becoming a great engineer every day, you move in that direction.
If you do NOT think about that every day, it won't gonna happen miraculously.
It makes sense to me.
If you think about something everyday, you will have many opportunities to think about it, and that gives you many chances to take smaller steps directed towards it.
In contrast when something is out of your mind, you'll most likely forget about it and when you remember it, months and years will have past.
If just that thing was in your center of focus, you'd have lived such as different life.
It shows how important it is to control and direct your thoughts, especially the core parts.
Any great goal, is not achieved in a day. It is the accumulation of what you do on a daily. So governing the daily you, is what enables you to steer yourself conciously.
One way you can do that is to do with journaling and reflection on the daily.
More is not always better, if you have 10 things you want to be, that dillutes and often nothing remains.
For me, pick only one thing and focus on that. And only once that is fully incoroporated into your focus, should you move on to incoroporate other things.
We become what we think about, so think about what you want to become.
When doing any kind of feature implementation, look at `~/feature_documents/` to see if there are any relevant feature documents.If available, read that document and follow its instructions.Also, if new decisions have been made about the feature or how to implement it that are specific to that feature, then update the document.File format is `<date>-<content>` e.g. `2026-03-18-add-fuzzy-search`