Monday, October 29, 2007

OOPSLA Recap Part II: Technical Stuff

Now that I've given this talk on my summer work (it went quite well, thanks for asking!) I thought I'd pick out a few of the technical highlights from this year's OOPSLA. I describe it in a cut-oriented style, to save some of you some pain.

Interesting thing 1: The Scala tutorial!
After reading Scalable Component Abstractions, by the Scala people, I got a little bit worried.
It seemed to me that Scala, the language I thought had everything I wanted, was in fact way too complicated. Well it may be too complicated, but after the Scala Tutorial that I attended last Monday, I have a new respect for the power of Scala, and believe that it is a great programming language right now. The absolute highlight of the Tutorial was seeing the guys program a Excel-style spreadsheet with real formulas and cell dependencies in 200 lines of code right there in the room! The ease of programming seemed to be due to a few things, but one was the fact that parsers can be programmed right there into the language using something called parser combinators. Neat. Also, they built a simple layer upon the Swing library which allowed them to program in a reactive style (similar to Erlang maybe) when responding to GUI events. It was dope. I also met and got to hang out with two members of the Scala team, Sean and Gilles. They both were really nice and seem to know what they're doing. Awesome, right?

Interesting thing 2: Alex Buckley, Lord of the Java Spec. I also met and spent a fair amount of time with Alex Buckley, the man who is now officially in charge of the Java specification.
We spent a fair amount of time talking about what he does (mainly answer question from the Eclipse people and other compiler writers clarifying the specification as well as handling the JSR process) and talking about potential extensions for Java (such as a quasi-ML-sort-of-like module system called "super packages." No functors though...). Even though he just finished his PhD, he was quite knowledgeable, especially on the theoretical stuff. I was left with the feeling that Java is in sane hands.

Interesting thing 3: Dan Grossman, and his work on transactional memory. I got to talk with him a bit, and he was extremely interesting. This is worth saying outside of any cut; if you have even a passing interest in transactional memory, you really ought to read Dan's essay,  The Transactional Memory / Garbage Collection Analogy. Do it for me.

Interesting things: Other papers on my, to-read list:

Transactions with Isolation and Cooperation - If anything, this paper caused me to realize something about the semantics of the 'retry' statement that I never understood before. Normally using the 'atomic' statement allows us to use purely local reasoning. Unfortunately this isn't always the case, in particular with retry. Suppose you are trying to create a barrier, a point that all threads must reach before any can proceed. You might use code that looks like the following:

foo() {
  atomic{ x++ };
  atomic{ if( x < 10) retry; else ... }
}

Unfortunately, if a function that calls this function is already inside an atomic block, this code will no longer work, thus getting rid of our nice local reasoning. Boo.

Lost in Translation: Formalizing Extensions to C#
- A nice, straightforward paper about using type theory (of all things!) to formalize the new features of C# 3.0, translating them to C# 2.0 where appropriate, and formalizing the old features where necessary.

Okay, that's all. It was an interesting trip!

Sunday, October 28, 2007

OOPSLA Recap Part I: Photos


Arret already
Originally uploaded by DixiePistols.
Well I've certainly taken my sweet time in giving you guys a recap of my experiences in Montreal, but what can I say? I was busy pretty much the whole time I was there, and now that I'm back I am hurriedly preparing for a talk that I have to give tomorrow. Nevertheless, I think that putting up some fun pictures of my trip won't take too much time, and it should pique your interest for Part II of my OOPSLA recap, wherein I will describe the interesting research talks I attended, and the interesting people I talked to.

Friday, October 19, 2007

OOPSLA: Pre-Hype Edition

As you may have heard by now, I'm headed to Montreal tomorrow for this year's OOSPLA conference. I am pretty excited. I'm going as a student volunteer, and plan to see and do a lot. I thought I'd put up a list of talks, tutorials and keynotes that I'm planning on seeing or think I should see.

Here's the run-down:

Tutorials: Tutorials are usually hands-on sessions about a particular technology; they teach you how to actually go about using all these fancy tools that come up in the technical talks, and usually consist of a bunch of demos.
Keynotes: Keynote speakers are usually pretty well established in the field, and get to talk about whatever they want. This is usually either some kind of retrospective ("back in my day, we only had 128k of main memory!") or free-form talks on the speaker's most recent interest, which may or may not be of publication quality. These are often the most entertaining talks of any conference, but the lowest on technical content.
Technical Talks: Actual presentations of research papers, these talks constitute the primary purpose of the conference.
What about you? Going to OOPSLA? What are you excited about seeing? Don't care at all?

