dBase
This article needs additional citations for verification. (February 2021) |
Paradigm | Imperative, declarative |
---|---|
Developer | Cecil Wayne Ratliff[1][2] |
First appeared | 1979 |
Stable release | dBASE 2019
/ 2019 |
Implementation language | C |
OS | Microsoft DOS Microsoft Windows |
License | Proprietary |
Website | www |
Influenced by | |
RETRIEVE, JPLDIS | |
Influenced | |
Clipper, WordTech products, Harbour. FoxBASE+, FoxPro, Visual FoxPro, VP-Info |
dBase (also stylized dBASE) was one of the first database management systems for microcomputers and the most successful in its day.[3] The dBase system included the core database engine, a query system, a forms engine, and a programming language that tied all of these components together.
Originally released as Vulcan for PTDOS in 1978, the CP/M port caught the attention of Ashton-Tate in 1980. They licensed it, re-released it as dBASE II, and later ported it to IBM PC computers running DOS. On the PC platform in particular, dBase became one of the best-selling software titles for a number of years. A major upgrade was released as dBase III and ported to a wider variety of platforms, including UNIX and VMS. By the mid-1980s, Ashton-Tate was one of the "big three" software publishers in the early business-software market,[4] along with Lotus Development and WordPerfect.[4]
Starting in the mid-1980s, several companies produced their own variations on the dBase product and especially the dBase programming language. These included FoxBASE+ (later renamed FoxPro), Clipper, and other so-called xBase products. Many of these were technically stronger than dBase, but could not push it aside in the market.[5] This changed with the poor reception of dBase IV, whose design and stability were so lacking that many users switched to other products.[6]
In the early 1990s, xBase products constituted the leading database platform for implementing business applications. The size and impact of the xBase market did not go unnoticed, and within one year, the three top xBase firms were acquired by larger software companies:
- Borland purchased Ashton-Tate[7][8]
- Microsoft bought Fox Software[9][10]
- Computer Associates acquired Nantucket[11]
By the opening decade of the 21st century, most of the original xBase products had faded from prominence and many had disappeared entirely. Products known as dBase[12] still exist, owned by dBase LLC.[13][14]
History
[edit]Origins
[edit]In the late 1960s, Fred Thompson at the Jet Propulsion Laboratory (JPL) was using a Tymshare product named RETRIEVE to manage a database of electronic calculators, which were at that time very expensive products. In 1971, Thompson collaborated with Jack Hatfield, a programmer at JPL, to write an enhanced version of RETRIEVE, which became the JPLDIS project. JPLDIS was written in FORTRAN on the UNIVAC 1108 mainframe, and was presented publicly in 1973. When Hatfield left JPL in 1974, Jeb Long took over his role.[15]
While working at JPL as a contractor, C. Wayne Ratliff entered the office football pool. He had no interest in the game as such, but felt he could win the pool by processing the post-game statistics found in newspapers.[16] In order to do this, he turned his attention to a database system and, by chance, came across the documentation for JPLDIS. He used this as the basis for a port to PTDOS on his kit-built IMSAI 8080 microcomputer, and called the resulting system Vulcan (after the home planet of Mr. Spock on Star Trek).[17][18][19]
Ashton-Tate
[edit]George Tate and Hal Lashlee had built two successful start-up companies: Discount Software, which was one of the first to sell PC software programs through the mail to consumers, and Software Distributors, which was one of the first wholesale distributors of PC software in the world. They entered into an agreement with Ratliff to market Vulcan, and formed Ashton-Tate[20] (the name Ashton was chosen purely for marketing reasons) to do so. Ratliff ported Vulcan from PTDOS to CP/M. Hal Pawluk, who handled marketing for the nascent company, decided to change the name to the more business-like "dBase". Pawluk devised the use of lower case "d" and all-caps "BASE" to create a distinctive name. Pawluk suggested calling the new product version two ("II") to suggest it was less buggy than an initial release. dBase II was the result and became a standard CP/M application along with WordStar and SuperCalc.[21]
In 1981, IBM commissioned a port of dBase for the then-in-development PC. The resultant program was one of the initial pieces of software available when the IBM PC went on sale in the fall of 1981. dBase was one of a few "professional" programs on the platform then, and became a huge success. The customer base included not only end-users, but an increasing number of "value added resellers", or VARs, who purchased dBase, wrote applications with it, and sold the completed systems to their customers. The May 1983 release of dBase II RunTime further entrenched dBase in the VAR market by allowing the VARs to deploy their products using the lower-cost RunTime system.[citation needed]
Although some critics stated that dBase was difficult to learn, its success created many opportunities for third parties. By 1984, more than 1,000 companies offered dBase-related application development, libraries of code to add functionality, applications using dBase II Runtime, consulting, training, and how-to books. A company in San Diego (today known as Advisor Media) premiered a magazine devoted to the professional use of dBase, Data Based Advisor; its circulation exceeded 35,000 after eight months.[22] All of these activities fueled the rapid rise of dBase as the leading product of its type.[23][24]
dBase III
[edit]As platforms and operating systems proliferated in the early 1980s, the company found it difficult to port the assembly language-based dBase to target systems. This led to a rewrite of the platform in the C programming language, using automated code conversion tools. The resulting code worked, but was essentially undocumented[why?] and inhuman in syntax[how?], a problem that would prove to be serious in the future.[citation needed]
In May 1984, the rewritten dBase III was released. Although reviewers widely panned its lowered performance, the product was otherwise well reviewed. After a few rapid upgrades, the system stabilized and was once again a best-seller throughout the 1980s, and formed the famous "application trio" of PC compatibles (dBase, Lotus 123, and WordPerfect). By the fall of 1984, the company had over 500 employees and was taking in US$40 million a year in sales (equivalent to $117 million in 2023), the vast majority from dBase products.[citation needed]
Cloning
[edit]There was also an unauthorized clone of dBase III called Rebus in the Soviet Union. Its adaptation to the Russian language was reduced to the mechanical replacement of the name, the russification of the help files and the correction of the sorting tables for the Russian language.
dBase IV
[edit]Introduced in 1988,[25] after delays,[26] dBase IV had "more than 300 new or improved features". By then, FoxPro had made inroads, and even dBase IV's support for Query by Example and SQL were not enough.[citation needed]
Along the way, Borland, which had bought Ashton-Tate, brought out a revised dBase IV in 1992[27] but with a focus described as "designed for programmers" rather than "for ordinary users".[citation needed]
Recent version history
[edit]This section contains content that is written like an advertisement. (March 2022) |
Version | Released | Notes |
---|---|---|
dBASE PLUS 9 | June 18, 2014 | Additional key features of dBASE PLUS 9 include: dComplete - an Intelli-Sense like feature for the dBASE language; dBlocks - add dBASE snippets of code in a couple of key strokes, dLocator - now find the information across multiple files; dBabel - now support for color-highlighting HTML, XML, SQL, JavaScript and others; dExtract - now export your source code into HTML, RTF, PDF, LaTeX, and XML; dbfExplorer - now reveal the file properties inside the Windows Explorer interface; Updated Editor - it includes Code Folding, Auto Indent, End of Line markers, Indentation Guides, Line Numbers, and other features, 60% more keyboard shortcuts; Lookup Data – royalty free data that includes stock, geography, and other common types of lookup data; and Catalyst SocketTools ActiveX controls and libraries help developers create Internet-enabled applications quickly and easily.[28] |
dbfExport 2 | April 17, 2015 | The next major release of dbfExport 2, from dBase LLC.[29] Can convert dBASE data from .dbf files to CSV, HTML, Microsoft Excel 2003 and below, Microsoft Excel 2008 and above, or XML. |
dbDOS PRO 4.0 | May 6, 2015 | dBase, LLC Unveils New Version of dbDOS PRO 4![30] dbDOS PRO 4, the latest version of the best-selling solution for supporting MS-DOS based applications on Windows Vista and above operating systems. |
dbDOS PRO 4.0N | May 18, 2015 | dBase, LLC Introduces dbDOS PRO 4N – Supports Multi-User MS-DOS Applications, on Windows Vista and above operating systems.[31] Added network communications. |
dBASE PLUS 10 | July 21, 2015 | Additional key features of dBASE PLUS 10 include: A new set of Native Components, the new data-aware GridEx (dGrid) and ListView components. An updated Compiler, which allows it to compile larger files, more symbols and is 30% faster. dBASE PLUS 10 introduces a new Debugger – called dBugger. The Embedded Runtime gives the ability to build a single .exe with the dBASE PLUS 10 Runtime embedded into the .exe. Also included, is the new Resource Handling, which now works with both .BMP and .PNG graphic types from resource .dll(s). In addition, dBASE PLUS 10 includes over 15,000 royalty-free images to use in applications. The product also introduced the updated dComplete 2.0, which adds significant code-completion functionality.[32] |
dbDOS PRO 5+N | July, 2016 | dBase, LLC Introduces dbDOS PRO 5+N – dbDOS PRO 5+N, the latest version of the MS-DOS-based virtual machine (VM) to run DOS based applications on Windows 64-bit operating systems.[33] |
dBASE PLUS 11 | January, 2017 | Additional New features of dBASE PLUS 11 include: Touch and Tablet support – dBASE PLUS 11 now supports touch and gesturing with enhanced support for tablets. Assist Technologies. dmAssist – the data module designer introduces a much easier interface for building and working with data modules. The new dmAssist works with both data-layers of the BDE and ADO technologies. dBASE PLUS 11 makes building data-aware web applications easier with a new responsive web framework that works on both Apache and Microsoft IIS technologies. dmOutput – the new dBASE PLUS 11 allows generating output from data modules. dmC.R.U.D. – the new dBASE PLUS 11 allows generating a starter application. dBASE PLUS 11 includes seven new open source fonts that are designed to make code easier to read and print. databuttons.cc – the standard data-aware components have been enhanced to support components with graphics 24x24 through 64x64. Windows Theming – dBASE PLUS 11 now supports 10 Microsoft Windows themes.[34] |
dBASE product range
[edit]dBase, LLC products
[edit]- dBASE PLUS: A Windows-based database.
- dBASE 2019: Successor of dBASE PLUS 12. Requires Windows Vista or later. Builds 32-bit Windows applications, supports 32-bit and 64-bit Windows.
- dBASE CLASSIC:[35] dBASE V for DOS without DOS emulator, originally found in dBASE PLUS 9. Also includes original documentation included in the installation in PDF format.
- dbDOS: A MS-DOS emulator.
- dbDOS PRO: Successor of dbDOS 1.5.1, starts with version 2.
- dbDOS Open Source: Open source version of dbDOS.
- dbDOSv: Successor of dbDOS PRO 7.
- dbDOSv 2.x: Successor of dbDOSv 1.x.
- dbfUtilities: .dbf file processing utilities.
- dbfCompare: Compares differences between tables.
- dbfExport: Converts .dbf table to other file formats.
- dbfImport: Converts other file formats into .dbf format.
- dbfInspect: Read, modify, insert, delete, pack, and print using any dBASE IV and later tables.
SQL Utilities
[edit]- dumpSQL: Extracts all of the records of an existing table into a new table in the supported file formats.
- moveSQL: Transfers all of the records of an existing table into a new table in the supported database formats.
dBase / xBase programming language
[edit]For handling data, dBase provided detailed procedural commands and functions to[36]
- open and traverse records in data files (e.g., USE, SKIP, GO TOP, GO BOTTOM, and GO recno),
- manipulate field values (REPLACE and STORE), and
- manipulate text strings (e.g., STR() and SUBSTR()), numbers, and dates.
dBase is an application development language and integrated navigational database management system which Ashton-Tate labeled as "relational" but it did not meet the criteria defined by Dr. Edgar F. Codd's relational model. It used a runtime interpreter architecture, which allowed the user to execute commands by typing them in a command line "dot prompt".[citation needed] Similarly, program scripts (text files with PRG extensions) ran in the interpreter (with the DO command).[citation needed]
Over time, Ashton-Tate's competitors introduced so-called clone products and compilers that had more robust programming features such as user-defined functions (UDFs), arrays for complex data handling. Ashton-Tate and its competitors also began to incorporate SQL, the ANSI/ISO standard language for creating, modifying, and retrieving data stored in relational database management systems.[citation needed]
Eventually, it became clear that the dBase world had expanded far beyond Ashton-Tate. A "third-party" community formed, consisting of Fox Software, Nantucket, Alpha Software, Data Based Advisor Magazine, SBT and other application development firms, and major developer groups. Paperback Software launched the flexible and fast VP-Info with a unique built-in compiler. The community of dBase variants sought to create a dBase language standard, supported by IEEE committee X3J19 and initiative IEEE 1192. They said "xBase" to distinguish it from the Ashton-Tate product.[citation needed]
Ashton-Tate saw the rise of xBase as an illegal threat to its proprietary technology. In 1988 they filed suit against Fox Software and Santa Cruz Operation (SCO) for copying dBase's "structure and sequence" in FoxBase+ (SCO marketed XENIX and UNIX versions of the Fox products). In December 1990, U.S. District judge Terry Hatter Jr. dismissed Ashton-Tate's lawsuit and invalidated Ashton-Tate's copyrights for not disclosing that dBase had been based, in part, on the public domain JPLDIS.[37] In October 1991, while the case was still under appeal, Borland International acquired Ashton-Tate, and as one of the merger's provisions the U.S. Justice Department required Borland to end the lawsuit against Fox and allow other companies to use the dBase/xBase language without the threat of legal action.[citation needed]
By the end of 1992, major software companies raised the stakes by acquiring the leading xBase products. Borland acquired Ashton-Tate's dBase products (and later WordTech's xBase products), Microsoft acquired Fox Software's FoxBASE+ and FoxPro products, and Computer Associates acquired Nantucket's Clipper products. Advisor Media built on its Data Based Advisor magazine by launching FoxPro Advisor and Clipper Advisor (and other) developer magazines and journals, and live conferences for developers. However, a planned dBase Advisor Magazine was aborted due to the market failure of dBase IV.[citation needed]
By the year 2000, the xBase market had faded as developers shifted to new database systems and programming languages. Computer Associates (later known as CA) eventually dropped Clipper. Borland restructured and sold dBase. Of the major acquirers, Microsoft stuck with xBase the longest, evolving FoxPro into Visual FoxPro, but the product is no longer offered. In 2006 Advisor Media stopped its last-surviving xBase magazine, FoxPro Advisor. The era of xBase dominance has ended, but there are still xBase products. The dBase product line is now[when?] owned by dBase LLC which currently[date missing] sells dBASE PLUS 12.3 and a DOS-based dBASE CLASSIC (dbDOS to run it on 64-bit Windows).[38][39]
Some open source implementations are available, such as Harbour, xHarbour, and Clip.[citation needed]
In 2015, a new member of the xBase family was born: the XSharp (X#) language, maintained as an open source project with a compiler, its own IDE, and Microsoft Visual Studio integration. XSharp produces .NET assemblies and uses the familiar xBase language. The XSharp product was originally created by a group of four enthusiasts who have worked for the Vulcan.NET project in the past. The compiler is created on top of the Roslyn compiler code, the code behind the C# and VB compilers from Microsoft.[citation needed]
Programming examples
[edit]Today, implementations of the dBase language have expanded to include many features targeted for business applications, including object-oriented programming, manipulation of remote and distributed data via SQL, Internet functionality, and interaction with modern devices.[citation needed]
The following example opens an employee table ("empl"), gives every manager who supervises 1 or more employees a 10-percent raise, and then prints the names and salaries.
USE empl
REPLACE ALL salary WITH salary * 1.1 FOR supervisors > 0
LIST ALL fname, lname, salary TO PRINT
* (comment: reserved words shown in CAPITALS for illustration purposes)
Note how one does not have to keep mentioning the table name. The assumed ("current") table stays the same until told otherwise. Because of its origins as an interpreted interactive language, dBase used a variety of contextual techniques to reduce the amount of typing needed. This facilitated incremental, interactive development but also made larger-scale modular programming difficult. A tenet of modular programming is that the correct execution of a program module must not be affected by external factors such as the state of memory variables or tables being manipulated in other program modules. Because dBase was not designed with this in mind, developers had to be careful about porting (borrowing) programming code that assumed a certain context and it would make writing larger-scale modular code difficult. Work-area-specific references were still possible using the arrow notation ("B->customer") so that multiple tables could be manipulated at the same time. In addition, if the developer had the foresight to name their tables appropriately, they could clearly refer to a large number of tables open at the same time by notation such as ("employee->salary") and ("vacation->start_date"). Alternatively, the alias command could be appended to the initial opening of a table statement which made referencing a table field unambiguous and simple. For example. one can open a table and assign an alias to it in this fashion, "use EMP alias Employee", and henceforth, refer to table variables as "Employee->Name".
Another notable feature is the re-use of the same clauses for different commands. For example, the FOR clause limits the scope of a given command. (It is somewhat comparable to SQL's WHERE clause.) Different commands such as LIST, DELETE, REPLACE, BROWSE, etc. could all accept a FOR clause to limit (filter) the scope of their activity. This simplifies the learning of the language.[citation needed]
dBase was also one of the first business-oriented languages to implement string evaluation.[citation needed]
i = 2
myMacro = "i + 10"
i = &myMacro
* comment: i now has the value 12
Here the "&" tells the interpreter to evaluate the string stored in "myMacro" as if it were programming code. This is an example of a feature that made dBase programming flexible and dynamic, sometimes called "meta ability" in the profession. This could allow programming expressions to be placed inside tables, somewhat reminiscent of formulas in spreadsheet software.[citation needed]
However, it could also be problematic for pre-compiling and for making programming code secure from hacking. But, dBase tended to be used for custom internal applications for small and medium companies where the lack of protection against copying, as compared to compiled software, was often less of an issue.[citation needed]
File formats
[edit]A major legacy of dBase is its .dbf file format, which has been adopted in a number of other applications. For example, the shapefile format, developed by ESRI for spatial data in its PC ArcInfo geographic information system, uses .dbf files to store feature attribute data.[40]
Microsoft recommends saving a Microsoft Works database file in the dBase file format so that it can be read by Microsoft Excel.[41]
A package is available for Emacs to read xbase files.[42]
LibreOffice and OpenOffice Calc can read and write all generic dbf files.[43][44]
dBase's database system was one of the first to provide a header section for describing the structure of the data in the file.[citation needed] This meant that the program no longer required advance knowledge of the data structure, but rather could ask the data file how it was structured. There are several variations on the .dbf file structure, and not all dBase-related products and .dbf file structures are compatible. VP-Info is unique in that it can read all variants of the dbf file structure.[45]
A second filetype is the .dbt file format for memo fields. While character fields are limited to 254 characters each, a memo field is a 10-byte pointer into a .dbt file which can include a much larger text field. dBase was very limited in its ability to process memo fields, but some other xBase languages such as Clipper treated memo fields as strings just like character fields for all purposes except permanent storage.[citation needed]
dBase uses .ndx files for single indexes, and .mdx (multiple-index) files for holding between 1 and 48 indexes. Some xBase languages such as VP-Info include compatibility with .ndx files while others use different file formats such as .ntx used by Clipper and .idx/.cdx used by FoxPro or FlagShip. Later iterations of Clipper included drivers for .ndx, .mdx, .idx and .cdx indexes.[citation needed]
Reception
[edit]Jerry Pournelle in July 1980 called Vulcan "infuriatingly excellent" because the software was powerful but the documentation was poor. He praised its speed and sophisticated queries, but said that "we do a lot of pounding at the table and screaming in rage at the documentation".[18]
References
[edit]- ^ "The FoxPro History - Interview with Wayne Ratliff". www.foxprohistory.org.
- ^ Lammers, Susan M (1986). "C. Wayne Ratliff". Programmers at Work. Microsoft Press. p. 110. ISBN 0-914845-71-3.
- ^ Lazzareschi, Carla (December 15, 1990). "The Creator of dBase Software Maintains That It Is Original". Los Angeles Times. Retrieved April 26, 2017.
- ^ a b Zonana, Victor F. (May 10, 1987). "ASHTON-TATE : Confronting a Hard Life in the World of Software". Los Angeles Times. Archived from the original on 3 December 2015.
- ^ Chapman, Merrill R. (2006), "The Horror, the Horror", In Search of Stupidity: Over Twenty Years of High-Tech Marketing Disasters, Second Edition, Apress, pp. 81–83, ISBN 1-59059-721-4
- ^ "Worst tech mergers and acquisitions: Novell and Unix, Borland Ashton-Tate". ZDNet.
In 1995, Novell sold the operating system to SCO. ... In 1991, Ashton-Tate merged with Borland
- ^ Lazzareschi, Carla (11 July 1991). "Borland to Acquire Ashton-Tate in a $439-Million Deal". Los Angeles Times. Archived from the original on 12 December 2015.
- ^ Pollack, Andrew (March 25, 1992). "Microsoft to Try New Market By Acquiring Fox Software". The New York Times. Archived from the original on 23 April 2015.
- ^ Weber, Jonathan (March 25, 1992). "Microsoft to Buy Fox Software to Get Database Line". Los Angeles Times. Archived from the original on 17 October 2015.
In its first major acquisition, software powerhouse Microsoft Corp. announced Tuesday that it will buy privately held Fox Software for about $173 million
- ^ Brownstein, Mark (May 11, 1992). "CA acquisition of Nantucket consolidates XBase arena". InfoWorld. Vol. 14, no. 19. p. 8.
- ^ "dBASE® 2019". store.dbase.com. Retrieved 2022-07-13.
- ^ "About Us". store.dbase.com. Retrieved 2022-07-13.
- ^ "dBASE® the Home of all things dBASE®". dBase.com. Retrieved 2022-07-13.
- ^ Susan Lammers, "How it Started - JPLDIS: How Came The Idea", The History of FoxPro
- ^ Lammers 1986, p. 113.
- ^ Susan Lammers, "Interview with Wayne Ratliff", The History of FoxPro
- ^ a b Pournelle, Jerry (July 1980). "Omikron TRS-80 Boards, NEWDOS+, and Sundry Other Matters". BYTE. Vol. 5, no. 7. p. 198. Retrieved 2013-10-18.
- ^ Lammers 1986, p. 114.
- ^ Lammers 1986, pp. 115–116.
- ^ "Ashton-Tate People", The History of FoxPro
- ^ Chin, Kathy (1984-04-09). "Firms grab for dBase II gold". InfoWorld. Vol. 6, no. 15. pp. 72–73. Retrieved 2015-02-04.
- ^ O'Reilly, Richard (26 September 1994). "dBASE 5.0 for Windows has a Big Engine, but Lacks Speed". The Washington Post. Retrieved 8 July 2023.
- ^ Magid, Lawrence (25 February 1988). "Ashton-Tate has a Likely Winner". Los Angeles Times. Retrieved 8 February 2023.
- ^ "New user interface for Ashton's dBase IV". CBRonline (Computer Business Review). February 17, 1988 – via TechMonitor.
- ^ Lewis, Peter H. (January 15, 1989). "At Long Last, dBase IV Arrives". The New York Times.
- ^ O'Reilly, Richard (April 23, 1992). "The Future of Database Programs". Los Angeles Times.
- ^ "New dBASE PLUS 9 includes new tools to make developing great programs, applications, and solutions easier than ever before!".
- ^ "Introducing dbfExport™ 2 the easiest way to export your dBASE data ever!".
- ^ "dBase, LLC Unveils New Version of dbDOS™ PRO 4!".
- ^ "dBase, LLC Introduces dbDOS™ PRO 4N – Supports Multi-User MS-DOS Applications!".
- ^ "The New dBASE PLUS 10 includes new tools and functionality to make developing great data-driven Windows® and Web based applications a breeze!".
- ^ "dBase, LLC Introduces dbDOS PRO 5+N".
- ^ "All Hail the new dBASE™ PLUS 11!".
- ^ dBASE CLASSIC
- ^ Littlefield, Warren M. (1993). DBASE - From the Dot Prompt: An Introduction to Structured Programming using dBase IV. Albany: State University of New York Press. ISBN 0791417808. LCCN 93-18937.
- ^ Daly, James (17 December 1990). "Judge kills Dbase copyright". InfoWorld. Vol. XXIV, no. 51. pp. 1, 96.
- ^ "dBASE". Slashdot. Retrieved 2022-08-09.
- ^ "Features indepth dbase".
- ^ "ESRI Shapefile". www.loc.gov. 2020-05-29. Retrieved 2021-03-30.
- ^ "Troubleshoot converting file formats - Excel - Office.com". Archived from the original on 5 April 2011. Retrieved 2018-09-11.
- ^ "xbase mode". SourceForge. 21 February 2013. Retrieved 2018-09-11.
- ^ "Importing and Exporting dBASE Files - LibreOffice Help". help.libreoffice.org. Retrieved 2018-09-11.
- ^ "Connecting dBase (xBase) - Apache OpenOffice Wiki". wiki.openoffice.org. Retrieved 2018-09-11.
- ^ Bursten, Sidney L (1990-12-16). Importing Data from Foreign File Formats and Other Tasks (Technical report). The Programmer's Workshop.