Elsewhere: NewsBits – Redis 5 RC 5

I’ve been doing my usual Friday news gathering for the day job and that means here is todays NewsBits…. Here’s what’s in it:

  • Redis 5.0 gets a new release candidate and controversy.
  • Updates for older MongoDB versions.
  • A guide to analyzing slow MongoDB queries.
  • Making MySQL‘s shell shine.
  • Google open up Dataset Search.
  • Firefox 62 lands, as does the new ESR release.
  • HTTP2 support no longer experimental in Node 10.10.
  • VS Code gets a new Settings UI.
  • Checkout pull requests with the latest Atom.
  • Where to get Java support in the future?
  • And whats it like migrating to Java 11?
  • And finally an SQL puzzler…

Click here to read Compose’s NewsBits (be meeeee!) for this week

Java 8, Firefox 28 and wibbly wobbly timey wimey – Snippets

Javalogo

Java 8 lands: So, after what feels like an age and after its been through the thresher of reality, Java 8 has officially arrived. What’s changed? Lambda expressions, functional interfaces, default methods for interfaces, streams, a new Date API, repeatable annotations, the Nashorn JavaScript engine… there’s a good quick intro to some the language features but theres going to be plenty of settling in to do. For all the docs go to the release notes, downloads can be found on the Java SE downloads page. There’s also a NetBeans 8.0 release to go with the Java 8 release which includes JDK 8 support, including features like Lambdas and Streams, among many other enhancements.

Firefox 28 slips out: Quieter than ever, Mozilla’s Firefox 28 release has some interesting tweaks; VP9, the H.265 competitor, gets video decoding implemented; Mac OS X’s notification center becomes the destination for web notifications; WebM now gets Opus audio support; SPDY/2 is obsoleted by SPDY/3… oh and there’s 5 critical security fixes, three high, seven moderate and three low. If you’re running Firefox, you’ve probably updated already, if not you can download it for your system and language.

Wibbly wobbly timey wimey: An intruiging StackOverflow question asked why the difference between two times one second apart was over five minutes. The times were in 1927 and this was happening in a Shanghai locale – who knew there was an adjustment of 5 minutes 52 seconds to the clock there in that year? Well, one commenter did and it sheds light on how hard time can be to work with and how much information is wrapped up in those timezone files.

Node-RED updated, Hadoop 2.3.0 out, NetBeans 8.0 RCs and Skrollr scrolls – Snippets

snippets03
Node-RED updated: The most excellent graphical UI for connecting the Internet of Things (or just things in general), Node-RED has been updated to version 0.6. The announcement notes the process of separating the admin and server authentication to make deployment more robust has begun. Node-RED has nodes that accept HTTP connections and has a HTTP admin front end and previously these were all under one HTTP authentication mechanism – now the UI and nodes are more separate with the option to set a user/password for each. There’s some UI changes like a search filter for the palette of available nodes and easier flow importing by just dragging and dropping JSON onto the UI. In the node-red-nodes library, they’ve added Postgres, Amazon DynamoDB and Emoncms for more connections. There’s also fixes for the MQTT keepalive handing, an added socket timeout settings for TCP sockets and support for all 17 pins of WiringPi. More generally, there’s a range generating node now and the inject node can send empty payloads if needed. Finally, the MongoDB node now can send a user name and password – something I found I needed when writing this for MongoHQ.

Hadoop 2.3.0 released: In case you missed it, version 2.3.0 of the Apache Hadoop project got a release. The release notes list all the details. The short version is this is mostly about HDFS, the distributed file system and the changes include the ability to class the storage under HDFS so you can make tradeoffs between say spinning media, SSDs and memory, an ability to explicitly cache files or directories under HDFS (and local zero-copy reading from the cache) and the use of HDFS and YARN to simplify deploying MapReduce code. Hortonworks has a good writeup which also looks forward to Hadoop 2.4.0 with HDFS ACLs and rolling upgrades.

NetBeans 8 gets an RC: The NetBeans IDE has hit release candidate for 8.0. This is the version that will include JDK 8 support in the editor, Java SE Embedded and Java ME Embedded support, PrimeFaces code generators, AngularJS navigation and code completion, PHP 5.5 support and much more. There’s a summary in the announcement, a lot more detail in the New and Noteworthy wiki page and a pencilled in release date of mid-April.

Skrollr scrolls in: Recently spotted – Skrollr, a compact parallax scrolling and scrolling animation library for all your Webtml5.0 styled sites including the ability to “scale, skew and rotate the sh** out of any element”.

LXC’s 1.0, Thrift opened again, WhatsApp serving and more – Snippets

Snippets.png

LXC goes 1.0: Linux Containers, LXC, is now at version 1.0, a major milestone which also brings together and completes a lot of things that have been working their way through the Linux kernel, like support for unprivileged containers, long term stuff like a stable API – this’ll be supported for five years, bindings for Lua and Python3 (and Go and Ruby out-of-tree support), backing storage support for directories, btrfs, zfs and more, cloning, snapshotting… and you may wonder “Hey, doesn’t Docker do many of these things” and yes it does, so it’ll be interesting to watch how things all work out. More details at the news post and check out Stephane Graber’s 10 part blog series on LXC 1.0 which is packed full of useful stuff.

Thrift double opened: Facebook brought Thrift(PDF) to the world in 2007 via Apache Thrift and many people found the network/data serialisation framework well handy. Thing is though that Facebook went and forked their own internal version of Thrift as they filled out the features and ramped up performance, something that took major rengineering over time. Now the company has announced fbthrift, available on Facebook’s Github repo, now open sourced under the same Apache 2.0 licence Apache Thrift is under.

Worth reading: WhatsApp’s Serving : From 2012, here’s a presentation on how WhatsApp does scale(PDF) with a combination of FreeBSD and Erlang – A New York Times profile of security reporter Brian Krebs who’s more like an entire security intel op in one person – Enjoy Stephen Colebourne on video presenting the Java 8’s Date and Time API at JAX 2013.

Notified by mqttwarn, better Docker images, emulating a ship computer and more – Snippets

snippets03

mqttwarn: Don’t want to run Node-RED but do want to route MQTT messages around? Jan-Piet Mens may have the application for you in the Python based mqttwarn, a pluggable framework which can subscribe to many MQTT topics and send them on to files, other MQTT systems, Twitter, SMTP, Redis, SQLite and Mac OS X notifications. He explains that the instigator for this was being introduced to Pushover, an iOS and Android notification app… which is now also supported by mqttwarn.

Docker image: The Phusion developers have launched baseimage-docker, a modified Ubunutu 12.04 LTS image which addresses problems they see when using Docker as more of a container for long running processes and systems – the correctness of that position is up for debate though. The mods include a corrected init, fixed apt issues, and running syslog-ng, cron and an ssh server and also includes “runit” to replace Upstart and a “setuser” command all in a 6MB of memory footprint.

SPARC in QEMU in Ship: Old, but gold, a short article on how a group of engineers replaced an old SPARCstation-5-like VME form factor system with a QEMU emulation of the hardware to keep a 3000 ton ship navigating.

Worth a read: Java 8 SE’s Date and Time quickly explained, one Java coder’s rationale and practices when using Java, Crunching NBA data with Postgresql and aggregates.

Enlightenment 0.18 lit, FreeNAS 9.2 released and Java 8 brews – Snippets

Snippets

  • Enlightenment Updated: The Enlightenment/EFL window manager/libraries/desktop has been updated to version 0.18.0, just a year after the long silence that led up to the release of Englightenment 0.17.0. A full list of bug fixes and improvements is in the NEWS file for the release – compositing has been merged into the core, ten crashing bugs have been fixed and modules for music control, bluetooth, DBus application menus and compositing control have been added. Downloads are available from the project’s site.

  • FreeNAS 9.2 goes final: The network storage platform FreeNAS has been updated too with over 260 fixes and a rebasing on FreeBSD 9.2. The developers say it should sport improved performance, especially with encryption if appropriate hardware is available, and be more able to cope with higher loads. The release notes offer further details – Items I like on the list are full registration of all services through multicast DNS using Avahi, which should make a server much easier to just drop into a network, and the addition of a REST API for FreeNAS for remote control.

  • Java 8’s final draft: The final draft for the Java 8 specification is now available and this is going to be the reference document to the changes being made in Java 8, due in March 2014. Lambda expressions, new date and time APIs and type annotations are referenced with pointers out to the various JSRs to where Java will be next year.

IDEA 13, Java crypto, FreeBSD 10 beta 4, Rails update, Go 1.2 – Snippets

