HNHacker News
TopNewBestAskShowJobs

evanrmurphy

605 karma · joined February 24, 2010

submissionscomments
evanrmurphy··on Garry Kasparov: The Last Revolutionary Technology Was The Apple II
Thanks for mentioning this. Made me look these up and learn something.
evanrmurphy··on Offer HN: Twitter API Help
Could you please tell if the Twitter API has better support for certain programming languages than others? Specifically, is there any advantage to using Ruby/RoR over PHP for a project that interacts heavily with Twitter? Thank you!
evanrmurphy··on I Buy and Sell Domain Names AMA
I Buy and Sell Domain Names AMA

What does AMA mean?

evanrmurphy··on What's happening with Arc?
Sure, it's subjective. :)

I forgot to mention though that the idea is to use the shortest names possible for the core language operators. That's when they're the biggest win, since you'll learn those well enough not to need descriptive names, and they cut program length more substantially since they're used so often.

evanrmurphy··on Why your desk job is slowly killing you
The list is really helpful. Thanks for sharing it.

If someone was unable to get a standing desk, do you think kneeling at a normal desk might be better than sitting all the time?

evanrmurphy··on What's happening with Arc?
A language that can express algorithms in few lines that are very cryptic (read: hard to read) is not very useful.

Part of Arc's design philosophy is to never inconvenience advanced users in order to serve novice ones. Long, descriptive names help people unfamiliar with a language's operators better understand what they do, but the length can become a burden once they do know.

For example, when I first started learning Arc, it would have saved me some headache if afn had been named anaphoric-function. Now I would find that a real nuisance. I love being able to invoke such a powerful abstraction with just three keystrokes.

Here's an interesting exercise. This is the given solution to the Arc Challenge [1]:

  (defop said req
    (aform [w/link (pr "you said: " (arg _ "foo"))
             (pr "click here")]
      (input "foo")
      (submit)))
What would you prefer that it looked like? If you replaced all the abbreviated names with long descriptive ones, you'd have something like:

  (define-operator said request
    (html-anaphoric-form
      [html-with-link 
        (print "you said: " (argument _ "foo"))
        (print "click here")]
      (html-input "foo")
      (html-submit)))
---

[1] http://arclanguage.org/item?id=722

evanrmurphy··on What's happening with Arc?
5 shell commands to install and run Arc using aptitude: http://news.ycombinator.com/item?id=1833416
evanrmurphy··on What's happening with Arc?
make it installable without having to understand the source

I wouldn't say that understanding Arc's source is a prerequisite for installation. The problem is more just that the instructions are complex [1].

It would probably help if they were updated to let people know that with arc3.1, you don't have to worry about installing version 372 of MzScheme [2]. (Unless there's some reason why you'd prefer people installed arc3.0.) Navigating their website to download the specific old version of MzScheme is especially confusing since they rebranded as Racket.

This reduces the install and run to (on Ubuntu 10.04):

  $ sudo aptitude install mzscheme
  $ wget http://ycombinator.com/arc/arc3.1.tar
  $ tar -xvf arc3.1.tar
  $ cd arc3.1
  $ mzscheme -f as.scm
---

[1] http://arclanguage.org/install

[2] http://arclanguage.org/item?id=10254

evanrmurphy··on What's happening with Arc?
There is one in Anarki: http://github.com/nex3/arc/tree/master/help/

