Rust Is Surprisingly Good as a Server Language - <AUTHOR> https://stu2b50.dev/posts/rust-is-surpris76171 <comment><USER4> I tried Rust about a month ago. The language itself is amazing, the pattern matching is super expressive, the borrow checker is incredible in the kinds of errors it can pick up on, and rust-analyzer is leagues beyond where RLS was. But... the compile times are an absolute non-starter for me. I'm the kind of guy that likes to re-run his code continually to see if it validates to what I expect it to be doing. In Rust, this kind of workflow just doesn't work at all. The long compile times completely kill any enjoyment or flow that I normally get out of productive programming. Even worse, I found myself anxious to introduce new dependencies, because each new crate would add a few more seconds to the compile time, which immediately correlates to less coding enjoyment.

I keep reading in Rust surveys that Rustaceans just don't care that much about compile times enough to prioritize improving them. I've often wondered how this can be possible, given that to me it's such an obvious glaring issue that all the other cited problems are distant distant seconds at best. I have a theory: there must be two groups of engineers. One group loves fast compile times and quickly validating hypotheses. The other group must value thinking about their code a lot more than running it, and so compile times aren't that important. My guess is that, while the second group hangs around and loves Rust, Rust has _completely_ driven away the first group (including myself) to the degree that they don't use the language enough to even fill out the surveys.

Anyways, I know it has a wide swath of use cases, mostly in systems programming. I'm just bummed that if I ever do any of them, I won't really enjoy it. :-(

[EDIT:] Gotta go to sleep, it's far too late here. I really appreciate all the thoughtful replies. Rust's amazing community is another reason it annoys me that I can't fully get into the language as I'd like to.

<comment><USER5> As a datapoint for your hypothesis, when working in a typed language I will build my code only a few times a day.

I much prefer working from a logical and thoughtful approach rather than iteration. At the point where I start a build I am already reasonably confident that it will do what I want it to.

There are some bugs where I will need to re-build several times consecutively but these are relatively rare for me (I work on REST API systems - so nothing too crazy).

<comment><USER4> That's really interesting. Compiling only a few times a day is mind boggling to me - in a normal day I'd probably average hundreds to a thousand compilation cycles!

The main thing that I use compiling for is to validate little off-by-one things. Like, is substring() exclusive on the second parameter? What about range syntax and the slice operator? What if I wrote + 1 instead of - <USER2> somewhere, or did < instead of <=? I could spend a few minutes combing documentation, or just compile it and check immediately. Well, assuming compilation is fast anyways.

<comment><USER6> >> in a normal day I'd probably average hundreds to a thousand compilation cycles!

Maybe it's time to switch to an interpreter ? :-)

<comment><USER7> Or a language like Go, C or Nim that can compile tens of thousands of lines of code in a few seconds.

<comment><USER8> Or OCaml, Java, C#, F#, Eiffel, Delphi,...

<comment><USER9> I've worked in a C# code base where compiling the solution took 40 minutes.

<comment><USER10> Wow, one of our solutions is nearly 100 projects (legacy) and the compile time for the whole solution is sub-5 minutes. I'd love to see what kind of solution would take 40 minutes to compile! (or maybe I don't :)).

That being said, C# is clever enough to only need to recompile the assemblies affected by your code change, so often you can get away with 10 second compile times even for large solutions.

<comment><USER9> IIRC our solution was around 450 projects. Visual Studio just woudn't open the whole solution.

So you had to work in individual projects at a time, slowly going through and changing stuff project by project.

VS wouldn't even build it either, really. YOu had to build via batch file that did various ms build magic. I would make changes, set of a build and go to lunch, then come back and fix the errors.

