GeistHaus
log in · sign up

https://ror6ax.wordpress.com/feed

rss
10 posts
Polling state
Status active
Last polled May 19, 2026 05:11 UTC
Next poll May 20, 2026 03:18 UTC
Poll interval 86400s
Last-Modified Sun, 28 Sep 2025 19:22:46 GMT

Posts

searching photos by camera make using macos spotlight
Uncategorizedcameraclimac-osmdfindphotographyspotlight
Apparently it’s a feature available in Mac OS for many years but I’ve just now learning about it. All credit goes to Bozhidar Batsov @ https://metaredux.com/posts/2019/12/22/mdfind.html So, if you have hundreds of gigabytes of photos taken on various cameras and lenses, you definitely found yourself looking to filter your archive by certain combination of those.… Continue reading searching photos by camera make using macos spotlight →
Show full content

Apparently it’s a feature available in Mac OS for many years but I’ve just now learning about it.

All credit goes to Bozhidar Batsov @ https://metaredux.com/posts/2019/12/22/mdfind.html

So, if you have hundreds of gigabytes of photos taken on various cameras and lenses, you definitely found yourself looking to filter your archive by certain combination of those.

Yes, it can be done in various photo catalogue applicaions but I find all of them unbearably slow and not well suited to my console-centric view of the world.

Rejoice – mdls and mdfind utilities courtesy of Spotlight Mac OS feature come to the rescue!

mdls imagename.png | grep "Model” will show you two fields of particular interest: kMDItemAcquisitionModel and kMDItemLensModel.

First is your camera model eg “NIKON P7000” and second one is (surprise) lens model eg “50.0 mm f/1.4”. Unfortunately. to the extent of my knowledge, the brand of the lens is not visible in this metadata format so if you have plural lenses of same pameters but different makes – you’re out of luck.

