This chapter describes the use of English among the software professionals in Rio de Janeiro. I look at this topic not out of interest in the use of language per se, but rather because the interactions that surround the choice of language represent in the clearest way the contradictions inherent in the peripheral participation in a global technical practice. Following the use of English, we take a tour through the different social contexts that I explored during my fieldwork in Rio de Janeiro. This tour will show us some of the limitations of the theory of technical practice presented in the previous chapter when facing the situation of the peripheral participants. I then attempt to bridge this gap in chapter 1.3, presenting a theoretical account of how a technical practice is reproduced in new places. I then come back to ethnography in Parts 2 and 3 of the dissertation, looking in more detail at some of the contexts visited in this chapter and considering how other types of cultural codes are negotiated.

      Linguists use the term “diglossia” to refer to the situation where a single social group routinely uses two different languages, with most speakers being relatively proficient in both. In a typical diglossic system, the two languages have different roles. One language, which linguists typically call “High” or “H,” is used for formal communication as well as for high culture. Another, “Low” or “L,” is reserved for informal communication, especially among close friends and family. Use of the High language connotes professionalism, education, culture, status hierarchy, and commitment to the larger (national or international) institutions. Use of the Low language connotes intimacy, equality and a commitment to the local place.91

      It would not be accurate to say that Brazilian society, or even more specifically the community of software developers of Rio de Janeiro, is diglossic in their use of English if the word “diglossia” is used in its narrow linguistic sense.92 While some Brazilians learn to speak English fluently, it is still a foreign language in Brazil, and during my fieldwork I have never heard two Brazilians speaking English to each other, except for the sake of a foreigner or as a joke. All speech presented later in this chapter is my translation from the original Portuguese, except where stated otherwise. Written English, however, is omnipresent in the work of Brazilian software developers, as are short spoken phrases, which may or may not be altered to comply with Portuguese phonology.93 While such co-existence of English and Portuguese is not diglossia in its traditional sense, it retains some of its features: the High language (written English) can be used to communicate status and global links, while the Low language (Portuguese) communicates local connections.

      While linguistic literature on diglossia often focuses on the mechanics of code-switching and second language acquisition, diglossia is nearly always a power-invested phenomenon and its social side of diglossia often cannot be understood without considering how the two languages tie together local power relations and external resources. In a typical case, proficiency in “H” marks the individual’s status vis-à-vis those who are less proficient in it, becoming an instrument of exclusion. Proficiency in H is often predictive of the individual’s social status because it requires access to educational resources only available to the privileged few. H also becomes important for local power relationships by connecting proficient speakers to a powerful external community interacting in H, allowing them to draw on the resources of this community. At the same time, however, such use of H often underscores its speakers’ dependence on the external resources and their subordinate position vis-à-vis the group that defines the norms of H.

      All of this applies as well to the quasi-diglossic relationship between English and Portuguese among Brazilian software professionals. Proficient command of English, and especially fluency in spoken English, often reflects the socio-economic origin of the developer. At the same time, it gives them access to crucial foreign resources, further elevating their status by helping them acquire cultural capital in the occupational world.

      At the same time, however, the use of English highlights the developers’ peripheral status in a largely foreign practice of software development. As we will see in the examples below, Brazilian software professionals often downplay such tensions: good software professionals are expected to display a global perspective on the world and to accept the dominance of English as a matter of fact. At the same time, elements of resistance do surface occasionally, and the careful handling of misalignments between the local and the global nature of their practice requires daily attention.

      This quasi-diglossic relationship between English and Portuguese is just one of the dimensions of the larger phenomenon that we can call “cultural diglossia”: the situation where a particular social group simultaneously maintains orientation towards two cultures, which stand in an asymmetric relation to each other. In our case, it is the local culture of Rio de Janeiro (and more broadly Brazil) on the one hand, and on the other hand, the “global” technical culture of software development, based to a large extent on the academic culture of the United States. (This distinction corresponds to the relationship between the two types of situatedness discussed at the end of the previous chapter.)

      I start my discussion with a few episodes from “Alta,” a small software company in Rio de Janeiro, which serves as an example of what it means to be successful in Rio’s software industry today. Those examples present the use of English and Portuguese in the relatively unproblematic situations. I then look at a more complicated case of Lua, a programming language developed in Rio de Janeiro, which until recently had no Portuguese documentation. I follow this story with a discussion of a small project based on Lua which truly straddles two different worlds, and gives us some of the most complicated interactions. After that I look at how the developers acquire the knowledge of English, and discuss explicitly the social differences that English proficiency marks. Finally, I look at some of the ways in which the developers express resistance to gringo dominance.

The Language of Software Code

      It was a cool day in June, one of the coolest months in Rio. I was in an office of “Alta,” a company in downtown Rio, and, according to its promotional materials, focused on attending to the desires of its clients through the use of newest technologies. In 2007 this was understood by many to mean building web applications in Java,94 which is what Alta did. The company was started a few years ago by three graduates of PUC-Rio, one of Rio’s most prestigious universities, and the most expensive one.95 The company, situated in a shiny office in the very center of Rio’s commercial district (and walking distance from most of its clients), had been fairly successful, and the office was typically full of energy and laughter. Most employees were very young, all but one were under thirty.96

      I had just recently started my fieldwork at the company. “Fabio,” who had been designated to be my main contact in the company, had set me up with access to the company’s intranet website, which I was now starting to explore. As I logged in, I saw a menu, in Portuguese, offering options such as “Processo” (“process”), “Repositórios de Clientes” (“clients’ repositories”), “Suporte” (“Support”) and “Códigos” (“Code”). As I started browse the content of the site, I found that all of its content was written in Portuguese.

      The situation changed sharply, however, when I arrived at the actual source code files. Below is a typical example of what I saw there:97

/**
 * @param weekday - Dia da semana em que o chronoEntry se encontra
 * @param start - Data de inicio do Cronograma
 * @param oldDate - Data do chronoEntry que esta sendo clonado
 */
private Date weekConvert(Integer weekday, Date start, Date oldDate){
 Calendar cal = GregorianCalendar.getInstance(new Locale("pt_BR"));
 cal.setTimeInMillis(0L);
 //Data do inicio do Cronograma, assumimos que seja sempre segunda.
 cal.setTime(start);
 //Ajustamos o dia da Semena
 cal.add(Calendar.DAY_OF_MONTH, weekday.intValue() - 1);

 //Copiamos Hora e Minuto
 cal.set(Calendar.HOUR_OF_DAY,oldDate.getHours());
 cal.set(Calendar.MINUTE,oldDate.getMinutes());

 cal.set(Calendar.SECOND,0);
 cal.set(Calendar.MILLISECOND,0);
 return cal.getTime();
}

