Why is Rust difficult? - <AUTHOR> https://vorner.github.io/difficult.html <comment><USER3> I like Rust so far, but there's a few things I think aren't true:

* That Rust is only harder because it enforces 'correctness.' It certainly is harder because it enforces correctness, but it's also harder because of _how_. I'm not saying there's a better approach to this, but I think a lot of people are implying that there isn't, and I don't think that's a safe assumption. I think that we could find ways to make equally memory-safe languages that go about enforcing safety in entirely different manners than with ownership and lifetime semantics.

* In fact, the entire idea that Rust enforces correctness. Only if your definition of 'correctness' to be memory-safety, but I would normally define 'correctness' to include rigorous mathematical proofs. Rust's safety guarantees are often accidentally blown out of proportion; they mainly aid in preventing security and concurrency bugs, but only a certain class of each. This is still useful, but this caveat really needs to be in your face more often, as a lot of people will not mention it when touting the benefits of Rust, and beginners can get easily confused about what exactly Rust prevents you from doing.

* The idea that Rust's approach is always worth the trade-offs. Go is another programming language I like, and there are definitely things that are simply easier to write in Go with few disadvantages. Fearless concurrency is a wonderful feature, but for embarrassingly parallel problems like, often, web servers, where each thread is usually independent in terms of mutable state, Go works wonderfully. It also lets you shoot yourself in the foot in a way that Rust wouldn't, but often for a lot of simpler apps it still ends up being easier.

* The idea that solving the compiler errors makes you understand the problems correctly. For example, you could always just clone memory at every occasion, return the input instead of borrowing, etc. In fact, these things might be easier for a beginner to do. There will probably be a ton of Rust anti-patterns that come about from trying to resolve compiler errors.

<comment><USER4> > Go is another programming language I like, ... Fearless concurrency is a > wonderful feature, but for embarrassingly parallel problems Go works > wonderfully.

I adore Go's concurrency model but loathe go's actual language. The constant repetition in error handling, lack of generics and lack of parameterised types and Option<> make it feel like a children's toy set version of C instead of a useful modern language akin to Rust and Swift (and modern javascript).

I really really love the concurrency model though. And as far as I can tell there isn't much like it available elsewhere. You can make a similar concurrency model in rust, but you have to use much heavier OS level threads to do it, and all the other crates don't support it. Erlang / elixir do it but come with a much higher runtime performance penalty. Pony is interesting but very new - there aren't a lot of libraries for it and when I was playing with it the compiler seemed crazy slow.

I'm a little bit tempted to make a simple compile-to-go language. I'd get lynched at Go meetups for fragmenting the ecosystem, but it might be worth it. I like almost everything about go except the language itself.

<comment><USER5> I write somewhat simple programs and webapps for my job, from time to time. I use Python and its standard library, some modules, and the Bottle Framework. Pulling data from APIs, doing analysis, taking some user input, editing configs, etc.

I hardly ever use classes unless I'm extending a vendor library. I have never used generics. Why are generics such a critical component of a programming language that every thread about Go mentions it? It's an honest question from me.

<comment><USER6> Python is a dynamically typed language so when you say you've never used generics, that makes sense -- the concept does not apply to dynamically typed languages. But I bet you frequently use lists and dictionaries, and perhaps occasionally use higher-order functions like map, filter, and reduce. All of those would be generics in a typical statically typed language, because with static typing you don't just have "a list" but "a list of ints" or "a list of strings".

Go has built-in generic arrays, slices, and dictionaries, but nothing else, and you can't define your own functions that work on those without specifying the type. So say you write a function that shuffles the elements of an array, like Python's random.shuffle(list). You can't make your function work for all kinds of arrays. You have to have a different function to shuffle arrays of strings, arrays of ints, arrays of FooBarClass, etc. even though the shuffling logic doesn't give a damn about what sort of thing is in the array.

I have a suspicion that this _occasionally_ leads developers to write code inline that they previously would've extracted into a utility function. See the answers here:

[https://stackoverflow.com/questions/12264789/shuffle- array-i...](https://stackoverflow.com/questions/12264789/shuffle-array-in-go)

<comment><USER5> Thanks. I took a year of CS ten years ago and haven't had to do statically typed development of any size since then - certainly not developing libraries.

So essentially, containers and function overloading is damned near impossible. Got it.

</comment></comment></comment></comment></comment><comment><USER7> I do think a lot of the difficulty when starting Rust was all about it forcing you to do everything correctly, even when the 'correctness' wasn't needed for how the program was currently being used.

However, my experience learning Rust was that it was pretty easy to work through these things because of how precise the compiler is at describing the issue. I feel like the compiler was my teacher, and it kept on teaching me new concepts to look up in the docs. It was a grind to learn, but not a 'difficult' grind in the sense of getting stuck and banging my head against the same thing for a long time.

<comment><USER8> > I feel like the compiler was my teacher, and it kept on teaching me new > concepts to look up in the docs.

I work primarily in F#, a functional .Net language, which also enforces strict rules at compile time to ensure correctness... With the benefit of experience it's _amazing_ and _comforting_ and lets you reason happily about applications at a higher level. It's on of my favorite parts of the language, TBH.

And while I see its strength over time, and see the benefit it gives to code bases, I _also_ know that for your average C# dev used to firing up their app and debugging at run-time, or working in certain ways with their code, it feels like putting on a straight-jacket. It hurts the "first week" story to the benefit of long term concerns.

I totally agree: it's forced learning, which makes it a bit of a grind. But damned if I'm not a much better programmer for the effort :)

<comment><USER9> F# is nice, if only Microsoft would actually provide feature parity with C#, VB.NET and C++ tools.

I bet C# will sooner copy F# features than Blend, GUI designers or .NET Native will support F#.

<comment><USER8> That response is kinda offtopic for Rust... but:

F# is a first class .Net language that interops rather well with the others... If you have some burning need to use Blend or a GUI designer then you can always have a C# shim feeding into an F# domain/core with little problem. It's the same interop story as VB.Net, fundamentally.

That said: if you track MS's track-record those technologies and their Enterprise market viability, outside of resume-driven-development there isn't a lot of reason to be throwing hard money at their new shiney shiney... C# lags drastically behind F# in areas not focused on the client: scientific computing, cloud computing, parallel computing, agent/actor systems, etc... Being a release cycle off on the coolest new drag-n-drop tooling from MS is a moderating influence that has created a _much better_ cross-platform story, and OSS story, for F# than C# has ever achieved, despite the scale difference.

Oh, and C# _has_ been actively trying to copy F# for many release cycles, including reworking basic language design decisions... It is, however, fundamentally unable to achieve that goal based on the languages overriding design. I'm impressed they're back-working non-nullable value objects, for example, but the language can't give _guarantees_ that ML languages can. Pattern matching is nice, but exhaustive pattern matching is what you want for hard things, IoW. And those deficiencies make C# a non-starter or also-ran for a lot of the BigData, streaming, cross-platform systems you see in big data halls and scientific computing.

It's almost like different tools are good for different things ;)

</comment></comment></comment></comment><comment><USER10> It's a good article, but touches on a pet peeve on mine:

It bothers me when people who have written C or C++ mention lifetimes as a novel _concept_. What's novel is that in Rust the compiler cares about lifetimes. As a _concept_ , though, lifetimes aren't novel and thinking about lifetimes _conceptually_ is essential to writing C or C++ that's correct enough that it can be exposed to untrusted input. It's great that the Rust compiler relieves this cognitive load on the programmer compared to C and C++ leaving it up to the programmer to take care of.

<comment><USER11> Yes. And tackling vague conceptual problems by introducing a uniform mechanism and syntax leads to overcomplicated designs. That's from my experience using C++ and other languages, at least -- Rust has always intimidated me so I haven't tried it.

Many problems are actually not that hard if we start only with the truly given things. Namely at C level, or even assembler level. For example, I recently had the opportunity to convert a design based on OS threads to one employing userspace threads ("cooperative multithreading"). It was a big success, since the need for synchronisation primitives completely went away, and it was much easier to program than e.g. Javascript -- which requires callback chaining. Any language that can't give as good control as C does needs to build huge infrastructure to support approaches like that (if it at all suits the language's semantics). And strictly, even C is too much abstraction - <USER2> support green threads some non-portable parts are needed.

</comment></comment><comment><USER12> Because it forces you to handle edge cases.

Java is also harder than JavaScript because of this.

Yes, the edge cases Rust forces you to handle are different than those of Java and probably make more sense to solve, but I think this is still the root of the "problem".

While edge cases are part of "the rule" they feel like exceptions of it.

Most of the time you write 80% of the program code in 20% of the time and the remaining 20% eats 80% of the time because of the edge cases.

In many cases you can simply ignore the edge cases, because well they will fail, but nobody cares 90% of the time. If the remaining 10% make too much problems, invest some time in workarounds, but 10% of the remaining 20% isn't that much, so this often will cost you also just 10% of the 80% of time.

If you can't ignore edge cases in your software, because even a 2% chance of people getting injured is a huge problem, you use Rust and fight with these cases.

<comment><USER13> You can also opt to skip handling these edge cases by either copying (decreasing performance) or unwrapping (decreasing reliability). The great thing is that Rust gives you the choice.

