hisham hm


Slides and/or videos of presentations I’ve given:

What’s coming in LuaRocks 3

Lua Workshop 2016 - San Francisco, California, USA - July 9, 2016

video (YouTube)slides

This talk will discuss LuaRocks 3, the upcoming major release of the Lua package manager. LuaRocks 3 will feature the first update of the rockspec file format since LuaRocks 1.0, released in 2008. I will present what is being planned for LuaRocks and its rockspec format, and take the opportunity to discuss with the community the directions we want to take the project from there on.

LuaRocks - the package manager for Lua

LuaConf 2016 - Rio de Janeiro, Brazil - July 9, 2016

video (YouTube)slides

This talk presents LuaRocks, the package manager for Lua. LuaRocks showcases the potential of Lua as an extensible language, making a wide variety of modules available. The large availability of modules makes application programming in Lua a reality. Further, LuaRocks is also an enabler for cooperation between the ecosystems of various Lua-based applications.

Going cross-platform - how htop was made portable

FOSDEM 2016 - Brussels, Belgium - January 31, 2016

video (YouTube)slideslink

The story of how htop, a popular interactive process manager, went from being a Linux-only application into a portable one. In this talk I will discuss the technical approaches taken in porting process, the design choices that went into it, and also a bit of the backstory on how and why this conversion came to be. htop is a popular text-mode process manager, originally written for Linux. Its original mission was to “aim to be a better top”.

For many years, it remained as a Linux-only application, because, while the UI was dependent only on the portable library ncurses, the entire logic for gathering process data was based on the /proc filesystem. In the spirit of free software, this didn’t stop enterprising users from porting it to different platforms, so htop ran, at different capacities, on FreeBSD (using a Linux procfs emulation layer) and Mac OS X, via an ad-hoc port that was never integrated back upstream.

It was not until 2015 that the htop codebase was made truly portable. In this talk, I will discuss how and why that happened, and talk about the challenges and design decisions involved. I will focus on the technical process, but I will also touch on the positive social impact to the project.

Programação orientada a objetos em C puro: o caso do htop

XVI Fórum Internacional Software Livre (FISL 16) - Porto Alegre, Brazil - July 9, 2015

video (ogv)video (YouTube)slides

Esta palestra apresenta as técnicas usadas no desenvolvimento de uma aplicação real em C, o monitor de processos htop. O htop é uma aplicação interativa para console, usando a biblioteca ncurses, mas foi feita usando um estilo de programação totalmente orientado a objetos. Veremos que programadores em C não precisam se render ao C++ para colher os benefícios da orientação a objetos nos seus programas. A abordagem que será apresentada é extremamente minimalista, e não depende de bibliotecas ou frameworks para programação OO. São discutidas as estruturas de dados usadas na construção do htop e algumas técnicas para simplificar a gerência de memória em uma linguagem sem coleta automática de lixo como C. É possível utilizar os conceitos típicos de orientação a objetos implementando-os diretamente. Programando em C, entendemos melhor o overhead de desempenho dos recursos da OO, e podemos “pagar o preço” somente quando necessário. Usando um estilo de programação disciplinado, é possível também “domar os ponteiros” de C e tornar os segmentation faults fenômenos infrequentes (sim! é possível!).

LuaRocks: fostering an ecosystem for Lua modules

FOSDEM 2015 - Brussels, Belgium - February 1, 2015

video (mp4)video (YouTube)slideslink

This talk presents LuaRocks, the package manager for modules for the Lua programming language. Its ease of embeddability, good performance and small footprint have been major factors in Lua’s success. However, its minimalistic, “no-batteries-included” design has also prevented it from getting much traction as a stand-alone application development language. LuaRocks was created to target this problem. It serves both as a package manager in the style of RubyGems or npm, and also as a build system for compiling C code into Lua modules. This talk discusses the particular challenges of developing a package manager for Lua. Some are technical challenges, related to portability; some are social challenges that reflect into technical issues, such as the lack of established practices.

What’s new in LuaRocks

Lua Workshop 2014 - Moscow, Russia - September 13, 2014


