Lua Workshop 2008

registration program venue accommodation weather organization participants abstracts videos

A Lua workshop will be held at The George Washington University in Washington, D.C on July 14-15, 2008.

Like previous workshops in 2005 and 2006, the main goal of the workshop is to allow the Lua community (or at least part of it) to get together and meet in person and talk about the Lua language, its uses, and its implementation. Another goal is to help spread the word about Lua to industry and academia, taking advantage of the location of the workshop.

The workshop is open to everyone interested in Lua. There is no registration fee but participants are required to register.


Mon, 14 July
9:45Numlua: a Numerical Package for Lua
Luis Carvalho
10:30coffee break
10:55External Strings
Chip Salzenberg
11:25Intelligent Programmable LCD Modules/Lua Integration
Michal Sieluzycki
11:45Lua at Sim Ops Studios
Aaron Tarnow
1:15Business Applications with Lua
Jelle Ferwerda
2:15Sputnik: a Wiki in Lua
Yuri Takhteyev
3:00coffee break
3:30Eliminating Cycles in Weak Tables
Alexandra Barros
4:00Expressing Data Structure Transformations for an Automatically Tuned Sparse Linear Algebra Library (cancelled)
Richard Vuduc
4:30Almost Good Enough to Scale: A Lua Mail Handler and Spam Filter
Norman Ramsey and Fidelis Assis
5:30Bright—Yet Another Lua Derivative
Terry Moore
Tue, 15 July
9:30LuaAV: Computational Audovisual Composition with Lua
Wesley Smith and Graham Wakefield
10:30coffee break
11:00wxLua Internals
John Labenski
11:30Developing a Complex Native Windows Application in Lua
Matt Campbell
1:15High-Availability Databases
John Rodriguez
1:45Lua and .NET
Erik Hougaard
2:1510,000,000 Lua Users and Growing!
Jim Whitehead II
3:00coffee break
3:30LuaRocks and the Kepler "reboot"
Fabio Mascarenhas
4:00LPEG—a New Approach to Pattern Matching in Lua
Roberto Ierusalimschy
5:00round table


The workshop will be held on GW's Mount Vernon campus. In particular, Monday's session will be held in the Hand Chapel (Pictures: 1, 2, 3, 4; and campus map). Tuesday's session will be held in Post Hall (Picture: 1; and campus map). The A/V facilities include a PC connected to a large presentation screen, plugs if you want to project your laptop, a smart board (Hand Chapel only), a white board, CD/DVD, and a microphone/speakers. If you have any particular requests, please email the organizers. Please Note: if you have difficulty navigating stairs, email Matthew Burke.

Shuttle to Mount Vernon Campus

There is a free shuttle (10 minute ride) from GW's downtown campus. The shuttle leaves every 15 minutes from 23rd and H Streets (except from 6am-10am when it leaves from 21st and H Streets). See here for shuttle details.

Parking at the Mount Vernon Campus

All parking must occur within the campus boundaries in either the Parking Garage inside the Whitehaven Parkway entrance or the Parking Lot inside the W street entrance. The Parking Lot inside the W street entrance has meters (so probably not a good choice for parking) that are monitored between 7:00am-7:00pm. The Parking Garage inside the Whitehaven Parkway entrance is attended between 7:00am-10:00pm (10 USD for the entire day). See the campus map.

Parking on the streets in the area around the campus will result in tickets and/or towing!


Single and double-occupancy dormitory rooms are available on GW's Mount Vernon campus (the site of the workshop). The cost (including tax) for a double-occupancy room is $39.80 per person per night if you are staying one or two nights and $36.35 per person per night if you stay more than two nights. For single occupancy, the costs are $70.70/$64.98 per night.

Dormitory rooms are available on a first-come, first-served basis so we need to get reservations in soon. If you are interested in a room, please fill in the form below and email it to the organizers by Sunday, 17 February 2008.

Lua Workshop 2008——Dorm room request form

___ Single or ___ Double
Date of Arrival:
Date of Departure:

Please list your annoying habits (if any):

What habits can/can't you stand in a potential roommate (smoking, snoring, etc.):