There are two types of text in this example: the comments, included only to assist a human reader of the code (the text in “/* … */” and on lines that start with “//,” shown in italics), and the instructions — the code actually interpreted by the Java compiler. All comments in the example are written in Portuguese, all instructions are written in English.

      While the use of English could be related to the programmers’ pride in having mastered the dominant language of the global software profession (and we will come back to this issue later), it is important to realize that, as is often the case, the programmer had limited choice over the language in which he wrote. (I use “he” here since all of Alta’s two dozen programmers were men.) Three of the English words in the passage above (“new”, “private” and “return”) are keywords (or reserved words) of the Java programming language — three of the fifty nine words that have fixed meaning in Java. Any Java programmer must know and use them. Most of the remaining English words, while not part of the Java language per se, are defined by a set of software modules (or “libraries”) that come with Java. They are avoidable in theory, but not in practice. Java programs create and manipulate data objects, each of which is associated with a bundle of instructions called a “class.” The class of the object defines what operations can be done with it. Objects, classes and operations all have names, which are used to invoke them. While the programmers can and do define their own classes for their specific situations and can name those as they please, much of the standard functionality is supported by classes that are packaged together with Java.98 Not surprisingly, those classes and their operations are named in English, by programmers working for Sun Microsystems (now split mostly between Cupertino, CA and Bangalore, India).

      In the example above, the programmer needs to perform date calculations, and can do this using a standard class “Calendar.” He obtains an “instance” of this class by first creating a new object of class “Locale” and passing this new object to an operation (“getInstance”) defined by a class called “GregorianCalendar”99:

Calendar cal = GregorianCalendar.getInstance(new Locale("pt_BR"));

The only point at which the programmer could choose which language to use is when giving a name for the new object that is being created (terms shown in bold in the code listing above). In this particular case he used a language-neutral abbreviation “cal”: it could stand either for “calendar” or “calendário.” The other four names that he introduced (“weekConvert,” “weekday,” “start,” and “oldDate”) are in English. The programmer could have chosen Portuguese names for them. However, doing so would turn the code into an odd mixture of two languages, the programmers often say to me.100 It would also require the programmer to remember whether each particular object’s name is English or Portuguese: is it “oldDate” or “dataVelha”?

      “Boilerplate code” is another reason for extensive use of English. Many problems faced by the programmers have ready solutions, usually documented on the web (almost always in English) with extensive coding examples, which can be copied and pasted into the program. (While programmers, whether in Brazil or the US, nominally look down on such practice, copying small stretches of code is quite common in both countries.) The larger platforms — such as the ones used by Alta — typically come with complete sample applications. Programmers often find that it is easiest to start with such generic application and then modify it one step at a time until it fits their specific needs. For instance, rather then writing an e-commerce site from scratch, a programmer can download a simple “sample store” (a ready web application for a store called “My Store” selling two types of “widgets”) and then modify it for the needs of a specific customer, which may include translating the interface into the customer’s language.

It’s Just More Natural

      Looking at Alta’s code some time later, while working on a small task that Fabio assigned to me, I did find cases of use of Portuguese variable and operation names. A few days later, as I was watching Fabio draw a diagram of Alta’s next application, entering English field names like “price” and “quantity,” I decided to ask him about the mix of languages that I had seen in the code. It’s supposed to be all in English, said Fabio. He then explained: The Portuguese names were just someone’s mistake. It all should be in English, except for the database tables. (All speech presented in this and later chapters should be assumed to be translated from Portuguese, unless stated otherwise. Speech presented without quotes is reproduced approximately.101)

      “Except for the database tables?” I made a surprised face. Yes, the Java code should be in English, Fabio said again, But the database tables should be in Portuguese. Mauricio, sitting at the adjacent table turned around in his swiveling chair. “This is really stupid,” he said. Mauricio, in his late twenties, was one of the developers on Fabio’s team; he usually stayed quiet, so I knew that this had to be a topic he felt strongly about. Having class names and database tables have different names makes no sense, said Mauricio. He explained that there are many software applications that assume that the names of the tables and classes match, and a mismatch between the database table names and Java class names is often a source of endless trouble.

      The two started talking about why one could possibly want class names to be in English and database tables in Portuguese. Mauricio’s position was that it should all be in English, while Fabio explained that they simply did not have a say about the database tables. Those were administered by “Intermercado,” Alta’s largest client, and had to be in Portuguese. “Why? Because the database guys don’t know English? What are they doing there then?” insisted Mauricio. (This was perhaps a jab at the “database guys” broadly, or more specifically at the clients’ IT people, whose incompetence was a frequent topic of discussion among some of Alta’s engineers.) Yes, Fabio explained, database guys may or may not know English. In either case, this was not for him or Mauricio to decide.

      “But why should the code be in English?” I asked. “Good question,” said Fabio, “I ask this myself sometimes.” But it is just more natural this way, he explained. The programming languages themselves are in English.

      Listening to Fabio’s comment about programming languages being “in English,” I remembered a conversation I had a week earlier with Rodrigo Miranda, a coordinator of a Rio-based open source project whom we met in the Introduction. In the early 1990s Rodrigo worked in software translation. At some point a call came from Microsoft: they needed someone in Brazil to translate Excel’s Visual Basic into Portuguese. Rodrigo could barely hold laughter when telling the story. Yes, he told me, they literally wanted to translate all the keywords. They wanted to make it “se” instead of “if,” for example. Despite the prospect of making good money quickly, Rodrigo tried to dissuade Microsoft from doing this. When they decided to go ahead with the project, however, he agreed to do it — the money was too good to pass up. “I was telling them that this shouldn’t be done, but that if they want to get it done, I should do it.” Of course it failed miserably, he continues, and people were harassing him for a very long time. “Which idiot translated Visual Basic into Portuguese?” they would ask. “It was me,” Rodrigo would reply. If the person continued to say what a stupid idea they thought it was, Rodrigo would typically explain: “I got a new computer from this. Is that a stupid idea?”

      I told the story to Fabio and Mauricio. Too young to have witnessed the fiasco, they found it most entertaining, rolling their eyes. This must be one of the stupidest ideas ever! they exclaimed at the same time. How would you even do it? asked Fabio. How would you translate “DIM?” What does DIM stand for anyway? Dimension? So, perhaps it would be “Dimensão.” This would be so strange and so verbose! I pointed out that “Dimensão” could be abbreviated just like “Dimension” was — in fact  to the same “DIM.” I suppose, conceded Fabio. But Portuguese just isn’t a good language for programming languages. The grammar is too complex. What would you write in the end of the function? “Retorno? Retorne? Retornar?” Fabio rattled off several forms of the Portuguese verb “to return.” In English it all makes more sense, he concluded.102

Lua: If or Se?

      The feasibility of designing a programming language with Portuguese keywords had also come up two months before my conversation with Fabio and Mauricio, when I conducted one of my interviews with Roberto Ierusalimschy, a professor at PUC-Rio. In the early 1990s Roberto (following my interviewees, I will refer to him by the first name) and two of his colleagues103 designed a programming language called “Lua,” ostensibly for the needs of a specific project done for a particular large client of Tecgraf, a PUC research laboratory where Roberto worked at the time (Ierusalimschy et al., 2007). By the late 1990s Lua became fairly popular outside Brazil for certain types of software applications. As I show later (chapter 3.2, “ Porting Lua”), to understand Lua’s success we need to look at how it got successfully “disembedded” (Giddens 1990) from its local context, becoming “portable” to the unknown contexts of future use abroad. (This requirement is not universal — projects born at the center can typically leave it to the users to re-create the necessary context.104) In the process, Lua has become somewhat foreign in the land where it was born. Here I focus more narrowly on the use of English and Portuguese by Lua and the Lua community.

      “Lua” means “moon” in Portuguese. “In our language it is a very beautiful word,” Roberto wrote on the list in the late 1990s.105 This name, however, is Lua’s only connection with the Portuguese language, and a dubious one at that. “Lua” is also a pun on “SOL” — the name of Lua’s predecessor; “SOL” means “sun” in Portuguese, but is at the same time an English abbreviation: “Simple Object Language.” At the time of our interview, Lua’s documentation was available only in English. All of several books written about Lua were written in English. (The most popular one, by Roberto Ierusalimschy, had been translated into German and Korean but not into Portuguese.) Lua’s manual became available in Portuguese only in September 2007, six months after our interview and ten days after a version in Russian was released.106 It perhaps would not surprise the reader when I say that Lua’s keywords are all based on English words. Or to put it differently, Lua uses “standard” keywords, such as “function,” “if… then… else,” or “return.”107

      When the first version of Lua was being developed in 1993 the choice of language was seriously discussed, if briefly:

Roberto: I remember that we discussed a lot about both error messages and reserved words. There were people, even me, that talked about… that maybe instead of “if” we should use “se” and use “enquanto” instead of “while.” And we just decided that this is not English — this is reserved words. Someone said that, I don’t remember who: those aren’t even quite English words, even for English people they couldn’t… that they were picked by European people who didn’t speak English properly. [Laughs.] But anyway, so we decided to stick with the usual reserved words. And I think that the error messages went together; they should be in English, it would be strange to write “while …” and then get “Erro na linha…” So maybe comments were in English for the same reason. I really don’t remember. I can maybe try to find some… but I think that I usually already wrote many things in English. […]

Yuri: I am curious: at the time who did you see as the audience for those comments and error messages?

Roberto: For the error messages for sure Tecgraf — that’s why we discussed it. For the comments just me, Luiz Henrique and Waldemar. We didn’t think about other people reading the comments. And we put them in English because… That’s what I said: I tend to use English in comments because it is difficult to put accents.108

Roberto’s mention of reserved keywords not being “true” English most likely refers to “else” — one of the most common keywords in modern programming language, used to introduce an instruction to be performed when a particular condition fails (“if condition then do X else do Y”). The “if… then… else” idiom was introduced by an international group of computer scientists working in Europe (with the US scientists present, though) and is arguably poor English.109 The statement that the “usual” keywords are not actually “English,” is of course immediately contradicted by the fact that their use necessitated English error messages.

      I said earlier that Lua was ostensibly developed for a local project. I do not doubt that the needs of Tecgraf’s clients were the main reason for Lua, and that Lua’s later success in fact came as a major surprise to its authors (as they assert in publications and interviews). We must keep in mind, however, the factor that I call “subvocal imagination” and that one of my interviewees calls “megalomania” — imagined futures that are treated as too unlikely to be publicly presented as a rationale for action, but which nonetheless can affect action profoundly (see chapter 1.3). In chapter 3.4 (“Glocal Dreams”), I talk about my discussion with “Pedro” (whom we will also meet later in this chapter), who at the time of my interview with him, was finishing his final project for an undergraduate degree. Much like Lua, the project was designed for the needs of a very specific client, but was written in English, top to bottom. When asked why, Pedro hesitated to answer, laughed, then said: “Out of megalomania.” What if, the project would succeed and become big? Pedro was mocking his own global imagination, calling it “megalomania” (a word as derogatory in Portuguese as it is in English), yet he entertained the idea enough to write all of his code in English, on the off chance that he would one day be hiring programmers in India. I suspect that similar “subvocal imagination” was likely a factor in the choice of Lua’s keywords. (Another important factor — Roberto’s broader preference for English in public contexts and the lack of support for Portuguese accent marks — is discussed in the following section.)

      The day after our interview, I received a message from Roberto, with the subject “Paleontology.” Roberto told me that after our conversation he went looking through old files, finding that while Lua and SOL code were written “in English” from the very beginning, test files for them were in Portuguese until 2003, over a ten year period.

On the Sol project, I found a file called “teste”, which (like its name) is in Portuguese. […]

BTW, the official tests for Lua were in Portuguese (variable names, comments, etc.) until version 5.0! (They are not shipped with the distribution.)

So, I guess I already had an habit of writing code in English and tests in Portuguese…

This distinction should make intuitive sense in light of the literature on diglossia. When two languages co-exist, they can do so by taking different functional roles. One language (“High” or “H”) may take the function of a public language, while the other language (“Low” or “L”) serves as the private language. L is used for things that are not seen as being serious — talking to friends, perhaps writing a diary. H is reserved for formal communication. L may be seen as unsuited for this later domain, either because it is seen as lacking in resources (remember Fabio’s notion that Portuguese is unsuited for code because its grammar is too complicated), because it might not be understood by the larger audience of such communication, or because it would bring into doubt the author’s command of H. (Since H is typically acquired in school rather than learned natively at home, preference for L can cast doubt on the author’s education and hence social status.)

      Lua’s implementation code is public, not only in the sense of being available to the general public, but also in the broader sense of being visible to Roberto’s peers. (Note that while Alta’s code is not released to the general public it is also somewhat “public” in this latter sense of being open to programmer’s peers and to Alta’s clients, though it is not circulated as widely as Lua’s code.) Public code must adhere to certain standards — it must be “clean,” it must be well-organized, and it must be in English. Test files, on the other hand, are often treated by programmers as private (“not shipped with the distribution,” as Roberto says in his email). The standards for such files are thus more relaxed, and beauty can be sacrificed for getting the work done faster. Such files can, among other things, be written “in Portuguese,” or, rather they can tolerate a mixture of the two languages which many developers consider inappropriate in the public code. The test files for SOL, which Roberto sent me later, as well as the later test files for Lua, did contain such a mixture of English required by the language itself and Portuguese used for names defined inside the test:

type @curva {c:bool, s:string = "profundidade"}

Other software developers also say that they often write “quick” test files in Portuguese.110

      This distinction between public and private code corresponds to a distinction employed in choosing a language for prose: as we will see below, Roberto has preferred writing articles in English for the last fifteen years and in fact lacks the tools needed for writing Portuguese professionally. He writes his email in Portuguese, however.111

      The situation has changed somewhat over the last decade, as Lua development has been making small steps towards the open source development model. This transition demonstrates one of the new challenges that open source development brings to peripheral participants. Open source development blurs the line between public and private, as the users of the software often want to have access to the author’s complete working environment rather than just the final product. Reliance on the local language becomes problematic even for such things as tests, since the open source logic demands that such code also should be rendered public. In 2001 some members of the Lua community started asking for Roberto’s test scripts. In March 2002 Roberto finally responded to one of such requests with a URL for the zipped tests (still in Portuguese) on Roberto’s website (rather than the Lua.org site) — in a place where they would be unlikely to be found. (The only way to find them would be to read the message that Roberto sent to the list.) After more requests for tests (from those users who quite literally “did not get the message”) Roberto finally announced in 2006 that he had translated the test suite into English (despite some participants’ assurance that this was not necessary) and offered to “move it to (some obscure place in) the Lua site.” As of October 2007, the files still remained in a hard-to-find corner of Roberto’s personal website.112

Lua’s Documentation

      Much like the comments in Lua’s code, its original manual of eighteen pages was also written in English, as was the very first paper about the language, presented at a Brazilian conference in 1993. The conference accepted papers in English, Portuguese or Spanish and the choice of language did not make any difference at the time as to how the paper counted towards researcher’s productivity metrics. Nonetheless, there were several good reasons to choose English. The first one concerned the larger audience that could be reached by an English publication, or, rather the exceedingly small size of the Portuguese audience:

Roberto: The problem I see is that when you go to a specific academic area, even in the world, the number of people interested in this is small. So if you write in Portuguese… In Brazil maybe there are four or five people who are going to read what I write. It’s not a problem of Portuguese, it’s a problem of any language. You must write in a language that everyone can read, unfortunately, or fortunately, because the number of people is so small. There is no point of writing a technical paper in Portuguese, or in Spanish, or in French, or in German or in whatever language.

Consequently, Roberto nearly always wrote his papers in English. “I usually prefer to write papers in English,” he said. “Since that time I only wrote papers in Portuguese when it is very fast. Currently even if it’s fast I prefer to write in English.” Earlier in his career, he used Portuguese for the relatively unimportant papers (“when it was very fast”). Now he prefers English in all cases.

      Roberto then mentioned a different factor, the technical challenges of writing papers in Portuguese:

Roberto: And currently my tools — even when I want to do something in Portuguese, using LaTeX [typesetting software], I always have a lot of problems. I am not even well prepared to write Portuguese anymore.

As most computer scientists in the US, Roberto uses a software product called “LaTeX” to write his papers.113 LaTeX is essentially a programming language designed for typesetting documents, and, like most programming languages, it cannot easily handle non-English letters or accents. (This limitation also applies to Lua itself — a Lua programmer who wanted to give Portuguese names to their variables would have to forgo the accents.) “There are a lot of packages to solve that but I do not have them installed properly,” said Roberto, “Or sometimes they are installed properly but I change the version and I only discover two months, three months later that they are not working. Apart from emails I almost never write anything in Portuguese.”

      English is thus intertwined with the practice of academic computer science in a very material way, being assumed by many of the tools on which the practice relies. Roberto started using LaTeX during his post doc in Canada in the early 1990s (he did all of his earlier training at PUC) and has been using it ever since, even though he says many of his colleagues “even today […] prefer to use Word.” (Roberto’s post-doc abroad is not unusual for his department — all but three faculty members either did a Ph.D. or a post-doc abroad, typically in the US, Canada or France.114)

      Nearly all publications about Lua were thus written in English. Around 1996 one such publication, in a popular American computer programming magazine, attracted a substantial number of questions, which led Roberto and his collaborators to start a mailing list. (No mailing list was necessary before that since all users worked in the same room — see chapter 3.2.) From the beginning, most of the subscribers were foreign and the discussion was conducted in English, though messages sent in other languages occasionally popped up and were typically met with friendly amusement or curiosity rather than disapproval. In 2002, when the community had grown substantially, a question was raised whether a separate Portuguese list was needed or whether the list should be declared officially “multi-lingual.” In response to this discussion Roberto wrote:

Currently, the list members from Brazil (.br domains) are only ~15% of the list, from a total of almost 30 countries. (Our second “minority” are 10% of German speakers.) Whether we like it or not, the only language we can all communicate is English.

The message then explained that poor English was welcome: “We can have a much wider audience with poor English than with good Portuguese :–(“

      In 1999, another member of the Lua team announced on the list that Roberto was working on a book on Lua. Seriously or not, an American list member asked: “Do us poor language-handicapped folks in the States have a chance of being able to read it?” “I hope so,” responded Roberto, “I am writing it as close to English as I can :–)” The book was in fact written in English, and a draft was published on the list in 2000 and was met with much excitement. (“‘Programming in Lua’ is absolutely the most lucid introduction to a programming language I’ve ever read,” wrote one of the list members.) Lua was changing so fast and so radically, however, that the book was obsolete before it was finished and had to be re-written for the new version of Lua. In early 2003 the new version of the book was finally ready, and Roberto asked the list for ideas on how to publish it. The list members responded with suggestions, offers to proof-read the book or to represent Roberto in the United States. (It was largely taken for granted that the book would be published there.) O’Reilly, the most well known publisher of computer books in the US, was everyone’s top suggestion.

      Roberto did contact O’Reilly, but received a response that said Lua was too much of a niche language to support a book.115 Some of the list members tried to convince Roberto to release the latest draft of the book electronically and ask the readers for donations, but he (and some of the other members) felt that this would jeopardize a future contract with a publisher. The book was eventually self-published via a print-on-demand service that also acted as a distributor and could thus satisfy the number one requirement: the book became available for purchase on Amazon.com.

      Roberto’s announcement of the book’s availability on Amazon came with a note in parentheses: “For those in Rio de Janeiro: I am trying to print a small local batch to get a better price, so you may want to wait a little…” This plan, however, never materialized. Roberto then tried to get the book into some of the Brazilian stores, including those online, but again without success. The fact that the book was written in English presented a problem, however, since Brazilian stores as a general rule do not sell books in English.116 The fact that it was a self-published English book created even bigger challenges. The stores did not want to buy the book from a foreign distributor, and insisted on buying it directly from the publisher instead. Since the book was published by Roberto himself, he would need to set up a company to do proper accounting of books sales and expenses. This ordeal of starting a company is not taken lightly in Brazil: it is hard to start one, expensive to maintain it, and nearly impossible to close. (Roberto would therefore need to pay an accountant and possibly taxes for years to come whether or not the venture would end up making any money.) Foreign publishers avoid this problem by maintaining their tax home abroad. Roberto could avoid it by staying out of the Brazilian market.

      Writing a book in English, thus gave Roberto not only access to a larger audience, but also to more efficient institutions for publication and distribution of books. While some of those problems might have been avoided had Roberto written a book in Portuguese and found a Brazilian publisher, many would have remained and many other would have surfaced. Writing a book in English, self-publishing it and making it available on Amazon.com might after all be the most efficient way to reach Brazilian readers. Many of the developers are quite used to buying books from Amazon, pointing out that international shipping costs less than the markup charged by Brazilian book stores.

      While one cannot buy a copy of Programming in Lua in any of the Brazilian book stores, there are at least a few places in Rio de Janeiro where it can be obtained. One can buy it from Roberto in his office, where he maintains a small stack, as I did at the end of that interview. One can also borrow the book (as I had been doing earlier) or sometimes even buy a copy from Rodrigo Miranda, who also keeps a few extra copies in his office in Copacabana and buys more copies from Roberto when they meet at PUC. The situation exemplifies a more general pattern. While Lua maintains both local and global ties, the local ties are really local (mostly within the PUC network), while there are few ties at the city or national level. One can buy the Lua book from Amazon (global), or from Roberto’s office (really local). One cannot buy it in a local book store or in a Brazilian bookstore online.117 The only way to pay for the book in Brazilian reals is to hand the cash to Roberto or Rodrigo. In much the same way, Lua benefits from contributions of many Brazilians, but those are almost always people who know Roberto personally (his former PUC classmates or students). The virtual contributors (who are also quite important), are almost exclusively abroad.

      By the spring of 2007 the book had been translated into German and Korean (and later also into Mandarin), but no Portuguese translation is available to this day. Rodrigo Miranda has been trying to organize a translation but so far without success; a half-completed translation by his friend Renato died with Renato’s hard drive. Rodrigo had not yet had the courage to tell Roberto about the loss, but Roberto was hardly counting on this effort to come to fruition:

Roberto: But for many years, I think since the first edition, that Nas Nuvens, Rodrigo Miranda and his brother João,118 they plan to translate the book to Portuguese because they have a lot of users of their tool that for sure prefer Portuguese documentation. But they are planning that for many years, but nothing happens till today. [Laughs.] And they are still planning this translation. And apart from that I’ve never got any contacts.

Roberto said that he had offered to revise a book if it ever got translated, but had little hope for the book, considering the difficulties in distribution described earlier. (“The biggest problem is not the translation,” he explained. “The biggest problem is after that, what we are going to do with the translation.”) Meanwhile, he is content with waiting to see if anything comes from Rodrigo’s efforts.

Roberto: There is nothing else I can do. I am not going to die to translate this book to Portuguese. I really would love to have it translated to Portuguese but I am not going to translate it and as I told you, it’s really not in my mind to beg people for things. So I am not going to try to convince other publishers in Brazil whether they would like to translate my book.

After all, Roberto did not have to ask anyone to get the book translated into German or Korean.119

Kepler’s Wiki

      Lua is a niche language, which has gained substantial popularity in a particular set of applications, typically those requiring performance, simplicity and close interaction with software written in C. In California, Lua is primarily used in development of computer games or small devices. Both of those applications are too specialized for Rio’s small market, which depends primarily on building web applications for local businesses. Rodrigo Miranda, a former Ph.D. student of Roberto Ierusalimschy, had dedicated a decade of his life to turning Lua into a platform for developing web applications. Doing so has been an uphill battle. As most of its users agree, Lua provides an excellent solution for a particular set of problems; web development is not one of them.120 In 2007, I spent four months of my fieldwork following Rodrigo’s project (named “Kepler”) from inside his office in Copacabana — a story that I tell in more details in chapter 3.4 (“Glocal Dreams”). Since then, I have followed Kepler through an involvement in a satellite project.

      After a week of sharing an office with Rodrigo Miranda, I decided to get involved a bit more in the project. (Since the project is so highly “virtual,” observing the work in the “real world” was so uneventful that I was starting to doubt if Kepler existed at all. Getting involved in coding and entangled in the network of relationships that comprise the project did cure those doubts and I discuss this issue in chapter 3.4.) I decided to start by helping with the documentation — a comfortably peripheral role, which reminded me of Traweek’s (1988) work at SLAC.121 Kepler’s website indeed needed some work. Over the next two weeks Rodrigo and I had some long discussions about the structure of the new website, and I built a prototype. One of the things that Rodrigo asked for was that the website (or at least parts of it) would be driven by a wiki, allowing the users to edit the content.

      A couple of weeks after our first discussion about the website, I realized that having designed most of it, we had not thought at all about where exactly the Portuguese version of the documentation would go. The existing Kepler website did have Portuguese documentation, though it was spotty and the visitor was often sent back to the English version. Running the website as a wiki creates additional challenges: we would now need to figure out how to synchronize the content between the two languages. I brought this issue up while talking to Rodrigo over Instant Messenger (IM)122:

(5:29:39) Yuri:       what worries me is the howto. if we’ll be relying on users to extend the howto, how do we make sure that Pt. version keeps up?

(5:30:40) RMiranda: we don’t

(5:30:44) RMiranda: that’s the whole point

(5:30:50) RMiranda: I plan only to offer the mechanism

(5:30:52) RMiranda: not the content

(5:31:00) RMiranda: and count on the community for that

(5:31:09) RMiranda: we have fernando for example

(5:31:19) RMiranda: he can monitor the site and update things

(5:33:38) Yuri: are you planning on adding more languages later?

(5:33:51) RMiranda: surely not

(5:33:56) RMiranda: i wouldnt add not even pt

(5:33:57) RMiranda: :)

