Developer Catchup: Rust 1.0 and Node reunification

Rust wakes updevelopercatchup

First up, Rust has reached version 1.0, though this is an announcement that was hardly unexpected. It has a lot to live up to given the Rust web site goes for such unloaded language as “blazingly fast, prevents nearly all segfaults, and guarantees thread safety”. The real test for Rust, at least for me, is how well Servo, Mozilla’s browser written in Rust and the application Rust was created with in mind. It seems this is the best possible test case, so…

There’s already a minimised ARM port which looks to bring Rust’s safety features to RTOS/embedded environments and I’ve come across some systems programmers who are interested in Rust, but not noted much momentum. Rust is living in the higher 50 (51-100) of the Tiobe index which is a very approximate guesstimate at momentum, but better than nothing. What this says to me is that despite arriving at 1.0 complete with packaging system and more, Rust is going to have a long journey ahead of it.

Node reunifies

Back in December, when Node.js and io.js forked, I expressed the hope that it would be a positive fork. Well, now that fork is coming to an end with the reunification, under the umbrella of the Node Foundation. Except there won’t be any merging of code and the io.js repository is being turned into the node.js repository.

Io.js folks will join the Node Foundations technical committee and, going forward, the next Node.js will be based on Io.js code. It’s well done to Io.js for taking action and making good practical and solid engineering steps that made it practically a no-brainer to take Node.js forward. We don’t seem to be completely done yet. The structure for future releases and development still needs nailing down.

So here’s looking forward to the next two releases of Node.js… the one which brings us all Io.js’s improvements like an up-to-date V8 JavaScript engines, and the one after which will probably come with more detail on how the desire for a faster development cycle and the need for stable long lived versions will be sorted out.

If you are looking to get your head around ES6, the next and arriving generation of JavaScript, try out Understanding ECMAScript 6, which is a CC-NC book via LeanPub – currently 30% complete and already full of useful details.

Making Catchup: Node 0.10.6, Pi Power, Arduino IDE and adapting ESP8266s

makingcatchupNode-RED 0.10.6:  Nick O’Leary has announced Node-RED 0.10.6 with various changes to the editor, nodes and API. If you don’t know Node-RED, it’s a rather graphically splendid way of wiring the internet of stuff and stuff in general together – I did a few bits with it on here. With this release, there’s also a new command line administration tool for Node-RED so you can control nodes without having to restart the entire process…. and that uses an Admin API which is now stable and documented. There’s also been a switch in versioning to an easier to track odd/even (development/released) scheme. I’ll be getting back into Node-RED soon myself, ideally when it supports Node 0.12 – currently you’ll need a Node 0.10 to hand to run it.

MOAR PI POWAH: The Raspberry Pi 2 has a lot more power than the older version in terms of CPU, but those USB ports are still pretty power anaemic. By default the total power draw can be 600mA, tweakable in software to 1.2A. That tweakability led to this fine Hackaday hack which involves swapping some components on the board to get a full 2.1A to the USB ports, 500mA a port. The reason the USB is so weedy is good; the Pi is designed to be powered by a Micro-USB connector, so available power is that minus the CPU. Not a lot. And now you have a reason to buy a decent PSU for your Raspberry Pi. The official PSU pushes out 2A into the microUSB.

Arduino IDE gets its groove back: After ages spinning its wheels, the Arduino IDE 1.6 came out and surprised many people. Even more surprising is that its getting new features and quickly. In the March 28th release Arduino IDE 1.6.2, the latest features as a Library Manager which can install from Github repos and a board manager which should make adding new boards much easier. These have been two real pain points in the IDE so to see them addressed is great news. The really great news though was that by April 2nd, the team had released Arduino IDE 1.6.3 which addressed various bugs and responded positively to feedback making it even easier to adopt and use.

ESP8266 adapting: A breadboard adaptor design for an ESP8266 in Makezine since the little ****ers don’t like going into breadboards. Is anyone making these for sale in the UK? Let me know!

Developer Catchup – Redis 3.0.0, ES5to6, Atom Pairs, Rust and Coherent

developercatchupRedis 3.0.0: Antirez (Salvatore Sanfillippo) brought us Redis 3.0.0 on April 1st (and I salute him for ignoring the worst day on the Internet by doing real things). The big thing with 3.0 is clustering, better smarter clustering that is, out of the box and good enough scalability and fault tolerance for many use cases. It’s a big jump, and it may take some iterations to nail it down but its worth it for the usefulness that Redis represents to a system architect.

