A Better Bash+Git Prompt

I enjoy a souped-up Bash prompt which radiates information about (for example) the branch I am on, in addition to the usual information (current directory). There are countless examples online, but the nicest I’ve found so far is this one from Martin Gondermann. I have it set to show just a little information:

bash-prompt-with-git-info

Martin shows a more sophisticated example, along with an explanation of the Git-related decorations, as shown:

bash-prompt-explanation

Whether you prefer this one or any of the other similar tools, it’s worth the few minutes to upgrade your prompt from “$”.

Clojure Conj 2013

Clojure Conj 2013 venue small 2Last week I attended Clojure Conj, the annual “main” event for the Clojure development community. Past events were held in Durham, NC at a typical conference hotel; this year’s event was held in Alexandria VA, in the much more impressive venue shown here – I happened to look out my hotel room window at just the right moment, as you can see.

(I should mention of course, that Oasis Digital was a sponsor.)

As is often the case that software related conferences, it is not so much about the learning (which you can achieve as well or better on the Internet) as about the community. Some of my current attention is on ClojureScript; I’ve been interacting with the group of people on its mailing list, but last week I have the opportunity to chat with several them in person.

Here is an overall impression. Most of the content was very worthwhile. Many of the talks were at a relatively sophisticated technical level, which is very good for the audience at this event, mostly populated by people who are already in the Clojure world.

A few of the talks, which I will not identify out of politeness, were not so hot in terms of the value received versus the hour spent watching. My hope is that as the community grows and matures, there will be a greater supply of speakers who are more skilled at reliably delivering value in the time allotted – It would be great to raise that evaluation from “most of the talks were worth the time” to “all of the talks were worth the time”.

A few more specific notes:

data.fressian

Fressian is near to my heart because my previous company (which sold a Java Web Start SaaS application) used Hessian, after which Fressian is modeled and named. Hessian served us very well, and we were able to adjust its source code a bit too match a specific local need to traverse some object references and not others.

Prismatic Schema

Prismatic Schema is a very appealing piece of technology, which will quite likely make it into my projects.

Clojure Conj 2013 venue small 3

Harmonikit

I get the impression that Rich Hickey can spend a relatively small number of hours and come up with yet another fascinator chunk of technology. Perhaps “on-demand”. Or even without any demand, just sitting in a hammock.

The most visually appealing part of the project was an off-the-shelf $50 product for building audio control GUIs on iPads. A talk about how to make things like (in Clojure, if at Clojure Conj) hat might be even more interesting than this talk which merely used it.

Programming with Hand Tools

Tim Ewald is an outstanding speaker. His talk about hand tools was a delight, partly because I spend many hours as a teen working on projects in wood, with a combination of hand tools and power tools. But I came away with a somewhat different impression than Tim did about the relative merits of power tools versus hand tools. This is probably an indication of my lack of skill, but I was always much happier with the results I could get with a power tool. A carefully used power tool could produce a bit of work perfectly straight, perfectly cut, etc. the first time. I remember in a required (!) shop class at school (do they even have those anymore?) cutting a dado with a hand saw and chisel. Neither my cut, nor any other, not the teacher’s, was anywhere near the ideal easily obtained with a table saw and dado blade.

Still, that didn’t take away from the enjoyment of Tim’s talk at all. I think this is a talk people will mention at every future Clojure Conj to come.

 

Chuck Moore / GreenArrays at Strange Loop 2013

I think this was my favorite bit of Strange Loop 2013. Chuck Moore (inventor of FORTH and other interesting things) spoke about his work at GreenArrays  on a novel CPU. The CPU consists of 144 separate “computers” those computers are quite small in capability compared what we typically think of as a computer or CPU. They are extremely RISC and startlingly efficient in terms of nanowatts per unit of computation. Chuck made a compelling case that a few years down the road this metric, energy expended relative to work done will become a main driver in system design.

2013-09-20 Strange Loop Chuck Moore2

Chuck is a low-level kind of guy, so he spent much of the talk discussing ways to program this array of tiny computers at the individual level. The techniques are quite radically different from any kind of programming I’ve ever heard of; for example it is necessary to make two or three of these tiny computers collaborate over a wire/channel between them merely to communicate with main memory! Also, these tiny computers have an unusual six-bit “byte” and 18 bit “word”.

Now the obvious thing to want here is a compiler. A compiler that takes a program written in a high-level language and emits an array of programs to run on this array of computers to achieve the high level program’s purpose. My understanding of the state-of-the-art in compiler design is woefully incomplete, but I’m fairly confident that the thing needed here is far beyond what anyone is doing. I can’t find much about this concept on the GreenArrays website, surprisingly. I wonder if there are any research projects attempting to build such a compiler. Certainly this would be an extreme case of the quest for a “sufficiently smart compiler“.

 

AngularJS Training

Over at work, we’re re-launching a line of business from some years ago: training. Specifically, an Angular “Boot Camp” course to help developers become productive in some powerful but daunting tool.

Why? Because we think AngularJS (and its competitors like Ember) are an important step forward in how complex “single-page” web applications are constructed. The AngularJS approach is not the only good way to build such applications (for example, over in the Clojure space, Pedestal is genius; elsewhere in JavaScript, Facebook React is very appealing). But AngularJS is popular, growing fast, and suitable for many application needs.