Taking Kata Steps

So I thought that it might be a great idea to run an RT kernel inside Kata containers. This is a usecase because I soon hope to see Kata containers running on real-time capable hypervisors and also being used in scenarios where real-time is a thing. Soon! For now, let’s look at how I went about doing what I did.. You need to go get github.com/kata-containers/packaging repository. (or, git clone if you so prefer.) Be sure to have your $GOPATH properly set!! cd into packaging/kernel directory. I chose the 4.19.31 version of the kernel. Primarily because it was a newer kernel (not too different from the kernel version that comes with the current kata release.) and because it had the RT patches available I changed the kernel_version="" line to kernel_version="4.19.31" That’s it. We are ready to (1) apply the necessary patches from Kata maintainers to our Kernel of choosing and (2) apply the RT patches: ...

April 28, 2019 · 2 min · 330 words

First Steps With OpenStack

I recently tried to set up OpenStack on a single-node development environment using devstack. This blog is not meant as a tutorial or getting started guide. However, I hope that Google will send someone crying tears of sorrow this way so he can benefit from my experience. Conclusion What I concluded from the documentations is that we don’t get something ready-to-go from the official docs. And you should consider yourself lucky if everything worked for you out-of-the-box. ...

April 26, 2019 · 1 min · 212 words

Functional Programming

So I was just reading about Functinal programming and this is a summary of what I understand about it as of today.. (might change in the future; to err after all, is human.) Benefits The “environment” you’re programming against are the function arguments Reuse is imminent. Composition is what everyone calls it. Functions’ results can be cached (memoization) There must be many more benefits.. These three are the ones I can think of and the ones that get the most marks from my side. ...

January 23, 2019 · 2 min · 321 words

new year

This is a post for me to set up a new year’s wishlist and track it. Learn Clojure: I want to learn some FP this year Improve Rust: work on some internal/external tools at work TSN: important in industrial applications Yocto: Finally master this crap ClearLinux: What I want to be working on Firecracker: Get this thing running on my hardware Non Technical Goals ...

January 7, 2019 · 1 min · 94 words

SWPC Trip Report

My company has frequent internal “Software Professionals Conferences (SWPC)”. I was honored to be a part of the conference yesterday in Munich where I presented a lightning talk and did a demo. Lightning Talk I did a lightning talk around Event Driven Microservices. Event driven architectures are becoming fairly common these days and IoT is a natural and easily understandable use-case. I presented the architecture we developed but without going into too much detail. ...

November 30, 2018 · 2 min · 319 words

Event Driven

I spent all day today fiddling around with PowerPoint. I am doing a presentation soon(ish) around “Event Driven Microservices” (a lightning talk) which is made hard because of the time limit. The goal is to introduce events and derivatives of events. Why events are the source of truth for all software. Below I dump my thoughts so I can come back to them later. Final Example (11-11-2018) Today, discussing with a friend, I think I came up with the case-study I’m gonna go with. ...

November 9, 2018 · 1 min · 210 words

Kubernetes Pod Networks and Plugins

Pod Networks It is natural that to get your first k8s cluster running you’d want to remove the taint from the master node and use it as the cluster (i.e. a single-node cluster). The first thing that a person would do is not set the kubelet network plugin (–network-plugin=cni). It’s certainly what I did wrong. The problem is you don’t see the problem until later because the orchestrator will use docker’s default networking which would quickly fail in a more-than-one node cluster. So, it’s best practice to immediately apply a pod network!! ...

October 22, 2018 · 1 min · 168 words

runc and Friends

Had to dig a bit into Kubernetes’ friends recently. Here’s a TL;DR of what’s missing from the internet today: runc is the CLI tool for running containers (create/run/delete/manage) docker uses runc as its runtime. Kubernetes uses runc as its runtime through cri-o (those “unsupported Docker version detected” errors you’ve probably seen.. yeah!) There’s no guarantee that runc will remain cri-o compatible. cri-o is an interface for container runtimes. Any compatible runtime can be used. runc is one of those others being rkt (never tested it), Kata containers and I guess many more. containerd - runtime manager created by docker and later contributed to CNCF. It’s the daemon that’s running in the background doing your bidding that you pass through runc.

October 20, 2018 · 1 min · 120 words

Coding interviews

Had to take a coding challenge recently. It is a strange experience for any developer. Got me thinking about interviews that require doing a coding challenge at any stage of the application experience. Here are my views on coding interviews.. Coding interviews are supposed to test the programming abilities of the testee. Although coding interviews ideally test the ability of the test taker to program, they are far from perfect. ...

October 13, 2018 · 2 min · 331 words

Error Handling

I started learning Rust almost about two months ago. Even though initially, it’s really frustrating, getting code to compile usually means that you’ve agreed explicitly with the compiler on what errors would look like. This is actually awesome. My usual error checking function while writing Golang looks something like: func check(err error) { if err != nil { panic(err) } } (read this rant for an idea of Go’s error management) This is what I have cluttered around my code and until now, I have been a big fan of Golang’s error propagation. Rust just does it better with it’s ? propagation operator! ...

October 3, 2018 · 1 min · 174 words