</comment></comment><comment><USER14> Good article, although there are also some unforced errors of what Rust community calls "ergonomics" \- many of which have been addressed, and hopefully many others will be soon - that make things more difficult to learn than the absolutely have to be. But author is quite correct that some things are just hard, and if a language is being "honest", it must expose them to the user.

<comment><USER15> What we could do better than we do today - and your comment about ergonomics alludes to our work to improve this - is ease the onboarding of that complexity we have to be "honest" about. Its a design constraint of Rust that it must maximize user control, but that does not imply that users have to be faced with all of those choices as soon as they first try to write Rust. In some respects I think this article is an attempt at a counterargument to that work (suggesting that it is "dishonest") but I fundamentally do not believe that there is a contradiction between giving advanced users control and making it easier for new users to write correct code before they have a full understanding of the entire system.

<comment><USER16> I would like a language that has knobs (e.g. file-level pragmas) for strictness, which you could turn all to one side (to get something as strict as Rust) or all the way to the other side (to get something like Ruby) or somewhere in between.

For example, a REPL would be pretty non-strict: When you define a function, you don't have to annotate types on the arguments, and everything gets passed around as generic objects. However, the standard library would be pretty strict [1], so in your unstrict REPL code, types are checked (and implicit clones are made to satisfy the borrow checker) as soon as you call into the strict code.

[1] In fact, the package repository for this hypothetical language (the analog to crates.io etc.) should only accept strict code, or alternatively put HUGE warning signs on libraries that contain unstrict code.

<comment><USER17> For the record, in PL jargon, "strictness" commonly refers to how soon the arguments in a function call are to be scheduled for evaluation. Using it to talk about the extent of static correctness checks can be slightly confusing!

</comment></comment></comment></comment><comment><USER18> I opened this link expecting someone to complain about the difficulty, verbosity, or other issues commonly mentioned by those learning Rust. I was pleasantly surprised!

I learned Rust by implementing an interpreter for one of my graduate classes. I really enjoyed it, especially their compiler which continues to become even more awesome every day.

If you want to get into systems level programming, or already work at that level, you owe it to yourself to explore this as an option.

</comment><comment><USER19> I feel Go and Rust are great options for writing modern server side applications today, but they exist on two different ends of the spectrum. The Go language is highly minimal, constrained, and forces devopers to write unified code, that performs extremely fast idiomatically. This uniformity is helpful for open source collaboration. Rust is a much more robust language (eg generics), but is more complicated to pick up and harder to read by comparison. Imho, Go is ideal for general web services, while Rust is better for system apps, tools, or complex web services like real-time exchanges or financial systems. This is just a general guideline though in my mind.

<comment><USER20> Go does not perform "extremely fast idiomatically". There are a lot of cases where replacing channels with semaphores or atomics, avoiding too many go routines etc. can lead to significantly better performance.

But Go does perform good enough if one uses simple idiomatic code style while making things relatively safe and maintainable. That is its huge advantage.

</comment></comment><comment><USER21> One of these days I'll get around to Rust. I don't think it's fundamentally difficult, just different from most people's cowboy programming. I'm much more excited these days about program extraction from verified programs written in Idris or Coq, which is on a whole other level of pain and suffering.

<comment><USER22> Mind you even correctness checkers aren't panacea - they won't go all the way down to check if you are using IEEE 754 correctly and handle all possible edge cases and rather assume "well-defined math properties". And as Donald Knuth used to say: "Beware of bugs in the above code; I have only proved it correct, not tried it."

<comment><USER23> Made me think, maybe they _should_ check if you are using IEEE 754 correctly...

<comment><USER24> Numeric 'correctness' is a business-problem property.

For a game engine, correctness is speed and "right enough". For a research physics simulation, it may be "as right as possible".

You can't check whether floating point inaccuracy is correct generically because the definition is entirely dependent on the business needs of the program in question.

<comment><USER25> One could enforce the strictest correctness by default, and then allow/require to opt-out in cases where programmer decides it is OK, like a game.

</comment></comment></comment></comment></comment><comment><USER26> Will Swift ever be able to span all the way down to enable Rust-like performance in places where it's necessary?

Or is it much more that it takes for a language to be a viable choice for starting new C++ type of projects with?

<comment><USER27> To (potentially) match Rust/C++ performance Swift needs

1\. Stack and static-allocated arrays.

2\. True pass-by-reference for value types.

3\. A sufficiently-smarter compiler that's more often able to elide dynamic allocations, reference counting, bounds checks, vtables etc. (Lifetime semantics will help with this).

</comment></comment><comment><USER28> A minor problem with Rust is aesthetics. The syntax might look cryptic at times, and error messages the compiler outputs are not everybody's cup of tea, I'd guess. These are certainly not all that important when you're considering it for the actual benefits of the language, but otherwise that is a little con for me. If you write:

      println!("Hello, {what}!", "world");

in your program, the error message you get is 16 lines long. And there seems to be no option to have terser error output.

</comment><comment><USER29> Rust error handling along with the From trait is so good. I've been trying to replicate a sort of similar behavior in nodejs but its not as ergonomic.

</comment><comment><USER30> After years of using Python, it's been difficult to wrap my head around GO and Rust.

I really wish there was a course on Rust / Go for python programmers.

<comment><USER31> > _After years of using Python, it 's been difficult to wrap my head around GO > and Rust._

