Category: valeblog

Clojure vs Java varargs

Variable length argument lists (varargs) have been around since Java 5 (so quite a long while), yet I get the impression that many people either don’t know about this feature or their tools don’t support it. I ran into one of them working with Netty from Clojure and it wasn’t trivial at all how to use them through interop.


Greenbelly Meal2Go

I heard about the Greenbelly trail food from a thru-hiker’s video and since I was looking for some alternative to my protein bars, I gave it a try. I figured ordering the 30-pack box will last me a while.

They’re pretty big granola-bar like blocks of stuff. The packet they come in can be re-sealed too if you can’t eat one in one go (which is a possibility actually).


How does Kubernetes select labels?

kubectl has the feature to select objects by filtering on labels using the -l flag. Labels are key-value pairs attached to objects as metadata and they don’t have to be unique. I’ve most often seen them used to identify what project or app an individual resource belongs to. Helm uses labels to mark resources with the app, chart and revision they belong to.

But wait, if they’re not unique and there is a way to select multiple values with set operators, how does that work? The database backing Kubernetes by default, etcd is a key-value store. While it can natively select multiple records by prefix matching, it’d be hard to imagine labels working like that. There are many of them and the selectors are complex.

So I dove into Kubernetes’s source code to figure out how it works.


Partition of integer into exactly the given number of distinct parts

Ran into this issue in a programming challenge on HackerRank and I was surprised there weren’t any “simple” solutions online. The math related is mostly focused on finding the number of possible partitions of an integer, instead of generating even just one such partition.

A very naive approach might be to enumerate all partitions and then filter them down to those with exactly the wanted number of summands and then filter further to those with distinct parts and pick the first that fulfills the conditions.

But when the subject integer can be 1018 then that simply isn’t realistic. Insert sophisticated simile involving the heat death of the universe.


Oxygen

Using supplemental oxygen for high altitude climbs is common. I’ve even seen people use mini oxygen tanks on Mt Fuji. While it’s highly unlikely you’d need extra oxygen around that altitude (unless you go there with absolutely no training and the lung capacity of a goldfish), it can keep people alive and let them succeed above 8000m.

I don’t know who came up with the idea that climbing without supplemental oxygen is the only “fair means” to reach a summit (maybe Messner?), but I beg to differ. It is definitely a bigger achievement but that does not make using it cheating or doping.


The algorithms

Honing your skills on CodeWars or HackerRank is definitely a good idea. I’ve myself spent months on the former and some time on the latter, and right there is a display of my issue with them: I lose interest. At first it’s really nice to tackle a bunch of “interesting” problems and feel successful, but as the difficulty of the problems goes up, it soon turns into “how do I get around the shortcomings of the language I use?”

That’s naturally something worth considering, but it just feels so weird when I have to overcome performance tests aimed at C in Ruby (or Clojure). It’s doable (most of the time), but it’s a whole different kind of measure. I recall a problem for which solutions in C were mostly pretty naive loops while something similar in Ruby would fail even the first few load tests.


Counting the milliseconds

I’ve been building a Netty-based web server in Clojure. While I haven’t had the strength to do much with it these past few months because I prioritized the climbing season, now that Hacktoberfest is incoming I’m planning to go pedal to the metal with it (and with my git GUI work-in-progress).

I’m building iny (named after a fox from Fekete Istvan’s Vuk) with the clear goal to replace Aleph. While I’m a huge fan of Aleph and the libraries around it (like Manifold) it’s no longer maintained, which is simply not acceptable when we’re now looking at http/3 coming out sooner than later (support is already in browsers after all).


身の程わきまえる

ネット上に登山者としての「レベル」に関しての話を見かけた。生涯山行日数から考える登山レベルみたいなことで300日山の中にこもっていないと初級者とのこと。こういう格付けがすごく嫌い。

まず意味がない。上級者とラベル付けられても、それは一体何をさしている言葉なのかは人それぞれの解釈になる。ロープなどを使ったバリエーションルート(槍の北鎌や劔の源次郎尾根とか)が登れるということ?それともそこによりレベルの低い人を連れて行って守り抜けるということ?それとも登山のスピードをさして槍ヶ岳を日帰りで走れる人なのか?いっそTJAR走るような偉人にでもなれと?


Omote-Ginza and Gendarme

Much rest wasn’t planned. Maybe eat something nice, drink a beer and enjoy a hot spring and get some sleep in a bed for a change. More important was doing my laundry and refilling water. The previous four days in the Ushiro-Tateyama range were fun, and I was up for more.


Back of Tateyama

I was confused why the Ushiro-Tateyama mountain range (from Jiigatake to Mt Shirouma) is called what it is. It means “rear Tateyama” which is weird from my point of view: isn’t it in front of Tateyama? The name of course would come from the other (Toyama) side, but it still feels weird.

A while back I walked into a bookshop and I spotted a mountain magazine focusing on the so-called kiretto of the country. These are gaps in the mountain range, often very “deep” cols with pretty tough terrain. This magazine named three as the “big three” of Japan: the Hachimine col between Mt Kashima-yari and Mt Goryuu, the Kaerazu col between Mt Karamatsu and Mt Shirouma, and the “great” dai-kiretto between Mt Hotaka and Mt Yari.