The Indian Clerk - <AUTHOR> http://www.nytimes.com/2007/09/16/books/review/Freudenberger-t.html?ex=1347595200&en=8d8278c72cdbe6a5&ei=5090&partner=rssuserland&emc=rss&pagewanted=all

<comment><USER2> I read a book on Turing by the author .. and well .. I dont recommend it at all. He seems overly obsessed with sexual themes has no understanding of the hacker and scientist mindsets and no understanding of the maths whatsoever. After reading that book, I am not thinking of even looking at this book. edit : At least they explicitly claim this book is a novel. The one on Turing masquerades as a biography.

<comment><AUTHOR> I haven't read Leavitt's book on Turing, so I can't comment on it.

I have read "Alan Turing: The Enigma" by Andrew Hodges, which was excellent, both in the biographical details and the mathematical details.

<comment><USER2> Yes i picked up Hodges' book later and I also recommend it.

</comment></comment></comment><comment><USER3> I read the new york times article. I get the feeling that it draws too much attention to the personal, emotional relationships of Hardy, Ramanujan and others and dilutes the genius each one of them were. It definitely would be a good read once you are through with the brief introduction into their professional lives.

I myself being too obsessed with mathematics loved this biography of Ramanujan - The Man Who Knew Infinity: A Life of the Genius Ramanujan. ISBN:0671750615

<comment><AUTHOR> I agree with you that it does draw a lot of attention to the personal, emotional relationships of Hardy, Ramanujan, Littlewood, and so on. But, for someone who has already read and loved "A Mathematician's Apology" and studied math in college, reading about these personalities can be quite fascinating. Of course, since this is a novel, it's hard to say what is surmise, what is fact, and what is invented. I never was able to find much biographical material on Hardy (I was only able to find 2 pictures of him (this was in the 80s before Google)).

I need to read the book on Ramanujan you mentioned, though.

</comment></comment><comment><USER4> I remember reading in Nobel laureate S.Chandrasekhar's biography,that the Royal Society's records on Ramanujam would be made public.It's long past that date.I wonder what happened.

</comment><comment><USER5> Have any of you read "Meta Math!: The Quest for Omega" by Gregory Chaitin? I just started it and so far its fascinating.

<comment><AUTHOR> I'm about half-way through it. I put it down for awhile and just started reading it again. There are nice sections on Lisp and Gödel in it. It's a good book.

</comment></comment><comment><AUTHOR> This book has been out for awhile, but I just started reading it and am having a hard time putting it down. If you're interested in G.H. Hardy or Ramanujan, you should definitely read it. Of course, it's a novel, but the portrait of Hardy is fascinating.

<comment><USER6> Added it to my list. Looks like a lot of fun. Thanks!

</comment></comment><comment><USER7> what's the point of this post? why is any of this interesting????? what am I missing?

why would anyone care to read "fictions" about sexual inclinations of big minds (Hardy and undoubtedly huge mind of Ramanujan) when we don't even know/understand completely the works of these great minds?</comment>


San Francisco residents can now switch to 100% wind power - <AUTHOR> http://CleanPowerSF.com <comment><USER2> It's only accounting theater. The electrons still come from the same sources.

</comment><comment><USER3> That's super cool, but doesn't change the whole problem of exploiting planetary resources for personal gain

<comment><AUTHOR> Not sure which problem you are referring to and would like to hear more. It's cool that you can go to a website, spend 5 mins to fill out a form and start getting emission free power. A good step in the right direction.</comment></comment>


Apple's Unsolicited Idea Submission Policy - <AUTHOR> https://www.apple.com/legal/intellectual-property/policies/ideas.html <comment><AUTHOR> Does this mean that Apple will never improve its products based on user- generated feedback?

<comment><USER2> It's probably more that they don't want to deal with people showing up after a product/feature launch claiming compensation or threatening to sue, and to not have to avoid doing something just because someone might have submitted a similar idea earlier.

</comment></comment><comment><USER3> This is pretty standard for most large companies.</comment>


J Can be Readable - <AUTHOR> http://kukuruku.co/hub/funcprog/j-can-be-readable

<comment><USER2> I think being extremely succinct is one of J strengths. You can trade it for better readability, of course, but you don't really have to. As I read somewhere, J is meant to be read with the help of J system. You have at least two ways of visualising how expressions are parsed and once you know this (and it can be a little hard to figure out yourself in more complex J expressions) you can just execute bits of the expression to see what they do. With practice you start to see idioms (there are many in J cookbook) which reduces the number of parts of expression you need to execute.

I like J because it forces me to think differently and I don't mind spending extra time on writing and (trying to) reading it. I imagine in the production setting it would matter more, so I'm not saying that the second version of sudoku solver in the article is somehow "wrong". I just wanted to note that it's not absolutely impossible to use J in it's succinct, tacit form, both for writing and reading.

Anyway, I'm very happy that J gets some attention. It's a great language!

</comment><comment><USER3> I hadn't known that J had any Korean connection. Does it, or is this being used in the sense of "it's Greek to me"?

<comment><AUTHOR> The sense of "it's Greek to me". J is an extremely cool tool. We are preparing much better article about this language, which will be available very soon.

<comment><USER4> I've never heard that phrase before. Honestly it's sort of confusing.

</comment></comment></comment><comment><USER5> That distinction between `while` and `whilst` is a humdinger.

</comment><comment><USER6> If your code couldn't be understood by an intern, you shouldn't write it.</comment>


Build New Games - <AUTHOR> http://buildnewgames.com/ <comment><USER2> This is slightly off-topic but does anyone know how pages on this site load so quickly? It's almost instantaneous on my computer.

Does it use something like this? <http://alexmaccaw.co.uk/posts/async_ui>

<comment><USER3> You can check using the network tab in the webkit inspector, or firebug. I don't see any async loading.

The html pages have this header:

        Transfer-Encoding:chunked

This means the html is streamed. The response on the sever-side is near- instant, only being hit for DNS the first time, and just the round trip latency the second. Due to the streaming, and the CSS being included at the top, the css is loaded super fast, in parallel with the html. In less than 100ms (for me), most things required to render the page are loaded up.

</comment></comment><comment><USER4> "push the boundaries of game development on all platforms."

\- funny thing for Microsoft to say, no? I thought they were scared of denting Windows' relevance. Anyone know what their strategy is with this?

</comment><comment><USER5> Ironic that this is sponsored by IE, and IE is the one browser holding back cutting-edge browser-based games.

<comment><USER6> Times have changed.

"IE9's smoothness on the other hand is remarkable. Of all browsers and systems I tested, IE9 subjectively produced the best results."

<http://www.phoboslab.org/log/2011/08/are-we-fast-yet>

<comment><USER7> How 'bout that WebGL? Without that, I don't give a fuck.

EDIT:

I'll elaborate. Go here ( <http://www.caniuse.com/#cats=JS_API> ) to follow along if you're playing the home game.

