Hacker Newsnew | past | comments | ask | show | jobs | submit | jhbadger's commentslogin

Calling Gosling "the father of Emacs" is pretty inaccurate. What Gosling did was create the first UNIX version of Emacs, and while that predates RMS' GNU Emacs, Emacs was originally a series of macros created by RMS for the TECO editor running on ITS (Emacs originally meant "editor macros"), so RMS is clearly the father of Emacs.

Reminds me of Richard Stallman and how he used to do a character "St. igGNUcias of the Church of Emacs" who would answer questions like "Is using Vi a sin?" with "Yes, but one that is its own penance!"

Oh, did he stop?

Just alias them in your shell config. You don't have to remember to use them if you have more and less just be aliases to bat. Same thing I do with eza, the ls replacement -- "ls" calls eza.

I use fish’s abbreviations instead of aliases. That way I get control and visibility into the change, but can also gradually learn it too :)

Yeah, Lowe doesn't work for Science -- he is a pharmaceutical chemist who has worked for various companies -- his "In the Pipeline" blog is interesting because while academic scientists often blog, industrial ones rarely do (perhaps for legal/IP reasons).

There's a great recent book (Anne Trumbore's _The Teacher_in_The_Machine_) on using technology to "disrupt" education (starting much earlier than you would think, with mechanical devices in the early 20th century that could drill students with multiple choice questions, running through basically pre-computer MOOCS that used radio and then TV to broadcast lectures, various educational software, and finally MOOCs like Coursera and Udacity).

So many retro things are on Facebook. It's a stereotype that the GenX/Boomer audience interested in retrotech is on Facebook, but it's kinda true.

Same here with MacBook Pro M1 Sequoia 15.6.1

that's not great, mind drop me an email on support? update: hotfix in making

The updated build now works on my system, fyi.

This is valid only so far as "human benefit" is localized to the human doing the job. I'm a cancer researcher. Obviously. my job is of value to me because it pays my bills (and yes, I do get satisfaction from it in other ways). But if an AI can do cancer research better than me, then the human benefit (to every human except perhaps me) favors the AI over me.

But a lot of jobs aren't like that. I doubt many people who work in, say, public relations, really think their job has value other than paying their bills. They can't take solace in the fact that the AI can write press releases deflecting the blame for the massive oil spill that their former employer caused.


> I'm a cancer researcher. Obviously. my job is of value to me because it pays my bills (and yes, I do get satisfaction from it in other ways). But if an AI can do cancer research better than me, then the human benefit (to every human except perhaps me) favors the AI over me.

I’ll note that I didn’t mention “AI”, I was addressing robots vs. jobs, but sure.

Let me straw man myself and say up front that it would be simplistic to say that if something hurts one person today then it is bad, even if it benefits a million tomorrow. However, does that mean if death of N people can cause N+1 people to be saved at some indefinite point in the future, we should jump on the opportunity?

Utilitarian math is not the answer. We don’t have to go far for examples of tragic loss of life and atrocities that were caused by people following utilitarian objectives, so I am much more wary of this logic than its inverse. We probably should neither let everybody starve while we are fighting cancer nor stop studying cancer, even if we could feed millions of people in dire need with that money.

With that in mind: feeling fulfilled and needed is important, being able to pay bills is important, etc., no matter who you are. It is probably unacceptable to reduce human life to “be the most efficient cog in the system or GTFO”.

> I doubt many people who work in, say, public relations, really think their job has value other than paying their bills.

Does your cancer research institution have no public relations department? Should there be no public relations departments in any of them? Would it help cancer research?

--

Tangentially, the Wikipedia article on inflammation makes two claims: 1) inflammation can be caused by stress—I imagine via lack of sleep, bad habits, eating disorders, etc.—and 2) cancer is one of the non-immune diseases with causal origins in inflammatory processes. Now, there’s many things that could cause a person to stress, but I imagine losing your job and struggling to make ends meet, with a promise that it helps humanity at some point, is definitely high up there (especially if you have a family). I jest, but only in part.


How far do you want to take it? Should we write Chinese names in characters and Arabic names in their writing system? And of course, historically Vietnamese used Chinese characters -- the Romanized form was introduced under colonialism (although granted, there seems to be no desire to go back after independence)

Whereas rendering Chinese names with Chinese characters would make the names entirely unintelligible to an audience of English speakers, the nice thing about the diacritical marks in Vietnamese is that they can simply be ignored by those familiar with the Roman alphabet but not Vietnamese. I would similarly expect an article about Spain or Spaniards to include the accents and the ñ character and an article about France or the French to include accents and the ç. (I wouldn't necessarily be opposed to writing out Chinese names in Chinese, then putting the pinyin in a parenthetical, either. Obviously there would be no point to this with Vietnamese, Spanish, or French.)

If you are familiar with a true object-oriented language like Smalltalk (rather than the watered-down form of OO in C++, Java, etc.), an integer like 5 having methods makes sense because it (like everything else) is an object. Objects in Ruby aren't just window dressing -- they are its core.

But then Ruby only goes half way, not unlike the "watered-down form" in your term. Why is `#times` a method of Integer, but `#if` (or `#ifTrue`) not a method of booleans like in Smalltalk? Ruby does the same cherry picking from Smalltalk like everybody else, just different cherries. When looking at Ruby, it feels like the simple examples are all nice and clean but then the weird details start to appear and the language feels more hacky than others (like Ned Flander's house in Simpsons S08E08).

#if and #ifTrue are yours if you want them:

  class TrueClass
    def if = true
    def ifTrue = true
  end

  class FalseClass
    def if = false
    def ifTrue = false
  end

  true.if
  # => true
  false.if
  # => false

In Smalltalk those methods don't return `true`. They take a block and evaluate it if the boolean receiving the message

    (a > b) ifTrue: [ "do something" ]
EDIT: to clarify what's happening there, `>` is a message sent to `a` that will result in a boolean. The True class and False class both understand the ifTrue: message and `True>>ifTrue:` executes the block whereas `False>>ifTrue:` just throws it away.

There's no `if` keyword in the language. Control flow is done purely through polymorphism.


I apologize for my lack of Smalltalk knowledge. As you can imagine, you can do similar in Ruby by defining ifTrue to accept a block, even adding ifTrue on other all objects and defining something similar:

  class TrueClass
    def ifTrue(&block) = block.call
  end

  class FalseClass
    def ifTrue(&block) = nil
  end

  class Object
    def ifTrue(&block) = block.call
  end
      
  class NilClass
    def ifTrue(&block) = nil
  end
If ck45's core complaint was that this is not baked into the language, I will agree that it is less convenient for lack of a default.

Certainly possible: add ifTrue as a method to TrueClass and FalseClass.

It just isn't very fast.


problem is not with ifTrue, and not with it's performance, it's easy to do. it is "ifTrue:ifFalse:"

also it is common to do assignments in the "if", and with actual method and blocks scope of the introduced variable would be different and everyone would be tripping on it all the time.


basically it's because of "else" and "elsif". While ".each" works the same as "for .. in ...; end", it's harder to do "if else" as method which will also return value of the block inside the branch. Smalltalk can do it because "ifTrue:ifFalse:" is _one_ message, ruby didn't go that way syntactically.

Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: