Daniel H. H. Ingalls

dblp:65/3115 · also Dan H. H. Ingalls, Dan Ingalls, Daniel Ingalls · DBLP profile ↗
← Back
11ranked-venue papers
7as first author
0since 2021 · last 2020
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 9 · 7 first-authorArtificial intelligence and machine learning · 1Graphics, computer vision, multimedia, augmented reality and games · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
6 papers
Runtime systems and virtual machines · 55% Programming languages and type systems · 42% Operating systems · 3%
Human-computer interaction and pervasive computing
1 paper
User interface design and tools · 100%

Topics — the 15 heaviest of 15, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Runtime systems and virtual machines
garbage collection
0.011997
Back to the Future: The Story of Squeak - A Usable Smalltalk Written in Itself · OOPSLA 1997
Runtime systems and virtual machines › garbage collection
incremental garbage collection
0.011997
Back to the Future: The Story of Squeak - A Usable Smalltalk Written in Itself · OOPSLA 1997
Programming languages and type systems
language implementation
0.011997
Back to the Future: The Story of Squeak - A Usable Smalltalk Written in Itself · OOPSLA 1997
Runtime systems and virtual machines
virtual machine implementation
0.011997
Back to the Future: The Story of Squeak - A Usable Smalltalk Written in Itself · OOPSLA 1997
Programming languages and type systems
object-oriented programming
0.031986
A Simple Technique for Handling Multiple Polymorphism · OOPSLA 1986
Multiple Inheritance in Smalltalk-BO · AAAI 1982
The Smalltalk-76 Programming System · POPL 1978
Programming languages and type systems
type systems
0.021988
Fabrik: A Visual Programming Environment · OOPSLA 1988
A Type Declaration and Inference System for Smalltalk · POPL 1982
User interface design and tools › visual programming
visual programming environment
0.011988
Fabrik: A Visual Programming Environment · OOPSLA 1988
Programming languages and type systems › type systems
polymorphism
0.011986
A Simple Technique for Handling Multiple Polymorphism · OOPSLA 1986
Programming languages and type systems › object-oriented programming
multiple inheritance
0.011982
Multiple Inheritance in Smalltalk-BO · AAAI 1982
Programming languages and type systems
type inference
0.011982
A Type Declaration and Inference System for Smalltalk · POPL 1982
Runtime systems and virtual machines
interpreter
0.011978
The Smalltalk-76 Programming System · POPL 1978
Operating systems › resource management
memory management
0.011978
The Smalltalk-76 Programming System · POPL 1978
Operating systems › resource management › memory management
virtual memory
0.011978
The Smalltalk-76 Programming System · POPL 1978
Programming languages and type systems
language design
0.011982
A Type Declaration and Inference System for Smalltalk · POPL 1982
Programming languages and type systems › object-oriented programming
smalltalk
0.011982
A Type Declaration and Inference System for Smalltalk · POPL 1982

Methods — techniques the papers use, named apart from their topics