The problem is that for games--for smooth games with low invocation overhead-- we _really_ _really_ need to be able to use the graphics card. There are cute tricks you can do with a 2D context (including, in Three.js's case, software fallbacks for some of WebGL), but nothing that really compares to being able to write modern programmable shading pipeline code.

Without that (and the Audio API, and Orientation events), game developers don't really care about your platform.

Now, there is (in my opinion) a storm brewing for WebGL. Go here ( <http://www.khronos.org/registry/webgl/extensions/> ) to see the coming madness. There is nothing worse in the world than being under the stewardship of Khronos/ARB. The fact that W3C et al. haven't taken over or provided an alternative to this is bad.

Microsoft could do something like make DirectWebX or Web3D or what have you. That would be annoying, but sure--we've been writing cross-API rendering backends for a decade and a half now, and so this wouldn't be terrible. Even better, Microsoft could go ahead with a WebGL implementation that calls down into DirectX.

Best, Microsoft could leverage their experience with good API design--don't scoff, seriously; compare OpenGL and the latest DirectX versions--and work with the W3C and browser vendors to fix some of the yawning holes in WebGL.

( For example, killing off the extensions mechanism entirely in favor of "Is this Web3D 10 compliant? If so, you get this and don't worry.", or a useful capabilities structure. getParameter() is kind of useful, but having a guaranteed caps baseline is nice. )

<comment><USER4> WebGL can also render twice as fast as canvas 2D for 2D games. So it's a nice perf boost even for 2D. Not to mention shaders.

</comment></comment></comment></comment><comment><USER8> Ooh, the irony.</comment>


Javascript: is 'this' a code smell? - <AUTHOR> http://www.markbernstein.org/Nov10/Javascriptisuthisuacodesme.html <comment><USER2> This article has very little content beyond a vague complaint about the keyword 'this' without actually showing of examples of the problem.

It is not as if you have to look far javascript awkwardness - you just have to live with some small but ugly workaround. My guess in this case aliasing "self" to "this" at the top level of deeply nested objects would probably solve the problem.

<comment><USER3> I second ... er ... this. I read the article and was pretty much 100% confused.

</comment></comment><comment><USER4> `this` is not a code smell, but trying to do variable hiding/encapsulation of attributes through closures leads to grotty code. Use the leading underscore convention. It's worked in Python for years.

The article author will also be a lot happier when he realizes that Javascript might look like Java but it really wants to be a lisp.

<comment><USER5> To me, Javascript seems headed in the direction of Self, not Lisp. Not a bad place to end up, by any means, but why do people think Javascript is trying to be Lisp in particular? (I know Eich was influenced by Lisp, but so were ML and Smalltalk.)

Sometimes I wonder if people just mean, "Wow, Javascript is actually a really expressive, dynamic language, once you get past all the idiosyncratic DOM stuff", but don't know enough other non-ALGOL languages to see that expressiveness isn't just a Lisp thing. Because hey, it doesn't have s-expressions, macros/static metaprogramming, an explicit compile-time phase _at all_ , etc. It has much more in common with Lua or Self than Lisp. It could have been a really awesome language if the browser wars hadn't stunted its growth.

<comment><USER4> > why do people think Javascript is trying to be Lisp in particular?

The reason I said lisp is because Brendan more or less always mentions he wanted to implement a scheme interpreter but Netscape marketing insisted that it look like Java.

As for more closely resembling Self/Lua, I'd largely agree if for nothing other than the obvious object system similarities. On the other hand, I think the idiosyncrasies of javascript like `this` and call/apply, the enforced n-arity of functions, and a lot of the 'convert it to a string' fallbacks (think lisp 1) were attempts at fitting lisp concepts onto the self-like object system. Of course, I have no basis for this so I'm probably wrong, but it makes me feel better when I have to explain them.

I will note that JS is moving into limited metaprogramming with the harmony proxies proposal. I also consider destructuring (another harmony proposal) to be a more functional concept than self/lua, but I actually don't know where that started.

</comment></comment></comment><comment><USER6> The syntax is definitely awkward. But efforts like coffee-script <http://jashkenas.github.com/coffee-script/> are here to alleviate some of these pain points.

<comment><USER7> The main problem with JS "this" is that in a language where everything else is lexically scoped, "this" is dynamically scoped -- taking the value of whatever object the function happens to be attached to at call time. To use a Ruby metaphor, imagine if "instance_eval" were the default way to call a method.

One of the main features that CoffeeScript adds to help with "this" issue is the bound function literal (the fat arrow). A regular function looks like this:

        add = (num) -> this.value += num

And compiles into the regular JavaScript you'd expect:

        var add;
        add = function(num) {
          return this.value += num;
        };

However, if you define the function with a fat arrow instead:

        add = (num) => this.value += num

You'll get a function bound to the current value of "this", and when you pass the function off to another object as a callback -- a DOM event handler, or success callback from an Ajax request -- the value of "this" doesn't change.

Here's perhaps a better example, from jQuery:

        var self = this;
        $(".row").bind("click", function() {
          this.setText("Clicked!");
        });

And in CoffeeScript, without the "self = this" bit:

        $(".row").bind "click", =>
          this.setText "Clicked!"

</comment></comment><comment><USER8> Both Python and Lua share this characteristic with Javascript. Is there a name for this language feature, or for languages that share it?

I tend to think of them as "bag-of-things" languages, since they also all share the fact that objects are just tables/dictionaries, and the only thing that distinguishes an attribute reference from a method call is the "()" at the end. Certainly there's a more accepted nomenclature?

<comment><USER9> What you're terming "bag-of-things" languages can probably be more aptly described as languages which have both dict/tables/objects and first-class functions.

While there isn't really a term (that I'm aware of) specifically for the this/self convention, both are idiomatic examples of dynamic scoping (compared to lexical scoping); that is, scope is determined at runtime by the most recent stack frame to define a given variable (ie, foo defines "this", then calls "bar", bar sees "this" as it was defined by foo), rather than at lex time.

<comment><USER8> While there's a correlation between dynamic scoping and explicit "this", it isn't universal: Ruby being the obvious exception.

</comment></comment></comment><comment><USER10> I'd say this guy is not adapting to the expressiveness of the language. He wants objects, but he's using a prototypical closure oriented language. 'this' is a needed construct to deal with the malleable scope contexts that closures provide.

<comment><USER11> It does make me question why the books and tutorials I have read on JavaScript want to cover so many object-oriented techniques. Why not treat it more like a functional or "prototypical closure oriented" language? Perhaps the author is on to something.

<comment><AUTHOR> Because it's so much more ironic to brutalize the language with classicist inheritance and call it 'Prototype.js'

</comment></comment></comment><comment><USER12> Recently I have been having a good time developing a large program with this classical inheritance pattern.

      Person = function() {
        this.say = function(phrase) {
          console.log(phrase);
        }; Person.prototype.say = this.say;
      };

      Developer = function() {
        var mypriv = "I have encapsulation";

        this.say = function(phrase) {
          Person.prototype.say.call(this, "Hello");
          console.log("I develop "+phrase);
          console.log(mypriv);
        };
      }; Developer.prototype = new Person();

      var devel = new Developer();
      devel.say("a lot");

Coming from a C++ and Java background, I have put this pattern together from various sources: Crockford, John Resig and others. It has worked great and I dont see any problems with structuring your large JS program in this way.

<comment><USER7> Please, please don't spread this "object factory" pattern any further than it's already gone. It's an incredibly inefficient way to do OOP in JavaScript.

Every time you create a new instance of a Developer, you redefine every single function. This makes instantiation far slower than it would be if you used prototypes, and leaks memory like crazy: N Developers means N copies of each function.

So, first, it's slow -- take this test: <https://gist.github.com/459112>

Webkit: <http://tinyurl.com/2csgzez> Firefox: <http://tinyurl.com/29wd2ms>

And second, the memory use. Take a moderately-sized class, with ten member functions. The last time I benchmarked it in Chrome, using real prototypes, it takes a little under 32 megabytes of RAM to create a million instances of it. Try to create a million instances using the pattern you have above, and it spins the browser for minutes, and eats up 368 megabytes of RAM. IE just crashes.

If you're doing OOP in JS -- please use prototypes as Eich intended...

<comment><USER12> Thanks for the benchmarks, I know the tradeoff for using this pattern.

Im aware of that the function is defined in each object, and that it takes up memory. I dont agree that the memory is leaked, it is reclaimed when the object is deleted.

As I never create millions of instances of objects, and this patterns dont seem to have a measurable impact on the rendering loop in my project, Ill just continue using it for now.

I would call the pattern you propose to be the "object factory" pattern. And I am curious how to do classical inheritance and encapsulated vars with it.

</comment></comment></comment><comment><USER5> Dijkstra would not have liked 'this'.

</comment><comment><USER13> [http://www.amazon.com/JavaScript-Patterns-Stoyan- Stefanov/dp...](http://www.amazon.com/JavaScript-Patterns-Stoyan- Stefanov/dp/0596806752)

Boom. Get it while it's hot.

</comment><comment><USER14> I don't understand what the issue with explicitness is. Python uses self and people seem to be pretty OK with that.

<comment><USER5> It's really not a big deal. Just a bit cumbersome.

Lua has syntactic sugar where table:method(arg1, arg2, ...) is exactly equivalent to table.method(table, arg1, arg2, ...). All it really does is establish a convention and eliminate "self" from argument listings in methods, but it's still handy - its presence is an immediate sign of OO-style code.

<comment><USER15> Right, I in fact like using the "this" reference, I use it in Java and C# as well when accessing any member variable.

For me, it helps the way my mind thinks, I instantly know hey, this thing is not local, be careful.

The bigger issue to me is that functions can be passed independent of class in JavaScript, so you have to have some way of making sure the object tags along for the ride.

There are various implementations to do this such as Dojo's dojo.hitch(this, "foo"); which, is not that bad given that you can hand stuff off for callbacks, it is a pretty good trade off. It just takes some getting used to, but the JavaScript is a poorly designed language is a tired meme. I have used it from the day it was released and never saw what all the fuss was about. There are some design decision I would not have made, like no matter where you scope a variable in a routine it is visible to the entirety of that routine. But none of it is so offensive as to earn it the reputation it has had. Further subsequent standards also went a long way to improve on many of the early shortcomings as well.</comment></comment></comment>


Dear HN, I wrote a Firefox extension that strips out google links from adwords - <AUTHOR> http://nayna.org/blog/?page_id=35

<comment><USER2>
      Since it goes straight to your destination,
      Google cannot store data on your behavior.

I think this is a very cool idea and does provide some level of privacy, but it shouldn't be overstated. Google still has your search history (arguably more sensitive than the actual search result clicked), and in many cases can back into your click behavior via Google Analytics/Adsense code which is embedded on many, many sites (unless you're scrubbing referrer data as well).

</comment><comment><USER3> While I do understand what you're trying to do, I think this might do more harm than good for the advertisers who are paying for these ads. It will probably make it hard for them to track how well their different SEM campaigns are converting and ruin all of the analytics collected by both adwords and programs like google analytics. If the 'google-infested' link (as one person put it) somehow has the campaign tracking query parameters in it (I haven't really looked into it yet) It might be a good idea to keep it as part of the sanitized url so as not to mess with any of the hard work that the advertisers put into their campaigns.

<comment><USER4> I must have missed where the author mentioned this was intended to do anything in favor of (or harm to) the advertisers who have bought the ads.

</comment></comment><comment><USER5> My beef isn't really with their tracking of my links, but it's annoying to me to do a search and not be able to "right click > Copy link location" on a search result. After installing your (otherwise great) plugin, I still get the google-infested link if I right click on it. Worse, the link stays google- infested even if I left-click on it afterwards. If you could fix this, this plugin would become as essential to me as AdBlock.

<comment><AUTHOR> Shaddi, Could you help me understand? The original google links are gone if you have this installed. That means that if you do a 'copy link location' on a sponsored link, you will get ONLY the sanitized URL. I tried it out, and do not see the behavior you are reporting.. Maybe I am misunderstanding what you are saying?

<comment><USER5> Yes, that's what I'm describing. Here are my steps to repro:

1) Search something on google.com (for example: unc)

2) Mouseover on a link shows actual address (for instance, <http://www.unc.edu>); clicking on the link goes directly to page.

3) Right click, copy link location. Paste that link:

\- Expected result: <http://www.unc.edu>

\- My example result: [http://www.google.com/url?sa=t&source=web&ct=res&...](http://www.google.com/url?sa=t&source=web&ct=res&cd=1&ved=0CA4QFjAA&url=http%3A%2F%2Fwww.unc.edu..). (clipped for brevity)

4) Mouseover on same link or click on it.

\- Expected result: <http://www.unc.edu> (as before)

