Free Apples
It's apple harvest season, and there's enough to go around. I saw this basket and tried one - it was delicious!
It's apple harvest season, and there's enough to go around. I saw this basket and tried one - it was delicious!
2026-08-28More
This story is something I cranked out while sitting at the Zagreb central bus station back in 2013, waiting to go to the airport. I had just left Split and it had sort of self-assembled in my head during the bus ride to Zagreb. Now I just had to get it out.
Then it sat in my "drafts" folder for the next 13 years. I made some edits to bring it up to 2026, but otherwise - here it is, as it was.
2026-08-26, updated: 2019-03-11More
A century of the Swedish Air Force was displayed at Malmen Air Base. I decided to go on a whim and booked train tickets the evening before. The only train not sold out left 0620, which was a blessing in disguise - since I arrived early I only had to wait about one hour to get to the air base.
2026-08-24More
It was very hot during the day, but I could almost always catch some cats during my early morning walks. Not as many as last time, but watching the kittens play more than made up for it.
2026-08-21More
Thunder and lightning would soon come, but for the moment it was a beautiful summer evening sky.
2026-08-18More
It's mid-August, and we're seeing the first yellow and red leaves.
2026-08-17More
This is intended as a digital preservation project for Nikon Custom Picture Controls, specifically the ones used for 8-bit DSLR video, like Similaar's "Flaat" profiles. See the summary table below for downloads.
2026-08-14More
...or, a story about a blog upgrade.
This blog changed its appearance about a month ago. I threw out the design I came up with in 2010 and moved to this design, which, in a way, looks like a synthesis of the very first design I had from 2005 and the 2010 redesign: a center column, but this time with no side columns.
2026-08-12More
I often hear a family of Great Crested Grebes by the water long before I see them. The happy chirping of the chicks is unmistakable, and when I come down to the water I always see mommy Grebe and daddy Grebe and their two chicks doing, well, family stuff. I'm sorry for the anthropomorphization, and doubly sorry for probably completely misinterpreting animal behavior, but the similarities are just too great.
2026-08-09More
When I saw that display: grid-lanes was coming I realized I could soon get rid of my masonry JavaScript layout and enjoy browser-smooth layout instead. But I couldn't get what I wanted: a dynamic number of columns, where each column was at most MAX-WIDTH wide, but could shrink to MIN-WIDTH to fit more columns. After playing around a bit I came up with this:
2026-07-23More
That's what these two are called.
2026-07-22More
All twelve of them.
2026-06-30More
When taking a stroll I saw this family of Great Crested Grebes. I immediately ran home, grabbed the 150-600mm. It quickly became apparent that mommy and daddy Grebe mostly wanted to sleep, but little Grebe was full of energy and kept chirping.
2026-06-19More
The remains of the Värta Gas Works naphtha steam reforming plant that stood here until January 2011.
2026-06-05More
The ducks had kids, too.
2026-06-01More
A pair of great crested grebes have had additions to the family.
2026-06-01More
If you try to control Microsoft Flight Simulator 2020 with the SendInput API, you may find that the key presses do not register. This is because they must have a non-zero duration. Insert a delay between the key down and the KEYEVENTF_KEYUP event. The same goes for mouse clicks - there must be a delay between MOUSEEVENTF_LEFTDOWN and MOUSEEVENTF_LEFTUP.
2026-03-09More
Or - how I stopped worrying and learned to aggregate SQL queries. This is a pattern that can be used when you have multiple SQL SELECT queries Q_(1)...Q_(n), each returning zero or one rows, except for the first which must return a single row, where Q_(n) can depend on the result of Q_(1)...Q_(n-1), and you want to reduce the number of database roundtrips.
2025-08-13More
Getting Google Maps to work in dark mode is a bit of a hassle, but you can do it by swapping map styles. OpenStreetMap doesn't have that functionality, since it serves pre-rendered tiles, but by taking inspiration from the Hue-Preserving Invert CSS Filter for Dark Mode, we can create a CSS filter that works reasonably well. The filter is almost the same, but with less saturated colors to give the dark mode map the same feel as the light mode one.
2025-07-03More
If you find that the Memory Integrity setting in Windows 10 turns itself back on when you reboot after having turned it off, try this: go to Control Panel → Programs → Turn Windows features on or off, and enable Hyper-V. Reboot.
2025-03-15More
I paid for it once, therefore I should be allowed to keep it running forever. Thus spake my sense of entitlement. My sense wasn't wrong, but it sure didn't know what suffering was ahead.
2025-03-15More
Using a gamma transformation followed by linear transforms in YUV color space to convert images for dark mode.
2024-02-25More
Microsoft Flight Simulator 2020 has the absolutely best visual flying experience I've ever seen. Younger me, who had to settle for a lot simpler graphics, would have had his little mind blown. But in what I consider one of the premier fumblings of product management, Microsoft and Asobo Studios turned Microsoft Flight Simulator 2020 into Microsoft Dashboard Simulator 2020 by not making it possible to turn off the virtual cockpit. There is even a Home Cockpit mode they taunt us with that claims to do that but, alas, it doesn't work, never did, and likely never will.
2023-03-23More
Google Maps doesn't support the prefers-color-scheme: dark media query, and therefore remain bright even when the rest of the website has gone dark. But you can get something close to a dark mode Google Maps with a little bit of JavaScript.
2023-02-28More
A simple explainer of the EMoR model and its use in image processing.
2022-05-15More
The Ricoh Theta SC and Ricoh Theta SC2 stores orientation information in the video files they produce. Extracting this information is helpful when editing, since it lets you do a first-pass zenith correction and get the footage somewhat stable.
2021-02-25More
On the first summer day of this year I surfed in on the Google Search Console and saw that the God-machine in Sunnyvale had declared this humble blog to be unworthy.
2020-06-01, updated: 2025-08-14More
Converting the raw video from the Ricoh Theta SC requires knowing the lens parameters. Since Ricoh doesn't publish those, I set out to find them.
2017-08-03, updated: 2017-08-05More
JNI, or Java Native Interface, is the way Java code calls non-Java code, and in particular C and C++ code. Writing C and C++ code usually means using error codes instead of exceptions, and unless we do something about it, we get code that looks like this:
public static final int RESULT_SOME_ERROR = -1;
public static native int nativeDoStuff ();
public static void doStuff () {
int res = doStuff ();
switch (res) {
case RESULT_SOME_ERROR: throw new SomeError ();
}
} There is much that is wrong with that. First, it forces us to handle the error in two places - once in the native code, and then once in Java. Second, as Yossi Kreinin writes in Error codes vs exceptions: critical code vs typical code, we lose information about the error - the SomeError instance has no information beyond its type.
2013-09-01, updated: 2014-11-16More