Usage examples:

  arc> help.acons
  [fn]  (acons x)
   Determines if `x' is a `cons' cell or list.
      Unlike 'alist, this function will return nil if given an empty list
      See also [[atom]] [[alist]] [[dotted]] [[isa]] [[cons]] [[list]] 
  nil
  arc> help.alist
  [fn]  (alist x)
   Return true if argument is a possibly empty list
      Unlike 'acons, this function returns t when given an empty list
      See also [[atom]] [[acons]] [[dotted]] [[isa]] [[cons]] [[list]] 
  nil
  arc> help.afn
  [mac] (afn parms . body)
   Creates a function which calls itself with the name `self'.
      See also [[fn]] [[rfn]] [[aif]] [[awhen]] [[aand]] 
  nil
evanrmurphy··on Try Arc
This is a very clever idea. Even if I don't implement it this way, your suggestion has inspired me to think outside the box.

Here's an approach that's a variation/refinement of my current one: Instead of just orphaning old clients when their sandboxes get GC'd, leave them with a local copy of their REPL history. If they try to use the REPL again after a long period of silence, a new sandbox will be allocated for them (as it would be for a fresh client), and all the commands in their REPL history loaded in to bring it back to its previous state.

This approach could potentially pave the way for users having persistent REPLs, even across page reloads.

evanrmurphy··on Coding Horror: The Keyboard Cult
I'm a recent mechanical keyboard convert. Bought a Customizer 101 [1] a couple months ago and was so pleased I ended up buying a second one (one for work, the other for home). I can type for much longer now before reaching any kind of exhaustion in the hands/wrists. Recommended for the RSI-prone, as long as the people around you don't mind the noise too much.

---

[1] http://pckeyboards.stores.yahoo.net/cus101usenon.html

evanrmurphy··on Try Arc
If you got that error at the REPL after being on the site for a few minutes, your sandbox probably got garbage collected due to high traffic. Please see http://news.ycombinator.com/item?id=1814494

If you got it when you first arrived or in some other context, you're bug reporting. Tell me more!

In either case, if you (wait a few minutes and) reload the page, it will probably work. Thanks for your patience.

evanrmurphy··on Try Arc
Does arc have full tail call optimisation?

Yes. Arc's reference implementation inherits TCO from Racket.

evanrmurphy··on Try Arc
It's still up at http://jonathan.tang.name/files/arclite/index.html
evanrmurphy··on Try Arc
Update: I had to keep lowering the threshold to avoid server stalls. Currently at 50, where the site seems more stable.
evanrmurphy··on Try Arc
Providing independent sandboxed evaluation for every visitor to the site costs a lot of memory. On my Linode 512, it only takes about 90 users before all the memory is consumed and I have to start garbage collecting. If you saw that message when you tried to evaluate something, you probably got GC'd.

I'd like to find a more graceful way of handling this. Any suggestions?

evanrmurphy··on Try Arc
I apologize for the downtime to anyone who has had problems accessing the site. Temporary outages have come along with my modest traffic spike. I hope you'll try back in a few minutes.
evanrmurphy··on Killing the Cancel Button on Forms for Good
Gmail's basic HTML view also has a discard button, even though it doesn't auto-save drafts.

You make a good point, though. Maybe basic HTML just has Discard to stay consistent with standard.

evanrmurphy··on Killing the Cancel Button on Forms for Good
In Gmail, the "Compose mail" form has a Discard button that serves as a Cancel. Have others found this to be a nuisance? (It's never bothered me before, and I think I've often found it quite convenient.)
evanrmurphy··on Killing the Cancel Button on Forms for Good
Cancel buttons...[give] users the opportunity to accidentally click on it when it’s mistaken for the Submit button. Removing the Cancel button completely removes the chances of this mistake happening.

This is an excellent point.

There are two situations where Cancel buttons are proper.... The first situation is confirmation windows.... The second situation is progress bars.

Would this suggest that Cancel buttons are never appropriate on basic HTML / mobile websites? This seems like an extreme rule to me, but maybe it's good advice.

evanrmurphy··on Top Myths of Popular Psychology
For me, while I had often heard and used "faze" in conversation, I seldom saw it in writing. Early on my mind got comfortable with the bogus idea that it shared etymology with "phase", and so I assumed they were spelled the same.
evanrmurphy··on Top Myths of Popular Psychology
Ok, that did faze me.

Thanks though, you've saved me countless future misspellings of that word.

evanrmurphy··on Top Myths of Popular Psychology
Myth #2: It’s Better to Express Anger Than to Hold it in

I think this is less binary than the article suggests. In addition to expression and repression of anger, there is also "letting things go." When you can forget about something that made you mad, you get the satisfaction of knowing you didn't let it phase you (arguably better than catharsis) without all the problems associated with revenge and obsession.

I really like this paragraph from http://paulgraham.com/top.html:

Turning the other cheek turns out to have selfish advantages. Someone who does you an injury hurts you twice: first by the injury itself, and second by taking up your time afterward thinking about it. If you learn to ignore injuries you can at least avoid the second half. I've found I can to some extent avoid thinking about nasty things people have done to me by telling myself: this doesn't deserve space in my head. I'm always delighted to find I've forgotten the details of disputes, because that means I hadn't been thinking about them. My wife thinks I'm more forgiving than she is, but my motives are purely selfish.

evanrmurphy··on Hey, Guys, It's Totally Okay If You Don't Get Rich
The unusually high number of comments and upvotes on this post might suggest that a lot of HN readers want to know it's okay if they don't get rich.
evanrmurphy··on Hey, Guys, It's Totally Okay If You Don't Get Rich
Freedom is spending more time seeking pleasure than avoiding pain.

Very interesting definition. Thanks for sharing that.

It vaguely reminds me of Amartya Sen's Development as Freedom, in which he explores how the right to certain opportunities may be as essential to freedom as the right to property.

The connection may only be superficial, but that was a good book too. (Sen was a Nobel Prize winner.)

evanrmurphy··on Racket vs Clojure (it's all about the data structures)
Racket is good that way, but you can get immediate gratification from things like Try Clojure too.

And of course, the Clojure setup is actually attractive if you're already using Emacs, especially since it offers integration with SLIME. No one has been able to do that with Arc yet, as far as I know. (With Racket, I'm not sure.)

evanrmurphy··on Racket vs Clojure (it's all about the data structures)
Racket's hygienic macro system seems to be a heavier cognitive load as well (although it certainly has its own benefits, and some would say it's essential). I really like in Clojure and Arc how easy it is to pound out a macro when you need one.

I have less experience in CL and Racket. I would think that since CL's macros are unhygienic, they would be easy to write as they are in Clojure. It could be that I just haven't gotten the hang of Racket's macros yet, and that once you do they aren't any harder. Let me know if this is the case.

evanrmurphy··on Team productivity hack: Todo list as IM status
Sounds great for team productivity (as you suggested), probably less good if you're working alone.
evanrmurphy··on "Study Functional Programming or Be Ignorant"
Every program is either a compiler, or an interpreter.

Great insight. Thanks for teaching me about this.

evanrmurphy··on Rate my new startup, Appointment Reminder
> It looks terrible.

I was actually impressed by the appearance, and I don't see many other commenters italicizing their disgust, so this is probably an overstatement.

← PreviousPage 5 of 8Next →