Jach's personal blog

(Largely containing a mind-dump to myselves: past, present, and future)
Current favorite quote: "Supposedly smart people are weirdly ignorant of Bayes' Rule." William B Vogt, 2010

ELS, Italy Trip

Last week I went to Italy for the European Lisp Symposium! ELS was in Genoa (Genova?), Italy on Monday and Tuesday. Wednesday I traveled down to Rome and did some sightseeing Thursday and Friday, coming back home on Saturday. This blog post is just to share some highlights of the conference and to share some of the better pictures. (I don't think I got any great pictures.)

My employer was gracious enough to pay for the conference, too, of which the flight was the most expensive component. (It ended up being about $1400 due to booking kind of last-minute, with a few months advance booking it could have been closer to $900.) Europe is pretty cheap once you're over there!

I left Seattle's airport on Saturday the 30th. 5 hours later arrived at the JFK airport. My Japan trip has spoiled me, as I compare every airport now to the Haneda one. JFK is terrible! 10 hours later, arrived at the FCO airport near Rome. I was amused they make you walk through a shop to get to the customs area.. but then whoever was working the desk that day seemed to care very little. "Where are you going? Ok, next." The 'gate' for the next hour flight up to Genova was just a holding area before a shuttle we crammed full with everyone carried us out on the tarmac to get on our plane directly via the stairs.

By the time I landed it was around 11am on Sunday. I had previously plotted out a few ways to get to my hotel from the airport, in the end I just took a taxi. The driver spoke some English and was kind enough to point out some interesting aspect of the city as we drove to the city center area.

My room wasn't ready yet, but that's fine. I dropped off my bag (a coworker recommended this bag and it was a good pick) and headed down the street to find the hotel where the conference would be, then wandered around the city center. There's a central plaza nearby with a water fountain that was pretty neat:

Lots of hustlers and other tourists too. I noticed a Chinese restaurant and decided to see how that was, especially since I could use a little spice to help clear out my nose after breathing all that airplane air... It wasn't that great, but I ate it all. Helps me appreciate how spoiled I am on the west coast where even our low-tier Chinese food is pretty amazing in comparison.

On the WhatsApp group for the conference a few Lispers were organizing a later lunch, I was able to join them. Nice group. :) Before that I was able to wander a bit more, found a cool bookstore that despite having most books in Italian still beats the local Barnes and Noble by a large margin. Except perhaps their music store section on the top floor, where they were trying to sell a Squier Affinity Telecaster guitar I own for twice the price you can get it on Amazon here.

Italians seem to do things at their own pace. We wandered around for at least half an hour trying to find a place that was open, before eventually heading back to the central plaza area and finding a 24/7 cafe. I had some pretty good rigatoni (the tube pasta), others got a full course lunch. In another case of Italians doing their own thing, they refused to split the bill, and one guy had to pay with a card, but he was willing to pay for it all and accept our cash... One surprise was that one member's extra glass of wine was 7 euros!

After our slow lunch with interesting conversations we split up to go 'rest' or whatever, maybe meetup again for dinner. I went back to my hotel, my room was ready, but not long after laying down I was out until like 5am.

The hotel was closer to a hostel, maybe like a 1-star motel, but it was inexpensive. About $30/night for 3 nights, great deal for my company, who routinely pays for hotels ten times that much when I have to travel to San Francisco for work...

Each room was apparently "themed", e.g. there was an Amazonian room, a few others I forget, and I had the "cartoon" room:

Note there's no bathroom. I did have a private bathroom and shower, it was just outside the room down the hall a few meters.

Anyway Monday I went over to the other hotel for the conference. Someone took this photo:

Reminds me of something...


The conference started with an interesting talk about emacs lisp. I'm a vim user, but it's been my observation that over the last decade or so emacs and vim users have mostly put aside their old flames and united against all the other inferior editors that don't provide simple and programmable deep customization.

I don't want to summarize every talk since they all were interesting, even the lighting talks, and even if few of them are going to be practical for my day-to-day work in JavaLand. But I'll at least cover the talks and my few-word impressions of them. After a coffee break (I'm not a big coffee fan but I didn't have a bad coffee in Italy) we got to see a neat s-exp rewriting tool for emacs, it'd be good to have something like that in vim too and to build a sort of linter or style improvement suggester on top.

The next talk was about a better implementation of Lisp's subtypep, using an old reference's general strategy and updating it with actual available code and benchmarks. It was a cool trick, though a few of us at the lunch break were confused about one of the theorems since it seemed to make an argument that logical negation could be linear and distributed, in violation of demorgan's theorem that requires flipping the and/or. I don't know if they resolved their confusion yet, but indirectly learning more about Henry Baker (and finding his archives of papers) is pretty valuable. One reason I like Common Lisp so much is that there are so many brilliant minds involved with the ecosystem throughout the decades.

After that we had a nice talk from the de facto IRC Lisp ambassador (very friendly person, much better intro to the Lisp community than the rougher Naggum days) fixing an interesting problem with a generic function in the metaobject protocol. The fix is rather simple and elegant for the problem, as it just involves the compiler saving a bit of extra information at compile time.

They scheduled 2 hours for lunch, which seems excessive to me, but that leaves room for more networking so it's a not at all a bad tradeoff. I brought a book across the ocean with me to give to a guy for some Canadian money, and we got to chat for a bit.

The next talk after lunch was very cool to me for its potential applications in pattern matching situations (including URL routers for a web framework)... it implements a new destructuring-case macro that relies on type declarations for matching, but the macro can also tell you whether your cases appear to be exhaustive. But instead of throwing an opaque error on failure it leaves open the option about what to do, by default doing nothing.

