Expectations for software based products

When I first got my Samsung Galaxy S4 last year I was a bit disappointed. While it had a nice big screen, it didn’t feel any faster than the Galaxy S2 it replaced. Then last fall Samsung released the Android 4.3 update and the device finally felt as snappy as my good old S2. Recently the Android 4.4 update was released and again the device feels faster and more polished.

What I find interesting is that I absolutely expected the S4 to get better over time and I was disappointed at how long it took for that to happen. This seems, for me at least, to be the new level of expectation for software based products. My PC gets better every time I update Fedora (same goes for Windows users). Even my thermostat has auto-updated with new functionality. Manufacturers that don’t build this into their product life-cycle plans will disappoint their customers and lose them over time.

BPF, Linux and Networking

Linux 3.13 was just released. As always there are lots of interesting new features but two stand out to me: nftables and cls_bpf.

Nftables is the replacement for iptables. It offers a new syntax, looks easier to use and has a simpler kernel implementation through the use of a JITed BFP-like language instead of dedicated field matching code.

Cls_bpf is a new traffic classifier that makes use of BPF to match packets for traffic shaping purposes.  This is made possible by the BPF JIT that was added to the kernel some time ago.

Additionally, the BPF JIT can now also be used as a security mechanism to filter which syscalls a given process can use.

The commonality to all of these is a small, simple, fast and flexible component in the kernel with the more complex details located in userspace – I really like this design pattern.