\- My result: [http://www.google.com/url?sa=t&source=web&ct=res&...](http://www.google.com/url?sa=t&source=web&ct=res&cd=1&ved=0CA4QFjAA&url=http%3A%2F%2Fwww.unc.edu..). (etc)

If it helps, I'm running FF 3.5.6 on Win7; I can try on Linux and OSX later tonight if that would be useful.

p.s. -- add some contact info to your profile; I'd prefer to email directly rather than pollute this thread with bug reports.

<comment><AUTHOR> I have added my email address to my profile. Let's take it offline. I have tried to reproduce what you are saying (firefox 3.5.6 on Win 7) and failed. I do not see how what you are saying is possible. If you are going to the actual URL directly, a right click has to result in the same link being copied. That is the behavior I am seeing.

<comment><USER5> I'm full of fail today -- not seeing your email in your profile (n.b., email field is not public; it must be in your "about" section). Shoot me an email and we'll see if we can figure this out... I don't know why it's happening, I'm just reporting what I'm seeing.

</comment></comment></comment></comment></comment><comment><USER6> Why not just a greasemonkey plugin?

</comment><comment><USER7> Does this then allow you to click on the ads at right without the advertisers paying for the click?

If so, advertisers will be pleased, Google will be pissed.

<comment><USER8> Speaking in magic unicorn fantasy land terms:

If this were true and Microsoft made that a default feature on IE, what would happen? Assume that Google does not find a way around the issue (like I said, magic unicorn fantast land scenario).

<comment><USER9> > If this were true and Microsoft made that a default feature on IE, what > would happen?

A lawsuit? Microsoft would be altering Google pages without consent from Google and presumably without the consent of the user.

It's not too different from this: what if IE changed Google search results themselves?

</comment></comment></comment><comment><USER10> As an adwords user, this is crappy. I do not want free untraceable clicks, and I don't think people should screw Google over.

Just like adblock, I believe that if you don't like something, don't use it. Don't hack it around into something else and just leech the stuff you want. That's hypocritical and dishonest.

Does it just take you to the 'display url'? If so, it's also pretty pointless - most people can type.

<comment><USER11> Convince Google to take privacy more seriously and you may have a point. Until then we have no choice but to use tools like this to at least attempt to filter what is recorded.

And the "most people can type" comment is silly. Why have links at all then? Let's just type everything.

<comment><USER10> They do take privacy seriously. What exactly is your worry with them tracking the fact that your IP address clicked on a particular adword advert?

Silly thing is, people spend all this time+effort, when your ISP knows _everything_ you do anyway. Do you trust your ISP?</comment></comment></comment>


Ask HN: How to deploy a random forest model? - <AUTHOR> The pickle is very big, 100 MB, and we need to serve online predictions, so batching is not an option. <comment><USER2> I can help you set it up on AWS Serverless. Very cheap and scaleable.</comment>


My Code Fellows project: fun with Stripe - <AUTHOR> http://jeffreyhorn.com/blog/2013/06/03/fun-with-stripe/

<comment><USER2> Nice looking blog! What Octopress theme is that?

</comment><comment><USER3> Great work Jeff!</comment>


Show HN: Video upload and sharing with meme and drawings - <AUTHOR> http://somevid.com/about

<comment><USER2> The site is very lightweight. Here's something I put together: [http://somevid.com/Rmm9jQxoOmtvRDAV3Ayq](http://somevid.com/Rmm9jQxoOmtvRDAV3Ayq)

you should link to the homepage [http://somevid.com](http://somevid.com)

<comment><AUTHOR> Unfortunately, I already posted my link in the news section and not able to delete it. Thanks for trying out the platform.</comment></comment>


Why should I work for you again? - <AUTHOR> http://evan.tiggerpalace.com/articles/2010/12/12/why-should-i-work-for-you-again/

<comment><USER2> While I agree that the job listings I see are lackluster and not enticing at all, it's partly from lack of information. Saying your work environment is great is one thing, but having me believe that is another. I did see one recently that made me believe it, but that wasn't a startup.

Another piece of missing info is always salary. I'm supposed to put in some correspondence, a custom resume and cover letter, 1-3 interviews and THEN you'll tell me how much you're paying? Sorry, not worth my time because you very likely aren't paying enough to dislodge me from my current comfortable, safe job.

And another one: Job description. Telling me I need to know X framework isn't enough. What do you expect me to be doing with it? If I'm just slicing PSDs and formatting HTML for use with that framework, forget it. If I'm getting down and dirty and really testing the edges of the framework, I'm a lot more interested.

<comment><USER3> You make a good point about salary not being listed in ads. Here's a heuristic. When it's not listed, that means "Substantially below market rate, but we'll claim otherwise." Some might then say, "But none of the ads have salaries, isn't it impossible for everyone to be below market rate?" The answer is no. Those who pay at and above market rate don't have problems hiring and never have to resort to advertising positions in classifieds. This explains why all these unfilled positions that are advertised month after month are all at below market rates.

</comment></comment><comment><USER4> You know who should read this post.... Recruiters

When I was looking for a gig last year, a recruiter thought that if he re wrote my resume, that I would have a better chance of getting the job. I doubt he realized that in this industry, the interviewee is interviewing the company as well.</comment>


Reeder for iPad's UI completely ripped off - <AUTHOR> http://reederapp.com/ripoff/

<comment><USER2> The link is giving me a 403 right now but you can find screenshots over at [http://thenextweb.com/apple/2010/12/22/when-is-design- inspir...](http://thenextweb.com/apple/2010/12/22/when-is-design-inspiration- just-outright-theft/) .</comment>


Cuba's Had a Lung Cancer Vaccine for Years, and Now It's Coming to the U.S - <AUTHOR> http://www.huffingtonpost.com/2016/02/22/cuba-lung-cancer-vaccine_n_7267518.html <comment><USER2> In a bit of Huffington Post SEO, I just learned that the nominal date in the URL like ...com/2016/02/22/cuba-lung-cancer-vaccine_n_7267518.html is meaningless.

This is a repost of [https://news.ycombinator.com/item?id=9547302](https://news.ycombinator.com/item?id=9547302) from some months back (and three comments). Only that posting linked to ...com/2015/05/14/cuba-lung-cancer-vaccine_n_7267518.html , which has the same supposed timestamp inside the article, 05/14/2015 .

In fact, I'll rewrite the URL so it appears to be from Christmas 1995; [http://www.huffingtonpost.com/1995/12/25/cuba-lung-cancer- va...](http://www.huffingtonpost.com/1995/12/25/cuba-lung-cancer- vaccine_n_7267518.html) . It points to the same thing.

Is this common practice these days?

<comment><AUTHOR> not sure. but if you look at the comments in the article they mention it's a repost with additional info re: Obama's visit to Cuba.

</comment></comment><comment><USER3> I doubt so.

Despite the selfless application of miraculous promises, In Cuba, cancer has been reported as the leading cause of death in the population aged 1–64 years, and the second cause of death after cardiovascular diseases in the population aged ≥65 years.</comment>


Linking Electric Vehicles to Solar Irrigation - <AUTHOR> http://innoventures.net/?page_id=4 Soket (http://www.soket.me/index_e.html) will be presenting at Development Innoventures and Salon (Cambridge, MA).
Come learn about, and brainstorm with new social venture, "Soket", a new corporate intrapreneurship model to stimulate innovation for poor communities in the developing world. Learn about their pilot project, in collaboration with Nissan, to repurpose batteries from electric vehicles as storage for solar powered irrigation systems.
What do you think about using Intraprenuership as innovation engine for Development? <comment><AUTHOR> Do you think intrapreneurship could serve as an innovation engine for Developing World?</comment>


Ask HN: Is it feasible to recreate Alpha Zero? - <AUTHOR> I'm looking for a toy project to learn more about AI and ML and I was thinking trying to recreate what Deepmind (following their paper) could be a good idea. Do you think it's feasible? Or what are some other good toy projects to get started? <comment><USER2> You won't be able to train it as much, it won't get so good -- but you would still make a pretty mean chess engine that way.</comment>


Texas becomes first state to require warrant for e-mail snooping - <AUTHOR> http://arstechnica.com/tech-policy/2013/06/texas-becomes-first-state-to-require-warrant-for-e-mail-snooping/ <comment><USER2> It's refreshing to see some glimmer of decency from any political entity.

</comment><comment><USER3> "..On Friday, Perry signed HB 2268, effective immediately. The law shields residents of the Lone Star State from snooping by state and local law enforcement without a warrant. The bill was sponsored by Jonathan Stickland, a 29-year-old Republican who represents an area between Dallas and Ft. Worth.

Also, the current- June 24, 2013, cover of TIME is Snowden, Swartz, Manning

"I kind of feel we are at the dawn of it"

-author Gabriella Coleman finishing book on Anonymous</comment>


Show HN: Meet Carly, a voice-activated health coach for Amazon Echo - <AUTHOR> http://www.logisome.com <comment><USER2> Between this and the couple articles recently about kids interacting with the Echo, it looks far more promising than I initially thought.

"Alexa, tell Carly I weight 160" or

1) Take out my phone.

2) Open the folder to open the app.

3) Hopefully I'm already logged in.

4) Hit the button to record a new weight.

5) Type in my weight.

6) Save.

Considering Doctors have such a hard time getting people to follow the simplest instructions, you're going in an interesting direction!

</comment><comment><USER3> Terrible branding given the association with Carly Fiorina!</comment>


Search Google for YouTube and click the first link - <AUTHOR> https://www.google.com/search?q=youtube <comment><USER2> ??? Whats there in it?

<comment><AUTHOR> With an ad blocker disabled, the first ad says 'youtube.com', and redirects to a malware site.

