Coffee
A hobbyist C-style language by an author known only as 'dingo', at version 0.98a by early 2004. It is known today from a single 99 Bottles of Beer program. It is not CoffeeScript.
Created by dingo (pseudonymous; real name not recorded)
Coffee is a small hobbyist programming language by an author who signed their work only as “dingo”. It had reached a version called 0.98a by early 2004. Almost everything known about it comes from one artefact: a 99 Bottles of Beer program submitted to 99-bottles-of-beer.net. There it was listed as entry 136 and filed as a “real language” rather than an esoteric one. The program’s header points to the author’s website. That site was a Flash cartoon page, and no copy of a Coffee compiler, interpreter or manual has been found in any archive.
Coffee is not CoffeeScript, the JavaScript-targeting language Jeremy Ashkenas began in December 2009. It is also not COFFEE, the scripting language of Maxon’s Cinema 4D. Both names come up whenever “Coffee” is searched, and both have been confused with this one (see A crowded name below).
History & Origins
The author and the site
The program’s header reads:
| |
TheBrownStuff.co.nr was a free domain from the .co.nr redirection service. Its earliest Wayback Machine capture, from 24 August 2003, shows a one-frame page titled “TheBrownStuff Internet Cartoons”, which advertised “Flash Cartoons, free to view and download” and edited joke images. The frame loaded dingo.windodesign.com/thebrownstuff/, a subdomain named after the same handle. The pages behind it were Flash movies (snakemenu.swf, later interface.swf), which the archive saved without any readable text. No page in the captures mentions Coffee.
In late September 2004 the redirect was pointed at caffeinecoder.com. The name suggests a coffee-themed identity, but nothing on the site says so. The CaffeineCoder portal announced itself as online on 9 November 2004. Its project page, captured in December 2004 and May 2005, lists only PHP web software: web file managers (DingoFTP2, dFtp3), forums, a photo gallery entered in the Zend PHP5 contest, a blog engine and a shopping cart. Coffee is not among them, and it is not mentioned in any archived news post or forum topic on the site. By March 2008 the domain had been re-registered by an unrelated developer, whose first post said they had found it available the previous December.
Dating the language
Two different dates attach to Coffee in the 99 Bottles archive, and the later one is misleading.
- 15 February 2004. The old, pre-database 99 Bottles site kept a hand-written changelog. On 15 February 2004 it records “Added Coffee — Anonymous”, in a batch of 25 changes logged that day. The same batch added CDC CPU COMPASS, Assembler (EDSAC) and EUPHORIA, and noted “600 examples are online”. Comparing the site’s C page before and after confirms this. A mirror capture from December 2003 has 42 entries without Coffee, and the March 2004 page has 44, the two new ones being Coffee and CDC CPU COMPASS.
- 20 April 2005. When 99 Bottles of Beer relaunched as a database-driven site in spring 2005, older programs were imported with a common stamp. Coffee’s entry reads “Date: 04/20/05”, but so do its alphabetical neighbours, COCOA (#135) and Cold Fusion (#139). That date records the migration, not the submission.
So Coffee existed, at version 0.98a, no later than February 2004. Its author’s domain dates from at least August 2003, so work on the language may well be older, but there is no evidence either way. This page uses 2004, the year of the earliest dated record.
The encyclopedia’s source catalogue lists Coffee as a 2009 object-oriented web language, with 2017 as its last commercial year. None of that is supported by the surviving record. The year, the “web” category and the object orientation all fit CoffeeScript, which suggests the two names were conflated at some point.
Design Philosophy
No specification, manual or statement of intent survives, so Coffee’s goals can’t be stated with confidence. The version number 0.98a suggests an author working towards a 1.0 release, but no later version is known. The one program is written in the familiar curly-brace style of C, Java and JavaScript. However, it names no language as an inspiration, so no influences are listed on this page. One of the entry’s reader comments made the same observation in 2008: “Looks to me like an excerpt from a java programm, except the var-word”.
Key Features
Without an implementation or documentation, the only honest way to describe Coffee is to report what is visible in the surviving code:
| |
Several things stand out:
- An unusual declaration form.
var i new int = 99;puts a declaration keyword (var), then the name, thennewwith a type, then an initialiser. No mainstream language spells a declaration this way. It seems to combine JavaScript’svarwith Java’snew, but whethernew intcreated an object, reserved storage or simply named a type is not recorded. - C-family control flow.
while,if/else, braces, semicolons and//line comments are used just as they are in C, Java or JavaScript. - Post-decrement inside an expression.
(i--)is used as a value inside a function argument, which implies C-style expression semantics. - A built-in
println. Output is a bareprintln(...)call, with no object or package prefix like Java’sSystem.out. - String concatenation with
+.i+" bottles of beer on the wall,"joins an integer and a string without an explicit conversion. That implies automatic number-to-string coercion, as in Java or JavaScript.
The program also has a probable bug. If i-- behaves as it does in C, Java and JavaScript, it yields the value before decrementing. The fourth line of every verse would then repeat the starting count (“99 bottles of beer on the wall” right after taking one down), not print 98. If Coffee’s -- instead decremented first, the counts would come out right but the verse for two bottles would end “1 bottles of beer on the wall.” Either way the output is slightly off. Whether Coffee’s -- really worked this way can’t be checked, because nothing survives that could run the program.
Nothing in the program is object-oriented: there are no classes, methods or objects. The “OOP” label in the source catalogue cannot be confirmed.
Evolution
There is no evidence of Coffee changing after its one appearance. The only version ever mentioned is 0.98a. No later program, update to the 99 Bottles entry, announcement or discussion of the language has been found. From late 2004 onward, the author’s archived output is all PHP web applications and Flash cartoons.
Current Relevance
Coffee is effectively extinct:
- No implementation survives. No download of a Coffee compiler or interpreter appears in any archived capture of TheBrownStuff.co.nr, dingo.windodesign.com or caffeinecoder.com. Readers asked about this too. In 2008 one commenter wrote, “Where can you get a compiler for this? The link in the source redirects to some other website that apparently has nothing to do with Coffee.” In 2009 another said, “they need to get a real link to this so people can use it!”
- No documentation survives. No manual or specification exists, and Coffee has no Esolang wiki or Wikipedia article.
- Its one public record is gone from the live web. The 99-bottles-of-beer.net domain no longer resolves. The Coffee entry and its five reader comments survive only in Wayback Machine captures. The last full capture, from November 2024, shows an average score of 2.93 from 14 votes.
A crowded name
“Coffee” and its variants have been used for several unrelated languages, and they are easy to mix up:
| Language | When | What it is |
|---|---|---|
| Coffee (this page) | by February 2004 | dingo’s hobbyist C-style language, version 0.98a, known from one 99 Bottles program |
| COFFEE (also written C.O.F.F.E.E.) | Cinema 4D era | The built-in scripting language of Maxon’s Cinema 4D 3D software, suggested by a 2009 reader comment on the 99 Bottles entry |
| CoffeeScript | 13 December 2009 (first commit); 1.0.0 on 24 December 2010 | Jeremy Ashkenas’s language that compiles to JavaScript, whose year and web focus match the catalogue data wrongly attached to this entry |
Why It Matters
Coffee is a good example of how a language can be known by name and by a single program yet impossible to run. The 99 Bottles of Beer archive kept one program for more than twenty years. The author’s own sites, a free redirect domain, a hosted subdomain and a personal portal, lasted about four years between them. The Coffee entry also shows how catalogue metadata drifts. Two different dates recorded on one site, a name that collides with a much better-known language, and an eventual reclassification as a 2009 object-oriented web language all compounded one another until the listing described something else. The surviving record supports only this: a small C-like language by a pseudonymous author, at version 0.98a by February 2004, never documented and never seen again.
Timeline
Notable Uses & Legacy
99 Bottles of Beer project
Entry 136 on 99-bottles-of-beer.net, an 18-line song program by the language's author, is the only known surviving Coffee source code. It collected five reader comments and an average score of 2.93 from 14 votes