HNHacker News
TopNewBestAskShowJobs

raycmorgan

66 karma · joined October 18, 2011

Software engineer @romotive. Formerly founded @rumgr and lead developer at @zappos.

https://github.com/raycmorgan

submissionscomments
raycmorgan··on Stripe now supports ACH payments
This has now been fixed. Sorry again for the trouble!
raycmorgan··on Life in a Studio Apartment with My Wife and Two Sons
My 3 month old goes through about 5-8 and my 2 year old 1-4 a day depending if he uses the potty or not.
raycmorgan··on Startups should use a relational database
Thank you for your comment. I agree that there is nothing wrong with using a plurality of systems when needed. Your example of moving from one to another is great! Start with a simple system, and once you find bottlenecks, optimize with specialized stores.
raycmorgan··on Why automatic app updates in iOS isn’t a good idea
Although I understand the concerns of the article, I do not agree. I think auto updates make for a much better experience for both users and developers. The web has had this model forever. With iOS you do have the review process delay, but major bug fixes can be expedited and released in under a day. This is probably faster than a lot of companies' web release process.

Also as a developer, I would rather have the burden of feature changes and processing feedback than the user have to sift through release notes to determine if they should update or not. Most users probably don't read the release notes in favor of just clicking "Update All" (speculation). All in all, I would rather have all my users always up to date so I can push bug fixes, features and improvements faster.

raycmorgan··on Callbacks as our Generation's Goto Statement
I would do it in Node.js like the following:

  async.eachSeries(players, askName, function (err) {});

  // this is someplace it should go
  function askName(player, callback) {
    Ask("What's your name", function (err, name) {
      if (err) { return callback(err); }
  
      if (IsValidName(name)) {
        player.name = name;
        callback(null);
      } else {
        askName(player, callback);
      }
    });
  }
This follows Node's err convention. Note I use a bit of old fashion recursion to handle the asking for a valid name. This will not stack overflow due to the fact Ask is async. You could inline askName, but then you wouldn't have a nice little unit testable function.
raycmorgan··on Panopticlick – How Unique, and Trackable, Is Your Browser?
In the fraud detection and ad tracking spaces there are companies that use this technique. They are able to adapt to changes in the browser (using statistics, cookies as bridges, your favorite shopping site's userId, etc). In the tracking world there are no silver bullets, so the more ways to connect different sessions, the better.
raycmorgan··on Panopticlick – How Unique, and Trackable, Is Your Browser?
I know a couple groups that use this technique to track iOS app downloads. Although iPhones aren't very unique, looking at the somewhat unique fingerprint + timeframe from browser to app d/l works out pretty well.