(5:34:04) RMiranda: thats finep requirement

(5:34:04) Yuri: explain

(5:34:09) Yuri: oh, i see

(5:34:11) RMiranda: too much trouble

(5:34:24) RMiranda: I have nothing against supporting it on the wiki

(5:34:30) RMiranda: if people manage the content

(5:35:37) Yuri: what does Finep require?

(5:35:50) RMiranda: all of the product documentation in pt

(5:35:56) RMiranda: but this can be a static html or pdf

(5:36:07) Yuri: doesn’t Fernando’s document satisfy this?

(5:36:12) RMiranda: exactly

This conversation left me utterly confused. Did Rodrigo want Portuguese documentation or not? It was only a few months later that I managed to make sense of it. Kepler was sponsored by FINEP, a Brazilian agency that funds research projects in industry, and by “Nas Nuvens,” a company that belonged to Rodrigo’s brother João (see chapter 3.4).123 Nas Nuvens hoped to eventually offer Kepler-based solutions to its local clients and needed documentation in Portuguese. For this reason, it had requested FINEP funds for writing Portuguese documentation as one of Kepler’s sub-projects. There also was an extra benefit: subcontracting documentation work to “Fernando,” created an opportunity to build a relationship with Fernando’s organization, a research institute near Rio de Janeiro. As I learned later, Fernando had recently sent Rodrigo a draft, but Rodrigo has not found time to read it. In April 2007, Portuguese documentation was yet to become a high priority: Kepler had to be finished first and for that it needed attention of developers. This meant documentation in English.

      A week after our discussion over IM, we found ourselves rethinking our initial choice of the Wiki software. During that deliberation, I decided to try writing a wiki in Kepler (a decision that will affect greatly the rest of my fieldwork). A few days later, with the initial version of the wiki ready, we revisited the question of Portuguese pages, talking about ways of interlinking Portuguese pages with their English equivalents.

      The URLs of wiki pages are typically based on their titles, which makes it easier to create pages and to link to them. The URL of a page called “Introduction” would end in “Introduction.” If the same were true for Portuguese pages, then the corresponding Portuguese page would show up under “Introdução”. This creates a minor challenge for automatically linking corresponding pages in two languages. When I asked Rodrigo what he thought about the issue, he expressed shock at the suggestion of using Portuguese in URLs. Absolutely not! he says. The pages names that appear in URLs should most definitely be in English! He did not want to have any accents in URLs, he explained, and he wants the pages to be easily mappable. And we are not going to have a page called “Introducao”! He carefully enunciates the hard “c” and the “a” of “Introducao” to show the effect of the missing cedilla and tilde.124 This page should be called “Introduction.” Calling it “Introdução” would be just as ridiculous as using Portuguese words for Lua or Kepler keywords. (Using Portuguese keywords in a programming language or a framework apparently defines “ridiculous.”) Sure, this meant that Portuguese pages will need to specify the English page name for every link, continued Rodrigo, but that is a small price to pay.125

      Another week later, Rodrigo and I were about to leave the office when we got chased by Rodrigo’s brother João (a partner of Nas Nuvens). João asked Rodrigo about the documentation — he had been busy trying to “sell” Kepler to local companies (so that he could literally sell Nas Nuvens’ services later) and Portuguese documentation would help. Plus he is worried about delivering the documentation to FINEP. Rodrigo told him that he has glanced at Fernando’s document and that it was good enough for now. (The FINEP project is not due for another nine months.) “You are now talking like Roberto,” said João in frustration. I perceived that this was not meant to be a compliment. Rodrigo in fact got defensive. It’s not quite the same, he says. “I am not saying that there shouldn’t be Portuguese documentation,” he explains. There were just better things to worry about. The elevator arrives giving us a chance to escape, leaving João behind to worry about Portuguese documentation by himself.

      Kepler’s complicated relationship with Portuguese documentation reflects the complex way in which Kepler connects to two different worlds: the local world of Brazilian clients and funding agencies, and, on the other hand the foreign world of web development in which Kepler is trying to find a place. Roberto’s situation is simpler. As a Brazilian academic researcher, Roberto is shielded from many local factors. For him, Portuguese documentation is simply a luxury (or perhaps something “cute” — the word that some of my interviewees use to dismiss Lua).126 Rodrigo Miranda’s approach to Portuguese documentation, on the other hand, puzzled me for many months, as he went back and forth between spending time to figure out exactly how it would work and seemingly questioning any need for it.127 (As I show later, Rodrigo’s position on creating a mailing list in Portuguese — in addition to the current one, which is in English — has similarly changed a few times.) For Rodrigo, Portuguese documentation was a balancing act between conflicting commitments. Kepler’s destiny was tied to that of Nas Nuvens. As we will see below, some programmers at Nas Nuvens could read English only with difficulty and the company needed Portuguese documentation. Like many other software companies in Rio, Nas Nuvens also was dependent on local clients and had to build other local alliances. (The reasons for such dependence, which are not unique to Nas Nuvens, are discussed in the consequent chapters.) Yet the small funds that the clients and FINEP could provide, did not allow Rodrigo to obtain what he needed most for his project: expertise. He looked for such expertise in two places: abroad, by trying to recruit invisible programmers from the Lua community and at PUC, among people who considered it silly to spend time on Portuguese documentation, not to mention worrying about how to deal with accents in page names.

