Allen Wirfs-Brock

wirfs-brock.com · Personal blog · on HN since 2009

Allen Wirfs-Brock, a language implementer and JavaScript standards editor, writes about Smalltalk and JavaScript history and language design.

What HN saysCommenters link him as a firsthand source who was there at the beginning, and point to his responses and his long JavaScript history PDF.
40HN people shared it
15linked it in comments
32stories submitted
606story points
3 months agolast shared
2009people per year2026

Most-shared posts

  1. 1
    The Rise and Fall of Commercial Smalltalk
    8 people · 356 points · first shared 2020 · 137 comments on HN
  2. 2
    JavaScript: The First 20 Years
    8 people · 7 points · first shared 2020 · discussion on HN
  3. 3
  4. 4
  5. 5
    Tektronix Smalltalk Document Archive
    3 people · 4 points · first shared 2020 · 1 comments on HN
  6. 6
    Testing for -0 (negative zero) in JavaScript
    2 people · 42 points · first shared 2011 · 10 comments on HN
  7. 7
    Personal Digital Habitats
    2 people · 8 points · first shared 2021 · discussion on HN
  8. 8
    A JavaScript Optional Argument Hazard
    2 people · 6 points · first shared 2015 · 1 comments on HN
  9. 9
    How Smalltalk Became a AI Language (2022)
    2 people · 2 points · first shared 2023 · discussion on HN
  10. 10
    Posts 228
    2 people · first shared 2015
  11. 11
    4404 Flyer.pdf
    2 people · first shared 2017
  12. 12
    Smalltalk-87
    1 people · 115 points · first shared 2020 · 17 comments on HN
  13. 13
    Handling Software Design Criticism (2007) [pdf]
    1 people · 25 points · first shared 2015 · 1 comments on HN
  14. 14
  15. 15
    Modern JavaScript: The Smalltalk Influence [pdf]
    1 people · 4 points · first shared 2016 · discussion on HN

What HN people wrote when they linked it

