Smash Company
smashcompany.com · Personal blog · on HN since 2010
Programmer and essayist who writes opinionated posts against object-oriented programming and Docker, plus pieces on business and history.
What HN saysHN commenters know it for the anti-OOP rant, one calling it their favorite, along with the Docker critique and a post on medieval Poland's political system.
44HN people shared it
21linked it in comments
140stories submitted
3.8Kstory points
3 years agolast shared
2010people per year2026
Most-shared posts
- 1Object Oriented Programming is an expensive disaster which must end14 people · 138 points · first shared 2014 · 119 comments on HN
- 2The flaws of Docker-Kubernetes and their ecosystem 20194 people · 8 points · first shared 2019 · discussion on HN
- 3Why would anyone choose Docker over fat binaries?3 people · 317 points · first shared 2017 · 173 comments on HN
- 4Poland was shockingly liberal during the 1400s3 people · 191 points · first shared 2018 · 136 comments on HN
- 5What happens when the Board of Directors begins to panic?3 people · 102 points · first shared 2015 · 45 comments on HN
- 6Docker protects a programming paradigm that we should get rid of (2018)3 people · 97 points · first shared 2018 · 83 comments on HN
- 7RSS has been damaged by in-fighting among those who advocate for it (2006)3 people · 22 points · first shared 2015 · 1 comments on HN
- 8What work can be done from home? What work needs to be done at an office?3 people · 4 points · first shared 2022 · discussion on HN
- 9How i recovered from lyme disease3 people · first shared 2019
- 10Docker is a dangerous gamble2 people · 406 points · first shared 2018 · 247 comments on HN
- 11Why PHP is obsolete (2014)2 people · 33 points · first shared 2015 · 57 comments on HN
- 12An architecture of small apps2 people · 7 points · first shared 2013 · discussion on HN
- 13Excessive praise marks corporate peaks2 people · 6 points · first shared 2010 · 1 comments on HN
- 14Truly Agile development revolves around one-on-one meetings, not daily standups2 people · 3 points · first shared 2022 · discussion on HN
- 15One-on-one meetings are underrated, whereas group meetings waste time1 people · 408 points · first shared 2017 · 113 comments on HN
What HN people wrote when they linked it
lkrubner · 2022-12-02
I've hired several developers straight out of dev boot camps and I've had good experiences with them. I wrote about that here:
http://www.smashcompany.com/philosophy/the-grace-hopper-division-of-fu…
hedora · 2022-11-11
Well, that depends. There was once a commercially viable zero-byte program:
http://www.smashcompany.com/business/a-program-of-zero-bytes-worth-5
ajuc · 2022-01-11
In anglosaxon world for sure.
Meanwhile in Scandinavia and Eastern Europe several countries had elective monarchies and self-government at local level :)
I highly recommend this article to people who only ever read about history of political systems through anglosaxon POV:
http://www.smashcompany.com/philosophy/poland-was-shockingly-liberal-i…
simongray · 2019-06-24
Oooh, this is by the same guy that wrote my favourite anti-OOP rant: http://www.smashcompany.com/technology/object-oriented-programming-is-…
It's worth reading, although your feelings may get hurt if you're not already sold on functional programming. He's not very diplomatic.
stevenhuang · 2018-07-20
Link for others: http://www.smashcompany.com/technology/docker-is-a-dangerous-gamble-wh…
It was a great--thanks.
AlexCoventry · 2018-05-14
I'm quite intrigued by his other essay, "Docker protects a programming paradigm that we should get rid of"[0], because I am very much embedded in that paradigm, and while I think I have a working understanding of modern concurrency frameworks from using clojure's core.async, I don't really see where docker fits into the protection of the old way.
[0] http://www.smashcompany.com/technology/docker-protects-a-programming-p…
On the other hand, it's been clear to me almost from when I started using it that docker is great for development, but likely to cause huge headaches in production. It occasionally behaves in weird ways I can't explain, which is fine during development, but a would potentially be showstopper at scale.
juliangamble · 2015-08-09
For a detailed critique comparing Object Oriented programming and Functional programming - this is a good read: http://www.smashcompany.com/technology/object-oriented-programming-is-…
kyllo · 2015-05-29
One of my favorite long-form blog posts about OOP[1] explains why data type inheritance is generally quite useful, but the entire concept of inheritance has been unfairly maligned because in OOP languages, inheritance of data types is tied to inheritance of function implementations, resulting in the fragile superclass problem, breaking encapsulation, etc. We've thrown the baby out with the bathwater.
[1]http://www.smashcompany.com/technology/object-oriented-programming-is-…
lectrick · 2015-07-16
Granted this is speculation, but I've done my homework:
1) Extreme concurrency due to Erlang underneath, which means not only being able to handle lots of connections at once, but very good DDoS resistance. See WhatsApp's blog post about it: http://blog.whatsapp.com/196/1-million-is-so-2011 An Elixir (or Erlang) process can fire up a million new nodes in a second on commodity hardware. No joke. The out-of-the-box concurrency in Elixir replaces many tools in Ruby that are normally separate gems: http://www.smashcompany.com/technology/ruby-concurrency-needs-microser…
2) Near-100% uptime possible. (Google "Whatsapp uptime"). Erlang was designed to run cell networks. It made them very reliable. The entire philosophy of the language is to "embrace failure, log it and try again ASAP." This ends up being a very good strategy when dealing with the uncertainty of the real world, and things like security concerns.
3) Live code upgrades without downtime. See this demo: https://youtu.be/96UzSHyp0F8
4) MUCH nicer syntax than Erlang. Especially for ex-Rubyists. It's a functional language (with all the advantages that provides) with a Ruby-flavored syntax. Best of all worlds.
5) Phoenix, the Rails-equivalent web API, has come out of the gate with a 2 to 10x performance improvement over Rails using a fraction of the CPU load: http://www.littlelines.com/blog/2014/07/08/elixir-vs-ruby-showdown-pho…
6) Elixir provides true macros (in the Lisp sense). It…
Apocryphon · 2022-08-03
When I read “24 year old CEO” I think of Hinton:
http://www.smashcompany.com/business/what-happens-when-the-board-of-di…
CRConrad · 2022-01-16
Someone else already wrote that and posted a link in this very thread: http://www.smashcompany.com/technology/my-final-post-regarding-the-fla…
blindluke · 2020-08-06
> I'm just interested in pivot points where companies decided to switch from technology x to technology z, and what made them do it.
There's a lot of articles and blog posts on that topic, enough to keep you occupied for a long while. Here's one:
http://www.smashcompany.com/technology/my-final-post-regarding-the-fla…
Here's another
https://blog.asana.com/2017/08/performance-asana-app-rewrite/
> I meant, "When did people stop deciding to greenlight new projects using PHP?"
Did they, though? I haven't noticed. Do you have any source on that?
> Would you be interested in such a chart?
No.
faitswulff · 2019-07-23
Just yesterday lkrubner posted their multi-year battle with lyme disease. I thought it was a pretty interesting read:
> Slightly off-topic, but for anyone interested, I did write up my own battle with Lyme, which went on for many, many years, till I found a simple solution:
> "How I recovered from Lyme Disease: I fasted for two weeks, no food, just water"
> http://www.smashcompany.com/philosophy/how-i-recovered-from-lyme-disea…
https://news.ycombinator.com/item?id=20494464
totemizer · 2018-11-25
maybe this will then? http://www.smashcompany.com/technology/object-oriented-programming-is-…
flambard · 2018-09-21
This (very long) article explains why OO might not be such a good idea as initially believed.
http://www.smashcompany.com/technology/object-oriented-programming-is-…
MichaelMoser123 · 2017-04-10
Russian wikipedia https://ru.wikipedia.org/wiki/ЕС_ЭВМ#cite_note-.D0.B8.D1.81.D1.82._.D0… says that second generation soviet systems were oriented towards numerical computations and that they had a real problem with system software (no OS, even no assembler).
Now the architecture/os/system of the IBM S360 took some money to develop - here it says it was 5 billion $ (comparable in magnitude to the moon program - that was 25 billion $) http://www.smashcompany.com/business/cost-overruns-and-the-ibm-360 . So I guess that Kosygin was trying to avoid this expenditure.
Therefore a major point is that software development costs a lot, and they could just pirate that by copying the OS360.
On the other hand they could have done a similar thing as Amdahl/Siemens/Hitachi - copy the architecture while producing a hardware design of their own, so go figure.
HanyouHottie · 2015-07-01
Why was this guy down voted? Everything he said is correct, if a bit hyperbolic at points.
This is relevant: http://www.smashcompany.com/technology/object-oriented-programming-is-…
Jach · 2019-04-19
CL has static typing and such in at least three important senses that aren't usually called out explicitly in these discussions. First, you can annotate types and some compilers (notably the popular SBCL) can warn you, at compile time, about issues around using the wrong types, undefined vars, unused vars, wrong arguments passed to function, etc. I've read somewhere that's all based on Kaplan-Ullman type inference developed in the '80s, along with an example implementation for CL: http://home.pipeline.com/~hbaker1/TInference.html This is the sense of using types to help you write more correct software. It's obviously not as rigorous as Java/Haskell/Shen and not everything can be done at compile time. On the other hand CL has very flexible type definitions, so you get possibilities like "integers 2,3,4,5" as a type rather than limited to "all integers" or custom types like "is keyword :a or :b or :c".
Second, compilers can use type information (or inlining hints, etc.) to compile efficient machine code, which you can inspect with the built-in function 'DISASSEMBLE.
Third, types are used in the CLOS system to support efficient multiple dispatch for multimethods, and the rest of the CLOS and MOP machinery that makes it a very "non-traditional" (despite CLOS being first to ANSI standardize) OOP system with a lot more power than other fashionable languages provide. I'm basically in agreement with the title of…
romaniv · 2017-03-22
I've been thinking and reading about OOP and its roots recently.
Here are some interesting resources on the subject:
Alan Kay's elaboration on what he envisioned when he coined the term:
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en
Two papers he references:
https://www.rand.org/content/dam/rand/pubs/research_memoranda/2007/RM5…
http://repository.cmu.edu/cgi/viewcontent.cgi?article=2281&context…
Cool article on failures of OOP:
http://www.smashcompany.com/technology/object-oriented-programming-is-…
Its long and frustrated, but most of the points he makes are true. A lot of the stuff people claim as
I think the original vision of OOP is more valuable than what we call OOP right now. I think a good balance would be writing low-level stuff in functional style and then wrapping it in objects when you need state and cross-library messaging. Also, it seems there is some overlap between the original vision for OOP and what we call "microservices" today.
bmn__ · 2022-02-05
We were talking about RFCs, so yes. It's the fundamental qualitative distinction between the two technologies: good specs really do matter.
https://pwn.ersh.io/notes/why_specs_matter/
https://www.xml.com/pub/a/2002/12/18/dive-into-xml.html
https://web.archive.org/web/2004/http://diveintomark.org/archives/2004…
http://www.smashcompany.com/technology/rss-has-been-damaged-by-in-figh…