Tony Arcieri

1 January 2011 8 Comments

Who is Tony Arcieri?

Who am I? There’s not really one distinct subculture I fit into. I’m something of a goth hippie nerd. While musically I tend to be the exact opposite of a hipster, getting into bands long after they’re popular. But technologically I’m a total hipster, always looking for the latest trends and jumping on them long before other people even start to care.

Where and when did you start programming?

My parents bought our family an Apple IIGS when I was about 6 years old. Right away I wanted to learn my own programs. I started using the built-in ROM BASIC, and after that AppleSoft BASIC, which let you save your programs and even create bootable floppy disks that automatically launched your programs. I loved to write simple action games, and would steal graph paper from my elementary school so I could plot out the sprites for my characters.

Around age 13 I simultaneously discovered the Internet, Unix, and C, and instantly stopped caring about writing games.

You favorite language?

Ruby is far and away my favorite language. For years I was a performance-obsessed C-lover, but after some 10 years of it I eventually came to terms with the fact I was solving the same mundane problems over and over, like making sure my pointer arithmetic was correct and that I was managing memory properly, and that was eating up time better spent actually solving the high levels problems. There’s a quote I saw once that I unfortunately haven’t been able to find again, I think it’s from Bill Joy originally… it’s something like “there comes a time in every C programmer’s life when they realize they’ve written enough linked lists and hash tables and debugged enough memory and pointer arithmetic errors and move on to a language with a higher level of abstraction.” For me, Ruby was that language.

Ruby is an extremely rich language with lots of features that help you get things done quickly. For the most part it stays out of your way and lets you just get things done. Rather than spending a lot of time trying to figure out how to fit your program to the language’s model, Ruby instead does a great job of letting you express your solution as you see fit. It’s pretty much the opposite of a “puzzle language” in the vein of functional languages like Haskell or stack languages like Factor. Ruby is instead a practical language for getting things done.

Personally I think the Ruby community is amazing. Though some of its bigger names have come and gone, I’ve met a lot of interesting people simply because they’re fellow Rubyists. There’s now an amazing wealth of libraries (RubyGems just surpassed Perl’s CPAN in terms of total number of libraries) and a number of great Ruby implementations, including JRuby and Rubinius. People often look to Python as being a more mature language with Ruby as the younger up-and-comer, but I think that’s changed now. The Ruby ecosystem is better and more mature than Python now.

Why do you hate Scala?

I don’t hate Scala. I think Scala might be a great choice for Java shops who are mired in complexity and are looking for a more productive language. Scala seems like a great choice for a statically typed language on the JVM.

That said, I don’t find Scala particularly interesting either. As far as alternative JVM languages go (besides JRuby), I find Clojure much more interesting. While I’m not a fan of Clojure’s Lisp syntax, it’s done an absolutely amazing job of providing multiple paradigms for concurrency, which I along with many others see as a big challenge that all programming languages are beginning to encounter. Scala also purloined a lot of its ideas from Erlang, but didn’t do a particularly good job at implementing them.

What’s reia & cool.io?

Reia is my main passion when it comes to my open source work. It’s an alternative language for the Erlang ecosystem, which combines syntactic elements from both Ruby and Python and provides an everything-is-an-object language with the same semantics as Erlang. Erlang is perhaps the foremost language for fault-tolerant distributed computing, and also for building programs that you can update live without ever needing to shut down and restart the language interpreter. Distributed computing and peer-to-peer network applications have always been a passion of mine and Erlang did the best job of solving the many problems involved of any language I’d ever seen.

When I first started learning Erlang, right away I hated the syntax and started playing around with how I might map a Ruby-like syntax onto the language. After digging a bit deeper, I discovered Erlang has some great APIs for programmatically invoking the compiler and loading code. I’d also been talking to Zed Shaw, who’s very passionate about things like languages and parsers, and he motivated me to learn how to write a parser. After a bit I managed to write a simple calculator which ran on the Erlang VM, and from there I developed it into a fully fledged language.

