Comments are back

This site has gone through many forms, and comments have come and gone. Now they are back, made possible by commento++. Commento was popular and on my radar for a while, but the original repository has been dead for a while. Commento++ is a fork that has been dead for… a little bit less of a while. But it has a few improvements from the original, and as long as it’s stable I don’t care so much.

But the better question is not how, but why have comments? (Or why not to?)

I didn’t have comments for a long time, because I decided that this blog was a place where I didn’t care what other people said. It was a space for me to write and save things, just for myself. That’s fine, too.

But I’ve been thinking a lot about what it means for me to write on this blog, espeically in the context of generative AI getting so good at replacing mediocre writers. Paul Graham’s post Writes and Write-Nots resonated with me. The ability to write well is equivalent to the ability to think well. By continuing to write, on my own, I hope I can keep up my ability to think well.

And in many contexts, writing is also the ability to turn your thoughts into words and share them with other people. It is the ability to communicate. Writing in a personal journal might be good for my thinking, but I want to focus on my communication too. So, comments.

I’ll write articles on this blog with the intent of communciating my thoughts to my readers, few as they are. And since communication is a two-way street, I wanted some kind of commenting system to get feedback and discourse. So I hope you find my posts here engaging, and would be very happy if you left me a comment, too.

Installing Python3 modules on Macs in 2024

When trying to install python modules on a new Mac, I kept getting thwarted by this error:

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
    xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-brew-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip.
    
    If you wish to install a non-brew packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

It seems like installing modules into a virtual environment is the way to go, which is what I had been doing for individual applications, but I wanted to be able to run this script from Alred workflows.

Create a virtualenv in a central place that is easy to access

python3 -m venv ~/.virtualenvs/python3
source ~/.virtualenvs/python3/bin/activate
pip install xyz

Use this virtualenv whenever I run the script

By specifying the python executable inside the virtualenv we created, we can be sure that it can access the modules we installed there.

~/.virtualenvs/python3/bin/python /path/to/my/script.py "{query}"

Bonus

Add an alias to my ~/.zshrc so that can just type vpython /path/to/my/script.py

alias vpython='~/.virtualenvs/python3/bin/python'

Web Links - November 2022

A.N. Lucas's 88x31 button Collection
A collection of classic web banner images.
How to Run Stable Diffusion on Your PC to Generate AI Images
For personal reference.
If You Can't Answer These 6 Questions You Don't Have A Story - Glenn Gers
The essence of a story is a character trying to accomplish something while people or things get in their way. Every character (not just the main one) is trying to accomplish something, and narrative is born each time they collide and get bumped off track, like billiard balls.

Web Links - October 2022

How to Make a Roguelike
Practical tips for how to plan and structure a new Roguelike game.
"Mechanical Neural Network" Learns to Respond to Its Environment
Flexible parts within a pattern of beams move and bend by reacting to magnetic fields. Future uses may include efficient aircraft wings or earthquake-resistant buildings.
William Shatner: My Trip to Space Filled Me With Sadness
Expecting beauty, William Shatner looked out into space and saw only death. Life and beauty only exists on Earth, and its tininess and fragility was overwhelming.
The Illustrated Stable Diffusion
An illustrated guide explaining how Stable Diffusion works
Coolify
An open-source & self-hostable Heroku / Netlify alternative
You weren't supposed to see that
Powerful economic stimulus during the pandemic worked a little too well and made everyone's lives better. But we need to have both winners and losers, so now were are backpedaling to bring things back to normal, i.e. worse for the bottom rung.

Obsidian iCloud sync between Mac and iPhone

Just using iCloud sync has been pretty solid in my experience. I have two Macs and one iPhone that share a single vault, and I’ve had no major issues… except for one.

Because the entire Obsidian folder lives inside of iCloud, the .obsidian settings folder is also synced. Usually a good thing, except that the multi-pane view I have setup for desktop keeps getting pushed onto mobile. Because the panes all become tiny, and because Obsidian reverts to this view every time I use the app on desktop again, Obsidian basically became unusable on my phone.

The solution

The strategy is to force the desktop and mobile versions to use different config files. I can create a desktop-specific config folder and tell my two desktops to look at that one instead of the default.

In Preferences > About there is an option to “Override config folder” and specify a different folder location. It seems that this setting is set locally and isn’t synced along with the rest of the data.

First I created a copy of the existing .obsidian config folder to somewhere else on my computer.