The next talk was a functional programming one and was kind of an intro to the Petalisp project that aims at creating a fast and easily parallelizable lisp implementation. This unfortunately went a bit beyond me, and my impression was that it'd be cool to continue research in this area (especially the Connection Machine sources) I'm not sure the foundations are correct. To me with my CE background, if performance is a goal it needs to be considered at every step (the "premature optimization" maxim doesn't apply), measured, and most importantly any software needs intimate knowledge of its (potentially custom!) hardware. Even minor revisions in Intel processors matter, and many old rules of thumb are simply out of date. (e.g. taken from this comment, with 'modern' (as in 5 years old now) Intel CPUs "unaligned memory accesses have approximately the same cost as aligned memory accesses".) My current bet is a skeptical one for the future of this particular project, but perhaps I'll be wrong...

After another break, we had a talk on a formal methods tool for proving things. The interesting takeaway for me is that there's now a semi-standard format for specifying input (TPTP) so that if you have that, you can run it through multiple prover tools and potentially catch bugs in the provers. I still think I'll invest further in TLA+ model checking for the time being however.

Next we had a fun talk on plagiarism detection. I wasn't able to ask how it compares with the MOSS tool that says it supports Lisp, but it was curious to hear how the results of such rampant plagiarism before the tool was made were so shocking that the author didn't bother to write up the research for a long time. I agree with him on his caveats about the tool not being perfect that if a student can thwart the tool, they probably deserve to pass. We're also left with the question of whether or not schools not teaching courses in Common Lisp anymore is a good thing or bad thing. Right now I kind of think it's a good thing, since in all cases of course materials I've seen in the archives they mostly use CL as a beefed up Scheme, but don't actually get to see the features that make CL truly awesome compared to a simple Scheme (type declarations that can support compilation to efficient assembly or compile-time warnings, CLOS + MOP, condition system and restarts...).

After some lightning talks, we had a dinner with the co-located Programming conference folks at the University. That school's campus looked really cool, and the room we had our dinner in was sweet too:

Dinner had some particularly excellent green lasagna. Was it a dream...?

The next day (Tuesday) we started off with two talks on bootstrapping. The SBCL project has a long history and some interesting war stories along with some kludges that only matter now if you were to try and go back and build each successive version with the previous version. We also got some insight into the SBCL user survey. I didn't feel qualified to respond to it myself, but maybe next year.

Next we had a talk on how it's done in SICL. It's very much the Right Way, and starts by bootstrapping the CLOS system which allows an elegant object oriented way of bootstrapping the rest of CL. Great talk, SICL is a great project.

After a break we had a talk from one of the illustrious lisp game programmers and his work on creating shader pipeline compositions in Lisp. It seems like it'd be a useful feature for an engine to include, though on the other hand despite GPU memory being a scarce resource the last few years of GPU improvements have resulted in quite a lot of available memory for even inexpensive GPUs.

Maybe my favorite talk was next, showcasing a "true engineering" use case of making a hierarchical task planning system in CL. I submitted it to HN but alas no one voted for it. I tried again a day later, still nothing. Then a day after that I got an interesting message from the HN moderation team that a moderator had seen it and liked it so much they flagged it into a special "second chance" bucket that would make sure it got some front page exposure. That got a few more votes, but it didn't take. I think it must have gone into a "third chance" bucket because after another day it suddenly got a lot more votes, and then was able to stick to the front page for a while. ROTFLMAO at that upvote-to-comment ratio though. It's real engineering!

Another lunch, I chatted with some guys from Finland who had to leave early, they were nice to talk with. Also real engineering, they work on chemical simulation software.

Next we had a talk about Racket, especially its new ongoing project of replacing its guts with a different Scheme's guts. Very cool talk, and Racket continues to impress. I didn't know the University of Utah was apparently Racket HQ until that day. Makes me wonder what I might have missed by not going there.

The penultimate talk was an interesting idea with some flaws in implementation about supporting a sort of hierarchical namespacing scheme. It's interesting to think about, though I don't know if we need it. All I really need from a namespacing scheme is flexibility in symbol names so that I don't get collisions. I think the author's problems could be resolved by using a new syntax (like dots and/or slashes) instead of trying to piggyback on the existing keyword infrastructure that has a few landmines in terms of what gets interned, not interned, needs to be a string, implicitly scoped to a package, etc.

The final talk was half a plug for the useful to learn about quickref project and half about how to make generating such a nice source of documentation more performant. Some further ideas not discussed that might help even more in the future would be to infer an appropriate qlot definition (if one is not specified) which solves the versioning problem of dependencies quite nicely.

More lightning talks that were cool, and that was it! Very fun conference, I want to go again next year (in Germany next time). I'm not sure how much I'll be able to justify as "work related" should my manager ask, apart from some ideas I've already had floating around in my head. (The usefulness of a meta protocol, and trying to integrate ABCL with our test infrastructure so that failures in long-running tests trigger the conditions and restarts system with a REPL and don't force you to waste another X Minutes of your life rerunning the test to get to the point where the problem is and hope you don't overstep the assertion failure...) There were quite a few first-timers there, and not all a bunch of old people. Overall I think the CL community, to the small extent that there is "one" rather than several, is doing pretty well right now. Quite a number of (European :() companies are hiring too...

Wednesday I took a leisurely train from Genova to Rome to spend the rest of my time. It started to rain a bit so I had to buy an umbrella -- but then I forgot it on the train. Oh well... At the Rome terminal station I bought a Roma Pass, which lets you ride the subway/buses for free and depending on the version you get your first and maybe second monument/museum visits from a long list for free too.

My hotel in Rome was nicer (and more expensive, this time out of my own pocket, but still not a bad price at all, $67/night for 3 nights).

Google Maps recommended me a t-bone steak restaurant. Google knows me.

By the way you can see all my trip's pictures in gallery style at here, I'm not going to put them all in this post...

After the steak I went to sleep. My goals for Rome were simple: I would be satisfied to just see the Colosseum and the Pantheon.

So of course Thursday morning I decided I'd spend Thursday trying to see the Sistine Chapel. =P

Right outside my hotel (guesthouse) was what I think was a Courthouse.

And the Tiber River.

At the river I turned to walk in the direction of the Vatican, and along the way I saw the Mausoleum of Hadrian/Castel Sant'Angelo and decided to check that out first.

This was a cool tour. It's rather large and has several exhibits inside showing swords, guns, armor, Christian Stuff... it was a fortress after all at one point. You eventually get to the top, and the views are pretty cool.

Old depiction of Romulus and Remus in one of the rooms...

Anyway I eventually got through and continued towards the Vatican. It started to rain, and I had to buy another umbrella.. fortunately lots of street hustlers were ready. Alas this one wasn't very high quality, so I intentionally left it behind. Still, it did its job, and it didn't rain Friday or Saturday.

I did wait it out a bit with some pizza for lunch. Also...

A mint drink‽ It's just a tea.. but the mint flavor is strong. Good enough.

On one side of the Vatican is the St Peter's Basilica, which had quite the line up. I continued to the other side, which is the museums entrance and eventually goes to the Sistine Chapel. It also had quite a line, but maybe only an hour at most to get through?

On the left is the Basilica entrance, on the right is the museum entrance.

There were quite a few museums and exhibits in there! Was a long walk and lots of interesting stuff to see before you get to the chapel. They also don't allow pictures in the chapel, so I have to keep my appreciation of Michelangelo to myself.

The first exhibit was an Egyptian one. Amazing to see things like

up close and wonder how they've been translated.

I have a habit of reminding people that anthro furries are as old as ancient Egypt.

They had some stuff from the Assyrians too. (Always recognizable beards.)

Good profile pics:

There are many hallways that are just overwhelming. Almost pointless to take pictures, no way to capture it all.

A lot of this triggered memories of my art history classes (and maybe Latin classes as well). I know this one!

And this one!

Especially these two!

Ancient whack-a-mole game?

Archangel Michael is OP in the canon, here he is beating Satan. In certain JRPGs though he lost...

By the time I was done I was quite tired, a lot of walking was involved! I got some groceries (snacks) and went back to the hotel, rested a bit before dinner, then went to sleep after that.

Friday I started with going to the Colosseum. Things are a bit different now in 2019, you have to "register a time slot". So this involved standing in a line at the Roman Forums ticket booth, it took maybe 30 minutes? In theory there's a way to get in at the Colosseum itself, but that was its own monster line. Anyway, I got there eventually...

After the Colosseum I started booking it over to the Pantheon. No line, no payment, nice. Along the way I passed what I think is the Capitol building.

Now the Pantheon.

The Christians have done some redecorating...

Anyway, that was that. Well, with my entry to the Colosseum, I also was granted an entry to the Roman Forum and Palatine Hill. I decided to spend the rest of the day checking that out. Little did I know just how much hiking/walking would be in store... but it was amazing too. Lots of ruins, but also lots of still standing structures.

Temple of Saturn:

On top of the hill:

A lot of stuff was on top of the hill... it's a very large hilltop, lots of nice views.

On one side it even overlooked the Circus Maximus, so bonus got to see that too.

Anyway after that I went back to the hotel, went out for dinner a bit later, and had some excellent pasta. The first dish was some ham and mozzarella, followed by an excellent tortellini soup with meat stuffed inside.

Then some delicious ravioli.

In the morning I got on a bus to the airport, and ~9 hours to JFK + 5 hours to Seattle later, I made it back home! I was very tired, right up until I came through the door. But I did sleep later, and had a weird dream, remarking on waking up that I didn't dream at all during my trip. I had a fun time.

Posted on 2019-04-10 by Jach

Tags: italy, lisp, personal, travel


Trackback URL:

Back to the top

Back to the first comment

Comment using the form below

(Only if you want to be notified of further responses, never displayed.)

Your Comment:

LaTeX allowed in comments, use $$\$\$...\$\$$$ to wrap inline and $$[math]...[/math]$$ to wrap blocks.