What Every C Programmer Should Know About Undefined Behavior #2/3 - <AUTHOR> http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_14.html <comment><USER2> Kind of off topic, but I am curious: is this one of the advantages of functional programming - the notion that you can prove or disprove certain things about the code and therefore optimize the compiler, based on such proofs, to your heart's content?

<comment><USER3> The more advanced of a type system you have, the more you can optimize indeed. A nice example of this is the zip function.

In Haskell:

        zip :: [a] -> [b] -> [(a, b)]
        zip [] _ = []
        zip _ [] = []
        zip (x:xs) (y:ys) = (x,y) : zip xs ys

Note how each iteration needs to check both lists for emptiness.

In a more advanced type system (or using more advanced type hackery in Haskell) you can have length-indexed lists. That is: lists that have 2 type parameters or "indexes" instead of 1. The 1 is usually the type of element inside the list, the extra 1 is a natural number indicating the length of the list.

So the function zip becomes something like:

        zip :: List N a -> List N b -> List N (a, b)
        zip [] [] = []
        zip (x:xs) (y:ys) = (x,y) : zip xs ys

The compiler checks the code and verifies, at compile-time, that both the input lists and the resulting list are all of the same length. This also means that you only need one runtime emptiness check instead of 2. If the N is concretely known at compile-time, you may need 0 (though that case might be caught by inlining/loop unrolling optimizations anyway).

<comment><USER4> In an unsafe language like C or C++, you would just assert that the two containers are the same length and use parallel iterators. The type system here lets you optimize away some of the overhead of using a safe language, but it doesn't let you write code that is more optimized than the obvious unsafe code, at least in this example.

Also, in this example you're using a singly linked list, which is usually a performance loss compared to a more appropriate data structure. CPUs are designed to favor contiguous arrays.

<comment><USER3> > In an unsafe language like C or C++, you would just assert that the two > containers are the same length and use parallel iterators. The type system > here lets you optimize away some of the overhead of using a safe language, > but it doesn't let you write code that is more optimized than the obvious > unsafe code, at least in this example.

Well, you can choose any two of: 1. Fast (less run-time), 2. Safe (cannot crash), 3. Simple types (None of the advanced type hackery). Many choose 1+3 or 2+3, but advanced types let you choose 1+2 which in many cases is remarkable and somewhat surprising that it is even possible.

Also note that runtime checks, in many cases, do not give you safety. For example, normally, you have an array indexing operation like:

      readArray :: Array a -> Int -> IO a

Ignore the "IO" if you are unfamiliar with Haskell's IO type. This is unsafe whether or not you have index bounds checking. A runtime check will only convert one kind of error (corruption/segfault) to another (runtime exception).

In these (common cases), your _only_ option of getting safety is advanced type hackery. Something like:

      index :: (size:N) -> Array size a -> Fin size -> a

where Fin N is the type of integer ranged between 0 and (N-1).

> Also, in this example you're using a singly linked list, which is usually a > performance loss compared to a more appropriate data structure. CPUs are > designed to favor contiguous arrays

Nothing about this type hackery is specific to singly linked lists, and advanced type hackary is applicable for pretty much any data structure. Also note that the singly linked lists used in zip may not actually be represented by pointer-chasing singly-linked lists. They may be "fused" together into efficient loops that process the input directly.

<comment><USER4> > Well, you can choose any two of: 1. Fast (less run-time), 2. Safe (cannot > crash), 3. Simple types (None of the advanced type hackery). Many choose 1+3 > or 2+3, but advanced types let you choose 1+2 which in many cases is > remarkable and somewhat surprising that it is even possible.

I don't think it's really that surprising that it's possible. Most programs don't rely on any deep mathematical properties for their correctness, so the ability to formalize a proof that they are correct and encoding it into a type system doesn't surprise me at all. If it is possible to do it on a large program without maintenance or scalability problems, then I will be more impressed.

You also present a false trichotomy. Haskell is not actually a completely 'safe' language; it still has exceptions that can cause a program to "go wrong" and terminate unexpectedly. You can write 'fast' code with it, but it isn't as fast as what I could write in a lower-level language.

> Nothing about this type hackery is specific to singly linked lists, and > advanced type hackary is applicable for pretty much any data structure. Also > note that the singly linked lists used in zip may not actually be > represented by pointer-chasing singly-linked lists. They may be "fused" > together into efficient loops that process the input directly.

As the data structures get further away from algebraic data types, the type hackery gets more and more involved. If you start working with arbitrary mutable data structures that arise in practice, the type hackery becomes a topic for a PhD thesis rather than something usable in practical programming today.

I don't know of any compiler that actually does a reasonable job converting uses of data structures like lists and association lists into arrays and hash tables in general. There are compilers (like GHC) that handle special cases but fall over beyond that. I think this falls into the territory of the "sufficiently smart compiler" fallacy. Also, making data contiguous is just the simplest of a common set of data representation optimizations. Does any compiler automatically convert a list into an intrusive doubly linked list or eliminate the use of a visited stack for DFS by stealing a bit from vertices or reversing pointers?

<comment><USER3> > Haskell is not actually a completely 'safe' language; it still has > exceptions that can cause a program to "go wrong" and terminate > unexpectedly. You can write 'fast' code with it, but it isn't as fast as > what I could write in a lower-level language.

I never meant to imply Haskell was a "completely safe" language. That is an impossibility, even totality does not imply complete safety. My zip example is actually a point against Haskell (as length-indexed lists are not yet actually in use in the Haskell eco-system).

Haskell can encode low-level programs that are almost C-level, and in that (ugly) style can probably reach the performance you can with lower-level languages (excluding hand-optimized assembly, perhaps).

> As the data structures get further away from algebraic data types, the type > hackery gets more and more involved. If you start working with arbitrary > mutable data structures that arise in practice, the type hackery becomes a > topic for a PhD thesis rather than something usable in practical programming > today.

Mutable data structures do not have to "arise in practice". You can have pure semantics with mutable performance (e.g: Clean's uniqueness types, or Haskell's ST).

Lots of people's PhD thesis are in actual use in practical programming today. A PhD thesis often discovers a technique and makes it accessible for real world programs today.

> I don't know of any compiler that actually does a reasonable job converting > uses of data structures like lists and association lists into arrays and > hash tables in general. I think this falls into the territory of the > "sufficiently smart compiler" fallacy.

Converting these is _not_ a good idea because you would change the complexities of the code (which is, IMO, the heart of the fallacy). A prepend of an a-list or a list is O(1), but to a list or hash table, it is (in the worst-case) worse.

But what Haskell's primary compiler, GHC, does do, is fuse together list processing such that lists can disappear altogether into efficient loops.

As for arrays and hash tables, these are not amenable to efficient "pure" modification (unless you use uniqueness types as in Clean), but they have reasonable alternatives that are pure and persistent: Sequence allows O(logN) indexing, O(1) amortized (O(logN) worst-case) prepend/append. Tries and search trees allow for quick lookups and quick pure modification. These are easy to reason about.

> Also, making data contiguous is just the simplest of a common set of data > representation optimizations.

This conflicts with O(1) prepend. If you want contiguous allocation, you can use different data structures.

> Does any compiler automatically convert a list into an intrusive doubly > linked list or eliminate the use of a visited stack for DFS by stealing a > bit from vertices or reversing pointers?

If you need to remove/insert items in the middle of a list, you would probably not use a linked list. So a doubly linked is not a good optimization to apply automatically.

If your point is that code with simpler mathematical semantics that is easy to reason about might cause a constant hit on performance in some cases -- then I agree. You cannot _always_ have simplicity, verifiability, and speed. But often you can.

Also note that purity affords many optimizations that are unavailable in non- pure languages (e.g: rewrite rules like: map f . map g --> map (f . g)).

<comment><USER5> O(1) prepend doesn't conflict with good contiguity at all. Deque is an useful data structure with (possibly amortised) O(1) prepend and append, O(1) indexing and excellent contiguity.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Is it just me or the LLVMs idea that "If arithmetic on an 'int' type (for example) overflows, the result is undefined.. For example, knowing that INT_MAX+1 is undefined allows optimizing "X+1 > X" to "true"." is incredibly stupid? Who said that undefined number is bigger than a defined one ??

<comment><USER7> It is not that the result of operation is undefined, the operation of INT_MAX+1 itself is undefined(actually the entire program becomes undefined when you do it), so the compiler can do whatever it pleases. According to the C standard, INT_MAX+1 might as well lead to formatting of your hard drive. So, it is safe to assume that x!=INT_MAX and that x+1>x for all x, because if x=INT_MAX your program is undefined, so compiler can do whatever it wants, including setting it to true or outputting an error or formatting the hard drive.

<comment><USER6> This kind of logic is the exact cause to the optimization problem described. We all know that in practice MAX_INT+1 is negative, and that many "non- standard" programs depends on it, but still, the optimizer is sticking to the C standard that no one follows just because it gives it a nice optimization chance. Bad..

<comment><USER8> "Bad"? You use C because you want speed above all else. If you don't know the language and need hand-holding, don't use C. Compilers are going to optimize C -- that's why it usually runs so fast.

<comment><USER6> This is bad because the optimizer ignores the imperfect reality about the big crowd of non standard programs. It actually punishes non standard programs (and probably the majority of programs out there are not 100% standard). So it is a bad and patronizing optimization

<comment><USER9> How many programs are there that depend on SIGNED overflow wrapping around to negative? I can't think of very many - the only places I've seen potential signed overflow that wasn't a bug was when people were _checking_ for overflow.

In those cases, just use unsigned math to do the checks.

</comment></comment></comment></comment></comment></comment><comment><USER10> Interesting they say there is no way to detect undefined behaviour in C code. This is precisely what the following project is all about:

<http://www.astree.ens.fr/>

<comment><USER11> The cited project is about proving that a C program has _no_ undefined behaviour. If such proof can't be found, the code may still be okay.

So the existence of that tool doesn't contradict the statement of the article.

</comment></comment><comment><USER12> the way to write good solid code is to use more than 2 compiler, and optimisation etc. i mostly write code that runs on at least 3 different os, and 2 different hardware. ... and it just works. no prog-lang can be faulted for bad programming using one. learn the lang, and use it. :-)

gcc still gets the pointer dereference and assignment to what a pointer points to, due to deferring assignments. these edges, idioms of any lang needs to be looked at with academic eyes. :-)

<comment><USER13> Do you fuzz your inputs? Run with the clang undefined integer overflow checker? Run your program on hardware with 16-bit int?

