Earlier we talked about “the spirit of optimism”, a bike counter on King Street Waterloo that goes to 500K/yr for cyclists.

Well it was another crisp cold day here in sunny Waterloo. A balmy -26C this morning, warming up to a brisk -22C at lunch time in the sunshine.

And, as you can see from the counter, 2 folks gave it a go down the snowy paths.

The city is doing a great job of clearing the snow, so come on out 🙂

 

I was just reminded of this by a friend and thought I would share.

A few years ago I was in a taxi cab heading from Jerusalem to Tel-Aviv (well, to the airport nearby).

After getting into the cab, the driver, upon seeing that was I was not a local, said that he had a CD of “international music”. In his mind there was 2 kinds: local and international. O well, lets have it.

He places this CD in the dash. Mournful music starts to play. I’m somewhat surprised, I sort of recognise the songs, but not really. Then it hits me. Its national anthems of the world 🙂

Oh my.

As we drive along he mentions that there is a very famous attraction. The 2nd largest statue of Jesus in Israel is nearby. We detour (whats a few more Shekels when I can see a roadside attraction)?

We enter a gas station. Yes, a gas station. There is indeed a statue. Maybe 7′ tall. Its not huge, but I guess I don’t know what I’m expecting or comparing against. Its clearly advertising something regarding the quality of the gas.

Sadly I don’t have a photo of this wonder of the world so you will just have to be satisfied with the Jolly Green Giant. (the 21st largest statue in the US!)

Ho Ho Ho.

Sometimes you have this issue. You are developing, you are being lazy with image tags. You just want to keep pulling ‘latest’. But, caching, how does it work, why does it cache when I don’t want? You seem to be running a stale version.

Or perhaps you want to snoop around a running container a bit.

Sure you could ssh to your Kubernetes node. But, that’s a big song and dance on Azure AKS. There must be a better way to quickly get a comand-line that has access to the Docker commands, that has access to the node itself?

I present ‘dink’ (Docker in Kubernetes). Its pretty self explanatory, you can see it below. Feel free to enjoy, to break things and never complain to me about how I just handed you a loaded gun and a 3-line readme file.

$ git clone https://github.com/Agilicus/dink
Cloning into 'dink'...
...
don@cube:~/src$ cd dink
don@cube:~/src/dink$ kubectl get nodes
NAME                       STATUS   ROLES   AGE   VERSION
aks-agentpool-16358131-0   Ready    agent   14d   v1.11.5
aks-agentpool-16358131-1   Ready    agent   6d    v1.11.5
aks-agentpool-16358131-2   Ready    agent   6d    v1.11.5
don@cube:~/src/dink$ ./dink -n aks-agentpool-16358131-0
bash-4.4# docker images
REPOSITORY                                                       TAG                            IMAGE ID            CREATED             SIZE
agilicus/dink                                                    latest                         61e27c1721b5        3 minutes ago       277MB
cr.agilicus.com/utilities/dink                                   latest                         70a7f24d8c90

As the temperature drops so does the battery output in an e-bike. And yesterday am we had some reasonable heavy snow on the ground (lightly frozen and somewhat driven over, so really tough to go through). I got stuck a few times. In a car, when you are stuck, your tires spin (and if you are a fool, you let them spin until they make ice and catch fire… I’m looking at you Raleigh!)

On the bike, you just end up stopped. With the spikes on the snow tires they either move you, or don’t spin. Traction far exceeds torque at this temperature.

Now… I think I need some sort of electric blanket for my batteries. I could wrap the frame in some sort of insulating foil I guess. I don’t think it would be a ‘win’ to run an electric heater off the batteries themself (although your car does, for battery conditioning).

Another option would be to get some sort of battery that performs better at low temperature. Or maybe oversize them somewhat and get a heavier torque motor + controller. Hmmm.

Any other suggestions from the peanut gallery? Some sort of flamethrower attachment?

One things for sure, here in sunny crisp waterloo. Its not a cyclists paradise these days!

IPv6. its a thing. Look it up. 128-bit IP’s, enough that all your hopes and dreams can get their own IP.

Cloud? IPv4. 32-bit. Enough that we NAT multiple times for no really good reason.

But that is not the topic of today’s learning/rant. Its about ‘stat’ and 64-bit-inodes. You see boys and girls, today I was having this intermittent problem. Some containers were just up and dying during their start script. No reason was given, just death. So I caught it, added a sleep, and shell’ed in. And here is the rabbit-hole I fell down.

You see, I was using busybox. Yes that mini-shell environment that runs on your home router. Its useful in other environments, particularly its the ‘debug’ shell of ‘distroless‘.

But for reasons most mysterious I was getting errors like:

ls: can't open '/': Value too large for defined data type

Hmm. Inconceivable.  it turns out that busybox is compiled without -D_FILE_OFFSET_BITS=64, meaning it can only handle 32-bit inodes. Its also compiled 32-bit making it somewhat dubious that it would ‘just work’ if this define were added (since off_t would presumably be 64-bit and the integer size would be 32).

Some more research googling lead to this issue.

tl;dr: busybox is not cloud native.