translator to c · 0.0bitblt · 0.0object-oriented components · 0.0bidirectional dataflow · 0.0object-oriented design · 0.0object-oriented programming · 0.0interpreter · 0.0
YearPublicationVenuePosition
2020 The evolution of Smalltalk: from Smalltalk-72 through Squeak
abstract
This paper presents a personal view of the evolution of six generations of Smalltalk in which the author played a part, starting with Smalltalk-72 and progressing through Smalltalk-80 to Squeak and Etoys. It describes the forces that brought each generation into existence, the technical innovations that characterized it, and the growth in understanding of object-orientation and personal computing that emerged. It summarizes what that generation achieved and how it affected the future, both within the evolving group of developers and users, and in the outside world. The early Smalltalks were not widely accessible because they ran only on proprietary Xerox hardware; because of this, few people have experience with these important historical artifacts. To make them accessible, the paper provides links to live simulations that can be run in present-day web browsers. These simulations offer the ability to run pre-defined scripts, but also allow the user to go off-script, browse the details of the implementation, and try anything that could be done in the original system. An appendix includes anecdotal and technical aspects of how examples of each generation of Smalltalk were recovered, and how order was teased out of chaos to the point that these old systems could be brought back to life.
Daniel H. H. Ingalls
Proc. ACM Program. Lang.1
2020 Two decades of live coding and debugging of virtual machines through simulation
abstract
Summary OpenSmalltalk‐VM is a virtual machine (VM) for languages in the Smalltalk family (eg, Squeak and Pharo), which is itself written in a subset of Smalltalk that can easily be translated to C. VM development is done in Smalltalk, an activity we call “simulation.” The production VM is then derived by translating the core VM code to C. As a result, two execution models coexist: simulation, where the Smalltalk code is executed on top of a Smalltalk VM, and production, where the same code is compiled to an executable through a C compiler. The whole VM execution can be simulated: the heap is represented as a huge byte array, the VM code is executed as Smalltalk, and the native code generated by the just‐in‐time (JIT) compiler is executed by a processor simulator. All the Smalltalk development tools, such as the debugger, are then available while simulating. In addition, in simulation, it is also possible to use debugging features such as single stepping in the machine code generated by the JIT compiler. The Smalltalk development tools combined with the simulation debugging features provide developers with a productive environment in which to extend and debug the VM. In this article, we detail the VM simulation infrastructure and report our experiences developing and debugging VM features within it such as the garbage collector and the JIT compiler.
Daniel H. H. Ingalls, Eliot Miranda, Clément Béra, Elisa Gonzalez Boix
Softw. Pract. Exp.1
2015 The Ignite Distributed Collaborative Scientific Visualization System
abstract
We describe the Ignite Distributed Collaborative Scientific Visualization System (IDCVS), a system which permits real-time interaction and visual collaboration around large data sets, with an initial emphasis on scientific data. The IDCVS offers such a collaborative environment, with real-time interaction on any device between users separated across the wide area. It provides seamless interaction and immediate updates even under heavy load and when users are widely separated: the design goal was to fetch a data set consisting of 30,000 points from a server and render it within 150ms, for a user anywhere in the world, and reflect changes made by a user in one location to all other users within a bound provided by network latency. The system was demonstrated successfully on a significant worldwide air pollution data set, with values on 10, 25, 50, and 100km worldwide grids, monthly over an 18-year period. It was demonstrated on a wide variety of clients, including laptop, tablet, and smartphone.
Sushil Bhojwani, Matt Hemmings, Daniel H. H. Ingalls, Jens Lincke, Robert Krahn, David John Lary, Patrick C. McGeer, Glenn Ricart, Marko Röder, Yvonne Coady, Ulrike Stege
CloudCom3
2014 SqueakJS: a modern and practical smalltalk that runs in any browser
abstract
We report our experience in implementing SqueakJS, a bit-compatible implementation of Squeak/Smalltalk written in pure JavaScript. SqueakJS runs entirely in the Web browser with a virtual filesystem that can be directed to a server or client-side storage. Our implementation is notable for simplicity and performance gained through adaptation to the host object memory and deployment leverage gained through the Lively Web development environment. We present several novel techniques as well as performance measurements for the resulting virtual machine. Much of this experience is potentially relevant to preserving other dynamic language systems and making them available in a browser-based environment.
Bert Freudenberg, Daniel H. H. Ingalls, Tim Felgentreff, Tobias Pape, Robert Hirschfeld
DLS2
2008 The Lively Kernel: just for fun, let's take JavaScript seriously
abstract
The Sun Labs Lively Kernel is a new approach to Web programming. It provides a complete platform for Web applications, including dynamic graphics, network access, and development tools, and requires nothing more than available web browsers. We call the system "lively" for three reasons. It comes live off a web page. There is no installation. The entire system is written in JavaScript, and it becomes active as soon as the page is loaded by a browser. It can change itself and create new content. The Lively Kernel includes a basic graphics editor that allows it to alter and create new graphical content, and also a simple IDE that allows it to alter and create new applications. It comes with a basic library of graphical and computational components, and these, as well as the kernel, can be altered and extended on the fly. It can save new artifacts, even clone itself, onto new web pages. The kernel includes WebDAV support for browsing and extending remote file systems, and thus has the ability to save its objects and "worlds" (applications) as new active Web pages. The Lively Kernel uses only existing Web standards. The implementation and user language is JavaScript, known by millions and supported in every browser. The graphics APIs are built upon SVG (Scalable Vector Graphics), also available in major browsers. The network protocols used are asynchronous HTTP and WebDAV. The speaker will demonstrate the Lively Kernel and discuss various aspects of JavaScript as a programming language.
Daniel H. H. Ingalls
DLS1
1997 Back to the Future: The Story of Squeak - A Usable Smalltalk Written in Itself
abstract
Squeak is an open, highly-portable Smalltalk implementation whose virtual machine is written entirely in Smalltalk, making it easy to. debug, analyze, and change. To achieve practical performance, a translator produces an equivalent C program whose performance is comparable to commercial Smalltalks.Other noteworthy aspects of Squeak include: a compact object format that typically requires only a single word of overhead per object; a simple yet efficient incremental garbage collector for 32-bit direct pointers; efficient bulk-mutation of objects; extensions of BitBlt to handle color of any depth and anti-aliased image rotation and scaling; and real-time sound and music synthesis written entirely in Smalltalk.
Daniel H. H. Ingalls, Ted Kaehler, John Maloney, Scott Wallace 0002, Alan C. Kay
OOPSLA1
1988 Fabrik: A Visual Programming Environment
abstract
Fabrik is a visual programming environment - a kit of computational and user-interface components that can be “wired” together to build new components and useful applications. Fabrik diagrams utilize bidirectional dataflow connections as a shorthand for multiple paths of flow. Built on object-oriented foundations. Fabrik components can compute arbitrary objects as outputs. Music and animation can be programmed in this way and the user interface can even be extended by generating graphical structures that depend on other data. An interactive type system guards against meaningless connections. As with simple dataflow, each Fabrik component can be compiled into an object with access methods corresponding to each of the possible paths of data propagation.
Daniel H. H. Ingalls, Scott Wallace 0002, Yu-Ying Chow, Frank Ludolph, Ken Doyle
OOPSLA1
1986 A Simple Technique for Handling Multiple Polymorphism
abstract
Certain situations arise in programming that lead to multiply polymorphic expressions, that is, expressions in which several terms may each be of variable type. In such situations, conventional object-oriented programming practice breaks down, leading to code which is not properly modular. This paper describes a simple approach to such problems which preserves all the benefits of good object-oriented programming style in the face of any degree of polymorphism. An example is given in Smalltalk-80 syntax, but the technique is relevant to all object-oriented languages.
Daniel H. H. Ingalls
OOPSLA1
1982 Multiple Inheritance in Smalltalk-BO
Alan Borning, Daniel H. H. Ingalls
AAAI2
1982 A Type Declaration and Inference System for Smalltalk
abstract
An experimental system for declaring and inferring type in Smalltalk is described. (In the current Smalltalk language, the programmer supplies no type declarations.) The system provides the benefits of type declaration in regard to compile-time checking and documentation, while still retaining Smalltalk's flexibility. A type hierarchy, which is integrated with the existing Smalltalk class hierarchy, allows one type to inherit the traits of another type. A type may also have parameters, which are in turn other types.
Alan Borning, Daniel H. H. Ingalls
POPL2
1978 The Smalltalk-76 Programming System
abstract
This paper describes a programming system based on the metaphor of communicating objects. Experience with a running system shows that this model provides flexibility, modularity and compactness. A compiled representation for the language is presented, along with an interpreter suitable for microcoding. The object-oriented model provides naturally efficient addressing; a corresponding virtual memory is described which offers dense utilization of resident space.
Daniel H. H. Ingalls
POPL1