cxr · 2022-02-08
> we run [your custom code] inside a wasm-based sandbox, a compiled version of the QuickJS VM (yes, it's JS-in-JS). I'm curious about why. Is sychronicity the only reason? (And is it really worth it? `await` makes asynchronous code paths pretty unobtrusive.) Mirrors[1][2] are pretty interesting. (Not sure that I agree that compile-to-WASM makes for JS-in-JS. WASM isn't JS. Why do people keep conflating them?[3]) 1. <https://bracha.org/mirrors.pdf> 2. <http://www.wirfs-brock.com/allen/posts/228> 3. <https://news.ycombinator.com/item?id=29754432>
enforcer · 2021-02-02
I don't think a few code snippets prove the point. My conjecture is that any complex enough piece of code with essentially (not accidentally!) convoluted concepts will benefit from OOP more than any other style Can we just appreciate the fact Python is such a Swiss Army Knife and allows for multi-paradigm approach? Let's just not use low "bashing" of any paradigm as an excuse to neglect the design. In some other thread someone mentioned lack of quality metrics. Well, this question has been asked previously, a recommended read from me: http://www.wirfs-brock.com/PDFs/How%20Designs%20Differ.pdf
Rochus · 2020-08-31
Here is the worth reading response by Allen Wirfs-Brock who "was there pretty much at the beginning": http://www.wirfs-brock.com/allen/posts/914
Jtsummers · 2022-04-16
From the past discussion: http://wirfs-brock.com/allen/posts/914 - a direct response, well worth the read as it provides more context and a different perspective. From my recent reading list: Evolution of Smalltalk: From Smalltalk-72 through Squeak by Dan Ingalls: http://worrydream.com/refs/Ingalls%20-%20The%20Evolution%20of%20Smallt… [pdf]. It's 101 pages but also worth reading, if for nothing else that what I found to be a really interesting story of how Smalltalk-80 was essentially bootstrapped from the similaryl named but nowhere as capable Smalltalk-72 The Early History of Smalltalk by Alan Kay: http://worrydream.com/EarlyHistoryOfSmalltalk/ Kay and Ingalls do a good job discussing the actual history of Smalltalk but with their own focus being on what it enabled, with very little interest in the actual commercial side of things. Wirfs-Brock's post gives more information about the context of Smalltalk in the commercial and enterprise setting.
WillAdams · 2026-07-28
Reminds me a bit of a "Comparative Programming Language" class from college. Nice overview! As noted by sublinear elsethread, surprised that JavaScript didn't get more discussion (though quite interested to read the 189 page PDF: https://www.wirfs-brock.com/allen/jshopl.pdf ), and also surprised that Domain Specific Languages and specialty tools/environments such as Processing didn't come up since they seem one of the obvious end-games of this premise.
igouy · 2025-11-06
Digitalk’s Team/V unobtrusively introduced a non-reflective syntax and versioned source code using RCS. Team/V could forward and backwards migrate versions of Smalltalk “modules” within an running virtual image. https://wirfs-brock.com/allen/posts/914
dang · 2020-06-06
See also http://www.wirfs-brock.com/allen/posts/866 for the interesting backstory to this paper.
fanf2 · 2020-05-30
The announcement blog post is at http://www.wirfs-brock.com/allen/posts/866 but sadly the wayback machine doesn’t have a copy of the pdf
swyx · 2020-03-13
authors are Allen Wirfs-Brock, editor of ES2015, and Brendan Eich, creator of JS. Here is Allen's blogpost about it: http://www.wirfs-brock.com/allen/posts/866
twic · 2018-10-09
Smalltalk-80 did this too. Later implementations try to avoid it, but sometimes still do: http://www.wirfs-brock.com/allen/things/smalltalk-things/efficient-imp…
kragen · 2021-10-02
> Racket uses a bytecode VM and/or a JIT, so Haskell being faster wouldn't surprise me. They support AOT native-code compilation too, but they say the JIT generally performs better: https://download.racket-lang.org/docs/5.1/html/raco/ext.html but my experience in the past was that it didn't perform that well. Maybe it's improved. > Go doesn't have a primitive type system because it makes it faster, but mostly because that's a design choice. Same thing for Java. I agree: a primary goal for both languages was clarity, even at the expense of some generality. Java was very slow for a decade (HotSpot wasn't released until 01999 and wasn't very good until about 02002), but a few billion dollars and a Fortune-500 bankruptcy later, it's really pretty zippy! (As long as you don't care about startup time.) Golang, by contrast, was designed with higher performance goals, which it fell somewhat short of. > Lack of ad-hoc polymorphism is usually a criticism of ML and its descendants, but Go and Java both lack it too Ad-hoc polymorphism is absolutely fundamental to Java; one of its big differences from C++ was that nearly every callsite implied ad-hoc polymorphism, and that's where a lot of the optimization effort went. Golang isn't quite so radical about it, but its interface mechanism exists for almost nothing but ad-hoc polymorphism. OCaml has ad-hoc polymorphism, FWIW, but people don't use it much. > both added generics 10 years after the language was created Golang was…
cmrdporcupine · 2020-08-31
The author seems to know (well, was involved in) the history of Self and Strongtalk but seems disappointed that the people involved went on to work on and perfect what they see as inferior technology (Java, JavaScript). In reality I think if we do an honest accounting of the situation we can see that these have been the more pragmatic engineering solutions for their times, and so that's where the $$ was. I worked in Java for years, but didn't particularly like it, but it is, I think, what the marketplace needed and could handle at the time. And I think JS/ECMAScript etc. is a reasonable practical solution for the imperfect world that evolved out of Internet/browser tech. Unlike the author I don't think Sun's fortunes would have been any different if Self/Strongtalk or some other Smalltalk-world inspired/derived tech had been pushed hard. The market didn't need or want it. IBM did a similar pivot with their VisualAge line, and they did it for pragmatic reasons. Finally, let's look at the bigger picture: in the end, what we have with the browser + modern JS on V8/SpiderMonkey etc. is a dynamic object oriented programming language that allows for dynamic manipulation of its environment, is accessible to any user, can be edited and inspected live, can present interactive media to users, and has a large community of authors. Is this really that far off from what Alan Kay and Dan Ingalls originally wanted? Purists will gag, but I think as much as I hate front end dev in JS…
carussell · 2015-07-19
I started a project[1] a while back when it became clear that the underlying architecture for the new devtools in Firefox was going to be as problematic as Firebug's had been. Longtime Mozilla contributor Wladimir Palant just published a post a few days ago touching on some of the problems with devtools that he ran into when trying to work with it.[2] The idea with sepsis-inspector is that it should be able to replace Hewitt's old DOM Inspector codebase and be stupid simple to extend with third-party viewers. (For anyone unfamiliar, DOMi has the ability to inspect not just webpages, but e.g. the Firefox UI [and Thunderbird, and SeaMonkey] and extensions as well.) The interface between the Inspector itself and the viewers is nice and modular for the most part. It's basically Unix pipes in GUI form, with a few services for sugaring. Altogether, this makes its design a good foundation for a generalized inspector framework. (And I do mean generalized. Let's debug PNGs, PDFs, and Haxe, too, but I'm not even talking just the Web here. Want to use it to debug Gnome Shell or your Mono app? Sure. I mean, why shouldn't we be able to?) Since DOM Inspector, Firebug, and the new Firefox devtools exist, I've focused most of my time on getting the architecture right and then teaching the Inspector how to do some things that those tools can't already do, rather than necessarily shooting for parity from the start. This means that if you download the sepsis-inspector add-on[3]…
mpweiher · 2017-10-17
Huh? The Xerox Star was introduced in 1981 https://en.wikipedia.org/wiki/Xerox_Star Apple's Lisa was introduced in 1983. https://en.wikipedia.org/wiki/Apple_Lisa With it, Lisa Toolkit and Clascal (Pascal with Classes) http://www.mirrorservice.org/sites/www.bitsavers.org/pdf/apple/lisa/to… The Mac in 1984 https://en.wikipedia.org/wiki/Macintosh_128K MacApp in 1985 https://en.wikipedia.org/wiki/MacApp The Tektronix 4404 running Smalltalk, also 1984 http://www.wirfs-brock.com/allen/files/tek/4404-Flyer.pdf The Amiga and Atari ST in 1985. Windows was at 2.0 in 1987. Heck, the NeXT cube had been introduced by fall of '88. https://en.wikipedia.org/wiki/NeXT_Computer

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close