To query using those key-values, run `mdfind “kMDItemAcquisitionModel = NIKON P7000”

This uses Spotlight’s pre-built index of files so the query runs in sub-100-millisecond range which is lightspeed compared to what you would be waiting in GUI based workflow.

Personally I find special joy in randomly discovering photos I took a long time ago and above approach lens itself nicely to piping the outcome into | shuf -n 1 | xargs -I{} /Applications/qView.app/Contents/MacOS/qView {} & and voila, you have yourself a “show me a photo of the day taken by my old Nikon” command that can be tweaked to your liking.

mdls has your run of the mill metadata keys like kMDItemContentCreationDate, some bizzare values like kMDItemAestheticScore and lots of stuff that could have been useful had the values been standartised across the industry which they are sadly not eg `kMDItemMeteringMode` that my phone does not appear to set.

Since Spotlight is basically an OS-wide search capability, different metadata must be available in other types of files. Maybe some other time I’ll find an interesting use for querying those…

ror6ax
http://ror6ax.wordpress.com/?p=484
Extensions
On rarity of a fuzzy search
Uncategorizedproduct managementsearchux
A UX pet peeve of mine is that fuzzy search is often not enabled in the search functions of various apps and websites. Most noticeable instance of this for me, my Android insists there’s no such app if I type ‘eppname’ even if there is a match ‘appname’ available. Having experimented a bit, I found… Continue reading On rarity of a fuzzy search →
Show full content

A UX pet peeve of mine is that fuzzy search is often not enabled in the search functions of various apps and websites. Most noticeable instance of this for me, my Android insists there’s no such app if I type ‘eppname’ even if there is a match ‘appname’ available.

Having experimented a bit, I found that Android will in fact show a fuzzy match only if it’s one letter away from the match. ‘clickr’ will show flickr app, click will show clock but not flickr because it’s now too different. I wasn’t aware of this when I started writing the article because I gave up once part of the word was not recognized. To get fuzzy search on ‘eppname’ I need to write the entire word and only then see that there’s a match.

Awkward situation in the latest MacOs launcher:

That’s a whole lot of nothingness.

And often when fuzzy search is enabled, it behaves a bit strange.

As expected:

…but no love for Amon:

ror6ax
http://ror6ax.wordpress.com/?p=461
Extensions
product managementthinking aloud
dnf should really have a field that indicates the main language of the package. This would provide the mechanism to reduce the ungodly amount of packages called python-3-actually-identifiable-information-about-the-package. Also this would open a way to look for packages written in language user prefers (Rust, duh). I’m curious about the following scenario: having such field, when… Continue reading … →
Show full content

dnf should really have a field that indicates the main language of the package.

This would provide the mechanism to reduce the ungodly amount of packages called python-3-actually-identifiable-information-about-the-package.

Also this would open a way to look for packages written in language user prefers (Rust, duh).

I’m curious about the following scenario: having such field, when user looks for a package (such as I am looking for exif editor), dnf could provide hints that a package is avaiable that uses runtime I already have installed vs offering me a package that will require tons of new dependencies. That said, language field is not required for this, dependencies will be shown anyway, you’d just need to run dnf install a bunch of times and compare the dependency list size. Hmm.

ror6ax
http://ror6ax.wordpress.com/?p=453
Extensions
I don’t want my day to be disrupted.
product management
I’m finishing reading absolutely astonishing “Designing Calm Technology” by Amber Case and I’ve had a little epiphany, long time in the making. “The telephone was metabolized in a very gradual way, over the course of decades, and it helped that it began with public telephones in places like post offices and banks, to make the… Continue reading I don’t want my day to be disrupted. →
Show full content

I’m finishing reading absolutely astonishing “Designing Calm Technology” by Amber Case and I’ve had a little epiphany, long time in the making.

“The telephone was metabolized in a very gradual way, over the course of decades, and it helped that it began with public telephones in places like post offices and banks, to make the technology feel “under control” and less intimidating. It also helped that it was building on the precedent set by the telegraph. By the time the first telephone exchanges were opening in the 1880s, the telegraph had been in operation for more than 40 years, and “reported via telegraph” was a common notation in the newspapers Americans and Europeans read every day. This helped the telephone feel like a next step, not a complete disruption.”

I’ve always hated the popular term ‘disruption’ but could not quite put a finger on why. I thought it’s just an allergy to corporate lingo. The above paragraph is perhaps the first time I’ve seen disruption described as a bad thing. Nevertheless, one day in the last decade this word became the ultimate description of approval in computing world – ‘it’s truly disruptive’ became the seal of quality.

And, for what it’s worth, that was a good choice of a word. Technologists do seem to be hell bent on disrupting. New this, new that, new system, new standard, new way, new architecture, new single source of truth, new orchestration engine yadda yadda. Calling current mode of progress in computing ‘disruption’ is a precise description. That is exactly how it feels like.

The problem is that it’s a self-serving thing to be doing.

Attempting to disrupt the world of pizza delivery is actually a claim to customer’s time, effort and attention. It’s a slap in the face, saying ‘drop what you’re doing and learn how to use me’. It’s technical egoism. It’s a presupposition that pizza delivery app actually gets the luxury of being recognised and remembered. “Calm Technology” makes great observations about humans having a limited attention span. We shouldn’t wage war for part of that small attention span both from moral standpoint, but also from business standpoint – it’s a risky and very volatile investment.

By creating a riot of a technology we get our 5 minutes of glory, user’s undivided attention is there, metrics going up and all is well in the world. Until the app is deleted, the ‘no distraction’ mode is turned on, the social media detox is put into effect and the reality sets in. As a user I don’t want to know the names and settings of every app, every website and every home appliance I own. I like the most, I feel even sorta connected to the things that do not bug me with their claim on my attention. I decide when to pay that attention. I don’t want my day to be disrupted.

ror6ax
http://ror6ax.wordpress.com/?p=437
Extensions
Length of an array and the case of an empty attic.
Uncategorizedprogramming
“I consider that a man’s brain originally is like a little empty attic, and you have to stock it with such furniture as you choose. A fool takes in all the lumber of every sort that he comes across, so that the knowledge which might be useful to him gets crowded out, or at best… Continue reading Length of an array and the case of an empty attic. →
Show full content
“I consider that a man’s brain originally is like a little empty attic, and you have to stock it with such furniture as you choose. A fool takes in all the lumber of every sort that he comes across, so that the knowledge which might be useful to him gets crowded out, or at best is jumbled up with a lot of other things, so that he has a difficulty in laying his hands upon it. Now the skillful workman is very careful indeed as to what he takes into his brain-attic. He will have nothing but the tools which may help him in doing his work, but of these he has a large assortment, and all in the most perfect order. It is a mistake to think that that little room has elastic walls and can distend to any extent. Depend upon it there comes a time when for every addition of knowledge you forget something that you knew before. It is of the highest importance, therefore, not to have useless facts elbowing out the useful ones.”

― Arthur Conan Doyle, A Study in Scarlet

What is the benefit of having this page embedded into your memory?

While there are legitimate reasons for languages to differ in approach, style and, consequently, their syntax – what is the reason why we can’t have length of array taken the same way in all or most of programming languages?

Groovy decided to be all original and went with ​.size() method. JavaScript obviously could not pass on opportunities for interesting decisions and .length is a property.  Kotlin – merge of the two previously mentioned, .size. Lua, geez, is there anything about this language that does not make you want to kill yourself – made #array the way to take length.

I’m not even going to comment this.

PHP! count()is the way.

Python. len(), because 2 letters make a difference.

Ruby – .length , Rust – .len(), Scala – .length

Guess what – "${#array[@]}".

Why do I have to store all of this rubbish in my head, taking space that might be used for something actually valuable and meaningful? Why do we limit the ability of collaboration between users of different languages? Why are we repeating errors made millennia ago, when life itself not-so-gently reminds us that usage of lingua franca, common system of measurement, common system of counting time, common system of geographical representation are vastly superior to localised solutions.

I mean, there is a word, length. That perfectly describes what is it we are after.

Length makes sense as an object property\field\whatever. It’s a characteristic of a thing.

Count is a verb which makes sense as an instruction for action to be performed on something – so a method taking something countable.

There’s nothing to discuss here. It’s a dead simple case having direct analogy in real world actions, and still there’s gazillion of different ways of doing same (incredibly simple and mundane) thing. Is it really surprising to find more complex concepts and actions represented by even bigger zoo of senseless naming conventions?

New languages are not really taking all this as an input to reduce the amount of rubbish in developer’s head. And I really wish someone would. Even more so, I’d wish existing languages would have future versions of the language change their own original solutions into something standard. Mathematics has done this quite some time ago. It’s about time computer science followed suit.

 

 

 

ror6ax
http://ror6ax.wordpress.com/?p=417
Extensions
Hiking. Lessons learnt.
Uncategorized
So I’ve returned from this hiking 3 day trip on the weekend and I’m sad to report that yours truly is an idiot. First, I’ve been wrong assuming hiking pants are just marketing. Hiking in very dense fog/basically inside a rain cloud in +2 Celsius got my jeans soaked. I suppose quality hiking/snowboarding pants would… Continue reading Hiking. Lessons learnt. →
Show full content

So I’ve returned from this hiking 3 day trip on the weekend and I’m sad to report that yours truly is an idiot.

First, I’ve been wrong assuming hiking pants are just marketing. Hiking in very dense fog/basically inside a rain cloud in +2 Celsius got my jeans soaked. I suppose quality hiking/snowboarding pants would be warmer, and more importantly, protect me from humidity better. We’ll see next time.

Second is – do check if the place you want to have a stop at is open. I was not the only person there to make a mistake – in fact there were like 40 people on the mountaintop expecting hot coffee and rest and seeing closed doors. That’s 99% the fault of the operator – there was no warning on their website whatsoever, but hey, fool me twice… Gotta call every place I plan on being open next time. 6 hours without any food was not fun.

Third one I knew but forgot about. Hiking backpacks, like my trusty Deuter 75+10 are still not waterproof. Pack your stuff into plastic bags if you don’t want them to get wet. Use a rain cover thingy that I don’t have. Don’t let minimalism bite you in the rear 😉

Fourth is Darwin award worthy. Given densest fog you’ve ever seen and visibility of 100 meters, a tele-zoom lens is useless. Duh.

Now for good things.

Nikon D500 is a beast. I love this camera. Backpacks don’t get any better than Deuter. My plan to work out in preparation to hiking trips did pay off, this one would not be possible had I not trained for it. https://mapa-turystyczna.pl is a great portal with a great Android app – works like a charm. Having 3 days off the grid(well kinda, but still) is amazing reset for the brain. I’m continuing my practice of journaling and boy did I write a lot on this weekend’s evenings. Physical act of writing with a good stationary is really “getting creative juices flowing” as my friend would say.

ror6ax
http://ror6ax.wordpress.com/?p=410
Extensions
Uncategorized
This one is pretty obvious. If you are solving managerial problems by technical means, you will fail. 100% guarantee. No amount of 10x developers writing best code the universe has ever seen will fix your undefined product priorities. Seems obvious, but it happens so damn often. Why is the company developing product X? Because we… Continue reading … →
Show full content

This one is pretty obvious.

If you are solving managerial problems by technical means, you will fail.

100% guarantee.

No amount of 10x developers writing best code the universe has ever seen will fix your undefined product priorities. Seems obvious, but it happens so damn often. Why is the company developing product X? Because we need team X to be doing something. Why are we ignoring technical issue Y? Because John Doe from team Z can’t agree with Jane Smith of team Q. All those are orthogonal.

ror6ax
http://ror6ax.wordpress.com/?p=405
Extensions
Being there and getting there
Uncategorized
There are these “meta” things you realise after being bewildered about something over and over again. So here’s one of mine. We all make a mistake of thinking our goals come “bundled” with the ways of getting there. That it’s like a physical path to hike a mount to it’s top or some such. That… Continue reading Being there and getting there →
Show full content

There are these “meta” things you realise after being bewildered about something over and over again. So here’s one of mine.

We all make a mistake of thinking our goals come “bundled” with the ways of getting there. That it’s like a physical path to hike a mount to it’s top or some such. That doing something over and over again is bound to make you into whatever you want to be.

And therein lies the problem. Actually, there are tons of traps around this concept.

Many mistake what it takes to get somewhere and appearance of the goal they are trying to achieve. You don’t get to be an artist by making art you love. You get there by doing things that are not (yet) up to your standard.

Stolen from https://twitter.com/roostercastille/status/1042698000970203139

Basically you are going to feel bad about your art for long periods of time – because your taste for art is higher than the art you are able to produce. Then you will be satisfied for a while until your taste improves and you have to work to get back again.

This is an important concept in itself, but my point is – you won’t make it through the phase of dissatisfaction unless you enjoy the process. Unless you find a way to enjoy yourself while producing botched drawings or overexposed photos, making clumsy moves and being off pitch you’ll never be able to do it for years needed to attain mastery. At the same time if you are too comfortable with the subpar result you’ll just be very bad at something. The best way is to find and concentrate on the parts you did well, while acknowledging you have other stuff to work on. A good teacher is supposed to help students with that. Unfortunately that rarely happens. Students get praised for either absolute perfection, or simple participation. First makes sure there is little to no learning happening for those who did not came knowing the subject already, second guarantees nobody gets better – why try harder if you are number one, right?

Other very similar trap is a difference of what you want to be and what it takes to get “up there”. I thought I wanted to play music for quite some time. I tried several instruments, and hated every second of my life in the meantime. I hated practicing, I hated being focused at one piece at a time for really long, I hated doing things I am very bad at – fast coordinated movements synchronised with other people. Finally it occurred to me I wanted have exposure to music, not to play music. I wanted to be around musicians, not to be one myself. All of the things I envisioned about my success were satellites to the act I did not really enjoy doing (nor do I have natural skills for being good at it).

 

Related reading:

https://jamesclear.com/identity-based-habits

https://robinlawsart.com/blog/2015/10/28/real-life-artist-the-learning-curve

https://waitbutwhy.com/2018/04/picking-career.html

ror6ax
http://ror6ax.wordpress.com/?p=395
Extensions
On appreciation of the web
Uncategorized
Today’s web has lost one of it’s most endearing qualities – sense of community. For quite a while having access to the internet was an exception, rather then a rule. So when you’d get help from someone or find a cool resource with helpful information you’d feel lucky to be there. Lucky to be part… Continue reading On appreciation of the web →
Show full content

Today’s web has lost one of it’s most endearing qualities – sense of community. For quite a while having access to the internet was an exception, rather then a rule. So when you’d get help from someone or find a cool resource with helpful information you’d feel lucky to be there. Lucky to be part of a community.

There are benefits to internet being a default now, clearly. But there’s one big downside to it, and it is dangerous. People largely just assume internet exists. Wikipedia is a thing. There is at least a dozen reviews(with photos) for every venue that serves food, everywhere on the planet. Youtube is basically obliged to have all the music you’ve ever listened to in full quality, right?

I’ve noticed that quality of the posts by the users of the website or a platform of some kind is the highest when it’s still small and as it gets more popular the quality plummets. Case in point – Facebook. Stackoverflow used to be good but once it became really popular it all went south. It’s been a year or so when I last found something of value in the answers related to my work on SO. http://forum.mflenses.com/ is an amazing community with so much things to learn about the subject running on a quite outdated platform. I bet that if they would migrate to a facebook or flickr group all that would just fall apart instantly.

I wonder if there are more elegant solutions to this hamster wheel issue then to just keep restarting communities when the previous gets out of hand.

Listening to https://remixsample.bandcamp.com/album/remixes-mostly-video-game-music

ror6ax
http://ror6ax.wordpress.com/?p=387
Extensions
A metaphor for “return” in programming
Uncategorizedfunctionsprogrammingreturnteaching
I’ve recently been helping a brother-in-law with his studies and came up with a comparison that may be useful for someone else out there. While the idea of the function was pretty clear to my student, the concept of function returning a value was not. I explained it this way. Imagine asking someone what time… Continue reading A metaphor for “return” in programming →
Show full content

I’ve recently been helping a brother-in-law with his studies and came up with a comparison that may be useful for someone else out there. While the idea of the function was pretty clear to my student, the concept of function returning a value was not.

I explained it this way. Imagine asking someone what time is it. “Alice, do you know what time is it?”. What do you expect to happen? Alice looking at her watch and saying nothing? Alice looking at her watch and saying – “yes I do know”? Or are you expecting and answer akin to “It’s half past three”? Here you have a function that does not have a return statement, a function that has hardcoded return statement of type boolean and a function that returns current time that was previously obtained by looking at the watch.

You could further explore this metaphor with types – by having Alice “return” different representations of the same time – 2PM, 14.00, “two in the afternoon”, “after midday”, “not late”, etc.

Perhaps one additional problem novices have with this idea is due to the fact their first functions are very small. If you have something like:

.gist table { margin-bottom: 0; }



This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters





def a_function(): return "a value"

view raw

a_function.py

hosted with ❤ by GitHub

or worse yet, example with a simplistic class method:

.gist table { margin-bottom: 0; }



This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters





def a_method(): return self.value

view raw

a_method.py

hosted with ❤ by GitHub

…then the student will likely be confused because those functions consist of return only. What is the purpose of it then? Or what is the purpose of a function? Valid questions that have sensible answers but not at the stage where it’s your student’s first coding experience. Throw in something simple that is not a return to avoid this confusion.

ror6ax
http://ror6ax.wordpress.com/?p=377
Extensions