Once you checked the code into source control it would trigger a build which would sometimes take upwards of an hour :( I hated that code base.

It got even worse when they added Coded UI tests. Wait an hour for a build and then a random Coded UI test would fail and the advice from the people who wrote the Coded UI was "just run another build!", yeah, flakey tests on a code bases that tests an hour to run...

<comment><USER8> Now imagine with the current Rust compile times, compiling those 450 projects from scratch, I bet the 40m would turn into hours.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> I'm building with Rust, Rocket, Diesel, and agree with much of the original article. I can also add more: in my direct personal experience, the lead people creating Rocket and Diesel are superb about responsiveness, ongoing communication, and enabling people (e.g. me) to help diagnose issues and fix the them. I'm continually thankful for the quality of participation among the people in the ecosystem.

On the technical side, there are definitely some learning curves among Rocket, Diesel, and other tools. A typical example is that different crates have their own implementations of concepts such as a UUID, and the developer must handle conversions, and also ensure that various dependency versions all align, and also can't (yet) easily use the current UUID crate, and also can't (yet) build using stable Rust. All of these aspects will be fixed soon, likely within a month or so as the crates stabilize.

If you try Rust, I highly recommend trying rust-analyzer, which provides near- real-time code advice as a plugin to most major editors.

<comment><USER12> Does having to develop against rust nightly over stable not worry you when attempting to productionize a service? I understand new features get shipped behind feature flags/language pragmas, but it seems like a massive looming risk.

<comment><USER13> Not that as of Rust 1.45, coming out this Thursday, Rocket will be able to target stable Rust: [https://github.com/SergioBenitez/Rocket/issues/19#issuecomme...](https://github.com/SergioBenitez/Rocket/issues/19#issuecomment-630650328)

I believe Diesel has been on stable for a long time now, so for this use case I don't think anyone will need to worry about using the nightly releases.

<comment><USER12> That's good news! Wasn't aware of the pin change for rocket.

<comment><USER14> One more thing: I build my final binaries with stable (when possible), but develop with recent a nightly. There are some features that require nightly (custom testing frameworks come to mind) but don't affect the final binary (only tests) _and_ I get the new goodies (better diagnostics, speed bumps, fixes) up to 12 weeks ahead of schedule.

Rustup makes having nightly and stable in the same machine painless, and I got in the habit of running cargo +stable build and cargo +nightly test. BTW, you don't _have_ to do this, it just makes my experience a bit nicer.

</comment></comment></comment></comment></comment><comment><USER15> There is an advocate on our team that wants to migrate our web service from Nodejs to Rust.

While I am not a huge fan of Typescript, at least libraries are readily available and generally easy to use. On the other hand, being able to show that we are able to do monitoring, user auditing, ORM, opentracing, gRPC-web with Rust is non trivial.

Now that I think of it, being able to do a "hello world" on any language is pretty simple. But having all the tools around it to build a production level service is a different story.

<comment><USER16> Rewriting is very expensive, and the advocate will need to make a VERY strong case for Rust if they're asking your company to invest in replacing it - <USER3> alternatives have to be suggested as well, including other languages and a good list of things wrong with Node / TS. Consider developer availability as well.

I don't think a strong enough argument can be made. I'm sure you CAN write web services in Rust, and that in very specific cases it'll have some benefits over Node, but honestly very few people work in an area like that.

Disclaimer: I've settled on using Go to rewrite an existing application. The original app was written in PHP; nothing wrong with PHP per se, but the existing codebase is a mess and the PHP version is hard to keep up to date because of LTS versions of operating systems + very slow and careful updates at our customers (it's network infrastructure). For me, switching to a compiled language that produces a self-contained executable was a compelling argument. I have to admit that I do kinda pine for something like Java again though.

<comment><USER17> Swift / Vapor is amazing as well. They just released version 4, which streamlined and tidied up lots of things, can't recommend it enough. There's just something solid about Swift's strictness and compile time checks, that make it easy to be sure you're handling all possible code paths, and you can be reasonable confident it works and won't break all the time. Also very lean on dependencies, mostly unopinionated, and performance/mem-usage is top tier too. Only con is probably, you're bound to Xcode (and therefore macOS) for development, I guess you could try to set it up in VSCode, but haven't heard of it and experience will probably be not so good.

<comment><USER18> That con is a pretty big one. Macs have less than 10% desktop market share.

<comment><USER19> In this case Swift is being used on the server, so that could be an officially supported platform[0] which if I recall correctly is macOS, Ubuntu, CentOS, Amazon Linux 2, and Windows as of Swift 5.3.

<comment><USER8> Swift on Linux is pretty much WIP, with an ecosystem that is Mac first and hardly considers another platforms.

On Windows with luck 5.3 will be the first version that the compiler actually works, let alone existing libraries that barely work on Linux.

</comment></comment></comment></comment></comment></comment><comment><USER20> I took an example of a server straight from the Rust async book, and to my surprise, it performed very well for a long time serving real internet requests till I actually had to modify it:

[https://rust-lang.github.io/async- book/01_getting_started/05...](https://rust-lang.github.io/async- book/01_getting_started/05_http_server_example.html)

My server processes JSON requests and returns JSON and also serves a couple of static files that I simply read with

        include_bytes!("../files/index.html")

Once you understand Rust async model (which I recommend as a mental exercise for any programmer), it's all very simple.

</comment><comment><USER21> In my opinion, the section which the author called "the ugly" makes it clear that it's not that surprisingly good as a application server language. A file upload is a basic feature that has already been solved yet Rust code contains a lot of boilerplate when compared with Python.

Remember the mantra from the 2010's when the dynamic typing craze? Rust is not about optimizing developer time, it's about guaranteeing safety for base sysstems software.

All this permanent reasoning about ownership, borrowing and so on makes it the greatest contender against C++ (hence Mozilla and Microsoft support) but in terms of productivity you'd be best served with a higher level, GC-collected platform for an application.

<comment><USER22> The point of the article is that lack of good support for file upload IS a productivity hit, but ownership reasoning IS NOT a productivity hit. And file upload can be solved by just more code. This indeed matches my experience.

<comment><USER23> Ownership reasoning is not a productivity history in a web server, where the lifetime of pretty much everything is a single request which is handled and then disposed of. This is pretty much the simplest case for ownership. In a different application (say, one running a GUI with many objects which live for indeterminate amounts of time and can be shared across views), ownership reasoning can be extremely complicated.

I'm not saying having to reason about ownership is bad, I'm just saying that this is not a good test for whether ownership reasoning is difficult or not.

<comment><USER24> The thing with ownership reasoning in Rust is that you can opt out of it whenever it makes sense to do so. If you really have "objects which live for indeterminate amounts of time and can be shared across views", that's not an increase in complexity; you just acknowledge that reasoning about ownership and sharing at compile time is not going to be feasible, write Rc<RefCell<…>> (with a documentation comment to that effect) and move on. All it takes is knowing where to add a tiny bit of boilerplate.

<comment><USER25> Yes, but you still can't write garbage collected code, which is tremendously useful in many circumstances. E.g. when using closures you really don't want to be thinking about memory allocation, and closures have proven a very useful concept. There are countless of reasons why the availability of a GC is a productivity booster.

So I wouldn't describe Rust as a language that fits all domains and/or programmers well.

<comment><USER26> Isn't Rc<T> essentially garbage collection though?

<comment><USER25> Reference counting _is_ a form of garbage collection, but with closures you often end up with circular dependencies, which is what RC can't handle.

</comment></comment></comment></comment></comment></comment></comment><comment><USER27> On the set_expires thing, the docs are at [https://docs.rs/rocket/0.4.5/rocket/http/struct.Cookie.html#...](https://docs.rs/rocket/0.4.5/rocket/http/struct.Cookie.html#method.set_expires), and "Tm" is a clickable link. Rocket 0.4 is using version 0.1 of the time crate, and the snippet in this article that looks into the time crate docs is looking at completely the wrong thing, time::Time::now from 0.2, which gets the time of day (which also, I think, helps explain the deprecation reason, because time of day in UTC is extremely seldom useful and can easily be obtained otherwise, while a full date + time in UTC _is_ useful), rather than time::now from 0.1, which gets a timestamp.

Discussion of this article on /r/rust: [https://old.reddit.com/r/rust/comments/hpzmeu/rust_is_surpri...](https://old.reddit.com/r/rust/comments/hpzmeu/rust_is_surprisingly_good_as_a_server_language/)

</comment><comment><USER28> It's sad that we still have to make async I/O explicit in the code to obtain some efficient concurrency in 2020.

Async/await is a huge improvement over callback hell, but this doesn't fix everything. The "function color" problem still exists [1], and seems to be more than binary in rust. This quote from the article is incredibly sad: "each async library, comes its own ecosystem of libraries, which only work with that async library".

Rust is ground breaking in some areas, but also completely lacks innovation in others.

But is it actually _necessary_ to resort to async I/O in Rust, given that the type system appears to make thread-based concurrency safe ?

[1] [https://journal.stuffwithstuff.com/2015/02/01/what-color- is-...](https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your- function/)

<comment><USER29> > This quote from the article is incredibly sad: "each async library, comes > its own ecosystem of libraries, which only work with that async library".

Already in Rust many libraries can be written completely agnostic of the underyling executor. Some cannot; we have a bit more interface work to do, but there's nothing inherent about this, it's solely a standardization issue that's being worked on. Sounds like they ran into the latter more than the former, which is unfortunate, but should be better in the future.

> But is it actually _necessary_ to resort to async I/O in Rust, given that > the type system appears to make thread-based concurrency safe ?

It is not!

</comment></comment><comment><USER30> Why wouldn't you just use OCaml, Haskell, F#, or Scala, where you've got much more mature web framework options? Don't get me wrong, Rust is fine, but if you don't need its memory management then why make trouble for yourself?

<comment><USER31> Rust is interesting in that it may eventually end up as a very useful language for WASM work.

Rust has the advantage that when compiled to WASM it won't require a runtime library. So the prospect of Rust as a fast, low overhead, use anywhere language is tempting.

Since Rust is a relatively new language it's worth checking to see how it's maturing over time against small low risk projects exactly as the author has done.

Rust may not be a perfect fit right now but that may change. So it's very valid to test one's assumptions from time to time.

Or to put it another way, working in one of the languages you've mentioned wouldn't answer the question "how suitable is Rust for web server work right now?"

<comment><USER32> All that applies to several other very mature languages that can target WASM, like C.

Nevertheless, WASM is not ideal for server work. It is intended for the frontend.

<comment><USER31> Sorry, I may not have explained my point clearly enough.

I'm not suggesting that you would use WASM for server work at all.

I'm suggesting that Rust would be interesting for WASM on the frontend because it doesn't depend on a runtime.

Given that you might want to use Rust for WASM you may also want to use it on the backend (that's without using WASM on the backend).

The assessment of Rust via small projects says nothing about the suitability or not of C or any other language.

It's just about the suitability of Rust right now and how it's changed from the last time you assessed it.

<comment><USER32> Fair enough. I wanted to mention that Rust is not the only language that targets WASM since you talked about maturity.

</comment></comment></comment></comment></comment><comment><USER33> I've taken the deep dive into Rust API service development the past few weeks. I really enjoy the experience of developing in Rust, but not so much the experience of using Rust web frameworks, somewhat in line with the author.

In particular, even having a relatively small set of feature requirements it has been difficult finding a web framework that supports: Middleware, Websockets, easy routing, and async handlers.

Actix probably supports all of those, but I don't much like development in it and prefer to avoid the drama of Actix. Surprisingly, none of the other libraries I've looked at support all of those (except possibly Gotham, but I ran into other issues with it).

I'm not sure what my takeaway is, other than that web frameworks still have a ways to go, and development on each of these web frameworks seems slow, I think because of the lack of companies picking them up. I also get the impression that people are somewhat obsessed with doing it the "Rust way", rather than just getting a simple completed web framework out the door.

However, I love working in Rust, and think I may reach a point where I'm actually more productive in it than something like Typescript. There's just a large learning curve. But it's fun.

</comment><comment><USER34> [https://stu2b50.dev/posts/tag/culture](https://stu2b50.dev/posts/tag/culture)

on tag page it's possible to see drafts :)

</comment><comment><USER35> I'm glad to see this post here. Just because I hear/read a lot of people outright dismiss Rust's potential here with arguments that kind of miss the point:

1\. You don't need CPU performance for most web stuff. It's all IO bound.

2\. Related to #1, garbage collectors are fine and you don't need the Rust model.

3\. Rust is _so_ hard to learn that it isn't worth it unless you need the performance.

There's so much more to Rust than the performance. It hits a really nice sweet spot between being expressive and letting you take as much control as you want/need.

Sometimes GC'd languages are a pain in the butt because I just want a damned destructor and I would like to be able to guess when/if it's gonna run.

And, frankly, Rust isn't that hard. It's an imperative language. It's not Haskell.

<comment><USER36> Can someone elaborate on why #2 is wrong on the server level? My systems are not performance bottleneck'd and as a Java dev I'm more worried about the potential for memory bugs (which I admit I will create) if I stray away from automatic garbage collection.

<comment><USER35> It's not wrong. I didn't mean to imply that. I just mean that saying non-GC languages are about performance overhead of the garbage collector is missing the point.

Sometimes, it's convenient and easier to reason about stuff when you can predict when something is actually dropped from memory.

And in Rust, you wouldn't create those memory bugs you're worried about. (Well, you can, but you have to go out of your way to take the safety off :)) That's kind of Rust's whole "shtick"

<comment><USER36> You can absolutely create memory leaks in Rust [1].

That's a bigger problem for server applications than CPU / Memory performance issues, because the latter can be traced more easily.

As a (mediocre) dev and head of a team (some are great, and some are as bad as me), I'm far more worried about bugs than performance.

[1] [https://stackoverflow.com/questions/55553048/is-it- possible-...](https://stackoverflow.com/questions/55553048/is-it-possible-to- cause-a-memory-leak-in-rust)

<comment><USER35> Depends what we're talking about. A "true" memory leak (as in allocated memory that is not referenced) is not very likely.

A reference cycle with `Arc`s can happen though.

But if you're talking about Java and mediocre devs (I'm in the club- don't worry), I feel like there are no shortage of ways to make bugs with null, concurrency issues, etc, that Rust completely eliminates. You _can_ make reference cycles in Rust, though.

Also, in Rust code you often don't have references to references to references the way you do in Java, so it's just not an issue that I'm aware of having had yet.

<comment><USER36> [https://stackoverflow.com/questions/55553048/is-it- possible-...](https://stackoverflow.com/questions/55553048/is-it-possible-to- cause-a-memory-leak-in-rust)

<comment><USER14> That SO answer restates what the parent said: you can leak data either explicitly (Box::leak/std::mem::forget) or by creating reference cycles when using Arc/Rc.

</comment></comment></comment></comment></comment></comment></comment><comment><USER37> I wonder if there is a need or appetite for large libraries like Apache commons or Guava in Java which cut down on dependency count.

It's an alternative to a myriad of small, unaudited libraries. Rust does have some projects going to audit those small libraries, though.

</comment><comment><USER38> I'm working with Rust as a backend right now and can echo the _Diesel_ experience. The issue is that there is not really much of a choice, it is either Diesel or not. So you have to stick with that. Another problem is that most OS projects in Rust are maintained by 1-2 persons who are not working on the project fulltime. That's not the case for JavaScript/Node as there are order of magnitudes more projects and people working in these platforms.

His last example could be improved a lot with the "?" keyword. That would remove lots of wrapping and simplify the code greatly. So it's not that bad really.

</comment><comment><USER39> I think as of today, if the server side of programming we are talking about is really web application, languages don't matter.

Pick one you are familiar with, the language the toolchain and the overall ecosystem, it should just work.

</comment><comment><USER40> I've built a few web services in Rust, and I've been incredibly pleased by the existing ecosystem as well as how easy it is to develop concurrent solutions for CPU-intensive tasks.

[https://vo.codes](https://vo.codes) is a text to speech service written in Rust and it performs really well. Any service failures are simply my poor proxy implementation - the core TTS service itself scales very predictably.

</comment><comment><USER41> Reading this I can't help but be lost trying to come up with _any_ alternative solution for this specific use case that is worse than what they describe?

A bunch of mostly static blogs can be hand-edited HTML, or some ancient perl script, or any of the existing static site generators.

If it absolutely _needs_ to involve server-side logic, it could be completely accomplished within a single call to ```rails init```, and the resulting project would incorporate a few $billion worth of collective experience commonly refered to as "best practice". It would be far easier to modify and far less likely to contain vulnerabilities. Performance would be worse by a factor of maybe x100, or "why are you asking these weird questions?" when converted to the real world, according to a representative survey of end users.

There's a good argument for replacing individual components on, say, the critical path for rendering people's twitter feed with lower-level implementations.

But it strikes me as unlikely that such endeavours would care about the ability of their ORM to quickly generate the migration scripts to drop or add some database columns.

So I can't quite see the benefit of cramming the rails model into Rust? Rails is spectacular in how it allows you to quickly iterate, adapt your data model, try some ideas, and so on. Those are qualities that just logically do not transfer to a world of static typing and manual memory management.

</comment><comment><USER42> Not the point of the article, so sorry about offtopic, but the workflow described in the first chapter feels a bit off. If they wanted dynamism, then writing a server is the way to go, but it seems that the easier fix to their problems as described there, would have been setting an automated CD pipeline that would build and deploy their blog every time you make a change.

</comment><comment><USER43> Why wouldn't you want a garbage collected language for developing web services? Developer time is at a premium, lots of RAM, likely a single environment managing multiple requests so the GC gets a global overview, and because of network variability you're unlikely to be doing anything with realtime constraints.

<comment><USER22> The point of the article is that surprisingly, lack of GC does not hurt developer time.

<comment><USER23> A simple web server barely needs GC - allocate anything and everything needed during a single request from the same pool, and free the pool once the request is handled. The lack of GC can hurt developer time for other kinds of work, where the lifetime of data structures are not scoped to "within a request".

</comment></comment></comment><comment><USER44> I started learning Rusit and using it for hobby projects in 2014, but I have to agree: for a full-blown product development it's just not there yet. Static typing your code up to the point where you can assume it's correct if it compiles and managing memory manually without the need for a garbage collector, these two things alone just light up my inner nerd with excitement. But as an engineer who has to deliver a product in time and in a maintainable shape (which means "hiring considerations"), I just can't excuse using Rust instead of NodeJS or Python. Web servers that work on request/response model are ideally suited for garbage collection, and just as OP says, they're IO bound, not CPU bound. All these wonderful things that Rust offers are just not that important in the real world.

But if I ever have to write a small (in terms of requirements and potential LOC, not load), atomic, CPU-bound microservice that will probably not require a lot of maintenance work, Rust will be my first choice.

<comment><USER45> I think Rust is past the hiring hurdle and you would probably get the opposite effect - I suspect you would get more higher quality applicants just looking for a chance to work with it. Seen a similar story with a team choosing RoR over Clojure years back.

<comment><USER44> Higher quality, but all seniors with salary expectations to match. Using a senior developer to maintain a couple of services is both a misuse of his salary and a good way to bore him to death.

</comment></comment></comment><comment><USER46> I find the title surprisingly annoying. What the heck is "surprisingly good"? As compared to what? (I know, I know; reading the article would've clarified). And what the fuck is a "server language"? The title made me want to not read the article just to come to know of yet another new developer come in contact with something they haven't used before and make obvious or irrelevant pronouncements like they discovered something new. Or maybe I am just growing old :-).

</comment><comment><USER47> To the author: "per say" should be "per se". Good article anyway.

</comment><comment><USER48> Is there anything like Rails for Rust?

<comment><USER49> I don't think any Rust web framework provides as much as Rails does, but you can see the current state of them here: [https://www.arewewebyet.org/topics/frameworks/](https://www.arewewebyet.org/topics/frameworks/)

</comment></comment><comment><USER50> what about server debugging ? python as an interpreted language have a real advantage here. you can easily patch on production for example to debug or hot fix. you would need to rebuild and upload binary in the case of rust.

<comment><USER27> I don't think I've ever seen anyone try live-patching a Python server. Modifying the code and _restarting_ the server, sure. Modifying Django templates and having the updates show immediately, sure.¹ But modifying the code and restarting the server is logically equivalent to modifying the Rust code, rebuilding it and restarting it. Any finer live-patching in Python is risky, largely only safe to do at defined boundaries. Modifying _code_ is a hazardous operation, because it depends on how things _use_ it. Patching module.function only helps places that import module and call module.function, for example, not places that use `from module import function`. So, simplifying drastically, you can mostly only really modify singletons, and singletons that have been _designed_ to be modified in this way.

In Rust, you can define such boundaries, and manipulate things like configuration when you've decided you want them to be modifiable, perhaps within a debugger, or more likely via some exposed API (maybe a web API).

To be sure, Rust _is_ less flexible: all such extension points must be designed in, rather than often working by accident (though the Python way is _very_ likely to blow up in your face from time to time).

But in the end I don't think it's such a big difference.

(On reflection, I suppose I _have_ seen a debugger used in the scope of a particular request within Django, to give you a pdb prompt instead of just the 500 error page. But that's then just used for inspecting what's broken, and _most_ such brokennesses would have been caught by the Rust compiler. Still, something equivalent to that could be nice to have in a Rust development web server; I don't believe any such thing exists at present, but it could in theory and might be interesting to make. It would still definitely be more limited than pdb. Maybe when we have a Miri-powered REPL something interesting will happen in this space. It's not a fundamentally impossible space.)

¹ If that works, by the way, you should set up the cached template loader, as it'll speed template rendering up a _lot_. That used to be something you'd have to do manually, but now the default template loaders configuration includes caching if debug is False.

</comment></comment><comment><USER51> You guys think Rust is good - you should check out Ada++ (you'll have to build GCC yourself though)

[http://www.adapplang.com](http://www.adapplang.com)

<comment><USER52> Does it provide the same/better safety guarantees as Rust? The website has extremely limited information about the language.

<comment><USER53> I can't confirm what is the motivation behind Ada++, but actual Ada2012 standard and in particular the Ada SPARK (2014) subset is in many ways objectively superior to Rust with regards to memory safety.

One major issue with Ada is that commercial grade compilers are not cheap and for the most part the language was unable to get rid of the stereotype of being an Aerospace/Defense language only.

Some discussion on the topic:

[https://www.quora.com/How-secure-is-Ada-the-programming- lang...](https://www.quora.com/How-secure-is-Ada-the-programming-language)?

[https://ada2012.org/comparison.html](https://ada2012.org/comparison.html)

[https://www.adacore.com/about-spark](https://www.adacore.com/about-spark)

<comment><USER54> Does Ada have a substructural type system [0]? If not, then it's not even in the same league as Rust.

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

<comment><USER53> From the Ada standard:

[https://en.wikibooks.org/wiki/Ada_Programming/Types/access](https://en.wikibooks.org/wiki/Ada_Programming/Types/access)

More importantly the previous discussion on Ada SPARK 2014 'safe pointers' may also be an interesting read for proponents of a Substructural Type System:

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

</comment></comment></comment></comment></comment><comment><USER55> I had a similar idea for my blog [1], with almost identical goals, but I wrote it in Go. Rust is on my to-learn list, but I find it harder to read from the code samples in the article and what I saw on other websites. I guess I will stick to Go for business logic. When would you guys chose Rust over something else, like Go?

[1] [https://marvinblum.de/blog/how-i-built-my-website-using- emvi...](https://marvinblum.de/blog/how-i-built-my-website-using-emvi-as-a- headless-cms-RGaqOqK18w)

<comment><USER56> Go comes with more tools to do what you want with stdlib. It'll be easier to do this with go than learning rust and the required dependency.

So that's one answer: forcing yourself to learn more about a languages environment and ecosystem.

Another answer might be: "I already know/prefer rust."

I'd be surprised if there were much/any performance benefit.

<comment><USER55> I thought about getting back into game development. Nothing fancy, just some 2D experiements. I haven't looked into Vulcan/OpenGL bindings for Go in a while, but I remember that it wasn't really recommended. Maybe I'll give Rust a shot one day to do that.</comment></comment></comment>


Why North Korea Fears 'The Interview' - <AUTHOR> http://www.bbc.com/culture/story/20141217-why-north-korea-fears-this-film

<comment><USER2> Sort it out BBC. British people (without VPNs) can't view this link.

"We're sorry but this site is not accessible from the UK as it is part of our international service and is not funded by the licence fee. It is run commercially by BBC Worldwide, a wholly-owned subsidiary of the BBC, the profits made from it go back to BBC programme-makers to help fund great new BBC programmes. You can find out more about BBC Worldwide and its digital activities at www.bbcworldwide.com."

<comment><USER3> Wow. That's just borderline pathetic. I'm guessing it has something to do with the law that governs them from advertising to people in the UK... they're not allowed to make money off you?

</comment></comment><comment><USER4> > Sony Entertainment has consequently decided to cancel the film's theatrical > release, originally scheduled for 25 December.

Not a single bone in your back Sony. I was actually really looking forward to seeing the movie.

<comment><USER5> The major movie theatres decided not to show it - they're the ones to blame here, not Sony.

What Sony needs to do now is just release it online. If they're really ballsy, for free on Youtube (with ads, maybe).

<comment><USER6> > Guardians of Peace, the group claiming responsibility for the Sony hack, > issued a sharp warning this week promising a "bitter fate" for viewers of > the movie and warning others "to keep yourself distant from the places at > that time."

> "The world will be full of fear," they said in an anonymous online posting. > "Remember the 11th of September 2001."

[http://www.washingtonpost.com/business/economy/top-movie- the...](http://www.washingtonpost.com/business/economy/top-movie-theater- chains-cancel-premiere-showings-of-the- interview/2014/12/17/dd1bdb2a-8608-11e4-9534-f79a23c40e6c_story.html)

I don't think it's fair to place blame either on Sony or the cinemas for this.

Obviously bowing to intimidation like this sets a dangerous precedent, but at the same time it would be absolutely terrible if these threats were ignored and something similar to the Aurora shootings happened as a result.

At a certain point you have to take a step back and acknowledge that it's just a dumb comedy movie - definitely not something worth potential loss of life.

Perhaps Sony should just "leak" the film.

<comment><USER7> First they came for the dumb comedy movies, and I did not speak out...</comment></comment></comment></comment>


The Setup: Brad Fitzpatrick - <AUTHOR> http://brad.fitzpatrick.usesthis.com/

<comment><USER2> I wonder if his garage RAID has drunken-girl-at-party protection now. (He had a party in ~2006 where a drunken friend (female, startup founder herself) started pulling drive trays out of the RAID because it made the lights blink more interestingly.)

Someone asked on LJ "where can I find someone who is an expert at both file system recovery and body disposal" -- Hans Reiser being the obvious answer. (<http://en.wikipedia.org/wiki/Hans_Reiser>)

<comment><USER3> So Ryan, when do we get to see _your_ usesthis.com interview? That'd be so much more interesting (to the average HNer) than some froofy font designer.

Context: <http://en.wikipedia.org/wiki/Ryan_Lackey>

<comment><USER4> Ryan does all his hacking on an offshore defense platform, obviously.

(What froofy font designer are you referring to?)

This reminds me, I should get to my usesthis interview. /lazy

<comment><USER3> I hear he's locked in a bank vault underneath NORAD inside Cheyenne Mountain.

You'd be another good hacker to spotlight. Maybe HN needs its own usesthis segments.

<comment><USER5> I think someone already had a go at doing that, but be my guest! The site's source is up on Github etc.</comment></comment></comment></comment></comment>


People Freak Out About Privacy On Facebook, But Ignore Government Surveillance - <AUTHOR> https://www.techdirt.com/articles/20121229/02225421522/people-freak-out-about-privacy-facebook-ignore-widespread-government-surveillance.shtml

<comment><USER2> This is hard for me to say as I'm pretty much the real world version of Dale Gribble, but being more worried about Facebook than the Government is a reasonable position.

The upside of government surveillance is that the government gains power by keeping your secrets secret, and when it comes down to it, the vast majority of people are simply uninteresting to the spooks and both parties know it. The odds of being extra-judicially executed for being a YouTube troll are nonzero, but statistically close enough that it's not worth worrying about unless you meet a very narrow profile.

Facebook, on the other hand, seems to have as a primary business model finding out everything about everyone, _and then telling everyone else_. It's this latter part that people worry about. They don't want their life broadcast to every potential employer, client, lender, local xenophobe, landlord, insurance company, lover, violent ex-lover, nosy neighbor, obsessive stalker etc. that they deal with in their life. The odds there are a lot more grim--You're about 1000 times more likely to be killed by your ex or soon to be ex than the President.

<comment><USER3> Only a 1000x difference?

<comment><USER2> It's a back of the envelope estimate: the US has about a 10,000/year murder rate, about half of those are in the family. The targeted killings program doesn't exactly advertise but it's known to be well more than one so I'm guessing it's in the tens per year of people who could be described as westerners. YMMV.

<comment><USER4> Where on earth do you get the idea that the drone strikes are killing a non- zero number of westerners?!

<comment><USER5> Where on earth do you get the idea that he was talking about drone strikes?!

<comment><USER4> What other "targeted killing" program is there?

<comment><USER6> Well, the US government has said that it doesn't have to tell you that because it's a national security matter.

However the existence of at least one government associated plan to kill US Citizens on US territory was surfaced in the media last week [http://news.firedoglake.com/2012/12/31/fbi-report- mentions-p...](http://news.firedoglake.com/2012/12/31/fbi-report-mentions- plot-to-kill-occupy-protesters/)

And while I cannot provide evidence that there have been others; it is a fact that the US government has been training death squads at Fort Benning and elsewhere for more than 40 years (vide: Guatemala, Nicaragua, Paraguay and many other countries whose paramilitary/police were trained by the US and went on targeted campaigns of killing civilians); although most of the openly acknowledged trainees were not US citizens, but Police and Military from client governments, mostly in South and Central America. [http://en.wikipedia.org/wiki/Western_Hemisphere_Institute_fo...](http://en.wikipedia.org/wiki/Western_Hemisphere_Institute_for_Security_Cooperation)

And given that Obama's Attorney General Eric Holder is on the record as saying """ "Due process" and "judicial process" are not one and the same, particularly when it comes to national security. """

It's not impossible that everyone who reads this thread is being assessed for their suitability to be judged a "threat to national security" and thus worth the cost of elimination.

<comment><USER4> You speak of a "government associated" plan, but the very article you link to says: "It remains unclear as to who or what this report is referring to, yet the FBI decided to disclose it under the Freedom of Information Act (FOIA) to the Partnership For Civil Justice Fund – the document is on page 61." You think the FBI is giving out information about government projects to kill U.S. citizens on U.S. soil via FOIA documents?

As for the quote "due process and judicial process are not one and the same," it's a completely accurate and uncontroversial statement of the law. The phrase "due process" means exactly what it sounds like. People are entitled to the "process" that is "due" given the context. The process due is not necessarily judicial process, and in many contexts might be much less than that.

<comment><USER6> Most crimes committed by US government officials in the course of carrying out their duties are documented in some way by the government. Those documents are subject to disclosure under FOIA; indeed that is the purpose of the FOIA.

That the FBI knew of a plot to murder American citizens and did nothing to warn the potential targets of such a plot; and furthermore since no one has, so far as we know been indicted, fired, reprimanded or otherwise held accountable for what is on the face of it a very serious crime... the obvious implication is that it was either some element of the government itself, or one of those monstrous public/private partnerships (like Xi/Blackwater/Triple Canopy/etc.) that is a "deniable violence provider" in the current global security context.

Now we can argue forever in the absence of further facts; but given the evidence we do have, it certainly suggests that we are looking at the very least, at a contingency plan to kill American Citizens on American Soil, for nothing more than exercising their rights under the 1st amendment.

The common understanding of Due Process as mentioned in the Bill of Rights specifically refers to the "due process of law"; and as such, the government deciding to kill American Citizens would seem to require a capital trial. In a court of law, before a judge with the usual 5th amendment rights to know the charges against one, and to hear and challenge the evidence on which the determination of their fate will be made; that is clearly not happening here.

We are clearly not living in the moral universe that we're taught about in civics class anymore. And while it's always been the case that some people "become cops to break heads", what we are seeing evidence of in the last few years is the emergence of an elite consensus that state violence of lethal intensity could be legitimately employed against unarmed civilians domestically as easily and as casually as it's deployed in Afghanistan or Iraq.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> This is a false dichotomy. Plenty of people ignore privacy issues on Facebook, and there are plenty of "silly and exaggerated stories" about government surveillance that get people freaking out.

</comment><comment><USER8> This reminds me of the time that Facebook rounded up all of the Japanese- Americans and put them in internment camps.

<comment><USER9> My internment camp is named the Seattle, Washington Area network. There is snow falling on the cedars here.

</comment></comment><comment><USER9> Really? <http://news.ycombinator.com/item?id=4982462>

You're submitting the same story twice?

</comment><comment><USER10> Privacy is what is going to define this generation.

However, no matter what you think, Government Surveillance is better than private surveillance. It's a democracy for crying out loud.

But the preamble, is that the breach of privacy is bad in any use case scenario. Realistically however, surveillance is always going to exist. Either covertly or legally. Nothing much can be done.

<comment><USER11> _However, no matter what you think, Government Surveillance is better than private surveillance. It's a democracy for crying out loud._

There are two types of power within a group: exit and voice. The power to change a community, and the power to leave it.

I am not at all confident in the power of my voice to affect the policies of the US government on surveillance/privacy issues. In fact, although my voice has almost no impact on Facebook's policies on privacy, I'd say that I'm almost as likely to influence Facebook's privacy policies by complaining as to influence US Government policies by voting.

Meanwhile, leaving the US is impractical or difficult, and even (especially!) non-US-citizens are subject to the US government's intrusions on privacy, surveillance, as well as the possibility of being killed or abducted without trial. Opting out of Facebook is relatively easy.

</comment></comment><comment><USER12> Some reasons:

\- The government is accountable to the people, but who is Facebook accountable to? Shareholders.

\- Government surveillance has at least some oversight, with a long history of regulation.

\- Allowing government spooks to note your alcoholism is less worrysome, to most, than having drunk pics appear on the public Internet, for mom+boss to see.

<comment><USER13> Government is accountable to "the people"? That's just a platitude. The government is beholden to many special interests. The bailouts, the wars--home & abroad--, the TSA, etc. are all egregious examples.

Facebook is accountable to shareholders, true, but no one is holding you hostage, making you share information on Facebook. You could change your privacy settings, go to another social network(s), or stop sharing altogether.

</comment></comment><comment><USER14> Facebook has a profit motive and are answerable only to their own management and shareholders.

If their board decided they could increase profit by x% by deleting all privacy controls tomorrow then all privacy controls could be removed tomorrow.

In theory at least a democratic government has no particular interest in sharing your data with anybody apart from maybe a few intelligence and law enforcement officials who want to check that you're not actually trying to kill anyone. They also have to vote on any major legislation changes, enough unfavourable bills and they risk getting thrown out at the next election.

<comment><USER13> If Facebook removed all privacy controls, people would leave the social network in droves, and FB would be forced change their policy. Consumers are fickle, and FB is not an unstoppable juggernaut; I'm not sure why people have this idea.

</comment></comment><comment><USER15> Facebook IS Government Surveillance.

</comment><comment><USER16> I think the reason for this is quite simple:

Facebook can only sell you on privacy changes by trying to convince you of a better service/more convenience.

The U.S. Intelligence Community and Congress can sell you on surveillance by trying to convince you that such measures are essential in preventing American deaths.

It isn't that people don't care the government is spying on us, it is that the government has a much more compelling argument to do so.

</comment><comment><USER17> The kicker is that the government is using Facebook to surveil you.</comment>


Ask HN: Recommend a good antivirus for Windows - <AUTHOR>

I've used Nortons, AVG and more recently Avast in the past. Each antivirus seems to work well for a year or two and then gets compromised.<p>Do you have an antivirus recommendation for a Windows machine that has worked well for a number of years? <comment><USER2> I only trust Windows Defender from Microsoft. 1 - They know the internals of their own system. 2 - They have strong interest in keeping your OS running well. 3 - it is free.

</comment><comment><USER3> Avira always seems to be at the top of the charts on [http://www.av- comparatives.org/](http://www.av-comparatives.org/). I have used it for years without issue.

</comment><comment><USER4> You could create a "Standard" account for your day-to-day. Then no need for virus protection. ^_^ To install software, you'll have an extra step of typing in the admin user name and password. Nice.

</comment><comment><USER5> Just use Windows Defender. It's built in. You're already done.

<comment><AUTHOR> I believe Windows Defender only protects you against malware. You need a separate anti-virus solution along with it.

<comment><USER2> That is wrong, they are the same thing.

<comment><AUTHOR> Interesting - Windows Defender is an antivirus product for Windows 8+. However, for Windows 7 and older, it is only an anti-malware product.

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

<comment><USER6> What's the difference between the two? Wouldn't all viruses be considered malware? Is there some standard that the software has to live up to to be labeled antivirus?

<comment><USER7> Viruses infect executable files (or other files that can potentially contain executable code) while non-virus malware infects machines, browsers, or other types of "hosts".

</comment></comment></comment></comment></comment></comment><comment><USER8> Avast free, but NOT for the antivirus. It has a really convenient software updating utility which will make you far more secure than any antivirus feature ever could.

</comment><comment><USER9> Nearly every piece of malware I see rates 0/51 on virustotal. I would recommend picking one of those that has a high detection ratio, but you see...

<comment><USER7> Some of those with high detection ratios either (a) use excessive heuristics or (b) detect things that could be considered "riskware" or a "hacker tool", even if the software runs in the foreground and does not cause any problems for the user. Then again, if you never use "hacker tools", then it may not matter much to you.

</comment></comment><comment><USER10> Try ESET Smart Security, they have a 30 days free trial period.

</comment><comment><USER11> Use Mac OSX

</comment><comment><USER12> After I stopped using Windows I've revisited my definition of "works well". Not trying to troll or bash Microsoft here and perhaps you have strong reasons to stay on it, but sometimes people try to treat symptom not the problem.

<comment><USER7> Could it be that the "problem" in this case is that Windows has been so popular over such a long period? The popularity not only makes it a desirable target for malware but also makes it a desirable platform for cookie-cutter anti-malware programs, many of which are not worth the bits they are printed on. Another part of the problem is that many people are still running old versions of Windows (some even before User Account Control was implemented), which Microsoft is clearly trying to resolve here with the gratis Windows 10 upgrades.</comment></comment>


Building a Donut Chart - <AUTHOR> https://css-tricks.com/building-a-donut-chart-with-vue-and-svg/ <comment><USER2> IMO, the proper answer is "don't".

Pie charts and donut charts have been proven to be misleading and inaccurate.</comment>


China's Planning to Partially Lift Web Censorship in Hainan - <AUTHOR> https://china-underground.com/2018/07/02/chinas-hainan-censorship/ <comment><USER2> The article says the lift is only for foreign visitors, and because they plan to turn those parts of Hainan into free-trade zones. Could this be a trial for rolling out the same thing in other places (i.e. SEZs) where foreigners concentrate? Then they could get the benefits of domestic censorship _without_ foreigners loudly posting about how they can't reach Facebook for the next 2 months, and making China look bad.

<comment><USER3> It's probably not so much about not looking bad and more about enabling productivity. I'm sure they are getting pushback from many companies which interact with foreign nationals whose work is affected by the GFoC.

<comment><USER4> I visit China every couple of years. I used to work remotely while I was there, but these days I've given up on the idea. It used to be easy, just ssh tunnel to a friendly server and you're all set. Now they block every technique I can come up with and fuck up the entire connection if you make a wrong move. There are specialist VPN services that still work, but it's a real pain to figure out which ones work and which ones used to work and are now broken, and you can't count on anything _continuing_ to work.

<comment><USER5> Yeah, one other thing that works is to use a foreign wireless connection (of course it is carried by ChinaTelecom etc) like AT&T or BT. I've rarely seen those connections blocked, even when hotel/local wired connections and the company VPN were all... "slowing down" for certain sites.

I haven't been to Hainan though so I don't know about any particular issues there.

<comment><USER6> I know they block roaming sims from certain countries after few month in the country

</comment></comment></comment></comment></comment><comment><USER7> They already retracted that plan, e.g. see [https://www.theepochtimes.com/chinas-hainan-quickly- backtrac...](https://www.theepochtimes.com/chinas-hainan-quickly-backtracks- from-plan-to-offer-censorship-free-internet-for-foreign-tourists_2572946.html)

</comment><comment><USER8> China is earmarked Hainan for development as the Chinese Hawaii. Lifting sanctions on Internet access for tourism is a relevant step in that direction. Have a look at President Xi's remarks during the Boao Summit 2018 in Hainan. This will become a very interesting area to watch...

</comment><comment><USER9> Many high end hotels in Guangzhou already provide internet outside of the GFW. I'm not sure if this is officially sanctioned or not, but it was definitely surprising to me.

Most big tech companies already provide internet outside of the GFW. Microsoft China did st least, I'm sure most others did as well.

<comment><USER6> Some detail on this:

China telecom (communist one, not one from Taiwan) provides "private fibre," to HK. Famously, they claim it to be a physical connection, but if you try loading anything blocked by GFW it will still be blocked. And you can't use anything other ethernet/IP or MPLS/IP on it.

Once we were buying private fibre for our office, we asked a technician the "WTF" question. He plainly asked if we want VPN, then he said that you first have to buy private fibre, then run your own VPN over it.

I believe, all big Cos have it that way. I once visited Microsoft's campus for an event. I noticed that "what is my ip" in google.com shows an IP of a noname Hongkong datacentre rental company.

<comment><USER9> It should have shown you being in Singapore. At least, when I was working there (st the Beijing office), we were directly wired up to Singapore.

</comment></comment></comment><comment><USER10> What are they even censoring these days? They have 1st world devices and goods, they have a fairly large middle class that is growing fast and a large investor class, are enough people really drinking the kool-aid there and not really know/believe about things like financial manipulations and whatnot?

</comment><comment><USER11> Hugged to death? Anyone have a mirror?

<comment><USER12> [http://webcache.googleusercontent.com/search?q=cache:https:/...](http://webcache.googleusercontent.com/search?q=cache:https://china- underground.com/2018/07/02/chinas-hainan-censorship/)

</comment></comment><comment><USER13> Can't access the site either.. would be very interesting if China partially reverses their firewall policies, would not be too surprising because they will surely want to maintain their growth rate, even in the case of an escalating trade war.</comment>


HTML5: Access Battery status through javascript - <AUTHOR> http://www.smartjava.org/content/html5-access-battery-status-through-javascript <comment><USER2> I haven't tested it, but the post claims that this works on iOS, and I've never seen a preference option to disable this.

Someone clever could use this misfeature (what amounts to a data leak) to perform a sort of traffic analysis attack and infer data about your sleeping/working/browsing schedule, and then potentially interpolate travel patterns, business associations, and maybe even correlate to a precise (historical) physical location.

The security implications here are vast (and not immediately obvious), and there is a vanishingly small practical use case for this.

Why does this exist?

"can" != "should", for fuck's sake.

<comment><USER3> Why would a user leave the web page open through their sleeping working browsing schedule? Why would a dev use battery status to interpolate travel patterns instead of, say, the location API or your geo IP?

Given the other things available to a dev wanting to know about a user's behavior, battery status is a strange one to rant about.

> _The security implications are vast._

No they're not. Battery status has been available to every app on your laptop for years without a problem. Web pages are ad hoc apps. If you're concerned, don't install the app, and use NoScript with a whitelist for browsing.

<comment><USER4> The problem with web apps though is that they aren't really local to your computer. We have all kinds of sandboxes to prevent, say, a web page from opening up a connection to talk to your PCI cards.

I wouldn't say that this is the same as giving battery status to every app on your laptop. A closer example might be smart phones. But there's a presumption that if software is running on your laptop or smartphone you have at least some idea of what it is and what it can do. In practice not so much and such apps could misuse this data along with others.

</comment></comment></comment><comment><USER5> It looks like the work that Mozilla are putting in to allow all the functionality needed for applications to be accessible through the browser is going well.

Worked perfectly on my laptop, in Firefox 13.

</comment><comment><USER6> And at least one more bit for browser tracking...

</comment><comment><USER7> Now I finally know what the four icons in jQuery UI that shows battery levels can be used for. :-)

</comment><comment><USER8> Not working for me on iPad. Cool hack though as some people are having luck.

</comment><comment><USER9> Using Firefox 16.0a1 (2012-06-07) on OS X it's telling me my battery is at 100% and charging, while it's at 95% and not charging.

<comment><USER10> From the article "And it doesn't work yet on Mac (does work on iOS, Android and windows)."

<comment><USER11> Didn't work for me on Android 4.0.3 in either Chrome or the Android browser

<comment><USER12> I suspect it might only be in the Firefox beta stream? (In which case, I'm surprised to see the OP mention iOS).</comment></comment></comment></comment>


Ask HN: What's your favorite business TV show? - <AUTHOR>

I love watching TV shows, but more importantly I love watching business-related TV shows, such as Shark Tank, Hardcore Pawn, and Undercover Boss.
I'm just looking at if their are any other American TV shows that I haven't quite heard about yet.
Please post your shows in the comments below! <comment><USER2> Shark Tank is American remake of Dragon's Den.

I highly recommend BBC version ( <http://www.bbc.co.uk/dragonsden/> ) as it deals quite a bit with valuation and is more serious. After success of BBC Dragons Den there have been few BBC offshots: Dragons Den Online (shorter pitches); Dragons Den - What happened later (recap of pitches and where entrepreneurs are year later); Dragons Den Around the world (recap of how other tv stations do Dragons Den). Less than half of the pitches get any traction.

After watching the UK I found Canadian edition (available to watch at cbc.ca) a bit over the top. The valuation and money exchanged were much higher. The cool think in Canadian edition is Bret, who is either a VC or philanthropist depending on his mood. CBC also produced couple episodes showing how dragons grew to the riches that they have now. What were their roots, and where did they start. Less than half of the pitches get any traction.

Shark Tank in comparison is crazy as it tries to show: American Dream can be made with a little help of Seed money. Most pitches are good, no fumbles, no crazy valuations, no crazy people. As if 75% to 100% of pitches were made to deals.

I can't say much on Irish or Australian Dragon's Den, those are quite tricky to find. I saw parts of Australian Dragon's Den on a special BBC edition of Dragon's Den around the world.

Being of Slavic origins I tried watching the Czech edition (called 'd den' <http://www.ceskatelevize.cz/program/dend> click videoarchive) but found business terms tricker to grasp. The new season comes with subtitles so I will renew an attempt to watch it.

Poland started doing own dragons den this spring. There are clips of it on youtube as part of original marketing. From what I read, the show was a hit, and they want another season within next 6 months.

</comment><comment><USER3> Get a hold of Dragson Den... the Canadian versions (CBC) is the best in my opinion (I'm biased) but the UK (BBC) version is solid as well.

It blows shark tank out of the water, much more business stuff then sappy stories.

It also features Kevin & Robert from shark tank (who were/are originally dragons before sharks)

<comment><AUTHOR> Yeah I like Dragons Den, but it doesn't air in the states, I wish it did, but unfortunately it does not.

We only have Shark tank here.

</comment></comment><comment><USER4> It's gotten a bit formulaic and the long term results have been mediocre but "Kitchen Nightmares" is a good watch and has some lessons applicable outside the restaurant industry.

</comment><comment><USER5> Hardcore Pawn is the ripoff of Pawn Stars, which is quite good.

You would definitely like Pitchmen.

</comment><comment><USER6> How about Dirty Jobs? It covers so many niches.

<comment><AUTHOR> Hmm... What channel is it on? Sounds interesting, what is it about?

</comment></comment><comment><USER7> there was a show called startup junkies, its available on hulu. It was just a single season, but pretty good overall.

<comment><AUTHOR> Thanks! Will look that up, sounds interesting. Any more?

</comment></comment><comment><AUTHOR> Any other great shows?</comment>


Protecting GDPR Personal Data with Pseudonymization - <AUTHOR> https://www.elastic.co/blog/gdpr-personal-data-pseudonymization-part-1 <comment><USER2> > Because it contains no data that can directly identify an individual, > pseudonymous data may represent a lower risk of privacy impact in the event > of an unintended disclosure..

This is playing with fire when it comes to GDPR. 'PII' for GDPR is interpreted much more broadly, and includes any information that could feasibly be used to identify an individual (even IP addresses!). Swapping out the names alone probably wouldn't cover you, and anyway isn't in the spirit of the legislation, which is to give customers more control over their data [1].

While no doubt this would be a boon to AdTech brands that by and large don't care about the name of a customer, but very much want to be able to sync data without customer consent, this seems a little too cute.

[https://www.gigya.com/blog/gdpr-difference-between- personal-...](https://www.gigya.com/blog/gdpr-difference-between-personal- data-and-personally-identifiable-information/)

<comment><USER3> This concept is specifically mentioned in the law text.

[https://gdpr-info.eu/art-6-gdpr/](https://gdpr-info.eu/art-6-gdpr/)

> the existence of appropriate safeguards, which may include encryption or > pseudonymisation.

<comment><USER2> You can see from the law text that the definition of personal data is much wider than is traditionally applied in the US.

> Art 4.1 - 'Personal data' means any information relating to an identified or > identifiable natural person ('data subject'); an identifiable natural person > is one who can be identified, directly or indirectly, in particular by > reference to an identifier such as a name, an identification number, > location data, an online identifier or to one or more factors specific to > the physical, physiological, genetic, mental, economic, cultural or social > identity of that natural person. [1]

Pseudonymization _may_ provide a get-out if the subject of the processing is not identifiable by any of those other means, but it is by no means sufficient on its own.

[1] [https://gdpr-info.eu/art-4-gdpr/](https://gdpr-info.eu/art-4-gdpr/)

<comment><USER3> I agree, it _may_ protect you. Consult your lawyer.

Or, in my companies case, just build out the tools to let people delete all of the data we don't absolutely need.

</comment></comment></comment></comment><comment><USER4> I am curious about the long-term ramifications of this law. How much work will be required to delete users from backups?

<comment><USER5> This article [1] explains an important distinction between backups and archives.

"Backups exist in case information is accidentally destroyed. Backups should cover all information, but each one only needs to be kept for a short time: essentially however long it will take the organisation to discover the destruction. … Archives, by contrast, involve long-term storage of the organisation's history."

It concludes that it's probably not necessary to delete data from a backup — just keep a record of what requests for deletion were made, in the rare event that restoration from a backup is necessary.

And avoid storing personal data in archives, or else split it out by-person, so it can be deleted if required.

[1] [https://community.jisc.ac.uk/blogs/regulatory- developments/a...](https://community.jisc.ac.uk/blogs/regulatory- developments/article/gdpr-backups-archives-and-right-erasure)

<comment><USER4> I'm not a lawyer, but that seems like it is open to too much interpretation. I feel like these laws only hurt the little guy. I can't even imagine all of that data that companies pass through third parties, like analytics services. It will be interesting to see how it all shakes out.

Fortunately, I don't have to do deal with it any time soon since I don't do currently do business in the EU.

<comment><USER6> Small nimble companies will have a (relatively) easy time supporting GDPR. I work at a small european tech company with lots of personal information.

Sure, there is some hassle but we'll be able to adjust with a few weeks of work. Larger companies with more legacy stuff will have a harder time.

Also, the law is easy to read and quite sensible. Plus it's great for consumers!

<comment><USER7> Larger companies are much more used to dealing with regulatory requirements.

They have huge legal teams and can hedge their risk and they have a relationship with the regulators.

Legacy software is actually a huge plus for the GDPR currently people might laugh at companies that run MSSQL or Oracle but all the major storage and backup solution vendors support record level backups for the database which means that it's easy to purge or anonymise a purged record, it also means that dealing with backups is now a turnkey solution from the likes of EMC.

A small company that run on flavor of the week DB and uses tarsnap for backup might have a much harder time figuring what is what.

Heck there are plenty of small companies that have an IT team of like 2-3 people that handle personal data for 100,000s of people and it might not even know where all of it's backups are.

"How sure you are that that seagate drive in the back of the closet doesn't have a copy of your database form 2 years ago?"

And most importantly small companies don't have the resources nor the knowledge on how to handle information requests under the GDPR.

I laughed about the idea of having launching handling the information requests as a service platform if I was crazy enough to come up with a way to actually make it work under the GDPR.

When I think of the GDPR what I see is potentially a lot of companies getting screwed over because they don't know any better as regulation of this extent usually only involved giants.

Say you are a company of 15-20 people you get a letter like this: [https://www.linkedin.com/pulse/nightmare-letter-subject- acce...](https://www.linkedin.com/pulse/nightmare-letter-subject-access- request-under-gdpr-karbaliotis/) What are you going to do? Do you have a data protection and a privacy officer? probably not.. so now it's another hat that some one in your company needs to wear and I really pity the person who'll take this level of legal responsibility on themselves without having the right background, training support and more importantly time.

While this letter might not be pleasant such a letter would be a breeze to many large companies I work for a US financial institution (based in the UK).

This isn't any different than some letters we might get from a regulator or a customer/partner and there is essentially a production line overseen by both inhouse and external legal counsel.

There is a CIO and there privacy officers and compliance officers and champions in each department / team the entire process is essentially automated in an internal ticketing system which will go through a pre-defined workflow and invoke the right people and automated resources (e.g. data discovery), heck for like 90% of those questions we would have premade answers which were signed off by compliance and legal that are maintained upto date.

If you work for a small company and you don't have all these processes set up, you don't have legal counsel I really feel bad for you this isn't something that you can just wing it.

These large legacy companies were working on their GDPR compliance for years any company with a risk department with a pulse would've kicked of a steering committee / SWAT team in March of 2014 as soon as the initial draft was passed and kicked into full gear in 2016 when the final version was approved if not earlier.

I'm willing to bet you that there is a non-negligible number of small companies that didn't do anything as of april 2018 and many more that their GDPR preparation was having a few dev/devops folks sit through a webinar.

I'm really hoping that neither the former or the latter is the case for you but in case your statement _" Sure, there is some hassle but we'll be able to adjust with a few weeks of work."_ wasn't in tongue and cheek you have less than 50 days to prepare as the GDPR comes into effect on the 25th of May.

<comment><USER8> > If you work for a small company and you don't have all these processes set > up, you don't have legal counsel I really feel bad for you this isn't > something that you can just wing it.

But that is exactly the point. If a smaller company does not have the resources (both costs and competence) for something like this, then they should not be handling personal data at all. How would the same excuse sound if they don't have the resource to even secure personal data? Being too small is simply not a valid excuse.

</comment></comment></comment></comment></comment></comment><comment><USER9> > "using a fingerprinting technique where we replace the value of identifier > fields with a hashed representation"

I don't see any mention on tokenization: "Tokenization, when applied to data security, is the process of substituting a sensitive data element with a non- sensitive equivalent" [1]

[1]: [https://en.wikipedia.org/wiki/Tokenization_(data_security)](https://en.wikipedia.org/wiki/Tokenization_\(data_security\))

I know of banks that have been using tokenization for at least a decade, and they are problem free (unless someone manages to break through all barriers and get to the vault).

I don't think this "solves" GDPR, it merely reduces the attack surface by keeping fewer DWHs (exposed).

</comment><comment><USER10> > pseudonymous data may represent a lower risk of privacy impact in the event > of an unintended disclosure, so according to GDPR

Worried about the "may" part. So does it represent a lower risk or not. In other words you can still go through the motions and in the case of a breach it turns out the "may" part you were hoping for was actually a "no".

<comment><USER11> If you can better anonyminize the data. If you can't send pseudonymous data to third party where only you can depseudonyse it.</comment></comment>


Masses Move Markets: Crypto flow to exchanges correlates with price - <AUTHOR> https://research.tokenanalyst.io/masses-move-markets/ <comment><USER2> where can i get the underlying data? have you found a buy signal?

<comment><AUTHOR> The data is from tokenanalyst.io

We have found a strong correlation between exchange flows and the price. We will examine whether this correlation can be used as a signal for trading strategies. We will keep you updated at research.tokenanalyst.io</comment></comment>


See what Facebook mines out of your photos and what they might do with it - <AUTHOR> https://medium.com/@heyfebin/see-what-facebook-mines-out-of-your-photos-and-what-they-might-do-with-it-79257ac4e832#.3sdfd3g28 <comment><USER2> I believe this has to do with accessibility [https://code.facebook.com/posts/457605107772545/under-the- ho...](https://code.facebook.com/posts/457605107772545/under-the-hood- building-accessibility-tools-for-the-visually-impaired-on-facebook/)

</comment><comment><USER3> A browser add-on could show these descriptions.</comment>


When to Use Swift Structs and Classes - <AUTHOR> https://www.mikeash.com/pyblog/friday-qa-2015-07-17-when-to-use-swift-structs-and-classes.html

<comment><USER2> [http://faq.sealedabstract.com/structs_or_classes/](http://faq.sealedabstract.com/structs_or_classes/)

This is a better explanation, I think. The structs for values and classes for references idea is a bit shortsighted and doesn't really cover all use cases.

<comment><USER3> I believe this article today is actually a response of sorts to that one, judging by mikeash's comments from when it was posted here 2 weeks ago:

[https://news.ycombinator.com/item?id=9830646](https://news.ycombinator.com/item?id=9830646)</comment></comment>


Ask HN: Extracting the Twitter Social Graph - <AUTHOR>

I have an idea for a webapp, but I would need a local copy of the Twitter social graph to make it. Any suggestions on the easiest method of getting it?
Originally, I thought of creating an app, or using 80legs, to crawl Twitter's social graph API. But even if I were whitelisted (which allows 20,000 requests per hour) it would take months to finish. So instead I was hoping someone has made a CSV or database dump of a copy of the Twitter social graph, but I haven't found anything online. Is anyone aware if such a thing exists?
Surely someone else has had this same need. How did they go about doing this? <comment><USER2> We'd love to talk with you about what you're building, our scrape is the most complete outside of Twitter that we know of.

[http://blog.infochimps.org/2008/12/29/massive-scrape-of- twit...](http://blog.infochimps.org/2008/12/29/massive-scrape-of-twitters- friend-graph/) It has since grown to 40M users.

firstname.lastname@example.com

</comment><comment><USER3> Hmmm. I don't have it. If you don't find it, get whatever sample of the graph you can now. If you can get people excited about the idea you can make it happen.

</comment><comment><USER4> Check out Infochimps - they have a big Twitter data dump.</comment>


Ask HN: What are your biggest frustrations with Linux development? - <AUTHOR> For those of you who develop using Linux, what are your biggest frustrations?<p>Builds? CI? Testing? Lack of good IDEs? Lack of visualization? Dev tools? Refactoring? What are your challenges? (and of course what environment are you using and how does that affect it?) <comment><USER2> I have to say I'm pretty satisfied, even more than I was before when I was using Windows.

Everything seems easier to install and I don't need gigabytes of space to build my environment. (Visual Studio, I'm talking about you!) Working with Git and gcc was as easy as it can get right at the beginning of my switch. Back in Windows days, I was primarily using Dev-C++ and a GitHub desktop client (which I really don't like btw). Now, I'm just using Atom with a couple of third party extensions.

Although I have to say that I kind of miss the easiness of building desktop applications using Visual Studio. I haven't found a single IDE that allows me to create forms with just a few clicks like Visual Studio does. I stopped paying attention to GUIs for my programs primarily because of that.

<comment><USER3> If you are willing to do Qt/C++, QtCreator can easily create forms, the same way as VS.

<comment><USER4> I have to mention it's not as straight forward last I tried it, but it's still usable. My lack of C++ understanding has kept me from really getting into Qt / C++ though.

</comment></comment></comment><comment><USER5> Lack of good hardware/laptops.

I had a Lenovo X200s for over 4 years and finding a viable replacement is almost impossible.

I am saddened by the fact that there are no i7 / 16GB / highDPI with decent keyboard at the price of a 2015 Retina MBP.

<comment><USER6> Try a 2015 Dell XPS 13. Fits all your specs, also has a developer edition with Ubuntu already installed.

<comment><USER7> Developer edition is not out yet... I thought. I got one a couple months ago and run Arch on it. Support for the microphone hasn't made it into a kernel release yet, so I thought they were waiting for that to release the developer edition.

Also, it only supports 8 gigs max right now. I'm sure a 16g single dimm will come out eventually, so you could upgrade it yourself.

<comment><USER8> I believe the RAM is soldered on, upgrades may not be very feasible.

<comment><USER7> Oh no... you're right. I guess I'll just convince myself that 8GB is TOTALLY enough :-(

</comment></comment></comment></comment></comment><comment><USER9> I love working on Linux, running Ubuntu 14.04 LTS on a Lenovo S540 (lightweight, 16gb ram,i7,ssd). The biggest pain point for me are mainly using tools that other parts of the business want to use like:

Slack -> No Linux support, Zoom (video conferencing) -> Early beta support, 1Password -> I use last pass instead.

Macs have really dominated some areas of the tech scene especially in the non engineering sections of the business, thus collaboration tools and such seem to be Mac orientated or Mac only.

In every other respect I'm far more comfortable and productive on Linux.

<comment><USER10> But slack do have Linux "support". You can just use the IRC gateway through any Linux clients, or look up a project like slk, [https://github.com/drikin/slk](https://github.com/drikin/slk)

There are also projects that wrap around 1Password. [http://www.lucianofiandesio.com/1password-in- linux](http://www.lucianofiandesio.com/1password-in-linux)

It's far from perfect. But the great thing with Linux in my opinion is that there are always alternatives.

<comment><USER9> Oh yeah, my only minor grumblings against it are lack of one or two clients, I think with Slack's case I'd like to see them make an official client, with $160m in funding I'm sure there is leeway to get an official linux client in the works. Thanks for the slk link, gonna check it out! :)

</comment></comment></comment><comment><USER11> What I think really lack in Linux is:

\- Good hardware that is nice to use (look beautiful) and works well with Linux.

\- A great IDE that doesn't look like shit right out of the box. I know many can be configured and tampered with, but I simply do not enjoy that enough to go through the pain.

Otherwise, my biggest pain and why I definately go back to Windows is that I can't play my games on my machine. Many games still only work on Windows or works much better on Windows due to bad graphics drivers.

I really like Linux, I always use it as a server or to host stuff. But in the later years of my life I simply get too frustrated (often with small stuff) to keep using Linux as my main desktop operating system.

At work I use a macbook because it has nice to use hardware with desktop software that is more polished than any linux distro but still keep the unix feel.

<comment><USER12> I think the trick is to cherry-pick laptops. There's only a handful of decent laptops in the market that run Linux very well (drivers in kernel, perfect powersaving, ACPI events from battery, etc).

My MacBook Air 11 inch 2012 (formerly used by Linus) is pretty good. So were some Lenovos like x220. These days Chromebook Pixel or Dell XPS hold some promise. Also cheap Chromebooks like some Acer and some Asus. I have my eyes on cheap ARM machines for their capability to run blobless (e.g. Asus C201).

<comment><USER13> The keyboard is missing keys (like delete) and there is no button on the mouse. Small things but pretty annoying if you are used to clicking the middle button for pasting. And the battery seems to last about half of the time compared to OSX

<comment><USER12> I get an _extra_ 10-20 min in Linux vs OS X thanks to powertop tweaks implemented via udev rules and a minimal desktop with a tiling WM and no desktop environment.

But I agree on the annoying omissions. I hate no dedicated insert, although shift + backspace works well.

</comment></comment></comment></comment><comment><USER14> The debugging workflow is a mess.

The visual studio debugger is great. gdb and various front ends for it are all various levels of not so great. There is a better featureset in gdb for the very skilled users to do tricky things, but it's still a bear to learn and get conformable with.

Putting the .build-id directory on the network and getting subsitute-path pointing at the right location to debug a continuous integration build from 16 months ago? The hardest part is happening to learn those features exist, and the legwork to make it quick and easy to use is PITA too.

Some developers... they just want to open the visual studio debugger and smash "step over/into" until their code works. This isn't the best approach to development and they should probably do a bit more "sit and think about the code" in their development. But professionally I have to support this workflow, it's much smoother in VS than when targeting linux. And it's not an excuse for bad debugging tools either, sometimes you do need to spend a day in the debugger to solve things.

</comment><comment><USER15> Development tools on linux continue to be great. A visual studio quality ide would be nice, but realistically I'd continue to use vim and the terminal.

What really irks me is the desktop environment situation. I haven't had a linux install in a couple of years and it seems that all of the desktops have gotten worse in the last few years. Unity continues to add on terrible features and follows the similar ui antipatterns and gnome 3 has. KDE4/5 are decent but very heavy. Xfce and lxde are great but you occasionally run into some weirdly missing features (no font manager -- why?) that make you pull in gnome/kde and question why you picked a lightweight desktop in the first place. I'm not sold on the tiling window managers, ya the tiling is nice, but they look terrible, require way too much config, and sometimes I just want to use the mouse damn it.

<comment><USER16> Linux Mint might be an option. It's essentially Ubuntu, but it swaps GNOME for Cinnamon which does away with a lot of the more recent GNOME changes.

</comment></comment><comment><USER16> I prefer developing with Linux. There are generally more tools available than Mac and Windows. Some of the ones I use are xmonad, tmux, vim (nvim), ag, ycm, clang, gcc, gdb, cmake, make, ninja, perf, valgrind, strace, etc... Compared to Windows, even just having a decent shell with coreutils is huge. If there is something that a tool doesn't already do, I can generally combine other ones to do it. For example, _sed_ can handle basic refactoring. It's also generally easier to install new tools through the package manager (I use Funtoo).

I know a lot of people tend to prefer cleanly polished IDEs, and I do use eclipse and eclim for java development, but normally IDEs tend to get in the way for me. As for the specific questions, building definitely isn't an issue and there are plenty of cross-platform build systems when it's needed. Continuous integration is usually handled separately on a build server (hudson, jenkins, team city, etc...). In fact, a lot of the collaborative tools for things like continuous integration and issue tracking are mostly usable via web applications (bugzilla, jira, etc...).

My biggest frustration is when tools that aren't usable on Linux get standardized on. Outlook is the easiest example, but for anything where it's absolutely necessary it's extremely easy to run a virtual machine with kvm and libvirt.

<comment><AUTHOR> Are you having issues with speed? You can't accelerate Scons or most other Make tools, and CI is still slow when running thousands of tests.

<comment><USER16> No. In most scenarios, make can parallelize builds and where compiling and re- compiling are still bottlenecks distcc and ccache generally scale. LLVM also tends to compile faster. For larger projects, cmake can also theoretically generate a configuration for ninja (faster than make) only changing the command line.

As for testing, I haven't really seen bottlenecks with integration and unit tests. If anything, running continuous integration on Linux should be as fast or faster though. I tend to use googletest where I can.

</comment></comment></comment><comment><USER17> I'm mainly developing PHP applications (Magento, Symfony) And I found Linux much easier. Back in 2000 (ish), when I switched to Linux the biggest confusion was the different format of configuration files and scripts. In Windows, I get used to .ini files and .bat batch scripts. When I switched to Linux (well, it was more like a slow process) I was confused about this. Fetchmail config format, the apt sources tree format (which seemed to be an .ini) and all the config files in /etc was all different. I finally managed to get my emails fetched and sorted to different folders based on topic and sender, using Fetchmail, then I was happy to read them in Mutt. The UI looked terrible (well, it was text after all) so I tried Balsa and used it for years, then Sylpheed, Claws Mail, still backed with Fetchmail. I can imagine that the different GUI libraries would confusing others, but I always managed to sort my installation to use only one. If I had KDE, I installed only KDE or at least Qt programs. If I had GNOME, then so that it. Nowadays, I use AwesomeWM mainly with 3 or 4 software only, on 3 screens: the first screen is the terminal with tmux, the second (middle) is the browser, Thunderbird, the third is Sublime, so I don't get nervous about installing different libraries.

With all of these, Linux felt better than Windows and it's openness and community support encouraged me to discover more and more. Back in those days I really tried every programming language I could: Java, Ruby, C, C++ and I had no confusion learning and using these on Linux. I was only confused when sometimes I had to switch back to Windows. The lack of documentation, missing libraries, unpredictable crashes on software upgrades (which came from different sources, absolutely without automation, manually running setup.exe's) and different UX, unsought taskbar icons really annoyed me. Now if I sit in front of a Windows PC, I feel it's just an useless gadget.

Linux was the cause I became a software developer.

I have only experience with one IDE, which was Netbeans. I used it mostly for developing Rails applications and I found this was the only IDE which does not get in my way. I just can't get used to PHPStorm today and I found Eclipse too slow, so I'm using Sublime as my primary editor now. Before it was Geany, gEdit or just Vim. I was never able to learn Emacs, but probably it's my fault :)

</comment><comment><USER18> I did the switch from OS X to linux about six months ago and I am pretty much using the same tools for front and back end web stuff. Then there is a huge plus for all the free new knowledge you get from using linux as a "power user", so if anything, the switch made it easier to deal with all kinds of things.

I suppose the question was more about low level development than in my case, where tools depend more on the system it's run on, but for me it has only been positive.

</comment><comment><USER19> Don't really have any frustrations to be honest. All my personal projects and stuff I do for fun (both mostly in ruby) I do on ubuntu 14.04. Use VIM, a lot of plugins and some custom CLI tools. Have never tried developing on Mac, though so maybe I just don't know what am I missing (windows isn't even a thing for ruby devs. And for good reason).

Only thing I'm kind of missing/sad about is lack of games on Ubuntu. Upside, though, I won't get lost in a "quick 20 minute brawl to clear my brain" that never lasts 20 minutes....

For sake of honesty, I do my daily job on windows. Stuff I use there is awesome. VS is nice, Windows domain works well enough and lync, outlook, fiddler, slack etc. are all nice. If, for w/e weird reason, I had to do my daily job on linux, I would be sad.

But most likely, I'm not frustrated with linux because I chose to use it for fun etc. If, in any point in my life, I would have been forced to use linux, I'd probably find a lot of problems with it.

//EDIT And uhm. I've never really had any problems with linux and hardware. For personal stuff I still run an old thinkpad t420s which hardware gets along with linux a lot nicer than it did with windows 8. Touchpad acts a bit better, touchpads 3rd button actually provides some nice functionality and most importantly, gsm card worked out of the box (something I never got up and running on windows 8). Once more, for sake of honesty, it shipped with windows 7 so maybe the drivers provided for the gsm card aren't compatible with win8. who knows.

Never had any problems with my desktops running Linux nor my previous thinkpad either.

</comment><comment><USER20> No gripes since Linux is by far the best development environment for most technologies. I am running Ubuntu desktop(Gnome) vms inside my macbook pro and macbook mini but going to install Ubuntu on metal itself. I like apple hardware not much their OS(especially for development). Use quite a handful of Ubuntu server edition without GUI for development and testing too. CLI can be as ease for development but with right tools and config.

Tools: vim/nano, curl, grep, rsync, find, mitmproxy, autossh, tar, syslog, seige, top, wget, netstat, lsof, sed, df, du, ifconfig, iptables -L, ping, dig, traceroute, strace, screen, tcpdump, telnet, history

Dev setup config: pathogen.vim, ssh custom host config, ssh keyless entry, ssh tunnel, .bashrc/.bash_profile, alias, /etc/init.d/, .gitignore, vurtualenv(python), vagrant, docker, bash script for automation, supervisord

As a desktop user - I am a big fan of Gnome but just don't see GTK going anywhere. My bias towards Gnome is due to it's design principle. Wish for a Qt Webkit like layer on top of Gnome for native application development. For some reason KDE seems cluttered to me but to their advantage they have Qt.

</comment><comment><USER21> Personally, I can't find a text editor I like. The closest I came was acme from plan9, shown here [https://www.youtube.com/watch?v=dP1xVpMPn8M](https://www.youtube.com/watch?v=dP1xVpMPn8M).

I would love to see an editor which clones acme, but follows a few of the modern ui conventions.

</comment><comment><USER22> * Having to make efforts to keep the system working smoothly after regular system updates

* Hardware vendors not showing much love

<comment><USER23> I use server/workstation parts for systems (not a laptop guy), so that's not so much of a problem, but can still be an issue with e.g. having to use a newer kernel that's not getting security update love.

The update issue can be problematical with not all that many distros providing Long Term Support. systemd + Debian's short term support, one year after a new version plus a volunteer effort starting with squeeze is prompting me to abandon it and its famed stability between releases. I'm trying Alpine for Xen, with probably the current LTS Ubuntu without default systemd for development and who knows what else on VMs.

Ah, yeah, the chaos in GUIs is not good, e.g. Gnome going off in a bogus direction after version 2. I'm happy enough for now with Xfce, but its got less mindshare.

</comment></comment><comment><USER24> 1\. Fragmentation. Getting something as simple as a bluetooth speaker is a challenge depending on which distro you are on.

2\. Package management. Again, a package may be available under vastly different names or config depending on what your distro overlords decided

3\. Second class Citizens. Games and software that I want to use is very often never available for Linux. Companies that used to develop are dropping it (ynab). Indie game devs are picking it up, but companies like GitHub are still to even commit to a linux client. Google Drive for Linux was announced more than 3 years back to be under development, but is still unreleased.

I still love Linux, and refuse to switch to Mac (despite almost everyone around me doing so). This is mostly because I love how easy and straightforward it is to develop in Linux.

</comment><comment><USER25> From my experience several years ago:

Distributing binaries for Linux was complex. libstdc++ compatibility across distros or different versions within a single distro wasn't great.

(Compared to Solaris, it seemed like libraries were always backwards compatible. Running old binaries always just worked.)

</comment><comment><USER26> Using xubuntu, switched from crunchbang a year ago after a drive failure.

It has some weird problems like forcing gnome-keyring-daemon to run which breaks ssh-agent. The only fix I have found to to create a wrapper script that always disables its ssh component.

I sometimes get focus issues requiring me to tab through the windows to refocus the correct one.

I dislike the practice of littering my home directory with dotfiles. I prefer them to be put in .config. I have 10 directories in $HOME and another 85 dotfiles/dirs there at the moment.

New ubuntu versions start you out with capitalized folder names which is annoying.

NetworkManager often bugs out. displaying in a tiny one line box you have to scroll through or disabling wifi when i attempt to start a VPN connection. I cant be bothered to learn wicd though

</comment><comment><USER27> I develop applications in C++ on Linux and Windows. On windows I can enable heap tracing and have leak detection included in my test cases (Google mock/test). On Linux I need to run my app under Valgrind for leak checking as a separate process.

<comment><USER28> You want to make ASAN builds (simply build with clang or gcc > 4.8 with -fsanitize=address on the command line).

Then you can break in a debugger, and do some tricks, explained in this page: [https://code.google.com/p/address- sanitizer/wiki/AddressSani...](https://code.google.com/p/address- sanitizer/wiki/AddressSanitizerAndDebugger).

This will also detect any memory trashing or the like, while being quite fast (compared to valgrind, of course). Then if things are really weird, you can use valgrind.

</comment></comment><comment><USER29> Unstable virtual box networking on my arch machine that requires occasional suspend and resume of a vm. No good looking and stable gui client for mysql.

I've been doing dev with linux for most of my carrier and I honestly don't know why would someone use another os. Windows dev looks very weird to me with trillions of popups, little windows and checkboxes. Mac looks like it's trying to replicate linux tooling and while it's pretty good you still need to jump some hoops

</comment><comment><USER30> My biggest frustration with Linux development is how poor it has made windows development env look in comparison. Every time I have to fire up a windows VM to do some work for some of our clients that still use MS tech I hate it. Before using Linux as a dev environment I honestly thought windows and the associated dev tools were really good. Now using anything else seems like a huge chore.

</comment><comment><USER31> Anything sysadminy like building third party libraries or configuring tools and getting them to work. I just want to write code, not fight with installation and configuration. Editors and dev tools are all fine after they are installed and configured.

</comment><comment><USER32> Thinkpad running fedora, a dream come true.

</comment><comment><USER33> Dealing with lazy people asking stupid questions and making everyone loose time and resisting the urge to pick on them.

<comment><USER34> Sometimes, people just don't know.

<comment><USER13> Most of the time techies don't know either, but have a sensible approach to finding out.</comment></comment></comment>