Learning English

      The fact that Roberto Ierusalimschy’s Programming in Lua was available only in English did inconvenience some of the developers working with the language. For Luciano, one of the programmers at Nas Nuvens, Programming in Lua was the first and the last (as of 2007) book he had read in English:

Luciano: The only book in English that I’ve read was the Lua book. Just that.

Yuri: You actually read it, beginning to end?

Luciano: Uhu.

Yuri: And understood?

Luciano: [Laughs.]

Yuri: Did it take long?

Luciano: Very very long.

Yuri: But now that you’ve read one, reading another book must be easier, right?

Luciano: Yes, but I am not going to run the risk again. It takes forever.128

Luciano is twenty years old and is of lower middle class background.129 He went to a public school, where he had English classes, which he says, taught him nothing. (“English for twelve year olds. Doesn’t count.”) What did teach him English, he says, were role-playing games (RPG) on a computer:

Luciano: Games, RPG games, you know? I played a lot — the RPG games. The games gave me the minimum and then… For example, to buy things, you need to apply […] the word “buy,” and the word “sell,” you know? […] If you need to open this door, it’s “open the door.” You apply: “open the door.” [Pause.] It’s… it’s buy, right?130

Luciano was not the first person to mention computer games as the introduction to English. Since computer games serve as a common entry point into the tech world for many Brazilians men, Luciano’s learning of English was from the very beginning pulled by his growing involvement with the tech culture.131

      Around the same time as he started playing computer RPGs, Luciano started fixing computers as a part time job, then got interested in the Internet, got himself a computer and started learning HTML. He got a job in tech support, and started learning Linux and PHP — a popular programming language for web applications.132 His source of learning was translated books and online forums in Portuguese (“some forum mentioned PHP,” he says). It did not take him long to discover, however, that most of the material he needed was in English and he started trying to make sense of the English on the web. He is now strategic about selecting resources in English or Portuguese, considering the time it would take against the likely utility of the documents:

Luciano: For questions — anything. You know? If I have a question… Here: [unclear] monitor resolution [unclear], something like that. I would put this into Google in English. […] But for learning… I want a tutorial about [unclear]. Then I will put it in Portuguese.[…] With English it is really easy for me to get lost, one word will totally change the meaning of everything. I can’t be sure I got it right.133

Step by step, however, he seems to be growing more competent in understanding written English.

      The need to solve practical problems and the interest in engaging with the tech culture, however, are not the only motivations for learning English. The language also is widely seen as more generally providing access to the larger world. During one of my days in Alta, I started a conversation with a PUC student who had recently joined the company as an intern and was taking time to learn the new technology that Alta is using. Looking at the stack of books on his table, all in English, I took the opportunity to ask him how he learned English. I learned it by myself, he says. Never took any course. I wanted to understand song lyrics for bands like Black Sabbath. I asked him if he ever speaks English. Not often, but sometimes, he responded. Sometimes some of his friends end up going out with gringos, so he would then talk to them. Sometimes you go out, he explained, and there is a hot woman [“mulher muito gata”], but she is German. So, you need English for communicating. Another engineer, Flavio, who had been listening to our conversation jumped in. And I learned English through RPGs, he says. Playing a game? I asked, remembering my conversation with Luciano. Not so much playing as reading the manual, he responded. “I learned by reading.” As I later realized, unlike Luciano, Flavio was not talking about computer games, but “real” role-playing games where the players meet face-to-face to re-enact a fantasy adventure, rolling dice to simulate chance. Flavio presumably spoke Portuguese to his fellow-players, but the game design had been imported from the United States and the manual was thus in English.134

      Luciano’s level of English represents the lower end of the spectrum for Brazilian software developers: not being able to read technical documents in English (something Luciano can do with some difficulty) is widely considered a serious impediment, and developers with less English than Luciano would have trouble finding serious work. (One young manager that I interviewed complained about a recent “mistake” of hiring a developer without testing their knowledge of English. “That’s terrible for someone who is supposed to work in computer science,” he explained. The company since introduced an English test for all new job candidates.) His limited English proficiency will also serve as a marker of lower middle class background, highlighting the distinctions between him and PUC-educated professionals like Rodrigo, limiting Luciano’s opportunities for career advancement.

      Due to the perceived importance of English in software work (and the lower class connotations of inability to speak it), developers are reluctant to admit their use of Portuguese and often overstate their use of English, as is demonstrated in this interview:

Edmundo: I use Google… For example, I have a question about how to read a binary file. I forgot. How do I do this? […] I do a search [says in English]: “java binary file” [says in English]. Then I see how people have done the code and do mine.

Yuri: You always use English words?

Edmundo: Always. English words. Ah… I beg your pardon: 80% in English, 20% in Portuguese. And I will tell you why. Why 20% in Portuguese? Because here in Brazil we have one of the largest Java communities in the world. […] And 80% because in the whole world […] there are Java programmers all over the world, so it’s easier to find a word that you post in English than in Portuguese. […]

Yuri: But how do you choose [which language to use]?

Edmundo: Good question. How do I choose… Do you really want to know? Do you really want to know? When I am too tired to write in English, then I enter it in Portuguese. When I am too tired to write in English. [Chuckle.] There isn’t a pattern like “Ah, now I’ll search in Portuguese.” […] When I am tired. [Laughs.] When I don’t want to read English, when I don’t want to read anything. […]

Yuri: So, reading English is more difficult for you?

Edmundo: [Pause.] Of course. Because it’s not my native language. It’s not my native language. It’s like you, even though you’ve lived in the United States already for five years, or three years, or was it five? […]

Yuri: Ten.

Edmundo: Ten? Ten years, damn! And still reading in Russian is much easier than reading in English.135

What is significant about this passage is not the fact that Edmundo finds it more difficult to read in English than in his native language, but his reluctance in admitting that. Edmundo sees his use of Portuguese as a weakness — a weakness that he hopes I would understand given my own status as a non-native English speaker. As most interviewees he feels that a software developer is supposed to stay up-to-date (se manter atualizado) in the world of technology by going “directly to the source” and using the dominant language of that world rather than getting the information second hand.

      Those who learn to read English well typically learn it the same way: through private English courses. While a handful of developers who went to some of the best private schools say that they learned English there, as a general rule, neither public nor private high schools are mentioned when developers are asked how they learned English. Neither are the universities, whether public or private. The better universities may expect their students to read English, especially for Master’s courses, but they do not teach those skills. Instead, most developers mention one of a number of companies that offer private English courses, typically at night. One of the developers at Nas Nuvens says:

Pedro: Because what I did is I didn’t do my undergraduate program in four years. I did it in four and a half years. I did it in four and a half because I decided to reduce the work load to study English. So, I reduced the load to study English, to study English for a year and a half, with a commercial English course. If you want, we can talk. [Says in English. Laughs.] My English is still, still… I hear better than I speak. […]

Yuri: And how did you learn it?

Pedro: The English course. A semi-intensive course of a year and eight months, which I am doing now. Still doing. So, I reduced my load at the university during the sixth semester. There are eight semesters. I reduced it during the sixth, planning to stay an extra semester. Because during the sixth I started thinking: if I don’t study English I won’t be able to do a Master’s. […] Because with the Master’s program here — they [expect] that a person would be fluent… not fluent, but would be capable of reading. […] Must know to read and write English. […]

Yuri: And it went well?

Pedro: For me it did, it worked.

Yuri: Before that course you didn’t know…

Pedro: …any English at all.

Yuri: Didn’t even know how to read?

Pedro: Nothing. Not even read. We have here an English course in the primary school, but it is really bad. An English course based on translation. This way you never learn. I knew very little. In terms of reading — very little. I can say that today I can read any article in English.136

Pedro’s English class also coincides with the time when he made a major step forward in his career as a software developer, starting to learn to program in Ruby using the Rails framework. The course cost Pedro R$200 per month (about US$100 in May of 2007) and offered two 1.5 hour classes per week in groups of 8 people.137 For well-off Rio families, enrolling their kids in such courses is an obvious decision, and such kids typically start their course well before college. (Some of my interviewees started private courses as early as ten.) Others, like Pedro, have to wait until they can afford the course, in terms of both time and money. Like Pedro many developers start by doing a number of semesters of a night-time university program, as this allows them to get a better job and increase their earnings. Having established somewhat of a financial base they can then start thinking about spending additional money on an English course and perhaps slowing down they progress in the undergraduate program.

      Even for students of PUC, who typically come from expensive private high schools and had taken private English courses since early age, English often remains a language that is often read and heard (in movies and music), sometimes written, but rarely spoken.

The Speakers and the Non-Speakers

      A few months before my interview with Luciano, I was sitting in the office of Nas Nuvens, in the room that I shared with Rodrigo Miranda, when Luciano knocked on the door. He stepped inside and said something to Rodrigo. Rodrigo responded by pointing to me as the person to ask. As I understoond, the question had to do with running Kepler on Linux, which was presumably why Rodrigo forwarded Luciano to me — he had been trying to make use of me as a resident Linux expert, since I was running Linux on my laptop. (Or perhaps Rodrigo just wanted to put me to work. He had recently been making comments that seemed to hint that I was distracting him from work — which I most surely was — so perhaps this was a way to compensate.) Luciano explained to me the problem, which concerned Kepler’s LuaZip module. As it turned out, the module needed “zzlib” library, which in Luciano’s case was in a different directory from where Kepler’s build script expected to find it. I opened the Makefile and pointed Luciano to a variable called “ZZIP.” He said he had already changed it and that after that his code compiled, but it would not run — at the run time the executable seemed to again look for the library in the wrong place. I realized that the question is out of my league, and told this to Luciano. You should ask Alan, I said, directing him to an active Kepler developer who used to be at PUC but recently moved from Rio to Porto Alegre. However, I continued, I know that Rodrigo would want you to ask this question on the Kepler list rather than emailing Alan directly. About a week after I arrived, Rodrigo had told me that he wanted to start running Kepler as a “real” open source project and that this would involve routing more communication through the mailing list and relying less on face to face interactions or private email.138

      Rodrigo nodded. Luciano looked at him in a bit of disbelief. You are not going to make me do that, right? said his face. Yes, Rodrigo responded to Luciano’s silent question, Write to the list. I did not catch Luciano’s response, but the prospect of writing to the list in English did not seem to appeal to him.139 I remembered at this point how a few days earlier I walked into Nas Nuvens to find everyone seated in a circle in the lobby, listening to one of Nas Nuvens’ partners, Daniel. The moment I walked in, Daniel greeted me and launched into a lengthy monologue, in the most fluent English (Daniel had lived in the US for a number of years) telling me that they were talking about the wiki I had written in Kepler (see “Kepler’s Wiki” above). As Daniel talked, I found it hard to focus on his words, as my attention was drawn to Luciano, who was rolling his eyes while simultaneously keeping them wide open. When Daniel finished — or perhaps paused to inhale — Luciano said something along the lines of “My god, I understood nothing of that.” The comment drew laughter from nearly all developers.

      I was about to volunteer to help Luciano to compose the email, when Rodrigo sighed and said: “Write it, email it to me, I will translate it for you.” Luciano nodded and left. A bit later, a message from Luciano arrived via the mailing list. As I later learned, Luciano wrote most of this message by himself, and Rodrigo only corrected a few typos. It also was not Luciano’s first message to the list — he had sent one before, that time having it written it all by himself. But that’s it, he told me in our interview. Rodrigo had recently created a Portuguese list for Kepler, and Luciano would only write to the Portuguese list now.140

      A few weeks after the incident with Luciano’s email, I was at Nas Nuvens’ office again, slouching in a bean bag (or puff, as it is called here), while Rodrigo was standing on the floor in front of me. I was trying to explain to him a problem I thought we had with a code example we were working on together. I was speaking Portuguese and I stumbled as I searched for a Portuguese equivalent of “smart quotes.” Rodrigo was following my line of thought, however, and completed my sentence for me: “smart quotes.” He used the English phrase, but pronounced it as in Carioca Portuguese: “ishmahchi quotish.”141 After we concluded this discussion, I switched to English and asked Rodrigo why he would say “ishmahchi quotish,” if he knew how to pronounce this phrase in English.

      He sat down on the puff next to me, leaned back, and took a breath. Many people don’t know enough English to know how to say it right, he said. I understand this, I responded, but you know how to say it. Why do you say it this way? — My English is not so good, actually, he said. “This is ridiculous,” I think to myself. Rodrigo’s English was almost as good as mine; he must have been avoiding the answer.142 Listen, I said, maybe your English is not perfect, but you know how to say “smart quotes.” It is clear, I continued, that people who are fluent in English often say English words with a strong Portuguese accent when using them in a Portuguese sentence.

      Ok, said Rodrigo, I’ll tell you why. It’s because Luciano was in the room. I tend to speak this way when there are “non-speakers” in the room, he explained. There is a thing about using English in a politically correct way, he continued. When you use English, you don’t want to make it sound like you think you are better than other people and if you speak overly correct English people might think that. If I say “ishmahchi quotish,” it makes me just one of the guys. It’s a way of “making fun of English, making it less elitist,” he concluded. But you do this even when there are just the two of us talking, I said. Maybe, he agrees, at some point it just becomes a habit. Somewhat in disbelief, I ask Rodrigo if he has just come up with this theory on the spot. No, he says, I first thought about this twenty years ago, in high school.

      A linguist might disagree with Rodrigo. Saying “ishmahchi quotish,” might well be simply a matter of adjusting the pronunciation of an English phrase to the phonological context of the Portuguese sentence into which it was inserted. Such adjustment is quite normal for foreign words that are treated as already accepted into the host language (see chapter 6 in Grosjean, 1982). What is poignant about this episode is that the question that I ask is something that Rodrigo has thought about. His response shows the way he feels that use of English separates him from others and that he occasionally needs to find a way to be “one of the guys” by using their language.

