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.

Making Catchup: Pi A+, Beagle X15, 68K prototyped and cheap Wifi hacking

makingcatchupRaspberry Pi Model A+ breaks cover: It seems that there’s been a leak on the Pi A+, the compacted version of the Pi less Ethernet, as its being reported. The cut-down Pi now has microSD and a 40 pin GPIO to match the B+. It still lacks the features that made the ODROID/W so interesting – LiPo battery support and real time clock on board. It does retain one thing from the Model A, the question of who’s it actually for.

BeagleBoard X15 leaks: What next for the BeagleBoard, the original board for the BeagleBoard project and predecessor of the most neat BeagleBone Black. Well, the answer appears to be the BeagleBoard X15. On the board, a dual core A15 CPU clocking at 1.5GHz, 2GB RAM, hardware video decoding, bristling with ports including SATA, two GB Ethernet ports and USB3.0. It looks splendid and we look forward to it landing in February 2015.

Going 68K in a week: We previously mentioned a project to build a 68K single board computer and Hackaday has an update in that it seems the developer put a prototype together in a week. It’s epic retro-computing work and highlghts the challenges that early system builders had in bringing early processor power to play.

Cheap Wifi: There’s a board, ESP8266, which offers a Wifi board for $5 or so. Madly cheap, terribly documented and a real challenge for hackers. Hackaday points us at a project on Instructables which shows how to use the board and an Arduino to pic up email and display details on an LCD screen. Useful.

Developer Catchup: FreeBSD at 21, Meteor at 1.0, tunnels, disklessness, neurons and 68008s

developercatchup

  • FreeBSD hits 21:FreeBSD is 21 today and you can see the original announcement preserved on the FreeBSD site and the most recent status report shows where current development was at the end of the third quarter. Looking forward to tier 1 support for more ARM platforms in FreeBSD 11.

  • Meteor hits 1.0: After a good long maturation with plenty of reworking and changes for the better – rather than those long betas which see no changes and never end – the rather splendid Meteor framework has hit version 1.0. It lets you build apps which are really smart about keeping all the users in sync with each other and builds on Node, JavaScript (on the server and browser) and other great open source foundations. And it’s open source itself. Having written apps in the past using it, I recommend it for the modern single screen web app. There’s a step by step tutorial on building an app too. If I had to pick a flaw its that it uses the curl/wget to shell anti-pattern – `curl https://install.meteor.com/ | sh – that has become rather cool but still boils down to running an unviewed, unfiltered script on your system. We need a fix for this, and we don’t need another package manager. A simple “download/scan/report&alert and offer to run” utility would do – want to be a popular person out there? Go write it!

  • Tunnelling out: I have to admit I only just found out about this one but ngrok is a useful service which lets you create a tunnel from the net to a single port on a machine without fiddling with firewalls and other stuff. Download an executable, run it with a port number and it’ll do the rest. And you can inspect the traffic easily for simple debugging.

  • Redis goes diskless: Replication usually involves disks and disks change performance and when you are all about the performance, thats critical. That’s why @antirez has been working on diskless replication for Redis. Read his introductory article to the motivation and implementation.

  • Neural networks in JavaScript: To be honest, I’ve never though about doing neural networks in the browser but it seems Juan Cazala has and his Synaptic library lets you experiment with them too.

And a little making

  • Different single board processors: Remember the 68000 series? The folks at Big Mess O Wires do and are working on building a single board computer around a 68008 (the un-power-house at the heart of the classic Sinclair QL). The aim is to get it running Linux.

Developer Catchup: POODLE, Tails, Docker, Redis and more

developercatchupPOODLE yips: In what was a glorious nail in the coffin of SSLv3, the POODLE vulnerability(PDF) made sure no one would trust SSLv3 again. The simple fix is to turn off SSLv3 where its used. The bug itself is bad in terms of cryptography, in that it gives an attacker a route to completely decode a stream that has been encrypted, but in practice its not as bad because the attacker has to be a man in the middle to get started. So, using SSLv3 from the open Wi-Fi at the fast food cafe, a bad thing. More worthwhile reading includes Imperial Violet’s explanation and Zmap.io’s guide to disabling SSLv3 in servers.

Chasing Tails: The Tails Live Linux distro, which tries its level best to be an bootable anonymous secure distro, has had an update to Tails 1.2. In the wake of the POODLE hole, it’s switched over to Tor Browser, dropping the IceWeasel, and that change also happens to close its POODLE vulnerability. There’s also Tor and kernel updates and various other minor changes. If you use it, just upgrade.

Docker tightens security: Docker 1.3 has landed, or more accurately Docker Engine 1.3. Highlight is digital signature verification of repositories of images, albeit as a tech preview of the feature. A production option also lets you set SELinux and AppArmor profiles from the command line. Other goodies include the ability to inject a process into a running Docker app so you can wake up a shell when you need to debug something, create and start commands for containers (on top of existing the all in one run command) and most usefully to me at least, shared directories on Mac OS X. The more interesting (as in get the popcorn) move from Docker is its partnering with Microsoft with a long term goal of making Docker run on Windows containers, not just on an a VM with Linux inside. Big challenge there as Microsoft have to basically get cgroups and more onto Windows Server.

Redis Clustered: The Redis key/value cache and store has pushed a release candidate for Redis 3.0.0 out. This is a rather important release as @antirez explains in his blog, it’s the first version with Cluster support, a long in-development feature, which has reached “minimum viable product” level and is stable enough for testing.

Quickies: 6to5 – turns JavaScript ES6 code into plain ES5 code which could be well useful. Asciicinema – lets you record and playback terminal sessions (and could be even better with audio – hint). On the to read list – Building Web Apps with Go – MIT licensed book based around Heroku use but lots of interesting content. And Whiteout Mail has gone open source – it’s all about accessible secure mail and has been in the works since 2013.