Lots of people seem to be under the mistaken impression that there’s some kind of huge semantic gap between Ruby and Erlang. I don’t think that’s true at all. Ruby borrows heavily from functional languages and promotes doing things without destructive state modifications by default. Most of the time when you do mutate state, Ruby adds a “!” to the end of the method name so you remind yourself that what you’re doing is “dangerous”. Ruby also emphasizes using anonymous functions as the bodies of loops with its “blocks”, and most of the Ruby code that people write would not be hard to transition to an immutable state functional language like Erlang. Ruby’s mass assignment, case statement, and === operator provide a similar feature to Erlang’s pattern matching. The two languages are a lot closer to each other semantically than many people may think.

Cool.io is an event framework for Ruby, which can be used for writing scalable network servers, monitoring the filesystem for changes, creating timers that fire off functions, and mixing and matching anything that needs these sort of event responders to your heart’s content. It’s similar to another Ruby library called EventMachine, but it’s built on libev, a high performance C library and the same library which powers Node.js. The API Cool.io exposes is simpler and easier to use than EventMachine, but the underlying implementation exposes a lot of functionality. Unlike EventMachine, Cool.io is built around Ruby’s own core I/O objects rather than EventMachine’s approach of trying to reinvent the I/O layer. Between that and the guts being primarily in libev, this makes the Cool.io codebase much smaller and easier to work with than EventMachine, and relegates most of the bugs that one might encounter to Ruby itself or libev.

What does your typical day look like?

I drive or take the train to work, grab my morning cup of coffee, read email, RSS, and Twitter. Maybe I’ll get a little bit of work done before lunch. After lunch, I generally go balls to the wall programming and debugging until it’s time to leave. I come home, grab dinner somewhere or make it here, then find something interesting to do in the evening.

What do you do in your free time?

I know a lot of people who program as a day job don’t want to think about programming at all when they get home, but hey, what can I say, I’m obsessed. I’ll generally do a little bit of programming at home on open source projects even after having done it all day.

I watch an awful lot of TV and movies as well. My day job is in Internet TV and I own a lot of different devices for consuming video, including a Boxee Box, Apple TV, and the Logitech Revue (i.e. Google TV). I’d like to write off my TV watching as market research.

I’m a big fan of cooking and have been enjoying making various types of stir fry in my cast iron wok. I’ve also gotten into baking bread and making various artisan breads like ciabatta and baguettes.

I love music and used to play bass pretty regularly. Now I just sing, and do karaoke about once a week. I’ve thought about trying to join a band but I don’t think I really have time.

I also love dinking around with various electronics projects. I’ve been learning how to program an Arduino and have some ideas for how to use it to make a MIDI instrument which I keep procrastinating on.

Current favorite apps?

I really like the much maligned iTunes. I have a surround sound system in my living room and two additional speakers on my back porch, and love being able to use Apple Remote on the iPad to pick out songs or build playlists and individually control the volume of both of my speaker systems directly from the iPad. The view Apple Remote gives you of your media on the iPad is nothing short of amazing.

For video, I’ve become a big fan of Plex. Plex is sort of a video equivalent of iTunes, which will download extended metadata and posters of all of the videos in your collection and let you browse them and play them on the iPad. I’m just waiting for Apple to launch an App Store on the Apple TV, and for Plex to distribute an official Plex app on the Apple TV, and I’ll be set.

What OS do you prefer?

I use 3 operating systems regularly: MacOS X, Linux, and Windows 7. I love MacOS for my desktop operating system and software development. Linux is my go to operating system for servers, although once upon a time I was a big fan of FreeBSD. There’s a number of Windows specific programs I have to use, particularly for things like video encoding, and Windows 7 really isn’t that bad.

Small picture for your Workplace?

Name something that has inspired you recently?

I recently watched the film “Exit Through the Gift Shop”. It’s a documentary (or perhaps mockumentary) about street art, particularly Sheperd Fairey (perhaps best known for the Obama “Hope” poster and “Obey Giant” posters) and the British artist Banksy. Both Banksy and Shepard Fairey are known for spray painting or wheatpasting posters in public spaces. The movie is a bit strange in that the focus isn’t on Shepard Fairey or Banksy, but instead an unknown videographer-turned-graphic-artist who goes by the name Mr. Brainwash. At face value, the movie shows how Mr. Brainwash took Shepard Fairy and Banksy’s ideas of synthesizing pop art with somewhat sarcastic street art, then put on a multimillion dollar art show which catapulted him into fame. I really liked the idea that by taking other people’s ideas and tweaking them a little bit and presenting them in a new context, you can make them a lot more valuable.