ES5 to 6: There’s lots of transpilers which turn your ES6 JavaScript into ES5 JavaScript so it can be run anywhere, but a new project on Github, xto6 wants to turn that around and take your ES5 JavaScript code and turn it into shiny ES6 style code with all its shiny classes and accessors and more. No idea yet how this would work in the field, but it may help when you’re getting your head around ES6…. it’s the future you know.

Atomic Pairing: If you use the Atom editor (I do) and you like to pair, you may be interested in AtomPair which uses HipChat or Slack and Pusher to let developers pair (or more) inside the editor.

Rust 1.0 nears: Rust 1.0 hit beta – We’ll talk more about that at 1.0 time…

And Finally… Coherent: Long ago there was a Unix (cough) like OS for 286 and 386 PCs called Coherent. It worked in a wonderfully limited way (apparently using the CPU’s 64K paging tricks) and it disappeared into history. But now the Coherent source and other software from Mark Williams Company have been released under an open source license. Don’t expect to dash out and use them, but its a fine historical artifact to be able to now look inside.

Disque, Tiny JavaScript, ESP8266 Notes, Tails, GCC5 and Go: Developer Catchup

developercatchup
Disque: Antirez ,the man behind the splendid Redis in-memory key/value store has been working away on a new message broker called Disque. He’s not released it as yet, but he is giving status updates on his progress and thinking. Redis gets used a lot as a message queue and Disque, developed by gutting then rebuilding a Redis fork, is designed with a focus on that use case. There’s plenty of message queue platforms out there, but Antirez has a good record on delivering so this is very much one to keep tabs on.

Tiny JavaScript: There’s lots of ways to run JavaScript inside your own applications, but they do rely on some pretty industrial scale wedges of code to be grafted into your code. So, what’s your options. Well, you could always use Duktape, an MIT licensed library written in C/C++. I came across that while looking at MuJS, an interpreter for JavaScript, written in C with a simple binding API. MuJS’s is a little more limited in its deployability being under a AGPL licence but it’s good there’s two different JavaScript in C implementations out there. It’s at this point someone mentions Lua and then the fighting begins.

ESP8266 guidance: I’ve been playing with the ESP8266 and its variants. Crazy powerful WiFi chip with versions packed with GPIO. The documentation and tools are something else though so it’s alway good to find a good blog article covering the toolchain like the one on WhatIMade.today. It goes from powering up to loading Lua code and onwards to using the ESP8266 with a graphic equalizer to then feed a strip of RGB LEDs.

Tails 1.3.1: There was an unscheduled Firefox release to deal with a PWN2OWN bug and that’s meant an unscheduled release of Tails 1.3.1, the amnesiac Linux for anonymous working.

GCC5’s final lap: Seems that the venerable GCC compiler collection is heading into the final lap towards version 5 as its down to 7 P1 bugs and a planned release candidate in April.

GoGo: Spending more time with Go here so here’s some Go snippets…

  • Want to build your own Go-based Torrent applications? Then Anacrolix’s Torrent should be where you want to look.
  • Want a cross-platform GUI for Go? Seems some Googlers started experimenting with making one called gxui and have the code up on Github for folks to work with.
  • Want to work on a JVM in Go? Then zxh0’s jvm.go may be up your street – although “far from complete” it’s already interesting. It implements Java’s GC using Go’s GC but there’s still plenty to do.
  • And finally there’s gosrc.org which sets out to be a better godoc.org with fully linked source code and cross referencing.

Developer Catchup: New Node, Profanity, Oh-My-Git, Knightmares, Bad Docs and Go Tracing

developercatchupNode.js 0.12 has arrived with many long gestating changes now available. Io.js has a lot of these in already and a more up to date V8 engine for JavaScript, but if you’re sticking with Node.js releases, this is the biggy. Better more sensible streams, more HTTP sockets and keepalive, a new round robin clustering system and initial support for ECMAScript internationalisation. No, don’t go flipping your production system over to this right now, but do give it a go on your test/staging systems… it’s the future y’know.

Profanity is a console-based take on XMPP messaging, bridging the gap between IRC and desktop clients. Check it out if you live in terminal windows.

Oh-my-git implements one feature of Oh-my-zsh which people really like without needing to switch to Oh-my-zsh or even zsh. It’s a prompt engine which makes your zsh or bash prompt you with details of your current directory in terms of its git status. If it isn’t a git directory, it gives you a normal prompt. Nice work.

