Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    S

    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.

    Visit blogHN submissions
    ProgrammingDevOps & CloudBusiness & Strategy
    What HN says

    HN 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.

    Stats for nerds
    44HN people shared it
    140linked in comments
    3.8Kstory points
    Dec 2022last shared
    2015people per year2022

    Top posts on HN

    1. 1
      One-on-one meetings are underrated, whereas group meetings waste time
      1 person · 408 points · first shared 2017 · 113 comments on HN
    2. 2
      Docker is a dangerous gamble
      2 people · 406 points · first shared 2018 · 247 comments on HN
    3. 3
      Why would anyone choose Docker over fat binaries?
      3 people · 317 points · first shared 2017 · 173 comments on HN
    4. 4
      Facebook activated my dormant account and won’t let me deactivate it
      1 person · 273 points · first shared 2017 · 155 comments on HN
    5. 5
      Amazon has no idea how to run an app store
      1 person · 267 points · first shared 2016 · 169 comments on HN
    6. 6
      Billions wasted on Hadoop startups, the same will eventually be true of Docker
      1 person · 227 points · first shared 2019 · 209 comments on HN
    7. 7
      Why are large companies so difficult to rescue (regarding internal technology)
      1 person · 212 points · first shared 2019 · 117 comments on HN
    8. 8
      Embarrassing code I wrote under stress at a job interview
      1 person · 195 points · first shared 2015 · 180 comments on HN
    9. 9
      Poland was shockingly liberal during the 1400s
      3 people · 191 points · first shared 2018 · 136 comments on HN
    10. 10
      Discretion still matters – don’t hurt your career by sharing too much
      1 person · 176 points · first shared 2017 · 144 comments on HN

    What HN people wrote when they linked it

    • lectrickJul 2015

      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-microservices-but-not-elixir

      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-phoenix-vs-rails/

      6) Elixir provides true macros (in the Lisp sense). It…

    • JachApr 2019

      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…

    • romanivMar 2017

      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/RM5290.pdf

      http://repository.cmu.edu/cgi/viewcontent.cgi?article=2281&context=compsci

      Cool article on failures of OOP:

      http://www.smashcompany.com/technology/object-oriented-programming-is-an-expensive-disaster-which-must-end

      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.

    • MichaelMoser123Apr 2017

      Russian wikipedia https://ru.wikipedia.org/wiki/ЕС_ЭВМ#cite_note-.D0.B8.D1.81.D1.82._.D0.BE.D0.B1.D0.B7.D0.BE.D1.80-1 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.

    • AlexCoventryMay 2018

      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-paradigm-that-we-should-get-rid-of

      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.

    • blindlukeAug 2020

      > 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-flaws-of-docker-kubernetes-and-their-eco-system

      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.

    Related

    Brian Carperbriancarper.net48 people

    Making an RPG in Clojure (2010)

    Brian Carper
    Personal · last shared 2017
    Still Drinkingstilldrinking.org174 people

    Coffee Is Hard

    Still Drinking
    Personal · last shared 2026
    Daring Fireballdaringfireball.net1.8k people

    Facebook is an attack on the open web

    Daring Fireball
    Personal · last shared 2026
    The HFT Guythehftguy.com75 people

    The most remarkable legacy system I have seen

    The HFT Guy
    Personal · last shared 2026
    Software Maximssoftwaremaxims.com16 people

    I am not a supplier (2022)

    Software Maxims
    Personal · last shared 2026
    Rubenerdrubenerd.com44 people

    Git ignores .gitignore with .gitignore in .gitignore

    Rubenerd
    Personal · last shared 2026
    Signal v. Noisesignalvnoise.com941 people

    The open-plan office is a terrible, horrible, no good, very bad idea

    Signal v. Noise
    Company · last shared 2026
    Codeship Blogblog.codeship.com138 people

    Crystal: Fast as C, Slick as Ruby

    Codeship Blog
    Company · last shared 2020