All that said, it’s quite likely that Mr. Brainwash isn’t the genius they make him out to be in the movie, but something of a prank perpetrated by Banksy and Shepard Fairey to make a statement about the commercialization of street art.

What do you prefer (and why)? Freelance work or full time employment?

I can’t say I’ve ever understood freelancers. I’m the type of person who likes to take on large projects and dedicate a lot of time to thinking about them. I don’t think there’s been any point in the past decade where I wasn’t working on at least project I knew would take more than a year to actually be useful. I really like taking the time to learn and flesh out all of the details of a large complicated project, and I don’t think I could ever get that from freelancing.

What are your personal projects and goals for 2011?

I’d like for 2011 to be the year I actually feel confident in telling people they can start using Reia in real-world projects. I’ve made a lot of tough choices in Reia’s history that have completely broken backwards compatibility, things like getting rid of a Python-style indent sensitive grammar and completely rewriting the entire language to be better implemented and more object oriented. I think these decisions have scared off a lot of people who were potentially interested in using Reia. That said, I’m pretty happy with the state the language is in now and want to spend time on better documenting it and fixing showstopper bugs so people can actually start using it.

I’ve also seen a lot of interest in Cool.io as a Ruby-based alternative to Node.js and want to continue documenting it and finding ways to make it more useful. One of the issues that keeps coming up is JRuby compatibility, which is something I’m also interested in as we use JRuby heavily at my job. I’d like to write a native JRuby backend for Cool.io, which shouldn’t be too difficult as the JVM already provides suitable replacements for libev and JRuby already provides the I/O layer.

Last but not least, in 2011 Google will launch the Android Marketplace on Google TV devices. I’d like to help port Ruboto (JRuby on Android) to Google TV devices and expand Ruboto into a framework for developing applications on the Google TV platform. It’s a bit funny because Matz, Ruby’s creator, is working on a new language and virtual machine called Rite which he hinted is targeted at Internet-connected televisions and should be ready sometime in 2012. I think it should be possible to have the full Ruby language working in the Google TV environment at least a full year before Rite can claim the same thing.

8 Responses to “Tony Arcieri”

  1. xbox spel download 16 October 2011 at 8:02 pm #

    Thank you for the actual beneficial publish! I’d not have identified this kind of or else!


Trackbacks/Pingbacks.

  1. The Geek Talk - 01. Jan, 2011

    Interview with Tony Arcieri http://bit.ly/htYwmB #Clojure #Cool.io #Erlang #JRuby #Reia #Rubinius #Ruby #Scala

  2. Hiro Asari - 01. Jan, 2011

    RT @TheGeekTalk: Interview with Tony Arcieri http://bit.ly/htYwmB #Clojure #Cool.io #Erlang #JRuby #Reia #Rubinius #Ruby #Scala

  3. Samantha Smith - 01. Jan, 2011

    Tony Arcieri | The Geek Talk: I also love dinking around with various electronics projects. I've been learning h… http://bit.ly/i1Xkv7

  4. Cathy Mackay - 01. Jan, 2011

    Tony Arcieri | The Geek Talk: I also love dinking around with various electronics projects. I've been learning h… http://bit.ly/i4CWki

  5. Krzysztof Grodzicki - 02. Jan, 2011

    RT @TheGeekTalk: Interview with Tony Arcieri http://bit.ly/htYwmB #Clojure #Cool.io #Erlang #JRuby #Reia #Rubinius #Ruby #Scala

  6. Tony Arcieri - 03. Jan, 2011

    RT @TheGeekTalk: Interview with Tony Arcieri http://bit.ly/htYwmB #Clojure #Cool.io #Erlang #JRuby #Reia #Rubinius #Ruby #Scala

  7. Sergio Bossa - 04. Jan, 2011

    Interesting RT @TheGeekTalk Interview with Tony Arcieri http://bit.ly/htYwmB #Clojure #Cool.io #Erlang #JRuby #Reia #Rubinius #Ruby #Scala

Leave a Reply