You will receive updates concerning your reservation request as soon as possible. A deposit will be required, details to follow. Room requests received after the 17th will be accomodated if possible.

There are several hotels in downtown Washington that offer special rates for those attending functions at GWU. These hotels are all within a 10-15 minute walk of the Mount Vernon shuttle bus stops on the Foggy Bottom campus. If you choose to stay at one of these hotels, plan on spending 30-40 minutes to get from your hotel to the workshop (walk to the shuttle stop, wait for shuttle, 10-15 minute shuttle ride).

The following map shows the locations of the shuttle bus stops, the Foggy Bottom campus, the hotels with special rates, and the Mount Vernon campus (where the workshop will be held). The blue pinpoint is the the Georgetown University Conference Hotel. It doesn't have a GWU rate, and there's no easy way to get from there to the Mount Vernon campus other than by foot or taxi (it's about 1.5 miles), but it is the closest hotel to the workshop. Contact information for the hotels can be found here, or by clicking on the map.

View Larger Map

Each day we will provide breakfast, lunch and two coffee breaks at the workshop. Dinner will be on your own. Locations of a variety of restaurants will be added to the map as the date of the workshop approaches.

Weather in DC in July

Washington DC has hot, humid weather all summer long. In July, daytime highs are usually upper-80's/lower-90's (°F) [30.5—33 °C], but stretches of over 100°F [38°C] are not uncommon. Expect lows of mid-70's (°F) [24°C]. Haze and afternoon thunderstorms are common. Breezes are not.


Registrations are now closed

There is no registration fee but registration is required. The registration deadline is 7 July 2008, 20:00 UTC. To register, please fill the form below and send it to As confirmation, your name will appear in the list of participants.

Lua Workshop 2008——Registration form

* Data to appear on badge

* If you plan to give a talk


Organized by Matthew M. Burke, Daniel Silverstone and the Lua team. The organizers can be contacted at

Sponsored by
[GWU Computer Science] [MCCI] [Flying Meat] [Earth Computer Technologies] [cengage] [Wiley]


The people below have registered for the workshop. (If you have sent a registration and your name does not appear here in a couple of days, please let us know.)


Here are the abstracts and slides of the talks, in alphabetical order of the speakers.

Eliminating Cycles in Weak Tables
Alexandra Barros (PUC-Rio)

Weak references constitute an elegant mechanism for an application to interact with its garbage collector. In most of its typical uses, weak references are used through weak tables (e.g., Java's WeakHashMap). However, most implementations of weak tables have a severe limitation: Cyclic references between keys and values in weak tables prevent the elements inside the cycle from being collected, even if they are no longer reachable from outside. This ends up bringing difficulties to the use of weak tables in some kinds of applications.

In this work, we present a mechanism for overcoming this problem of cycles in weak tables. The proposed mechanism is an adaptation of the concept of ephemerons to tables. We modified the garbage collector of the Lua virtual machine in order to offer support to this mechanism. With this adapted garbage collector we could verify the efficiency and effectiveness of the implementation in solving the problem of cycles on weak tables in Lua.

Developing a Complex Native Windows Application in Lua slides
Matt Campbell (Serotek)

Lua is one of the best dynamic languages for developing desktop applications that must download and start up quickly, especially on Windows. However, there are some challenges associated with using Lua as the primary language for an application that integrates closely with Windows. These challenges will be discussed in the context of Serotek's System Access product, which provides access to Windows and the Web for blind and low-vision users. The talk will also include a comparison of Lua and Python from the perspective of an experienced Python user.

Numlua: a Numerical Package for Lua slides
Luis Carvalho (Brown University)

Numlua is a numerical package for Lua that includes support for complex numbers, multidimensional matrices, random number generation, and special functions. In the this talk we present Numlua, describe some of its implementation details as a minimal wrapper around well-known, stable, and efficient numerical packages, and finally discuss future work and directions for Numlua.

Business Applications with Lua slides
Jelle Ferwerda (LogicNets)

LogicNets is an application development environment that business experts can use to create their own cutting edge software applications. By building process-flow-like combinations of individual steps users define logical methods for accomplishing specific tasks. These process flows can be used as complete applications, or can be used as building blocks to combine in endless arrangements. Completed applications can be published as web or stand alone applications.

Most customers are using LogicNets as a hosted service to develop and maintain their own business applications resulting in thousands of end users interacting with these applications on a daily basis. During this presentation we will demonstrate how Lua is used at the heart of the LogicNets system providing us with both the flexibility and the performance required. We will show examples of how product engineers in Ingersoll Rand and safety experts in FOX Networks rather than software developers are using the LogicNets system to develop high end business applications. We will discuss how organizations, such as NASA have joined LogicNets as a partner to develop the system into new areas. For more information, please visit

Lua and .NET
Erik Hougaard

LPEG—a New Approach to Pattern Matching in Lua slides
Roberto Ierusalimschy (PUC-Rio, Lua team)

Currently, most pattern matching tools are an ad-hoc collection of features loosely inspired in regular expressions. LPEG is a new library for pattern matching for Lua, with a new approach. LPEG is grounded in Parsing Expression Grammars (PEGs), a formalism for parsing languages. LPEG unifies the easy of use of conventional pattern-matching tools with the full expressive power of PEGs, and avoids the myriad of ad-hoc constructions present in current tools. An implementation based on a new Parsing Machine ensures a performance on par with similar tools.

wxLua Internals
John Labenski

wxLua is a set of bindings to the cross-platform wxWidgets C++ GUI library for the Lua programming language. A custom binding generator is used to generate C structs and functions to store and implement the interface between the two languages. C++ classes are wrapped by Lua userdata whose metatables provide hooks for the C++ member function calls. Some pros, cons, and pitfalls of this method will be presented as well as other challenges faced in binding a large GUI library with its own event loop.

LuaRocks and the Kepler "reboot"
Fabio Mascarenhas (LabLua, PUC-Rio)

The Kepler framework is a collection of over ten interdependent Lua libraries that work together to let Kepler users quickly develop and deploy web applications using the Lua language. Distributing Kepler has always been a big problem for the Kepler team, despite Lua 5.1's module systems and efforts to create standard binaries for Windows. Kepler used to have a monolithic Makefile-based installer that bundled and installed all required libraries; this installer did the job, but was a hassle to maintain, and creating a Windows distribution was still a manual process. Last year the Kepler team introduced LuaRocks, which is a platform-agnostic build and installation system, as well as a way to manage versioning of packages both during installation and at runtime. LuaRocks has its own build system, but its modular architecture lets it use other build systems as well. LuaRocks let the Kepler team completely redo Kepler's installer, which is now more maintanable and cross-platform.

The changes we did to Kepler since the last Lua workshop do not stop at the installer; we also have a new underlying architecture for talking to web servers called WSAPI, which is independent of Kepler itself (the Sputnik wiki uses it too), as well as a new application framework for "MVC" web development called Orbit. Subsidiary Kepler modules also have seen big improvements, and all of them have in common the fact that they can be easily installed with LuaRocks independently of Kepler. In this talk we'll give an overview of the recently released version 1.1 of Kepler , as well the latest pre-1.0 version of LuaRocks.

Bright—Yet Another Lua Derivative slides
Terry Moore (MCCI)

Bright is a production cross-platform scripting language derived from Lua 4.0. Bright's syntax is C-like, easing use by MCCI developers who work daily in C. MCCI added an "undefined" value, extended tables to support explicit NULL entries, changed the index origin to zero, and changed the .exe wrappers to work better with shell-based scripting. The resulting language combines the conceptual elegance of Lua with a language more compatible with C infrastructure. We use Bright for portable cross-platform command-line scripting on Unix (NetBSD, Mac OS X, Linux) and Windows, and embed it in various tools (e.g., make, system test tools).

Almost Good Enough to Scale: A Lua Mail Handler and Spam Filter slides
Norman Ramsey* (Tufts University) and Fidelis Assis (Embratel)

It's difficult to scale a part-time Lua project beyond 10,000 lines, because a Lua *package* is not a *module*: to understand it, one has to consult the source code of other packages. At bottom, the problem is that Lua has no standard way to express, let alone check, an API. This talk describes work in progress designing and building a spam filtering and mail handling system in Lua. Although members of the audience will learn enough to know if they want to try the software, we emphasize lessons learned from our mistakes and successes: avoid streams and objects; use the profiler; and most importantly, do something about that pesky API problem!

High-Availability Databases slides
John Rodriguez (VeriSign)

VeriSign is developing a high performance, always available database. This requires that the architecture must be aggressively simplified. Even the SQL language which is traditionally used for database queries was rejected as too complex and Lua was chosen instead. This talk will cover why Lua was selected as a better fit for an application that never shuts down.

External Strings
Chip Salzenberg (Cloudmark)

When Lua is integrated into an application that processes a data stream, interning the ephemeral data stream as Lua strings imposes expenses and brings little value. Chip will describe a userdata-based implementation of external strings and how they worked out in practice.

Intelligent Programmable LCD Modules/Lua Integration
Michal Sieluzycki (Earth Computer Technology)

EarthLCD is developing a line of intelligent touchscreen LCD modules with embedded Lua interpreters. In addition to the color touchscreen LCD display, these modules have an SD card socket and a multitude of interfaces (RS232, Hi-Speed USB, I2C, SPI, Ethernet and discrete I/O). The LCD display, SD card and interfaces are supported by an embedded Lua custom library, and are compatible with the standard Lua libraries as well. By utilizing Lua, an LCD can be rapidly integrated into an embedded system, or medical device, reducing product development cost and time to market.

LuaAV: Computational Audovisual Composition with Lua slides LuaAV site
Wesley Smith* and Graham Wakefield (Media Arts and Technology, UC Santa Barbara)

Computational audiovisual composition is the practice of composing through a tight integration of time, space, sound and computation where the composition is represented in an evaluable form (in this case a script). In the development of this practice, we have developed a real-time interactive audiovisual composition environment called LuaAV. Our presentation will show the conceptual development of LuaAV and how it evolved vis-a-vis the Lua language with an overview of the environment's structure and a walkthrough of the basic workflow with live demonstrations and video documentation.

Sputnik: a Wiki in Lua slides
Yuri Takhteyev (UC Berkeley Shcool of Information / Kepler)

Sputnik is a wiki/CMS/framework written in Lua using Kepler 1.1 and LuaRocks for package management. Sputnik is built on top of "Saci" - a document-oriented hierarchical storage system with swappable modules for actual Storage and using Lua as its data storage format. I will show a demo of Sputnik, talk about the way Sputnik and Saci take advantage of Lua and available Lua modules, then show how Sputnik can be extended into non-wiki applications, using a ticket-tracker as an example.

Lua at Sim Ops Studios
Aaron Tarnow (Sim Ops Studios)

This talk will cover a brief description of the platform being developed by Sim Ops Studios, what it is we were looking for in a scripting language, why we ended up choosing Lua, and what we're doing with it today.

Expressing Data Structure Transformations for an Automatically Tuned Sparse Linear Algebra Library slides
Richard Vuduc (Georgia Tech)

OSKI is a library that implements sparse linear algebra operations whose performance is automatically tuned at run-time for a user's input (matrix) and machine. I describe the motivation for OSKI and outline its architecture, and furthermore explain the important role that Lua plays in allowing the user to see and control the tuning process.

10,000,000 Lua Users and Growing! slides
Jim Whitehead II (University of Oxford)

Since World of Warcraft was released on November 23, 2004, it has quickly grown to be one of the most popular video games ever created. Currently boasting more than ten million subscribers, it's hard to find someone who hasn't heard of the game. World of Warcraft leverages the power of Lua and XML to provide a rich and extensible user interface by allowing anyone to create custom interface addons which can both provide more information to the user and extend interaction with the game. This talk is an introduction to the way Lua is used to create a secure interface to a commercial application. In addition, we present a large body of Lua code that has been written for custom addons but can easily be leveraged by the Lua community at-large.

* Presenting author

Last update: Tue Mar 11 13:35:48 BRT 2014