Emacs 24.4 released

Emacs 24.4 was released today! Let’s try it

wget http://ftpmirror.gnu.org/emacs/emacs-24.4.tar.xz
tar xf emacs-24.4.tar.xz
cd emacs-24.4
make check
sudo make install
/usr/local/bin/emacs &

Among other things, it has a new web browser…eww. No, I don’t mind web browsers…that’s its name! Type M-x eww RET to try it. Here’s what the Elixir home page looks like in eww:

screenshot of eww in Emacs 24.4


As I understand it, this will be the last release of Emacs 24. Next up, Emacs 25!

FP101x – Introduction to Functional Programming

This week, I started the Functional Programming course on edX! Almost all of my recreational programming time has been devoted to Go lately, which is decidedly not functional. But I’m excited about the release of Elixir 1.0 and I’ve been meaning to do more with Clojure, so I think I’ve got a lot more functional programming in my future. Perhaps this course will give me a boost!


keep calm and curry onand ghci in terminal

The course is not a Haskell course per se, but that’s what it uses for all the examples. I installed the Glasgow Haskell Compiler with

sudo apt-get install ghc

That was easy. Thanks, Debian!

$ cat hello.hs
module Main
      main=putStrLn "Hello, World!"
$ ghc -o hello hello.hs
[1 of 1] Compiling Main             ( hello.hs, hello.o )
Linking hello ...
$ ./hello 
Hello, World!


Next I configured Emacs for Haskell by adding

(depends-on "haskell-mode")

to my Cask file and

(use-package haskell-mode
    (add-hook 'haskell-mode-hook 'haskell-indent-mode)
    (add-hook 'haskell-mode-hook 'interactive-haskell-mode)))

to my Emacs init file. Now I’m ready to try the first set of exercises!

screen shot of Emacs in haskell-mode and ghci in terminal

Figure 2: Emacs in haskell-mode and ghci in terminal

Go workshop at Gilt Tech

Friday I attended a Go workshop at Gilt Tech in New York. It was fantastic!

pic of my badge for Gilt

I had never heard of Gilt Tech before. I found out about the course from Lauri Apple’s Google+ post. I signed up immediately! I live in Baltimore, so I had to get up very early to get on a train to New York. My train was held up with a bad axle, so I was late arriving to New York. Thankfully, the workshop started at 10:00, rather than 9:00, so I still made it on time!

pic of the Empire State Building

Figure 2: Looking up at the Empire State Building from my walk down 33rd St.

Everyone at Gilt was super nice. They have a really nice facility on Park Avenue. They had a beautiful classroom set up and even had coffee and bagels waiting for us! At lunch time, they provided pizza and other things to eat and drink as well. Amazing!

The workshop was led by Aditya Mukerjee, who has been using Go professionally for over two years. He was terrific! He covered a lot of ground, but was clear and concise about everything. He made heavy use of screen, git, and tig, so anyone unfamiliar with those tools might have been a bit lost, but it was very effective. Most of what he did was checked in to a repo on github, so we could all check out the same thing he was showing if we wanted.

pic of Aditya Mukerjee at the head of the Gilt classroom

Figure 3: Aditya Mukerjee at the head of the Gilt classroom

During the hands-on exercises, I paired with Rafael. We didn’t finish our project that day, but I think we both learned a lot.

After the workshop, I walked around New York a bit. I saw Birdland, had a few lovely pints at Heartland Brewery, and went up the Empire State Building. Then I hopped back on the train to Baltimore. This was also delayed, making for a very long day, but it was worth it. By the time the train rolled into Baltimore, it was my birthday. Happy birthday to me!

Update: Gilt posted a blog about the class as well. You can see me (and Rafael) in the second to last photo there.

Get small in Go present

Among the many cool tools in the Go ecosystem is present, a package for making slide presentations and blog posts. It’s an easy way to make a nice looking HTML5 presentation that can also run live code samples. Keen!

Because it’s so cool, lots of folks use it. Often they publish their slides afterwards. For example, here is a terrific talk by Brad Fitzpatrick from GoCon Tokyo.

The problem is, Go present must have only been used by folks with high-resolution displays so far. When I look at any Go present presentation in my browser, the top gets chopped off. On most slides, this is the title!

screen cap of Go present in smaller browser

That top line is supposed to read, “60% of the time, it works every time….”, but even though I am scrolled all the way to the top, I can’t see it.

This appears to be a typical case of making fixed-size assumptions in HTML. I fiddled with the CSS a bit until I arrived at manipulating the margin-top value. Ten percent was a bit too much

screen cap of Go present with 10% top margin.

but 5% worked pretty well.

screen cap of Go present with 5% top margin.

So, I added the following to my userContent.css file.

 * This is to force "Go present" presentations to fit in my browser.
.slides { margin-top: 5% !important; }

Now all such presentations I encounter (which is a lot lately) are readable in my browser.

My first bad MOOC

I recently completed the “Big Data and Social Physics” MOOC at edX.




What a waste of time. Thankfully, it was only one week long, so I didn’t waste too much time. But still. Even though it didn’t cost any actual money, I feel like I was ripped off. This was basically a big sales pitch for Alex Pentland’s new book, Social Physics How Good Ideas Spread–The Lessons from a New Science. The course itself is entirely free of content.