The World Language or the Gringo Language?

      I was at Nas Nuvens, and an email arrived from Rodrigo, sent to me, his friend Renato, and the mailing list that includes all Nas Nuvens’ programmers. It was a link to a blog post entitled “No mundo da Lua.” The Portuguese title was a pun — it could be translated as “In the World of Lua” or “With Heads in the Clouds” (literally: “in the world of the Moon”). The blog post was in Portuguese, but was published on IBM’s “Developer Works” website. The blog post lamented the fact that Lua was unknown in Brazil and that Programming in Lua was in English, German and Korean but not Portuguese. It then directed the readers to an article about Lua in English Wikipedia.

      The incident left me curious about the relative sizes of Wikipedia articles about Lua in different languages. I spent some time looking at them, compiling a table.143 I was not particularly surprised to see Portuguese below Korean and Spanish, while seeing my native Russian above Portuguese even gives me a bitter-sweet feeling of satisfaction. Rodrigo walked into the office just when I was getting the word count for the Esperanto version. I asked him what his bet would be: would the Esperanto article on Lua be longer or shorter than the Portuguese one (visually they appeared quite similar). Rodrigo bet on Portuguese, without too much excitement. The Portuguese article did turn out to be longer, though barely. I announced the result to Rodrigo. He looked at the Esperanto article in disbelief and seemingly a bit irritated. I just don’t get it, he said. As it turned out, he was not irked by the fact that Portuguese nearly “lost” to an invented language, but by the fact that people waste their time on Esperanto. “Anyone who can speak Esperanto can also speak English,” he explained. If they can speak English, why do they bother with Esperanto?

      Perhaps people want a neutral language to communicate in, I said. We headed out to get dinner, continuing our discussion on the way. I asked Rodrigo if he ever had a pen-friend. He mentioned “Matti,” a Lua programmer in Finland who had been somewhat involved with Kepler and had become a personal friend. They were exchanging messages about all sorts of things, most not related to the project. I asked him if he thought his interaction with Matti would be different if he knew Finnish or if Matti was fluent in Portuguese. Yes, it would be, he says, as it is in your case. (Paradoxically, I noted, we were speaking English at the moment, but perhaps it was the fact that we could be speaking Portuguese that made a difference.144) I said something about the power imbalance created when one has no choice but to speak the language of the other. But Matti and I are equals, countered Rodrigo. They were equals in terms of our standing in the Lua world, he explained, and neither was a native English speaker. But isn’t there always an invisible third person, the American, present, when you speak English, I asked. Yes, says Rodrigo, it makes sense. I never thought about it this way, though.

      I speak English because it is practical, continued Rodrigo. A while back I figured out that I could only learn one foreign language. English was the best option since that was the language spoken by most people. “Why didn’t you learn Chinese then?” I asked. True, he responded, there might be more people speaking Chinese, but Miami was closer. He added something about McDonald’s. There you go, I said, it was not about the number of speakers, but about McDonald’s, Miami and Disney World. Or, to put it different, it was about cultural dominance. If Buddhist temples were more important to you at the time than McDonald’s, I concluded, maybe you would have tried to study Chinese after all.

      Sure, agreed Rodrigo. But English is not the same as the United States. In fifty years, he continued, the US will no longer play a dominant role on the world stage, but English will still be the main language. It has nothing to do with the US and with its culture. The United States of Canada will be mostly Spanish-speaking anyway, and nobody is going to care what people speak in Jesusland, he said, referring to a joke I told him earlier.145 English will thus no longer be seen as the language of the United States, just as a means of international communication.

      Rodrigo was speaking in a somewhat humorous tone, and his words seemed to be carefully picked to express neither hope nor disappointment at the eventual demise of the United States that he was foretelling. He talked as an indifferent, if curious and somewhat amused, observer. (Rodrigo always picks his words carefully, mindful of the possibility of offending one party or another. He sees his mediation skills as a key asset. And he is also always half-joking, to a point where it becomes hard to know when he is serious.) The scenario he painted, however, reminded me of another conversation, from just a few days before. I was at the apartment of another Brazilian programmer, also a fluent speaker of English (with a Ph.D. from Canada), and the conversation touched on the United States. “Do you know what people’s reaction here was when they heard of September 11th?” he asked me. “They were quite excited (animados).” People were thinking, he continued, that this was going to be the end of the US dominance. His eyes light up. It didn’t quite work out this way, but still in the long term the US will fall.

      About a month later, I was walking to lunch with a group of Alta programmers. We are going to Rio Sabores, which we had nicknamed “I don’t know” (“Não Sei”), a place we would go to when nobody had a preference and when the first person who asked to suggest a place would says “I don’t know.” Two of the guys were discussing Linux music players. They were comparing the more established XMMS to the newer RhythmBox and some other, “new thing” that a third developer (not present) is now running on his computer. As is common, they were talking about technology, without actually talking about work. (They hardly ever talk about work at lunch. That would be boring. Linux music players, on the other hand, are a valid topic — after all, they are not talking about Linux Java compilers.)

      When we sat down to eat, the discussion turned to a different topic — measuring temperature in Fahrenheit degrees. How stupid is that? said one programmer. Others nodded in agreement. The whole world uses the metric system, except for the United States, he continued. Why can’t they act like a normal country? Others nodded again. And then we end up using the stupid American measures too, jumped in another developer. Like measuring monitor sizes in inches! (Brazilians measure TV and monitor sizes in “polegadas,” a term which apart from that only comes up in translated books.) But one day the US will decay, and perhaps the idiotic measurement system will facilitate this.

      “I hope,” said another developer, Marcos, “to live long enough to see three institutions go down. The first one is the United States. The second one is Rede Globo, which won’t take that long. The third one is Microsoft.” Marcos then moved on to stronger imagery, talking about how each of those needs to be “destroyed.” (The picture of destruction was painted most vividly for Rede Globo — the country’s main news network which middle class Brazilians love to hate. The despisal expressed for the United States seemed bleak in comparison.) Others developers made supporting comments regarding all three. Nobody seemed to question that this was about the right list. The conversation did not linger on this topic for very long, however. After a few cliché (and seemingly pro-forma) curses towards Microsoft, the discussion moved on the activities of the Gates Foundation, then quickly to investment, and the rest of the lunch was spent talking about personal investment in stocks. Marcos talked about how he invests money in stocks while others listen with curiosity — this seemed to be something they had heard of before but had not done.

      On the way back I asked Marcos what he meant when he said “the United States” and whether this included all of the US companies. “Ok,” he said, “It was partly a joke.” Though, he continued, there are lots of reasons to wish for the United States to be destroyed. They approach the world from the position of the strong, they do what they want everywhere. “But what about American companies?” I asked. After all, Alta’s engineers spent their days working with technology made by the US companies? Yes, he said, I am aware of this; there is a contradiction. And yes, I think about it some time. And it’s true that much of this technology is available to us because the United States has made a really big investment into research. But this doesn’t justify the way they treat other countries. And also, if the US were destroyed, some other country could take the role of the technological leader. “And act the same way?” I asked. Maybe, he agrees. To some extent, the US behaves in accordance with human nature. It’s in human nature to abuse power. But still… The billions and billions of dollars that they spent destroying Iraq could have been spent improving life in Africa. “Would this all affect Brazil, though?” I asked. Probably not, he says. Brazil is not in a position to be the next technological leader, nor is it Africa. So, no, this wouldn’t affect Brazil. After a pause he added:“But it makes a difference for our consciousness.”146

      Open expressions of hostility to the United States, such as those presented in the few pages above, are not something a US-affiliated researcher hears every day. What I did hear regularly, were the more mild references to gringos, typically accompanied with the lightest touch of resentment, and immediately retracted upon any interrogation. From my first days in Brazil, I was continuously surprised by the extent to which the Brazilians I interacted with closely (software developers or not) highlighted my Russian origin when presenting me to others, bringing up my connection to the United States only when wanting a joke at my expense. (The situation was a bit different in the more formal interactions, where being “from the United States” seemed more valued, though even there “from Berkeley” or “from California” seemed to be preferred.) While part of the preference for seeing me as Russian rather than American no doubt had to do with the curiosity towards a distant and nearly mythical country, it seems clear to me that such identification was also meant to allow me to not be seen as “a gringo.”147 Of course I did get this label applied to me quite often in jest, with an expectation that it will annoy me. And though at first it did not, after some time I internalized their values to a point where being called “gringo” actually started to irk me. (I also started introducing myself as being from Russia without waiting for my Brazilian friends to point this out.)

      The resentment towards “gringos,” however, is never expressed as resentment towards English among the software professionals that I interviewed. (Brazilians working on certain other fields do that sometimes.) Or, to be more precise, they never express resentment towards English in the context of software, though sometimes lamenting inappropriate love of English among other Brazilians broadly:

Roberto: And there is this inferiority complex and everything, I think, that comes too.

Yuri: What do you mean by that?

Roberto: I mean the people always consider that if it’s from outside it’s better.

Yuri: Why?

Roberto: Why… I think this is something very [unclear] in the Brazilian culture. I mean, I have some theories, but I don’t think I should explain them. Because the thing in Brazil… Always since the Portuguese court came here148 there were… first there were the Portuguese, then the English, then the French, then the Americans. There is always this kind of… I think one of the reasons, actually, is that rich people here are immigrants, and so they try to keep this kind of “I am different from other people here, I deserve to be in the upper part of Brazil because I am not really Brazilian.” I think there is a lot of cultural things to connect. People here love to use English phrases. In the beginning of the nineteenth century everyone loved to speak French. In the beginning of the twentieth century it was English but from Britain. Now it’s English from America. But it’s always this important part of the world that we want to be a part of, to be connected with the important part of the world. We are part of the important part of the world. Just by chance we are living in this… this undeveloped country. I think this is very deep in Brazil. […] Music is a much stronger example, because in music we have a… unlike software, we have very very strong music creation here. So to be number one in music here is really important. But still people give much much more importance to… […]

Yuri: You think it applies to music as well?

Roberto: Yes! The way people love… If we were to be fair here, I think most people would never listen to foreign music here, because Brazilian music is so good. […] But if you go to radio stations here, most radio stations here in Rio play only foreign music. […] It’s unbelievable that this [happens] in Brazil. Eighty percent of the stations should play Brazilian music! Ok, there is twenty percent for other stuff. If you go to disk stores here, sometimes they are organized here, like here is “Pop,” “Rock,” Jazz,” “Brazilian Music” – it’s a kind of a subsection. […] Some people even put it in “World Music.” [Laughs.] I already saw one or two stores. But it’s not common, this is very strange. But I already saw it. But it’s very common that you see all that American music in the front and then there is one section — this is “Brazilian Music,” with all different kinds of Brazilian music. Classified like they do in the United States.