Whoa-La! Google Maps

Just recently learned that in Google maps you can create little side-trips to your driving directions, just by dragging and dropping a route! Rad, right? This is especially helpful to me because I want to stop by a Citibank ATM in the Citi of Buffalo, NY so that I can pick up my last paycheck from my summer job in India. Sound ridiculous? You betcha! Here's our new and improved route:

To Montreal:

Wednesday, October 17, 2007

Beautiful

Depending on your idea of what make a beautiful programming language, you may enjoy this blog that I just found!

Also, getting excited for the big trip to Montreal next week for OOPSLA! Once I take a look at the actual program, I'll post a few talks that I am excited about...

Monday, October 15, 2007

Compu-Lingo

A Catch represents one half of a try-catch statement. Specifically, the second half.

(From, Polyglot API documentation)

Friday, October 12, 2007

Java Technology; So Simple!

Reading about Java, I found this little gem on the web:

The assertion facility in J2SE 1.4 and later versions is not a full-blown design-by-contract facility. Adding such a facility would require substantial changes to the language and might subvert the simplicity of Java technology.

Which naturally made me LOL out loud, as Java is anything but simple. The name alone refers to about sixteen different concepts simultaneously.

As an aside, if you want to actually use assertions in Java, make sure you turn them on! Use the "-ea" flag at the VM. They are off by default!  Boo! I think this officially makes it the only runtime checking that is off by default in Java.

Thursday, October 11, 2007

Dear Firefox, You Suck to the Max

I am experiencing a really annoying bug that has existed in Firefox for many versions, and as of yet has no solution. Boo!

So I guess the point is, if I send you an email that sounds really stilted because I am using no contractions whatsoever, it is probably because of this.

Wednesday, October 10, 2007

UrbanHike Scavenger Hunt, October 21st!

The Steelers have a night game, so what else are you going to do all afternoon?

We always wrap up our hike season with a scavenger hunt, and this year, it's in Shadyside (and bits of other neighborhoods like East Liberty). If you haven't experienced one of these before, here's what you need to do: 1)Gather up a team of 3-5 people. 2)Make sure someone on your team has a digital camera, and clear it of photos (especially the embarrassing ones). Bring the camera and its connection cord to the hunt (so we can download your photos onto our computers and show them to the world).

When: October 21, 2007. Clues distributed at 1:30 pm; hunt ends at 4 pm. Post-game show featuring prizes and your finest photos from 4 till about 5, or longer if we're still enjoying each other's company.

We'll start outside East Liberty Presbyterian Church, 116 S. Highland Ave. Street parking is pretty easy to come by (you don't have to feed the meters on Sundays).
Ending location: Double-secret. But we can tell you there will be refreshments available (pay your own way).

Directions:
From the Parkway North (I-279 southbound):
Take the Veterans Bridge (I-579) to the 6th Ave exit. Follow signs for Mellon Arena.
Take a left and follow signs for Bigelow Blvd. Continue onto N. Craig St, then turn left on Baum Blvd.
Turn left at S. Highland Mall.
From the Parkway West (I-279 northbound):
Take exit 6C (Convention Center/Strip), follow around to 11th Street.
Turn left on Liberty Ave, left on 40th, right on Penn, right at S. Highland Mall.
From the Parkway East (I-376 westbound):
Take exit 8B toward Wilkinsburg. Continue onto Penn Ave. Turn left at S. Highland Mall.
From the Liberty Bridge:
Take the ramp to I-579 north and exit onto Bigelow Blvd. Turn left on Baum Blvd. Turn left at S. Highland Mall.
Questions? E-mail info@urbanhike.org.

Tuesday, October 9, 2007

MSR

I just found out I was not nominated by CMU for the MSR fellowship. Bummer. I would have like a new laptop... oh and the prestige!

Google Street View Pittsburgh

