Adobe
A software company headquartered in San Jose, California, most famous for Adobe Photoshop.
Adobe Lightroom (Adobe Photoshop Lightroom)
Image management software by Adobe, written mostly in Lua. See Adobe.
Algol (also ALGOL)
An early programming language (developed in the mid 1950s), which greatly influenced the later programming languages.
Alta (pseudonym)
A software consulting company based in downtown Rio de Janeiro, described in chapter 3.1.
Amiga
A personal computer popular in the 1980s.
analyst
see systems analyst.
ANSI C
The standard version of the C programming language. (ANSI is the American National Standards Institute).
API (application programming inferface)
A set of functions that a software module offers to other software interacting with it.
applet (or “Java applet”)
A Java program embedded in a web page. (This method of developing dynamic websites was popular in the 1990s. Today JavaScript is typically used instead.)
application
Software used directly by the user, rather than by other software. (See also library.)
architect
See software architect.
assembler (assembly language)
A low level programming language. Programming in an assembly language was common before the use of C became widespread.
Atari
A brand of video game and personal computers popular in the late 1970s and the early 1980s.
BASIC
A simple high-level programming language designed for beginners, popular in the 1980s, and especially among hobbyists and children.
BBS (Bulletin Board System)
A computer running software that allows users to connect to it (usually through a phone line) for the purpose of downloading or uploading files and reading news. (See Carvalho 2006 for a discussion of BBS use in Brazil in the 1980s.)
benevolent dictator
A charismatic leader of an open source project, who often wields substantial authority but must rely on the support of the community. The term was originally applied to Guido von Rossum (the inventor of Python) by the Python community.
bit twiddler
A programmer seeking to change the behavior of software by changing individual bits in its binary representation. The term may be used as derogatory, since bit twiddling can take a lot of time while bringing relatively minor benefits. The Portuguese equivalent is “escovador de bit.”
BITNET
A computer network popular in the 1980s and the early 1990s, until the rise of the Internet.
bug
An defect in the program’s source code. Finding and removing such defects is called “debugging.”
C
A programming language developed in the 1970s and by some measures the most popular language to this day. C and the closely related C++ have become the standard solution for low level programming, replacing the use of the assembler. High-level programming languages such as Java, Lua and Python are themselves implemented in C.
C++
A programming language closely based on C, developed in the 1980s.
cachaça
Sugarcane rum produced in Brazil.
caipirinha
A mixed drink based on cachaça.
CAPES
A Brazilian government agency that funds post-graduate education.
capoeira
An Afro-Brazilian physical art that combines elements of a martial art and a dance.
carioca
an adjective meaning “of Rio de Janeiro.”
CGILua
A system for creating dynamic web applications in Lua, described in chapter 3.4. CGILua served as a basis for Kepler.
client
An application that makes a request to another application, typically over the network. For instance, a web browser is a “client” to the application run by the maintainers of the website that it accesses. See also server.
CNPq (Conselho Nacional de Desenvolvimento Científico e Tecnológico)
A Brazilian government agency that funds academic research.
COBOL
An early programming language popular for business applications in the 1980s and still used today, to a lesser extent.
coder
A software developer. This is an insider term in the United States, which has no equivalent in Brazil.
comment
Text included in source code solely for the purpose of making the code understandable to the software developers who will work with it later. Comments are ignored by the compiler and do not affect the behavior of the software.
compiler
Software that translates a human-readable source code into a format that can be executed by the computer.
Copacabana
A mixed-use neighborhood in Rio de Janeiro, about ten kilometers from Downtown.
Cray
A super computer brand.
cruft
Code of poor quality, often connoting unnecessary complexity where a simpler solution could be possible. It may more specifically suggest the complexity that is introduced through the long period incremental changes and could be potentially removed if the code were re-written from scratch.
database
A computer system dedicated to storing data.
DBA (database administrator)
A computer professional whose work involves managing complex databases.
DEC
A 1980s manufacturer of minicomputers, based in Boston, MA.
DEL
A predecessor of Lua. See chapter 3.2.
DOS
An operating system for personal computers used in 1980s and the early 1990s.
Downtown (Centro)
The main commercial area of Rio de Janeiro, where many of Rio’s software consulting companies are located, including Alta.
Dr. Dobb’s Journal
A US periodical aimed at software developers with circulation of 120,000.
Eclipse
An open source application for editing computer code, especially popular among developers working with Java.
EIT (pseudonym)
A software company based in California, with which Alta had a “partnership.”
eiWeb (pseudonym)
A proprietary Java web development platform developed by EIT.
embedding
Putting software inside an application.
ENIAC
One of the very first computers, built for the US Army in the 1940s.
Estácio de Sá, Universidade
A private university based in Rio de Janeiro, with many campuses throughout the state.
favela
A shanty town. Rio’s favelas house a substantial portion of the city’s population.
FINEP (Financiadora de Estudos e Projetos)
A Brazilian organization under the Ministry of Science and Technology that funds scientific and technological research. In particular, FINEP supports projects that involve collaboration between industry and universities.
forum
A web site that allows visitors to engage in a discussion by posting questions and answers.
framework
A collection of software code that implements standard functionality for a particular domain. A framework typically provides a more complete solution than a platform, but the difference between the two terms is not essential for this dissertation.
free software
Same as open source. See open source vs. free software for an explanation of the terminological differences.
FTP (File Transfer Protocol)
A method for making files available over the Internet, now declining in popularity.
function
A sequence of instructions that tells a computer how to perform a specific task. A function is a basic unit of software source code in most modern programming languages.
Ginga
A layer in the Brazilian digital television system, using Lua as its component. See chapter 3.3.
graphics
A subfield of computing dedicated to making computers display images on the screen.
Grim Fandango
A game released by LucasArts in 1998s. Grim Fandango used Lua and helped make Lua popular among computer games developers.
gringo
A non-Brazilian or a person from outside Latin America.
hacker
Expert programmer.
Someone who gains access to computers to obtain data or use them for other purposes.
hardware
The physical computer and those aspects of its behavior that cannot be changed through software. The hardware defines the basic behavior of computers, in particular by encoding certain instructions in patterns of semiconductor etched on the surface of computer chips. (Semiconductors — such as silicon — have an important electric property: their ability to conduct electricity depends on whether an electric field is applied to them. This makes it possible to use combination of semiconductors to build basic logical operations such as “or” and “and.” Those can then be further combined to enable more complex processing of data.) Software developers typically see hardware as material and given, though the actual process of hardware design has many similarities to software development.
Herculoids
A private mailing list maintained by Rodrigo Miranda.
high-level
Software code relying on existing libraries and isolated from the details of the hardware or operating system.
hypertext
Text with cross-references.
IBGE (Instituto Brasileiro de Geografia e Estatística)
A Brazilian agency responsible for collection of statistics, including the census.
IMPA (Instituto Nacional de Matemática Pura e Aplicada)
A research and higher education institution in Rio de Janeiro focused on mathematics.
informática (informatics)
Speakers of Brazilian Portuguese use the term “informática,” borrowed from French (“informatique”) to refer broadly to disciplines related to information technology. There is no single English term with the same meaning. It can sometimes be appropriately translated with the English abbreviation “IT” (“a career in IT” for “careira em informática”), though it can in other cases be used to refer to what in English would be called “computer science” (“estudou informática” can be used to mean “studied computer science,” to avoid the more formal term “ciência de computação”). Authors writing on the history of Brazilian IT policy typically translate “informática” as “informatics,” and I do the same when talking about the policy of 1970s and 1980s. It should be noted, however, that the English term “informatics” is often used today in other senses.
InterJX (pseudonym)
Alta’s first product, never completed.
Intermercado
Alta’s main client, a major Brazilian retailer.
Internet
A computer network that has become popular world-wide in the 1990s. Note that while the Internet has since become synonymous with networking technology, in the 1980s and the early 1990s it was one of the large computer networks among several, BITNET being another example.
interrupt
A signal sent within the computer.
intranet
The network of computers inside an organization and not accessible from outside or the websites only accessible from inside the organization.
IP address
A numeric address that identifies a computer on the Internet and allows other computers to communicate with it.
IT
information technology
ITA (Instituto Tecnológico de Aeronáutica)
An education institution established in Brazil in 1950 to train aeronautics engineers. See chapter 2.2.
J2EE (Java 2 Enterprise Edition)
A collection of Java APIs for doing web development in Java.
Java
A programming languages developed by SUN Microsystems in the mid 1990s and one of the most popular programming languages today. SUN Microsystems is headquartered in Santa Clara, CA.
JavaScript
A programming language embedded in most modern browsers and used to add client-side functionality to web applications. Modern web applications typically divide the work between the server and the client. In a typical setup, the web browser sends a request to the web server, which pulls data from the database, then sends the processed data and some additional instructions to the web browser, which then processes the data further before displaying it to the user. While a range of languages are used for processing the data on the server side, Java and PHP being the most popular at the moment, client-side processing is typically done in JavaScript, which is the only programming language most web browsers can understand.
JavaWebStart
A method for launching Java applications by clicking on a link on a web site.
Kepler
An open source software project aiming to develop a web development platform based on Lua. See chapter 3.4.
keyword
A word that has a specific meaning in a given programming language.
Kubix (pseudonym)
A company where Alta’s founders worked before starting Alta.
legacy
Old code with which new code must stay compatible.
library
Software that is used by other software (which delegates to it some of the tasks) rather than directly by the user.
license
The legal terms under which software is distributed.
Linux
An open source operating system.
Lisp
A programming language developed in the 1960s, often prized for conceptual elegance.
localization
Adapting software for a particular human language, country or region.
low-level
Software that interacts directly with the computer’s hardware or operating system rather than relying on multiple layers of libraries. (Cf. high level.) Note that “low-level” software development does not imply low level of skill, but in fact is often understood to be more challenging.
Lua
A scripting language developed in PUC-Rio and used in a number of popular software products, including Adobe Lightroom and World of Warcraft. Lua’s history is described in chapters 1.2, 3.2 and 3.3.
Lua 3.2
The last version of Lua before Lua 4.0. Because of the changes introduced by Lua 4.0, some users of Lua continued using 3.2 until today. (Nas Nuvens’ software uses Lua 3.2.)
Lua 4.0
A version of Lua released in 2001, which introduced a substantial change from the previous versions. Many earlier users of Lua never transitioned to Lua 4.0 and continued using Lua 3.2.
Lua 5.1
The latest version of Lua in 2007 and 2008.
Lua book
See Programming in Lua.
Lua-L (Lua mailing list)
The official mailing list for the Lua community.
LuaForge
A website for sharing open source libraries and applications written in Lua. (See chapter 3.4.)
mainframe
Large computers (sometimes occupying multiple rooms) used from the 1960s until mid 1990s. The term is also sometimes used today to refer to the somewhat smaller modern computers (starting at around one hundred kilograms) compatible with the older mainframes.
many eyes
A shorthand for Eric Raymond’s pronouncement that “given enough eyeballs, all bugs are shallow” (Raymond 1999) — that is, the idea that exposing the source code to other developers helps discover and fix its defects.
microcomputer
A generation of small computers (typically small enough to be put on a under a desk) introduced in the 1970s, which has grown in popularity through the 1980s. The term is almost never used in the US today except in historical context, since nearly all modern computers are microcomputers. In Brazil, the term “micro” is occasionally used as a synonym for “personal computer,” especially by older computer professionals.
minicomputers
A generation of “compact” computers smaller than mainframes introduced in the 1960s and popular in the 1970s and the 1980s. A typical minicomputer was the size of a refrigerator. Brazil’s Market Reserve policy focused on domestic production of minicomputers.
module
Same as a library.
Nas Nuvens (pseudonym)
A software company in Rio de Janeiro offering web development services using Lua.
newsgroup
A system for exchanging messages over the Internet, that allows an individual to start a discussion topic to which other users can contribute. Newsgroups were popular in the 1980s and the 1990s. Today mailing lists and forums are often used for the same purposes.
off-shore
See outsourcing, second sense.
open source software
Software distributed together with its source code and a permission to modify and redistribute it. For an introduction to open source see Schwarz & Takhteyev (2009). See also open source vs. free software.
open source vs. free software
The terms “open source software” and “free software” do not differ in denotation. Both terms refer to software that is distributed together with its source code and a permission to modify and redistribute it. However, there is a substantial difference in connotation between the terms, and the choice of one term over the other may sometimes be suggestive of the speaker’s position in regards to when and why source code should be shared. The term “free software,” introduced in the mid 1980s, is typically preferred today by those who see sharing of source code as a ethical (or even political) movement, which they may perceive as antagonistic to the interests of for-profit corporations. The term “open source” was introduced in the late 1990s as an alternative to “free software” in order to make the concept more palatable corporate users and contributors. Those who use the term “open source” typically see room for co-existence between free software / open source software and proprietary software. They stress that open source licensing is often (not always!) the most sensible solution, without seeing it as a matter of moral obligation.
outsourcing
Delegating software development to a third party, which may or may not be in a different country. For example, Intermercado’s reliance on Alta for its software needs is an example of “outsourcing.” In Brazilian Portuguese, this is typically “terceirização” (lit. “third-partying”), though the term “outsourcing” may be used occasionally.
Moving software development to a third country, which may or may not imply delegating it to a third party. For example, in chapter 3.3 Carlos talks about the prospects of Rio’s outsourcing economy — that is, getting foreign companies to rely on Brazil for their software development needs. In Brazilian Portuguese, this is typically referred to by the English term “outsourcing.”
performance
Efficient use of available hardware resources. Lua is prized for performance, which means that a program written in Lua runs faster than an equivalent written in many other programming languages, for example Python.
Perl
A popular scripting language.
Petrobras
The largest Brazilian oil company. The Brazilian government owns more than 50% of the shares of the company making it subject to some of the same rules as the government agencies. Petrobras is headquartered in Rio de Janeiro.
PHP
A popular scripting language for development of web applications.
platform
A collection of software libraries and tools that facilitate the development of applications for a particular domain. Kepler is a platform for web application development in the sense that it provides a collection of Lua libraries and tools that make it possible to develop web applications in Lua. Platforms are subject to substantial network effects. (See Katz & Shapiro 1986 for a general discussion of network effects.)
porting
Modifying software for using it on different hardware.
product
Software written for use by multiple clients, rather than narrowly aimed for attending to the very specific needs of a particular one.
programmer
Someone who writes software code, a software developer. In the US, “programmer” is an outsider term, rarely used by the software developers themselves, who often prefer such terms as “developer” or “coder.” The Portuguese cognate “programador” is used even less often by software developers in Rio where it is seen as connoting a low level of skill.
programming
Writing source code. Other popular English terms include “coding” and “hacking.” The equivalent Portuguese terms are “programar,” “escriver código,” and “hackear.”
Programming in Lua (PiL, the Lua book)
A book written by one of Lua’s author (Ierusalimschy 2003, 2006) and generally considered the definitive introduction to Lua. The first edition was published in 2003 and documented Lua 5.0. The second edition (“the Blue PiL”) was published in 2006 and documented Lua 5.1.
programming language
An artificial language for expressing instructions to a computer. Modern programming languages are designed so as to be meaningful to a human programmer while also easy to translate into a format that can be used by the machine.
proprietary software
Software distributed without a permission to modify or redistribute. Cf. open source.
pt
A code for Portuguese language.
PUC-Rio (PUC)
Pontifícia Universidade Católica do Rio de Janeiro (Pontifical Catholic University of Rio de Janeiro), a private catholic university in Rio de Janeiro, one of the most prestigious in the city. PUC-Rio is referred to as “PUC” inside Rio de Janeiro, but not in the national context, since there are several other pontifical universities in Brazil. PUC’s Department of Informatics is the highest-rated computer science department in Brazil (using CAPES ratings). Lua was developed at PUC-Rio (at Tecgraf).
Python
A scripting language, one of the most popular today.
RCS
A system for storing multiple revisions of source code.
real, Brazilian
Brazil’s currency since 1994. In the recent years the exchange rate between the Brazilian real and the US dollar has typically been 2–3 BRL for 1 USD.
reserved words
For the purpose of this dissertation, same as keywords.
RPG (role playing game)
A game in which the players, take roles of fictional characters and enact a story that is determined by players decisions and rolls of dice. Such games can be played on a computer, but do not have to be.
Ruby
A scripting language developed in Japan, one of the most popular today. Ruby is particularly popular in the development of web applications, which are often used based on a framework called Ruby-on-Rails. Ruby was developed in Japan, though Ruby-on-Rails was developed in the United States.
sandboxing
Constraining software code so as to only allow it to use a specific subset of computer resources.
scripting
Programming in a high-level programming language or a “scripting language.” Programming in a scripting language requires less knowledge of the operating system and computer’s hardware.
serial cable
A type of computer cable used in the 1980s and 1990s.
server
A computer or a program that performs tasks in response to requests from other software (usually through the network) rather than from the user directly. Cf. client.
service
Development of software for the needs of a specific client rather than for the market. See product.
set-top box
A device that connects to a television set to allow display of additional content, often offering a level of interactivity that is higher than that of traditional television and more similar to that of a computer.
Smalltalk
A programming language developed in the 1970s, rarely used commercially but highly influential.
software
A collection of instructions that tells a computer how to process data. Computers are machines that manipulate data in accordance with given instructions. Modern computers follow “stored-program” design, which means that while basic instructions for processing data are fixed in the machine’s “hardware,” the primary purpose of such fixed-instructions is to load additional instructions from the computer’s malleable memory. Further behavior of the computer then depends on the instructions found in memory. This design makes it possible to modify the machine’s behavior by changing the instructions in its memory, without replacing any of its hardware. Such stored and modifiable instructions are called “software.” The work of software developers focuses on production of software, in the form of code. (See also hardware.)
software architect
A computer professional tasked with the overall design of a software system.
Software: Practice and Experience
A computer science journal focused on practical experience with software. A 1996 publication in this journal was one of the two articles that brought Lua to the attention of the American software development community.
source code
Textual representation of software, which can be read and edited by human programmers. See chapter 1.2 for examples of source code.
spec
To define, to specify.
strings
Sequences of text manipulated by the software.
syntax
The formal rules of a programming language.
systems analyst
A computer professional whose primary responsibility involves writing specifications for the software to be written by others.
Tcl
A scripting language popular in the 1990s, often used as an embedded language.
Tecgraf
A research and consulting laboratory in PUC-Rio. Lua was originally developed as a part of a Tecgraf project for Petrobras.
TK 82, TK 85
Brazilian clones of small personal computers manufactured in the 1980s by Microdigital Eletrônica. TK 82 was very similar to Sinclair ZX-80, though with some enhancements. TK 85 was a clone of Sinclair ZX81.
Ubuntu
A variant of Linux, one of the most popular in 2007.
UNIVAC
A brand of early commercial computers produced in the 1960s.
Unix
A class of operating systems, of which Linux is the most well known representative.
user
The person who uses or will be using the software. In software development, “the user” is often hypothetical. See Woolgar (1991) for an analysis of “the user” as a social category.
user base
The people who use the software. Due to the strong network effects in software, the existence of a large user base is usually seen as providing a substantial advantage.
VAX
A family of minicomputer produced by DEC in the 1970s and the 1980s.
Visual Basic
A programming language developed by Microsoft.
web application
A software application running on a web server and responsible for some of the functionality provided by the website.
web server
A server that powers a website. When the user enters a URL into the browser or clicks on a link, the browser makes a request to a remote computer (the web server), which returns the content to be displayed.
wiki
A web application that gives the user the ability to edit the content they are presented with.
World of Warcraft
The most popular multi-player online computer game. (http://gamers.guinnessworldrecords.com/records/pc_gaming.aspx). World of Warcraft’s interface was developed using Lua and the users can install plugins written in Lua. World of Warcraft is probably the most high-profile use of Lua today.