Posts Tagged ‘Common Lisp’

The International Lisp Conference 2009 Succeeded!

Friday, March 27th, 2009

Last December, I was invited to be general chair of the International Lisp Conference 2009.  Since then I have done a great deal of work, and it has finally all paid off.  The conference ran from last Sunday to Wednesday, and it went perfectly!  I can hardly believe it.  And we got at least 215 attendees, which was great!  (I had planned for 175; apologies to those of you who didn’t get a tee shirt and a tote bag.)

The only surprise problem was that two of the speakers were not able to show up.  However, we reallocated their time for more lightning talks.  These are five-minute talks on any topic bearing on Lisp.  Three of them were approved by the program committee and are in the proceedings.  The program committee then agreed that we could post a sign-up sheet, and let anybody talk about anything appropriate.  We ended up having about twenty-five of them.  They were almost all great!  We learned about fascinating new open source libraries, fun applications, great anecdotes, and so on.

The lightning talks make the whole conference more participatory, rather than just “we give the talks, and you sit there and listen.”  Although I’m sorry that the two speakers were unable to present their papers, the lightning talks were great.  I recommend that other conference organizers in the future consider allocating plenty of time for such talks.

The Great Macro Debate went just as I had hoped. Lisp’s macros make the Lisp language extensible.  It’s only because of macros that Lisp has stayed sufficiently up-to-date to still be a relevant language after fifty years of life.  And macros are one of Lisp’s most distinguishing features, now that so many Lisp ideas have been adopted by other languages.

Earlier this year, I was having lunch with my former co-worker, Jeremy Brown.  He had been one of the senior engineers on the Polaris project at ITA Software, and we had worked together closely.  (He left to start his own company, Rep Invariant.)  We were talking about the use of Lisp in Polaris, and specifically about Lisp macros.  To my surprise, Jeremy opined that having macros in the language was a net drawback!  Many people have objected to macros, but Jeremy really knows all about macros; he’s a very proficient Lisp programmer, and has seen how we use macros in Polaris.

So I had the idea of having him debate someone about this at the Lisp conference.  Guy Steele, as program chair, took over the idea, and found people to be in the debate.  Pascal Costanza, who is one of the deepest thinkers about Common Lisp these days, was Jeremy’s prime opponent.  Guy Steele himself was Pascal’s “second”, and Dick Gabriel was Jeremy’s.  I moderated.

Jeremy prepared very thoroughly, with slides that presented all of his attacks, and were also very funny.  The debaters both made important real points, and kept the whole thing hilarious.  There was a great deal of contention and disagreement, to the point where audience members, unable to contain themselves, started shouting out questions and comments.  Indeed, I felt the same way myself, and misused my privilege of having a microphone to participate in the debate.  Finally Dick Gabriel said, “OK, Weinreb, enough of this.  SIt down at the table, and I’ll be the moderator!”  I replied, “Oh, thank you!  Now that I’m a panelist, I can say what I want to into this other microphone!” Sadly, we didn’t videotape this, but we all had a great time.

David Moon’s talk about how to do macros for a language with syntax was very innovative, to the point where, in his introduction, Dave said “some of you may think this is mad scientist stuff”!  It’s certainly fascinating, and the people who had worked on Dylan (and therefore grappled with the same problems) were particularly interested and felt that it looked very promising.

Tom Sgouros performed his one-man, one-robot show: “Judy, or, What Is It Like To Be A Robot”.  I had seen this once at ITA (Tom works at ITA) and knew that it was perfect for this audience.  It’s about the concept of intelligent robots, and the nature of consciousness, and it’s also very clever and funny.  Tom did a wonderful job.

I’ve been catching up on my sleep (really).  But now I’m busy again!  This year’s family opera show, The Weaver’s Wedding, is opening tomorrow.  I’ve been involved in the North Cambridge Family Opera company for about ten years.  While the conference was going on, my wife Cheryl was working very long hours of the day and evening getting the set and props finished, teaching the stagehands what to do, and so on.  (As you can imagine, it’s been rather crazy around at home, with both of those things going on at once!)  I hope to blog more about the conference and papers in the future.  In the meantime, I expect some of the attendees will write their own descriptions.

