The NewsBits for week ending April 7th - Scylla's getting counters, PostgreSQL is getting full JSON text search, Redis is about learning the hard way, MongoDB gets a 3.4 update, RabbitMQ closes some management holes, Git celebrates its 12th birthday, learn C by learning how to build the kilo text editor and a teeny Lego Mac.
It's all the news that Compose's Content Curator has found in the last week, served up in delicious bits. These are the NewsBits.
The ScyllaDB developers have released a bug fix update, Scylla 1.6.3 in the last week, and also given a glimpse at what to expect in Scylla 1.8, with the announcement of counter support in Scylla 1.7. Counters are a special column type which is designed for tracking statistics; they have guarantees over atomicity and isolation and so have to be the only type in a table but it does mean they can be atomically incremented and decremented. This brings a much-wanted feature to Scylla. The feature is experimental in Scyalla 1.7 (due this month) and expected to be fully implemented and productione ready for Scylla 1.8. (Thanks to @tzachl for correcting the earlier version of this NewsBit).
PostgreSQL 10 developments
Over at Depesz.com, which does a great job tracking the commits to future PostgreSQL releases, we see news of more PostgreSQL 10 features being committed. The big one, full-text search for json and jsonb datatypes which adds
to_tsvector for flattening the text value content of nested JSON data into a simple word:count vector and
tsheadline to pick out particular text values in JSON data. The other interesting addition is more a "really?" moment: the addition of if/elif/else/endif to psql scripts. Psql is the client side command shell and can be used for some scripting. This commit will bring the ability to make simple decisions in the client rather than letting the server do all the work.
A good read from Trivago about how they learned Redis - The hard way in production. Tracing their experience with Redis (and PHP) from 2013 through changing their PHP library in 2014 and discovering many performance problems, debugging those problems (Spoiler:
KEYS * features in the problems), to proxying Redis requests with twemproxy and on the sharding data between multiple Redis instances.
Over at MongoDB Inc, they've shipped a new update of the venerable NoSQL database - MongoDB 3.4.3 is the latest update and although the headline fixes are brief, the full changelog is fairly extensive with over 150 changes throughout.
There was an update to RabbitMQ 3.6.9 which was predominantly a maintenance release and CVE hole closer for the management UI. There's also news of Lapin, a Rust language library that has just arrived and offers an async low-level library and futures-wrapped API to Rust programmers. The authors have used nom to build the tokio-io-based libraries. It's early days for Lapin; although it's incomplete it is apparently usable and adds another language to the RabbitMQ compatible library list.
Happy Birthday Git
On April 7th, 2005, Linus Torvalds wrote about his unhappiness with the state of Linux source code management and mentioned: "I'm writing some scripts to try to track things a whole lot faster". On the same day, he checked in the initial GIT commit - the stupid content tracker - and so began the process which would lead to git being Linus Torvalds second huge contribution to how we develop software, git - the now ubiquitous versioning system and the massive ecosystem around it. Happy Birthday! you old, git!
Build you a text editor
Last year, Salvatore Sanfilippo, aka @antirez, creator of Redis wrote a text editor and it was less than a thousand lines of C code and quite an educational thing. Well, now Jeremy Ruten has gone a step further and turned kilo into a learning experience called Build your own text editor. It starts from installing your C compiler and then in 183 steps goes from an empty main() to @anitrez's editor, through all the low-level terminal handling, file I/O, display and editing.
A Tiny Mac
Using Lego, a Raspberry Pi Zero and an e-Paper display for the hardware, and resin.io Docker deployments for the software, Jannis Hermanns created the most adorable micro Mac Classic clone:
If you have any feedback about this or any other Compose article, drop the Compose Articles team a line at firstname.lastname@example.org. We're happy to hear from you.