<comment><USER12> yes, random bits flipped on good input. yes, i run anything that can help me and covers the problem. nowadays, 32 and 64 bit are what i write code for. oh, the days of 16bit ints on win3.11 for workgroups are gone. :-)

llvm is an excellent tool, hats off, and thanks.

</comment></comment></comment><comment><USER14> What would possess someone to write

      if (i < 0 || buffer+i-128 >= buffer)

... instead of

      if ((i < 0) || (i >= sizeof(buffer))

    ?

<comment><USER15> Many of the strange things that happen in C language edge cases come about from macro expansion or code generation.

Unrelated to the issue, but the superfluous parenthesis added in the second example are interesting. I think every C coder has a level of comfort with the 15 sets in the operator precedence rules, and beyond that they throw parenthesis at it. I'm fine with the rules until I use a _< <_, _> >_, _&_ , _^_ , or _|_ [1]. Then I drag out the parenthesis.

[1] I swear the positions of the ones I named are placed alphabetically rather than in relation to their mathematical function.

<comment><USER5> & and | have the wrong precedence because in primordial C they were both either short-circuiting boolean or bitwise depending on context.

:(</comment></comment></comment>


Clojure from the Ground Up, Part 2: Basic Types - <AUTHOR> http://aphyr.com/posts/302-clojure-from-the-ground-up-basic-types

<comment> the-original It's an okay intro I guess, but there's a complete guide written for complete noobs. [http://www.reddit.com/r/Clojure/comments/1pb8sx/the_original...](http://www.reddit.com/r/Clojure/comments/1pb8sx/the_original_clojure_from_the_ground_up_tutorials/)

<comment><USER2> Thank you, nice one.

</comment></comment><comment><USER3> Useful tip:

"By default Clojure operates with natural numbers as instances of Java's long primitive type. When a primitive integer operation results in a value that too large to be contained in a primitive value, a java.lang.ArithmeticException is thrown. Clojure provides a set of alternative math operators suffixed with an apostrophe: +', -', *', inc', and dec'. These operators auto-promote to BigInt upon overflow, but are less efficient than the regular math operators."

So you can write

(inc' Long/MAX_VALUE)

instead of

(inc (bigint Long/MAX_VALUE))

</comment><comment><USER4> Has anyone at all managed to get past the first paragraph? It's his blog, his tutorial, his sweat disseminating knowledge to everyone for FREE. So he encourages a certain group of people. I don't see any of them reacting. Take the education and thank aphyr for his efforts. Way too many people take that for granted these days.

<comment><USER5> I don't really see what's so problematic about "We've learned the basics of Clojure's syntax and evaluation model. Now we'll take a tour of the basic nouns in the language." Am I missing something?

</comment></comment><comment><USER6> I am a member of one of the underrepresented groups aphyr mentioned in the "who is this for" section of the intro. Let me tell you what effect the discussion these HN comments threads have had on me.

aphyr's introduction seemed to me like a kind of warm "you can do it". I felt pleasantly fuzzy -- it was good to hear that someone was looking out for people like me, and other groups that are more obviously disenfranchised than mine (mine has it comparatively well off I think). Because of this encouragement, I read the entire post. In this respect it was absolutely effective. It accomplished precisely what it set out to accomplish.

Cue HN comments. I read them and my first reaction was, I didn't understand why it's not ok to say what aphyr said. It seemed so positive and innocuous. Why is it not ok to explicitly encourage me, or my sister, or my partner, to program? Never mind that aphyr put it in the "who is this for" section, which seems (to me) to be an eminently appropriate place to put such a thing.

But as I read more of them, I began to wonder whether what I thought and what other people think are so different that I'm just never going to fit in with this community. For example, people are complaining that this seems out of place -- do they just not understand how positive this was for me? I felt profoundly comfortable and accepted reading the tutorial, and I seriously doubt anyone felt excluded -- how could someone object to such a thing? Another commenter explains that, actually, this statement is bad for groups like mine because it reminds us that we're separated. But it was so warm I thought, I don't see how that could be true -- maybe I'm missing something. I started to think that maybe these issues are not reconcilable.

So, I began to doubt myself. Eventually the entire effect of the introduction was reversed. Soon I felt worse than when I started.

Then today happened. Let's consider some facts.

* The "who this is for" section appeared yesterday.

* That was _part 1_.

* This is _part 2_.

* Not only were the HN comments on part 1 dominated by this issue, but also the HN comments in part 2.

* So, merely writing this once is enough for the issue to follow you around in subsequent posts.

As a member of one of these underrepresented groups I'm both shocked and -- honestly? -- kind of hurt that the community can't even let this go when we're supposed to be discussing _an entirely different section of the book_. Besides this, if aphyr can't write this in the "who is this for" section, then where, precisely, is it appropriate to have this discussion?

People of HN, you may not be convinced that this was the right thing to do, but do know that this type of discussion is actively hurting your ability to be diverse. At the very least, I hope this pins a human story to this issue. What you are doing here does affect people. As a community it is time that we take this seriously.

<comment><USER7> I'm not one of the underrepresented groups, but I think it's irrefutable that these issues are central when _introducing_ someone to a new technology and community.

I understand that these issues are usually discussed separately from purely technical matters, but that doesn't mean that they're separable, or can be considered in isolation. There seems to be a lot of people who are uncomfortable with this, judging by how this discussion has magically jumped from the previous article to this one.

Lastly, it's hugely offensive to suggest that Kyle did this to establish his liberal bonafides or for any other reason than to create a more open and welcoming community. This sort of cynicism is just as toxic to the community as open prejudice.

</comment></comment><comment><USER8> I have mixed feelings about the fact that right off the bat it sledgehammers home the fact that programming is for everyone and not just white anglo saxon males.

<comment><USER9> That's nice. And I have completely unmixed feelings from reading you and the other genius commenters here and in the other thread about how you are somehow threatened by his simple encouragement of underrepresented minorities in a technical field.

Unlike you I'll actually tell you what my feelings are about the entrenched misogyny, racism, and sexism tolerated by so many white anglo saxon males in the tech world: complete disgust and contempt.

<comment> vezzy-fnord Putting a "simple encouragement" in a technical tutorial like that is at the very least a non sequitur and detracts from the reading experience.

That's not to say educational material should be dry and without humor, but this is simply pure agenda.

<comment><USER10> And I fail to see anything out of order with the agenda, "encourage women to program".

<comment> vezzy-fnord There isn't. There's nothing wrong with the agenda of promoting healthy eating habits, either. However it's not a good idea to preface a technical article about food processing with it.</comment></comment></comment></comment></comment>


Bubble Alert: Xobni's Spending Money On A Mural - <AUTHOR> http://techcrunch.com/2010/08/06/bubble-alert-xobnis-spending-money-on-a-mural/ <comment><USER2> There's this fetish for formica tables, broken chairs and rotting pizza boxes among startups that's frankly a little hard to understand (or at least to justify). Art, office space, furniture and infrastructure are often really not all that expensive. They can be worth of a heck of a lot more than they cost.

Your environment can affect how you work. It can affect who decides to work for you. It can improve the lives of your coworkers or employees. It can help sales. It can help investment.

We don't denigrate art or design when it comes in the form of an apple product -- why denigrate a mural?

</comment><comment><USER3> All depends how much it cost. A decently priced mural like this could be a net win in employees feeling better in their work environment which in turn can improve concentration and productivity.

Of course it's hard to measure the impact something like this could have, it just doesn't scream wasteful to me.

</comment><comment><USER4> Trolling is a art that TechCrunch excels at.

</comment><comment><USER5> Wake me up when Xobni buys a superbowl ad and has a puppet mascot.

</comment><comment><USER6> That's just decorative plumage. They are demonstrating their superiority over other similar companies.

</comment><comment><USER7> Dr. Seuss? Well, everyone has their own taste, but I'd feel like I was going to work at a daycare.

<comment><USER8> Or be the baby at daycare - babies are super creative and really need to adapt to their environment fast :)</comment></comment>


AssemblyScript: A Subset of TypeScript That Compiles to WebAssembly - <AUTHOR> https://github.com/AssemblyScript/assemblyscript <comment><USER2> I get the attraction for compiling a non-web language (say Python) so that you can write Python and have it run in the browser, but since Typescript already compiles to JS I don't really get it. What am I missing? Can it be faster, or do more/different things?

<comment><USER3> I don't think so.

From what I understand, calling WebAssembly functions from JavaScript (and vice-versa) incur a runtime penalty that's way worse than calling JavaScript functions from JavaScript. As such, WebAssembly makes sense for entire applications that would be compiled—think game engines targeting WebGL, or a font rasterizer targeting canvas, etc.

Since this only supports a subset of TypeScript, you won't even be able to compile your dependencies to WebAssembly, meaning that literally any code you interact with that you did not write has this performance setback.

<comment><USER4> ... Until the first person ports QT or GTK and suddenly WASM is just pushing 60 PNG frames a second into a canvas.

<comment><USER5> I am betting WASM will be the revenge of plugins.

And then, just like the ad spams using JS, its advocates will be getting more than they asked for.

Get ready for WASM blockers.

<comment><USER6> WASM is going to kill spidering. We can't leave HTML if we want google to be able to read the page.

I think Google is very afraid of this. Hence their push for Angular/Polymer/AMP. If they can build a good enough platform in JS they can stall the inevitable.

In the future only marketing parts of the site will use JS/HTML. The "web app" part will be some language compiled to WASM throwing frames to the canvas

<comment><USER7> In a world where SEO consultants exist, you foresee an inevitable future where Google is killed by a massive wave of companies rewriting their websites to be un-Googleable?

<comment><USER6> The big players are increasingly doing it already. LinkedIn and Facebook only have very limited spidering.

What Google has liked to do recently is take all your data and replace your service. Search for recipes, jobs, music, or weather for examples.

They're trying to make leaving the homepage irrelevant by using sites data in their search results. Eventually the web will rebel.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I love TypeScript! Forgive my ignorance but what purpose does WebAssembly have in this context? I assumed that stuff like ASM was really for other non-native applications. Say for example a C++ game which then can run in the browser or stuff like that.

So as a TypeScript guy with AssemblyScript at my fingertips, what doors does that open for me?

I occasionally have to make HTML5 games in Canvas. Is this the kind of path where WebAssembly could be beneficial?

One day will there simply be an end build step to turn everything into web assembly or is it never intended for use with the DOM?

<comment><USER9> > Forgive my ignorance but what purpose does WebAssembly have in this context?

Suppose a future web that is language agnostic. Your browser doesn't understand ECMAScript 2015, nor 2016, nor VBScript. It has an extremely optimized and fast virtual machine that works with WebAssembly.

This reduces complexity. It brings diversity to the web ecosystem, you can use any language that compiles to WebAssembly. There are no second class languages on the web.

But to build that future we need to create the tools. You can already use clang to compile many languages to WebAssembly, but ECMAScript nor Typescript are on that list.

WebAssembly should be able to interact with the DOM. But also to more low level APIS like access to USB devices. ([https://developers.google.com/web/updates/2016/03/access- usb...](https://developers.google.com/web/updates/2016/03/access-usb-devices- on-the-web))

Many things can go wrong, or can be moved in other directions. But the big success of the Java Virtual Machine shows the power of compile once run everywhere approach.

> Say for example a C++ game which then can run in the browser or stuff like > that.

That's already possible using EmScriptem ([http://kripken.github.io/emscripten- site/](http://kripken.github.io/emscripten-site/)). Game companies like King already use the same C++ code base for their mobile games and browser games. The problem is performance. With WebAssembly it will get more simple and faster.

<comment><USER5> Regarding the JVM I would also add, that it was common approach on mainframe architectures to use bytecodes + microcoded CPUs, with IBM and Unisys mainframes being the best examples still in production.

PCs and mobile OSes have been catching up with those designs.

</comment></comment></comment><comment><USER10> I'm still hoping that I'll end up on the "Hejlsberg roundabout", i.e. that this whole WebAssembly thingamajig will get me Turbo Pascal productivity again. (I know, we progressed since then in regular IDE land, but for the web, this would be a step forward)

</comment><comment><USER11> ...where "A Subset of TypeScript" = JavaScript?

If I am not using this, what are the other languages I can use today that compile down to WASM?

<comment><USER12> You mean other than C/C++ where you cab take advantage of 30 years of libraries ?

[http://kripken.github.io/emscripten- site/](http://kripken.github.io/emscripten-site/)

<comment><USER13> Yes, other than C++.

</comment></comment></comment><comment><USER14> > Instead of reimplementing TypeScript as closely as possible at the expense > of performance, AssemblyScript tries to support its features as closely as > reasonable while not supporting certain dynamic constructs intentionally:

This sentences, and the examples given with it, show that AssemblyScript is not technically a subset of TypeScript. There are 'features' in the former that aren't available in the latter. For example, explicitly converting the results of binary boolean operators to boolean is something that does not exist in typescript.

It's a subtle but important distinction, although I may be splitting hairs.

</comment><comment><USER15> This looks really cool to me for a learning environment. E.g. write some typescript, see how it compiles to s-expressions, etc.

</comment><comment><USER16> So if I get things right :

\- ASM.js : basically assembly with a subset of javascript syntax

\- WebAssembly : assembly with a different format which doesn't require parsing javascript.

\- languages built on top of WebAssembly : C/C++ like languages with explicit memory management/ no garbage collection.

\- assemblyscript : C with a typescript syntax ?

<comment><USER17> \- ASM.js: A faster, cut down version of JavaScript

\- WebAssembly: The successor to ASM.js, a compiled binary format (as opposed to plain text) with additional features

\- languages built on top of WebAssembly: More like languages that can be compiled to the WebAssembly binary format. currently C/C++

\- assemblyscript: A subset of a languange (TypeScript) that compiles to JavaScript, but which compiles to WebAssembly instead.

<comment><USER5> There are already JVM and .NET prototypes.

Rust also supports WebAssembly.

</comment></comment></comment><comment><USER18> Just noticed that quite a few browsers support WebAssembly already ([http://caniuse.com/#search=webassembly](http://caniuse.com/#search=webassembly)) . I wonder whether compiling Unity game to WebAssembly is better (more stable) than Unity to ASM.js

<comment><USER19> There is already a WASM Unity.

[http://webassembly.org/demo/](http://webassembly.org/demo/)

</comment></comment><comment><USER20> I thought WebAssembly didn't have a garbage collector yet.

<comment><USER21> Apparently the GC is compiled otherwise you have to manage memory somehow manually...

>> Linking in the runtime adds up to 14kb to a module, but the optimizer is able to eliminate unused runtime code. Once WebAssembly exposes the garbage collector natively, there'll be other options as well.

</comment></comment><comment><USER22> Maybe someday xamarin can use this compiler

</comment><comment><USER21> I assume it there is no DOM access, right?

<comment><USER23> Not yet. Once GC is available it should not be far off.

</comment></comment><comment><USER24> This links to a GitHub organization page, which is spectacularly uninformative.

[https://github.com/AssemblyScript/assemblyscript](https://github.com/AssemblyScript/assemblyscript) is a better link for this submission, I think. You get a README.md, at least.

<comment><USER25> Looks like their DNS is fucked up. [http://assemblyscript.org/](http://assemblyscript.org/) redirects to their GitHub org, even though there's a website repo in there that claims to be [http://assemblyscript.org/](http://assemblyscript.org/).

Edit: apparently their website has no content, just a redirect to GitHub. ¯\\_(ツ)_/¯

<comment><USER26> And if you look at the HTML file in the website repo it is redirecting to GitHub. Not DNS' fault

</comment></comment></comment><comment><USER27> I can't but think that this is _such_ a "Hype Train" thing.

</comment><comment><USER28> You should reconsider the name "AssemblyScript" if you want it to catch on.</comment>


Stonehenge 1875 family photo may be earliest at monument - <AUTHOR> https://www.bbc.com/news/uk-england-wiltshire-50743523 <comment><USER2> Also discussed 4 days ago (I'm not judging, just linking): [https://news.ycombinator.com/item?id=21771328](https://news.ycombinator.com/item?id=21771328)

</comment><comment><USER3> > The earliest known photograph of Stonehenge, not featuring a family, is > thought to date from 1853 - 22 years earlier.

Just to be clear.

</comment><comment><USER4> Is our current theory around Stonehenge stretching the principle of charity considering what we found Aztec's sacrificing while having a far superior culture. Is it actually reasonable to make the assumption people were dead when cremated?

Such a huge festival for which people travelled thousands of kilometers to witness. Does not sound compelling when bodies weren't stored to make it a big pile.

The building took thousands of years, so crossing a considerable number of generations. Could it be the demand was such that no participation in the labour effort was basically your dead sentence?

Or is Jesus officially attributed for the invention of the FOMO?

</comment><comment><USER5> I remember walking around and climbing on the stones when I was young. Can't get near them now.

My best memory was seeing the engravings made by soldiers following victory at a Civi War battle from the mid-17th century.

<comment><USER6> You can walk right up to a lot of Moai on Rapa Nui (Easter Island), but you still aren't allowed to touch them. It's pretty cool and worth making the side trip if anyone is ever in the area (daily flights from Santiago, Chile, and I think weekly from Tahiti, and don't stay at the German bnb, locals hate them.)

</comment></comment><comment><USER7> So we're just going to ignore a present day Tim Apple walking around in the background of Suzie Deaves' family photo then?

Fine. FINE!</comment>


Gaming company provide their overworked programmers with back rubs - <AUTHOR> http://shanghaiist.com.proxy.parle.co/2015/11/12/company_hires_girls_to_give_back_rubs.php <comment><USER2> Back rubs are nice, sure, but reducing working hours and hiring more programmers would be a better solution. A mentally burnt out employee with loose back muscles is still a burnt out employee.

</comment><comment><AUTHOR> All the things companies do to keep the prized programmers happy.

</comment><comment><USER3> I'm sure this is a welcome distraction from work!</comment>


Inadequate Equilibria by Eleizer Yudkowsky - <AUTHOR> https://equilibriabook.com/ <comment><USER2> Eliezer Yudkowsky has an extremely devoted, almost cult-like following, as does the Less Wrong rationality movement.

But I've never seen an appraisal of him or his work from anyone _outside_ the movement that describes its value or lack thereof. Many of his ideas make sense (if you accept all of his theoretical premises), but I'm not sure they're grounded in reality.

Does anyone here know of such an outside appraisal?

Edit: To be clear, I'm talking about the work that is actually unique to the movement, such as the Overcoming Bias blog and other original stuff. Things like Bayesian reasoning are already proven on their own, but also didn't come from Less Wrong originally.

<comment><USER3> This seems a bit unfair. Outsiders who agree with Yudkowsky are more likely to become insiders.

Anyway (speaking as an insider) _Inadequate Equilibria_ doesn't intersect with Yudkowsky's theories about AI. It's about how to tell the differences between the circumstances where you should trust your instincts vs those where you should go with the crowd.

<comment><USER4> _This seems a bit unfair. Outsiders who agree with Yudkowsky are more likely to become insiders._

Any cult could say that, however. One question I'd ask, is how likely is it for outsiders who partially agree with Yudkowsky to become insiders? Quite often, it's much less the "leader" and much more the mob inside a cult which creates much of the cult-like atmosphere. I remember posting an idea in the HPMOR reddit about creating a muggle magic detection device that could be used to game-balance the power of the muggle world vs. the magical world. The knee- jerk reactions, followed by the feeling that I must be a horrible person for doing so made me pause.

 _It 's about how to tell the differences between the circumstances where you should trust your instincts vs those where you should go with the crowd._

So, in part, it's how to tell if you're being suborned by groupthink.

Always keep in mind that scene from _The Life of Brian,_ where the crowd shouts, "We are all individuals!"

The thing to keep in mind when trying to start a movement of rationalists that doesn't take on the qualities of a cult: Ask yourself if you are as smart and self aware as others who have tried the same. Why is it you will succeed where those others have failed?

(Do I think the Less Wrong crowd is a cult? It's a foregone conclusion that any such group has grown an outer rind which has at least some cult-like qualities. The real question is, what is the state of the inside? And if you are inside, how do you know you haven't been suborned by groupthink?)

<comment><USER5> Look at how do they react to jokes. My observation is that all those destructive cult-like organization cannot laugh at themselves.

<comment><USER4> _My observation is that all those destructive cult-like organization cannot laugh at themselves._

It cuts both ways, actually. In this, as in many things, there is a moderated middle path. There is a kind of rather derisive, malevolent kind of humor which is used by certain adherents to nihilist philosophies. If you look very closely, then you will see that they also "cannot laugh at themselves" \-- but on the surface, it looks like they can.

</comment></comment></comment></comment></comment><comment><USER6> Please correct spelling Eleizer ->Eliezer</comment>


Larry Fink's 2019 Letter to CEOs: Purpose and Profit - <AUTHOR> https://www.blackrock.com/corporate/investor-relations/larry-fink-ceo-letter <comment><USER2> I wish there is a mechanism in which investors get to vote on the underlying shares when they invest in funds managed by the asset managers like BlackRock, Vanguard, Fidelity etc., Currently, it is the other way around. Investors give money to asset managers and they get to vote on the underlying shares.</comment>


Strobe Gets $2.5 million to help developers build mobile applications - <AUTHOR> http://techcrunch.com/2010/12/01/strobe-funding/

<comment><USER2> They've got an impressive product and team, as well as a bit of cash.

Naive question: What is their business model? Consulting?

<comment><USER3> Acquisition before the cash runs out ...

<comment><USER4> Sadly...</comment></comment></comment>


Facebook Wants Game Makers to Develop for Its Platform — Or Else - <AUTHOR> http://allthingsd.com/20121205/facebook-wants-game-makers-to-develop-for-its-platform-or-else/

<comment><AUTHOR> From the actual policy writeup:

<https://developers.facebook.com/policy/>

 _Mobile Web Apps that are running within the Facebook iOS app must not accept payments. In particular, these apps must not reference, use, or otherwise encourage the use of Facebook Payments or other non-iOS approved payment methods._ [clearly to keep on the right side of Apple's policies]

...but also...

 _Games on Facebook.com or Mobile Web must use Facebook Payments as their sole and exclusive payment method for all virtual goods and currencies made available to users within the game._

This seems to make mobile web games, which do anything (like notifications) through the Facebook iOS app, unable to use any payment mechanism.

Or is there a way to thread this policy needle?</comment>


America's Black Box: A Rare Look at the Violence of Incarceration - <AUTHOR> https://www.nytimes.com/2019/03/30/us/inside-americas-black-box.html <comment><USER2> This would have been better with pictures...</comment>


Creators of Bootstrap Leaving Twitter - <AUTHOR> https://twitter.com/twbootstrap/status/251756004717494272

<comment><USER2> Is this related to something happening at twitter?</comment>


Linode vs. DigitalOcean – performance benchmarks - <AUTHOR> http://jasonormand.com/2013/02/08/linode-vs-digitalocean-performance-benchmarks/ <comment><USER6> From DigitalOcean's TOS: "You agree that you will NOT use DigitalOcean's services to: violate any applicable state and federal law and regulation, including, but not limited to, any copyright, trademark, patent, anti-piracy, or other intellectual property law or regulation, or encourage or enable others to violate any such law or regulation. Transmit, distribute, post, store, link, or otherwise traffic in information, software, or materials that is offensive, abusive, inappropriate, malicious, or detrimental, including, but not limited to, those that: Are obscene, fraudulent, or discriminatory, including any containing profanity, or obscenities. DigitalOcean permits adult websites that abide by state and federal law and regulation. ..."

I think it's funny how they can go from barring any information "offensive, abusive, inappropriate, malicious, or detrimental, including, but not limited to, those that: Are obscene, fraudulent, or discriminatory, including any containing profanity, or obscenities" to specifically permitting "adult websites that abide by state and federal law and regulation."

In any case good, luck keeping your blog, blog, comments, or whatever else you host with them clear of all profanity all of you who decide to try their services, because you've just walked into a convenient TOS violation. Damn! (Oops. TOS violation. Goodbye HN. Ha ha.)

<comment><USER7> Thank you for raising this issue. We try to make our terms of service as fair as possible—we are not looking to censor any information or content on our customers' droplets.

As you have raised this issue, to make the situation clearer, the phrase referring to obscenity and profanity has been removed from our terms of service.

Thanks,

Etel

<comment><USER8> I recently signed up with Digital Ocean and I'm now happier I did due to responses like this.

</comment></comment></comment><comment><USER9> For me the performance of Linode isn't the greatest factor, the greatest factor (and the reason I spend ~$300/m with them when I could get the 10 servers for 1/5th the price elsewhere) is that support is second to none. I have never experienced better support than I have with Linode. If I have a problem and submit a ticket (which is rare) it's answered within a few minutes, if there's a network or hardware issue they open a ticket with me before I've even noticed. No other provider I've used has ever had that quality of service.

<comment><USER10> I've been on Digital Ocean for around 6 months now and I have to say that their support is pretty awesome - very responsive when needed. I couldn't be happier with DO so far.

<comment><USER11> Good to know. I just set up a $5 a month server with a $20 promotional coupon code. That's 4 months free, yeesh. I love linode too, but my needs are modest as all I really do is host a few small traffic sites for friends and staging sites for clients. As much as I love linode, my next year of hosting will go from $240 to $40. And with their prices if I'm happy I now have a great affordable host to recommend to clients.

<comment><USER12> What is the $20 promotional coupon code you used? Care to share?

<comment><USER13> "SSDBEAR20" without the quotes (from the serverbear.com site).

</comment></comment></comment></comment></comment><comment><USER14> I just switched <http://jsonip.com> from Rackspace/Slicehost to Linode about a month ago. I was a multi-year Slicehost customer and couldn't have been happier. It was only a matter of time after Rackspace aquired them that I was expecting problems. That occurred about a month + one week ago. (Sorry for the downtime to any users that might be reading this.)

I've since migrated the service to Linode and holy shit, it's such an improvement. The support is great, but even more their admin interface is excellent. Gives me so much more info than I ever had before. It's even a little cheaper than the plan I had with Slicehost.

Just to throw some numbers out there: jsonip.com is a node-based app that supports upwards of 6-10 million requests per day. Lets just say that I couldn't be happier with Linode.

Note to Linode: Do not ever sell out to Rackspace or else I will be forced to go live in the woods somewhere. Thanks.

<comment><USER15> You don't need node.js for this little service. If you're already using nginx you can just use the return directive. Voilà <http://git.io/ip>

<comment><USER14> Yes, I know. nginx is pretty awesome and I use it a lot in various servers. jsonip started as a node.js side-project for me a few years ago, and its scaled beautifully as traffic has grown. Its my preferred server environment these days, and I prefer to see how far it can be pushed. So far, I've yet to hit the limit on what it can do for this kind of high-traffic application.

In the future, if it started capping out, I'd look at alternatives. But I'm not there yet, and I like to continue experimenting with node. =)

</comment></comment></comment><comment><USER16> (shameless self-promo ;-)

Use the DigitalOcean API from Ruby and Chef/knife to create/shutdown/destroy virtual servers ("droplets"):

* <https://github.com/rmoriz/digital_ocean>

* <https://github.com/rmoriz/knife-digital_ocean>

<comment><USER10> That's really cool! I'm definitely going to have to give it a try.

<comment><USER16> feel free to contact me if you encounter problems :)

</comment></comment></comment><comment><USER17> A new broom sweeps clean. Results even with VPS depend on who else is using the equipment and what they are doing.

Easy to spin up a machine with no usage and get great performance if there is nobody on it. That doesn't mean this data _isn't_ correct of course but keep in mind the OP is making a comparison between 1 machine at Linode and 1 machine at Digital Ocean at a given point in time. Same equipment or different equipment at a later date could yield different results as the equipment gets filled up or depending on who else is using it. We had VPS's at Media Temple that would literally stall periodically for a few seconds. We then migrated to a different machine at a different data center and it hasn't happened since.

</comment><comment><USER18> I've been using digital ocean for a minecraft server and vpn. Network reliability has been a problem. Some days I get frequent disconnects, and other days it is fine.

I will continue using linode for my servers that matter, and digital ocean for toys and experiments, just because it's so cheap.

<comment><USER19> During my resrach for performance / $ I recently discovered a host specialise in Minecraft hosting that offers one of the best performance for its price.

Check Out Simplenode. ( I am not related to them in anyways )

</comment></comment><comment><USER20> One of the many reasons I pay for Linode is the "good neighbor" aspect the price point brings.

I'm not saying that DigitalOcean suffers this problem but the cheaper a VPS provider is the greater chance of it being used by folks running bit torrent, warez downloads, etc and/or folks who think they need to smash the (shared) resources out of server to get their moneys worth.

Paying a few dollars extra for a Linode instance (and I have 100's of them, so it adds up) is worth the peace of mind of being unattractive to these kinds. IE 'bad neighbors" who will pee in the pool.

Support is also top notch (although I rarely need it).

<comment><USER21> > etc and/or folks who think they need to smash the (shared) resources out of > server to get their moneys worth.

Wouldn't this be more likely on a higher-priced VPS (like Linode) than a lower-priced VPS (like DigitalOcean)?

<comment><USER20> I need to introduce you to a site called <http://lowendbox.com> \- where scriptkiddies, 12 year old "web hosts" _(like, a web host run by a 12 year old)_ and just weird _(sorry, but I just don't get the personality type)_ people seek out to spend as little money on VPS's - often debating the merits of switching from one to another in order to pay $3.50/m instead of $4.

They then try to eeek out every bit of performance they can from the accounts they "collect". It's a curious sub-culture.

<comment><USER22> That's a presomptuous (and unnecessarily aggressive) you are making here. I certainly don't want to pay more than 3 euros a month for the use I am making of my VPS (it's still very useful, don't be mistaken), and LowEndBox was incredibly useful in finding a good provider for that price range.

People certainly have different uses than you (and your expensive 100's of hosts), that doesn't make all of them script kiddies and 12 year old hosts.

</comment></comment></comment></comment><comment><USER23> I fail to see how anyone can create a repeatable objective benchmark between different VPS providers.

I respect the fact that the author tried hard and didn't bias the results, but I fail to see where he even repeated the benchmark over a number of days to attempt to eliminate variations in what the other guests were doing while the benchmark was running.

As I see it, the only way I would trust a benchmark of this nature was if it was somehow ran over multiple hosts and was able to sample a large fraction of the physical boxes over a large period of time. As you can image, that's impossible to do on S3 and any of the other larger VPS providers

Even if somehow someone did manage to pull off a benchmark like the above, I still wouldn't trust it because it would only be valid until the provider added "Joe's Cheap Video Encoding Service" as a client that's sharing my box. Or someone else who's running a benchmark just like you are?

With all of the above said: I'm sure that there is differences between the VPS providers in how they allocate CPU and IO resources and Digital Ocean may indeed be much better on average. I'm just not sure how you can measure it objectively to make sure they are or that they will continue to be so even 5 minutes in the future.

Which is a shame, because an objective metric that was trustworthy that compared all the different providers would be absolutely awesome.

</comment><comment><USER24> There are plenty of VPS providers out there who are cheaper than Linode, including some with compelling SSD packages.

With Linode, I know that I am getting excellent support. There's the peace of mind of knowing that when I submit a ticket, someone will read and respond in short order.

A $5 SSD VPS sounds great, but I automatically wonder what kind of hardware I will be on (does it compete with Linode's RAID 10 configuration?), and how long my support requests will take to be addressed, and whether or not the low prices are a sustainable business model.

<comment><USER25> "With Linode, I know that I am getting excellent support."

To be honest, the poor support was one of the reasons we moved away from Linode. We were in the Newark datacenter for about 8 months with 12 linode boxes. Had frequent issues with their load balancer and most of the time when we told them there was a problem, they asked us to prove it.

A few times we had extended outages due to "unscheduled maintenance"

Prior to running my business on Linode I had a single VPS with them for 2 years for personal stuff. I had zero problems... so YMMV. Overall, I'd still use them again, but not for mission critical stuff after that experience.

<comment><USER24> My experiences with Linode have been excellent as far as support is concerned. That's just anecdotal and YMMV.

With that said, would you trust a $5/mo. VPS provider like DigitalOcean with "mission critical stuff"?

<comment><USER26> >VPS provider like DigitalOcean with "mission critical stuff"?

You do realise that in the past user VPSs were rooted, Bitcoins stolen and Linode users had to find out from Reddit that their VPS was potentially hacked.

If you trust Linode (or any VPS really) with mission critical stuff then you are (being) an idiot. I am sorry but you are.

Edit: The idiot is a reference to behaviour not anything personal.

<comment><USER27> Did they ever publish a post-mortem of how their internal customer service portal was "hacked"? A quick search turns up nothing.

<comment><USER26> No.

And frankly I can't understand how a VPS provider can act in this way and still have people acting like they have great support. As a customer I found out from Reddit before Linode. That's a pretty disgraceful effort.

</comment></comment></comment></comment></comment></comment><comment><USER28> My favorite site for finding all kinds of VPS deals (some for as little as $15 a year) is <http://www.lowendbox.com>. It's great for finding a VPS nearly anywhere in the world for your SSH tunnel, offsite storage, or just to tinker with.

<comment><USER29> That's ok for some, but it kind of annoys me. Where's the equivalent index for people want a VPS to do real work? I'd love a site that would let me compare pricing for say, 4GB/4 core machines.

<comment><USER24> Here's a site comparing different types of plans. <http://serverbear.com/>

</comment></comment></comment><comment><USER30> DigitalOcean is promising, but they should probably hire a lawyer to fix up their Terms of Service. I notice they've attempted to appease adult content websites by removing the restriction against nudity and adding a statement that adult sites are expressly allowed if legal. But, they've left in a prohibition on profanity? That seems a bit backwards.

Inappropriate content is also disallowed, what does that mean? It's not a legal term of art that I'm familiar with. Why does a sentence begin with "Transmit"? And please, consider using bulleted lists.

<https://www.digitalocean.com/tos>

<comment><USER7> Profanity clause has been removed.

</comment></comment><comment><USER31> Since their US servers are based in New York, what are the state's policies as far as sales taxes? I believe there was a issue with Linode's Texas hub that any sales to Texas residents required you collect sales tax. Does NY have a similar issue where a server constitutes a physical presence?

</comment><comment><USER32> The article says Linode has "predictably greater CPU performance". Am I missing something? It looks like Digital Ocean is the winner in every single benchmark other than Apache Static Page Serving.

(I'm assuming lower is better for encoding time.)

<comment><USER33> Last I had to work on a video transcoder using ffmpeg, most codecs were not easily parallelized. That's what might have happened here, even though Linode has 4 cores, core vs core comparison it gets beaten.

<comment><USER34> Your reply makes sense. I'd note also that running 4 parallel encoding jobs would expose the CPU difference.

</comment></comment></comment><comment><USER35> For a while, I was pretty happy with another low-price host (ChicagoVPS)--but I had to switch away (to Linode, as it happens) due to something not mentioned or measured in this article at all: network throughput volatility. Someone or something was regularly burst-saturating the physical pipe going into the machine, such that it would seem to all the rest of the world that my website would be down for random 90-second periods every few hours. This is really bad when you're trying to run a realtime game with persistent connections :)

I'm not sure quite what it was--whether malicious user behavior, a lack of separation in bridge-interface setup making network traffic on the box un-QoS- able, or maybe someone on the box I was on bearing the brunt of temporary, persistent DoS attacks--but I didn't care to roll the dice on another box from the same host, when I knew that this kind of thing "just doesn't happen" with the major providers.

Still, if there was a low-end host that specifically mentioned stable network throughput in their SLA, I'd love to try another one. $7/mo sure does buy a lot of horizontal scaling and High Availability, once you can ensure each node can hold onto the little bit of traffic you send it. :)

</comment><comment><USER36> I recently switched from Linode to a dedicated server from Hetzner as I found I could get better specs for only a few quid more / month (than Linodes 1GB package).

Linode was a great provider, but now I can manage my own VMs using Xen myself.

<comment><USER37> I just checked Hetzner out and their VPS is also cheaper than Linode. Are you satisfied with their services?

<comment><USER38> Not to answer for the OP but I'm both a Linode and Hetzner customer. The Hetzner machine has been solid and their network is great. But.. I keep the most important stuff on Linode because if a piece of hardware in the Hetzner machine blows up, I could be off the air for $indeterminate_time whereas with Linode, the worst case is I fire up another Linode within 5 minutes and reload from a backup.

<comment><USER37> Thanks for answering. In my case, I'm looking more at the Hetzner VPS offering, because it's in the same price range and has better specs than the equivalent Linode.

</comment></comment></comment></comment><comment><USER39> I rarely see Rackspace Cloud mentioned on Hacker News in these sorts of VPS discussions. Anyone have insight as to why that is? Too expensive? Crappy service?

Background - my employer hosts on dedicated servers at Rackspace and we're considering using more of their cloud offering.

<comment><USER40> For me, it is a horrible experience.

They need to call your over the phone in order to verify you are a human being and they need to know what you are going to do with their "cloud" - <USER2> called it "Onboarding"

I told them I just want to experiment with their apis and maybe they think I have no business value or I am a potential spammer, so they rejected my "Onboarding" request without any reason given. (So you know I am not commenting from the technical point of view since I have never access to their system)

On the contrary, AWS give you free tier access for a whole year, no question asked.

IMHO, don't waste time on Rackspace.

<comment><USER41> I signed up with Rackspace a while back to host a new site I was putting together. I found the "onboarding" process so creepy and off-putting that, even though they accepted me, I went with Linode instead. Like, if that kind of weird bureaucracy was what I had to look forward to when I needed support, no thanks.

Also, their sorta-cloud-sorta-VPS setup for Rackspace Cloud seemed awkward to me. It made the control panels more confusing than they needed to be.

<comment><USER42> I've been using rackspace for a year now and have had a great run of it. I did get a call early on, but I did not register as creepy. The service has been great, except for one ubuntu kernel bug caused by me using an old image to build some servers on their new openstack systems. That was confusing.

I really like openstack. As a python hacker, it's the bee's knees.

<comment><USER43> Thanks for the kind words. We were able to get everything sorted with the kernel bug? Please let me know if I can help with this or anything else. email@example.com

</comment></comment></comment></comment></comment><comment><USER44> ServerBear has all the $5/month hosts in one place: [http://serverbear.com/compare?Sort=BearScore&Order=desc&...](http://serverbear.com/compare?Sort=BearScore&Order=desc&Monthly+Cost=500000-500000&HDD=-&RAM=-&BearScore=-&I%2FO+Benchmark=-&Virtualization=)

</comment><comment><USER45> I made the switch from Linode/AWS micro instances to Digital Ocean recently.

Pros: Great pricem, performance is excellent,UI is great for creating servers

Cons: I have had two periods of about 20 minutes of down time in the early mornings recently.

Digital Ocean is great hosting for developers. They are really doing it right.

<comment><USER46> Have you ticketed your issue?

</comment></comment><comment><USER47> I was choosing VPS providers recently. I used <http://www.serverbear.com> for the benchmarks. Then I looked on the web for anecdotal information on how good and reliable the VPSs were. I chose Linode. Then I needed another VPS. It was favoring Ramnode, but they had temporarily run out of SSDs. So I went with Rackspace, which was used by many people, even though they seemed to generate more complaints then Linode.

</comment><comment><USER48> Shiny new services will always be popping up with great deals and "faster" servers but I prefer to not move my infrastructure every time the next host du jour comes out. Plus, they're just going to raise their prices once they get a critical mass of customers.

Linode has been there through thick and thin for me. Sounds cheesy, but they report on and fix issues before I even _notice_ them, I've only had to submit a ticket once (for something that was my fault), and their infrastructure is tight as a drum.

Linode is very, very reliable. Another thing that many people who work with larger applications than mine will tell you is that speed is not important, what's important is consistency. Linode's virtualization is set up to provide, above all, consistency (even on a loaded host). So sure your site might run 1.6778 times faster on DO, but when the host server is loaded your site's going to be crawling because the other neighbors are bursting their CPU into your space.

We'll see if DO's prices and performance stand the test of time. My guess is their support is extremely lacking in comparison. When everything's running perfectly, this is great. But when the chips are down can you really rely on them? I guess we'll see.

<comment><USER26> Wow. I found the complete opposite.

Linode would routinely not respond during major incidents (e.g. power outage at Fremont which was common for me) and when they did they were often not clear about what was happening. Their infrastructure is hardly tight as a drum (Google 'Linode bitcoin').

<comment><USER48> From reading through the comments, it seems a lot of the pain points for Linode happened in the non-Dallas datacenters. Our servers are hosted there with almost 0 problems. I did a good amount of research on which Linode datacenters are the best before placing our servers there (this was years ago) and found that the Fremont datacenter had a lot of flaky issues (and if your experience was recent at all, then they apparently still have issues).

So maybe Linode's main support system is set up to favor Dallas, which if this is true is pretty shoddy. I'd be interested to hear more experiences from other people across different datacenters.

</comment></comment></comment><comment><USER49> I've been very happy with DigitalOcean since switching to them. This blog echo's my anecdotal experience. If DigitalOcean would open up a Chicago and West coast DC I could switch completely over...

I wish this had been a $20 vs $20 plan comparison.

</comment><comment><USER50> Doh. "Due to a high load that we are experiencing with Trial Accounts - <USER3> have temporarily disabled them." However email after signup tells: Your trial period will last 12 hours.

<comment><USER46> Sorry we'll get that fixed asap D:!

<comment><USER51> Same for me, please let us know when this is resolved

</comment></comment></comment><comment><USER52> I personally use digitalocean for hosting <http://en.wikipins.org/> and would like to say that I am _very_ happy with their service and SSD IOPS - <USER4> that took me 6hrs. on EC2 takes me ~45mins on digitalocean hosted machines for a half (or less) the cost.

</comment><comment><USER53> I think DO compares to Linode (or even better) in CPU performance because the software used (for Encoding or whatever) doesn't make use of extra cores. You'll need multi-threads aware software to take advantage of the available cores.

I have a Linode 1Gb (and another 512Mb) and I rarely go over 110% CPU utilization even when my server is busy (the max is 400%, 4 cores being used).

Also, price comparison, Linode charges an extra $5 (for 512Mb) and $10 (for 1 Gb) for Backups. DO seems to be giving them for free.

My yearly bill on Linode : $900

My yearly bill on DO : $180

I think I'm trying DO soon, especially I'll be in need for more servers.

Edit: I'm a little afraid from DO. They are simply too^8 cheap and it's scary. Will they be around for too long? What's their down time like? Will they lose my data (and backups)?...

Price wise, DO beats the hell out of anything. I can renew my smartphone yearly for free just by moving.

<comment><USER54> >I can renew my smartphone yearly for free just by moving.

You lost me there. Is that slang for something?

<comment><USER53> I'm just emphasizing the opportunity cost here. I bought a high-end Smartphone the last year and I have been thinking if I should renew it on a yearly basis with the latest model.

By switching to DO (expecting they offer a comparable service), my purchasing power gets bigger and allow me to become richer (renew smartphone or buy some other stuff).

I'm just trying to show how competition, technology and efficiency makes us richer.

</comment></comment></comment><comment><USER55> Hmm. They email your initial root password in cleartext, rather than either letting me choose it or displaying it on the site, both of which would be over SSL.

<comment><USER56> If you use keys, no password is sent. An option to not send password by mail (for non-key-based launches) is on the coming-soon roadmap: [http://digitalocean.uservoice.com/forums/136585-digital- ocea...](http://digitalocean.uservoice.com/forums/136585-digital- ocean/suggestions/3566070-add-a-checkbox-to-not-email-root-password)

<comment><USER55> You should probably make it clear during server creation that if you have added SSH keys on the web site, they will be injected into ~root/authorized_keys in the image, if that's what you do. Linode, for example, lets you add SSH keys on their web site, but that's only to access your VM's console.

</comment></comment></comment><comment><USER57> DigitalOcean is good value but I found their I/O speed not anywhere close to SSD levels. I ran this bench mark from github. RamNode is the best.

<https://github.com/mgutz/vpsbench>

</comment><comment><USER58> Just hope those SSD are made by intel and are in raid10.

Otherwise 3-4 year failure is quite common.

</comment><comment><USER33> I've never heard of Digital Ocean. Are they reliable? Do they have a DNS manager comparable to Linode? (I have no aspirations of running multiple Bind instances on my own, thanks).

I might consider moving off Linode for pricing alone.

<comment><USER56> They've been very reliable for us. Network is spiky (12-20MB/s at times), but otherwise, compared to roughly equivalent VMs (lscpu, /proc/cpuinfo, etc.) they are hands-down faster than AWS. In the limited testing we've done on AWS SSD AMIs (optimized for cluster compute), AWS wins on network and CPU, but at literally 10X the cost.

Also, see: <http://serverbear.com/9806/digitalocean> for interesting benchmarks over time (with all the standard caveats, yada yada).

</comment></comment><comment><USER59> DigitalOcean does not currently offer IPv6.

[http://digitalocean.uservoice.com/forums/136585-digital- ocea...](http://digitalocean.uservoice.com/forums/136585-digital- ocean/suggestions/2639897-ipv6-addresses)

</comment><comment><USER60> Off-topic:

Who is this "Terrence Andrew Davis" fellow who comments on pretty much every single post that reaches HN?

He sounds like a lunatic and religious fanatic constantly quoting bible verses and sermons. Pretty darn creepy to read at 4am.

<comment><USER61> He's the author of LoseThos (64 bit OS, written from scratch), and has schizophrenia. His story is very interesting, if you can get past the wall of computer-generated religious content.

<comment><USER60> Wow, I had no idea. Now I feel sorry for him. I wish him well.

</comment></comment></comment><comment><USER62> I've been a Linode customer for many years. I couldn't be happier. They have a buttload of locations to choose from, fast networks, and as everyone else has already mentioned: out of this world support. I've even managed to earn a few hundred bucks in referral cash from them.

I had a handful of dyno's, a worker, and a few add-ons running my iPhone app's API within Heroku up until about a week ago where I transitioned everything onto a small collection of Linodes in the UK datacenter. We're launching in Europe so it made sense to bring everything closer. If you're comfortable and skilled with a terminal, you can get a lot more bang for your buck with Linode.

That being said, I am always interested in trying something new. For a $40 Linode you get 1GB of RAM, with DigitalOcean the same $40 gets you 2GB of RAM and they run on SSD's. I'm going to deploy a copy of my primary API server here to take it for a spin.

First impression thus far: fast deployment. From pressing the submit button to shelling in took literally less than a minute.

Unfortunately though the latency on the box seems a bit high. There is a bit of lag in the terminal, something I do not experience with Linode's UK datacenter.

I'm in Sweden on a 4G modem, here's a traceroute between me and both boxes. DigitalOcean is first, followed by Linode.

      ### DigitalOcean – Amsterdam Datacenter
      traceroute to 220.127.116.11 (18.104.22.168), 64 hops max, 52 byte packets
       1  tiny (192.168.0.1)  10.573 ms  1.658 ms  1.393 ms
       2  10.9.14.115 (10.9.14.115)  33.218 ms  24.250 ms  59.223 ms
       3  10.9.14.113 (10.9.14.113)  51.009 ms  35.878 ms  30.836 ms
       4  90-229-25-24.link.se.telia.net (220.127.116.11)  33.153 ms  30.662 ms  34.999 ms
       5  s-b2-link.telia.net (188.8.131.52)  33.962 ms
          s-b2-link.telia.net (18.104.22.168)  74.544 ms
          s-b2-link.telia.net (184.108.40.206)  77.395 ms
       6  s-bb1-link.telia.net (126.96.36.199)  36.792 ms
          s-bb2-link.telia.net (18.104.22.168)  29.966 ms
          s-bb2-link.telia.net (188.8.131.52)  31.228 ms
       7  kbn-bb2-link.telia.net (22.214.171.124)  151.952 ms
          kbn-bb2-link.telia.net (188.8.131.52)  42.281 ms
          kbn-bb2-link.telia.net (126.96.36.199)  123.130 ms
       8  kbn-b3-link.telia.net (126.96.36.199)  39.032 ms  45.868 ms
          kbn-b3-link.telia.net (220.127.116.11)  44.708 ms
       9  te4-7.ccr01.cph01.atlas.cogentco.com (126.96.36.199)  67.971 ms  60.729 ms  96.055 ms
      10  te0-7-0-0.ccr22.ham01.atlas.cogentco.com (184.108.40.206)  132.391 ms
          te0-7-0-6.ccr21.ham01.atlas.cogentco.com (188.8.131.52)  97.568 ms
          te0-7-0-0.ccr22.ham01.atlas.cogentco.com (126.96.36.199)  137.713 ms
      11  te0-0-0-3.mpd21.ams03.atlas.cogentco.com (188.8.131.52)  101.141 ms  89.885 ms
          te0-0-0-3.mpd22.ams03.atlas.cogentco.com (22.214.171.124)  147.596 ms
      12  te2-1.mag01.ams03.atlas.cogentco.com (188.8.131.52)  104.005 ms
          te1-1.mag01.ams03.atlas.cogentco.com (184.108.40.206)  52.704 ms  127.224 ms
      13  nxs-internet.demarc.cogentco.com (126.96.36.199)  98.294 ms  130.686 ms  142.924 ms
      14  220.127.116.11 (126.96.36.199)  148.148 ms  107.753 ms  134.880 ms

and now Linode...

      ### Linode – London, UK Datacenter
      traceroute to blitzen.dbld8.com (220.127.116.11), 64 hops max, 52 byte packets
       1  tiny (192.168.0.1)  9.671 ms  2.313 ms  1.411 ms
       2  10.9.14.115 (10.9.14.115)  32.881 ms  21.701 ms  34.152 ms
       3  10.9.14.113 (10.9.14.113)  36.843 ms  21.986 ms  26.750 ms
       4  90-229-25-24.link.se.telia.net (18.104.22.168)  26.421 ms  24.166 ms  26.982 ms
       5  s-b2-link.telia.net (22.214.171.124)  27.415 ms
          s-b2-link.telia.net (22.214.171.124)  33.347 ms  37.758 ms
       6  s-bb2-link.telia.net (22.214.171.124)  34.993 ms
          s-bb1-link.telia.net (18.104.22.168)  92.886 ms
          s-bb1-link.telia.net (188.8.131.52)  38.297 ms
       7  hbg-bb1-link.telia.net (188.8.131.52)  83.932 ms
          hbg-bb1-link.telia.net (220.127.116.11)  36.076 ms
          hbg-bb2-link.telia.net (22.214.171.124)  47.708 ms
       8  ldn-bb2-link.telia.net (220.127.116.11)  67.937 ms
          ldn-bb2-link.telia.net (126.96.36.199)  106.801 ms
          ldn-bb2-link.telia.net (188.8.131.52)  63.880 ms
       9  ldn-b3-link.telia.net (18.104.22.168)  54.534 ms
          ldn-b3-link.telia.net (22.214.171.124)  101.259 ms
          ldn-b3-link.telia.net (22.214.171.124)  64.316 ms
      10  telecity-ic-150799-ldn-b3.c.telia.net (22.214.171.124)  59.564 ms  70.329 ms  64.835 ms
      11  22.214.171.124 (22.214.171.124)  70.606 ms  68.463 ms  60.808 ms
      12  18.104.22.168 (220.127.116.11)  69.237 ms  60.927 ms  70.726 ms
      13  li522-7.members.linode.com (18.104.22.168)  65.147 ms  60.434 ms  62.646 ms

Quite a difference here. Geographically Sweden is closer to Amsterdam, but i'd imagine there is a fat pipe crossing the North Sea that is faster than being routed through Northern Europe to AMS.

<comment><USER63> Linode appears to have a BGP mix of Level3, NTT, Time Warner, KDDI, and Telia vs DigitalOcean's BGP mix of Level3 and Cogent. Linode hands down has the better network connectivity.

<comment><USER64> Better is relative. A company like MegaUpload would say Cogent is the best, but a company like Gameservers.com would say Internap.

<comment><USER19> Yes. But you are not comparing a hosting company to hosting company. In the above example, Linode Win hands down.

DO just need to improve on their Networking. ( But i guess you get what you paid for )

<comment><USER64> Linode is my favorite provider on the web right now. For us, Linode is the best. It could be overkill for someone else, or a variety of other reasons unrelated to the speed of their hardware. For example, my neighbor only buys stuff from women-owned businesses, no exceptions.

I don't think anyone can be a "hands down winner", because it varies based on the needs of the user. Businesses frequently use Cogent for bandwidth at the lowest price point. Their business model could even depend on it. Other businesses require low latency, service level agreements, etc.

</comment></comment></comment></comment></comment><comment><USER65> One of the key featuers of Linode (at least it was when I used them) is the control panel which allows you to manage various vdisks (and even various whole OS installs on those vdisks if you so desire, though not with several running on a single account) within the space limits of your account. That and the general support. At the time I used Linode very few other hosts at that price-for-stuff value point offered such control. Neither of these things are mentioned in the comparison so I don't know if DO offers similar - <USER5> it isn't important to this reviewer but that sort of thing is for some.

I currently use one of the cheap servers from <http://www.kimsufi.co.uk/> (9UKP/mo for 2Gb RAM, 500Gb space and 5Tb bandwidth (after 5Tb you are not cut off but bandwdth is throttled, though I've never come close to that to see how much effect it has)). Excellent if you don't need any hand holding (it is a completely self managed service) or much support (I've not needed to contact support so can't comment, but again "completely self manged"), or a very specific OS/kernel (they have their own builds, getting stock versions intalled is possible but a bit of a faf), you want a pile of space, and your tasks are not CPU intensive (the cheaper machines only have Atom or Celeron processors). Having your own dedicated drive makes I/O contention a moot point unlike with a VPS (though depending on how loaded DigitalOcean's host servers are they may still outperform this for some I/O patterns due to the use of SSDs).

</comment><comment><USER66> Where are Digital Ocean's data centers? I can't seem to find that information anywhere on their site.

<comment><USER67> Equinix(New York) and Telecity(Amsterdam).

</comment></comment><comment><USER68> In this article, DigitalOcean's virtualization technology is misstated.

Its KVM not VMware

<comment><USER68> this has now been corrected.

</comment></comment><comment><USER69> For over VPS benchmarks, I love serverbear.com

I host with Ramnode.com, and I love their prices and SSDs. Not one issue yet except the odd DDoS attack. Used the server bear coupon code to get 31% off my services for life.

I wonder how it stacks up to DigitalOcean. I also have a linode server, but I'm thinking of cancelling because it is too expensive, but it is solid as a rock.

</comment><comment><USER70> Not a bad deal for Digital Ocean especially when there are $20 off promo codes available. Assuming you can use it for 4 months, it's essentially a 4 month trial. I found a few codes with a Google search. ;)

</comment><comment><USER71> It's still just 512 megs of RAM. I'd love to find a VPS provider that gives me like 2 gigs of RAM, and charged me by how much of that was hot during the month. It's frustrating to have to pay in advance for the maximum amount of RAM I might need.

I'd like to be able to leave processes running that might have a lot of data mapped into their address spaces, but for much of the time that data can safely be paged out to disk and not used. When I come and use the machine, I'd like to have a large amount of RAM, but when I'm not using it, I don't want to pay for it.

<comment><USER72> What happens when they sell your ram to another customer, and then you decide you want it back?

<comment><USER71> It's just capacity planning - they can migrate me around as needed, though obviously they'd like to minimize the number of times that happens. Maybe there are periods where I spin up but don't get the full memory - that's OK, I'm only paying for what I use.

We have all of this virtualization technology but I still have to make hard decisions about size ahead of time. There are lots of providers that will let me burst CPU, I'd like to burst RAM. For people building small apps that get occasional usage, having more flexibility on memory would be a huge boon.

<comment><USER73> I know IntoVPS lets you burst RAM. I believe the cheapest plan can burst to 1GB.

</comment></comment></comment></comment><comment><USER74> I've been with Linode for a few years, nothing to complain about. Like others have mentioned, super fast support, good wiki pages for setting things up, and good IRC channel.

With RAM prices being what they are, Linode should price their RAM more competitively and offer SSD for those who want it, at a reasonable price.

On the other hand they also have a data centre in Tokyo, which means noticeably better pings to Asia than DigitalOcean.

In any case, will give DigitalOcean a try for a couple of projects.

Might also want to try OVH and Hetzner for dedicated servers for about £50/month.

</comment><comment><USER75> Very confused, but I understand brand loyalty. Linode scorched Slicehost at one point. I like the idea of DigitalOcean and I'm moving all my non critical/beta/alpaha sites to DigitalOcean.

</comment><comment><USER76> There is routine 10x variation in disk performance between different VPS's on Linode. It's luck of the draw and performance will change (i.e. get worse) over time.

You'd need to provision and benchmark a bunch of Linodes to get meaningful numbers.

That's one of a dozen ways in which a VPS is not like a real server.

5 second benchmark which corresponds well to real-life disk performance:

      sysbench --test=fileio --file-fsync-freq=1 --file-num=1 \
       --file-total-size=16384 --file-test-mode=rndwr run --max-time=10 \
       | grep "Requests/sec"

</comment><comment><USER77> We just switched over to Digital Ocean and I'm very happy with it!

</comment><comment><USER78> There might be better performing hosting providers, and there are definitely lower cost providers than Linode, but I don't love them like I love Linode.

It's not entirely rational, but if you ask around, I'd wager most people who use Linode love it.

Maybe it's because it used to be just caker doing everything, or the free disk / memory upgrades he kept handing out. I remember him asking about LASIK surgery in the (very helpful) forums; there's a family feeling to it. It's the anti-Rackspace. It's home.

<comment><USER79> >It's not entirely rational

So true. I moved a mail server I manage over to digital ocean recently because it needed more RAM and the price difference between a 4GB DO instance and a 4GB Linode one was just too much to swallow.

Very happy with DO so far but... I still have 7 1GB and 512MB vms with Linode and no plans to move any of them because I just can't bring myself to sever all ties with Linode :D

</comment></comment><comment><USER80> I just launched this project on a Digital Ocean $5 VPS ... it seems pretty fast. (nginx + passenger + Rails)

<http://romancepass.com>

I've been a happy Linode customer as well. But being able to deploy silly side projects like this for just $5/mo is really cool. This is my 3rd DO VPS and they've all been great. I had a PostgreSQL problem on another one and my support requests were replied to really fast.

</comment><comment><USER81> Anyone know of any similar hosts (VPS, SSD) for Windows Server? Seems like installing a virtual Win instance may not work [ [http://digitalocean.uservoice.com/forums/136585-digital- ocea...](http://digitalocean.uservoice.com/forums/136585-digital- ocean/suggestions/2536799-can-i-deploy-windows-) ]

Alternatively, if anyone has successfully installed Windows on a VPS instance, please let me know :)

</comment><comment><USER82> DigitalOcean seems like they are worth a look

</comment><comment><USER83> I have both Linode 512 and DigitalOcean 512 VPS. Both VPS are running the same version of Debian, same version of Apache (Apache/2.2.16 (Debian), same apache2.conf files, list of loaded modules are same. For benchmark is used same web site on localhost. (simple joomla site). Results are quite different and I can't figure why. Linode has much more "Requests per second".

       #linode London
      Server Software:        Apache/2.2.16
      Server Hostname:        localhost
      Server Port:            80

      Document Path:          /
      Document Length:        7483 bytes

      Concurrency Level:      20
      Time taken for tests:   33.140 seconds
      Complete requests:      1000
      Failed requests:        0
      Write errors:           0
      Total transferred:      8037000 bytes
      HTML transferred:       7483000 bytes
      Requests per second:    30.18 [#/sec] (mean)
      Time per request:       662.791 [ms] (mean)
      Time per request:       33.140 [ms] (mean, across all concurrent requests)
      Transfer rate:          236.84 [Kbytes/sec] received

      Connection Times (ms)
                    min  mean[+/-sd] median   max
      Connect:        0    0   2.1      0      16
      Processing:   118  658 1143.2    487   19006
      Waiting:      113  655 1138.1    485   19006
      Total:        118  659 1143.2    488   19006

      Percentage of the requests served within a certain time (ms)
        50%    488
        66%    563
        75%    616
        80%    658
        90%    779
        95%    932
        98%   3635
        99%   6406
       100%  19006 (longest request)

        #DigitalOcean Amsterdam
      Server Software:        Apache/2.2.16
      Server Hostname:        localhost
      Server Port:            80

      Document Path:          /
      Document Length:        7483 bytes

      Concurrency Level:      20
      Time taken for tests:   118.087 seconds
      Complete requests:      1000
      Failed requests:        0
      Write errors:           0
      Total transferred:      8032000 bytes
      HTML transferred:       7483000 bytes
      Requests per second:    8.47 [#/sec] (mean)
      Time per request:       2361.734 [ms] (mean)
      Time per request:       118.087 [ms] (mean, across all   concurrent requests)
      Transfer rate:          66.42 [Kbytes/sec] received

      Connection Times (ms)
                    min  mean[+/-sd] median   max
      Connect:        0    1   4.0      0      33
      Processing:  1256 2355 234.1   2284    3604
      Waiting:     1256 2328 232.5   2264    3604
      Total:       1256 2356 234.1   2284    3604

      Percentage of the requests served within a certain time (ms)
        50%   2284
        66%   2328
        75%   2412
        80%   2500
        90%   2666
        95%   2768
        98%   2877
        99%   3204
       100%   3604 (longest request)

</comment><comment><USER84> Maybe this is the reason, (from DigitalOcean): Backup User is solely responsible for the preservation of User's Data. Even with respect to Data as to which User contracts for backup services, DigitalOcean shall have no responsibility to preserve Data, the service is provided as is, without warranty.

<comment><USER65> That is pretty much the case with every VPS provider in my experience. Many will make best efforts but hardly any will offer any garantees so officially distater recovery is your responsibility not their's.

</comment></comment><comment><USER85> Doesn't something like Rails appservers (Unicorns for an example) run better on Linode because of more access to cores?

Or does that depend on implementation? I remember reading something about MRI only being able to utilize one core.

</comment><comment><USER86> How is it possible that amazon charge $0.050 per GB (for more than 350 TB / month ) while DigitalOcean charge $0.02 per GB for each extra GB and 0.005$ / GB for the 5$ plan? How can they make any profit?

<comment><USER87> Given you can get 1Gbps from Cogent for ~1K/mo (at least that's the price I heard last time they were having a sale) that works out to $0.003/GB, so both are making a massive amount of profit.

<comment><USER86> How can I get $0.003/GB? Can I do it with a single dedicated server or do I need my own data center?

<comment><USER87> Contact your local cogent rep. If your dedicated server is in a building with a cogent feed you can probably get a line to it. I'm not sure their current non sales pricing and that might require a 10Gbps commit.

</comment></comment></comment></comment><comment><USER63> Has nobody else noticed that the benchmarks use ext3 for Linode and ext4 for DigitalOcean? Not that the SSD's won't outperform hard drives anyway, but that's one extra variable that will skew results.

</comment><comment><USER88> Linode customer for years. I'll buy 4 servers and give digital ocean a shot just because it seems the community approves the service and they accept paypal (Linode doesn't and it bothers me)

</comment><comment><USER89> How does KVM compare with Xen? Can you over-subscribe ram with KVM?

<comment><USER90> Yes, you can over-subscribe RAM either through ballooning or just by over- subscribing the host.

Both KVM and Xen use QEMU for their device models so the machine they emulate is very similar (at least in HVM mode). Xen and KVM use different paravirtual I/O drivers but everything I've ever seen indicates that I/O performance is better in KVM.

Xen PV guests are a mixed bag. On the one hand, they work on boxes without virtualization hardware (which are rare anymore) but on pre-Nehalem/Barcelona processors, they are much slower than using HVM (especially 64-bit).

I've never seen a good Xen HVM benchmark either comparatively speaking... Of course, I'm more than a little biased :-)

</comment></comment><comment><USER91> How are the "requests per second" measured? (I assume that something like `ab` is used, but I'm wondering if it run on the same machine or from an external machine ...)

<comment><USER92> Don't fuss about it.

HN loves benchmark porn. Throw some dramatic charts up, show approximately zilch methodological control, voila: front page.

(Complete with sarky comments like this one.)

My personal question is: are DigitalOcean making a profit?

<comment><USER91> "are DigitalOcean making a profit?" -- pandodaily is mentioned on the home page, so I'm guessing no.

Let's suppose for a moment that I actually wanted to do a performance comparison for my own purposes (which means I actually care about the actual results). How would I do it right?

</comment></comment></comment><comment><USER93> When Digital Ocean has a west coast datacenter, I will give them another look. Latency has a larger perceived impact to users than any of those benchmarks given.

</comment><comment><USER94> The tests on disk performance are kind of redundant as ext3 is being compared to ext4. This will skew the results in favour of DigitalOcean somewhat.

</comment><comment><USER95> As someone living in a land far beyond the mountains and the sea (aka Switzerland) I'm thinking this: 5$ for a nice Hulu / Netflix proxy? Sweet!

</comment><comment><USER96> But what about features set comparison? ipv6 support, backups, node balancer, dashboard, API, community, documentation...?

</comment><comment><USER97> I signed up for DigitalOcean, thanks.

</comment><comment><USER98> Performance Benchmarks for what.. Are these Benchmarks for a Remote Server for Work.. Or is it as a Webserver..

Benchmark does not prove thing for Webserver other than Disk I/O is greater with Digital ocean. If Disk I/O was so critical then no one would go with AWS since they have got the worst of all.

Benchmarks need to prove a thing in its application, unless it does its waste of time.

</comment><comment><USER99> Well looks like I'm just spunking away ~£12 every month!

</comment><comment><USER100> These graphs are meaningless without methodology.

<comment><USER101> The methodology is a well-documented "Phoronix Benchmark Suite".

However, why in the world is this methodology relevant for the hosting service? Would any of you really do any x264 encoding on an outsourced server, or would you use your desktop?

I would much rather get apache running, and run the ab (Apache HTTP server benchmarking tool).

<comment><USER102> I might, actually. A huge part of the reason I own a VPS is precisely because I don't own a desktop, and having a persistent networked machine comes in handy often.

</comment></comment></comment><comment><USER26> It amazes me that people on here are so quick to forget about the Linode Bitcoin incident.

Because it is during security incidents that you really find out what type of company you are dealing with. With Cloudflare they informed users quickly, were transparent about what happened and took their licks. With Linode they didn't inform users and we still don't know what happened.

As a former customer I would never, ever use Linode again.

<comment><USER103> Ahh, the Linode troll's right on time.

We've heard you <http://news.ycombinator.com/item?id=4840352> again <http://news.ycombinator.com/item?id=4121734> and again <http://news.ycombinator.com/item?id=4911934> and again <http://news.ycombinator.com/item?id=4652662> and again <http://news.ycombinator.com/item?id=4427802> and again <http://news.ycombinator.com/item?id=4545458>

In every Linode thread that pops up, no matter what the thread is actually about.

We get it. Move on.

<comment><USER92> His other pet subject is that MySQL has a better replication story than PostgreSQL.

</comment></comment></comment><comment><USER104> i think its bullshit, just buy 10 vps and write garbage to disk, in a month you can wipe their entire stock of ssd disks.</comment>


Show HN: WDFAC – a simple DotA-inspired browser game made with Font Awesome - <AUTHOR> http://datenshizero.github.io/wdfac/

<comment><USER2> Is there a reason you chose not to specify what the game is on the page?

It took me awhile to figure out that it was a Rock Paper Scissors game. Only after did I realize that was what RPS stood for. Then looked at GitHub where the real description was.

<comment><AUTHOR> It's in the "Rules" part that shows up when you click "Start Game". I've also expanded the RPS in the navbar to make it even more explicit.</comment></comment>


Number of Tor users recently halved - <AUTHOR> https://metrics.torproject.org/userstats-relay-country.html <comment><USER2> Tor moved the metrics to new servers and there was a temporary glitch in the metrics counting the relays. It's a metrics issue, not an actual change in the number of relays. [https://twitter.com/torproject/status/664168624467386368](https://twitter.com/torproject/status/664168624467386368)

</comment><comment><USER3> According to the metrics-team mailing list[1] it's likely due to an aborted cronjob and should be sorted out soon.

[1] [https://lists.torproject.org/pipermail/metrics- team/2015-Nov...](https://lists.torproject.org/pipermail/metrics- team/2015-November/000013.html)

</comment><comment><USER4> If you break it down by country, you can see the same halving for every country. It is unlikely that a social reason behind this, or a botnet going down as someone has suggested. It is more likely an intentional or unintentional change in how the number of users are counted.

<comment><USER5> Or an institutional Tor user like say the NSA realized a flaw in it and executed a predetermined strategy of ceasing use uniformly in order to shroud that there is a previously undetermined weakness that they just discovered.

I'm not saying that the above situation is likely, just that it is possible.

<comment><USER6> An institutional Tor user with proportionally the same number of endpoints as all other Tor users in each country? Probably not even the NSA would qualify.

<comment><USER5> If they had this strategy ahead of time, what would stop them from rooting a proportional number of Wordpress servers in order to give this illusion? I think the better counter argument is this:

Why would they even take actions which disclose the change? Why not just change the nature of their queries?

</comment></comment></comment></comment><comment><USER7> I wonder if it was a botnet going offline?

<comment><USER8> In August 2013, about five million Sefnit slaves joined the Tor network, increasing client count from about 800 thousand to almost six million. About two thirds of them have dropped off over the past two years. Maybe this is just the rest going away.

[https://metrics.torproject.org/userstats-relay- country.html?...](https://metrics.torproject.org/userstats-relay- country.html?graph=userstats-relay- country&start=2012-1-1&end=2015-11-19&country=all&events=off)

</comment></comment><comment><USER9> Q: Why do the graphs end 2 days in the past and not today?

A: Relays and bridges report some of the data in 24-hour intervals which may end at any time of the day. And after such an interval is over relays and bridges might take another 18 hours to report the data. We cut off the last two days from the graphs, because we want to avoid that the last data point in a graph indicates a recent trend change which is in fact just an artifact of the algorithm.

Q: But I noticed that the last data point went up/down a bit since I last looked a few hours ago. Why is that?

A: The reason is that we publish user numbers once we're confident enough that they won't change significantly anymore. But it's always possible that a directory reports data a few hours after we were confident enough, but which then slightly changed the graph.

from the Q&A [https://gitweb.torproject.org/metrics- web.git/tree/doc/users...](https://gitweb.torproject.org/metrics- web.git/tree/doc/users-q-and-a.txt)

<comment><USER10> Edit: nvm, thanks to Caer for figuring this one out.

The drop appears to happen on Nov 13th[1], I think that period should've been fully reported.

The only event I could find in the tor repo on that day was a version bump for 0.2.7[2], but node lists don't report any usage for that version yet, so I doubt it's related.

It's all quite weird, because there seems to be no drop in consumed bandwidth in the same period[3].

[1]: [https://metrics.torproject.org/userstats-relay- country.png?s...](https://metrics.torproject.org/userstats-relay- country.png?start=2015-11-12&events=off&end=2015-11-14&country=all)

[2]: [https://gitweb.torproject.org/tor.git/commit/?id=741d2dc685a...](https://gitweb.torproject.org/tor.git/commit/?id=741d2dc685a0e380bc4d8fbcda5a33b70272b3f7)

[3]: [https://metrics.torproject.org/bandwidth.png?start=2015-11-1...](https://metrics.torproject.org/bandwidth.png?start=2015-11-12&end=2015-11-14)

</comment></comment><comment><USER11> Is there something wrong with the counting, or is this an actual drop in users?

<comment><USER12> Its interesting, although perhaps coincidental, that the drop occurs on the day of the Paris attacks.

</comment></comment><comment><USER13> Can't know if this is indeed the case but quite a few tor alternatives are out there so this drop needn't be sinister.

This is seemingly tangential but when untargeted surveillance is used steganography beats encryption.

<comment><USER8> What alternatives? I2P is _much_ smaller, and has only _ad hoc_ clearnet gateways. JonDo is too small. VPNs provide _much_ weaker anonymity than Tor does.

</comment></comment><comment><USER14> [https://twitter.com/torproject/status/664168624467386368](https://twitter.com/torproject/status/664168624467386368)</comment>