(Friendslocked, so that the entire world doesn't know where I live.)

Check out the google street view!

The Palace

Saturday, October 6, 2007

Why I Left Linux Land

I thought I'd talk a little bit more about why I finally decided to switch from Linux back to Windows. I will admit right off the bat that some of these issues are due to my inexperience as a Linux maintainer. However, my inexperience does not make me embarrassed at all. From what I have seen in the past two years, the investment required to become a Linux guru is not worth it in the end, at least not for me. My priority above all else is to be a productive graduate student.

So here are the reasons why I left, culminating with the straw the broke the camel's back:
  1. I had a facilitized machine - This is more of a meta-reason, but I was using a CMU facilitized Linux box. This provides a few benefits, like support for when things break (which I needed on numerous occasions), backups and easy access to the printers. However, it makes it impossible to find help on the Internet that actually applies to my system, since my configuration was non-standard in so many ways. I briefly considered installing Debian or Ubuntu and separating from the CMU/Facilities industrial complex, but decided that I don't have time for that sort of thing.
  2. XMMS Doesn't work - For whatever reason, the XMMS media player crashed on my system whenever I tried to play a song. It was a gnarly error that had to do with its inability to create a new thread. The internet had no helpful advice and 'yum update' did not bring me any respite. I wanted XMMS because it's what I used to use last year before my harddrive failed and CMU upgraded me to Fedora Core 5.
  3. RhythmBox - So I wanted Last.fm support in the music player that I did use. Turns out, the version of RhythmBox that comes in the Fedora Core distribution is an earlier version that does not yet have support for Last.fm. The package that did have the latest vesion only worked on FC6 and above. I wanted Last.fm support so badly, that I downloaded from source and built the newest version. The only want I could get the build to work was by removing some random lines from the Makefile. Every time I launched RhythmBox, it gave me an error about visualizations not working, and still Last.fm support was spotty. It would only record that I had played a song when it damn well pleased. This all brings me to my next point...
  4. The Fedora package system is crazy - I like how the linux world has attempted to make software installation easier with the use of package managers like Yum. This is good. What is not good is how a given Fedora package will only work for your exact version of Fedora. If I want RhythmBox version 3.3, for instance, and the FC5 package only has up to version 3.1, tough luck. I am essentially running an incompatible operating system for all intents and purposes. In the Windows world, I can easily and run a program from the Windows95 days, and it will work almost every time.
  5. Flash - Again, I have been told that this was a problem with having a facilitized machine, but Flash never worked, in my two years of trying. Flash! I tell you, it really sucks having everyone and Katy Couric talking about some YouTube video that is sweeping the nation and not being able to watch it.
  6. Eclipse - And finally, the end for Linux. Eclispe 3.3 had been working for a month. All of a sudden, it started crashing on launch, and no matter how many times I reinstalled it, nothing was solved. I even had a bonafied Linux/Eclipse guru come in, and he basically told me I was screwed. I need Eclipse for a project I have just started. What else can I do? Added to this fact that Eclipse was always much slower on Linux that Windows, and I am way happier now.
Most of these problems aren't Linux's fault per say. Savvy Linux friends gave me reasonable explanations for each of the problems I experienced, and I was sympathetic. But at some point, I just need to get work done, and I need my computer to work. As  pointed out, there are definitely benefits to using a mainstream platform. In the Windows world, you rarely have a problem that no one else in the world has ever experienced. In this Linux world, this seemed to happen on a regular basis. Windows sucks in many ways, but at least the programs I need to use generally work. Okay... that is all...

Dear Linux, It's Not Me, It's You

After two plus years of using Linux on my work computer, I am switching to Windows permanently starting right now. It's a bit of a story, and I've got a few rants stored up, but I'm excited about the switch and excited about returning to productivity land.

Friday, October 5, 2007

Posting to your blog is for suckers, that's why I haven't

Whoa! Turns out I spent the latter half of this week applying for a fellowship that is due right about now. (Don't worry, I submitted already!) I didn't actually find out about it until Tuesday and didn't know I was going to be applying until Wednesday morning, and while it was kind of tricky getting things together, I think in the end it was a positive experience. For example, they basically want to see a thesis proposal, or something in the same vein. I had nothing of the sort, and therefore had to start the soul-searching process of figuring out what exactly it is I am going to be doing for the next few years. Good, because for the first time I had to write down some ideas I had been having. Hard, because this is a brand-new project, and I still don't understand everything!

The only bad part is that me and all my CMU friends are competing to get one of the three (?) departmental nominations. It's too bad because, you know, in general I like my friends at CMU...

Anyway, I shall be getting back to my regular research with renewed vigor.