Why did I wake up before my alarm clock went off? (2015) - <AUTHOR> https://joearms.github.io/published/2015-03-02-Waking-Up.html <comment><USER3> Nope. I slept in a common room with 3 brothers. If my alarm went off (half an hour before they needed to get up) I got a whopping. So I would wake up moments before the alarm, scramble from bed to my desk and slap the snooze button sometimes just as the buzzer started to sound.

This guy is over-thinking it. And underestimating the human brain.

<comment><USER4> Yup. I grew up in dorms at boarding school. The art was to wake up five minutes before the bell, so you could be first in line for the showers and get hot water, and then to breakfast before they ran out of the good choice. You couldn't have an audible alarm, as you'd wake others and then you'd have competition.

So, you just trained yourself to wake on time, at 0657 or whatever time shortly before 0700 you thought wise - after all, you didn't want to be early, as then you'd just stand in a freezing corridor, and you'd have wasted precious minutes of sleep. Eighth was the perfect place in line, as that was how many shower heads there were. I digress...

To this day, I have zero need for an alarm clock - I just pick the time I want to wake at, and I do, within a minute. I can decide to have a 15 minute nap and it's exactly that. If I don't set a constraint, I sleep on until I "naturally" wake up.

I have absolutely no idea how this unconscious dead reckoning of time works, but it does. I'm not as good at it awake as I am asleep - I only manage ten minute accuracy.

Another plus is that you don't get sleep inertia like you do when woken by something suddenly, and instead wake up, well, awake.

<comment><USER5> The book Why We Sleep discusses the phase of our sleep that has extremely accurate timekeeping. I've forgotten the details, of course. But I think it's quite clear our brains know precisely what time it is.

<comment><USER6> A book on sleep (and more) that deserves to be much more widely known is The Head Trip by Jeff Warren:

[https://www.goodreads.com/book/show/2168851.Head_Trip](https://www.goodreads.com/book/show/2168851.Head_Trip)

</comment></comment></comment></comment><comment><USER7> Personally, I rarely wake up before my regular alarm goes off. However, if I have to wake up earlier than I normally do for something (dr's appt, scheduled flight, etc), my body seems to wake itself up every couple of hours out of fear that I will sleep through the alarm. So I normally wake up at 8 and sleep soundly through the night, but if I've gotta be up at 7 for some reason, even if I _have_ an alarm set, I seem to wake up in a panic at about 4 AM, 6 AM, 6:30 AM, etc.

<comment><USER8> Very recognizable. What I found interesting is that, even though apparently my brain can time the alarm really well, but I cannot actively rely on it: if I choose not to set an alarm, I will wake up a dozen times before, like you describe. It's easy to explain why, but still a pity.

</comment></comment><comment><USER9> I think even more interesting is when I wake up before my alarm and actually get up/out of bed I feel like I had proper sleep. However, if I decide to go back to sleep for the short period of time before my alarm, I usually wake up by the alarm and feel like I got terrible sleep.

<comment><USER10> Yes! Basically, every time I wake up _because of_ alarm I feel disgusting.

But the most bizarre thing for me is that I pretty much always get up before the alarm (and hence feeling perfectly fine) if I drastically changed my regimen recently (which normally is pretty much non-existent), even if it leaves me with 5 hours of sleep. But once I get comfortable with it, I start sleeping longer, waking up after the alarm (even if I set it purposefully late, making place for, like, 9-10 hours of sleep), waking up tired and hating my life.

</comment></comment><comment><USER11> I regularly wake up about 5 to 10 minutes before the alarm goes off. I think it has a lot to do with light levels. I tend to set my alarm to go off about 7:00 in the winter and earlier in the summer, so there is some light outside to wake up to.

<comment><USER12> I'm also one to wake up 5 to 10 minutes before the alarm, but my alarm often varies. Some days it's 5:30 AM. Others it's 8 AM. So the ambient light level theory is out for me. But probably 6/7 days per week I find myself waking up a few minutes before it goes off.

</comment></comment><comment><USER13> Besides the overlooked possibility that people are just better at waking up at specific times than is generally expected (which I think is true and probably explains most cases, but maybe not all), there's another explanation the author didn't consider: it's possible that people frequently half-wake-up, and then fall back asleep and forget the experience. However, if you half-wake-up right before the alarm, then the alarm interrupts you before you get the chance to fall back asleep and forget the experience. You just think that you unusually woke up right before the alarm, without remembering the many other times you woke up in the morning not immediately before the alarm.

I used to have an alarm clock very close to my bed, and I would be able to turn it off or hit the snooze button very quickly after it went off without getting up. I believe I could hit the button in my sleep, or wake up just enough to hit it and then fall back asleep fast enough to forget the experience. I remember many times waking up at my alarm starting to go off at 9:30am (or some other round ten minute interval time after 9am) even though I scheduled it at 9am; I must have snoozed it several times and fell back to sleep quickly enough to forget the experience.

I even switched to a phone alarm clock app where I had to solve simple arithmetic problems in order to snooze or disable the alarm, and I had the same experience. I'm not sure it if it makes sense to say that I was solving the math problems in my sleep; I think it's more correct to say I woke up, solved it, and then fell back asleep and forgot the experience because I fell asleep quickly enough.

<comment><USER14> > I believe I could hit the button in my sleep, or wake up just enough to hit > it and then fall back asleep fast enough to forget the experience. I > remember many times waking up at my alarm starting to go off at 9:30am (or > some other round ten minute interval time after 9am) even though I scheduled > it at 9am; I must have snoozed it several times and fell back to sleep > quickly enough to forget the experience.

That happened to me quite a lot during college, and due to a quirk of my alarm I know for certain I wasn't just sleeping through it: The snooze button was between the two arrow buttons for setting stuff, and if I hit an arrow by accident while the alarm was going off, the set alarm time would change. It pretty regularly ended up several minutes off of where it was supposed to be.

</comment></comment><comment><USER15> I discovered at an early age that I could "will" myself to wake up at a desired time. It's certainly not perfect, but my accuracy is _way_ better than chance.

Living things have all sorts of biological clocks, so this isn't really magic. Rather, it might be a bit surprising that we have some conscious control over it.

<comment><USER10> Yeah, I'm pretty much sure OP is unnecessarily complicating things. It I am getting up like 5 minutes before the alarm every time I know I really need to get up at that specific time (because I know something more important than just dragging my ass to the fucking office needs to happen this time), well, that means I somehow know subconsciously really well what's the time is. Because either I'm living in my sleep ever since, or I actually got up, turned off the alarm clock so it won't bother me, got dressed and went on with my day. Not just lied there fooling myself I'm awake before I actually got awake.

<comment><USER16> Yeah but 5 minutes is much much easier than 3 seconds.

<comment><USER17> But even if your brain is measuring time operating at a precision of "around five minutes before," the variance will sometimes cause that to be 3 seconds before.

<comment><USER16> The premise is "I often think that I wake up just before my alarm goes off."

If 90% of the time you wake up well before the alarm, the clock saying fifty- something, and can shut it off before it starts,

9% of the time you wake up noticably past the alarm,

and 1% of the time you appear to have woken up just before it goes off,

then that's not very confusing, and isn't going to prompt something like this article.

The article is about being _much_ more precise on a regular basis. Or the illusion of it.

</comment></comment></comment></comment></comment><comment><USER18> An alarm going off if a _very_ disruptive disturbance to your sleep cycle, _and_ it is predictable.

Your subconscious mind perceives it as a predictable negative event and wakes you up in an attempt to prevent the disturbance.

Goes to show how cool our brains are.

<comment><USER19> After I got an Apple Watch I started wearing it to bed and using it as my alarm. I can't remember ever waking up just before it goes off although that would happen a lot with my old alarm. Perhaps because a vibration on my wrist, while still effective at waking me up, is not nearly as disruptive and negative as an alarm.

<comment><USER18> >is not nearly as disruptive and negative as an alarm

My personal experience says this is likely the cause as well. A vibration on your arm is a lot less disruptive as "EENENENNNG..... ENENENENNG....ENENNENN" right in the middle of a dream.

</comment></comment></comment><comment><USER20> 100 years from now the conversation will be about how back in the day we didn't know all of the ways time, space and quantum mechanics worked and we thought it was just a coincidence or some psychological brain function that has a highly tuned timer.

<comment><USER13> If there was some kind of backwards-time effect going on, then you would expect the experience of waking up just before unexpected interruptions to be just as common as waking up before scheduled interruptions (alarms). Personally I have a lot of experiences of waking up right before an alarm that was scheduled at a time I knew and not as many experiences of waking up right before something unscheduled.

</comment></comment><comment><USER21> I've definitely had the experience, mentioned else-thread, of waking minutes before the alarm, and learned through experience not to roll back over if I wanted to feel awake that morning.

I'm also old enough to have had an alarm clock with an internal relay for the alarm, whose click was sufficient to wake me before the alarm proper sounded.

</comment><comment><USER22> I almost never use an alarm to wake up. Whenever I use an alarm I wake up 5-10 minutes earlier and I wonder if the alarm went off or not. I consider this some kind of anxiety because usually I use an alarm to e.g. catch a flight

</comment><comment><USER23> The famous experiments from Benjamin Libet seem relevant here: [https://en.wikipedia.org/wiki/Benjamin_Libet#Implications_of...](https://en.wikipedia.org/wiki/Benjamin_Libet#Implications_of_Libet's_experiments).

In particular, see Daniel Dennett's response (the relevant aspects of which are quoted on the Wikipedia article linked above).

I will say, I don't think this is a terribly interesting _example_; as others have noted, it's not uncommon to actually wake up minutes before the alarm goes off. (I commonly wake up 20 or 30 minutes before my alarm goes off; I can be reasonably sure my subjective experience is accurate because I look at the clock!)

But what the author hits upon (apparently naively, but it's nonetheless a useful insight) is that cognition (if one is a materialist) is not a monolith and that, as a result, various timing issues can confuse observers (as with Libet).

<comment><USER24> During high school I had an alarm. I would wake up within about 1 to 3 seconds of it going off, stand up, walk to the alarm that was in my washroom and turn it off just as it was starting. Every school day for years.

I became convinced that the precision of the brain at a task is partially a function of its reliability long before learning anything about machine learning.

</comment></comment><comment><USER25> The real question:

Why is it that if you don't set your alarm you won't wake up before it would normally go off, had you set it.

<comment><USER26> Come again? English is such a funny language.

<comment><USER27> They wonder why this natural waking up before the alarm only works if you actually set the alarm and does not work if you do not set it.

</comment></comment></comment><comment><USER28> Our two dogs seem to do this. They sleep in our bedroom. We get up at 0500 to walk them before going to the gym. Usually we're up before the alarm goes off, but not always. If we sleep until the alarm goes off, typically around 0458 the dogs will be up and standing next to our bed; they shake their heads around so that the sound of their ears flapping will get us up.

</comment><comment><USER29> I often wake up two to three minutes before the alarm. It happens often. I just think my internal clock is just getting in habit.

</comment><comment><USER30> Small threads from back then:

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

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

</comment><comment><USER31> In order to prevent this I bevel my week. M, T, Th I set my alarm for an hour earlier. W and F I set my alarm for the latest I can reasonably wake up and still make it to work on time if there is a minor hiccup. It prevents me from getting used to a particular schedule and waking up ahead of my alarm. When I wake up ahead of my alarm I tend to turn it off, thinking I'm awake, and subsequently fall back asleep, making myself late.

Sleeping in on Wednesdays gives me a burst of energy just as everyone else is experiencing the mid-week "hump." And doing the same on Friday keeps me from checking-out an hour before the week is done. It's a good system.

</comment><comment><USER32> I thought this was going to be an article about how this guy had a microphone in his room recording constantly, and analyzed the sounds around him that corresponded to times he woke up earlier than he wanted to. That would have been cool.

</comment><comment><USER33> I see a general chorus of disagreement in the comments, and have to agree - <USER2> wake up before my alarm and the clock is reading 6:42 or something when the alarm is for 6:45. It's not some exotic Lamport clock phenomena or some quote out of Nietzsche's "Human, All too Human" ("Everyone knows from experience how fast the dreamer can incorporate into his dream a loud sound he hears, bell ringing, for example, or cannon fire, how he can explain it after the fact from his dream, so that he believes he is experiencing first the occasioning factors, and then that sound"). We just get good at anticipating our alarms.

</comment><comment><USER34> I also often wake up before the alarm, and the delta is on the order of tens of seconds. I'd say I definitely get to become fully awake and start thinking about the upcoming day before it rings. Apparently, just a matter of quite a precise internal clock.

Another situation when it can trigger is when I brew tea. I like a "reproducible" brew, so I'm used to setting the timer to 3:30 minutes after filling the cup with water. When I then go do something else and become engrossed in it, I'll often suddenly realize "Oh no, what about the tea?" I then look at the timer and see there are 5-10 s left.

</comment><comment><USER35> >> A couple of days ago I lay in bed thinking "the alarm is just about to go off" and then a second later it did go off and I thought "how come I woke up just before the alarm went off?"

What is the alarm like? A beep every 10 seconds? I dont follow how a consistent sounds would not be recognized.

This seems to posit. Alarm is recognized by the brain, he then has enough time to have a conscious thought but then the ears arent passing the signal they've already received, (which triggered the wake up), to the brain to "hear" it?

Does this happen to anyone else? I've never heard of it before

<comment><USER36> It's more that the conscious brain incorrectly orders events when building memory. Deja Vu is a common phenomenon of falsely feeling a memory of something that was just learned.

</comment></comment><comment><USER37> Maybe I'm missing something but e.g. on the Android clock you can dismiss an upcoming alarm. So now if you wake up, dismiss it and it never rings that kind of proofs you really woke up before, right?

</comment><comment><USER38> There's a simpler explanation: your brain is associating other environmental (internal or external) conditions with the alarm going off, and reacting to those instead of (or in addition to) the actual alarm.

This seems to happen to me pretty often, given that I'll wake up in "the middle of the night" (usually because I need to use the bathroom, or because I want a glass of water), then check the clock, realize that the alarm goes off in 3 minutes, and grumble about the lost sleep time.

</comment><comment><USER39> I can't believe no one here seems to know who joe armstrong is / was and that he passed away, isn't this hackernews? This is a post from 2015. Joe was a wonderful person and this post shows a random funny/quirky thought he had. Writing things like "...by all means, keep doubting yourself and over- analyzing your own body..." is pretty inappropriate

</comment><comment><USER40> I don't see how this reasoning makes any sense: you just need to look at the actual clock time to find out if the alarm went off or not.

For instance: alarm set for 8 AM.

You wake up, look at the clock: if it says 7:59AM or earlier, you woke up before it had a chance to ring. If it says 8:00AM or anything past that, it already went off.

Unless, of course, you have an alarm that does not show you the current time. Otherwise, it's pretty easy to figure out what's happening.

</comment><comment><USER41> I have a visual alert on my computer to remind me of drinking water every half hour. After a couple of weeks, I regularly noticed myself feeling thirsty and reaching for the bottle a mere handful of seconds before the alert went off. I think our bodies are more capable than we believe to adapt to habits and tracking time, with or without environmental cues.

</comment><comment><USER42> It is not uncommon for me to wake up 2-3 minutes before the alarm goes off. As I switch off the alarm clock then, the alarm never goes off. So no funny brain things going on, the internal timer can be very precise.

Of course it also happens, that I sleep like a log until the alarm warkes me. The waking up in time usually happens when there is an urgency to be on time.

</comment><comment><USER43> Can't you just verify this by hitting a timer at the time you are thinking "this is just before the alarm will go off".... then you can verify if this is really just minutes before the alarms was going to go off.

My guess is sometimes it's an hour before the alarm, but it just feels like a minute before, since you actually doze off again...

</comment><comment> yoz-y This would be actually quite an easy theory to put to test. You could film yourself waking up, then you would know.

And I would bet that they are actually waking up before the alarm clock, most of the time because of the regular schedule, the other times due to confirmation bias.

</comment><comment><USER44> I always thought that my alarm clock probably made some very soft sound shortly before the alarm. But maybe not.

These days I seem to be waking up before my alarm, but several hours, not moments before.

</comment><comment><USER45> People attune themselves to repetition. They wake up before it goes off because they wake up around the same time almost every day. People are not imagining no alarm for 5 to 10 minutes.

</comment><comment><USER46> I had an alarm clock for a long time. My alarm set for 6:00am and I would wake up and look at the clock at 5:59. So, I would actually just wake up just before the alarm.

</comment><comment><USER47> Not a biologist, but circadian rhythms are attributed to light. Could the light level in the room be the trigger for waking before the alarm goes off?

<comment><USER48> Light mediates them, but there are a lot of clock-based behaviors in animals and they usually anticipate events. They can occur in complete darkness. Searching PubMed for "time sleep anticipation" produced interesting results.

</comment></comment><comment><USER49> This may be the case for some but for me my alarm pretty much never goes off It's set for 6am everyday and I usually turn if off around 5:55

</comment><comment><USER50> You didn't wake up before the alarm went off. What happens is your mind is dreaming about a minutes worth of some random scenario. At the moment the alarm sounds, this scenario undergoes an alternation to incorporate the alarm into the dream and is then stored in your short-term memory. When you fully wake-up, your mind replays the dream, the last bit of which contains the sequence of you waking-up just before the alarm going off.

<comment><USER44> I used to dream I was waking up, dream I was doing stuff more or less normally, and then things would get really weird and I would semi-lucidly conclude I must be still dreaming, and force my eyes open to wake up _again_. On occasion it happened repeatedly. And in retrospect, it was obvious that when I was dreaming, my ability to tell I was dreaming was impaired. But then I worried, what if I think I'm dreaming and I'm not?

</comment></comment><comment><USER51> What about you woke up 10 times before the alarm and forgot them until the last time?

</comment><comment><USER52> Am I colourblind or is booting orange not pink?</comment>


MongoDB at Etsy, Part 2 - <AUTHOR> http://codeascraft.etsy.com/2010/07/03/mongodb-at-etsy-part-2/ <comment> brown9-2 _One of the things that Dan touched on was that MongoDB behaves well when the working set of data exceeds available physical RAM.... Which is to say, query performance is excellent when the database is small enough to keep entirely in RAM, but when the data blows past RAM, the performance then plateaus, limited only by your disk I/O subsystem. This is preferable and familiar; there's no massive drop (or crash) in performance, there's only a nice plateau of response at the bound-by-disk condition._

Just curious, but anyone aware of which of the other document-based datastores (CouchDB, Tokyo etc) don't behave as sanely when the dataset size is greater than RAM size (and/or why this is)? Their "part one" article mentions that this type of behavior was a requirement for them, and that it eliminated some of these other datastores.

<comment><USER2> One of the reasons BBC chose CouchDB for their next-gen data store is the predictable performance under load.

Here is a series of blog posts from one of their engineers, on their use of CouchDB: <http://enda.squarespace.com/tech/tag/bbc-forge>

There are also a bunch of CouchDB case studies here:

<http://www.couch.io/case-studies></comment></comment>


My experience rewriting Enjarify in Rust - <AUTHOR> https://medium.com/@robertgrosse/my-experience-rewriting-enjarify-in-rust-723089b406ad#.wdxskueoh <comment><USER2> Good write up.

I can agree with him on a couple of points.

I've found Rust code to become terribly verbose and unreadable for certain tasks. You have to be careful to not end up with messy and hard to read code. Lifetimes of course make it even worse. Some common patterns are hard / awkward to implement. The stdlib is (intentionally) very small, and throwing together various crates adds a considerable maintenance overhead. Overall I find Rust really promising though. It might need a few more years to mature.

I totally agree on Go: I intially really loved it and used it all the time. The more code, and especially the more reusable libraries I wrote, I started hating it more and more, to the point where I only touch Go if I have to, or for small, one-off, self contained projects that need a bit more perf than Python or where Haskell is not appropriate (team, problem space).

The only thing that's a plus for go is it's dead-easy concurrency.

<comment><USER3> I've not looked at Rust, but I've been using Go in production now for years at this point with non-trivial code bases. In our cases, they are mostly SMTP and HTTP servers. Sometimes the boiler plate gets in the way (and I think Go should almost never be used for simple CRUD stuff, there are better options), but I find the readability fantastic. It really dawned on my how readable it can be when I had to fix a missed condition in clean up on shutdown. It was fixed in an hour. For the perl version that the Go one replaced, it would have been a day before I even understood what would have needed fixing.

<comment><USER4> > I think Go should almost never be used for simple CRUD stuff

Why?

> there are better options

Which ones?

<comment><USER5> PHP, Ruby, Javascript, Python - pick one.

<comment><USER6> Why are they better? Dynamic languages are orthogonal to creating CRUD apps and come with massive runtime and reading overhead.

<comment><USER5> The overhead doesn't matter for simple CRUD stuff. The developer's time is what matters. The dynamic language are more productive.

<comment><USER6> > The dynamic language are more productive.

Do you have a source for that? I hear it a lot and I just don't buy it.

<comment><USER7> Isn't it more of an opinion than an objective truth? ie, it doesn't really need a source.

<comment><USER6> That is what I was angling toward.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> > If you want to be able to refer to the contents of the enum, have named > fields, or call methods, you need to create a separate struct definition.

Not so! An enum variant may contain named fields. From The Book, [https://doc.rust-lang.org/book/enums.html](https://doc.rust- lang.org/book/enums.html) :

        enum Message {
            Quit,
            ChangeColor(i32, i32, i32),
            Move { x: i32, y: i32 },
            Write(String),
        }

<comment><USER2> I agree with him though that enum variants not being distinct types is a hassle.

I think there's an RFC for making this possible.

<comment><USER9> It's by design AIUI; certainly it's often what you want (I won't claim "always", but probably more often than actually wanting the distinct subtypes).

<comment><USER10> Even Haskell needs an explicit language extension flag to make this happen (-XDataKinds I believe).

Consider this use case

        data Pointer = NullPointer | NonNullPointer Int

And I want a function that only accepts non-null pointers:

        dereference :: NonNullPointer -> a

To do that and maintain my Pointer type, I'd have to do something like:

        data NonNullPointer = NonNullPointer_ Int

        data Pointer = NullPointer | NonNullPointer NonNullPointer

        --                           ^ The namespace of constructors and types is distinct,
        --                             so this is fine and is a constructor of Pointer that
        --                             contains a NonNullPointer, which only
        --                             has one constructor, NonNullPointer_ (note the _)

I believe -XDataKinds does something like this behind the scenes, but someone better than I should verify. I just use the above technique rather than questionable language extensions.

<comment><USER11> DataKinds lets you use NullPointer and all the various NotNullPointer values as types, but they are uninhabited. It doesn't (obviously) let you restrict a parameter to values using a particular constructor of a sum type.

<comment><USER10> Just looked it up and it was GADTs I was thinking of that would allow me to do something like that.

<comment><USER11> Ah, yes.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> I'm always glad to get feedback, we're specifically going to focus on ergonomics and smoothing rough edges this year, so this kind of thing is invaluable.

There's some good discussion on the Rust subreddit: [https://www.reddit.com/r/rust/comments/53ft4m/my_experience_...](https://www.reddit.com/r/rust/comments/53ft4m/my_experience_rewriting_enjarify_in_rust/)

<comment><USER13> Off-topic, but since you're here, let me ask: where can I track the progress on rustup support for musl-based distros where musl is the host (void linux, alpine linux) and FreeBSD? I got everything but Rust working nicely on void linux, and it's the only thing holding me back right now. Since Docker defaults to alpine linux, the reach of such support will be wider than one might initially think.

<comment><USER12> For void: [https://github.com/voidlinux/void- packages/issues/4570](https://github.com/voidlinux/void-packages/issues/4570)

And alpine: [http://pkgs.alpinelinux.org/packages?name=rust*&branch=&repo...](http://pkgs.alpinelinux.org/packages?name=rust*&branch=&repo=&arch=&maintainer=)

[https://github.com/rust- lang/rust/issues/31322#issuecomment-...](https://github.com/rust- lang/rust/issues/31322#issuecomment-247818983) is the latest news on the subject. It's not impossible, but we're not sure _how_ we want to make it easy. The real issue is the bootstrapping, my understanding is that cross- compiling a musl compiler from a gnu compiler does work today, which is how those packages were made.

<comment><USER13> Thanks for the pointers. Yeah, after you've bootstrapped once, you have a version to bootstrap another, especially since the new requirements to not depend on a nightly snapshot. rustup should be able to provide images that way which work on both alpine and void. The default would be a dynamically linked against musl rustup image which may still expose musl-static as a target just like it does on glibc hosts. I wouldn't complicate matters as a first step with questions of whether a musl image should be statically linked.

</comment></comment></comment></comment><comment><USER14> It's a shame there aren't more "Modula" derived modern languages, rather than trying to force C into being a higher level language.

Java, especially at the 1.1 mark, felt like some kind of crippled version of Borland's Pascal/Delphi + a UCSD P-system VM (dressed up to look like C++).

Microsoft for C# hired the language designer from Borland.

The Go team includes a Uni of Zurich guy, and at least decided to use a declaration syntax (when variable types aren't inferred) more like Pascal.

Start with a language that wasn't a shiv with a broken handle in the first place to build applications.

It's a shame Eiffel never took off instead of the wretched C++, no, this time for sure, Java... (not, that's not it, either - lather, rinse, repeat) lineage.

(C was vastly preferable to assembly in the late 80s / early 90s, but it's time to let it go, and its syntax/semantics, people)

Irony: I like the unix philosophy of composing processes in a functional pipeline, which is totally lost in the era of monolithic java crud, but that is another huge tangent.

RANT ENDS.

<comment><USER15> The Rust community is pretty good at turning specific complaints into actionable proposals. Could you perhaps be more specific about what nice things in Modula/Delphi/Eiffel are missing from other languages, or about what might be different if Go or Rust borrowed more of their influence?

<comment><USER14> Thanks for the response, it was just a rant.

I suspect the Rust community and I simply have irreconcilable differences. They want a better C or C++, and like special character ditties such as &, *, <_> (whatever that does), and I would rather have short keywords in some places.

For example, declaring a parameter with "var" in a function heading means it is a reference, instead of a copy. However, there is no dereferencing syntax, you simply use it as if it were a local "auto"/stack type variable (which also cannot be a null, so no checks are required - which Rust probably takes care of as well if you ask nicely), and there is nothing special for the caller to do, unless the caller has a pointer that needs to be checked and then dereferenced in the call.

I also miss reasonable "set" operations, even if the sets were just bit vectors on short enumerated types (enums or short sub-ranges of other discrete values). Maybe Rust has sane set operations, but Java's collections operations are a bit off: mutating "add-all" vs union producing a new set, and so on.

Eiffel's pre/post-condition and class invariant special assertions are nice, as well.

<comment><USER16> Rust's set types do implement the BitAnd and BitOr traits, which allow using the & operator for intersection, | for union (There's also a few others, like (Sub, -, set difference) and (BitXor, ^, symmetric difference)).

They use Clone to construct a new set for the result, for use with a functional style. There are also the union/intersection methods that produce lazy iterators over references to the values in the sets, for cases where cloning the set elements would be too big a runtime price, at a slight cost to ergonomics.

Clone-based operator overloading:

[https://doc.rust- lang.org/std/collections/struct.HashSet.htm...](https://doc.rust- lang.org/std/collections/struct.HashSet.html#method.bitand)

[https://doc.rust- lang.org/std/collections/struct.HashSet.htm...](https://doc.rust- lang.org/std/collections/struct.HashSet.html#method.bitor)

Lazy-iterator-based methods:

[https://doc.rust- lang.org/std/collections/struct.HashSet.htm...](https://doc.rust- lang.org/std/collections/struct.HashSet.html#method.intersection)

[https://doc.rust- lang.org/std/collections/struct.HashSet.htm...](https://doc.rust- lang.org/std/collections/struct.HashSet.html#method.union)

Do these qualify as reasonable set operations?

</comment></comment></comment></comment><comment><USER17> This was exceptionally well written, and it closely mirrors my experience as a python programmer slowly moving into Rust.

Rust is awesome, but there are a few rough corners where you end up having to write really un-ergonomic code.

<comment><USER18> After reading this article my conclusion is that Rust is some kind of static- typed Perl with a focus on memory safety.

The syntax is horrid.

steveklabnik asked me once why I thought Rust is more complex than C++. Well, if one takes a look at any of the Rust snippets in this article without being deeply disturbed by the @'s the .'s, &'s and *'s, then we have a completely different idea about what it means to build a user-friendly and ergonomic programming language.

Luckily I don't have to pick between Rust and Go, but if I had to I would just stick to Python and use type annotations after reading this.

<comment><USER12> In a systems language, it's important to know if you're passing around things by value or reference. We follow the Python maxim here: explicit is better than implicit. This means &s to indicate where something is passed by a pointer, and * for dereferencing. This is the same as C++, we just do less magic coercions. We also tried to not make up too much syntax, and stick to "curly braces and semicolons" for most things. Even lifetime syntax isn't new, though OCaml uses it for a very different purpose than we do. (There also aren't any @s in there, unless I missed something? And . is the same as in any language: for method calls, and we made it _simpler_ than C or C++ here, by having . instead of . and ->.)

I agree that you can make a language without many syntactical constructs, but Rust has other goals as well. Language design is hard! There's tons of tension between various choices.

<comment><USER19> Rust is exceptionally noisy and terse. Easily worse than C++, in my opinion, which is known for being noisy.

Two things bug me in particular. Rust eschews readability by erring on the side of terseness — fn instead of something like func, for example, might save some typing, but does contribute to making visually denser.

The choice of snake_case instead of camelCase also adds to the noisiness, because there's no programmer font that aligns the underscore with the text baseline, so it's disruptive. Snake case is pretty aptly named; typographically, there's a lot more visual cohesiveness to camelcase. (As an aside, I never understood the lack of consistency here: the capitalized version of foo_bar should surely be Foo_Bar, not FooBar.) Python admittedly uses snakecase, but avoids looking too ramshackle by having otherwise very little noise.

Compare something in Rust (from OP's repo):

        fn type_list<'a>(dex: &'a DexFile<'a>,
          off: u32, parse_cls_desc: bool) -> Vec<&'a bstr> {

to Go:

        func typeList(dex *DexFile,
          off uint32, parseClassDesc bool) []BStr {

I'm not the world's biggest fan of Go, but they did nail the readability aspect. Nim is another good example which does it even better.

Of course, Go doesn't have lifetime annotations, but I can't understand who thought using ' was a great idea.

I wish more time was spent on the visual aspect of a language. I'm really liking Reason, Facebook's new syntax for OCaml, which shows that a language can be made fresh and friendlier through aesthetics alone. Elixir is cleaner than Erlang, but I think it went too far in emulating Ruby; instead of very simply aligning "def" and "end", for example, you now have "do ... end" everywhere).

Edit: Typo.

<comment><USER20> Your criticism comes down to wanting a different abbreviation for "function" and wanting camel case instead of snake case. I would suggest that it's not that we didn't spend time on the "visual aspect" of a language: rather it's that we made choices that were not your preference. We had to pick something and disappoint somebody; I apologize that that person was you.

> Compare something in Rust (from OP's repo):

As with so many of these comparisons, you're effectively comparing a language with GC to a language with safe manual memory management, and misinterpreting this as evidence of bad syntactic choices. (Same with Nim: Nim has GC.)

Look at the function signature when you remove the lifetime annotations:

        fn type_list(dex: &DexFile, off: u32, parse_class_desc: bool) -> Vec<bstr>

When you do that, there's very little difference between that and Go.

> Of course, Go doesn't have lifetime annotations, but I understand who > thought using ' was a great idea.

Me. It was chosen because it's very visually lightweight.

<comment><USER19> > Your criticism comes down to ...

No, those were only the two most obvious, easiest-to-solve examples that came to mind.

With all due respect to you and your Rust colleagues (who have done a lot of impressive work), "we made choices that were not your preference" sounds a little condescending. These are my personal opinions, just as your counterarguments are opinions. We should all able to make technical arguments without resorting to that kind of rhetoric. _Of course_ you made choices. Everyone here is entitled to disagree with them and explain why.

There's a false dichotomy between "hard-to-read syntax" and "no syntax at all" being implied here. It's reasonable to imagine that Rust could have had _less terse_ , but still readable, syntax, even for things like lifetimes.

<comment><USER20> > We should all able to make technical arguments without resorting to that > kind of rhetoric.

The subtext here is that these decisions aren't technical. They're pretty arbitrary: "func" vs. "fn" or camel case vs. snake case. There's no science here: there are lots of very successful languages with camel case and lots of very successful languages with snake case.

I certainly appreciate that you have specific reasons for your preferences, but I take issue with the idea that we didn't spend time on the visual aspect of the language.

> It's reasonable to imagine that Rust could have had less terse, but still > readable, syntax, even for things like lifetimes.

Do you have a proposal?

There were long threads with different proposals back when this stuff was being designed, but none of them were particularly palatable. The verbosity with anything that wasn't as lightweight as possible turned out to be too much.

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> I wish someone would do this in nim and compare the results.

My wishful thinking is that nim would come in at the same number of lines as Python and very close to Rust's performance.

<comment><USER22> I was thinking the same thing with OCaml. I wrote in OCaml years ago and I still remember how incredibly terse the language is/was. You can accomplish so much with very few lines of code (with the minor exception of the whole reduplicate signatures and way too many artifacts (mli, cmi, ml, etc)). It also compiles much faster than Rust (I'm not sure about Go but since Go doesn't have that sophisticated type system it isn't really fair).

I have to say Rust got fairly hard to read and think about writing code with lifetimes when using closures. I couldn't decide at times whether to just use a trait with some cells or get the closure stuff working. This was in part because of some bugs (about 1.5 years ago) and the fact that their are 4 types function things. It is also probably because I haven't programmed in anything analogous that has lifetimes (I haven't programmed in C++ in more than 1.5 decades).

<comment><USER23> There is the Python -> OCaml story for 0install:

[http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml- ret...](http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml- retrospective/)

This article in particular tackles polymorphic variants [http://roscidus.com/blog/blog/2014/02/13/ocaml-what-you- gain...](http://roscidus.com/blog/blog/2014/02/13/ocaml-what-you-gain/) which solve one of the issues that the author had with Rust (enum subsets)

<comment><USER24> I recently used that nice article in a discussion on Lobste.rs given its Type System section does a good job showing what good, static typing can catch without developer thinking to test for it. Get in habit of specifying basic stuff right then the compiler pulls its weight a lot. On top of it, key components in ML's get formally verified on occasion due to their easier modeling in theorem provers, etc. The last benefit is the compilation is apparently straight-forward and easier to get right given Esterel managed to certify SCADE code generator in it. That requires source-to-object code equivalence proof which is a bit hard in some of these popular languages. ;)

</comment></comment></comment></comment><comment><USER25> You can convert an `Option` into a `Result` and then use the `try!` macro, all in a single line: [http://stackoverflow.com/a/37890739/46571](http://stackoverflow.com/a/37890739/46571)

<comment><USER26> But Iterator's next() returns an Option, not a Result.

<comment><USER25> I don't see why you'd want to manipulate iterators by hand, unless you're implementing custom iterators. But, in any case:

        try!(iter.next().ok_or("end of sequence"))

EDIT: Sorry. I was just being dense.

<comment><USER26> Check out the code that goes along the "no try! for Option" comment in the OP: it _is_ implementing a custom iterator.

<comment><USER25> Oh, my bad. I guess `try!` isn't a good enough replacement for properly treating `Option` and `Result` as monads.

</comment></comment></comment></comment></comment><comment><USER27> > Besides, when nearly every call requires a cast, people will just > automatically add them to shut the compiler up, defeating the purpose.

That's why there is little reason to "fix" C integer promotion rules in the first place (apart from unsigned).

</comment><comment><USER28> Rust syntax is horrible compare to Python / Go, I don't see how you could give an advice to someone that do Python to use Rust, you lose GC and add a great layer of complexity / learning curve. No thanks. Seriously when I see that:

struct IRBlock<'b, 'a: 'b> { pool: &'b mut (ConstantPool<'a> \+ 'a), // other fields omitted }

<comment><USER29> GC is not a feature in all cases, and without GC you must manually handle allocation and deallocation in some cases, C or C++ let you free of lifetime annotations at the cost of crashes, Swift force you to use counted pointers and Rust force you in a semantic that forbid errors at the cost of some lifetime allocation that you consider ugly. But it is still shorter than copy pasted Go code to simulate generics, and multiple "err, res" that stains the code.

<comment><USER28> My point is a lot of people use Python because it's a simple and powerful language, Rust is not a simple language at all. And the performance it brings is not enough to make the decision to switch language in most cases.

<comment><USER30> I'm not sure what you're arguing. The article didn't advise people to switch from Python to Rust. It simply gave information that people that are considering it. The last paragraph even echoes some of your sentiment.

> And the performance it brings is not enough to make the decision to switch > language in most cases.

That's assuming a lot. Nearly 10x the speed is extremely useful for some people. Presumably if you are rewriting your Python code in Rust or Go, you've already identified performance as a big reason to do so, and that gain would be extremely useful.

<comment><USER28> "Rewriting anything takes a lot of time and causes lots of bugs, going from Python to less expressive language means an increased maintenance burden. But if for some reason, you still want to rewrite it, please don't pick Go. Rust is better in pretty much every way."

I mean it's pretty much 'never use Go'

<comment><USER30> Yeah, the article boils down to "If you feel the need to rewrite your python in a statically typed language, and it's between Rust and Go, don't use Go, because the cost of implementing in Rust is roughly equivalent, but the performance gains are much higher."

I think with all the evidence presented, that's an eminently defensible position. Get twice the performance of Go (in this case, obviously it will be very dependent on project) for not much more effort, when you've already made the choice to rewrite for performance.

</comment></comment></comment></comment></comment></comment><comment><USER31> I'm curious what the performance would be if it were ported to Haskell or OCaml. It almost certainly would be slower than Rust, but I think some benchmarks would definitely be interesting when comparing those languages to Go.

</comment><comment><USER32> Really interesting write up. I'd love for you to port to swift and gives us your thoughts! :)

</comment><comment><USER33> Plenty of ways to .orthat for options. The author should checkout the option type in detail</comment>


Windows 8 may drive me to Linux - <AUTHOR> http://www.extremetech.com/computing/121015-windows-8-may-drive-me-to-linux

<comment><USER2> Here's a question: If you're a Windows user who is sufficiently "powered" (as in power user), then why are you still launching things from the Start Menu? When I was a Windows user, I rarely used the Start Menu. It was, in my view, the worst part of Windows. Vista improved things -- please, hold your jeering until the end of the speech -- with the type-to-search feature; conveniently available at the press of the Windows key. In WinXP, I memorized many application executable names so I could press winkey+R to invoke the run dialog, then launch the app from there. Vista meant I no longer had to memorize! Yay!

On OS X, I'm intensely addicted to Quicksilver. I know many others who use Alfred, or even the built-in Spotlight search feature, all of which are invoked from a readily accessible keyboard shortcut.

There must be a Windows equivalent? If not, here's a pro-tip for Microsoft: build a smart launcher in to the OS, and make the back-end pluggable so others can write their own alternatives and market them. Power users will shut up about the new Start screen, because they'll never bother with it. The rest of us will enjoy our shiny new dynamic tiles and can get on with our lives.

<comment><USER3> Launchy does something like that. <http://www.launchy.net/>

Cross-platform and all.

</comment></comment><comment><USER4> I think all of the gripes in this article are based around the Metro UI, which was __designed to be touch-friendly __at its core. Pretty much every single point in this article becomes moot if you actually use the standard Windows desktop.

I think what a lot of people are assuming is that you _have_ to use this new Metro UI exclusively, and the truth is, you don't. If you just treat it as a glorified start menu instead of a replacement to the Windows desktop, suddenly it becomes a lot less scary.

<comment><USER5> I agree, the article is centered at the Metro UI. But have you tried the Desktop app Win8 has ? It has completely removed all configuration from it.

I installed Wind8 in a VM. My network was not detected, I spent 2 hours trying to find the damn configuration. The only thing I could find was the Network Config, and it didn't let me do anything. If the windows tool can't find the device you are stuck.

Right now I can use a lot of other tools to make it work. Win8 just makes it too complex to do anything, because it is created to handle everything by itself. The problem is OSes are not smart enough to do that yet.

</comment></comment><comment><USER6> Why are people so reluctant to change? Ubuntu, Apple and Microsoft are changing their UIs to add a new layer of usability, which can always be disabled. This is clearly a transition release, like Unity or Mountain Lion, which will set the foundations for the future of PC operating systems.

The author is free to switch to linux whenever he wants, but using Windows 8 as scapegoat is a quite poor excuse.

<comment><USER5> I don't believe this is a resistance to change. It is just that Win8 doesn't seem to be made to work on the computers we have today.

I'm sure tomorrow, maybe. I can't see how right now. I can't imagine myself coding in a virtual keyboard.

Now maybe in a few years, even coding will change, then maybe Win8 might be going in the right direction, but for me right now, and probably even next year, Win8 won't be able to fill my needs.

<comment><USER7> I'm writing this from win8 on laptop right now. After 3 days of using it I'm finding it very usable. I spend most of my time on the desktop but I have the metro remote desktop pinned on the left and I'm watching my build go by. Switching back and forth is easy and nice. When I need to run a new app I just hit Win then type whatever I want: Win->"notepad" boom, notpad pops up. It actually feels faster than the start menu in win7 too. You just have to get a little more keyboard-centric and not rely on the mouse for everything, though you can still put your mouse in the corners and get all the menus you need.

<comment><USER8> Is it possible to disable the hot corners/replace their functionality with a keyboard shortcut?

<comment><USER7> There are a variety of keyboard shortcuts: <http://win8review.com/2011/09/windows-8-shortcuts/></comment></comment></comment></comment></comment>


Ask HN: Review my Webapp- HN/Reddit-style news with Real Names - Lonava.com - <AUTHOR>

The trend of a community to become popular, and then become overrun with uncaring jerks seems inevitable.
There have been floods of people who have migrated from Digg->Reddit->HN, and even now find HN a bit more ascerbic than they'd like.
Over the last few weeks, I've put together a project to try to address this. My hypothesis is that people are less likely to be asses to one another if everyone uses real names. Using your real name a) reminds you that the person on the other side is flesh and blood, with feelings just like you, and b) makes your comments part of your googlable record.
Over the last few weekends I put together a webapp- Lonava.com
The site is a Reddit/HN/Digg like social discussion site- People can create channels (SubReddits) and post news stories. It's also importing stories from around the web, and you can paste an RSS feed and have it start pulling stories from any site you want. This gives a "default" place for certain stories, so if you want to see XKCD, you can subscribe to the XKCD chan, and not need to post every one of them manually.
It's a little rough, since I'm kinda of a crappy programmer, but I think it could be a fun site.
It's normally $5 to verify an account, since it costs me about $2.50 after the Credit Card and ID charges, but I've cut it to $1 for today.
I wanted to cut it to 5 cents, but when I tried that, banks were denying the charge, thinking it was fraudulent. If the $1 is a problem for anyone, Email email@example.com and I'll refund it for you.
My hopes that I could convince some HN'ers to sign up, verify, and let me know how to improve the site. I'm OK losing money for verification and CCN processing in exchange for getting some feedback.
I hope to advertise on Reddit Self Serve in the next week or two, but I want to find the rough spots first.
What should I improve? What should I change? Am I doing too much with RSS import, and losing the soul of the site in the process?
Hacker News, How can I do better?
I don't expect to make any money with the site; It's a side project, but I'd like to make something people find useful. <comment><USER2> You might want to tone down you scraping bot. Since posting <http://news.ycombinator.com/item?id=1627619> your bot has hit us 100 times in the last 4 hours.

<comment><AUTHOR> Sorry about that! I didn't think it would be a problem, but I can see the programming error I made which is causing it.

Normally, when we pull pages from RSS, we have a UUID attached to each, to avoid pulling it again. Since it's scraping HN, it doesn't get those, and isn't behaving nicely.

The reason it pulls the destination page is to get the final link- Too many sites are tinyurl/bit.ly/etc, so I load them to see who I'm dealing with at the end of the day.

I'll generate some sort of Token for those to avoid the problem later tonight. Thanks, and again, Sorry for the trouble!

<comment><AUTHOR> I've added a new check to the code- It'll check the base URL against existing stories, before doing the URL normalization.

This should fix the problem for every URL that isn't a tinyurl.

Thanks for the heads-up. Can you verify if it's nicer for your server now?

</comment></comment></comment><comment><USER3> Neat site - I think it's a fun side project. Congrats!

</comment><comment><AUTHOR> Clickable version- <http://Lonava.com></comment>


InPulse & Wimm, the tale of two smartwatches - <AUTHOR> http://www.engadget.com/2012/02/07/inpulse-and-wimm-one-the-tale-of-two-smartwatches-video/

<comment><USER2> Competition in the field of smart watches is exciting, and we should expect much more to come in the field of smart wearable devices.

I've been playing with the WIMM device for a while (developed their News Reader app) and, for those who appreciate, it is am impressive piece of technology. Your watch tracking your bike ride, telling you when the next bus arrives, or the number of push-ups you've done so far is pretty cool.

The big drawback is, as we're all used to already, battery life.</comment>


Show HN: It's all about skills. Help out a fellow hacker with some feedback - <AUTHOR> https://skillmint.com/ <comment><USER2> Firstly using the full name and not the username in the "Newest Members" is just not cool. This should definitely be configurable in profile (first name, first & last, username). You are tying a location to the name and age, which is almost certainly uniquely identifiable.

That aside

Initial search - missing climbing / bouldering

read the text below, assumed if I created an account I could add them into the system, instead found that I could not add it full stop! I have to use some weird feedback form after my account creation has finished. When I try and use this form I get to submit one (one!) skill.

I have a handful of hobbies, the one tied to the account is not one I want to meet people to do (but had to enter one to proceed) and the ones I want to add aren't there yet.

/rant

Suggestions:

Allow adding "unofficial" skills, if they are accepted they become official and match you

Allow removing skills (I may try something and then give up on it)

Do force me to add a skill in signup, don't limit it to just one.

Tell me how many people are using the platform in my area, tell me how many have my interests

Make sharing easy. I may share based on location (lets get this popular in <city>), skill (in the bouldering chats I am in), or friends (this is cool). Before "proper" integration simply dropping that text allows copy paste of well written invites.

\---

On the whole I like it, this is something I really want to use. Very good quality already, expected UX problems. I understand they may take a while to fix as they reach through to the backend as well as affecting the flow.

Though get the names sorted please (I don't mind matches, just not the web please)

<comment><AUTHOR> Wow, thank you for a great feedback! Much appreciated!

1\. Hmm I need to consider using username name instead of full name in "newest members" section. I have some doubts about it. Why do you think it's not cool though? At very least I might just add it to user settings page per your suggestion. I just realized that another option would be to have first name and the first letter of the last name.

2\. Missing skills - since I just launched it, it's possible that some are missing, therefore I have this feedback tab so users can request them to be added. As far as climbing - I do have hiking, alpinism and mountaineering. I'll probably add rock climbing as a related to mountaineering skill as I've noticed people have been searching it.

3\. Unable to request a new skill until you register. Yes, I made it so only registered users can submit feedback and request skills to add so there is less spam. I hear you though, I thought about it already. Also, you can request to add as many skills as you like (once you're registered). In order to register you only need one skill, the other ones you can add later from your profile. I'll figure something out to make sure that unregistered users can request a new skill.

4\. Yes, ability to remove (or hide) a skill is in the plan and wasn't a part of Beta.

5\. I force to add only 1 skill during sign up so it's simpler and faster to register. Obviously the profile has to have at least one skill. The other ones can be added from user profile later.

6\. This is a good one too - tell the users how many people use it in specific area and stuff like that is also on my TO DO list, just not for Beta, especially when I don't have that many users yet. :(

7\. Can you please elaborate a little bit more about your sharing suggestion? As of right now, there is a facebook share button on each profile that has a nicely written title and description already when shared.

Thanks again for a great feedback! Lots of things to think about.</comment></comment>


Text-based Multiplayer Shooter - <AUTHOR> http://eigen.pri.ee/shooter/

<comment><USER2> This was actually a lot of fun for a few minutes. I felt a little nostalgia for BBS games.

I think it could do with mnemonics for the more tedious commands to type (eg. le/lw/ls/ln for look east etc. and fe/fw/fs/fn (fire) me/mw/ms/mn etc. etc.). I think a 'run' command that moves you away from the last gunshot (or in a random direction) would also be a welcome addition... either that or make players harder to kill. Otherwise, it was fun walking around a level mostly on memory. The exit directions became very handy.</comment>


Ask HN: What laptop would you recommend me purchasing? - <AUTHOR>

My old laptop is starting to close its doors on me, so it's time for me to get a new one.
Sadly, I'm on a low budget (-$400), if their are any good laptops out there that you would recommend that are under my budget, please post below.
I would love your recommendations, and opinions! <comment><USER2> Well.. first of all you should definitely say what you would really need in a laptop: \- portability? \- low weigth? \- big screen? \- very long usage during the day? (8hrs/day) \- brand preference? \- buy online? buy locally? where?

budget under $400 is quite low but something should come out anyway

<comment><AUTHOR> Something fast, light in weight, and screen doesn't matter as long as it is not 10 inches.

I'll be willing to purchase it locally (Walmart, Target, etc).

<comment><USER2> Then go to the nearest store you have, take down a list of all the models you think could be worth the money they cost. Plus one or two you think are "a little" too expensive.

After this, come back and say us which are the models you are interested so we can help you build a comparison. ;)

</comment></comment></comment><comment><USER3> Check out a HP G60 $320-400 or search for your preffered brand on Amazon I found a few Thinkpads used and new within the specified price range. Have fun choosing a laptop.

</comment><comment><AUTHOR> I found one thats a bit above my range of $400 but we can work things out:

<http://chicago.craigslist.org/chc/sys/2491536286.html>

how does this look?</comment>


StarCraft I Goes Free with Today's New Patch (1.18) - <AUTHOR> https://us.battle.net/forums/en/starcraft/topic/20754425295 <comment><USER2> My personally most played RTS. Is actually amazing that this game is still being patched. And also used in AI classes.

EDIT: [https://youtu.be/L7XiE_V0PZ8](https://youtu.be/L7XiE_V0PZ8)

</comment><comment> dyu- Hopefully they'll add linux support with that new opengl backend they have

<comment><USER3> Anyone know how well it runs on wine?

<comment><USER4> #3 [1] on the Top-10 Platinum list on WineHQ [2]. Platinum being "applications which install and run flawlessly on an out-of-the-box Wine installation."

[https://appdb.winehq.org/objectManager.php?sClass=version&iI...](https://appdb.winehq.org/objectManager.php?sClass=version&iId=149)

[https://appdb.winehq.org/](https://appdb.winehq.org/)

</comment></comment></comment><comment><USER5> Anyone know if this is just the base game, or if it includes Brood War as well?

It'd be very cool if they open-sourced it, a la older IdTech games.

<comment><USER6> It includes Brood War, too.

</comment></comment><comment><USER7> Downloading on MacBook right now!

</comment><comment><USER8> would this work on it? [http://stargus.stratagus.com/](http://stargus.stratagus.com/)

<comment><USER9> Old people who remember Freecraft: Freecraft became Stratagus, the StarCraft specific bits are Stargus: [http://stratagus.com/games.shtml](http://stratagus.com/games.shtml)

No reason why it shoudn't. And native Linux is way better than wine.

</comment></comment><comment><USER10> Is it native or wined on macOS?

<comment><USER11> IIRC it was always native on macOS, I'm assume this latest patch is no different

</comment></comment><comment><USER12> Weird there is still a little lag on multiplayer side.

Just did a quick game on MacOs vers and first thing i saw was a lot of "Username set latency to Extra High"

</comment><comment><AUTHOR> The only issue: it was not adapted to run either on high-res screens (retina display) or on wide screens

<comment><USER13> Not yet: [https://starcraft.com/en-us/](https://starcraft.com/en-us/)

<comment><AUTHOR> Check the forum post... Probably they will update the main website soon. I just installed the Mac version (sadly, it doesn't work well with my display)

<comment><USER14> Interestingly, when the game launches or exits on my mac, i can see my desktop flash briefly as it changes into and out of what looks like ultra-high-res mode, a kind of 1:1 pixel retina screen mode. I wonder if the game is rendering the oldschool resolution but then nearest-neighbor-scaling it to ultra high res for no good reason?

<comment><USER15> The new remastered version to be released in Summer is the same client as the normal version - I'm guessing 1.18 is actually here to test new engine for that release.

</comment></comment></comment></comment></comment><comment><USER16> I can't find where it says that SC1 goes free.</comment>


WDMyCloud Multiple Vulnerabilities - <AUTHOR> http://gulftech.org/advisories/WDMyCloud%20Multiple%20Vulnerabilities/125 <comment><USER2> Generally when it's something this obvious I think it's a backdoor for debugging that got left in due to bad development practices. [1]

If someone actually wanted to implant a "secret" backdoor it would be disguised as a subtle bug and/or obfuscated in some way.

"Never attribute to malice that which is adequately explained by stupidity." Hanlon's Razor - [https://en.wikipedia.org/wiki/Hanlon%27s_razor](https://en.wikipedia.org/wiki/Hanlon%27s_razor)

[1] "[...] it turns out the error was caused due to buggy code and nothing I was or wasn't doing wrong." \- if the code is so obviously buggy and the backdoor part isn't obviously a bug, the developers are probably just being sloppy, not malicious (bad or rushed development).

<comment><USER3> Having identified a backdoor in a major product myself, the eventual meeting with product managers led to a clear and frank discussion about the cause. That being, it was there because it was expected only "certified" engineers would know about it.

The initial view was a hotfix that just changed the hardcoded password, because senior management felt lightning would not strike twice.

<comment><USER4> > The initial view was a hotfix that just changed the hardcoded password, > because senior management felt lightning would not strike twice.

What led them to believe you wouldn't find it again? Was it a simple password that you guessed?

<comment><USER3> I found the password (actually, it used an s/key generator[0]) by similar means to this write up. It didn't matter if I "found" it again because at this point I was in direct contact with them and considered "trusted". The principle that someone else could just as easily find it gets back to the lighting striking twice argument, and was refuted for a long time. Eventually they agreed to change behavior but it took a while.

The timeline on the below link only refers to one specific incident, the time discussing this in principle went for roughly 11 months, and left me extremely disillusioned with the concept of responsible disclosure.

[0] [https://github.com/technion/lhnskey](https://github.com/technion/lhnskey)

<comment><USER5> Really they have no idea how many times the "lightning" struck anyway. It was just once that they'd been told of.

</comment></comment></comment></comment></comment><comment><USER6> I always wondered they were able to sell these devices so cheaply. I recently bought 2 4tb ones to take the hard drives out as they were each $30 cheaper than buying a regular 4tb hardrive.

<comment><USER7> I pulled some old MyBook hard drives out of their cases and discovered they were unreadable via a standard SATA connection. They were older MyBooks designed for XP, so I thought it was just having trouble because they were using 4k sectors.

I found some information that claimed the older MyBooks would AES encrypt the data (even if you never setup a password) making the data totally inaccessible if the factory enclosure ever broke.

Fuck that shit. I pulled the drive back in and copied everything off, then formatted the disk from a real PC and threw that shit away. Today I always buy separate disks and enclosures that allow direct disk access.

<comment><USER8> If the claim is true, would you rather someone pull it out and access your data? This is like breaking HSM. So why "fuck that shit"? I hear a lot of people worrying not enough encryption. So perhaps take this as a positive thing??? Having an extra layer of protection is never a bad idea.

<comment><USER9> Not everyone cares about encryption first. Personally, I'd rather have my entire HDD published on nytimes.com than lose the data on it.

<comment><USER4> > Personally, I'd rather have my entire HDD published on nytimes.com than lose > the data on it.

If your data is that valuable, surely you were already taking backups/snapshots of it. Right?

<comment><USER10> What if this is the backup and the enclosure is damaged by some natural disaster but the disk is OK. I guess he should have thought of that possibility, but what if he didn't?

<comment><USER11> Then this is not really the backup though... I mean it is not a backup if you don't understand it completely.

<comment><USER12> Yes that'S the entire point of the discussion. Yet people still claim you should backup your backup. But where are you going to backup it to? To another encrypted drive where the enclosure might fail? No you're going to use an unencrypted HDD and be done with it. You can always add encryption on top of an unencrypted HDD.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> Well, shit. I've had one of these as a stand-in for hopefully eventually getting a Synology NAS, and now I'm paranoid about continuing to use my WD MyCloud. The thing is, I do believe I have a lot of reasons to believe I can trust Synology more, I don't even want to trust anyone. Not Intel or AMD, not WD or Synology. Computers are quickly becoming a source of implicit distrust for me.

<comment><USER14> _> Well, shit. I've had one of these as a stand-in for hopefully eventually getting a Synology NAS, and now I'm paranoid about continuing to use my WD MyCloud._

The hardware is still fine. You can put Debian on it!

There is a very active forum of people replacing the WD firmware with Debian on various models (EX2 Ultra, EX2100, EX4100): [https://forum.doozan.com/list.php?2](https://forum.doozan.com/list.php?2)

<comment><USER15> > The hardware is _still_ fine.

But if the software is with built-in backdoor there is no reason to trust the hardware.

<comment><USER16> Even if you don't like apples, you might like oranges.

<comment><USER17> Maybe, but I wouldn't eat them if they came from the same, infested, farm :)

</comment></comment></comment></comment></comment><comment><USER18> I recently moved to a FreeNAS machine, as these devices had the weakest CPU and little ram as possible to function. It made buffering media on the network a challenging task when it should have been effortless.

</comment><comment><USER19> A general question: why is no one suing people who put in back doors? Where are the "reckless negligence" suits? Especially injured third parties, who never agreed to an overreaching EULA.

<comment><USER20> Off the top of my head I recall there was the Sony rootkit lawsuit: [https://www.cnet.com/news/sony-settles-rootkit-class- action-...](https://www.cnet.com/news/sony-settles-rootkit-class-action- lawsuit/)

<comment><USER21> That went way beyond a backdoor, that was active malware.

</comment></comment></comment><comment><USER22> What an excellent way to ensure I don't even spare a glance for your products before going with the competition's offering(s).

<comment><USER23> Any recommended competitors?

<comment><USER24> Synology. Their software is the OS X of NAS's. Everything is laid out logically and they have great long-term support. They're the only NAS manufacturer with a statement about Meltdown that I could find.

Try it here if you want: [https://www.synology.com/en- us/dsm/live_demo](https://www.synology.com/en-us/dsm/live_demo)

<comment><USER25> FYI - Synology DSM does not support full disk encryption. It can do folder encryption through eCryptfs though. Just a heads up if that's something that you require.

</comment></comment></comment></comment><comment><USER26> A relevant but still more general question: How can we protect ourself against backdoored products that are covertly subsidized by governments?

Sure, demanding the sources is a necessary first step. But what happens when the manufaturer blocks and there is not enough competition in the market, see Intel and laptops?

This situation has been a problem for years now. What can be done? What regulation or law would help? What should we demand?

<comment><USER27> > A relevant but still more general question: How can we protect ourself > against backdoored products that are covertly subsidized by governments?

There's a big issue with quality on devices but spreading conspiracy theories only harms that cause. There's no reason to believe this is connected to a government — and it's way below the level of craft we've seen in that regard – and making dubious claims is more likely to cause people to take you and the broader argument less seriously.

> This situation has been a problem for years now. What can be done? What > regulation or law would help? What should we demand?

Two good starting points would be protection for security researchers and the requirement that manufacturers promptly support devices for a reasonable amount of time. Things like this happen because there's very little perceived cost to shipping something shoddy compared with not getting as many features to market as quickly as possible.

A followup point, especially for restoring trust that there aren't sophisticated backdoors, would be not just source code but fully reproducible, user-installable builds. This is still fundamentally a losing game if you don't trust the hardware but it'd dramatically increase the odds of someone being able to notice an error, not to mention being a huge win for users' ability to improve an orphaned device.

The reason why that's unlikely to happen is that companies treat source code as a significant asset, which is why I first mentioned a longer support period. My favorite approach for this problem would be regulation requiring mandatory release of source code, the toolchain, signing keys, etc. _if_ the manufacturer stops supporting something, so the places which want to keep their trade secrets can still do so but are required to help their users at the same time.

<comment> Digital-Citizen "The reason why that's unlikely to happen is that companies treat source code as a significant asset, which is why I first mentioned a longer support period. My favorite approach for this problem would be regulation requiring mandatory release of source code, the toolchain, signing keys, etc. if the manufacturer stops supporting something, so the places which want to keep their trade secrets can still do so but are required to help their users at the same time."

I mostly concur, therefore I certainly hope you're all donating to the Software Freedom Conservancy for their GNU GPL enforcement efforts (see [https://sfconservancy.org/supporter/](https://sfconservancy.org/supporter/) for more) and encouraging people to license their free software under a strongly-copylefted free software license such as the GNU GPL v3 or later, or the AGPL v3 or later. These licenses allow users to request and deserve to receive complete corresponding source code, build instructions, signing keys, and other materials needed to build the software.

We all need free software for all our computers and we need it whether a manufacturer supports something or not. It's not the public's job to look out for Western Digital's interests including their alleged trade secrets. Western Digital still supports the WDMyCloud device but apparently can't be trusted to handle the software that device runs. It would help WDMyCloud users to publish that device's entire software as free software (if they haven't already), as well as the other things you rightly mention (build instructions, signing keys, and anything else needed to get the device running) so users aren't waiting for this less trusted party to make better choices. Users ought to be free to run, inspect, modify, and share this software or get someone else they trust to do this work on their behalf.

</comment></comment></comment><comment><USER28> The article doesn't seem to make clear that the 04 firmware which fixes this has been out for years (mid 2014, specifically). One nice thing about this device is that it is a real Linux system which can be used for hosting cheap services.

<comment><USER29> The article mentions firmware version 2.30.165 where as mine is running 2.11.168 and when checking for updates, reports back I have the latest. I have the EX4 models.

I only run mine on private/home networks with no remote access in to them.

Curious about the version difference...

<comment><USER30> 2.11.168 is the latest firmware for My Cloud Mirror gen 1 [1]. 2.30.165 is the latest firmware for My Cloud Mirror gen 2 [2].

Both firmwares were released in Nov 2017, and I suspect the vulnerabilities were fixed at that time as well. At the very least nas_sharing.cgi was removed in both versions. But I haven't had a chance to finish my investigations [3].

[1] [https://support.wdc.com/downloads.aspx?g=907](https://support.wdc.com/downloads.aspx?g=907)

[2] [https://support.wdc.com/downloads.aspx?g=910](https://support.wdc.com/downloads.aspx?g=910)

[3] [https://gist.github.com/bmaupin/c38c777a0e4fad737a14718b1092...](https://gist.github.com/bmaupin/c38c777a0e4fad737a14718b10928fe4)

<comment><USER30> From what I can tell the hard-coded backdoor vulnerability was remediated, but I see no indication the unrestricted file upload vulnerability has been remediated in any of the firmwares I tested. But I'm not a security expert. I've reached out to Gulftech and WD for clarification.

</comment></comment></comment></comment><comment><USER31> WD probably contracted D-Link to make these devices for them, i.e. D-Link is the OEM. The latter has been known for quite a few router vulnerabilities...

...but on the bright(?) side, I remember finding lots of software and other fun stuff on "public" D-Link NASes a few years ago, including information critical to repairing the products of one well-known and notoriously-closed company. ;-)

<comment><USER32> Yup, D-Link's made crappy firmware for many years now. You would think WD would've known about that...

<comment><USER33> Knowing does not imply caring.

</comment></comment></comment><comment><AUTHOR> Reddit thread: [https://www.reddit.com/r/PleX/comments/7odjds/secret_hardcod...](https://www.reddit.com/r/PleX/comments/7odjds/secret_hardcoded_backdoor_and_other/)

</comment><comment><USER34> Side note: Can't reach over HTTPS, access denied via Tor. Why do so many security-related sites use awful hosting providers?

</comment><comment><USER35> Yikes.

I suspect there are many more of these out there.

</comment><comment><USER36> FYI, some MyCloud devices can be modified to just run Debian. I treat my MyCloud as a cheap Linux box with lots of storage in a convenient form factor. If it weren't for that, I'd just build a computer.

</comment><comment><USER37> I am now less sure how anything is secured once it can be reached through the Internet.

May be I have the old way of a NAS that is NOT reachable through the internet at all.

I really want a Time Capsule for all my iOS devices,, and have it only accessible within my Network. But then i am also paranoid about Bit rot on HDD. As I have seen far too many of my Photos or Video with this problem. And I dont believe any consumer grade NAS are quite capable of handling them yet.

I have yet to find a usecase where I want ALL of my files, Photos, Movies or whatever accessible when ever I am. Most of the time I only need one file form work, and it is normally in dropbox or email.

<comment><USER38> If you want remote access, don't make the NAS directly accessible from the internet, set up a properly secured VPN instead. It is an additional step, but you'll be the one in control of access, not whichever faulty services are running on your NAS.

And don't buy a NAS appliance, buy an inexpensive server like a Lenovo TS150 or HP MicroServer, add a couple of RAID disks (Btrfs or ZFS preferred over hardware or software raid) and run something Linux/BSD based that you have better control over.

Btrfs and ZFS _should_ be able to prevent bitrot. ECC memory is _highly_ recommended.

<comment><USER37> Yes, That is why I said consumer grade. I dont want to fiddle with things anymore. I know Synology offers Btrfs, but they only offer it at the higher end spec machine. I think their newest DS218 doesn't support either Btrfs or snapshots, and it doesn't have ECC Memory.

</comment></comment></comment><comment><USER39> Correct me if I'm wrong but if this is on your home network then you're only vulnerable to other people on your network right? Just don't port forward access for a start.

<comment><USER40> This is expressly covered in the article ("02.2 - Remote exploitation").

No, in answer to your question, an iFrame on a website you visit can execute commands on your LAN accessible MyCloud.

</comment></comment><comment><USER41> What's the connection to D-Link about?

<comment><USER42> Read the original article to the end:

" the D-Link DNS-320L had the same exact hard coded backdoor and same exact file upload vulnerability that was present within the WDMyCloud. So, it seems that the WDMyCloud software shares a large amount of the D-Link DNS-320L code, backdoor and all. There are also other undeniable examples such as misspelled function names and other anomalies that match up within both the WDMyCloud and the D-Link DNS-320L ShareCenter code."

<comment><USER41> Yeah I read that. Was wondering still why the two companies would be related. Other responder suggests an OEM.

</comment></comment></comment><comment><USER43> I recently installed one of these in my home, what actions would you suggest I take?

<comment><USER30> I haven't had a chance to finish my investigations yet, but at least part of the vulnerabilities were corrected with the latest firmware, so I'd start by updating the firmware. I wrote more here: [https://news.ycombinator.com/item?id=16091555](https://news.ycombinator.com/item?id=16091555)

</comment></comment><comment><USER44> According to the research, this may be wormable and is browser exploitable, assuming they can figure out the local hostname/IP of your NAS.

</comment><comment><USER45> Well crap! I bet this gives a lot of WD customers a sick feeling in their stomach. Is nobody worthy of our trust anymore! :|

</comment><comment><USER46> Is there a way to crowdfund security research? We need more people looking into these.

<comment><USER47> Wasn't that how they did truecrypt/openSSL?

</comment></comment><comment><USER48> Any ideas on why WD and D-Link share the same hard coded user and password?

<comment><USER49> Possibly implemented by the same third party vendor.

<comment><USER50> Looking at the code, it was the cheapest bidder from Upwork.

</comment></comment></comment><comment><USER51> Is anyone aware of a way to put a non-crappy OS on the PR4100?

</comment><comment><USER52> FFS can't you just buy anything these days without worrying about backdoors, vulnerabilities in CPUs, MOBO? Why we just can't have nice things? Why do browsers have to run DRM, CPU can be controlled by any USB driver, MOBOs have webservers with code execution from LAN and internet. IoT cameras make biggest botnets ever known. At this point I'm just waiting for a fucking internet controlled kettles and ovens that will burn down neighbourhoods and cities.

<comment><USER2> Economics. Enough people prefer faster and cheaper. Security and reliability cost time and money. By the time your product ships it's already obsolete and still costs more than customers are willing to pay.

Probably won't change until the costs of these types of bugs/design flaws outweigh the costs of preventing them.

<comment><USER53> Surely, not putting in a backdoor is a cost saving measure though?

<comment><USER2> If the backdoor was a hack for easier debugging that got left in, not having it during development could make for a longer more expensive development cycle. In which case it should have been removed before production.

It could also be intended as a support tool to ease hard to debug solutions remotely. Not having it could make support issues more expensive and slower. Very insecure and misguided (security by obscurity is not security) if this is the case, but not malicious. Just a stupid attempt at saving money. This apparently was the case for another commenter on a different product.

While it's possible it was placed with malicious intent, there are plausible (and all too common) alternatives that explain it.

</comment></comment></comment></comment><comment><USER26> When you use proprietary solutions you have it coming.

<comment><USER54> While that may be true, it no one should expect to be backdoored by using a proprietary product.

<comment><USER55> I (strongly) disagree. You should expect the worst when using crap that you, or anyone else (publicly) cannot verify. To expect any less is to become complacent. Products, and companies behind them, must earn your trust, and hiding behind binary blobs is not the way.

<comment><USER56> Not everyone is a leet open source enthusiast lisp-loving kernel-compiling hacker.

People go to the shop down the block, pick a product from the shelf and they are done with it.

This doesn't make them deserving of backdoors.

"Bought the wrong brand of car ... you had that accident coming"

"Visited the wrong doctor ... you had it coming"

"Ate food at the wrong restaurant ... had it coming"

Not everyone is going to be an expert in every field. This is not how a modern society works.

<comment><USER57> While I agree with you. You can just buy a product with Open Source software. Those exists but not for every possible product you might want.

That said, for Hardware this does not yet work, and firmware is of course another problem.

Lets hope for a better future.

</comment></comment></comment></comment></comment><comment><USER58> Thank fuck for security research and hackers.

</comment><comment><USER59> "Secret hard-coded backdoor" makes no sense. Please use the orignal title.

<comment><USER60> "Secret hard-coded backdoor" makes sense to me, because the linked webpage illustrates a secret hard-coded backdoor in the product.

<comment><USER61> Regardless:

> […] Otherwise please use the original title, unless it is misleading or > linkbait.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

<comment><USER62> While I'm not a fan of the title it was submitted with, a backdoor is a heck of a lot different than a "normal" vulnerability; to the point where just saying "vulnerability" is a bit misleading.

Perhaps: "WD MyCloud Multiple Vulnerabilities (including hard coded backdoor)"</comment></comment></comment></comment>


How to lookup T Table in C# + math.net? - <AUTHOR> Hey I'm looking up a t table and would like to know how to pull a value for say .35. I'm taking a manual process and recreating it in C#. Is there a function in Math.Net that I could use to return these values? <comment><USER2> Aah, you've confused ycomb for Google/stackoverflow/actually reading the documentation and/or source code.

<comment><AUTHOR> Haha no. I posted here because I dont have a stackoverflow account. I assumed there must be C# users on here who could help me out instead

<comment><AUTHOR> Also, using this table as my reference [[https://www.tdistributiontable.com/](https://www.tdistributi...](https://www.tdistributiontable.com/\]\(https://www.tdistributiontable.com/\))</comment></comment></comment>


Why Most 'Free CRM' Aren't Really Free, How We Made CRM That Really Is Free - <AUTHOR> https://medium.com/@did_78238/why-most-free-crm-aren-t-really-free-how-we-made-bitrix24-really-free-and-what-this-gave-us-ab3a3a8949f4#.wrxczgwpp <comment><USER2> I don't really think CRM can be totally free. Especially in the age of different marketing platforms. But you always can look for a cheaper solution.

[https://userengage.io/en-us/](https://userengage.io/en-us/)</comment>


The Only Way to Win Is Not to Play the Game - <AUTHOR> https://blogs.scientificamerican.com/roots-of-unity/the-only-way-to-win-is-not-to-play-the-game/ <comment><USER2> As a corollary, in software engineering, it's amazing how often people will insist upon removing "redundant" parenthesis in code reviews or when they refactor code. Even if there is a well-defined order-of-operations, parens can communicate that the intention of the author was indeed the same as the outcome.

<comment><USER3> Many linters will automatically remove unnecessary parens. I sometimes wish there was an option for the opposite: automatically insert parens, perhaps only for certain classes of expressions (always insert parens for ternaries, for instance)</comment></comment>


Benchmark of Python Web Servers - <AUTHOR> http://nichol.as/benchmark-of-python-web-servers?source=g <comment><USER2> I have been using uWSGI both locally and in production environments for a little while now and love it. I haven't been able to give it a complete workout yet as the "production" environments I am using it in are for sites that are only in beta testing.. but it's doing really well.

I am a django dev, and use uWSGI and nginx locally on my Mac for all my sites. I do this rather than using the built-in server to try and keep my dev/prod environments similar.

Luckily nginx has support for uWSGI out of the box, with a couple of configuration lines you can point to a port or socket and be up and running in no time.

<comment><USER3> Another happy uWSGI user here.

I've been running nginx on the front line, then using apache/mod_wsgi as an app server... and this was just dumb. Now, nginx goes straight to uWSGI, and being able to separate my web process from my app process is such a joy.

</comment></comment><comment><USER4> I can't believe this link is being recycled through hackernews and reddit - it's a year old. I wish part of the semantic web was a tag to communicate to news aggregator sites the published date so there could be a "NOT NEWS" warning. ;)

<comment><USER5> It's a year old, but still very relevant.

<comment><USER6> In order to know it's still relevant, someone would have needed to repeat the benchmarks with the latest versions, in which case a link to the new benchmarks would be even more relevant and useful.

</comment></comment></comment><comment><USER7> I don't have time to test this exact benchmark, but the last time I benchmarked PyPy on tornado it did 2x the req/s flat out, so probably (and I'll confirm later) that puts PyPy running tornado in the #1 place here.

</comment><comment><USER8> This article is almost 1 year old. It is dated March 15, 2010.

I'm wondering if things have changed in the last year. I plan to write a web app written in python but boy I'm having so much hard time choosing a python web server/framework. There are so many good choices out there. And when the number of choices increases so does the time needed to figure out your mind. :)

<comment><USER9> Oh and regarding the choices you have...

The benchmark should be a small part of the final decision you take. I would first decide on the type of flavour you want your webserver to have: threaded? event-driven? with callbacks or coroutines?

Making the right choice here already limits the selection.

</comment></comment><comment><USER10> Damn, there I was hoping this might be an updated version that fixed all the flaws in the original test that people pointed out.

</comment><comment><USER11> I appreciate the work that went into making this post.

However where the author failed was in colour choice, specifically on the charts. Subdued hues are fine as a statement for a theme, not when you're trying to discern which subdued hue of blue matches which Python Web server.

More distinct colours please!

<comment><USER12> I don't know if you're already aware of this, but you can hover/click labels to make lines on the graph highlight and disappear respectively. I've found that these features make the graphs much easier to read.

That said, I definitely agree there needs to be an improvement to the colours used.

</comment></comment><comment><USER13> Thanks for this very comprehensive benchmark. I am going to have a look at uWSGI and gevent!

</comment><comment><USER14> I wonder how would Apache/FastCGI-combo compare to these app servers?</comment>


Ask HN: Why do acquiring companies close acquisitions instead of spinning off? - <AUTHOR>

It seems like a lot of failed acquisitions/products are just closed down, but many of them have solid features and code, a decent brand name, and were once promising. Why doesn't a company like Google try to spin off or sell an acquirer company that didn't work for them? <comment><USER2> If the managers that originally pushed the deal through are still with the acquiring company, spin off or selling the acquired company could be politically damaging for them.

</comment><comment><USER3> If all or nearly all of the developers of the product are staying with the acquirer (and that's usually true, hence the term aqui-hire) the level of difficulty of (a) recruiting an entire dev team, (b) recovering the months of lost time and (c) having that team learn the codebase well enough to restart development would almost certainly kill a product's market opportunity. Maybe existing users would be happy but the new sales would be very difficult.

</comment><comment><USER4> Because the people who ran the product are more useful working on other projects than pursuing something the company clearly felt was a failure.

<comment><USER5> so a product with good brand and following has not much value without the original founders and teams ? Can't the product be run by a different team and company?

There are many situations where another company could see value in buying a product that the acquirer is no longer interested in maintaining.</comment></comment>


Developer Must Haves - <AUTHOR> http://forum.jquery.com/topic/developer-must-haves

<comment><USER2> Content-free list of tools. Nothing new or explained.

<comment><AUTHOR> That doesn't mean it's not useful :) It's also by JQuery devs. A Ask HN post on dev tools mightn't have got any upvotes or comments: that was my thinking -- at least here there's something to work off.

</comment></comment><comment><USER3> I prefer Safari's debugging and Web Inspector tools to Firebug at this point.

<comment><USER4> I find myself using Chrome over Firebug more and more these days.

<comment><USER5> Chrome uses Safari's Web Inspector directly on all platforms. It's a little buggier than it is in Safari, but it's nowhere near as bad as Firebug when it comes to crashy freakouts.

Now that Chrome works great on Linux I basically never have to suffer Firefox. The way Mozilla promoted their useless "Web Developer Toolbar" and ignored Firebug for years was always a great disappointment to me.

</comment></comment></comment><comment><USER6> "I couldn't find a good (free) text editor for MAC."

Have to wonder why vim or emacs were not considered, or not considered good, but TextMate and Netbeans are viable choices for text editors.

</comment><comment><USER7> Vim, cc, gdb, autotools, unix ;)

</comment><comment><USER8> I'm actually going to give the tab generator a try, looked pretty nice.</comment>


Show HN: Automatic Transcript Highlighter - <AUTHOR> http://www.woodsonarchive.com/show/september-18-2015/487#s=322 <comment><AUTHOR> If you click on the audio the corresponding transcript for the audio becomes highlighted and if you click on a sentence the corresponding audio starts playing. The scrolling moves down slowly as the audio is playing. I want to know what other improvements I should be making to make this more useful for users.

We do our own machine learning and speech recognition, so the transcript quality may not be perfect.

Love any feedback.</comment>