This talk will discuss the latest developments in the world of LuaRocks, the package manager for Lua modules. It will start by introducing the LuaRocks tool, for those who are not familiar with it. Then, I will present what has changed in this past year: the move to a open repository, automation of the upload process and the latest efforts in making the tool more flexible. A revision of the format for specification files (rockspecs) has been long overdue, and in this talk we’ll discuss the changes needed to make the format fully extensible.

Criar software livre não é um bicho de sete cabeças: ‘the making of’ GoboLinux, htop, LuaRocks

XV Fórum Internacional Software Livre (FISL 15) - Porto Alegre, Brazil - May 10, 2014


Essa palestra conta o “making of” de uma série de projetos de software livre nos últimos 15 anos: GoboLinux, distro alternativa criada ainda nos tempos de graduação; htop, o visualizador de processos interativo para Linux; e LuaRocks, o gerenciador de pacotes para a linguagem Lua. A ideia é incentivar as pessoas a seguirem suas ideias, mostrar diferentes modelos de desenvolvimento e como o software livre pode abrir portas — uma história que começou como estudante assistindo ao primeiro FISL.

LuaRocks - past, present and future

Lua Workshop 2013 - Toulouse, France - November 23, 2013

videoslidesarticle: “An informal history of LuaRocks”

This is a talk on LuaRocks, the package manager for Lua modules. LuaRocks was first released in 2007 and currently features over 300 projects in its repository [as of 2013]. The focus of the talk will be on the history of LuaRocks so far, its current status and latest developments, including possibilities for changes, especially revisions in the rockspec format. The idea is to hopefully open a discussion with the community with regard to future directions. (An accompanying article on the history of LuaRocks is available.)

Lua: an embeddable, high-performance scripting language and its applications

RIT++ 2013 - Moscow, Russia - April 22-23, 2013


This talk will present the Lua programming language, with a focus on its applications. Lua is a portable, small, embeddable, but fully-featured programming language, with a core interpreter at about 180 kB. We’ll start with a quick look at the language features that set it apart in the world of so-called scripting languages, and we’ll its ecosystem, including the LuaRocks package manager. Then I’ll present a case study of Lua as used in a machine-to-machine (M2M) gateway application, where the language was used to script both low-level protocols, integrated with a server written in C, and to coordinate the business logic, integrating with a Java backend. Finally, we will take a look at some high-profile applications of Lua, both embedded in applications and as the main implementation language. Besides being widely used in the gaming industry, from Angry Birds to World of Warcraft, Lua has recently been integrated as the scripting language for Wikipedia, demonstrating its safety even when running unverified user code.

LuaRocks: o gerenciador de pacotes para módulos Lua

Hack’n Rio 2011 - Rio de Janeiro, Brazil - December 2011


Uma introdução ao LuaRocks.

LuaRocks 2.0

Lua Workshop 2009 - Rio de Janeiro, Brazil - October 6, 2009

(media not available)

O LuaRocks provê um ferramental para baixar e instalar módulos de extensão para a linguagem Lua. Esta palestra irá apresentar a ferramenta e discutir as novidades do LuaRocks 2.0, que redefine o sistema de armazenamento de módulos tornando-o compatível com o carregador de módulos padrão de Lua.

LuaRocks: o sistema de pacotes de extensão para a linguagem Lua

IX Fórum Internacional Software Livre (FISL 9.0) - Porto Alegre, Brazil - April 19, 2008


Uma introdução ao LuaRocks.

GoboLinux: uma nova proposta para a árvore de diretórios Unix

Latinoware 2007 - Foz do Iguaçu, Brazil - November 13-14, 2007


Uma apresentação sobre o GoboLinux.

A Lua decompiler

Lua Workshop 2005 - San Jose, California, USA - July 28, 2005


A presentation on LuaDec, a decompiler for Lua 5.0 bytecode.


IV Fórum Internacional Software Livre (FISL 4) - Porto Alegre, Brazil - June 5-7, 2003


A apresentação do GoboLinux no FISL.