snippets03

  • IntelliJ IDEA 13: Jetbrains has rolled out the latest version of its IntelliJ IDEA Java IDE. Version 13 gets a big refresh on the user interface with new light look and feel on Windows and Linux and toolbars hidden by default, better visualisation of errors and warnings with “lens mode”, comment/string only searching, built in SSH terminal, Java 8 support and a presentation mode for talking about coding. All those features, along with enhancements to Android, Gradle, Groovy, Scala and version control support are in the community version. The commercial Ultimate edition includes JSF 2.2 support, batch job code assistance, JAX-RS 2.0 annotation handling, more app server support, Spring context configuration and MVC view, improved JavaScript debugger, CSS extract refactorings, DART support and many enhancements to the database viewing and support. Full details are in the What’s New page for the new release. The open source Community version and a 30 day trial of the commercial version are both available to download.

  • Bouncy Castle Crypto update: Adding support for client side TLS 1.2 and DTLS 1.2, along with ECDH and ECDSA for the OpenPGP library and many other cryptography options, the splendidly named Legion of the Bouncy Castle have updated their Java Crypto libraries to version 1.5.0 – further details in the release notes.

  • FreeBSD 10 beta 4: The announcement of FreeBSD 10 Beta 4 has also seen the gentle push of the scheduled release date to 2 January 2014 with a December full of release candidates. The in-development release notes give an idea of what to expect as will this article from September.

  • Rails updates for security: There’s updated Rails with the release of 3.2.16 and 4.0.2 which address four or five CVE-numbered vulnerabilities. The problems fixed include various XSS vulnerabilities, a denial of service hole and fixes for a previous incomplete security fix.

  • Go 1.2 is go: Go 1.2 is now official with the announcement that, after 7 months, the latest modifications to the language, library and toolchain are now available. Full details in the release notes. Updates are expected to come on something closer to the 7 month cycle in future.

1.0aplooza – Ceylon and Dart go 1.0

ceylondartRed Hat and Google have announced version 1.0’s of their long baking new languages, Ceylon 1.0.0 and Dart SDK 1.0. With three years of work on Ceylon and at least two years behind Dart, are they worth looking at?

Red Hat’s Ceylon comes from Gavin King’s team at the company who’ve been working for around three years on a language which initially targeted the Java virtual machine but now also can generate JavaScript. Created as a Java (the language) replacement, it features the a fairly familiar curly brace syntax, adds in declarative syntax for tree structures, removes primitive types as part of a new powerful static type system and mixes in mixin inheritance.

But thats just scratching the surface – the documentation’s introduction gives a better feel for the extensive re-envisioning of a large systems language. There’s also a tour to get some hands on experience and an Eclipse-based IDE for Ceylon already. The language and tools are all Apache 2.0 Licensed and source is up on GitHub. The JVM is a hotbed for new languages and Ceylon adds to the mix with what feels like a pragmatic approach.

Meanwhile, Google’s Dart 1.0 doesn’t go near the JVM; it’s designed for browsers and specifically as an alternative to JavaScript. Although Dart can translate to JavaScript that is predominantly so Dart code can be run in current browsers. Google’s long game is to see a Dart virtual machine in every browser and get higher performance browser code. The language on first look feels like a more formal JavaScript, but with a push on readability, structure and expressiveness. On second look, it feels more like Java, with annotations, an import system,  Its libraries bring along support for streams, lazy iterables, futures, a cleaner DOM API and more. There’s plenty to look at and this presentation from Google I/O covers more of the language.

CoffeeScript, TypeScript and other browser-centric languages work more in harmony with JavaScript and don’t set out to replace it entirely, but thats what Dart has set out to do and that may be its biggest problem – the big performance benefits of Dart come with most browsers having the Dart virtual machine, but with only Google onboard, that isn’t going to happen. The JavaScript tool chain has some neat tricks though like tree-shaking (reducing library dependency) and minifying.

Will it gain traction? There’s a whole web of JavaScript that’s a standing bet against it and personally I find it somewhat hard to get excited by the language itself; Brendan Eich’s ten day hack that is JavaScript is still impressive, if rich in dark corners and sharp edges, but it does have cross-vendor support and standards backing it up. But if the development of JavaScript as a language and a standard stumbles again as it has in the past, Dart may have a window. The tipping point to look for is when another major browser maker adopts it. Dart is also open source (BSD licence) and source code is available on its Google Code project.

