I could talk about things that were important in the world last year but I don't think I have anything terribly constructive to add, so instead I will post this:
At the end of 2021 I calculated some stats, but apparently I forgot to do anything for 2022. Here's 2023:
- Code: git commits from 2022's 6.73+dev1231 to 2023's 7.07+dev1229 for which I am the claimed author (excluding merges): 2,158 (down from 2,264 in 2021)
- Code: cumulative changes in repository (not just me, everything including Schwa and anything third-party): 1888 files changed, 108639 insertions(+), 80371 deletions(-) (also slightly less significant than 2021)
- Foot-based-transport (from Strava): here, with my acquisition of a herniated disc in May, I started walking a lot and paying attention to the total foot-based miles and not just running: 2,519 miles in 712 hours and 58 minutes, with 154,329 feet of climbing (and similar descent, I imagine). Running was 572 miles of it (100 hours or so). I enjoyed the walking. I walked a number of NYRR races in order to 9+1 qualify for the NY Marathon next year, and walked the NY Marathon in about 5:19. It's not quite the same experience as running it, but still really enjoyable and a challenge.
- Bicycling: I only strava'd 892 miles on a bike (since I ended up walking everywhere I could), though I missed some miles as I would often do Citibike shuffling on my walks, and wouldn't bother putting those in Strava (instead counting the walking portion of the shuffle). Still love my Casseroll Single. Got new wheels for it (the rims had suffered through enough braking with winter grit), and a front rack.
- Bicycling: I rejoined Citibike in order to earn Bike Angels points, I think it ended up being a couple thousand but they don't really make it easy to see it over time. My lifetime total is now 3,125. I suspect I started this year with closer to 1,200.
- Music played with others: 56 sessions (down from 62 in 2021), producing about 83 hours of music.
- Music recorded: 21 doodles. also 16 super8 sessions (which produce about 9 hours of youtube content). Both quite a bit lower than 2021. Hmph.
I guess the overall trend is that I'm slowing down! Something to think about...
Recordings:sandwich terrier
Comment...
I don't believe in ghosts.
I read Project Hail Mary a few weeks ago, and I enjoyed it at the time, and since then it's aged well in my brain.
Some months ago I read some article about how life could be defined as any system of patterns that reproduced itself, or something. The point of that article was about how life could exist anywhere there was energy, e.g. in the sun. If anybody knows what I'm talking about, post a link here...
I suppose that's the premise of
Conway's Game of Life.
Anyway -- taking that reproducing pattern thing in mind. Could a house be haunted, with a chill? Maybe if it had the right combination of air currents, you could have a pattern where some cold breeze periodically exists, and creates cycles that would be unexplainable, could that be life? Maybe ghosts are these effective lifeforms that we don't comprehend. Nothing supernatural about them, just not water and carbon etc. And probably not self-aware...
Comment...
Oh hi there, I guess it's been a while! REAPER v7 has launched. Right on.
I've spent some time on and off occasionally getting REAPER to run natively on Windows/arm64. There's practically
no demand for such a thing, but the platform exists so it's worth thinking about. I read various reviews of some arm
laptops that ran Windows and the real issue seemed to be lack of native software.
Anyway, in trying to finish these builds, I learned about something new in Windows 11/arm: the "arm64ec" ABI. This allows emulating x86_64 on native arm64 processes, with the ability for arm64 code to load/call x86_64 code without having to do any process bridging or anything like that. It's
pretty much designed for DAWs, which need to load plug-ins in process for performance.
I posted a build of REAPER to our pre-release site which uses this. What cool is that there are a few libraries we ship with which we don't have ARM versions, but REAPER happily loads the x86_64 versions and they work! (one is libmp3lame.dll, haven't gotten around to making a native build of that.
The only real hiccups were porting the dynamic code generation of EEL2: symbols get a # prefix, there are a few registers you can't use, and you have to use VirtualAlloc2() to allocate code memory and tag it as being arm code rather than x86_64.
Not sure if this stuff will ever be worth releasing, but it's fun, and if you're interested you can play with it.
P.S. the new code signing requirement that the key needs to be stored in a hardware security module (e.g. Yubikey) is completely misguided. The Yubikey always wants you to enter the PIN, too. SMH. Additionally, if you remote desktop into a Windows 10 computer, you can't use the locally-installed HSM! So alas, I've installed TightVNC for the first time in more than a decade (not sure if that's a security win...).
3 Comments
Wanted to check my assumptions on C++ and the ability of modern compilers to optimize RAII (side note: I can never remember that abbreviation, always have to google it), so this morning I had a few moments of fun with godbolt:
extern int gv, bar();
template<class T> class saver {
public:
T save, *ptr;
saver(T *p) : ptr(p) { save = *p; }
~saver() { *ptr = save; }
};
void foo_c() {
int save = gv;
gv = 1;
bar();
gv = save;
}
void foo_cxx() {
saver<int> s(&gv);
gv = 1;
bar();
}
When compiled with
-O2 -fomit-frame-pointer -fno-exceptions, would foo_c() and foo_cxx() differ meaningfully?
Output (x86-64 gcc 4.7.4, newer gcc versions are all similar):
foo_c():
push rbx
mov ebx, DWORD PTR gv[rip]
mov DWORD PTR gv[rip], 1
call bar()
mov DWORD PTR gv[rip], ebx
pop rbx
ret
foo_cxx():
push rbx
mov ebx, DWORD PTR gv[rip]
mov DWORD PTR gv[rip], 1
call bar()
mov DWORD PTR gv[rip], ebx
pop rbx
ret
So yeah, the optimizer does perfectly.
Recordings:
Yes, Exactly, Yes! - 1 -- [8:53]
Yes, Exactly, Yes! - 2 - Private Life -- [7:20]
Yes, Exactly, Yes! - 3 - Watch Your Step -- [2:46]
Yes, Exactly, Yes! - 4 - Watch Your Step (II) -- [2:05]
Yes, Exactly, Yes! - 5 - Self Imposed -- [4:39]
Yes, Exactly, Yes! - 6 - Dogs Will Rule the World -- [3:04]
Yes, Exactly, Yes! - 7 - Virgins Again -- [2:53]
Yes, Exactly, Yes! - 8 - Virgins Again (Again) -- [3:14]
Yes, Exactly, Yes! - 9 - The River -- [4:31]
Yes, Exactly, Yes! - 10 - Cosmic Background -- [3:32]
Yes, Exactly, Yes! - 11 -- [5:20]
Yes, Exactly, Yes! - 12 - Hindenburg -- [6:42]
Yes, Exactly, Yes! - 13 - Chosen by the Few -- [3:48]
Yes, Exactly, Yes! - 14 - Las Vegas -- [4:04]
Yes, Exactly, Yes! - 15 - No Big Benefactor -- [4:06]
Yes, Exactly, Yes! - 16 - Now We Understand -- [4:14]
Yes, Exactly, Yes! - 17 - Cast Iron Candy Bandit -- [3:10]
Yes, Exactly, Yes! - 18 - Dogs Will Rule the World (reprise) -- [3:37]
Yes, Exactly, Yes! - 19 - Find Me -- [5:01]
Yes, Exactly, Yes! - 20 - Old as Coal -- [4:33]
Yes, Exactly, Yes! - 21 -- [11:36]
Yes, Exactly, Yes! - 22 - Charlie (feat Cory Choy) -- [4:35]
Comment...