June 2010
3 posts
Speaking @ Refresh the Triangle
I’ll be giving my talk at Refresh the Triangle this Thursday here in Durham. More info is available on the website. If you’re in the area, I hope you’ll come out.
Peer Pressure Learning Experiment
Just received a tweet from Tim Harvey that he and a friend are undertaking their own month of new technology. It’s an incredible feeling to see people picking up where I left off.
Good luck, Tim and Miles!
Another Writeup
I put up a detailed writeup of the experiment on my company’s developer blog.
May 2010
12 posts
It is finished
The Month of New Technology has drawn to a close. I put a short write-up on my website, including slides from the presentation I gave at DevNation Chicago on Saturday.
As a follow-up, I’m finishing up The Little Schemer and then digging into Real World Haskell. If you’ve gotten anything from reading these posts, let me know on Twitter. Thanks for reading!
Day 30: Riak
This is it, folks. For the final stop on this tour, I took a look at Riak, another entry in the NoSQL race. It feels most similar to MongoDB with its use of JSON to store documents and ability to execute map-reduce functions written in Javascript, though the documentation refers to it as a key-value store, which would put it closer to Redis. Unlike CouchDB, installing Riak with Homebrew went off...
Day 29: CouchDB ... sort of
To cap off this month-long journey, I planned a NoSQL double-header with CouchDB and Riak, the last two technologies on my list. I decided to tackle Couch first, but, like Barry Sanders in his heyday, it opted not to be tackled. I couldn’t get the ICU library to build with Homebrew despite an hour of effort, which made installing Couch impossible. It looks like this is an established problem...
Day 28: Haskell
For the second half of today’s in-flight double header, I spent an hour with Haskell, another functional programming language similar to ML (and by extension, OCaml). I didn’t have as much luck finding good resources for Haskell as I did with Erlang; I started with Learn Haskell in 10 Minutes, which worked about as advertised, and from there, dove straight into a PDF version of Real...
Day 27: Erlang
I’ve always been intimidated by Erlang; its syntax is just similar enough to languages I know that it seems like I should be able to read it, but different enough that I can’t. Undaunted, I installed it with Homebrew, loaded a few PDFs onto my laptop, and boarded the plane back to NC. I started off with the total idiot’s guide, which was just about right. It showed me how to use...
Day 26: CSS3
After missing yesterday (my first out-and-out failure), I decided to hop back in with CSS3. CSS, or cascading stylesheets, are the way the look-and-feel of websites are defined. Good websites, at least. We’ve basically been using CSS2, or some version thereof, for the last ten years. As older browsers are getting phased out and replaced by newer ones, though, we’re starting to see...
Day 25: HTML5
Greetings from sunny Burbank. Today I spent some time with HTML5, the new specification for web markup. There’s a lot of stuff in HTML5, but I chose to focus specifically on offline storage. What local storage accessed via Javascript has to do with HTML … not sure. But I’m glad it’s here.
As part of HTML5 local storage, modern web browsers ship with a built-in relational...
Day 24: OCaml
Today I’m coming to you from about 38,000 feet. I’m headed out to visit my sister in Los Angeles, but nothing can stop the Month of New Technology. Nothing. But that’s why there aren’t any hyperlinks.
Before I left for the airport, I downloaded OCaml with Homebrew (my new BFF) and the “Introduction to Objective Caml” PDF. OCaml is
a popular, expressive,...
Day 23: Io
The ostensible subject of today’s experiment was the Io langauge — and what an un-Google-able name it is — but the title of today’s post might as well be, “Why I finally switched to Homebrew.” I’ve been a loyal MacPorts user ever since I switched to Mac about five years ago. I’ve had a decent experience, but never liked how long it takes to install...
Day 22: MacRuby
Tonight, Ren and I took a look at MacRuby, a version of Ruby that runs on top of Mac OS X core technologies, allowing developers to create Mac apps in Ruby. Version 0.6 was released just today, so it seemed like a good occasion to dive in. I wasn’t able to use the installer, as it requires Mac OS X 10.6 (Snow Leopard) while I’m still running Leopard. I downloaded the source and tried...
Day 21: Chrome Extensions
Yesterday was a busy day, so I got started working with Chrome Extensions but was unable to finish the hour, and I finished it up tonight. Google’s Chrome is their entry into the browser game, featuring the WebKit rendering engine (same as Safari), process-per-tab architecture to quarantine misbehaving websites, and a unique extension system that uses the web’s native languages: HTML,...
Day 20: Go
Yesterday was spent traveling to Wintergreen ski resort for a company event, so the only free time to learn the chosen technology, Google’s Go language, was during the bus ride up. Clinton joined me for today’s experiment, and we worked through the official tutorial in about an hour and a half. Go is a systems programming language, somewhat similar to C, initially released late last...
April 2010
21 posts
Day 19: MongoDB
Last night, Ren and I checked out MongoDB, a document-oriented database that claims to bridge the gap between key-value stores and traditional RDBMSes. Mongo is one of the technologies at the forefront of the NoSQL movement — which, in a nod to political correctness, apparently now stands for “not only SQL” — and has been getting a lot of good press in the Ruby on Rails...
Day 18: Scheme
Tonight, I sat down with Scheme, “one of the two main dialects of the programming language Lisp.” Though MacPorts offered several versions of Scheme, I opted to download PLT Scheme from its website, as I’d heard it was among the best versions available. With that installed, I loaded the REPL and opened The Little Schemer, loaned to me by Scheme fan (and implementor) Clinton R....
Day 17: Mercurial
Today, Ren and I sat down to learn Mercurial, a version control system similar to Git. We downloaded Dan Benjamin’s Peepcode screencast and put it up on my television. The screencast is very well done, and Dan does a good job outlining Mercurial’s functionality. As a fan of Git, though, I have to ask: why do these two pieces of software exist? They’re exactly the same. Mercurial...
Day 16: Cassandra
As I’ve looked at these different technologies in the last two-and-a-half weeks, one difference I’ve become keenly aware of is how well they market themselves. Redis and Sinatra both do fantastic jobs welcoming new users. Today’s technology, Cassandra, does not. From the Getting Started page:
Cassandra is an advanced topic, and while work is always underway to make things...
Day 15: Scala
To mark the halfway point of this month, I decided to tackle Scala tonight, one of the three most intimidating technologies on my list (the other two being Erlang and Haskell). One way to think about Scala is “Java done right” — it runs on the JVM, and works very similarly to Java, but with a lot of the cruft thrown out. It’s still statically typed, but the compiler will...
Day 14: Treetop
Tomorrow marks the halfway point of this month-long experiment, and though you’d think a shorter list would make picking a technology easier, I’ve found the exact opposite to be true. Today, I took a look at Treetop, described on the project homepage as “a language for describing languages”. Treetop deals with Parsing Expression Grammars, something I don’t have much...
Day 13: Squeak
Feeling well-rested after a long car trip, I decided to tackle Squeak this afternoon. Squeak is an open source implementation of Smalltalk, an object-oriented programming language that is often pointed to as the spiritual predecessor to Ruby. Smalltalk never achieved widespread popularity despite an extremely enthusiastic user base, though development on and with Squeak continues to this day.
...
Day 12: Sinatra
For this evening’s adventure, I took a look at Sinatra, a domain-specific language for creating web applications in Ruby. Relative to Ruby on Rails, my primary web app framework, Sinatra is much smaller and more focused on quickly developing small applications. I’m still in West Virginia with spotty Internet access, so I appreciated that Sinatra provides a one-page guide to its core...
Day 11: jQTouch
I’m reporting live from a hotel room in West Virginia tonight. Wireless crapped out about halfway through tonight’s hour, so I’m typing this on my iPhone. The lack of internet access wasn’t much of an issue, really — tonight’s technology, jQTouch, doesn’t have a lot of information available on the net, and in fact the best resource for learning it turned...
Day 10: Lua
I made the trip from Durham to DC after work today, so I didn’t get a chance to sit down with today’s technology, Lua, until about 1:00 in the morning. Lua is a small scripting language primarily designed to be embedded within larger projects in heavier languages like C to provide configurability and extensibility. My only familiarity with it was as the language in which World of...
Day 9: Django
Today I decided to take a look at Django, the “web framework for perfectionists with deadlines.” I’d actually spent some time with Django back in 2007, and wanted to see how the framework and my knowledge of web programming have advanced since then. I downloaded and installed the application and followed the setup instructions to create a new application. It was simple to...
Day 8: node.js
Today Ren and I checked out node.js, described as “Evented I/O for V8 javascript.” If you don’t speak this particular flavor of nerd, let me expand on that definition a little bit: node.js is a platform built on top of Google’s V8 Javascript engine for sending and receiving information over a network. We already showed how it can be used as a command-line Javascript...
Day 7: Jekyll
Today, I took a look at Jekyll, a “simple, blog aware, static site generator.” It was originally created by one of the GitHub guys, and is used to power GitHub Pages, their static site hosting service. Installation was a simple “sudo gem install jekyll”. From there, I set up a sample project with the suggested file layout, and created a few layouts and posts. Creating a...
Day 6: CoffeeScript
Motivation was low tonight — late night, long day, enormous Quizno’s sub at lunch. I wanted something simple to play with, as I was likely to fall asleep if I had to do a bunch of reading. I decided to try CoffeeScript, a small language I’d seen mentioned on Hacker News that compiles to Javascript. I pulled down the code and tried to install the executable, and it told me I...
Day 5: ZSH
After last night’s mind bender, we decided to take it easy and play around with ZSH, an alternative to OS X’s default BASH shell (and yes, I know saying “BASH shell” is like saying “ATM machine,” and yes, you’re very clever for noticing). A lot of coworkers, friends, and Ruby community members use ZSH and make their configurations available for download.
...
Day 4: Clojure
We thought about following up yesterday’s success with Redis by diving into Riak, another non-relational data store, but after looking at the docs, it was clear that we should wait until after we’ve tackled Erlang and Mercurial. Instead, we decided to take a look at Clojure, a Lisp for the JVM. Installation was simple: clone the GitHub repository and build the project with...
Day 3: Redis
For today’s technology, Ren and I decided to spend an hour with Redis, an advanced key-value store, similar to memcached, but with more sophisticated data types and operations. MacPorts was able to get me up to the latest stable version, but, never one to be satisfied by the stable version of anything, I followed the instructions on the project wiki to install the most recent code. Once...
Day 2: ooc
For day two of our experiment, my buddy Ren and I decided to take a look at ooc, a new language that bills itself as
a modern, object-oriented, functional-ish, high-level, low-level, sexy programming language.
I’d read about it on GitHub Rebase and thought it looked interesting. Installation was fairly straightforward; it wasn’t available on MacPorts or Homebrew, but the...
Day 1: Vim
I decided to kick this thing off by spending an hour with Vim. I’ve been a loyal TextMate user for about five years, but I’ve always wondered what it’d be like to be a full-time Vim guy. Some of the top Ruby shops use Vim, and one of our new guys at Viget is a big fan. Even if I don’t end up making the switch, a better knowledge of Vim will be a huge help when editing...
The List
Here are the 30 technologies I’ll be focusing on this month:
Cassandra
Chrome Extensions
Clojure
CoffeeScript
CouchDB
CSS3
Django
Erlang
Go
Haskell
HTML5
Io
Jekyll
jQTouch
Lua
MacRuby
Mercurial
MongoDB
Node.js
OCaml
ooc
Redis
Riak
Scala
Scheme
Sinatra
Squeak
Treetop
VIM
ZSH
My Month of New Technology
I’m going to spend a month learning a new technology every day. 30 new
technologies. 30 days. One hour each. I’ll be using this blog to store
my notes about the individual technologies and my observations about
the overall process. When I’m finished, I’m going to present my
findings at DevNation Chicago on May 15th.