What Ceylon and Dart do have in common is their version 1.0’s are richly tooled and documented. That should, in itself, be a model for anyone wanting to bring a new language to the world. Anyone wanting to look at either language is not going to have difficulty getting started.

Slackware 14.1, MariaDB 10.0.5, Glassfish and Android Crypto – Snippets

Snippets.png

  • Slackware updated: The venerable Slackware Linux has had its annual update for 2013 announced by Patrick Volkerding and a fine update it appears to be. A 3.10.17 Linux kernel, X11R7.7 X Windows, 64-bit UEFI installation support and updates across the board for dev tools, applications, desktops (Xfce 4.10.1 and KDE 4.10.5) and more. And Slackware ARM 14.1 is also available.
  • MariaDB 10.0 goes Beta: As MariaDB, the community-supported and developed MySQL fork, branches away from MySQL with version 10.0, the first 10.0 Beta has been released with enhanced replication, more storage engines supported, engine independent query statistics, regexps with PCRE, admin improvements with roles and more. Google sponsored one enhancement (parallel replication) and blogged about the release noting it is already deploying 10.0 into non-production MySQL instances to aid the MariaDB debugging and development process. In beta, the focus should be on stabilising the 10.x feature set, so if you are considering MariaDB 10.x for future use, now is a good time to check it out.
  • Glassfish goes open only: Oracle have pulled commercial support from the Glassfish server for future releases and are pointing users over at their commercial WebLogic Server. They are carrying on development of the server as the reference implementation of future Java EE platforms, but the fear is the quality of the RI will suffer with no commercial imperative to keep quality and performance high. Oracle may well have backed the wrong Java EE web server from a community point of view – I know no one who goes “Hey, lets do that on Weblogic” – but now the competitive field is wide open. The X-EE Factor auditions for series… One other takeaway comes from Tomitribe – Open source isn’t free and if we want it to be industrially healthy, then the industry needs to make sure some money ends up in the open source communities.
  • Android Crypto Misuse: Develop for Android (or Java in general)? Write code that uses cryptography? Then read this paper – An Empirical Study of Cryptographic Misuse in Android Applications(pdf). From the abstract, “We develop program analysis techniques to automatically check programs on the Google Play marketplace, and find that 10,327 out of 11,748 applications that use cryptographic APIs – 88% overall – make at least one mistake”. Scary eh. Very worth a read though.

JavaFX on phones, Java blocks in Firefox, Amazon audio and extras – Snippets

Snippets

  • JavaFX on Android and iOS: One of Oracle’s ongoing projects is getting JavaFX onto the two big smartphone platforms. An update from Richard Bair (Chief Architect Client Java at Oracle) says the work is now at “a good prototype stage”. There’s “funky” code swapping JavaFX text fields for native components and the plan is to build a more layered system for better native look and feel without Swing style theming. But Bair also notes that currently its all hands on deck for Java 8. If you are wondering about whether there’s a JVM on iOS, things point towards the open source RoboVM which compiles Java bytecode the ARM or x86.
  • Firefox’s Java Blackout: And if you are having trouble (or your users are) with Java applications that work with Firefox, then the short story is that Mozilla have marked the Java plugin as unsafe by default. You’ll find the bug and angry comments in the Mozilla Bugzilla and you’ll want to refer to “How to enable Java if it’s been blocked“. Unfortunately, Mozilla’s security UI design is “special” and so you’ll need to look at the red “lego brick” icon in the address bar to allow Java to run. And remember to UPDATE YOUR JAVA now – Latest versions is Java 7 update 45. And if you don’t use applets or Web Start, leave it disabled. Mozilla’s policy good, fire^h^h^h^h Mozilla’s communication skills bad.
  • Amazon Audio Transcode: Amazon’s Elastic Transcoder now does audio as well as video. Save content up on S3, select presets, let rip and let the results land back on the S3 storage service. The free AWS tier gives you the ability to transcode 20 minutes a month for free, though this does appear to be a little mean – for video you get 20 minutes of SD content a month which, paid for in the EU data centre, costs $0.017 per minute, while audio costs $0.00522 per minute. Still, equine dental hygiene inspection is unbecoming and they do support transcoding audio to AAC, MP3 and Vorbis.