Roberto links speaking English to the more general adoration for foreign things, which may go as far as preference for American music. Alternatively, software professionals may make fun of those Brazilians who prefer overpriced imported whiskey to Brazilian cachaça or have cachaça substituted with cheap local vodka in their caipirinhas. This love for all things foreign, however, should not be confused with their use of English, they point out. The latter is an entirely practical affair. And in the near future their use of English might have nothing to do with the United States anyway.

      The situation with language here represents in many ways a more general issue that is common place in Brazil. As I show in consequent chapters, Brazilian software community in many ways lacks cohesion, the actors all too often feel “stuck” in the wrong place, with the wrong people. Managers say they can get nothing done in Brazil because of the incompetence of the employees. The programmers say you cannot get anywhere because of clueless managers. Both blame the government and the clients. The clients and the government find their reasons to be dissatisfied with both the workers and the managers of the IT firms. And everyone accuses others of being in love with foreign things, while arguing that their connections to the outside are simply a matter of realism.

      It is also true, however, that individuals like Roberto and Rodrigo (as well as many other of my interviewees) are sufficiently worldly and global (at least in comparison with the rest of Brazilians) that they do not need to show their worldliness to others (or they do this in more subtle ways). They read and write English so often that they do not need to speak it in front of others to make a point. (In fact, as we saw above, their concern might be how to fit in the world of non-speakers.) They do not love English — they just use it. It is true that while Brazilians with less education occasionally use English words when talking to me seemingly to show me that they know them, PUC graduates typically do so only when there is no obvious Portuguese equivalent or when they feel I did not understand the Portuguese word they used. In other words, the use of language as a marker of boundaries does not need to be overstated.

      Use of English can thus be sometimes a pragmatic choice, a matter of reaching the largest audience, and at other times a way of establishing social status and flaunting connections with the larger world. It can also mark local connections (between the members of the educated elite or between engineers sharing in the jargon), or draw a distinction between those with and without education. Use of Portuguese can similarly mark connections or boundaries. As we will see later, much the same can be said about many other types of cultural codes.

Work as (Foreign) Practice

      The episodes presented in this chapter illustrate many of the elements of work as cultural practice. They show that being a software developer is very much a matter of participating in a culture, rather than just performing certain tasks in exchange for money. (Though, the importance of finding local jobs comes up in a few of the episodes, and is explored in more details in later chapters.) While looking at how the developers learn English, we also touched upon the question of how they come to engage in the professional culture of software — a topic later explored further in chapter 2.1. We saw some of the ways in which the language is intertwined with the tools used by the developers. We also saw how the language and culture of software can structure local social relationships, connecting to the discussion of power in Lave & Wenger (1991). The theoretical discussion provided in the previous chapter thus helps us understand many of their experiences. It leaves us unprepared, however, for the most startling aspect of those episodes: the fact that the practice of software comes in a package with a foreign language, and (as we will see more clearly in later chapters) with a foreign culture. We quite clearly cannot understand the experience of Brazilian software developers without considering the fact that they engage in the practice of software in a place quite far from where this practice is strongest.

      In the next chapter I extend the theory of work as practice and introduce the concept of “worlds of practice” to capture the larger collective towards which the developers orient themselves — an orientation that they stress should not be confused with the simple liking of all things American. I explore the several types of links that hold such occupational worlds together, placing language, the topic of this chapter, among other cultural ties, and contrasting those with the material relations which are equally important to understanding such “worlds.” I return to Alta, Lua and Kepler in part 3 of the dissertation (chapters 3.1, 3.2 and 3.4 respectively), looking at each as a different potential configuration of local and global commitments.


Notes