Want to hear a horror story? Read Knightmare: A DevOps Cautionary Tale and wince at the pain that took a company down in 45 minutes. Yeah, dodgy dossier timing.

Embedded code run in documentation? Sounds like nothing could go wrong with that… much… well a lot. Well, this is awkward…

687474703a2f2f692e696d6775722e636f6d2f62755346376d352e706e67First time using Go? Fogleman knocks it out of the park with his pt project, a path tracer in Go which comes complete with examples. He’s got lots of plans for it too so if rendering 3D things is your thing, you may want to check it out.

Making Catchup: 6502 home computer, Trinket Mouse, Beaglebone IO, Manga Screen and piCore Linux

makingcatchupAnd it’s another catchup as the world whizzes by…

Cool 6502 Builds: Dirk Grappendorf has built a lovely looking 6502 based microcomputer but more importantly takes you step by step through the entire build process from generating the clock to getting Basic running on it. Illustrated with schematics and downloads, this is a great article to read if you want to get a feel for what’s involved in recreating a machine which never existed in the 80s. The entire thing is battery powered too so you can use the “mix of a C64 and an Epson HX-20” on your lap.

Make a mouse: Well not quite a mouse. A new Adafruit tutorial shows how you can make a Trinket Pro act like a USB HID mouse and that in turn lets you control a PC. There’s another tutorial mentioned on making it work as a keyboard which is even more useful; I’ve built custom macro keyboards using the technique.

Beaglebone Black PWM: Beaglebone Blacks rock but they can be a bit hard to get your head round when it comes to doing stuff with that huge array of IO pins. So this worked example of configuring and driving the IO as PWM to control motors is well handy to have. Talking BeagleBone’s… we’re getting close to the time when we should be seeing more details about that next gen Beagle board…

Manga Screen: Meanwhile, my screen fetish continues with me backing Manga Screen’s Kickstarter, a delicious looking 4.3″ touch screen display which is powered from USB and takes HDMI (DVI) signals in to make a rather unique little panel.

Tiny Core for Pi: Want a different Linux for your Raspberry Pi? The redoubtable Tiny Core just landed a final release on it as piCore 6.0 so you can check that out. Keeping your OS on SD cards does have the advantage that its easy to experiment.

Developer Catchup: Go libraries, easy Charts, Tumblr frameworks, Zsh secrets and secret Android compilers

developercatchupFacebook Go: When you develop a lot in Go, you make a lot of libraries and tools in Go. Facebook must be doing plenty because their new Facebook Go repository is full of code, much of it useful utilities for managing HTTP connections, mocking for tests, apps to test libraries like MySQL and MongoDB drivers and so on. Add to your resource list.

HTTP2 Go: While we’re talking Go, there’s a HTTP2 library in development by Google’s Brad Fitzpatrick. While you probably will never touch this directly – it’s designed to be hidden behind net/http – it’s good to know it’s being worked on and it tracking the drafts of the next generation HTTP.

Simpler Charts: When you pick up a powerful charting library does your head spin with the number of virtual buttons, knobs, sliders and dials youo can adjust? And do you get disheartened when no matter how much you twiddle, things just don’t look good enough? Metricsgraphics.js might be what you need. Underneath it uses the D3.js library, but to the user it presents a simple, opinionated API which is designed to need the least twiddling for a good chart. An examples page shows what you can do and an interactive demo lets you play.

Tumblr Services: Seems the folks at Tumblr have been wrestling with microservices, performance and reusability. To take that on they have built Colossus and blogged about it – it’s a Scala/NIO/Akka based framework designed to rapidly and concurrently to process many small client requests. It’s still a work in progress and the release is “pre-1.0” but the code is up on Github. The most interesting part is probably that its coming out of Tumblr.

Zsh features: Zsh is a neat shell, but at first look not overly compelling. This article on Zsh features shows why Zsh is neat. It talks about smart directory completion on ‘cd’ commands, shorthand pathing, partial command searching, tab completion for the kill command, expanding environment variables, git and general help and more. I’ve switched over to zsh but there’s still so much to find and so much familiar from bash.

Covert Compilers for Android: Interesting article about Jack and Jill, two compilers for Android and a new intermediate byte code called Jayce. It appears Google are pushing out a new build chain which does away with dex and has Jack generating Dalvik bytecode directly. For libraries, they are compiled into Jayce bytecode by Jill and are consumed by Jack. These aren’t announced yet but it will represent a major change to the Android build system, sufficient to allow Google to start moving away from standard Java.