[http://imgur.com/a/kgG85](http://imgur.com/a/kgG85)

</comment></comment><comment><USER3> meta</comment>


Git freebase - <AUTHOR> http://ericrie.se/blog/git-freebase/ <comment><USER2> The permalink is broken for me (404) but it's still listed on the blog landing page: [http://ericrie.se/blog/](http://ericrie.se/blog/)

</comment><comment><USER3> The author never elaborates on why exactly he thinks this is needed. I think reading between the lines the reason is that if someone's done a merge/rebase and screwed up a conflict resolution the information about how that's happened is lost forever, so let's come up with some hack to save that information in case there was a conflict.

If that's the case, a solution that would categorically lose less information would be:

1\. You're going to push branch you/whatever

2\. You rebase you/whatever on on master

3\. You solve whatever conflicts you have

4\. You make a non-fast-forward merge commit to indicate that you/whatever was rebased as a series with a name

5\. You push your conflict resolved & rebased you/whatever branch to master

6\. You push the original you/whatever as unrebased/you/whatever

Now you have the original unrebased commits in your repository, you can now simply inspect your history to see what the original commits were, how they conflicted, and how those conflicts were resolved.

Once branches in unrebased/* get old enough you just delete them. In my experience the importance of seeing how someone did something in source control is inversely proportional to how recently it was committed.

<comment><USER4> In addition to losing less information, your solution allows you to keep merge conflict resolution off of master entirely (if that's your choice).

<comment><USER3> Indeed, but actually much more importantly it doesn't try to "freeze" derived information that you could just as well construct after the fact from raw information.

This is a very important general concept in Git. It's reason for why it doesn't have an explicit "rename" primitive, instead you construct that information after the fact from the raw history.

Similarly if you're looking to do forensics on merge conflicts it's much better to have the raw original information.

As an aside, the author also seems to be making the dangerous assumption that just because the default merge driver doesn't indicate something as conflicting that he doesn't have to save the original information, his implementation hinges on `rebaseWithoutConflictsPossible()`.

It's possible to have logical conflicts that Git doesn't detect. E.g. if your addition of some code uses a function that's been removed from the upstream.

Thus if you really want to cover all these cases just push your original unrebased branch, then rebase it and push the result (with conflicts, if any, resolved). That gives you all the information you need for after the fact forensics, while keeping your history simple for casual inspection.

</comment></comment></comment><comment><USER5> Um, all I see is:

> Oops! That page can't be found.

> It looks like nothing was found at this location. Maybe try a search?

<comment><AUTHOR> Proudly powered by WordPress my ass... It should be embarassed.

</comment></comment><comment><USER6> Reminds me of this (fake) interview with Linus where he points out the "easter egg" in git:

"Eventually you'll discover the Easter egg in Git: all meaningful operations can be expressed in terms of the rebase command. Once you figure that out it all makes sense. I thought the joke would be obvious: rebase, freebase, as in what was Linus smoking? But programmers are an earnest and humorless crowd and the gag was largely lost on them."

[http://typicalprogrammer.com/linus-torvalds-goes-off-on- linu...](http://typicalprogrammer.com/linus-torvalds-goes-off-on-linux-and- git/)

<comment><USER7> This black tshirt attitude is so true. Git simply has zero focus on usability and actively avoids hiding implementation details. Critizise this and you will get bashed by the shirts!

Related: [http://git-man-page-generator.lokaltog.net](http://git-man-page- generator.lokaltog.net)

</comment></comment><comment><USER8> Interesting. Basically a commit to remember a conflict when rebasing. Not entirely my cup of tea as I prefer less noise but helpful for some if conflicts generate lost work too often. I find it annoying when see commits on a PR that says "fixing rebase conflicts" etc. "rebase continue" should have inlined those changes to the relevant commit.

My simpler suggestion to avoid unnecessary merges is to try to wrap an alias around merge that simple just prompts whether they tried to rebase first. If you need to merge it often smells like a branch has existed too long.

</comment><comment><USER9> i'm pretty sure the simpler answer to this is to always merge, never use a fastfoward, never rebase and to accept history as what it is instead of trying to change it to make it 'more manageable' or whatever.

changing the past to make a single linear thread is just weird imo.

depending on what rebaseWithoutConflictsPossible() is doing it might be helpful though - doing a rebase is an opportunity for the merging algorithms to cause subtle problems, and taking things out of the context in which they were actually made reduces the utility of the history for seeing what was done. the more people you have working on different things at once, the more likely these problems will manifest as something real. if this rebaseWithoutConflictsPossible() check is looking for any potential conflict, not just the ones the algorithms get stuck on then i can see the utility... but its still not necessary if you never rebase and never fast-forward.

"git recursive merge doesn't screwup x% of merges in some linux kernel repo" isn't an argument for it being useful in x% of cases so much as an argument for it causing damage in (100-x)% of cases. the many options available to tweak its behaviour to make it safer should be a giveaway that the merge feature is dangerous out of the box... the difficulty of resolving conflicts and dealing with merges is usually greatly overstated. a lot of programmers seem to have 'mergephobia'... i'm pretty sure we should just suck it up and do our jobs - learn that merges aren't that hard, and spend our time thinking about more important things. :)

</comment><comment><USER10> If your branch conflicts, rebase off master (the branch you're making a pull request to). Then it will merge cleanly. There's no practical downsides to having merge commits in master, but you should never (or rarely) see merge conflict resolution commits. You should be able to rebase to a mergeable state before merge.

<comment><USER11> If you use a pull request workflow then at the very least, you're forced to merge master into your branch (if there are conflicts) before merging your branch into master.

You should never (not even rarely) resolve merge conflicts on master...

<comment><USER4> You probably know this but just to be clear, to resolve conflicts on your pull request branch, you may merge master into your branch _or_ rebase that branch on master; GitHub makes sense of either kind of resolution.

</comment></comment></comment><comment><USER12> > Traditional techniques in git are terrible at documenting conflicts.

What's the reason to document rebase conflicts?

<comment><AUTHOR> Just the idea that all conflict resolution is fallible and should get a second look. I don't see why a rebase conflict should be treated differently than a merge conflict.

</comment></comment><comment><USER13> How is this different from git-smart?

<comment><AUTHOR> I haven't used git-smart, but I read through the docs and it seems that at it's heart it does a rebase -p which won't ever try to see if a merge can succeed where a rebase conflicts.

</comment></comment><comment><USER14> Where'd it go?

</comment><comment><USER15> can you do it as a git alias or a binary you can install as git-freebase?

<comment><AUTHOR> I'm working on a bash script now. If it gets popular maybe it will make it into git flow, or tig, or even git itself.</comment></comment>


How to A/B Test Using Javascript in Your Posterous Blog - <AUTHOR> http://themetricsystem.rjmetrics.com/how-to-ab-test-using-javascript-in-your-poste

<comment><USER2> I say this all the time, but be very very careful split testing in JavaScript. It is best left for very small elements on your site. Otherwise your results will be misleading. Once you get to a nontrivial size implement it server side.

<comment><USER3> Can you elaborate on why you think the results will be misleading? Does it have to do with data integrity issues of some sort?

<comment><USER2> Because for large elements there is a delay, especially when your user has a slow browser and is talking to a third party service that is far away.

For example, say you ran a company that had about 100 paying users, almost all of which were in the SV tech scene. A fine opportunity to use JS because they all have fast browsers and the odds that the delay between KISS Metrics or Mixpanel and them are fairly low.

If, on the other hand, you sell Bingo Card Creators to thousands of teachers around the globe the latency is going to kill you. A teacher in England will see the button (s)he wants to click on, then all of a sudden it is gone and replaced with a intro video, or, even worse, the prices have all gone up and there are different options on the pricing page.

Not only is your split test reporting the wrong winner (because of a negative bias on the B side of the test) but it can also erode the confidence visitors had in your service.</comment></comment></comment>


How Important Is Accounting for an Entrepreneur? - <AUTHOR> And what do I need to know more than the runway and burn rate? <comment><USER2> Very important to take care of. You're responsible to government, investors, your team, and your customers when it fails.

Not so important that the entrepreneur must do the accounting. It's a skill that can be hired out better than other skills. I wouldn't hire a financially illiterate person to run a startup, but I wouldn't normally look for an accountant to run a startup.

</comment><comment><USER3> Very. Assuming you're in the US, I'd recommend reading the IRS literature related to your type of business (C-Corp, S-Corp, Partnership LLC, Sole Proprietor LLC).

If you're business structure is "pass through" (ie. S-Corp, Partnership, Sole Proprietor), then you should also read the IRS 1040 instructions and do your taxes (mostly by hand) and file here (for free): [https://www.irs.gov/filing/free-file-fillable- forms/](https://www.irs.gov/filing/free-file-fillable-forms/)

The IRS guide will tell you how you should handle your accounting, what you're allowed to claim as business expenses for tax purposes, how to handle employees vs contractors, and more. Also tax deductions are crucial for businesses as they'll help offset expenses to make your business more viable. Good luck!

</comment><comment><USER4> Financial statements are a must — knowing what each means, tricks used, how to present them, understanding what each financial statement exposes, and so on.

Then, understanding the various reasons accounting exists: taxes, official records, but also for your own eyes and brain — they represent the health of your business!

</comment><comment><USER5> cant overstate the importance of accounting knowledge for founders. its how you will communicate results to investors, and how you will effectively plan for the future.

if you have never managed your own P&L, i would definitely recommend taking some Khan Academy courses or something. understanding depreciation, cash flow, AP & AR are all absolutely necessary when starting a business.

</comment><comment><USER6> It is less important than product market fit at the start. Forget accounting here.

If you are already generating revenue and there is month on month increase, then accounting is more important than product development. At this stage just hire an accountant.</comment>


Einstein: "Why Socialism?" - <AUTHOR> http://monthlyreview.org/2009/05/01/why-socialism?

<comment><USER2> "Why Socialism?"

Mao's Chinese Communism

Hitler's National Socialist German Workers Party

Stalin's Soviet Bolshevism

Saddam Hussein's Arab Baath Socialist Party (Iraq edition)

Bashir Assad's Arab Baath Socialist Party (Syria edition)

Slobodan Milosovic's Serbian Socialist Party

Pol Pot's Khmer Rouge

Benito Mussolini: Member of Parliament for the Italian Socialist Party at age 24.

The Ayatollah Khomenei's Islamic Socialism (as he called it)

</comment><comment><USER3> It may not be obvious from the name of the publication, but Monthly Review is a Marxist magazine, therefore their view and what they publish is far from neutral. Regarding what Einstein had to say, it can be easily detracted by multiple arguments that are usually a cause of long and heated discussions on HN for those who do not understand economics and do not support free markets. Einstein was certainly a brilliant physicist, but genius does not always translate well in other disciplines.

<comment><USER4> To be fair, Einstein addresses his inexperience in the field of economics in the first few paragraphs, and argues that the "[facts deriving from the science of economics] belong to [Veblen's "predatory" phase, i.e. capitalism] and even such laws as we can derive from them are not applicable to other phases. Since the real purpose of socialism is precisely to overcome and advance beyond the predatory phase of human development, economic science in its present state can throw little light on the socialist society of the future."

In other words, he claims that a lack of expertise in economics translates into an inability to describe the rules of a capitalist state, but not an inability to describe the resulting observable socioeconomic effects.

</comment></comment><comment><USER5> The socialism vs capitalism debate is always super interesting. But I think from a practical standpoint, changes in technology seem to be far more achievable and impactful than fighting to change culture. The way I see history technology changes the world, and culture and society changes to keep up with it.

We all kind of understand this platonic ideal where everyone is happy, not overworked, and like or atleast don't resent their jobs. But our societies have gotten too big, complicated and interdependent. Life is far more complicated and necessarily imperfect these days. Not that I don't respect people fighting the good fight in the bowels of megacorps and governmental beauracracies to make things better. We owe a ton to idealists and do-gooders. But corporations and governments are machines, not people. A machine doesn't understand the concept of 'doing the right thing'. Our best hope in the quest for idealism is to accept that they are machines, and make them better or less important through new tech.

<comment><USER6> Relevant: [https://www.quora.com/Autonomous-Driving/With-autonomous- car...](https://www.quora.com/Autonomous-Driving/With-autonomous-cars-now- passing-legislature-in-Arizona-and-California-what-other-hurdles-does-the- technology-face-in-getting-to-the-general-public/answers/1244934)

</comment></comment><comment><USER7> What if the needs of society and the needs of the individual are in opposition? Who works the coal mines in socialism's utopia?

<comment><USER8> How are these conflicting? The people who cannot run a mine or start a new mine must work in one.

Oh, and the doctors take less pay because they like being doctors.

<comment><USER7> There are a lot of people who can't run a mine or start a new one. There are very few who would chose to work in one. How is it determined who 'must work in one' (coal mine), and who is free to pursue another job like park ranger? I'm also curious what 'must work' entails.

Doctors may like being doctors, but I'm sure there are more who would sign up to be neurologists than gastroenterologists.

</comment></comment></comment><comment><USER6> Is there a word for market based socialism? You know capitalism with hair cut upside (taxation) and a hard floor protected low side (poverty).

For example - in a developed world most people don't want anyone (lest themselves) to starve, be unable to afford an education for their children, be unemployed or be unable to access life saving healthcare.

However we must also encourage innovation and hard work (don't cap upside - just hair cut it for public utility use - aka taxation) - so people should be allowed to earn more - but they are not allowed to fall below the poverty line - ever. This is good for a mass market based economy that requires a large middle class with a decent amount of disposable income (1 rich person = 1 pair of jeans, whereas for an equivalent amount of wealth 1000 middle class people = 1000 jeans from the rich person).

If the pie is growing just like the market fundamentalists say - well then there's no problem with this. Just keep growing - you'll have more in the end - and pay for your disproportionate benefit from the use of public/common goods - aka suck it up and share children.

Indeed - with the automation I see coming within the next 2 decades - a lot of these free market fundamentalists will be, quite frankly, out of a job.

I look forward to mass unemployment.

<comment><USER9> I call it "band-pass capitalism". Its socialism at the top and bottom, but a band in the middle is capitalism.

The upside is that no one is ever homeless, the downside is that no one can really make enough to buy a Caribbean island just for themselves.

I'm in favor. It seems like what we're fumbling towards anyway, we're just doing it poorly right now.

</comment></comment><comment><USER8> Genius, Einstein -- as always.</comment>


Lecture 17: How to Design Hardware Products - <AUTHOR> http://startupclass.samaltman.com/courses/lec17/ <comment><USER2> This lecture was a bit different from most of the course lectures and not because it was hardware focussed. I felt like it was a lot more 'high level' with less tactical startup takeaways as compared to other lectures. His slides were very elaborate, but lacked real actionable content. In many ways, they were what I'd call "business school" or "management consultant" style case study slides geared towards bringing design thinking to a larger organization. He even mentioned a couple of times- the difference between him needing to force people from different disciplines in a room together versus being able to do it sitting at a table when you're just starting out. I think that was a prime example of the difference between 'startup' thinking and 'growth' thinking. I would've loved to hear more about his process for thinking about design when they just started the company.

In any case, I did find value in his lecture and thought process around treating everything as a system (instead of looking at hardware, software, data all discretely). I've tried to capture my takeaways via publishing 22 Quotes that I took away from the lecture here: [https://medium.com/@RajenSanghvi/22-quotes-from-hosain- rahma...](https://medium.com/@RajenSanghvi/22-quotes-from-hosain-rahman-on- how-to-design-hardware-products-dcd995e4aefd)

<comment><USER3> exactly my reaction. As someone pretty busy with building connected hardware systems, I made a point of watching this. It was great but I think where this comes into play is when you have an established revenue stream and the ability to move slowly and judiciously. Learned a lot, but 'startup' isn't the word that comes to mind.

</comment></comment><comment><USER4> Bright guy. Fast talker. Intricate slides. Astoundingly laborious detailed, high quality product development process. High emphasis on user experience and making the product a _habit_ in the lives of the customers.

To him, everything is a _system_ ; apparently even if he were making a five prong garden weeder, a snow shovel, or a tennis ball, he'd find a way to make it better by regarding it as a system.

Gave good insight into all the work involved. Good lecture. Likely amazing products.

One of the best people Sam put in front of the class.

<comment><USER5> Agreed, I was afraid that this was going to be a lecture that was somewhat "forced" because they wanted to make sure they included some hardware talk in the series. But it definitely wasn't, it was a really nice talk.

</comment></comment><comment><USER6> I love Hosain's story.

Until Startup School, I had no idea that the ideas for Jawbone date back to 1997, the company launched in '99, and over the last 15 years their team have endured some pretty crazy highs and lows - including Jawbone getting shut down and the team being locked out of their own offices by the board in the mid 2000s.

Video here:

[https://www.youtube.com/watch?v=ZpINPjfSlZc](https://www.youtube.com/watch?v=ZpINPjfSlZc)

</comment><comment><USER7> I am super keen to make a hardware product (I know only software), and started watching this with great anticipation. It would have been great to hear the story about their journey from 1995-2001 _. Thats would have been hugely valuable in itself. I am stuck at : How do I take my hardware idea, and make it real? How do I make a prototype (it requires an e-ink display) to know if someone will actually like it /use it? Since there are a number of HW startups on this page, thought I will ask my question. Specifically, I want to make a photo frame with an color e-ink display.

_Edit: in a sense the journey from 1995-2001 was covered in the startup school video (linked in another comment), but that was mostly about the "company". He didn't cover the "How-to" of specifically how they did prototyping, manufacturing and development in the early days. 'how to start' this stuff is what I am interesting in.

<comment><USER8> E-ink parts are a hassle to obtain in small quantities; colour even more so. And the colour tech isn't great: [http://www.engadget.com/2013/09/05/the-once- bright-future-of...](http://www.engadget.com/2013/09/05/the-once-bright- future-of-color-e-paper/)

I suspect the answer to "will people pay ~$100 for a washed out colour photo frame that is slightly less inconvenient than normal LCD digital photo frames" is "no", but you're welcome to try.

I used to work for a consultancy that did hardware product prototyping as a design service. We were good and very wide ranging but not at all cheap. The cheap DIY end is probably covered by the maker/hackerspace/arduino/rasberrypi movement which has evolved from the older ham/model railway ecosystem.

Another wrinkle is that if you want to sell electronic goods you need to consider FCC/CE/UL certifications, _and there is no minimum quantity for the rules to apply_. That increases the cost of the MVP greatly.

</comment></comment><comment><USER9> As a HW entrepreneur starting to move into software-enabled devices, his comments about the opposing forces of rapid iterating software teams and slower more conservative release hardware teams is really on point.

</comment><comment><USER3> as a hw startup founder, its amazing how heavy this feels. Obviously this is a mature, successful business but wow, its almost amazing anything gets built. Granted, what gets built is awesome.

</comment><comment><USER10> Sorry for being blunt, but this is an MBA-style slideshow with a lot of talk about abstract phases and very little substance. I feel that even for hardware entrepreneurs starting out in the same space this lecture has close to zero takeaways.

</comment><comment><USER11> Such a fantastic lecture - really enjoyed it. Great Talk Hosain! The next Steve Jobs</comment>


Cool URIs Don't Change (1998) - <AUTHOR> https://www.w3.org/Provider/Style/URI <comment><USER2> This is one of those classic, foundational documents about the Web. But it's rarely followed. Tool use has come to dominate the form that URIs take; tools are used both for delegation and to absolve humans from crafting URIs by hand. Switching tools frequently ruins past URIs.

Additionally, widespread use of web search engines has made URI stability less relevant for humans. Bookmarks are not the only solution to find a leaf page by topic again. A dedicated person might find that archiving websites may have preserved content at their old URIs.

Some of this is allowed to happen because the content is ultimately disposable, expires, or possesses limited relevance outside of a limited audience. Some company websites are little more than brochures. Documents and applications that are relevant within organizations can be communicated out of band. Ordinary people and ordinary companies don't want to be consciously running identifier authorities forever.

<comment><USER3> The web has evolved well beyond what it was envisioned to be at the time this was written - a collection of hyperlinked documents.

The reason for the eventual demise of the URL will simply be the fact that the concept of "resource" will just not be sufficient enough to describe every future class of application or abstract behavior that the web will enable.

<comment><USER4> I don't think it has evolved. I feel that it became more like a hack, on top of a hack, on top of another hack, and so on.

In the late 90's - early 2000's, HTML started to being pushed into fields that, at my opinion, were unrelated (remember active desktop?). Before you had time to react, HTML was being used to pass data between applications. At the time I was already doing embedded stuff and I remember being astonished to learn that I have to code an HTML parser/server/stack in my small 16-bit micro because some jerk thought it was a good idea to pass an integer using HTML (SOAP, for example).

In the meantime, HTML was being dynamically generated, and then dynamically modified in the browser, and then modified back in the server using the same thing you use to modify it in the browser. It's a snowball that will implode, sooner or later.

<comment><USER5> "a hack, on top of a hack, on top of another hack, and so on" _is_ evolution.

My HN username may be a case in point, drawing from a selection of twice five[0] digits due to legacy code of Hox genes: [https://pubmed.ncbi.nlm.nih.gov/1363084/](https://pubmed.ncbi.nlm.nih.gov/1363084/)

[0] "This new art is called the algorismus, in which / out of these twice five figures / 0 9 8 7 6 5 4 3 2 1, / of the Indians we derive such benefit"

[https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Ca...](https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Carmen_de_Algorismo.pdf/page1-1125px- Carmen_de_Algorismo.pdf.jpg)

<comment><USER4> You might see the Homer Simpson Car[0] and call it evolution too. But what I see is a mess, described as a sequence of hacks and bad decisions, just like HTML (and web stuff) today.

[0] [https://www.wired.com/2014/07/homer-simpson- car/](https://www.wired.com/2014/07/homer-simpson-car/)

<comment><USER6> Homer Simpsons car did not evolve at all. It was designed all in a single iteration.

</comment></comment></comment></comment></comment></comment><comment><USER7> While the main concept (Don't change your URIs!) is good, I can't agree at all with their advice on picking names, in particular the 'what to leave out' section. No subject or topic? The justification for this is flimsy at best - _' the meaning of the words might change'_ So what? People cope with this all the time in other media, e.g. old books. It's not too confusing. What's more confusing is a URI that has all the meaning removed, after all this whole URI discussion is about the human appearance of URIs. Take out the topics and you are just left with dates, numbers and unspecific cruft. If I was designing a company's website, I'm sure as hell going to put the product pages under '/products'.

FWIW, the document's own URI is terrible: '[https://www.w3.org/Provider/Style/URI'](https://www.w3.org/Provider/Style/URI') \- who could have any idea what the page is about from that? And what if the meaning of the word 'Provider' or 'Style' changes in x years from now? :) You could argue that the meaning/usage of 'URI' has already changed, because practically no-one uses that term any more. Everyone knows about URLs, not URIs. Not many people could tell you what the difference was. So the article's URI has already failed by its own rules.

<comment><USER8> IMO that's a pretty good URL. For example if you drop it often in conversations, you can remember it, since it's short enough and has no numbers or awkward characters. I would have preferred lower casing and if you try it with lower cased letters, it doesn't work, but other than that ...

No, a URL doesn't necessarily have to give you the title of the article, even if having some related words in it might be good for SEO value. If you paste it in plain text or similar, add a description to it. Here's how:

Cool URIs Don't Change: [https://www.w3.org/Provider/Style/URI](https://www.w3.org/Provider/Style/URI)

There, now the reader will know what's this about.

<comment><USER9> I don't think being able to remember URIs is particularly useful. In 99% of cases they're clicked on or shared, not recited from memory.

I'd still get far more value out of this:

[https://www.w3.org/article/1998/cool-uris-dont- change/](https://www.w3.org/article/1998/cool-uris-dont-change/)

<comment><USER10> I think the short gist of it is: naming things is a hard problem.

I think you both stumbled upon a fundamental part of the discussion: the tension between finding a way to identify resources (or concepts, or physical things) in a unique and unambiguous fashion, and affordances provided by natural language that allow human minds to easily associate concepts and labels with the things they refer to.

The merit of UUID's, hashes or any other random string of symbols which falls outside of the domain of existing natural languages, is that doesn't carry any prior meaning until an authority within a bounded context associates that string with a resource by way of accepted convention. In a way, you're constructing a new conceptual reference framework of (a part of) the world.

The downside is that random strings of symbols don't map with widely understood concepts in natural language, making URL's that rely on them utterly incomprehensible unless you dereference them and match your observation of the dereferenced resource with what you know about the world (e.g. "Oh! [http://0x5235.org/5aH55d](http://0x5235.org/5aH55d) actually points to a review of "Citizen Kane")

By using natural language when you construct a URL, you're inevitably incorporating prior meaning and significance into the URI. The problem is that you then end up with the murkiness of linguistics and semantics, and ends with all kinds of weird word plays if you let your mind roam entirely free about the labels in the URI proper.

For instance, there's the famous painting by René Margritte "The treachery of images" which correctly points out that the image is, in fact, not a pipe: it's a representation of a pipe. [1] By the same token, an alternate URI to this one [2] might read [http://collections.lacma.org/ceci-nest-past-une- pipe](http://collections.lacma.org/ceci-nest-past-une-pipe), which incidentally correct as well: it's not a pipe, it's a URI pointing to a painting that represents a physical object - a pipe - with the phrase "this is not a pipe."

Another example would be that a generic machine doesn't know if [http://www.imdb.com/titanic](http://www.imdb.com/titanic) references the movie Titanic or the actualy cruiseship, unless it dereferences the URI, whereas we humans understand that it's the movie because we have a shared understanding that IMDB is a database about movies, not historic cruiseships. Of course, when you build a client that dereferences URI's from IMDB, you basically base your implementation on that assumption: that you're working with information about movies.

Incidentally, if you work with hashes and random strings, such as [http://0x5235.org/5aH55d](http://0x5235.org/5aH55d), you're client still has to be founded on a fundamental assumption that you're dereferencing URI's minted by a movie review database. Without context, a generic machine would perceive it as random string of characters which happens to be formatted as a URI, and dereferencing it just gives a random stream of characters that can't possibly be understood.

[1] [https://en.wikipedia.org/wiki/The_Treachery_of_Images](https://en.wikipedia.org/wiki/The_Treachery_of_Images) [2] [https://collections.lacma.org/node/239578](https://collections.lacma.org/node/239578)

<comment><USER9> Good comment, thanks for sharing.

It's an interesting topic. I agree with you that identifiers can be intended for humans or machines, and there's often different features to optimize for depending. URIs are the strange middle ground where they include pitfalls of having to account for both humans and machines.

In an interesting way, each individual website has to come up with its own system for communication. It may be a simple slug (/my-new-blog/), or it may be an ID system (?post=3). It could be something else completely.

There is some value in offering that creativity, but a system where URIs are derived from content also makes a lot of sense to me. You mentioned a hash which I think is the right idea.

It seems reasonable enough that URIs could take inspiration from other technologies like git, or even (dare I say) blockchain. This leads naturally to built in support for archiving of older versions, as content is diffed between versions.

There's some fun problems to think about like how to optimize the payload for faster connections, then generate reverse diffs for visiting previous versions. Or if browsers should assume you always want the newest version of the page, and automatically fetch that instead.

This solves some problems, and creates many others. Interesting thought experiment anyway.

</comment></comment></comment></comment></comment><comment><USER11> Rhetorical question: Why must we charge annually to control domains? Should we stop doing this in the name of greater URL stability?

The article states early on, "Except insolvency, nothing prevents the domain name owner from keeping the name." As it turns out, insolvency is a pretty significant source of URL rot, but also so is non renewal of domains by choice or by apathy, whether for financial or mere personal energy reasons ("who is my registrar again? Where do I go to renew?") especially by individuals. You start a project and ten years later your interest has waned.

Domains are an increasingly abundant resource as TLDs proliferate. Why not default to a model where you pay once up front for the domain, and thereafter continued control is contingent on maintaining a certain percentage of previously published resources, and if you fail at that some revocable mechanism kicks in that serves mirrored versions of your old urls. Funding of these mirrors comes from the up front domain fees. Design of the mechanism is left as an exercise for the reader :-)

<comment><USER12> Domain renewal is definitely the lesser cost to maintaining a website. If you can afford the server, the domain is basically free already.

<comment><USER11> Blogger and Tumblr will map a domain to a blog for free.

<comment><USER13> And that will definitely not change in 100 years

<comment><USER11> Blogger has been serving urls for something like 17 years. I'd wager its sites have something like 2x or more average url lifespan at this point than the typical site. What we want right now is _more_ url stability not perfect assurance of 100 year url lifespan. Don't let the perfect be the enemy of the good.

</comment></comment></comment></comment></comment><comment><USER14> If curious see also

2016: [https://news.ycombinator.com/item?id=11712449](https://news.ycombinator.com/item?id=11712449)

2012: [https://news.ycombinator.com/item?id=4154927](https://news.ycombinator.com/item?id=4154927)

2011: [https://news.ycombinator.com/item?id=2492566](https://news.ycombinator.com/item?id=2492566)

2008 ("I just noticed that this classic piece of advice has never been directly posted to HN."): [https://news.ycombinator.com/item?id=175199](https://news.ycombinator.com/item?id=175199)

also one comment from 7 months ago: [https://news.ycombinator.com/item?id=21720496](https://news.ycombinator.com/item?id=21720496)

</comment><comment><USER15> I think this is just unrealistic. Let's look at this example:

        http://www.pathfinder.com/money/moneydaily/1998/981212.moneyonline.html

This consists of:

0\. Access protocol

1\. Hostname/DNS name

2\. Arbitrary chosen path hirarchy

3\. File extension

This is really a description where to find a document ("locator" not "identifier"). So, if you are:

\- re-organizing / cleanup your file structure

\- change or hide the file extension

\- enable HTTPS

\- migrating files to a different domain name

This WILL change the URL. What are you going to do? Not cleanup your space anymore? Stick to HTTP? So URLs DO change. That's just the reality.

If you want something that does not change, don't link to a location but link to content directly: E.g.

\- git hashes do not change

\- torrent/magnet Links don't change

\- IPSFS links do not change.

Or use a central authority, that stewards the identifier:

\- DOI numbers don't change

\- ISBN numbers don't change

<comment><USER16> > What are you going to do?

The article addresses this by reminding you that though URIs often look like paths, they can be aribtrarily mapped.

By all means move the resource, but _put a redirect under the old URI_. This means old links continue to work, which is the key point of the article.

<comment><USER15> Yes. Have you tried to do that even for moderately complex sites?

I have tried to do it a few times, and eventually just gave up. Carrying forward bad naming decisions from the past, is tremendous effort. When cleaning up the house, I also don't leave around sticky notes at the places where I removed documents from.

On top of this:

\- When using static site generators, it's not even possible to do 301 redirects (you would have to ugly slow JS version).

\- It does not help if you don't own the old DNS name anymore.

<comment><USER17> Using a SSG does not mean you don't have a intelligent server that can't do redirects. That's a limitation of certain web hosts (GitHub Pages for eg).

Netlify allows dead simple redirects, and so do most other static hosting platforms.

<comment><USER18> Even GitHub Pages behind Cloudflare is capable of issuing a 301.

</comment></comment></comment></comment></comment><comment><USER19> In the very footer of this page:

> _Historical note: At the end of the 20th century when this was written, > "cool" was an epithet of approval particularly among young, indicating > trendiness, quality, or appropriateness. In the rush to stake our DNS > territory involved the choice of domain name and URI path were sometimes > directed more toward apparent "coolness" than toward usefulness or > longevity. This note is an attempt to redirect the energy behind the quest > for coolness._

It's 2020 and "cool" still has that same meaning, as an informal positive epithet. I believe "cool" is the longest surviving informal positive epithet in the English language.

"Cool" has been cool since the 1920s, and it's still cool today. "Cool" has outlived "hip," "happening," "groovy," "fresh," "dope," "swell," "funky," "bad," "clutch," "epic," "fat," "primo," "radical," "bodacious," "sweet," "ace," "bitchin'," "smooth," and "fly."

My daughter says things are "cool." I predict that _her_ children will say "cool," too.

Isn't that cool?

<comment><USER20> "Smooth" is definitely still current slang, with a meaning similar to "cool." And "smooth" came first:

> Slang meaning "superior, classy, clever" is attested from 1893. Sense of > "stylish" is from 1922.

> A 1599 dictionary has smoothboots "a flatterer, a faire spoken man, a > cunning tongued fellow."

It may be time to bring that one back. "Did you see Keith chatting up that girl at the bar? Total smoothboots."

[https://www.etymonline.com/word/smooth](https://www.etymonline.com/word/smooth)

<comment><USER21> I would say the 1599 sense more accurately reflects the current sense of "smooth" than the 1893/1922 citations do.

<comment><USER22> _Sophisticated_ used to mean false, as in sophistry: with intent to deceive. So a sophisticated wine, was an adulterated wine, that had something other than fermented grape juice in it.

<comment><USER23> TIL. I was quite surprised that sophistication used to mean deceptive/misleading behavior.

[https://en.wikipedia.org/wiki/Sophistication](https://en.wikipedia.org/wiki/Sophistication)

<comment><USER21> "Sophistry" still does.

"Silly" is the standard example of semantic shift over what people generally perceive to be a pretty extreme distance: [https://www.etymonline.com/word/silly](https://www.etymonline.com/word/silly)

</comment></comment></comment></comment></comment></comment><comment><USER24> One thing I have been wondering about - speaking of changing URIs, did they (W3C) change/merge the domain name from w3c.org to w3.org at some point? Some old documents seem to point to w3c.org instead of w3.org. (e.g. [http://www.w3c.org/2001/XMLSchema](http://www.w3c.org/2001/XMLSchema)) Not that it hugely matters, the old (?) w3c.org links still work, since they are redirected anyway.

Example from a book: [https://books.google.com/books?id=yLj8m3K0kNoC&pg=PA224&dq=h...](https://books.google.com/books?id=yLj8m3K0kNoC&pg=PA224&dq=http://www.w3c.org/2001/XMLSchema)

<comment><USER2> According to WHOIS, w3c.org is from 1997 while w3.org is from 1994.

A message from a W3C staff member on a W3C mailing list on 1999-06-21 mentions [1] that w3c.org should redirect to the corresponding page at w3.org, and the latter is considered the 'correct' domain.

[1] [https://lists.w3.org/Archives/Public/www-rdf- comments/1999Ap...](https://lists.w3.org/Archives/Public/www-rdf- comments/1999AprJun/0064.html)

</comment></comment><comment><USER25> This is a great link and I think I'll share it to people. I find that I struggle trying to explain why URIs shouldn't change because it's so ingrained in me.

One of OneDrive's pet peeves is that if I move a file it changes the URI. So any time someone moves a file, it breaks all the links that point to it. Or if they change the name from foo-v1 to foo-v2. I wish they'd adopt google docs.

<comment><USER26> I wish operating systems managed files in a similar way. Ideally filesystems would be tag-based [1] rather than hierarchy-based. This would make hyperlinks between my own personal documents much easier and time-resistant as my preferences for file organization change.

[1] [https://www.nayuki.io/page/designing-better-file- organizatio...](https://www.nayuki.io/page/designing-better-file-organization- around-tags-not-hierarchies)

<comment><USER27> MacOS does this. Native mac apps somehow can preserve file references even after the source file has been moved or renamed. The unfortunate part however is many cross platform apps are't written using the Mac APIs which then leaves an inconsistent experience.

I think it's for reasons like this that many mac users strongly prefer native apps over Electron or web apps.

<comment><USER28> >I think it's for reasons like this that many mac users strongly prefer native apps over Electron or web apps.

Users on every OS do.

<comment><USER29> Could have fooled me with regard to Windows. I'm unfortunately not sure what a "native" Windows app is at this point. They've gone through so many frameworks over the years, everything is a mish-mosh.

And this isn't just a result of legacy compatibility. If you are a developer today, and you want to make a _really good_ Windows app, what approach do you take? Is it obvious?

<comment><USER28> On windows its just a resource hog. On linux and mac they stick out like a pimple on a pumpkin. The number 1 annoyance for me is because they are based on chromium which doesn't have wayland support, all electron apps do not dpi scale properly with multiple monitors.

</comment></comment></comment></comment></comment></comment><comment><USER30> If you have sequential pages, I don't like dates in the URIs. For example if you have something spread over 5-pages (e.g. a 5-part blog post), I should be able to guess the URIs for all 5 parts just given one. Dates mean that I cannot do that.

<comment><USER31> Cursors can be used to solve this issue sometimes.

[https://en.wikipedia.org/wiki/Cursor_(databases)](https://en.wikipedia.org/wiki/Cursor_\(databases\))

<comment><USER32> How would that help be able to predict the page urls?

</comment></comment></comment><comment><USER33> There is a pretty cool bet [1] on longbets.org about exactly this.

[1] [http://longbets.org/601/](http://longbets.org/601/)

<comment><USER34> Looks like it's pretty likely to be lost, which I think is pretty cool.

<comment><USER35> The author made sure he lost when he added the 301 clause

</comment></comment></comment><comment><USER36> > _I didn 't think URLs have to be persistent - that was URNs. This is the > probably one of the worst side-effects of the URN discussions. Some seem to > think that because there is research about namespaces which will be more > persistent, that they can be as lax about dangling links as they like as > "URNs will fix all that". If you are one of these folks, then allow me to > disillusion you._

 _Most URN schemes I have seen look something like an authority ID followed by either a date and a string you choose, or just a string you choose. This looks very like an HTTP URI. In other words, if you think your organization will be capable of creating URNs which will last, then prove it by doing it now and using them for your HTTP URIs. There is nothing about HTTP which makes your URIs unstable. It is your organization. Make a database which maps document URN to current filename, and let the web server use that to actually retrieve files._

Did this fail as a concept? Are there any active live examples of URNs?

<comment><USER2> URN namespace registrations are maintained by IANA [1].

One well-known example is the ISBN namespace [2], where the namespace-specific string is an ISBN [3].

The term 'URI' emerged as somewhat of an abstraction over URLs and URNs [4]. People were also catching onto the fact that URNs are conceptually useful, but you can't click on them in a mainstream browser, making its out-of-the-box usability poor.

DOI is an example of a newer scheme that considered these factors extensively [5] and ultimately chose locatable URIs (=URLs) as their identifiers.

[1] [https://www.iana.org/assignments/urn-namespaces/urn- namespac...](https://www.iana.org/assignments/urn-namespaces/urn- namespaces.xhtml) [2] [https://www.iana.org/assignments/urn- formal/isbn](https://www.iana.org/assignments/urn-formal/isbn) [3] [https://en.wikipedia.org/wiki/International_Standard_Book_Nu...](https://en.wikipedia.org/wiki/International_Standard_Book_Number) [4] [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Hi...](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#History) [5] [https://www.doi.org/factsheets/DOIIdentifierSpecs.html](https://www.doi.org/factsheets/DOIIdentifierSpecs.html)

</comment></comment><comment><USER37> That is nice in theory, but in practice stuff like archive.org are vital. If you see a document you want to refer to later, you need to archive it, either in a personal archive or via archive.org.

There are too many moving parts to trust that even domain names will be the same. See geocities and tumblr for recent example. If you want a document, you should have archived it.

<comment><USER38> The article isn't arguing that URIs _don 't_ change; it's arguing that they _shouldn 't_. (The part involving judgement is elsewhere in the title—the word 'Cool'—so it can certainly seem like an assertion of fact rather than of value at a glance.) It thus seems to me that the response "in practice, URIs _do_ change" doesn't undermine that point; your discussion of the need for some solution to the problem rather _supports_ their point—if URIs _didn 't_ change, then there wouldn't be a problem to be solved.

(Or maybe your point was deeper, that one not only can't trust that the resource location won't change but even that the resource itself will still be available somewhere? That is true, too! But saying that archive.org is the solution is just making one massively centralised point of failure. That doesn't mean that we shouldn't have or use archive.org, but that we should regard it as just the best solution we have now rather than the best solution, full stop.)

</comment></comment><comment><USER39> The problem with URIs is that they weren't foreseen as the gateway to a whole slew of web applications, whose URIs can have a lifetime no longer than to serve that one request. There is a continuum here from long lived useful URIs all the way to ephemeral ones.

And then there are the URIs that aren't even made for human consumption, ridiculously long, impossible to parse or pass around. Another class is those that get destroyed on purpose. Your favorite search engine _should_ just link to the content. Instead they link to a script that then forwards you to the content. This has all kinds of privacy implications as well as making it impossible to pass on for instance the link to a pdf document that you have found to a colleague because the link is unusable before you click it and after you click it you end up in a viewer.

<comment><USER40> > Your favorite search engine should just link to the content. Instead they > link to a script that then forwards you to the content. This has all kinds > of privacy implications as well as making it impossible to pass on for > instance the link to a pdf document that you have found to a colleague > because the link is unusable before you click it and after you click it you > end up in a viewer.

I can copy Google link just fine.

<comment><USER39> Good for you. Now try it a number of times instead of just once and you'll see they insert their 'click count' script in there a very large fraction of the times.

Here is a sample:

[https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&c...](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwj23pv8ktTqAhVvMewKHVweAgcQFjABegQIAxAB&url=https%3A%2F%2Fwww.ks.uiuc.edu%2FTraining%2FCaseStudies%2Fpdfs%2Fdna.pdf&usg=AOvVaw2YhN- VZjT_k5jb52luA_nX)

Obtained by right clicking the link to the pdf and then 'copy link location'. What you _see_ is not what is sent to your clipboard.

</comment></comment></comment><comment><USER41> Whenever I see a person or API use URI instead of URL I feel like I'm in an alternate universe. Turns out the distinction is that URIs can include things like ISBN numbers, but everything with a protocol string is a URL so really URL is probably the right term for most modern uses.

<comment><USER42> To be clear, the difference is that an URI generally only allows you to refer to a resource ("Identifier"), whereas an URL also tells you where to find and access it ("Locator").

For instance, `[https://example.com/foo`](https://example.com/foo`) tells you that the resource can be accessed via the HTTPS protocol, at the server with the hostname example.com (on port 443), by asking it for the path `/foo`. It is hence an URL. On the other hand, `isbn:123456789012` precisely identifies a specific book, but gives you no information about how to locate it. Thus, it is just an URI, not an URL. (Every URL is also an URI, though.)

<comment><USER43> A URI that cannot be used as a URL (ie as a locator for the resource) is a URN (a name).

</comment></comment></comment><comment><USER44> It would be good if more care would be taken when designing URL schemes. It is not accidental that URL shorteners are used everywhere.

Look for example at this link:

        https://www.amazon.com/Fundamentals-Software-Architecture-Engineering-Approach-ebook/dp/B0849MPK73/ref=sr_1_1?dchild=1&keywords=software+architecture&qid=1594966348&sr=8-1

Maybe each part has a solid reason to exist, but the result is a monster.

I would prefer something like this:

        https://amazon.com/dp/B0849MPK73

And guess what, the above short link actually works! But Amazon didn't use this kind of links as a standard.

<comment><USER45> The second link is completely undescriptive and just like with bit.ly and other shorteners you don't know where you end up after clicking it.

<comment><USER44> Fair point. A compromise could a somewhat shorter version of the original link:

        https://amazon.com/Fundamentals-Software-Architecture/dp/B0849MPK73/

This includes the main title of the book + ID (this variant also works).

<comment><USER45> There is also an argument for your original version with just the ID regarding unchanging URL's.

The Amazon URL that includes the title should be fairly stable, but if you look at e.g. a Discourse forum URL you see it contains the topic title, which can change at any time and then the URL changes with it. The old URL still works, because Discourse redirects, but this can't be taken for granted.

So Discourse then has these URL's referring to the same topic:

        - https://forum.example.com/t/my-title/12345
        - https://forum.example.com/t/my-new-title/12345
        - https://forum.example.com/t/12345

And using the last version may be best to use when linking to the topic from somewhere else.

</comment></comment></comment></comment><comment><USER46> If you're interested in taking this to a new level. You should check out initiatives like

handle.net (technically it's like a url shortner, but there's an escrow agreement you need to sign first to make sure that the urls stay available). Purl and w3id.org (that allow for easy moving of whole sites to a new domain name. And of course [https://robustlinks.mementoweb.org/spec/](https://robustlinks.mementoweb.org/spec/)

</comment><comment><USER47> TL;DR (from [1]). Guidelines for the "best" URIs:

* Simplicity: Short, mnemonic URIs will not break as easily when sent in emails and are in general easier to remember.

* Stability: Once you set up a URI to identify a certain resource, it should remain this way as long as possible ("the next 10/20 years"). Keep implementation-specific bits and pieces such as .php out, you may want to change technologies later.

* Manageability: Issue your URIs in a way that you can manage. One good practice is to include the current year in the URI path, so that you can change the URI-schema each year without breaking older URIs.

1: [https://www.w3.org/TR/cooluris/#cooluris](https://www.w3.org/TR/cooluris/#cooluris)

</comment><comment><USER48> I'm in the midst of moving a website from mediawiki to a bespoke solution for hosting the data which will enforce structure on what's being presented. In the process, URLs will change, _but_ , part of the migration is setting things up so that, for example, if someone goes to [http://www.rejectionwiki.com/index.php?title=Acumen](http://www.rejectionwiki.com/index.php?title=Acumen) they will be redirected automatically to [http://www.rejectionwiki.com/j/acumen](http://www.rejectionwiki.com/j/acumen) so old links will always work. This seems a minimal level of backwards compatibility (although I wonder if there is any specific protocol for how to implement this that will keep search engine mojo—but not a lot because the site gets most of its traffic from word of mouth between users).

<comment><USER47> The point of the article is that someone visiting the old URL should the old resource as opposed to a 404, an error, or some different content. If you can't keep the old URL the second best thing to do is a redirect. (EDIT: I guess being pedantic the point is to design the URLs so you don't need to change them later, but "get it perfect the first time" is kinda useless advice :-)

This is what 301 HTTP status (permanent redirect) should be for... [1] So it seems to me if you use 301 you should be good to go.

Also from a quick search it seems the recommended thing to do is remove the old URLs from your sitemap.

1: [https://en.wikipedia.org/wiki/URL_redirection#HTTP_status_co...](https://en.wikipedia.org/wiki/URL_redirection#HTTP_status_codes_3xx)

<comment><USER49> Yes, and adding a note doing the 301 will preserve the search engine mojo.

</comment></comment></comment><comment><USER50> It's kind of fun to see that this has been posted several times on hn before, but never took off.

e.g.: [https://news.ycombinator.com/item?id=8454570](https://news.ycombinator.com/item?id=8454570) [https://news.ycombinator.com/item?id=10086156](https://news.ycombinator.com/item?id=10086156) [https://news.ycombinator.com/item?id=803901](https://news.ycombinator.com/item?id=803901)

In this one [https://news.ycombinator.com/item?id=1472611](https://news.ycombinator.com/item?id=1472611) the URI is actually broken - not sure if it changed or if it just was a mistake of OP back then.

</comment><comment><USER51> A comment I didn't post 7 hours ago (was busy):

True. Yet this submission will have dramatically greater visibility than it otherwise would have because the HN facebook bot linked it 5 minutes ago[1]. As a web archivist, I've dealt a lot with the erosion of URI stability at the hands of platform-centric traffic behavior and I don't see it letting up any time soon.

Sidenote: The fb botpage with a far larger audience, @hnbot[2], stopped posting some months ago.

[1]: [https://facebook.com/hn.hiren.news/posts/2716971055212806](https://facebook.com/hn.hiren.news/posts/2716971055212806)

[2]: [https://facebook.com/hnbot](https://facebook.com/hnbot)

</comment><comment><USER52> Does this go against REST, where a url is a specific resource and http transforms it?

<comment><USER2> Fielding's thesis [1] talks about this.

Here's some selected quotes:

6.2.1 _" (...) The definition of resource in REST is based on a simple premise: identifiers should change as infrequently as possible. Because the Web uses embedded identifiers rather than link servers, authors need an identifier that closely matches the semantics they intend by a hypermedia reference, allowing the reference to remain static even though the result of accessing that reference may change over time. REST accomplishes this by defining a resource to be the semantics of what the author intends to identify, rather than the value corresponding to those semantics at the time the reference is created. It is then left to the author to ensure that the identifier chosen for a reference does indeed identify the intended semantics."_

6.2.2 _" Defining resource such that a URI identifies a concept rather than a document leaves us with another question: how does a user access, manipulate, or transfer a concept such that they can get something useful when a hypertext link is selected? REST answers that question by defining the things that are manipulated to be representations of the identified resource, rather than the resource itself. An origin server maintains a mapping from resource identifiers to the set of representations corresponding to each resource. A resource is therefore manipulated by transferring representations through the generic interface defined by the resource identifier."_

[1] [https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding...](https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf)

</comment></comment><comment><USER53> SEO has caused many companies to adopt unsustainable naming schemes. A url that references and ID is not going to have to change if a word in the title of an article is changed.

</comment><comment><USER36> The number one worst offender of this is microsoft onedrive. Document name or location changed? well you'll need to reshare the file/folder with everyone.

</comment><comment><USER54> > When someone follows a link and it breaks, they generally lose confidence in > the owner of the server.

Is it a bias I've developed or has anyone else realized just how many dangling links on microsoft.com? Redistributables, small tools, patches, support pages, documentation pages. I've recently found out when a link domain is microsoft.com I subconsciously expect it to be 404 with about 50% chance.

</comment><comment><USER55> I've noticed that the fashion industry is just rife with linkrot, and they spoil very quickly. If you're looking at a forum post from longer than 3 months ago chances are links to specific products will instead redirect to the store's front page or a 404.

Is there a benefit to this? I am mostly just frustrated.

<comment><USER56> Redirecting to the front-page is SEO-BS. It's supposed to help your domain reputation, but I find it honestly obnoxious compared to a standard 404.

</comment></comment><comment><USER57> It's really interesting to see perils of old findings becoming relevant when it becomes an actual pain to practitioners. Recent hype to functional programming language and using immutable data was already out there among academics in 90s but wasn't really used in practice until now.

</comment><comment><USER58> [http://perdu.com/](http://perdu.com/)

</comment><comment><USER28> There is a new reason that probably didn't exist back then, the application/cms powering the old pages has been replaced and it would be a massive effort to get the old pages working on the same urls they did before.

I think archive.org is the better long term plan. Not only does it preserve urls forever, it also preserves the content on them.

</comment><comment><USER59> Side topic, sorry in advance but, am I the only one frustrated by how this page is rendered in a mobile browser? I know, probably this wasn't an issue back in 1998 but I would have expected something that was more resilient to devices from w3. Of course, I might be overseeing issues.

<comment><USER60> The site is perfectly responsive (even if the margins are a bit large). The problem is that makers of mobile phone browsers decided to assume pages are not responsive and need a large width unless you include a specific meta tag - which is an absolutely stupid assumption and not something anyone could have foreseen in 1998.

</comment></comment><comment><USER61> I have lot of bookmarks with nice URLs that still don't exist anymore.

</comment><comment><USER62> "An URI is for life, not just for Christmas."

</comment><comment><USER63> That bring us to the story of ipfs and ndn

<comment><USER45> And DIDs [https://w3c.github.io/did-core/](https://w3c.github.io/did-core/)

</comment></comment><comment><USER64> "Dope" URIs Dont Change, that's gas.

</comment><comment><USER65> urn?

<comment><USER66> That's the fifth "reason" listed in the article.</comment></comment>


Ask HN: Which view is most popular: list view, column view, or cover flow view? - <AUTHOR>

I'm interested in knowing/understanding which type of folder view is the most popular. Based on what MacOS provides: List view, column view and cover flow view (also has a list view). <comment><USER2> List view for me, it provides the most useful information in a compact size.

</comment><comment><USER3> List view. Keeps my horizontal eye movement to a minimum.</comment>


Why I hate New Vegas (Wil Shipley) - <AUTHOR> http://blog.wilshipley.com/2011/01/why-i-hate-new-vegas.html

<comment><USER2> Can anyone recommend some good games for someone like me who loved Fallout 3?</comment>


Amazon Confirms Tote's Demise, But Doesn't Say Why - <AUTHOR> http://emoney.allthingsd.com/20110301/amazon-confirms-totes-demise-but-doesnt-say-why/ <comment><USER2> Avoiding a presence, or _nexus_ in every state would be one motivation.

<comment><USER3> I wonder if they could avoid the tax penalties of having a presence in every state by structuring the local delivery service as a separate entity that does local deliveries for any ebusiness that stocks their products in a given warehouse in certain cities, plugs in to their API, and pays a set of fees. In other words, turn their business inside out in a way similar to Amazon AWS.</comment></comment>