I had the similar post-Python problem, until I settled on Nim [0] - it has Python-like syntax, significant whitespace, and ease of writing (but don't expect Python level of it), while compiling to C and providing significant speed benefits.

Also there is a brief "Nim for Python Programmers" [1], which might interest you.

[0] [https://nim-lang.org/](https://nim-lang.org/)

[1] [https://github.com/nim-lang/Nim/wiki/Nim-for-Python- Programm...](https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programmers)

<comment><USER32> Ditto.. Nim was just easier for me to absorb as a Python person myself and I'm really enjoying it.

</comment></comment></comment><comment><USER33> (for newcomers) nothing works out of the box or as expected

program[0]="+"; | ^^^^^^^^^^ the type `str` cannot be mutably indexed by `{integer}` error: use of unstable library feature 'collections': needs investigation to see if to_string() can match perf

error: borrowed value does not live long enough reference must be valid for the block suffix following statement 0 When you use an index operator ([]) you get the actual object at index location. You do not get a reference, pointer or copy. cannot move out of indexed content

<comment><USER34> Rust is especially difficult if you bring your C-like assumptions to it.

You first need to learn difference between a borrow (a view, which may be read-only) and owned type, and know that Rust enforces stdlib strings to be UTF-8. Random mutation of a byte in a string is possible, but it has been deliberately put behind an unsafe function call, and there are better alternatives available (like char iterators).

It's not hard once you "get" the way Rust works with data.

<comment><USER35> > Rust is especially difficult if you bring your C-like assumptions to it.

To be fair it's very difficult if you bring your JS/Python/C#/Java assumptions there too. As a lifelong Java/C# dev, I just never imagined having _objects_ on the stack. In C# knowing what goes on the stack is important - but the thing with everything stack is that it's _copied_ \- so it's basically just trivial values that sit on the stack. In Rust and C++ you can make entire complex applications whose data is entirely on the stack. And getting over that treshold is a big mental barrier.

I'm used to just thinking of my app state as a blob on the heap. A functional programmer or a C++ programmer thinks differently.

</comment></comment></comment><comment><USER36> could someone point to the article explaining how Rust compiler reasons about the program, how different kinds of objects and pointers are represented in runtime - in a word, something that would help me grasp what is really going on when I compile and run the program. The tutorials I saw are written in assumption that you don't need to know that. Which makes me feel like a total idiot

<comment><USER37> The introductory manual "The Rust Programming Language" is a good place to get started. [https://doc.rust-lang.org/book/second-edition/](https://doc.rust- lang.org/book/second-edition/)

</comment></comment><comment><USER22> Isn't the problem with Rust that it uses crappy pessimistic heuristics (borrow checker) for essentially NP-C problem, causing complaints where code is perfectly OK? IMO interesting design decision but I am staying away precisely because of this.

<comment><USER38> "Crappy pessimistic heuristics"

Are you talking about the borrow checker from half a decade ago? [0] Have you used the language since then? This is FUD -- it's really not hard to get code past the borrow checker anymore. Maybe every thousand lines or so you'll need to add a block or pull a temporary variable out of a one-liner, but the compiler basically tells you exactly what to do when something like that is relevant.

[0] [https://pcwalton.github.io/blog/2013/01/21/the-new-borrow- ch...](https://pcwalton.github.io/blog/2013/01/21/the-new-borrow-check-in-a- nutshell/)

<comment><USER39> Oh, I'd love if that were true. But in my limited experience with Rust it was still the borrow checker that absolutely made writing in the language hard. That was in 2017. My mental model of what should be safe was not at all the model the borrow checker had. And I really read the documentation about that part of the language.

I guess a confirmation that there were problems there is that they tried to improve the borrow checker in the releases after that.

<comment><USER40> Were you writing functions/procedures under the implicit assumption that they would be executed under a single threaded context? Because Rust does not allow this assumption without using "unsafe". I've run into this before, and it can be a bit irritating, but if there's even a small chance you'll later want to execute the code in a multithreaded context, it will more than pay for the inconvenience. And if you're sure you won't, then you can just throw the data into an UnsafeCell and call it a day.

<comment><USER41> It's not even inherently about multi-threading [https://manishearth.github.io/blog/2015/05/17/the-problem- wi...](https://manishearth.github.io/blog/2015/05/17/the-problem-with-shared- mutability/)

</comment></comment></comment></comment></comment><comment><USER42> What you guys think about a documentation like on [https://learning- rust.github.io](https://learning-rust.github.io) . Will it be difficult to learn Rust with this type of documentation?

</comment><comment><USER43> It's similar to learning Stateflow: it has a bigger upfront cost in program design, but once it's fully specified, the implementation will likely be correct (less degrees of freedom).

</comment><comment><USER44> Rust's problem is not correctness. The borrow checker is the good part of the language. It's feeping creaturism. The language started out as imperative, and then became semi-functional. It started out as thread-oriented, and now is acquiring "green threads"/coroutines/cooperative multitasking. The generics system and library started where C++ and Boost left off. The "trait" system was more "objects bad, must do something else" than an improved idea.

The Go guys knew when to stop. The Rust guys don't.

<comment><USER45> Er, no, Rust started out pretty solidly as a functional language.

It used to look like an ML variant, with purity and stuff. And it had a GC. It's lost most of that now.

It also used to have green threads up till 1.0 (they were removed pre-1.0), we're now adding them _back_. And they're being added back as a library, not as part of the language.

It moved away from both of these.

</comment></comment><comment><USER46> Is there a way to avoid the true-believer syndrome for Rust?

I want to embrace Rust, but everyone ~100% of the time comes away chanting about how awesome Rust is. So much so that it's a bit unsettling. Zealotry in general is bad, but especially in programming: once you identify as an X programmer, you lose out on ideas from Y and Z.

Every tool has its flaws, but for whatever reason it seems extremely rare to discuss Rust's. When you try, it's like you're the Pied Piper: your song brings seemingly the entire community scurrying towards you, ready to force- push you why you're wrong and why Rust is awesome.

How about no REPL? We Go now. Slow compiler? Check. Performance is nice, and so is parallelism, but it costs static typing. It's a nice tool to have in your pocket as a fallback, but where's the niche? The ecosystem is huge, too: run `du -hs ~/.cargo/` and see how many GBs you're losing. This is a really tough sell on a 256GB SSD.

"So get a bigger SSD!" "Yeah but the compiler is always improving" "Yes but real programmers don't really need a REPL" "Yeah but static typing is worth the tradeoffs"

These refrains have been identical for nearly a year. Is there anything new to say, or is it time to agree to disagree?

<comment><USER47> This is the exact reason I won't learn Rust past looking quickly the doc: the promotion made by some very vocal people is a huge turn off. Notably by saying that everything must be rewritten in Rust, it implies that every other language is sh*t and people using them are dumb. Of course I don't like that view for my work nor I won't to be associated with this kind of people. This is a bit sad because the language probably have some interesting points, but the social aspect of it just don't fit the bill.

<comment><USER41> Where are you seeing these kinds of comments? Can you link me to them? I'd like to tell them to cut it out.

<comment><USER48> It's calmed down the past year or so but before that it was so insane (especially here on HN) that the impression will be hard to erase for those who were around to see it.

<comment><USER41> I was around, but still didn't actually see it. I see people complaining about it more than I actually see the comments themselves. That's why I always ask for concrete examples, and people never actually show them to me.</comment></comment></comment></comment></comment>


New Ubuntu-based Precision line-up - <AUTHOR> https://bartongeorge.io/2017/01/09/welcome-the-new-ubuntu-based-precision-line-up-mobile-workstations-plus-a-new-all-in-one <comment><USER2> Ok, I didn't see that coming. Dell building a better Macbook Pro than Apple :-). I wonder how their high DPI support will compare with other Linux distros.

If the durability is up there with the Thinkpad series of old I could see replacing my current machine with one of these.

<comment> chao- > _I wonder how their high DPI support will compare with other Linux distros._

To the best of my knowledge and experience [0] the scaling isn't any different across any of the major GTK-centric DEs (GNOME, Unity, Cinnamon, Pantheon): You get integer scaling factors for the entire UI, and a separate text scaling setting, both which work as expected, with a possible exception of a few multiple-versions-old Qt applications that might respect neither setting. They are rare in my experience.

I find that on a 13-14" laptop at 1440p this is insufficient. No scaling (1x) is too small for my poor eyesight, but 2x scaling is too large and wastes screen space. I forget where and how long ago I encountered a Linux environment with 1.5x scaling. Maybe I dreamt it, but 1.5x was just about perfect.

My current strategy (14" Thinkpad, 1440p) is to keep UI scaling at 1x, font scaling at 1.5x. This works for most applications except for web browsers (where the font rendering size is not dependent on the system font settings). In browsers, I will use a plugin that sets the default zoom to 1.5x, basically bringing everything up to the same experience.

I can imagine that a 15" laptop with thin-bezeled 4K screen might have the same challenges as 14" at 1440p (i.e. a 1.5x scaling would be ideal, but does not exist). However, this is only a guess, based on my trying a full 2x scaling on a 13" 4K display. It was actually nice, at 15" 4K it might be sit in the awkward zone of 13" 1440p: too small at 1x, too large at 2x, with no single setting for a 1.5x sweet spot.

[0] I install new versions of GNOME, Unity and MATE at least once a year to see if one has surpassed the experience of my current preference (Cinnamon).

<comment><USER3> I forget the details of how it's implemented but Ubuntu 16.04 gives me a choice of 1.0,1.12,1.25,1.38,1.5 (plus many others outside that range). For my 1440 T460s' 14" screen the 1.5 setting is about right for me and I've been using it for a few months with no issues.

<comment><USER4> I believe that setting adjusts the same two scale factors mentioned above — integers for GTK+ and decimal font scaling — plus fractional scaling for the Compiz window decorations and the new QML Ubuntu toolkit apps.

<comment><USER3> Widgets do seem to get scaled as well at 1.5 not just font sizes. If I recall correctly it changes the dpi as well.

<comment><USER4> I should try it again. I mostly use (Ubuntu) MATE, and GNOME 3 before that, but the scaling settings was my favorite feature in Unity.

</comment></comment></comment></comment></comment></comment><comment><USER5> Interesting to see this here, I was actually looking at the Dell website for the last few months considering a Precision 5510 to replace my macbook pro (2011) and my now bricked Thinkpad X201s (coreboot fail).. when recently I saw the 5520 appear, sadly no option to buy direct. (I'm calling in favours with friends to get me a price)

I hope they continue the tradition of building insanely good hardware (look at the insides of a 7510[0].. holy crap) and allowing expandable batteries as an option.

The 5510 for instance can be specced without a SATA drive and that space can be used for a 6 cell (rather than a 3cell) battery.

The fact that these machines can be shipped with Linux is really the icing on the cake for me, even if there was no price drop I would purchase them because I have some confidence that the hardware will be supported.

[0] [http://www.notebookcheck.net/Dell-Precision-7510-4K-IGZO- Mob...](http://www.notebookcheck.net/Dell-Precision-7510-4K-IGZO-Mobile- Workstation-Review.167586.0.html)

<comment><USER6> I absolutely love my Dell Rugged Extreme 12.. it's insanely expensive but literally bomb-proof (designed to handle the pressures from an exploding bomb.. even if my frail human form won't). It runs Linux almost perfectly -- better than Windows. Windows 10 had issues coming back from suspend (the screen would stay black.. dead), and losing all mouse tracking at random times. Linux only has issues coming back from suspend and they're not even as bad (sometimes you can't get a network connection).

And the hardware is fantastic. No sharp edges for your wrists. I used to be a thinkpad fan, but this thing is insanely great. (However, I do miss the old- style thinkpad keyboards and the modular batteries.. but battery life on this thing is great anyway.)

It's also good to chock the wheels with if you have to change a tire or heaving at someone who insults your laptop. I do like multi-purpose devices.

</comment></comment><comment><USER7> My boss seems unusually sensitive to high-frequency noise, and said if I got a Dell laptop for work he'd refuse to sit next to me (which would be a bad thing because I like him!)

I'd not heard of the "coil whine" or "CPU whine" thing before but Google seemed to show a lot of anecdotal evidence and discussion, especially for the XPS 13 but also for other models.

Does anyone know why Dell seems so prone to this, and if the problem has been solved in newer models?

Otherwise if I want to ditch the work Macbook for a Linux system (which I'd love to do ... I have not grown to enjoy OSX) then my only real choice would be Lenovo.

<comment><USER8> > Otherwise if I want to ditch the work Macbook for a Linux system

Year-old MacBook Pros typically make fairly nice Ubuntu machines. The hardware is standard enough that you can find step-by-step installation instructions: [https://help.ubuntu.com/community/MacBookPro](https://help.ubuntu.com/community/MacBookPro) The biggest limitations in recent years have been (1) no webcam, and (2) somewhat flaky (but still usable) wifi.

It's not as nice as a supported Ubuntu preload directly from your hardware vendor, but you get the nice physical build quality of Apple's hardware.

<comment><USER7> I may not be able to go with a Linux system at all since company policy is Mac only, but if I ever do manage to do it, I know that they will want me to use (1) not a Mac and (2) not old hardware. Kind of a shame since my research suggested the same: that year or two old Mac was a good hardware platform for Linux. The same to an extent applies to Lenovo hardware and everything else designed primarily for Windows. If it were for personal use, I'd go for an old Thinkpad or old Macbook.

<comment><USER9> I'm confused, if your company is Mac only, how would you end up sitting next to your boss with a Dell anyway?

</comment></comment></comment></comment><comment><USER10> Since Thunderbolt 3 is prominently advertised in this announcement, can I safely assume that Thunderbolt 3 support has stabilized in Ubuntu at this point? And if so, are we able to use external GPUs over this interface in Linux now?

<comment> jon-wood Thunderbolt 3 somewhat works for me, although I'm not sure if that's down to the OS or the adapter I'm using. Using the latest Ubuntu its fine once its working, but it will take me two or three attempts plugging the adapter in for the HDMI output to actually work, between which the machine will crash hard with a garbled internal display.

</comment></comment><comment><USER11> That Precision 5520 looks pretty tasty, will be a nice upgrade from current M4700, which, while solid and performant, is a bit of a tank and power hungry to boot (180W power adapter rarely works on planes; combine that with the 2 hour max battery life...).

Shed some weight (4lbs vs 7lbs), high res screen, 32GB, 2 X SSD, and get a probably modest performance boost for cpu intensive tasks (like compiling Scala projects) -- think I'll pull the trigger when it launches.

</comment><comment><USER12> The Precision 7xxx series are recommended if weight is no object and you need a beast of a laptop to crunch through video editing, signal processing, or Crysis. The fact that it comes with Ubuntu is a boon to top-end mobile Linuxing. A vast improvement over the M3800, which is a capable machine in a frustrating enclosure that doesn't even come with the basics like Ethernet, and doesn't supply a docking port.

<comment><USER13> For gaming too? From what I read Quadro cards are pretty weak when it comes to games. I wish Dell would offer GeForce as an option; not everyone interested in a workstation wants Quadro.

</comment></comment><comment><USER14> Dell should buy Ubuntu. That might be interesting.

<comment><USER15> Interesting suggestion. I dream of the same things. It's pretty obvious the fate of Dell is currently _capped_ by the features of Linux. Their effort on the hardware is currently enough to convince, but the OS is still what makes people afraid of switching away from Mac.

I'll suggest something crazily ambitious: Dell should acquire and staff creativity/professional suites for Linux. If the _de facto_ stack for photographers or architects were a stunning Ubuntu + Affinity + AffinityCAD (inventing a stack here), it would be the year of Linux. Plus Linux-based stacks are much more powerful than Apple/Windows.

<comment><USER16> As a photographer and videographer I can't wait for the day I can switch to Linux fully. Until then it's OSX for me, but I'm patiently waiting.

Now if only they'd offer 16:10 screens I'd almost immediately switch.

</comment></comment></comment><comment><USER17> Last wish is for Linux driver support for the Quadro card to render to the integrated GPU (or whatever is necessary to display on the LCD) with KVM PCI pass through from Windows. Then I'd be able to run the few remaining Windows apps (Altium, Solidworks, etc) from Linux at near native speed.

</comment><comment><USER18> Dell.com says the new Precision 5520 has "NVIDIA Quadro M1200"[1], which may be a typo of P1200.

Is the NVIDIA Quadro M1200 included in the Precision 5520 based on GP107-400 (GTX 1050 Ti) or GP107-300 (GTX 1050)?

[1]: [http://www.dell.com/us/business/p/precision-15-5520-laptop/p...](http://www.dell.com/us/business/p/precision-15-5520-laptop/pd)

<comment><USER19> No, it's Maxwell. There's not a mobile Pascal Quadro that'd work at that form factor and thermal capacity at this time. The Kaby Lake Dell XPS 15 (Precision 5520's sibling) uses a Pascal GTX, though.

<comment><USER18> Maxwell Quadro mobile parts end in "M" (in addition to starting with "M"), which leads me to believe that this is just a typo'd Pascal part.

<comment><USER19> I work on Linux at Dell. I'm the guy in the hammock in that blog post by Barton. It's a Maxwell Quadro for the reasons I stated.

</comment></comment></comment></comment><comment><USER20> I've used my Project Sputnik machine for years and loved it.

</comment><comment><USER21> 32GB ECC in a thin and light laptop.

<comment><USER17> > ECC

Only explicitly called out on the 3520, wonder if it's in the others?

Does anyone know the power consumption hit of ECC in mobile devices? The power hit of DDR self-refresh of 32GB compared to 8GB was about 1.5W on my Dell Precision 5510.

Interestingly enough, thew new product page from the Precision 5520[0] shows the Xeon E3 as the same E3-1505M in my 5510, I guess I'd be shocked to see ECC added as it wasn't present in the 5510.

[0] [http://www.dell.com/us/business/p/precision-15-5520-laptop/p...](http://www.dell.com/us/business/p/precision-15-5520-laptop/pd)

<comment><USER22> The E3-1505M does support ECC, not particularly hard to believe that it's a supported feature now.

I believe ECC overhead is around 12.5% (9 bits instead of 8) for the memory system. However I don't know what percent of power the memory system usually takes.

Seems like about half the power is required for a 3200x1800 display + touchscreen. The XPS 13 goes from 22 hours to 12 hours when you switch from 3200x1800 touch to 1080 non-touch. Of course 1080P screens are lower power, but not zero. Of the rest the CPU takes a fair amount. As a guess I'd say a 15% increase in memory power might decrease the runtime by 20 minutes.

<comment><USER5> >I don't know what percent of power the memory system usually takes.

usually about 1.5w for each SODIMM on DDR4.

</comment></comment></comment></comment><comment><USER23> VGA port? In 2017?

<comment><USER24> There may still be conference rooms and auditoriums with VGA-only projectors in 2027.

<comment><USER25> I've run into problems with my ultrabook in rooms with vga-only projectors. they're definitely still a thing.

<comment><USER26> mini-displayport to VGA adapters are also still a thing :-P

<comment><USER27> No office which uses VGA is going to have an adapter handy which isn't already lost in a random drawer somewhere with dead batteries and random keys.

I've worked for shit tons of media and design companies who couldn't even keep track of the regular cables to charge their mobile devices (used for testing).

People would "borrow them, just for a minute", then leave it on their desk, where someone else would take it, then not know where it came from and sweep it into a pile of other bits and bobs somewhere.

You have to be a proper strict to keep this sort of thing in check - it makes you unpopular in the office, badgering after people.

</comment></comment></comment></comment></comment><comment><USER28> This is a message to Microsoft protesting the Surface.

<comment><USER29> Don't know why you're getting down voted. A lot of hardware manufacturers would be very nervous about MS extending the production of their own hardware.

</comment></comment><comment><USER30> Last time I tried a Dell over a year ago I could only install its approved Linux's on it - Ubuntu (and maybe Red Hat or CentOS, don't recall exactly). Likely due to the custom motherboard, but it felt very locked down. Whereas if I spec and build my own workstation or laptop from XoticPC or similar, any distro will work with it. Anyone else familiar with this issue? Is it still a thing?

<comment><USER31> This isn't a thing. You'll need to provide more information than you have.

While Dell does sell "certified" hardware, they have never (AFAIK) locked down a system to only allow Ubuntu installs. I don't even see how this is possible, provided Canonical doesn't supply Dell with Secure Boot keys locked in the BIOS/UEFI -- what you're describing has never been a thing, and was most likely an issue with storage controller or lacking support for a chipset generation.

</comment></comment><comment><USER32> Why is Apple the only company able to ship a 5K display (5120x2880 native resolution) at a reasonable price? Who wants to develop on the equivalent of a 1080p resolution?

<comment><USER19> Apple doesn't ship a 5k display. They ship a 5k panel in an all-in-one. Apple doesn't sell any monitors anymore.</comment></comment>


China built the world's largest telescope, but has no one to run it (2017) - <AUTHOR> https://arstechnica.com/science/2017/08/china-built-the-worlds-largest-telescope-but-has-no-one-to-run-it/ <comment><USER2> If the actual purpose is to gather atmospheric scattering of satellite communications, no radio astronomers are necessary.</comment>


Stanford AI Class Lecture Notes - <AUTHOR> https://docs.google.com/document/d/1tF3TJ98uysJHKasFjBidBolhQBNLhz9H0sx28D6Fku0/edit?hl=en_US&pli=1

<comment><USER2> Google still has a very long way doing an adequate translation between a language such as Chinese and English. I'd be surprised if Google was taking such a pedestrian approach in solving that particular problem.

As it stands, languages such as Chinese are intrinsically implicit in nature. In fact, the more adept at the language, the more you can express with less. If you follow the literature back a couple thousand years, the amount expressed in a few characters is absolutely astounding.

If you take the example they use at the bottom regarding wonton, it's down right criminal to map the grammar in such a hurried manner. For one, just from the romanization of wonton, the AI should be able to gauge that it's looking for 2 characters and not 1 (1 character per syllable). However, in the case of the menu, the wonton egg drop soup drops a character to save some space.

Taking a straight forward CFG approach will never result in an accurate translation. What may work well is to do multi-pass contextual analytic processing in parallel.

<comment><USER3> Statistical translation that Google uses works quite well to translate between most Indo-European languages. However, it has problems in other languages like China and Finnish, but they are not necessarily insurmountable if you combain statistical approach with some domain logic and a lot of material.

Developers of Google Translate described to me that Finnish is causing problems because the excessive inflection [1] in Finnish language needs a couple orders of magnitude more translated material to make statistical approach to work. At least that time it was not easy to obtain. Interestingly enough, the official EU documents and meeting translations are one of the best sources of 1-to-1 translations as they are translated to all languages in EU.

[1] [http://en.wikipedia.org/wiki/Inflection#Uralic_languages_.28...](http://en.wikipedia.org/wiki/Inflection#Uralic_languages_.28agglutinative.29)

<comment><USER4> One of the reasons that the EU documents work so well is that they're painstakingly written simultaneously in all the official languages. There is not a master copy from which other translations are made. This also means that if, say, the German working group writes a clause that is only approximately translateable to French, both groups will have to re-write their versions so that there is as close to possible as an exact correspondence between them.

Other possible corpuses are mostly literary, which are of course subject to significant rewriting for stylistic reasons.

</comment></comment></comment><comment><USER5> Couldn't this understanding of intelligence limit the ways in which we can describe and emulate the activity of intelligent creatures?

For example, the interfaces and processors are all very clearly defined and separated in those diagrams. Unfortunately, natural intelligence does not seem to work in the same way. The inputs to a real human do not get processed in the same places, even when they might be coming from the same sensor. Obviously the patellar reflex doesn't make it past the spinal cord, and I've never actually believed that the spectrum of intelligent behaviors can be sorted into "conscious" or "unconscious" categories, by including some sort of wet Boolean or whatever.

We could think of the brain's _implementation_ as the sum of its internal and external _interfaces_ , but how the hell would we model that without involving unreasonable error margins?

<comment><USER4> That's true, but most of modern AI is about designing useful intelligent agents, rather than creating artificial consciousness.

<comment><USER5> Well, that's a cop-out.

</comment></comment></comment><comment><USER6> This is extremely frustrating, has the login been removed from ai-class.com? I can't get the videos to work (except the intro) and I can't find anywhere to login. I've tried Chrome and FF.

Update: Now the videos are saying I need Flash 9 (intro previously worked). Bizarre. I just went to youtube to watch the videos, unfortunately they are not organized well or queued so searching for them is a pain.

This page at least has them all easily accessible: <http://www.youtube.com/user/knowitvideos#p/u>

</comment><comment><USER7> Exported to PDF and re-uploaded for convenience.

<http://dl.dropbox.com/u/5137/pdf-link/StanfordAI-UnitOne.pdf>

<comment><USER8> Most excellent sir!

Do you think you will be doing this more?

I would be incredibly appreciative if you were to set up a mailing list! :D

It's only an idea ;)

<comment><USER7> There's <https://groups.google.com/forum/#!forum/stanford-ai-class>

<comment><USER8> Thanks!

</comment></comment></comment></comment><comment><USER9> LOL, here's what I just got when I tried to log in

'Ooops

Our servers are off having a quick coffee break. Wait a second and refresh the page. If you still get this message, we apologize and ask that you try again a little later.'

<comment><USER10> If you repeatedly get this message, remember to click reload. It seems that it can get cached in your browser.

EDIT: It seems that it isn't just that and the site is just flaky (overloaded, I guess).

</comment></comment><comment><USER11> I thought they were going to be posting videos of the lectures... but when I logged in today and couldn't see the it anywhere. Did I misunderstand something? Is it posted? If yes, where?

<comment><USER12> They're on the left sidebar. Click 'Welcome to AI' and you'll see the videos. :)

</comment></comment><comment><USER2> Actually come to think of it, I bet IBM's G2 system would work amazingly well with translation.

</comment><comment><USER13> I too would like to have discussions like xarian's thoughts for all lectures.

Regarding the lecture notes - is there a wiki where we can all contribute to? Earlier today, the google doc was complaining about too many people editing the document.

</comment><comment><USER14> This is great. Thanks for sharing and please keep it coming! =D</comment>


RemoteWeekly - weekly digest for all things remote - <AUTHOR> http://www.remoteweekly.com

<comment><AUTHOR> A weekly digest with the best news about remote working, remote team management, nomadic working and experiences even remotely worth sharing!

</comment><comment><USER2> Awesome, thanks for sharing! A look at a sample issue would be neat though. Right now, I have no clue what exactly will be in the emails.

<comment><AUTHOR> Thanks for the pointer, I'll include it soon!

</comment></comment><comment><USER3> Yo! Looking forward :-)

</comment><comment><USER4> w00t! Looking forward to receive it!</comment>


Ask HN: What/Who is whyslow.net and why are they copying HN? - <AUTHOR>

i just came to http://hn.whyslow.net via google search and as it asked me for my pw i realized i wasnt on HN. is this authorized or are they just trying to get passwords? <comment><USER2> Aparently their main page loads HN as an iframe and hides all techcrunch stories. Kinda funny.

Probably someone that was sick of techcrunch on HN made it for himself and there's no major conspiracy of password stealing or SEO tricks.

</comment><comment><USER3> I don't know why it exists, but it's CNAMEd to point to news.ycombinator.com, so they couldn't be stealing passwords now, at least.

<comment><AUTHOR> thanks, i forgot to check dns, too early in the morning and i was just confused. altough whyslow.net itself is not a cname. can you potentially uprank your domain at google with cnaming to a known site?

<comment><USER4> Looks like an awesome possibility. Presumably at least one SE is using domain name as the primary key for sites in its index - so can you really just point your domain at someone else's site and steal their content until your PR improves then flip the site? Presumably fails with duplicate content checks.</comment></comment></comment>


Farewell HNTrends - <AUTHOR> http://www.mattmazur.com/2010/11/farewell-hntrends/ <comment><USER2> If anybody is interested, I have the HN database. I'm going to release it soon at <http://api.ihackernews.com>. I'm (along with another HN user) trying to figure out the best way to distribute it, as I don't have the bandwidth

I plan to release incremental updates (nightly/weekly?). Using this data, others can build tools such as HNTrends without the need to scrape HN.

*The dataset includes IDs, Posts, Comments, AskHN, Points, Posted By, Date, and so on. I do not have a list of usernames outside of the 'PostedBy'.</comment>


Multiple CoC Violations by Node.js Board Member Ashley Williams - <AUTHOR> https://www.reddit.com/r/node/comments/6whs2e/multiple_coc_violations_by_nodejs_board_member/ <comment><USER2> I'm surprised this hasn't gotten more attention on HN. Is there another thread somewhere I missed?

</comment><comment><USER3> are those comments in the reddit thread from an actual npm employee or just someone larping as one on reddit?

<comment><USER4> Actual employee.</comment></comment>


Ridley Scott's Prometheus - Movie Trailers - <AUTHOR> http://trailers.apple.com/trailers/fox/prometheus/ <comment><USER2> It's sort of an exaggeration to call them "trailers"; they're really trailers for the actual trailer, released on Thursday. Still, I got a little geeked out.

<comment><USER3> You and me both.</comment></comment>


Applying to Y Combinator as an undergrad - <AUTHOR>

I'm seriously considering applying for Winter '08 as a rising junior.
Has anyone else applied as an undergrad (other than the guys at Loopt)?
How did they (you) fare? <p>Thanks in advance. <comment><USER2> If you feel strongly about something, you have to strike while the iron is hot. You'll do better with enthusiasm but no experience than with experience but no enthusiasm. Most of the big success stories have junky back-ends anyway (Flickr is PHP; YouTube's player can't skip forward; MySpace is a pile o' tinker toys and duct tape). A tin can that does something beats a perfect blueprint that just sits there.

Oh, and the point of college, actually, is tagging co-eds. Comp. Sci majors tend not to realize this at the time.

And human biological feedback loops ensure that stays interesting. Hacking doesn't, so do it while you still find it novel and exciting!

<comment><USER3> +1 to above...

also, you can start a startup whenever, and have the rest of your life to live the 'startup life' (i.e. worksleepworksleepworksleep until/while good things happen :)), but only 4 years of college.

i would argue that tagging coeds and having a social life also helps you later as a founder to get along with the non-engineers, who often bond over drinking and talking about tagging coeds :) (not to mention the recent spate of articles about parallels between dating and startups..)

and taking time off is good (i took a year off but still lived with my college friends) but the longer you take off, the more coming back sucks, because all your friends have graduated.

</comment></comment><comment><USER4> I was an 08' at MIT and I'm a current summer founder. I dropped out, and it's going well. There are a few other undergrads in this session -- but no one who plans on going back to school.

Really, everyone fares really well, and whether you were an undergrad/grad/35 years old never comes unto play -- unless it's while joking around over dinner.

It's a great time and you should definitely apply!

</comment><comment><USER5> It helps to be able to honestly say "We are putting our educational on hold for the company, whether or not we are accepted into YC."

</comment><comment><USER6> Do it. It is awesome.

Sam from Loopt

</comment><comment><USER7> I have and awsome idea for a web site that I really think can be successful. The thing is though, will the fact that I am only a Freshman, Comp Sci student prevent me from being accepted right of the bat?

I really how it won't because I really feel like I have a hit.

<comment><USER5> It definitely won't automatically cross your name off the list. I'm sure your application will be treated seriously. Remember that ideas don't go as far with YC as they used to, I believe a link to a screencast is the preferred way to demo your product.

</comment></comment><comment><USER8> I don't think it will hurt to submit an application even if you don't get an interview. Writing up the application gives you a different understanding of your project, and you are probably going to get some great feedback as a bonus.

</comment><comment><USER9> we applied as seniors with 1 semester left each, and got accepted in w2007. i've since graduated, and chris and dan will be graduating very soon.

</comment><comment><USER10> "Junky backend" - "Flickr is PHP", ahem. Flickr's backend is actually an object lesson in how to do a good backend and scale it.</comment>


5 tools to help developing and testing APIs - <AUTHOR> http://www.vinta.com.br/blog/2016/5-tools-to-help-developing-and-testing-apis.html <comment><USER2> 3 tools

1\. curl: [https://curl.haxx.se](https://curl.haxx.se)

2\. Apiary: [https://apiary.io](https://apiary.io)

3\. KATT: [https://github.com/for-GET/katt](https://github.com/for-GET/katt) \-- slides with presentation notes of a talk at [https://andreineculau.github.io/go- remark/?//andreineculau.g...](https://andreineculau.github.io/go- remark/?//andreineculau.github.io/talks/2014-05-28-StockholmNodejs/index.md#3)

</comment><comment><USER3> Could we please not have spammy titles like this? I'd rather not Hacker News turn into Buzzfeed for developers.</comment>


From Mark Cuban Open Source Funding: Grow Traffic Using "the Elevator, not the Stairs" - <AUTHOR> http://blog.fairsoftware.net/2009/02/27/make-your-way-to-the-top-dont-take-the-stairs-use-the-elevator/

<comment><USER2> Hmmm. What the article describes as "The Elevator Effect" is basically traffic spikes due to effective PR. Alone such spikes are worthless. Without a product people actually get value from (ie: what enables organic growth), the spike just drops off to where it was before the spike (cuil anybody?). I don't think the author thinks that you just need PR driven spikes, but what he's discussing isn't anywhere near as nice as viral growth.

When we launch new versions of Miro, we tend to get covered on all the big sites and see really big traffic spikes. Our user base typically doubles after one of these spikes and then stays relatively flat. This means that people like using our product, but don't help spread it. Next month we'll have over a million users, so I'm not complaining. Nonetheless, if these users spread our product to friends in addition to just using it, we'd be a LOT better off. Clearly, this is going to be a point of focus for us.

<comment><AUTHOR> I think my point was mostly to debunk the notion that you should just sit and wait for your traffic to grow slowly. There is a fast lane out there that you can take. But you are absolutely correct: it presupposes having a real product that people will use.

The more subtle point is that once you get a spike of traffic, you can leverage it to get a bigger spike of traffic, and hopefully continue to surf the wave. So spikes can create bigger spikes. That's not so obvious.

PS: what is miro?

<comment><USER3> I think what you describe in the article is taking the stairs. It's going to take a lot more steps like those in order for you to get where you want to go. Taking the elevator is something more like convincing users to send email to everyone in their address book or landing a gigantic customer early.

<comment><AUTHOR> Landing a customer early is like catching the elevator and exiting at the next floor: a missed opportunity.

But using that first customer to immediately get a second one, and then close another one... that's a ride.

</comment></comment></comment></comment><comment><AUTHOR> What I didn't discuss in this blog post: the validity of Mark Cuban's idea. As a big proponent of entrepreneurs, I think it was a great idea even if Mark never writes any check.

At a minimum, he managed to get many people to question themselves and think for a second: "what if I started my own venture?". That in itself is a major achievement in these times of economic gloom.

<comment><USER4> Getting a check from an investor is always nice, but this is not a validation by the market that your idea is good. Meanwhile advertising your business on a blog, specially with all the conditions attached and no guarantee that you will get anything seems only useful for PR purposes, but in the end it does not really help unless you are in the first few who posted. I think Mark Cuban's idea is a good one for his own PR, but I doubt that it will help much in the end.

Overall this is one issue I have with the concept of Open Funding, trying to make you believe that competitions are a good model, when what it is really is a waste of time and energy for entrepreneurs who do not need this type of distraction when starting a business. Competitions are lotteries, with one winner taking it all, and playing the lottery is not a good business strategy. Worse, once you won the lottery, you still do not have market validation from real customers, just the blessing of a selection committee that has their own criteria (hype, cool, vision, or whatever). How about competing for cash from customers? At least when you win, you know you have something and chances are there will be more customers after the first one.

</comment></comment><comment><USER5> Well, it's a little better than PG's description of Submarine PR: <http://www.paulgraham.com/submarine.html></comment>


Peptide-1 Suppresses High-Fat Food Intake by Reducing Synaptic Drive - <AUTHOR> http://www.cell.com/cell-reports/fulltext/S2211-1247(15)00688-9

<comment><USER2> For those that are interested, one of the metabolites produced during bacterial fermentation of fiber, butyrate, has been shown to stimulate GLP-1 secretion ([http://www.jbc.org/content/288/35/25088.short](http://www.jbc.org/content/288/35/25088.short)) and furthermore acts as a PPAR-gamma agonist, which has been linked to improved insulin sensitivity and reduced visceral fat accumulation through up- regulation of adiponectin production.

All you need to do in order to reap these benefits is consume the right kind of fermentable carbohydrates. In particular, resistant starch and most forms of soluble fibers work fairly well. Beans (particularly lentils and split peas) are great, as are flax/chia seeds. You can also buy a modified corn starch called Hi-Maize that is about 60% resistant starch. If you experience issues with gas/bloating, I've found it helps to consume live-cultured food (raw fermented vegetables or yogurt/kefir) once or twice a day.

<comment><USER3> I usually take unmodified potato starch[1]. It took me about a month to get used to it, in terms of gas/bloating, but definitively, it is doing something in my brain (much less hunger)

[1] [http://www.amazon.com/Bobs-Red-Mill- Potato-24-Ounce/dp/B004V...](http://www.amazon.com/Bobs-Red-Mill- Potato-24-Ounce/dp/B004VLVCGU)

<comment><USER4> Although this is very tangentially related, one may want to consider taking a multi-species probiotic also, based on "A randomized controlled trial to test the effect of multispecies probiotics on cognitive reactivity to sad mood" [1]:

"Compared to participants who received the placebo intervention, participants who received the 4-week multispecies probiotics intervention showed a significantly reduced overall cognitive reactivity to sad mood, which was largely accounted for by reduced rumination and aggressive thoughts.

Conclusion: These results provide the first evidence that the intake of probiotics may help reduce negative thoughts associated with sad mood. Probiotics supplementation warrants further research as a potential preventive strategy for depression."

[1] [http://www.sciencedirect.com/science/article/pii/S0889159115...](http://www.sciencedirect.com/science/article/pii/S0889159115000884)

</comment></comment></comment><comment><AUTHOR> Less technical article (which links to the above) here: [http://www.washingtonpost.com/news/to-your- health/wp/2015/07...](http://www.washingtonpost.com/news/to-your- health/wp/2015/07/24/overeating-may-be-caused-by-a-hormone-deficiency- scientists-say/)

<comment><USER5> This is a cool paper. I'm saddened that there is not much discussion on it. It may be too jargon-laced. The above WaPo article takes away too much, and in my opinion, makes the topic less interesting.

If there is interest, I can take a stab at writing an explanation of this result for the technical person, such as those here on HN, who is uninitiated to the field.

<comment><USER4> That would be fantastic - and admittedly people like yourself or some other folks I can think of (Paul Whiteley of "Questioning Answers" fame comes to mind) are doing really great job on explaining the complex subjects in lay terms.

Please do this!</comment></comment></comment>


Waffle House Index - <AUTHOR> https://en.wikipedia.org/wiki/Waffle_House_Index <comment><USER2> When this subsides, I recommend going to a waffle house if you're in that part of the world.

They're a cultural neutral turf. You see _everyone_ there. It's — and even more in times like these — a pretty touching and affirmational thing.

</comment><comment><USER3> this is very bad because some 300+ waffle houses have closed in the eastern U.S. out of some 1400+.

<comment><USER4> All of them will close, maybe not at the same time but it will happen.

<comment><USER5> The halting problem is undecidable.</comment></comment></comment>


Clean up, Organize your mailbox and save time using Sanebox - <AUTHOR> http://7labs.heypub.com/technology-news/clean-up-organize-your-mailbox-and-save-time-using-sanebox.html <comment><USER2> I got almost halfway through this before realising that it was a press release rather than a techcrunch "news" item.

Which shows how little critical thought goes into the majority of techcrunch articles rather than this being remotely modest.

Any independent user assessments or at least a distillation of what the product does?

</comment><comment><USER3> I've had a really good experience with Sanebox for the last few months, actually. It seems to do a much better job filtering my inbox than priority inbox alone. Granted, it takes some initial training over the first week or so, but I've been a very happy customer.

</comment><comment><USER4> So, I pay $5 a month (or keep inviting friends in a ponzi-esque rush to get free service even as I know it will run out eventually) to keep doing what I've been doing with Gmail. No thanks.</comment>


Ask HN: is single founder startup really frown upon / despised? - <AUTHOR>

I applied to couple of accelerators and got shot down.
I am pretty sure the startup idea got their attention (I have shown my startup here and generally it is a positive feedback), however I think why I got denied is probably due to single founder.
Why is that single founder frown upon in the industry?  While I understand single founder has twice as much work, but I also think if they can build the startup from ground up to launch, it shows that they are capable of running the business.
A bit about me. I am a business founder with Product Management background. I do have engineering background, but not in web coding.  I build the startup myself by writing requirement, testing, everything that a tech co founder (CTO) can do except writing codes. I outsource the development using freelancers. I have few marketing strategies on how to spread the words out. As people usually say, Product Manager is like a mini CEO. I understand the mechanics of how it works, why it works, and how to run it.
The other reason I am a single founder now is because I want to prove to my future CTO (tech co founder) that I have what it takes to run the startup.  Without a web background, it is hard to attract or gather interests from a savvy web programmer, so I think it is necessary for me to show them that I understand it.
what is your take on this? <comment><USER2> Business is hard. Programming is hard. Good at both programming and business? More than twice as hard.

Also, from a scalability perspective, one founder means that everything blocks on you. Going from one to two people significantly increases throughput.

<comment><AUTHOR> I understand that, but being a PM, I outsource my development to freelancer. If you see it from the outside, it's like two people startup. I am in charge in everything else, the freelancer is in charge of coding and build the site based on my requirement

<comment><USER3> In what language(s) can you program? How many LOC has the biggest program you have written?

<comment><AUTHOR> my background is in EE, so HW coding, VHDL, Verilog, which is totally different area than web programming. But for the last few years, I have not done programming as I moved from engr to Product Management</comment></comment></comment></comment>


Play "Colossal Cave Adventure" via Voice Commands - <AUTHOR> http://610dearben.com/ A friend of mine has put this site up - it's the old Colossal Cave Adventure driven via speech recognition. I tried it over Skype and it worked fairly well - interesting concept. <comment><USER2> You can call 610-DEAR-BEN (610.332.7236) or Skype "sixtendearben" to play this Voice Controlled Adventure Game.</comment>


Bang & Olufsen design team avoids meetings/process and "sculpts" products little by little - <AUTHOR> http://mobile2.wsj.com/device/html_article.php?id=1&CALL_URL=http://online.wsj.com%2Farticle%2FSB121372804603481659.html

<comment><USER2> It seems like the process behind Wikipedia made physical: (almost) all of the edits are contributed by people who haven't been "immersed" in the creation process, so the perspective is constantly fresh.

</comment><comment><USER3> Where did my comment go? I posted it hours ago and it was even getting points. Who eated it?

<comment><USER4> look over here:

      http://news.ycombinator.com/item?id=232012

this submission is a dupe. your comment was on the first one.</comment></comment>


Show HN: A Tribute to "Asteroids" - <AUTHOR> http://harimohanraj89.github.io/asteroid

<comment><USER2> I did a similar thing some time ago adding rigid body collisions on the asteroids, which makes the game way harder.

[https://github.com/santialbo/Asteroids](https://github.com/santialbo/Asteroids)

play here: [https://rawgit.com/santialbo/Asteroids/master/default.htm](https://rawgit.com/santialbo/Asteroids/master/default.htm)

<comment><USER3> That's a really cool version, but you need to give some invincibility when you respawn, otherwise one death can be equivalent to 2-3 if there happen to be asteroids in the middle area at the time.

</comment></comment><comment><AUTHOR> Something I made with pure JS and the HTML5 Canvas. Play it, have fun, and if you have any thoughts on the quality of the source code, please let me know!

</comment><comment><USER4> On my browser (Safari), pressing arrow keys scrolls, making the game _really_ hard to play. You should be able to `event.preventDefault()` or something to prevent scrolling.

<comment><AUTHOR> Ah yes, the scroll is annoying! I think I tried some sort of preventDefault thing, but definitely need to get that working. Thanks!

</comment></comment><comment><USER5> I implemented Asteroids on Arduino. It was very challenging to work within 2K of SRAM, especially when 1.5K was used by the video buffer. [https://www.youtube.com/watch?v=w03dO0Hd660](https://www.youtube.com/watch?v=w03dO0Hd660)

</comment><comment><USER6> I like it. It harkens back to the original vector art version from '79, although you really should make the asteroids look more asteroid-y. If you make them circular it's still quite easy to do your collision detection and they'll look a lot better.

<comment><AUTHOR> My collision code is overly simplistic, and so I went with squares to give the asteroids some jagged edges. I should totally try out circles to see if they look better, though. Thanks!

</comment></comment><comment><USER7> At first, I blasted everything in sight.

Then I noticed that if it wasn't going to hit me on the pass and wasn't the smallest size, that was bad.

I started waiting on the first big with a direct line, taking that guy down to basic and repeating.

Zen Astroids. :)

</comment><comment><USER8> Been a while since I played Asteroids... is this any different from the original, other than the asteroid shapes?

Very clean code btw.

<comment><AUTHOR> Thanks for the comment. It's ideally supposed to be the same as the original. If it is not, it's because I haven't implemented some features yet (spaceships, slowing down eventually if you don't thrust, ...).

</comment></comment><comment><USER9> A tribute to "Steroids"

[http://www.dailyutahchronicle.com/index.php/a-tribute-to- ste...](http://www.dailyutahchronicle.com/index.php/a-tribute-to-steroids- everywhere/)

<comment><USER10> You have posted an unrelated link. Please don't do this, it does not move the conversation forward.

<comment><USER9> I'd like to introduce you a friend of mine called "humor sense"

:-P</comment></comment></comment>


My wife found my email in the Ashley Madison database - <AUTHOR> https://evan.atavist.com/my-wife-found-my-email-in-the-ashley-madison-database <comment><USER3> Okay, time for my story:

About two decades ago, while going through new-employee orientation at a university, I sent some e-mail from a computer lab. As part of this, I entered my e-mail address as the reply-to address. At that moment, there was some kind of misconfiguration: the directory on the university-wide server where global defaults were stored happened to be writeable.

A couple of weeks later, when all the students showed up, my e-mail address was the default reply-to address on the standard e-mail client in all university computer labs. And because the configuration problem had been fixed -- the directory was no longer writeable -- my address _remained_ the default address.

It took me a while to figure out what had happened. For several days, all I knew was that suddenly I was subscribed to every mailing list in the universe.

When I did figure it out, I told the IT people, and they fixed it. But then -- _I 'm not making this up!_ \-- there was some kind of crash, they had to restore from a backup, and it happened all over again.

There was no serious negative impact from this episode; I just got tons of wacky e-mails for a while. Perhaps things might be different if something similar were to happen today.

<comment><USER4> Would you receive replies from emails users sent from their own address?

User a emails his mom, his mom hits reply and it was directed to your account?

<comment><USER3> Yes, that was eventually the big tip-off as to what had happened. I would get messages like, "Hi, Fred! Glad to see you're settled in at BigU. Who's this 'ggchappell' guy?" (My name isn't "Fred", BTW.)

</comment></comment></comment><comment><USER5> I actually thought about something slightly related -- With the AM drama, won't an individual have a reason to signup to all shady websites with their worst enemey's email address and then wait for one of those sites to get similarly hacked? Would some people have created AM profiles of others just as a joke, and now those people might be in trouble?

I once found a dating profile of mine that was created by an overzealous relative. Thankfully this was few years before I met my spouse.

<comment><USER6> > won't an individual have a reason to signup to all shady websites with their > worst enemey's email address

Well usually sites verify that the person signing up on a site is the owner of that address, in a large part for this very reason.

<comment><USER5> I've heard that AM didn't verify. And I'd say many shady websites won't.

<comment><USER7> That's a cheap form of plausible deniability, then.

</comment></comment></comment></comment><comment><USER8> My Gmail is based on my real name and I had similar problems:

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

At least 300 men in the USA share the same name as me. I got my Gmail in 2005 so I got it firstname.lastname@example.com and others who got the same name as me enter it into websites all of the time. Most don't even validate the email, and sometimes I have to email the admins to get the account shut down.

I think websites have a resposibility to validate the email and delete the account if it isn't validate in a reasonable amount of time or have a link to delete the account if someone who signed up wasn't you.

<comment><USER9> > I think websites have a responsibility to validate the email and delete the > account if it isn't validate in a reasonable amount of time or have a link > to delete the account if someone who signed up wasn't you.

You're talking about a business with questionable practices to begin with in that case, not a responsible one. These people are scammers like most of the dating websites.

<comment><USER8> Obviously the only thing they cared about was money. Offered to delete the account for $19 but just hid it instead of deleting it.

</comment></comment></comment><comment><USER10> Imagine the spam you would get if you have a common name - <USER2> firstname.lastname@example.com.

I have a boss with a very common last name - not quite as common as smith though. He has a "firstname.lastname@example.com" email address. He _constantly_ gets emails meant for other j smiths.

<comment><USER11> I'm stunned I'm not in the AM database. Variations of my gmail address (dots in different places) have been used to sign up for every sketchy "adult dating" site in the world. My wife saw some in my inbox and was very upset, until I showed her the massive amount of things I get that are quite obviously intended for someone else with my name.

<comment><USER12> Gmail ignores the dots internally. email@example.com is the same as email@example.com is the same as email@example.com.

</comment></comment></comment><comment><USER13> I wonder if a lot of addresses were added by AM themselves, perhaps from an email marketing list. I have a spam-catcher account where all messages go straight to the junk folder. I use it when required to sign into services that I don't ever plan to return. I found this email on the AM list, though I haven't ever signed up. It's likely that my address was sold by some service or another, is all I can figure?

<comment><USER14> Have you been sleeping like a baby recently, but occasionally waking up and Helena Bonham Carter is in your house?

<comment><USER15> What does this mean?

<comment><USER11> Reference to the movie Fight Club, which you should now go watch.

</comment></comment></comment></comment><comment><USER16> I think many people are missing perhaps the real issue with appearing on a list like this (even if wrongly accused so to speak). By appearing on the list you raise suspicions and those suspicions could very well cause someone (spouse, girlfriend) to look at what you do more closely. That may or may not matter. It may have to be combined with other solid or sketchy data. This is similar to how police solve some crimes. Some little fact, while insignificant in itself, gets them to focus more closely on a particular individual that they might not have thought much about prior to the insignificant and even incorrect fact that was passed to them. Such as "well I did see a Red Chevy Camaro with Florida plates" or "a guy wearing a University of Michigan sweatshirt"...

</comment><comment><USER17> Who cares about email addresses? Credit card numbers are how you incriminate your cheating spouse.

<comment><USER18> Credit card numbers are often stolen and therefore are not a good singular piece of evidence.

<comment><USER19> Don't know why you got downvoted. My CC was recently compromised, and the "thief" purchased a lot of very odd things all at once which triggered the flag, including online services I had never heard of. And lots of dominos pizza!

</comment></comment></comment><comment><USER20> Similar first-initial-last-name gmail address, similar issues. Fortunately my email didn't make into AM, but I checked as soon as I found out because I get so many wrong emails, and wanted to know myself before anyone else looked "me" up.

The worst is Sprint: my email address is attached to a family account in Minnesota… and every time the parents use the "locate your child" feature it, as a security measure to be sure, sends an email alerting them that their child had been located near 123 Main St, SomeTown, MN. That one freaked me out enough to try to resolve it… I called Sprint, went through three reps and it took 20 minutes just to get them to understand the issue. And even then, neither that rep nor their supervisor could do a thing about it. So now I have a gmail filter that insta-trashes those messages… I really don't want to know where those children are!

</comment><comment><USER21> I have the same problem, having an email@example.com address.

It seems there's one lady who apparently lives in Utah and is unable to accurately tell anybody her email address. I've received several sets of flight bookings / e-tickets, personal photos, schedules for religious retreats, etc.

</comment><comment><USER22> I have the same problem. I receive flight tickets, dinner reservations, once even an entire stack of private documents including passport scans (from someone working as an admin for the Italian PM! Blackmail opportunities ahoy...). I usually do my best to track down "offenders" and forward their stuff... unless it's something from racist/wingnut organisations (it looks like Americans sharing my surname have right-wing sympathies).

I originally thought it was a "senior citizen" issue but now it happens with all sorts. People just forget what their correct email address is. Moral of the story: registering your name to new services asap is always good ;)

<comment><USER23> I get the same and have sometimes tracked down the people involved for things that seemed important (e.g . medical continuing education course proof).

I do gleefully mark as spam the ongoing stuff from a rather wingnutty gun rights organization that someone donated to, though I did attempt to unsubscribe first. Apparently once you give some groups money there's just no getting off their lists.

</comment></comment><comment><USER24> Something similar happened to me last week. I started getting e-mails from eBay to firstname.lastname@example.com, an e-mail address that I use for iCloud, but nothing else. I was getting inundated with messages from eBay, so this morning, I did exactly what the guy in the article did; I reset the password, and took control of the account. Hopefully, problem solved (aside from some residual messages I'm still receiving).

Also, it turns out that I get collections calls for a guy with my first and last name, and based on the information in the eBay account, I have reason to believe this is him. Guess where I'm pointing the next debt collectors to call me to?

</comment><comment><USER25> I'm on the receiving end of some family's group emails. It seems like they've had some nice vacations over the past few years. I hope they found the lost sneaker they misplaced this Summer. I contemplated showing up at their (our?) family reunion but I wasn't able to make it that weekend.

</comment><comment><USER26> I've successfully created a few emails written in leetspeak or using short 3-number keys or 3-letter abbreviations converted to some type of base X system and never have problems with them. I rarely, if ever, receive junk mail, and humans definitely have a lesser chance of using them.

</comment><comment><USER27> My phone number used to be 222-3212 and every day when I got home from work I had a filled phone answering machine, (yep that long ago). Mostly random kids, but sometimes sales people.

</comment><comment><USER28> This guy has two problems:

1) his wife doesn't trust him

2) his wife needs a lesson in spam avoidance, as she was foolish enough to type her husband's email address into a website form that very likely is scraping addresses to be sold to spammers.

</comment><comment><USER29> the article doesn't mention that you have to confirm your email is valid by clicking a link before you get registered so incriminating strangers this way should be impossible. I presume he validated the email himself

<comment><USER30> But that's widely reported as not being true. On what basis do you claim otherwise?

> _It's important to note that Ashley Madison's sign-up process does not > require verification of an email address to set up an account, so legitimate > addresses might have been hijacked and used by some members of the site. One > email in the data dump, for example, appears to belong to former UK Prime > Minister (Tony Blair)._

\-- [http://www.wired.com/2015/08/happened-hackers-posted- stolen-...](http://www.wired.com/2015/08/happened-hackers-posted-stolen- ashley-madison-data/)

<comment><USER31> And why would that make it suspect? I'd rather assume it was him who signed up

</comment></comment></comment><comment><USER32> > Mostly, though, I grew to enjoy being a kind of hub in the E. Ratliff > community.

> E. Ratliffs have our secrets, and we stick together.

lmao. Great read.

</comment><comment><USER33> > Ashley Madison does not validate all email addresses

There you go. Everybody gets a perfect excuse for their email showing up in that database.

<comment><USER34> With a bit of investigation it's easy to find out the lat/long and signup ip address associated with an email account. Most of the time this should make it clear if the person in question really did it or not.

<comment><USER35> In 99% of real world situations, the girlfriend or wife will either believe you or not. Once any experts are hired, the relationship is already over, no matter what the investigation concludes.

<comment><USER34> I'm not talking about hiring experts here, I'm talking about reading a text file.

But ya, while I might not go as high as 99% I generally agree with what you're saying.

</comment></comment></comment></comment><comment><USER36> My gmail address, which I got when gmail just started, is my last name @gmail.com. There's no first initial, no numbers after it.

Now, my last name isn't that common, but there are probably several thousand people with it. And I get all sorts of email for all the others with my same last name who think that last name @ gmail.com will work.</comment>


Man vs. Machine: Seven Major Players in High-Frequency Trading - <AUTHOR> http://www.cnbc.com/id/39038892

<comment><USER2> I worked for one of these guys. One day there was a glitch in a system, completely unrelated to my job, he had himself put on speakerphone so he could threaten to fire me. He loved The Apprentice.

<comment><USER3> What timescale is the game played at these days? Does it get down to milliseconds or below? Do people build special boxes running stripped-down OS's to avoid interrupts? Etc., please do tell

<comment><USER4> single-digit microseconds tick to trade (i.e. from when a message appears on the wire till a relevant order is sent to the exchange).

Without trying too hard, you should be able to get to 100 microsecond tails (CPython and perl prototypes can hit 80 usec at the 90th percentile).

Generally people use 10G nics with some sort of DMA (e.g. solarflare nics support a solution called OnLoad).

Though it should be said that, over the past few months, the effect of a few microseconds is mostly irrelevant (though being slow by milliseconds can be calamitous)

<comment><USER5> _Though it should be said that, over the past few months, the effect of a few microseconds is mostly irrelevant (though being slow by milliseconds can be calamitous)_

How in the heck do these shenanigans add any possible value to the economy?

<comment><USER6> They probably don't add nearly as much value as they make for their players. However, they do add a small value: They close the economic arbitrage "loopholes" -- allowing other players to focus on other things, which are likely to have more economic value.

They also may increase trust that the current pricing makes sense. When you buy some stock, it is more likely that you're getting a "fair" transaction.</comment></comment></comment></comment></comment>


High-Performance Ruby: Evented vs Threaded by Dr.Nic at RubyConf '11 [video] - <AUTHOR> http://www.getdenso.com/videos/2994947-threading-versus-evented-by-dr-nic-williams

<comment><AUTHOR> Interesting in light of @tenderlove's Fibur library launch today! <https://github.com/tenderlove/fibur/blob/master/lib/fibur.rb></comment>


Google's Android Is Already Delayed - <AUTHOR> http://www.techcrunch.com/2008/02/04/googles-android-is-already-delayed/ <comment><USER2> As has been pointed out in the comments, he got his facts wrong.

<comment><USER3> The only thing (as far as I can tell) that was delayed is the deadline for the Developer's Challenge. And that is because a major SDK update is coming very soon and they want to give developers more time to utilize it.

<comment><USER2> Precisely. They felt that it would be unfair, with a week or two left, to say "oh, and by the way, here's a major update".

<comment><USER4> It may be unfair to change the platform just before the deadline. Likewise, it is unfair to change the deadline. It looks unco-ordinated and it could run afoul of some contest laws. It would have been best provide a stable platform during the competition then release updates afterwards.

<comment><USER5> > it could run afoul of some contest laws.

Is this legally a "contest"?

Seems more like a game of skill to me. :-)</comment></comment></comment></comment></comment>