Thanks again to all our sponsors, who made possible the relatively-low registration.  Special thanks to ITA Software, our Platinum sponsor, and to my wonderful boss, Sundar Narasimhan (CTO and Chief Architect of Polaris), for allowing me to take part time off from my work at ITA in order to run the conference.

Thanks very much to everyone who attended!

Reblog this post [with Zemanta]

Working at ITA Software

Monday, December 24th, 2007

Friends have asked me why I signed up to work at ITA Software, and how I feel about it.

For the last four years, I had been working at BEA Systems, in their Burlington MA office. I had joined BEA to work on an exciting new product (a message broker), and because I was very psyched about working for Adam Bosworth. Unfortunately it didn’t work out. There were too many problems with how the message broker would fit into BEA’s overall architecture, which bogged us down for a long time. Eventually the message broker was made part of the WebLogic Integration product, and moved to San Jose. Meanwhile, Adam Bosworth left BEA to go to Google. BEA found a new position for me, as architect of the “Operations, Administration, and Management” aspect of WebLogic Server. Unfortunately, the WebLogic Server group was in the middle of a very long release cycle, so all of my ideas had to be on hold until the next cycle. Also, WebLogic Server’s technical strategy was changing every quarter or so, and I’d have to start all over again. I learned a lot at BEA, studying the WebLogic Server, but finally the work was too frustrating.

Meanwhile, I had been keeping in touch with my friend Scott McKay, who had been one of the senior software engineers at Symbolics. Scott was architecting and implementing a new product at BEA, and was very enthusiastic about it. I had several other friends working at ITA, from both Symbolics and Object Design. So I thought this might be a good place to be. In January of 2006, I had lunch with a group of these friends, and Sundar Narasimhan, the CTO, and they convinced me to join.

I love working at ITA. My own primary criterion for an employer is that I get to work directly with extremely good software engineers who work well together. Symbolics and Object Design were like that, and ITA has the same kind of environment. My co-workers have lots of knowledge and experience. I learn new things from them continually.

I didn’t have any a priori interest in the airline software field, but I was fascinated by transaction processing systems. I had been studying operating systems, database management systems, and application servers for years, but I had never had a chance to contribute to a real-world, high-performance, high-availability system. Airline reservation systems were the first transaction processing systems. Most major airlines still use (some modified fork of) the original system, originally known as SABRE. It is written in assembly language on IBM mainframes, and the original creators are mostly retired or deceased. After forty years, these systems are still in operation, since they basically work and are so hard to replace. But the airline industry has changed, and has pressing new requirements. When our system becomes operational, it will be a major innovation for the industry.

It’s a very big piece of software, with a whole lot of moving parts. It has to be, because of the problem definition and the customer requirements. Fortunately, we have a great customer: Air Canada. We work very closely with them. Their CEO has realistic expectations and a very good attitude about the way the development process works. Air Canada has stepped up to be the pioneer, and it’s our job to minimize the arrows in their back. Eventually we’ll have other airlines as customers, after they see the success at Air Canada.

Scott, Sundar, I, and several others are improving the overall architecture of the reservation system. Among many other things, we’re working on high availability: making the system stay up all the time, despite any kind of failure that we can reasonably anticipate. I have been focusing specifically on the problem that we call “hot upgrade”: how to install new versions of components of the system, while it’s running, without impacting latency. This is very challenging and a lot of fun.

ITA has been voted one of the twenty best places to work for in Boston by the Boston Business Journal two years running. We work in offices rather than cubies. There are free drinks and snacks, and the company serves lunch every Friday. We have a weekly technical seminar, where speakers from both inside and outside ITA give talks on nearly anything (for example, recently Tom Knight from MIT told us about his work in synthetic biology). There are informal activities like Movie Night, Movie Camp, Math Lunch, and so on. There’s an entrepreneurial culture and innovative spirit.

I have learned over the years that in a small software company, the CEO has a huge impact on nearly all aspects of the company. Jeremy Wertheimer, ITA’s CEO, is the best I’ve ever worked for. He knows how to run the business, about the industry, and how to hire great people. He’s extremely technical, quite able to participate in engineering discussions, and knows a lot about software engineering and how to run software projects effectively.

And I get to program in Common Lisp again! So I’m having a great time.