cp /{Vault location}/.obsidian ~/Documents/.obsidian_desktop

Then, I create a symlink to that new config folder within my Obsidian vault. This will exist on the mobile vault too, but should just be ignored

ln -s ~/Documents/.obsidian_desktop /{Vault location}/.obsidian_desktop

Then, within the Obsidian desktop app I override the config folder and set it to .obsidian_desktop

Because I created .obsidian_desktop inside my Documents folder, which is synced to iCloud, my second desktop will get the folder automatically. I just need to change the settings within the Obsidian desktop app there too, to get it to start looking at the new config.

There is nothing to do for the mobile app, and now the desktop and mobile versions will be looking at different configs so layouts will remain independent.

The only thing I have to be careful of is that adding plugins and changing settings will not transfer between desktop and mobile, so I will need to make changes to both manually. This probably won’t be annoying for me because I have things mostly setup the way I like them now, but is something to keep in mind.

Web Links - September 2022

RootMyTV
A user-friendly exploit for rooting/jailbreaking LG webOS smart TVs.
Has The Zodiac Killer Mystery Been Solved (Again)
examples/stable-diffusion-finetuning at main · LambdaLabsML/examples
Fine tune Stable Diffusion to generate pokemon images
Brickit
App scans a pile of your legos and gives you ideas to create, complete with detailed instructions.
Twofer Goofer
Guess a pair of rhyming words based on their fictional definition.
Excuse me but why are you eating so many frogs
Productivity hacks imply that you can trick yourself into doing things you don't want to do, in favor of things you'd rather be doing. The author suggests that maybe you should instead stop forcing yourself to do so many unpleasant things.
My family's unlikely homeschooling journey · fast.ai
The pandemic forced this family into experimenting with homeschooling. With good resources and a strong local support system, they found that their new arrangement seemed to work better for their kids than traditional schools do.

Web Links - August 2022

Stable Diffusion install guide
Install and run Stable Diffusion locally
The Church of Interruption
There are four conversational styles, divided on two axes. Most people who interrupt others are willing to be interrupted themselves, while other people dislike interrupting and being interrupted. These fundamental differences can cause awkwardness in conversation.
Diagrams: A Native Diagram Editor for Mac
I was just looking for a good way to create flowcharts, and this looks just right

Web links - July 2022

Magic mirror': Hidden image revealed in reflection of centuries-old artifact at Cincinnati Art Museum
A seemingly blank bronze mirror reflects an image of Buddha when shining a bright light onto it. Aside from how amazing it is that this was discovered, the craftsmanship is incredible.
Compare Webb's Images to Hubble's
Yes the images from the Webb telescope are beautiful, but direct comparisons like this really put it into perspective. And this shows the galaxy cluster as it was 4.6 billion years ago? I don't even know what to think about that.
Mendon, Missouri - Sean of the South
A short telling of how residents of a small town came together to help the victims of a rail road accident.

Web links - June 2022

Compound pejoratives on Reddit – from buttface to wankpuffin
A thorough analysis of the distribution of derogatory terms used on Reddit. Fascinating and hilarious.
My Out-of-Body Experience - Nautilus
Reflections on the author's experience in a sensory deprivation tank.
prompt.press - AI generated artwork inspired by current events
The author mentioned that these are heavily curated, but nonetheless they are extremely compelling.
Grumpy Gamer - Return to Monkey Island Trailer
Serendeputy: Newsfeed Engine for the open web
I've been thinking about a product like this for a very long time, so it must be a good idea. Depends heavily on who you follow though, so I would probably end up creating a separate account.
She Spent a Decade Writing Fake Russian History. Wikipedia Just Noticed.

Sorry the Elevator is Crowded

The elevator in our office building has a small LCD panel that shows information like the current floor, but when the total weight of passengers crosses a certain threshold it also adds a short note: “Sorry the elevator is crowded”.

It struck me – of all possible features for an elevator display, how did they decide that they needed this one? It has no impact on the elevator’s function of moving people vertically. And a crowded elevator is not the elevator’s fault (although this is most likely just an example of Japan’s self-deprecating approach to hospitality). So why was this message deemed necessary?

The answer, of course, is that when designing an elevator your customer is not the people riding the elevator. It’s the people buying the elevator, such as the owners of an office building. When they compare your elevator to competitors, “Ours will make your building more pleasant to visit” must be a key selling point.

This was a little reminder for me that it’s crucial to identify your true customer because it will have an enormous effect on your product’s direction.