I did not cave in and buy the book, so I can’t really say, but it sure smells like it’s largely free of content as well. A new science? Is that really necessary? It sounds to me like maybe Pentland’s got a Wolfram-sized ego and has convinced himself that his ideas are so extraordinary they cannot be described with regular science. If you haven’t read Stephen Wolfram’s A New Kind of Science, you haven’t missed anything. I’m going to guess that it’s safe to skip Pentland’s “new science” as well.

Even if I’m wrong about that and it turns out Pentland’s book does contain interesting content, I still think it was wrong of him to exploit the wonderful edX platform in this way. This was not a real course. This was a TED talk that spiraled out of control.

Tomorrow, an edX course called Sabermetrics 101: Introduction to Baseball Analytics is starting. This appears to be chock full of real content including practical things like R and SQL. What does it mean if the baseball course has more “big data” in it than the Big Data course?

Inappropriate sarcasm

Dear modern C++. It’s okay. We like you. You don’t have to pretend you’re something you’re not.

Herb Sutter just gave an excellent talk on modern C++, but I thought one part was more than a little silly. At about the 10 minute mark, he showed an example (originally due to Bjarne Stroustrup) calculating the mean in Python and C++14. Before revealing the code, he sarcastically said that maybe he didn’t leave enough space on the right hand side because it will be so much longer and harder in C++. Then we see that the C++14 is line-for-line the same as how you would write it in Python. Har har.

screen cap of Python and C++14 side by side

The thing is, that isn’t how you would write it in Python. If you weren’t Bjarne Stroustrup, you would write

def mean(seq):
    return sum(seq)/len(seq)

Heck, if you’re using Python 3.4, you would just write

from statistics import mean

Showing that C++ is every bit as expressive as non-idiomatic Python doesn’t really show anything.

In Appreciation of Jazz


Figure 1: Jazz Appreciation

I just completed the Jazz Appreciation MOOC at edX. It was fantastic! It’s like a whole new world has opened up for me!

I am a lifelong fan of rock and roll, so I wasn’t completely unaware of jazz. I’ve been to a Pat Metheny concert. I own a Miles Davis record. Rock and roll is a term which includes an awful lot of things. The intersection of rock and roll and jazz is not exactly empty (both include blues, for example).

But I knew there was a whole lot more to jazz that I didn’t get. Jazz made me feel stupid (“I mean, just play the right notes!”) and jazz fans have a (mostly deserved?) reputation for snobbery. So jazz had remained largely inaccessible to me. I didn’t get it and there seemed to be no good way to find out what others were getting.

Until now.

Jeff Hellmer and the folks at the University of Texas (that’s right, UT. In Austin. The indie rock mecca. Who knew they even had jazz there?) have made remarkably effective use of the MOOC platform to spread their encyclopedic knowledge and obvious love of jazz to anyone in the world who wants it. And it’s completely accessible. Hellmer is whatever the opposite of a snob is, generously sharing his vast knowledge without making anyone feel dumb. Ten weeks ago I knew hardly anything about jazz, really. Now, I’m so excited, I have to be careful that I don’t turn every conversation into a one-sided jazz lecture. It’s an amazing transformation!

And an it’s an amazing gift. Of course I haven’t learned everything. Not by a long shot. Jazz is a huge topic. But I feel that I now have the tools I need to explore on my own. I didn’t have that ten weeks ago. It’s much more than just listening and deciding if you like it or not. I can now listen and identify all sorts of things about a piece. I still might not like it, but now I know why.

This is the third MOOC I’ve taken. Last year, I took the Stanford database course and MongoDB for Developers. Both of those consisted of video lectures and programming assignments. Jazz Appreciation also had video lectures, but in lieu of programming assignments they used something called Cerego, which was sort of like flashcards, only multimedia. In addition to text, they could play music to quiz you with. Also, the questions weren’t just random; they used an algorithm to decide what you still needed to work on. It was kind of fun, if a bit repetitive. Some of the questions were subverted by the pictures. For example, one of the little icons for “Fusion” was a picture of Herbie Hancock. So if it was a question about Herbie Hancock and you already know what Herbie Hancock looks like, then you don’t really have to know the answer to the question. The task is reduced to “click on the picture of Herbie Hancock.”


Figure 2: Click on the picture of Herbie Hancock

Another difference with the previous MOOCs I’ve taken were the video lectures. Rather than speaking to slides or a white board, Hellmer lectured right from the piano. This enabled him to illustrate many points immediately on the keyboard.


Figure 3: Motivic Development

There are also other members of the UT faculty with different instruments in some of the videos. Most of the videos are just Hellmer at the piano, though. He’s very skilled and managed to get his point across even when he was talking about things that pianos can’t really do, such as scooping or growling.

Like the other MOOCs I’ve taken, this one had a discussion board. I don’t think this format scales up to thousands of users, but there were some nice discussions on there with interesting people from all over the world. I learned about Oscar Peterson, whose statue in Ottawa I have seen many times, but not given proper attention.


Figure 4: Oscar Peterson statue in Ottawa

This class also featured weekly “office hours” on Twitter (#jazzofficehour), where @UTJazzApp would answer questions real time. This also would not have scaled if everyone in the class had shown up, but in fact it turned out great. It seems just the right amount of people showed up each week to keep things lively without getting out of control.

I really can’t say enough good things about this course. There is talk of repeating it in January 2015. If you have any interest in jazz at all, you owe it to yourself to check it out!