91: Ferguson (1959/1971) originally introduced the term “diglossia” to refer to the situation when two (or more) varieties of the same language are used within the same community under different conditions. For that reason, Ferguson described the languages as sharing much of the grammar and the vocabulary. (For the examples that Ferguson studied, he also suggested that the grammar of the “High” language tends to have a richer inflection system.) The concept of diglossia was soon extended to the case of two unrelated languages, such as the diglossia between Guarani and Spanish in Paraguay, as well to different relations between the two languages. Grosjean (1982), uses the term to refer to any two languages (related or unrelated), but requires an asymmetric relationship between them, stressing “that the H variety is not used by any sector of the community for ordinary conversation, that it is learned largely in school and is used for most kinds of writing” (p. 132, original emphasis). I follow Grosjean’s use of the term.
92: Some scholars have made a claim that Brazil is diglossic between two varieties of Portuguese: the formal Brazilian Portuguese that closely approximates the Portuguese spoken in Portugal and the colloquial Brazilian Portuguese that differs from it substantially (e.g. Azevedo 1989, Bagno 2001). While my own experience with Brazilian Portuguese leds me to agree with this claim, I do not discuss this complex issue. Therefore, when I use the term “diglossia,” here, I refer to the diglossia-like relationship between English and the different varieties of Portuguese.
93: Such use of spoken English usually does not rise to the kind of mixture of two languages that linguists call “code-switching,” since only specific English words and phrases are used, and they are usually phonologically adapted to the Portuguese context. They are better described as “borrowings” (or to use Grosjean’s terminology, “speech borrowings”) from English into a particular variant of Portuguese. (See Grosjean 1982, p. 309, for a discussion of the difference between borrowing and code-switching.)
94: See the glossary for technical terms. Some of them are marked in the text with underlining.
95: The cost of 21-24 units in “Ciclo Básico” (which includes computational engineering) costs R$1600 per month, according to PUC website (http://www.puc-rio.br/ensinopesq/ccg/anuidadesCCG.html) and this number was confirmed by PUC graduates. This would translate into roughly US$6000 a year.
96: The story of Alta is explored in more detailed in chapter 3.1.
97: In this an other code samples, italics and bold were applied by myself to make the code easier to read. Software code is always stored without formatting (“plain text”). Most programming editors will apply syntax highlighting, coloring different types of commands in different colors. Syntax highlighting is also often applied automatically to code displayed on the web. The way code is highlighted, however, depends on the software one uses to view it.
98: More generally, most modern programming languages operate by defining data entities (general data structures, operations over them, and specific data items) and giving names to those entities so that those entities could be used later. The programmers are typically free to create their own entities and name them as they want (though, such names must typically be limited to the 26 letters of the unaccented Roman alphabet - “conexao” would be ok, but not “conexão”). Programmers’ entities, however, typically build upon a pre-existing layer of entities (many of which are often “standard” to some degree) and inherit from them many of the names. The programmer often has choice of what entities to build his or her code on, but that choice is limited by what foundations are available. Starting from scratch is possible in theory but impractical due to the time it would take to provide an alternative to an existing foundation layer. Finally, a small number of names (typically under a hundred) have fixed meaning in the language. Those commands cannot be renamed, and their names cannot be used for other purposes. They are called “reserved words” or “keywords.” (There is a subtle difference between the two terms which is not relevant to this paper, and they will therefore be used as synonyms.)
99: Note that the name “GregorianCalendar” indicates that other calendars are also supported. As a global programming language, Java is designed with an assumption that the users of the software written in Java may use a variety of scripts, calendars, or sorting conventions. The programmers, however, are expected to use English.
100: The following passage of PHP code written by a Brazilian software developer “in Portuguese” demonstrates this problem:
101: Here and everywhere below, I use quotes to mark participants speech that is reproduced verbatim. Speech that was not captured verbatim, is sometimes phrased as direct speech, but is presented without quotes. I italicize such speech when doing so aids reading. (For details see appendix B, “Transcription and Quoting Method.”)
102: “Retorno” is the noun “return”, “retorne” is the formal imperative of the verb “retornar” (to return). A formal word that could traditionally be used only intransitively (to return from somewhere), it is now also used transitively (to return something) by programmers — a usage clearly influenced by English. “Devolver” would be a better translation of English “return” in the transitive case, and “voltar” would perhaps be a better translation for the intransitive case. Interestingly, however, many programming languages exploit the ambiguity of English “return,” allowing it to be used either by itself or with an object. Given that, the English-influenced “retornar” might be the only reasonable translation.
103: Lua was developed by a team of three people at PUC-Rio: Roberto Ierusalimschy, Luiz Henrique de Figueiredo and Waldemar Celes. To simplify the narrative, this my discussion of Lua in this chapter focuses just on Roberto Ierusalimschy. Lua’s history is discussed in more detail in chapter 3.2.
104: The designers of Windows Vista, for example, did not have to worry about what hardware their future users might have and how to make the operating system work on them — instead, they tell the users what hardware ought to be purchased and tell the manufactures of peripherals what drivers ought to be written.
105: In a slight variation on this comment, another member of the team wrote in 2007: “‘Lua’ is a beautiful word in Portuguese and has a poetic meaning. But it means ‘toilet’ in Hawaiian and is also a Hawaiian martial art. It also means something in Vietnamese, but I don’t know what. ”
106: Prior to that, the only documentation available in Portuguese was a brief summary at http://www.lua.org/portugues.html. The Portuguese translation of the manual was made by a Ph.D. student of Roberto, whose work was funded by the money obtained by Rodrigo Miranda (see “Kepler’s Wiki” below). The Russian translation (http://www.lua.ru/doc/) was made independently from the Lua team and without their knowledge.
107: Each of Lua’s twenty keywords has appeared earlier in some programming language, and nearly all of them represent a conventional choice of the options that had been earlier used for a particular function. Standard libraries that come with Lua, however, add a substantial number of names that are not borrowed verbatim from other programming languages, but are also all based on English words.
108: All of my interviews with Roberto Ierusalimschy were conducted in English. I have corrected minor grammatical errors, but preserved his choice of vocabulary and manner of speaking.
109: Such use of “else” goes against English usage since it would be ungrammatical in English to say “If it is cold, then take a taxi, else walk.” The else statement was originally introduced into ALGOL 60 in the early 1960s, after a meeting in Paris attended by some of the most prominent computer language designers of the time. While many of the attendants were Europeans and not native English speakers, there was also a substantial number of US-born computer scientists present, so the choice of else might have more to do with the computer scientists preference for a short and simple keyword over the more English “otherwise,” which had been earlier introduced for the same purpose in COBOL and its predecessor FLOW-MATIC. (FLOW-MATIC and its successor COBOL were the first programming languages designed to look like English, rather than like mathematical formulas, though ALGOL and FORTRAN were developed at the same time. Most popular programming languages today show strong influence of ALGOL 60.)
110: While many programmers prefer to write “in English” and some “in Portuguese” there is also a third approach, where the two languages may be mixed in the same name. For instance, a function that returns a list of students may be named “getAlunos.” This pattern of mixing makes sense if we consider the linguistic distinction between function and content words. Function words express basic grammatical relations and are typically few. Content words name entities, and are often counted in tens of thousands. In case of language contact, the mixing of the languages often proceeds in an asymmetric way, with one language (the host or matrix language) absorbing certain words from the other (the embedded language, also called substratum). (See chapter 6 in Muisken, 2000 for a discussion of the issue.) While “get” is a content word in English (that is, just another verb), in Java it conventionally represents one of a small number of basic relationships between a function and an entity. It can thus be seen as a function word. “Alunos” is a content word, denoting a part of programmer’s local reality. In that sense, “getAlunos” is English (or, rather “English-Lua”), which is borrowing vocabulary from Portuguese — the embedded language. Note the opposite is the case in speech, where content words from English are inserted into the “matrix” provided by Portuguese.
111: The first two messages sent to the Lua list were similarly in Portuguese. The first one read: “Estou apenas testando a lista.” (“Just testing the list.”) The second - “acho que funciona :-)” (“I think it works”). Since then, the list has functioned in English.
112: The process of adapting to the foreign rules, including Lua’s step towards being a “proper” open source project, is discussed in chapters 3.2 (“ Porting Lua”) and 3.4 (“Glocal Dreams”).
113: Many US computer science conferences until recently preferred papers submitted in LaTeX format and the connoisseurs can often tell that the paper was typeset in LaTeX just from its appearance.
114: {text:s} See appendix D (“Doctoral Degrees of PUC-Rio Department of Informatics Faculty”).
115: O’Reilly later did agree to publish the second edition of the book and went as far as to pay an advance, but then canceled the book together with many others after a management change.
116: A few weeks earlier, in fact, while browsing through books in PUC’s book store, I noticed books on some relatively obscure languages, such as Haskell, but not Roberto’s Lua book. I then realized that all books that the book store was offering were in Portuguese — including the book on Haskell, written by a Brazilian in this case. There simply was no Portuguese book on Lua that they could sell. I am not quite sure why Brazilian bookstores do not sell English books. My guess is that they simply cannot compete with Amazon on prices of English books and thus stick with Portuguese books where they have more of a captive market.
117: While the book is only translated into two languages (German and Korean), the English edition is available in online stores in Canada, France, UK, Germany, Korea and Japan.
118: The real names in the quote are replaced with the pseudonyms that I use elsewhere in this text.
119: As discussed in chapter 3.3, Rodrigo did eventually manage to organize a translation of Programming in Lua, which was completed in January 2009 and is being revised as of the writing of this dissertation.
120: As discussed in chapter 3.2 (“ Porting Lua”), Lua’s has been successful in applications that require a scripting language to be embedded into a body of C code, and especially in computer games. In theory, Lua could also work well for many other situations (including web development), if it were not for a lack of libraries — collections of reusable code written in Lua. As I learned first hand, programming in Lua may at times be like trying to bake a cake starting with an unplowed field, growing your own wheat on it, harvesting it, milling it, then figuring out how to make do without yeast. (I also learned the satisfaction that comes with doing things this way.) Lack of libraries is a common affliction for new programming languages, though Lua might be somewhat unique in that up until recently Lua’s community did not seem to consider this as a problem, stressing that the specific applications where Lua shines do not require libraries. (Lua’s situation with libraries is discussed in more detail in chapters 3.2 and 3.4.)
121: Traweek (1988) worked part time at SLAC’s Public Information Office, where she “explained the activities of the lab to visitors, who ranged from junior high school to college students, from the general public to special interest groups like safety experts, electrical engineers, and chemists, from new employees to visiting dignitaries” (p. 11).
122: At this point, I happen to be at home while Rodrigo is likely in his office a few blocks away.
123: “Nas Nuvens” literally means “in the clouds.” See chapter 3.4 for the explanation of this pseudonym.
124: The -ção of Portuguese “Introdução” is pronounced somewhat like English verb “sung.” Without the accents (“-cao”), the pronunciation approaches that of English “cow.” The difference would therefore be quite noticeable even without the extra stress that Rodrigo puts on “cao.”
125: Wiki engines simplify the creation of links between wiki pages by allowing the user to link to the pages by referring to it by the title. In Wikipedia, for example, putting “Introduction” in page, will generate a link to the page called “Introduction.” In this case the link will appear on the page as the world “Introduction” and will link to a page with that name. Occasionally, however, the author may want the link phrase to be different from the title of the destination page. For instance, she may want to make a link to a page called “Portuguese Language” but use only “Portuguese”as the link phrase. In this case, the title of the article and the link phrase are separated by “|” (“the pipe”), e.g.: “Portuguese.” Rodrigo’s suggestion is to simply use the same approach for all pages in the Portuguese section of the wiki: Introdução.
126: Rodrigo’s accounts present Roberto as more dismissive of Portuguese documentation, compared to his position in our interviews. This difference may be due to a combination of him changing his opinion over time (Rodrigo has had a substantial influence on him in the last few years, it seems) and presenting himself differently to me (a foreign researcher with a recorder, as Rodrigo points out to me) and to Rodrigo (a former student).
127: It changed once again in April 2008 when Rodrigo contacted me for assistance in setting up a Portuguese wiki using the method I originally suggested. Note that by that point, my wiki had acquired a life of its own and was drawing on the input of other contributers based outside Brazil, so Rodrigo was looking for the “standard” way to handle foreign language content.
128: See appendix C, “Original Interview Quotes,” (Luciano, July 2007, “O único livro em Inglês”).
129: I use the terms “middle class,” “lower middle class,” and “upper middle class” as they are used by my interviewees. Roughly, lower middle class families are those families that can keep their kids in school through the end of high school but cannot pay for their college education or support them after high school. Middle class families can support their children through college, though cannot pay for expensive private schools like PUC.
130: {text:s} See appendix C, “Original Interview Quotes,” (Luciano, July 2007, “Jogos RPG”). Luciano’s “buy” in the end of the quote appears to refer to the discussion of buying/selling a few sentences earlier, rather than confusing the English words “buy” and “open.”
131: The link between English, games and software is discussed again in chapter 2.1.
132: PHP is often considered a “low end” web development language, since it is easier to learn, while Java is a “high class” language. (There is a somewhat natural transition from HTML to PHP, while understanding the basics of Java typically requires some computer science training.) PHP programmers typically earn substantially less than Java programmers.
133: {text:s} See appendix C, “Original Interview Quotes,” (Luciano, July 2007, “Fácil me perder”).
134: While not played on a computer, face-to-face RPGs are quite popular among computer “nerds.” At the same time, RPGs are associated with a larger world of “nerds” of which “computer nerds” are only a part. (See chapter 2.1, “Nerds.”)
135: See appendix C, “Original Interview Quotes,” (Edmundo, October 2005, “80% em Inglês.”).
136: For this and the following quote see appendix C, “Original Interview Quotes,” (Pedro, May 2007, “Curso de Inglês”).
137: For comparison, a four year undergraduate program in Information Systems at Estácio de Sá (one of a number of large for-profit private universities operating in Rio) costs R$440-880 (~US$250-500) per month as of September 2007. (The number R$440 is from Estácio’s website. Pedro, a recent graduate of Estácio de Sá, says however, that it’s a marketing ploy, since the cost is lower during the first semester but goes up to R$880 afterwards.) For comparison with PUC tuition, see footnote {text:note-ref} on page {text:note-ref} .
138: This topic is explored in more detail in chapter 3.4.
139: A few months later, when Rodrigo sets up a Portuguese mailing list for Kepler, I learn first hand the terror of writing in a foreign language to a mailing list that archives all messages and puts in public view, realizing that anyone who would even want to know exactly how strong my Portuguese was at the time of my fieldwork would only need to know how to use Google.
140: Luciano did participate in the discussion on the English Kepler list in the months since the interview, though he has been more active on the Portuguese list.
141: See appendix B (“Transcription and Quoting Method”) for a discussion of phonetic aspects of Carioca Portuguese.
142: Rodrigo Miranda was about the most fluent English speaker among the people I met in Rio de Janeiro. Since I am myself a non-native speaker known to drop articles, Rodrigo’s English might in some ways be more correct than mine. The only clear difference between Rodrigo’s English and mine is his relative unfamiliarity with American slang and idioms, as well as occasional mispronunciation of words that are often read but not heard by Brazilian software developers.
143: See appendix E, “Length of the Wikipedia Article on Lua in Different Languages.”
144: My conversations with Rodrigo alternated between Portuguese and English, without a clear pattern. According to Rodrigo, this was a source of much discussion by the non-English speakers in the office, who struggled to understand why we would not just pick one language or the other, or, rather, why we would not just stick with Portuguese. (Rodrigo’s English was far more correct than my Portuguese, though I seemed to be able to sometimes speak Portuguese faster than he could speak English — perhaps indicative of the difference between learning a language in school vs. learning it mostly by speaking.)
145: A joke popular after the 2004 elections presented a map of North America with the “blue states” attached to Canada (labeled “the United States of Canada”) and the “red states” shown as a new country labeled “Jesusland.” I had just told Rodrigo about this joke a week before. He liked it a lot and has referred to it on many occasions.
146: See Pait (2008) for a discussion of the reactions of São Paulo residents to the conflict between Israel and Lebanon.
147: The denotation of the term “gringo” is a bit vague in Brazil. One the one hand, the word can be applied to refer to any foreigners, sometimes even those from Latin America, or at least from the richer countries of the continent. (People from the poorer countries have a different set of derogatory terms reserved for them.) At the same time, there is a clear image of a prototypical “gringo” — a white American tourist in a Hawaiian shirt (presumably because he assumes Brazil to be just like Hawaii), largely ignorant of the world around him, though at the same time smug and empowered to decide which country will be bombed next. Other foreigners can be then be “gringos” to an extent that they share in the attributes of the focal gringo.
148: The Portuguese court moved to Brazil in the early nineteenth century, fleeing first Napoleon and then the republican movement in Portugal, bringing to Brazil the Portuguese nobility which was largely absent there before.