Go's Tooling Is an Undervalued Technology - <AUTHOR> https://nullprogram.com/blog/2020/01/21/ <comment><USER2> Coming from the C# and JVM world to go, tooling looked like one of the worst parts of Go.

The debugging story is very limited:

\- No function execution

\- No edit-and-continue

\- No conditional breakpoints

\- No watchpoints

Package management works OK on the consumption side, though it is much more clunky than with classic package managers (e.g. set an ENV variable to get a custom proxy, but write something in go.mod file to get a per-package proxy). However, the publishing side is all over the place:

\- Relies on source-control integration

\- Horrible import paths for packages published from large repos

\- Versioning based on source-control tagging, exact format undocumented

\- Major version changes require source-code level changes in all files touching the package

\- Multiple Go modules in same repo use-case is not documented (can you have separate versions from same commit? how do they reference each other?)

The source-code level tools/plugins available are extremely basic (except for GoLand):

\- No refactoring support other than "rename variable"

\- Reference-finding across modules rarely seems to work

\- No way to automatically find all implementations of an interface - especially problematic in a language with implicit interface implementation

\- The tools are pretty slow, constantly re-parsing large chunks of code; go pls has fixed some of that

<comment><USER3> Go also doesn't compile as quickly as people make you think. A regular sized project will compile more slowly than a similar sized c# project.

<comment><USER4> It's part of Go's typical "we assume/declare that we do better/simpler without checking what/how other languages do" schtick.

Take error handling and package management for example - different approaches, hacks piled, etc, instead of just going with the program, seeing how others do it successfully (e.g. Maybe/Optional error, exceptions, etc), and get on with it...

<comment><USER5> Do you think Go's developers and users are simply unaware of exceptions, optionals etc? Or is it that the trade offs that they made aren't net positive for most use cases? Even if the second was true, that isn't necessarily a bad decision; since C# continues to exist, there may be more use for a language targeted to some niche than just a copy of C#.

I've used C# and Go extensively and like both languages. In some big ways they are similar: garbage collected, (fairly) fast compile times, large ecosystems, good tooling (if you include the JetBrains tooling for Go), built in lightweight concurrency, etc. It's not surprising people compare them.

For the areas where they differ, Go in general is more explicit and more low level. Handling errors as return values instead of exceptions is more typing, but I find it easier to check that error handling has been done correctly in my own code and in third party libraries. Instead of the class/struct dichotomy pointers are explicit and any type can be used as a value type (there's also more flexibility in using Go types with unmanaged memory, and the ability to take interior pointers). The way interfaces are implemented they can be used in more places without boxing.

C# has generics but I've run into frustrating limitations with them, for example not being able to write numeric code that works with either 32 bit or 64 bit floats. Go's generics are currently limited to some built in types but the proposals being iterated on seem like they'll be more useful to me than C#'s implementation if they make it into the language.

Other things: Go has a single concurrency story so the ecosystem isn't divided into sync/async worlds, is a less complex language overall, and is a bit less verbose aside from error handling (no public static void etc). Overall I probably prefer Go, but I like C# also and could easily imagine projects where it might be a better choice especially in areas where the lower level aspects of Go aren't useful.

Reading HN, it seems like a lot of people believe that people who use Go (and even the language designers) are simply ignorant. I'm open to the possibility, but can you flesh it out for me a little bit more? What am I missing here?

</comment></comment></comment></comment><comment><USER6> I definitely appreciate many parts of go's tooling ecosystem: pprof, gofmt, go get (in GOPATH mode), and go bug are all pretty good ideas. pprof in particular and the various profiling tools build out around it are great.

That being said, I haven't found all aspects to be as nice - most notably among these is the lack of a good debugging environment. There is no debugger in the go tool, and users rely on delve[0] for their debugging needs. The dlv command line tool has actually gotten a lot better over the last couple years (props to the maintainers!), but integration in to visual front-ends is still lacking. VS Code and GoLand integrations at least are lacking to the point of it being nearly unusable except in the simplest cases. For a few examples, stepping is painfully slow (there are several machines/OSes I use), conditional breakpoints don't seem to work, keeping the tools up to date doesn't work consistently which means updating the underlying go/delve tooling or the IDE will frequently break the experience, and defining your debugging processes (e.g. via VS Code's launch.json) is tedious. None of these are go's fault per se, but it diminishes the overall experience.

In general, it would be nice to have a better debugging experience, esp. since I prefer a GUI tool to the command line for debugging. In the meantime, I might switch back to just using command line dlv.

But regardless, definitely agreed that go's tooling on the whole is great. pprof has saved my skin on countless occassions!

[0] [https://github.com/go-delve/delve](https://github.com/go-delve/delve)

<comment><USER7> Do people really use a debugger ?

This is a serious question because in 5+ years of programming I have never used a debuggers. The only time I used a debugger was when I was learning to program and to trace out for loops.

Now I just use print statements and read code to figure out what's going on.

<comment><USER8> My impression has been that developers way too often rely on the subsequent use of the debugger _when writing code_. It's like, "I don't really know what I'm doing, but the debugger will help me _understand my code_... Oh, what a piece of crap I wrote! Let me start over..." Looks almost like people are debugging themselves.

<comment><USER9> They're much more useful in maintenance environments where people have already written a million lines of code before you got there. Of course you have no idea what they've done. After a few years they probably have no idea either. You can go grepping in the codebase, but the sheer speed of asking the debugger "how did I get here?" is hard to beat.

They're also useful in layered environments. Sometimes it's a bug in other people's code and you need to get in there to find out what's happening. When all you have is disassembly, and can't readily insert print statements, the debugger is absolutely invaluable. One of my own "debugger greatest hits" was finding a bug in Windows CE stack unwinding this way.

</comment></comment></comment></comment><comment><USER10> When I first got into go, a few of the Go Opinions kinda rubbed me the wrong way.

\- I have to source GOPATH in my rc files? Annoying.

\- File paths are network URI's? Ugly.

\- I have to deal with every err != nil? Verbose.

But over time I've grown to love go more than almost any language (python is still bae, especially with type hints, and even then, it's close).

\- dependency pathing is a pain in most other languages. Singular source of truth is great (I've had virtualenvs leak and cmake do bizarre things when multiple libs are on the file tree)

\- host/paths are file/paths. I love this pattern now. It's just so obvious and natural.

\- ok the err != nil still drives me nuts. But it drives me to write things in a way where I don't need to deal with errors as much. Reduces fractal complexity and paths through the code. It also forces "the buck stops here" sort of pattern where you have some atrium which is resiliant and is where most errors bubble up to

<comment><USER11> installing or updating go is still a massive pain, it's mind-boggling why you'd have a modern language that behaves this way

<comment><USER12> I have not experienced problems installing or updating go in 5 years of use. What problems have you experienced?

<comment><USER11> Nor have I had problems, simply saying it is too much hassle for little gain so I rarely bother, whereas with other languages it is a breeze so I update all the time.

Please document your workflow to update and compare it to other modern langs, it's all relative.

<comment><USER13> This workflow works fine for me: [https://github.com/golang/go/wiki/Ubuntu](https://github.com/golang/go/wiki/Ubuntu)

<comment><USER11> Ok so for ubuntu (which has what desktop share again?)

> _Add a 3rd party repository to apt_

> sudo add-apt-repository ppa:longsleep/golang-backports

> sudo apt-get update

> sudo apt-get install golang-go

> Note that golang-go installs latest Go as default Go. If you do not want > that, install golang-1.13 instead and use the binaries from > /usr/lib/go-1.13/bin.

> If that's too new for you, try:

> $ sudo add-apt-repository ppa:gophers/archive

> $ sudo apt-get update

> $ sudo apt-get install golang-1.11-go

Am I being trolled here?

How would you compare this for both memorability and user experience compared to say "rustup update"?

Please take a step back and look at that question without personal bias. Please!

<comment><USER14> This comparison is entirely unfair, because you're not comparing the same thing. This is what one has to do to install Rust:

        # Install rustup
        curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
        # It automatically installs the latest version

This is what one has to do to install Go:

        # Add the PPA
        sudo add-apt-repository ppa:longsleep/golang-backports
        # Fetch information from the PPA
        sudo apt-get update
        # Install Go
        sudo apt-get install golang-go

1 command vs 3, but in both cases only one "odd one" you have to remember specifically. More important, however, is the fact that from now on Go will update along with the rest of you system. You upgrade your system like this:

        # Upgrade the system
        apt-get update && apt-get upgrade

rustup turns that into the following:

        # Upgrade everything
        apt-get update && apt-get upgrade
        # Upgrade Rust
        rustup update

Now I'm not trying to say rustup is necessarily worse than Go, because it does offer advantages, but for the simple use-case of always running stable it adds an extra step rather often, instead of once.

<comment><USER11> >This comparison is entirely unfair

Updating rust: "rustup update"

Updating Go: Search a bunch of stuff and then do the stuff some random website tells you.

Entirely stand by my earlier statements. Apparently the thousands of paid computer scientists at google are simply incapable of automating the basic process to update their lang. It's utterly absurd and should be actively mocked by anyone with half a clue. We should mock this stuff, we really should, it's hilariously dumb.

How are all the people getting paid SF wages literally incapable of creating "go update"?

<comment><USER14> > Updating Go: Search a bunch of stuff and then do the stuff some random > website tells you

No, updating Go just happens when you update your system. You don't need a separate command to do it. All of the other stuff you mentioned in your previous post is about _downgrading_ Go.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> Go would be about right, had it been released around 1992, when we had Oberon, Oberon-2, Component Pascal, Modula-2+, Limbo making the university rounds.

As it is, I see it mostly as C replacement.

Yes, as C replacement, as projects like TamaGo, Android's GPU debugger, gVisor hypervisor, Go's bootstraped compiler, Fuchsia's TCP/IP stack, TinyGo for microcontrollers, show.

However for anyone that enjoys being able to take advantage of what happened since 1992 in mainstream computing, Go isn't it.

<comment><USER16> This is backwards in my opinion and omits a lot of nuance.

There is no other mainstream language which combines seamless async- everything-to-the-ground with good performance.

Whenever I write in another language I feel like I'm in the stone age only because of this one feature already.

<comment><USER15> C#, VB.NET, F#, Erlang and Elixir come to mind.

<comment><USER16> I've used F#, it uses computational expressions for async functions. And functions are either async or not. Same for C#. Same for Scala, Haskell and others. Future[T] is so unergonomic and it creates a huge divide in the ecosystem. Been there, hate it.

I understand why Rust made the choices it made, they're going with zero cost abstractions, but for other kinds of languages async everything is fundamental to me after having used Go.

Erlang and Elixir are not fast, they use C implementations of functions for computationally heavy code, which of course blocks the scheduler for the duration of the call as far as I know and also can bring the Erlang VM down with exceptions. But yes, ergonomically wise they are what I want in this context.

Java Loom seems to be trying to add transparent asynchronicity, but it's not here yet.

In Go I write straightforward seemingly blocking code, and it just works.

<comment><USER15> It just works is not what I would call writing into possible closed channels or eventual deadlocks accessing shared data.

<comment><USER16> Writing to closed channels never happened to me in practice. Sure, you have to write idiomatic go code but then it's a Non-Problem. Deadlocks are indeed a problem but at least there's the deadlock detector which crashes your app with a stacktrace which makes it a minor inconvenience in practice.

Being able to launch a goroutine for background housekeeping, like sending keepalives, in a structure constructor without thinking much about it is extremely liberating to me.

My point is that Go is not extraordinary in the language constructs it presents. It's extraordinary in its implementation, from-ground-up async and the family of problems it completely abstracts away.

I'm not saying you have to agree with me in that Go is the best languag for you to use. But suggesting it's a language which feature wise is left behind in the 80's is plain dismissive and makes you seem uninformed to anybody who's written any nontrivial amount of it

I've written code in most of the languages you've compared it against. Even explored heavy functional approaches. And even though they were interesting, often innovative, Go still leaves them behind in the dust in practice for me. Because it hides the stuff I don't care about and works well for creating real-life software which I later have to operate, extend and extinguish when it's burning in prod.

Edit: Just to add, implicit interface implementation is great for composing software.

<comment><USER15> I hardly see the difference between,

        go func () { }

and

       Task.Run(() => {})

<comment><USER17> You can't? Perhaps this is why you encounter writing to closed channels and deadlocks accessing shared data.

<comment><USER15> Please enlighten me how it is less error prone than TPL and Dataflow.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> Go's tooling is very nice compared to most other dev technologies, and the source is quite hackable as well. I made a 1-commit modification to the compiler that adds a flag -warnunused to make it stop failing on unused imports or variables [1], and it was remarkably simple to do in the go src tree.

Plus, it's super easy for other people to use. Just check out the modified source, make.bash, and you're done in less than a minute of compilation!

I may not agree with some of their philosophies, but the tooling is nice!

[1] [https://github.com/kstenerud/go](https://github.com/kstenerud/go)

<comment><USER19> Can you expand on the use case for your change? Why would you want unused imports or variables?

<comment><USER18> When I'm debugging something, I don't want compiling to fail just because I've commented out the only line that uses the net/url package. If I temporarily modify a function call to use a literal instead of a variable so I can test an assumption, I don't want it to refuse to compile just because that variable is now "unused". The cascade effect of this can get quite extensive and annoying.

Same goes for exploratory programming, where I'm testing out ideas rather than writing production code. I expect my tools to get out of my way rather than play nanny.

<comment><USER20> Alternatively just add usages at top of package that have no real effects. This is experimental code after all! Never had problems with this, but yes, it's a bit different.

<comment><USER21> So many silly workarounds being suggested here. You should be able to pass a flag to accomplish this, anything else is simply annoying and drives away new users.

<comment><USER20> That's a feature!

You could have a flag, but we all know this is going to be abused. Seems devs have opted away from such, though it is understandably opinionated and require some thought.

<comment><USER18> In what way would it be abused? "To use this library, you must enable warnings in your build"? Yeah, that's gonna fly. If your code won't compile with default options, nobody will want to use it.

This is just a solution in search of a problem.

<comment><USER20> Isn't such types of shenanigans SOP in many communities?

Not against options per se, but can see the arguments against implicitly hiding alternative behaviour. Many compilers fail to be simple, performant and provide the right incentives.

Again, never had problems adding experimental code (// TODO: Remove), bootstrap-code, extra debug-info, etc. Ie. Why you should want to prefer refactoring.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> > If you already have a Go compiler on your system, there's no reason to > bother with binary releases. Just grab the source and build it. All can > manage their own toolchain with ease!

No thanks, give me binaries any day. I want to spend time developing my own software, not fiddling around bootstrapping a dev environment.

<comment><USER23> I agree with you and I found this part of the article strange as well, since one of Go's strengths is that it routinely spits out self-contained binaries thanks to doing exclusively static linking.

</comment></comment><comment><USER24> I love all the other commands for Go. I love the pprof, it's so powerful. [https://golang.org/pkg/net/http/pprof/](https://golang.org/pkg/net/http/pprof/) and all their other commands are great [https://golang.org/cmd/go/](https://golang.org/cmd/go/)

</comment><comment><USER25> Eh, Java and C# and I'm sure plenty of others make this pretty simple as well.

Go does seem to currently benefit from simplicity through lack of choice as it seems like there's only one way to do things, which is nice. I assume that'll eventually change as its not something you can really protect against and more the burden of success.

</comment><comment><USER26> ... compared to C and C++.

The reason why header-only libraries exist is because C and C++ don't have an official package manager. That's it. Any other language that does can vendor just as easily. Similarly, pretty much every other language has package management so that's not a point in Go's favour.

From the article, we're left with compilation speed. That's actually important, but Go isn't the only language that has a reference compiler that runs fast!

<comment><USER27> Also error messages from the tooling are still from a previous era. Nowadays tools say not just what's wrong, but go an extra mile to explain why and how to fix it. Go tools still print "go: your command was bad and you should feel bad. exit".

</comment></comment><comment><USER28> As an additional plus, you can apple-click "builtin" functions from inside of VSCode and drill into core libs for debugging purposes (adding breakpoints, log statements, etc). I've done this on a number of occasions to quickly get the result from an external HTTP request, etc. Go truly feels like a hacker's language that lets you get under the hood really easily when necessary.

<comment><USER29> Is that not normal? The only languages I don't do that in (if needed) are C++ (STL code makes my eyes bleed), and C (no need - too basic).

That being said if you need to add a breakpoint into stdlib code then God help you? (never used go so can't comment)

<comment><USER30> Setting breakpoints on CPython native code is a PITA and can't be done (afaik) from PDB.

<comment><USER31> Doesn't b do the trick for you ?

b(reak) [ ([filename:]lineno | function) [, condition] ] Without argument, list all breaks.

            With a line number argument, set a break at this line in the
            current file.  With a function name, set a break at the first
            executable line of that function.  If a second argument is
            present, it is a string specifying an expression which must
            evaluate to true before the breakpoint is honored.

            The line number may be prefixed with a filename and a colon,
            to specify a breakpoint in another file (probably one that
            hasn't been loaded yet).  The file is searched for on
            sys.path; the .py suffix may be omitted.

<comment><USER30> This breaks on Python code, not CPython native (C) code

</comment></comment></comment></comment></comment><comment><USER32> There are definitely good things about googles "decentralized package management". But using a url for the import also causes problems. What if the url the code is hosted on needs to change? And then I also ran into a case where I wanted to fork a dependency of a project, so I could get a bug-fix that hadn't been merged into upstream yet. But the only way I could figure out how to get it working was not only to have to change all of the imports in the main project, but a bunch of imports in the dependency as well to point to the fork. This seems needlessly painful.

<comment><USER33> Are we all going to pretend like we forgot Java has been using URIs for imports for 20+ years?

<comment><USER34> The difference is that java's "uris for import" is nothing more than a namespacing convention to avoid conflicts. A url in go is the actual place where `go get` will go retrieve the dependency, and the directory it'll live at.

<comment><USER33> That's true, thinking from that angle it does seem more troublesome then, in cases where the URI goes down, or changes, or you need a personal fork.

</comment></comment></comment></comment><comment><USER35> > [anything related to Go] is an undervalued technology

What exactly has he been reading? I've been working in Go for a while now, after years of reading only praise for it. Except for the error handling, which is far from the only thing wrong with the language/ecosystem, and even comments on that never fail to gather dozens of apologists.

There's nothing undervalued about it. This article itself is an example and it features little I haven't read dozens of times.

> Decentralized modules are great idea and avoid most of the issues of a > centralized package repositories.

But centralized package repositories are essentially an attempt to solve the problems of the wild west approach from before (which Go's way is more or less a throwback to, that only works better now thanks to platforms like github). Maybe they're a good thing? Is everyone else wrong? Questions for later.

</comment><comment><USER36> The part about building go is neat in comparison to other languages. I don't see the fresh breathe of ideas in package management. People used to host code and directly import it before go even released publicly. Go get was a thin wrapper over traditional way of downloading code and putting it in your folders if anything (wget). Ignoring the other advancement that took too long for go package management situation to resolve, currently I don't see any advantage go has over other languages in that area. Node package managers have allowed you to install packages from "decentralised" sources such as github or gitlab for a long time. node_modules is similar to vendor and with nexe, you can package them all into a single executable. Cargo provides all of that with additional features that neither of them do.

Go developers butchered community experiment in the form of dep. While it had many problems but those didn't require abandoning it out of nowhere, this isn't the first time that has happened. The community has a knee jerk reaction to anyone providing suggestions to change something or better it. Failure of go type system (other than generics) is often met with suggestions of code generation and doing some wackamole interface magic. To any problems in the standard tooling, the answer is to fork it and go away. I agree but other communities don't behave that way.

People are separated into distinct camp when it comes to promises or expectations. One noticeable idea is simplicity, half the crowd believes in the notion of verbal/syntactical, keywords and typesystem having less "features" simultaneously fighting for less ambiguity. The second half base simplicity on putting graduates to get up and working quickly in a code base at the cost of long term complexity in abstractions. All ideas of go make sense if you think from large company's perspective.

You can notice how go would work well in a company with monorepos.

That said. I hate go but that's why I like it too. If I want to get something done, I choose go. If i want to hack something and appreciate beauty of developing rather than efficiency or reaching end product, I avoid go like plaque.

</comment><comment><USER37> I played around with Go for the first time. The package manager and process of creating a new project was refreshing! It's so tidy and neat. Those are the first words that I thought of - Go is a very tidy and neat language. From syntax to publishing packages, the language has extreme levels of cleanliness.

</comment><comment><USER33> I don't really see how the package management in Go is better than in Java? In fact, it seems a bit inferior on some aspects, though mostly similar sounding overall.

Can someone more familiar with both explain?

I have to admit, the Go compiler is what I'm jealous of. No dependencies, not even GLIBC and cross compilation seems a breeze. SubstrateVM has a lot to catch up too there.

</comment><comment><USER38> I enjoy this sort of craftsmanship in software.

It's also a very practical way of assuring wide adoption.

A weird side-effect is that it makes mediocre software just that much more annoying and easy to bail on.

</comment><comment><USER39> I expected a section about testing and benchmarking since it comes out of the box with Go. Are there other popular languages offering it?

<comment><USER40> Python has the unittest module which works well for basic unit testing, and it's inspired by others (JUnit and the smalltalk testing framework respectively as I recall). I'm not sure about benchmarks, though.

<comment><USER39> Well, TIL! I had no idea about the unittest module. I always see pytest used in Python projects.

<comment><USER41> That is because unittest should be removed from the core libs. It is a bad copy of a Java library, pytest is far superior in every way. There is no reason to use unittest.

<comment><USER34> Well there's the reason that it avoids pulling in a dependency.

Which arguably is not much considering all the benefits of pytest.

<comment><USER41> If you are airgapped, you have other problems. They weren't really my target market.

</comment></comment></comment></comment></comment></comment><comment><USER42> It's probably because Go programmers come from Java, where tooling is similarly great or better.

</comment><comment><USER43> I find go doc, go fmt, go vet, gopls, etc to be much more undervalued than the compiler itself. I use these supporting tools much more frequently than I invoke the compiler (yeah they're related...) but TBH the huge selling point when I point people to Go is the developer support and ecosystem.

</comment><comment><USER44> The article has three sections: building Go, package management, and vendoring. The first is irrelevant to almost everyone. The other two are terrible. If that's supposed to be singing Go's praises then I think it says a lot that wasn't intended.

</comment><comment><USER45> The level of hype around Go is absurd. The packaging and vendoring is a disaster. Not only the implementation, but the idea itself.

</comment><comment><USER46> Go's compiler toolchain is an overvalued monstrosity, a relic from the 70's only Rob Pike could get away with resurrecting. Imagine walking into your day job and saying to solve today's problem you're going to blow the dust off your old floppy disks and see what they've got in store.

It's like Tesla deciding that before they built a car, they'd have to pave a new highway from SF to LA. Someone's already done the paving, focus on what you bring to the table.

LLVM is clearly the future. Yes, it could be improved, but of course all the effort that went into resurrecting the geriatric Go compiler didn't go into improving LLVM. It went into re-implementing assemblers for various architectures as though that wasn't a solved problem 100 times over.

As for package management and vendoring, both are great, and should be table stakes, so credit where due on that one.

<comment><USER10> And yet it works, it's fast, it's reliable. I've tried to build clang and it aint pretty.

Something something shipped is better than perfect.

IMHO I'm quite glad they didn't drag the bloat of LLVM into the fray.

<comment><USER47> Besides, one of Go's explicit goals was to not be bound to any one implementation. The language has been carefully documented to ensure that anyone could reimplement it without having to understand nuances of a specific toolchain.

If you want to compile Go using LLVM, everything you need is there to make it happen. In fact, someone has already done a lot of the leg work for you[1]. And if GCC is more your thing[2]...

[1] [https://tinygo.org](https://tinygo.org)

[2] [https://golang.org/doc/install/gccgo](https://golang.org/doc/install/gccgo)

<comment><USER48> I think this is too facile. Go was conceived as suitable for systems programming tasks, like web browsers, databases, and operating systems. But Google's own web browsers, databases, and OSes do not use Go.

It was also conceived as suitable for web servers, crawlers, and indexers; there it has been successful inside and outside Google.

Why didn't it catch on for browsers, databases, OSes - while Rust did? I think it must be the GC primarily, but the lack of an advanced optimizing compiler is part of the story.

<comment><USER47> I'm not sure where the idea Go hasn't caught on for databases comes from.

* [https://awesome-go.com/#database](https://awesome-go.com/#database)

* [https://github.com/rust-unofficial/awesome-rust#database](https://github.com/rust-unofficial/awesome-rust#database)

Rust was invented specifically to write a web browser, so that is a bit of an unfair comparison, but I would suggest that Go's lack of seamless inter-op with C is its biggest limiting factor in integrating into existing browser codebases as well as greenfield GUI applications. Additionally, Go's runtime is not well suited to OS development.

I doubt the lack of an advanced optimizing compiler ever crosses anyone's mind as by the time that might become an issue they have already ruled out Go for its many other limitations.</comment></comment></comment></comment></comment>


Unix clock just rolled over from 1,199,999,999 to 1,200,000,000 - <AUTHOR> http://drewp.quickwitretort.com/2008/01/12/0 <comment><USER2> Back about 200 000 000 seconds ago, I had the joy of attending a 'billenium' party -- complete with countdown clock.

The best part was that the party was inspired by a bug in our code caused by the rollover.

In short, there were time values stored in the DB as text -- everything in our DB was text -- and we were using the expedient route of doing simple string compares.

I won't bother explaining more.

But the cake was tasty!

</comment><comment><USER3> it warms my heart to see that someone else noticed this, and that further it was posted to news.yc and upvoted.

</comment><comment><USER4> Wake me up when we reach 2,000,000,000.

</comment><comment><USER5> This doesn't mean a whole lot to me. I am, however, looking forward to turning 30 in two years. The big 2^30. Will I live to see 2^31? I don't know...

All this is assuming that time exists, of course.

</comment><comment><USER6> Only about 30 years until it overflows, right?

<http://en.wikipedia.org/wiki/Year_2038_problem>

</comment><comment><USER7> Happy New ... err ... CentMill!

</comment><comment><USER8> onhnoes</comment>


MIT 6.S094: Deep Learning - <AUTHOR> https://www.youtube.com/watch?v=-6INDaLcuJY <comment><USER2> The full course title being MIT 6.S094 Deep Learning for Self-Driving Cars.

<comment><USER3> Get a course T-shirt, there is still one day left to order it:

[https://teespring.com/deepcars-2018#pid=2&cid=2397&sid=front](https://teespring.com/deepcars-2018#pid=2&cid=2397&sid=front)

<comment><USER4> A t-shirt for a university course feels surreal to me. It looks cool though :D

<comment><USER5> We had them at MIT in the 1980s, so why not?

</comment></comment></comment></comment><comment><USER6> Full playlist URL: [https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOk...](https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf)

</comment><comment><USER7> Nice. I wonder how comparable it is with Udacity's Self-Driving Car Nanodegree. Specially if MIT's lectures are freely available over the internet(YouTube).

<comment><USER3> DeepTesla from MIT course corresponds to Udacity's Behavioral Cloning project from NVidia (Davenet-2) and MIT extends it by combining 3D convolutions with RNNs for better steering angle estimates; MIT's SegFuse corresponds to Semantic Segmentation with Berkeley's FCN at Udacity; Deep Reinforcement Learning for path planning and crash avoidance is unique at MIT, Udacity focuses on camera/LiDAR/radar as the main sensors whereas MIT mentions ultrasonic sensors for detecting condition of the road; MIT uniquely teaches how to sense state of driver from facial features detection; Udacity adds classical computer vision with HOG+SVM, tracking of objects with Extended/Unscented Kalman filters, driving using PID and MPC controllers, path planning using polynomial path approximations. They both mention some advanced object detection algorithms like R-CNN or SSD.

TL;DR: Once you finished Udacity, MIT gives you more wonderful topics you'd understand instantly (except for Deep Reinforcement Learning where you need to do some graduate-level coursework yourself).

<comment><USER7> Thanks for the details. I think it would be a good idea to take this free(MIT) course first, and then see if you are still interested in this topic and/or missing some required coaching which one could get with Udacity(paid of- course).

</comment></comment></comment><comment><USER8> I was wondering if anyone has built their own toy self driving car? Like a little battery powered toy car that can drive itself. Is that something I can build as a hobby?

<comment><USER9> People make them (and even race) self-driving cars. Check out donkeycar.com

<comment><USER10> And also formulapi.com !

</comment></comment></comment><comment><USER11> I remember taking Andrew Ng Machine Learning on Coursera in 2013, unbelievable how much changed since then.

<comment><USER12> He's got another set of courses on Coursera for deep learning, but that ML course still forms the foundation.

<comment><USER13> If anyone has taken them, how do fast.ai courses compare with the others?

<comment><USER14> It's okay. Still just scratches the surface. Felt a bit too superficial for my tastes. He still does a good job of explaining intuitions and at a simpler level, but it definitely isn't very rigorous and the homework assignments still hold your hand a fair amount. I lost interest after a couple of the courses and ended up canceling my Coursera subscription.

<comment><USER15> Are you talking about the fast.ai course or Ng's coursera course?

</comment></comment></comment></comment></comment><comment><USER16> Would it be wrong for HN to 'retire' a few usernames, similar to what sporting leagues do?

I'm sure the name was chosen for positive reasons. But the guy who contributed and suffered so much, who used math to help save lives against Hitler, now will have a ghost randomly commenting on html or whatever topic in discussion threads?

I readily acknowledge some of the obvious counterpoints:

\- who cares. it's a username. move along.

\- happens all the time with others

\- it would require work to add a retired list check and make decisions.

<comment><USER17> If I have the same name as a historical person, should I be barred from using that as an username? While it is unlikely that /u/AlanTuring has that name in real life, the probability of such collisions would become a lot higher if HN decided to block usernames of prominent mathematicians and scientists.

<comment><USER16> Would you want to participate as Martin Luther King in a civil rights discussion forum? Personally I would not. Even if it were my real name, I would prefer to choose an alternate.

However, I understand your point of view and realize it's a subjective preference.</comment></comment></comment>


Inventor Waits 43 Years for Another Chance to Shock Tech - <AUTHOR> http://www.bloomberg.com/news/2014-02-24/inventor-waits-43-years-for-another-chance-to-shock-tech.html

<comment><USER2> The quote at the end is an interesting point.

>"I respect Gilbert Hyatt's work -- the process of engineering is difficult," Bassett said in a telephone interview. "But innovations are more than ideas. The broader context matters. If Gilbert Hyatt had never existed, I believe the microprocessor would have developed in the same way that it did."</comment>


What Percent Are You? - <AUTHOR> http://www.nytimes.com/interactive/2012/01/15/business/one-percent-map.html

<comment><USER2> Household income is a poor measure in my opinion. If I happen to live with a roommate who also earns the same as me, am I suddendly twice as wealthy? Of course not.

As the majority of households have two main income earners, and I live on my own, it is wrong to compare my income against that of a married couple. I would be much more interested to compare where my earnings are against individuals, not households.

<comment><USER3> Are you sure that the "majority of households have two main income earners"? I don't have data but most of the families I know are quite the opposite -- a divorced couple with kids maintaining two separate households, or a single mom/dad receiving no child support (for whatever reason).

</comment></comment><comment><USER4> More accurately, this should be called "what percentile are you?"

<comment><USER5> That doesn't match the current marketing terminology. This is meant to be topical, not strictly informational, though I think it succeeds as both.

</comment></comment><comment><USER6> 1% all over USA except a few spots in NY (2%) :(

/me needs additional greed or the exchange rate of a few months ago for a better rating.

Edit: for those of you who were, like me, a bit confused about the purpose of the whole exercise: There's a related article at [http://www.nytimes.com/2012/01/15/business/the-1-percent- pai...](http://www.nytimes.com/2012/01/15/business/the-1-percent-paint-a-more- nuanced-portrait-of-the-rich.html?_r=1)

<comment><USER7> Did you zoom in to see your percent in DC? Wealthy area there, might not be the 1%...

<comment><USER6> All I can see there is Top 1% from $513,000

<comment> ldd- Zoom in and check out Stamford, CT.

<comment><USER6> Yes, as I said above, 2%

It doesn't seem like the areas are created equal; I'd expect a few more hotspots elsewhere (California), but so far I haven't found much, but then again "Data not available for metropolitan areas with fewer than 50,000 households."

</comment></comment></comment></comment></comment><comment><USER8> The color-coding on this map was an interesting choice. Bright, stop-sign red is used for people whose income is in the top 1%. I almost felt as if being in the top 1% was a bad thing...

</comment><comment><USER9> Why focus on income? It can so fleeting.

I cashed out a bunch of options last year that put me in into seven figures for ONE YEAR. Next year I'll be making no salary since I "retired" because of my windfall.

I'm way better off than I was when I was making a low six figure salary, but by this measure I'll be worse off.

People need to remember that salaries and wealth are dynamic. Most of the people in the 1% weren't there 10 years ago and certainly won't be there in 10 years.

<comment><USER10> I don't understand your reasoning that they won't be there in 10 years. Money opens doors for you to make more money and to give your kids more opportunities. Unless you assume that people are essentially all addicted to gambling.

<comment><USER9> I shouldn't have said "most". It's more like 34% of the top 20% fall to a lower quintile over six years according to a Federal Reserve Bank of Minneapolis study of households from 1002 to 2007. (<http://www.minneapolisfed.org/research/qr/qr3411.pdf>) I should have looked this up instead of just trusting my memory.

Still pretty significant.

</comment></comment></comment><comment><USER11> Bottom 20% in Boston. Whoo!

</comment><comment><USER12> If you live in Alaska or Hawaii, we're unsure which percentile you're in. How much did you spend on flights and shipping charges last year?

</comment><comment><USER13> This isn't really a good measure. Given the same income, a single person is much better off than a family of 5.

</comment><comment><USER14> 24% in my area.</comment>


Random Startup Generator - <AUTHOR> http://www.ykombinator.com <comment><USER2> Yuri Milner is investing $150K in each reload of this page.

But seriously: sometimes randomness breaks assumptions and generates great ideas. See also:

<http://www.rtqe.net/ObliqueStrategies/>

 _Added:_ Sites with working online decks: <http://www.joshharrison.net/oblique-strategies/> [http://music.hyperreal.org/artists/brian_eno/oblique/oblique...](http://music.hyperreal.org/artists/brian_eno/oblique/oblique.html)

<comment><USER3> A friend of mine swears by a strategy he calls "smashing ideas" to generate ideas for research: Take two fundamental ideas from the literature (the more fundamental the better) and try to smash them together into a new idea. Says a remarkable amount of research (and successful papers) can be viewed in this light. The strategy is obviously a great creative tool, generally. Though, for business I still reckon the best primary mindset to have is identifying real world problems and thinking of solutions to these problems (perhaps smashing comes in at this point). In research and art, creativity pays off more because real world benefit as voted by paying customers is not as important.

</comment></comment><comment><USER4> I propose the ycombinator turing test. Can you generate an application which will get accepted by ycombinator? This may require generating additional content to establish team credibility including twitter posts, blog posts, etc.

<comment><USER5> Since the main thing we care about is the people, you'd either have to lie or be genuinely good.

<comment><USER4> How do you know who the people are? Presumably, the app would create blogs, facebook pages, linkedin, twitter, etc. Passing a phone interview would be harder, though not impossible. You might need really good voice recognition. Speech generation probably wouldn't be insurmountable.

In person, this might be trickier. This might require a robot mannequin. Alternatively, you could hire an actor with wireless ear plugs. Presumably, the computer would tell the actor what to do.

</comment></comment></comment><comment> hendrik-xdest "CloudPerfect is a creative new way of getting you upvoted on Quora. Between trolling /b/ and marriage, people believe they can't learn how to paint. This is where CloudPerfect comes in, with lots of coffee and an army of monkeys, CloudPerfect will revolutionize your social experience."

Sounds reasonable.

<comment><USER6> Oh sweet, I've always wanted to learn to paint, but I'm much too busy getting married and trolling /b/...

</comment></comment><comment><USER7> Funny, a few of the startups I generated are actually available domains (and kinda catchy):

      bridgeini.com
      swiftmolsh.com
      crunchmob.com <-- considering buying this one
      molshoola.com
      dateoola.com
      jotperfect.com
      inpoke.com

Good design, btw.

<comment><USER8> Every once in a while for fun, I try to find as many good .com domains as I can. There are a lot of good ones out there.

I've considered having a best available .com competition here, but think it might be considered wasteful, doing the work of squatters for them.

<comment><USER9> There was a recent XKCD[1] on pairs of words that sound good together and quite a few of those domains were available. So I don't know what it'll be yet, but my next project is going to live at lasernarwhal.com.

[1]<http://blog.xkcd.com/2011/02/04/trochee-chart/>

<comment><USER8> Lol. My surprises of the day were toogeo and talkik. I think I have a knack for finding these. I should charge. :) Ooh, talkic is even better. It's like talk and topic!

</comment></comment></comment></comment><comment> brown9-2 I had an idea for a similar joke website a few months ago, but their algorithm is much smarter than mine. Looking at their code, it looks like they are essentially randomly combining sentence fragments together in order:

        var A = ["A new and improved", "A better, faster", "An awesome", "A vibrant", "An innovative", "A faster", "A rapid", "A quick and dirty"];
        var y = ["Searchable", "Virtualized", "Cloud-based", "Mobile", "Application-aware", "Viral", "Friendlier", "Online", "Web-based", "Streamlined", "Performance-oriented", "Next-gen", "Revenue-shared", "Professional"];

I attempted to mine Crunchbase profiles and then build "descriptions" of a startup based on a markov chain, but I found that there was too much noise in most of the Crunchbase descriptions to produce text that sounded at all plausible. Their method is a lot smarter (and easier).

</comment><comment><USER10> What do they call that style of illustration that looks like it was done with a fish-eye lens effect. (City with guy playing golf picture).

Is there a stock image site that has a collection? Edit: Found it here, but no mention of what the "style" is called. [http://www.istockphoto.com/stock- illustration-10284891-beaut...](http://www.istockphoto.com/stock- illustration-10284891-beautiful-world.php)

<comment><USER11> A polar panorama? [http://content.photojojo.com/tutorials/create-your-own- panor...](http://content.photojojo.com/tutorials/create-your-own-panorama- planets/)

</comment></comment><comment><USER12> Great execution but needs more "$X is a dead simple way to $Y" so as to properly channel TC/Arrington.

<comment><USER13> or the popular "$x is the $y of $z"

<comment><USER14> Or, as the Simpson's put it... "Anything that's the 'something' of the 'something' isn't really the anything of anything"

[http://www.youtube.com/watch?v=cc5vN2XReWs&subject=Simps...](http://www.youtube.com/watch?v=cc5vN2XReWs&subject=Simpsons- something-of-something)

</comment></comment></comment><comment><USER15> Click on their about page: [http://www.joinfireplace.com/#topics/d1e41f00330b11e0a86e27b...](http://www.joinfireplace.com/#topics/d1e41f00330b11e0a86e27bb48e450e5)

Then click on their logo.

Love the instant load.

</comment><comment><USER16> I love the text it proposes to share on Twitter:

" _OMG ShopMob is the next Quora!! #omgnextquora_ "

</comment><comment><USER17> Thanks for the love guys :)

</comment><comment><USER18> Not quite complete, nowhere does the description say the team is "passionate" about technology and/or design.

</comment><comment><USER19> I'll admit to spending 5 minutes flipping through - well done :)

<comment><USER20> "this is where xxxx comes in"

wrote the phrase down to my english idioms book. all investors are mine!

<comment><USER21> I wish I could meet an investor now, just to say to him "This is where the jousting monkeys come in".

<comment><USER22> This is where investors come in...

</comment></comment></comment></comment><comment><USER23> "Pure Javascript, HTML and CSS. No server side at all. Simple and easy."

Surprisingly surprising - the average framework X programmer would automatically use framework X. What a great example of using the right tools for the right job.

<comment><USER24> No need to overengineer. Server side scripts are not needed in their case.

</comment></comment><comment><USER25> Great! This is how you make a generator. The Malcom Gladwell one was dumb and totally not funny. This one make me laugh.

The names were very catchy too.

</comment><comment><USER20> is it a parody on the startup bubble?

how funny it would be if some sophomore really implements one of these mock ideas and become a blnaire

</comment><comment><USER26> Great website. Can't be viewed in landscape mode on android. The socks and twitter link obscure the text. At first I thought that was part of the joke. Whatever. Gave me a laugh this morning and that is worth its weight in gold.

</comment><comment><USER27> hahah i always suspected my NoSQL database was missing A SOCIAL TWIST!

</comment><comment><USER28> Can you make it so we can submit silly/lousy ideas we've had or heard from others? Or maybe ideas that were rejected from YC? That would be a fun collection to look at.

</comment><comment><USER29> StumbleUpon for startup ideas. Awesomely amusing!

</comment><comment><USER30> Hehe. Nice one. it is a good way of scanning through a bunch of crowd sourced ideas though.

Back to scanning through.

</comment><comment><USER31> geez, I almost entered my email on the "notify me" first time I opened this!</comment>


Bugger - <AUTHOR> http://www.bbc.co.uk/blogs/adamcurtis/posts/BUGGER <comment><USER2> The danger with this very good article is that it underplays the danger inherent in this system of surveillance. The spooks who put the thing together are the hard-working idiots described here:

> _I divide my officers into four groups. There are clever, diligent, stupid, > and lazy officers. Usually two characteristics are combined. Some are clever > and diligent -- their place is the General Staff. The next lot are stupid > and lazy -- they make up 90 percent of every army and are suited to routine > duties. Anyone who is both clever and lazy is qualified for the highest > leadership duties, because he possesses the intellectual clarity and the > composure necessary for difficult decisions. One must beware of anyone who > is stupid and diligent -- he must not be entrusted with any responsibility > because he will always cause only mischief._

(often misattributed to Rommel, but actually by [http://en.wikipedia.org/wiki/Kurt_von_Hammerstein- Equord](http://en.wikipedia.org/wiki/Kurt_von_Hammerstein-Equord) )

What we have here is a band of diligent idiots who, with their persistent, hard-working little hands, are building an apparatus of oppression that will be the wet dream of whatever future tyrant emerges (as inevitably one must, if history is any guide). They form a powerful, hidden, well-funded department of our government, and they are, from the looks of it, largely incompetent, diligent idiots.

This article/documentary is very good, but don't think these guys are harmless fools. They are very, very dangerous fools - a danger well above their competence.

<comment><USER3> The movement to undermine US freedom and privacy has been focussed and well- funded since 9/11, under both Bush and Obama and involving more than just the NSA. If it's the work of idiots, they are very hard-working, successful idiots as they've managed to wrest considerable power from a nation of hundreds of millions, assuming control of the world's foremost superpower.

<comment><USER4> _The movement to undermine US freedom and privacy has been focussed and well- funded since 9 /11, under both Bush and Obama and involving more than just the NSA._

If that's true, then why don't they just, you know, end privacy? Tptacek was right when he said:

 _Obama could give a speech in the Rose Garden this week carefully explaining that NSA requires access to American communications, all of them, in order to defend the country against terrorist attacks, and that while privacy is "important", the expectation of perfect privacy in your cell phone and Internet communications isn't reasonable because it helps terrorist cells without providing much benefit.

I would recoil from such a speech, but the public probably would not.

The American public currently has a weak expectation of privacy in their electronic communications. But they make virtually no meaningful demand for that privacy. Thwarting terror attacks are a much higher priority to them. Want evidence of that? Well, the body-conscious, vain, generally out-of-shape American public routinely submits to electronic strip searches to get onto airplanes. You think they care if someone's screening their calls to catch Abu Shahid? They would accept that argument. And with that acceptance, the expectations of privacy and the notion of what "reasonable" searches are would be, in short order, redefined --- those rights being explicitly predicated on contemporary mores by the Constitution.

When I look at it from this angle, it becomes apparent that while privacy is inconvenient to the USG, and something they feel they have to work around, it's not something they're intent on eliminating. Despite the rhetoric from the tech punditry, the USG has not stated that it's reasonable for them to surveil US citizens; their defense has instead been that they are not surveilling them. I too think that's a falsehood, but it's truth or falsity is not the only thing that matters about it._

<comment><USER3> >If that's true, then why don't they just, you know, end privacy?

By covertly erecting systems that end privacy (and attacking privacy tools like Tor), they are, in effect, ending privacy (without hurting the "US is a champion of freedom" brand to the same degree that explicitly ending privacy would do).

<comment><USER5> I wonder if Americans know how long it's been since the US started taking photographs and fingerprints of every non-citizen entering the US?

That feels a bit privacy invading, but there wasn't much fuss over it when it was introduced.

<comment><USER6> This is a surprise. I've never been fingerprinted at a US port. Perhaps it's because I have a biometric passport. Still, such a practice can't be universal.

<comment><USER5> > Still, such a practice can't be universal.

What do you mean by "not universal"?

([http://www.reuters.com/article/2008/03/25/us-security- finger...](http://www.reuters.com/article/2008/03/25/us-security-fingerprints- idUSN2538685320080325))

> _The U.S. government has been collecting digital fingerprints and > photographs of nearly all non-citizens aged 14 and up entering the country > since 2004, officials said, in a Homeland Security program called US-VISIT, > at a cost of $1.7 billion._

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> For those that don't make it that far through, one of the things that's mentioned that I hadn't heard about before is that in 1982 a GCHQ employee called Geoffrey Prime was caught selling British secrets to the Soviets, not because of the work of the security services but because he confessed after being caught sexually assaulting children whose movements he'd been monitoring via his job.

</comment><comment><USER8> I've watched / read just about everything created by Adam Curtis. He is a brilliant documentarist.

If you have a couple of hours start by watching "Century of the Self" where he tells the history of PR and Edward Bernays. (it's public domain)

If you like it then watch "The Trap" and "Pandora's box". "The Power of Nightmares" is also great. Subscribe to Adam's blog.

He is able to create brilliant connections which give a whole new perspective on history. Some people I've talked about him told they believe he is a conspiracy theorist however maybe I'm naive but most of the things he says make perfect sense to me.

I remember watching "Century of the Self" at 21 and having a tiny 'aha' moment about how things work.

<comment><USER9> Interestingly, one of his major themes is that powerful people and institutions are themselves driven by various "conspiracy theories," neuroses, and fiction.

In this post, he describes how the MI5 and other spy organizations need ideological support from authors like Le Carre.

In "The Power of Nightmares," this is also the primary theme, but focused on the mythical and paranoid ideology that drives the "War on Terror."

So, Curtis is maybe not a conspiracy theorist, but a conspiracy theory theorist... I see him as something like a humanist: he wants to the reveal the "humanity" (pettiness, confusion, imagination) of powerful actors which present themselves as serious.

<comment><USER10> Agreed. I was introduced to his work by watching The Trap in a seminar on Michel Foucault, interestingly enough. I was surprised how much depth there was in Foucault's work, despite his reputation as a fudging post- structuralist. Much of it complementary to Adam Curtis's work.

One of the important things we find in both (as well as in the last in my trifecta of organizational theory -- The Wire) is that conspiracy theories are almost impossible, because people are mostly either too stupid or too petty and shortsighted to pull off a true Illuminati-style conspiracy.

It might be tempting to call Adam Curtis a conspiracy theorist because his notion of how power is distributed and wielded is somewhat arcane -- for instance, it's at first odd to say that the populace is controlled by propping up freedom as the guiding ethos and removing arbitrary forms of control by implementing statistical guidelines, since these things are nominally in place to remove top-down control -- but such analyses, arcane though they may be, are not conspiracy theories, because a conspiracy requires a coordinated effort.

Adam Curtis describes situations in which there is no coordinated effort, and no secret cabal. Just struggles of power and agreed upon fields of debate/combat which are then exploited after the fact by those who are able to do so.

<comment><USER11> > I was surprised how much depth there was in Foucault's work, despite his > reputation as a fudging post-structuralist.

While I want to make some snarky comment about how maybe this tells you what you've heard about those 'fudging post-structuralists' is incorrect, what I'll say instead is that out of that group, which, incidentally, he did not consider himself a part of, Foucault is widely considered the least-fudgy.

Consider Chomsky, for example: his (silly and vapid, in my humble opinion) beef with many continental philosophers basically excluded Foucault: "I find Foucault really interesting but I remain skeptical of his mode of expression." I highly recommend watching the debate between the two of them: [http://www.youtube.com/watch?v=myy3vL- QKI4](http://www.youtube.com/watch?v=myy3vL-QKI4) (and the five-second summary: [http://www.youtube.com/watch?v=-0dM6j7pzQA](http://www.youtube.com/watch?v=-0dM6j7pzQA) )

<comment><USER10> Oh, you don't need to convince me one way or the other. I spent my undergraduate career in a philosophy department that was extremely continental-heavy, as well as dedicated to reading only primary texts. After having read many volumes of Frenchies, my opinion on the two most famous is that Derrida fudged beautifully, even if he was ultimately a one-trick pony, while Foucault cherry picked some history but built a system of questions that were and are worth exploring.

<comment><USER11> :)

I'm currently making my way through Derrida now, though I've put him down to take up some Kafka...

</comment></comment></comment></comment></comment></comment><comment><USER12> You'd be surprised at how many things throughout the world can be easily explained through the lense of utter incompetence. Think of any type of failure out there, and more often than not plain human incompetence is at the centre of it.

When you start to understand how utterly incompetent most people are at their jobs, you quickly adopt an almost anti-conspiracy mindset that only changes it's mind based on positive evidence of actual competence.

Human error is the number one most common failure mode in complex systems. So before you think conspiracy, think idiocy.

> _Never attribute to malice that which is adequately explained by stupidity._

\- Robert J. Hanlon of Hanlon's razor fame ([http://en.m.wikipedia.org/wiki/Hanlon's_razor](http://en.m.wikipedia.org/wiki/Hanlon's_razor))

</comment><comment><USER13> To summarize:

"The terrible truth that began to dawn in the 1980s was that MI5 - whose job it was to catch spies that threatened Britain - had never by its own devices caught a spy in its entire history."

<comment><USER14> hey right I believe you and price philip is realy a lizard man from plant zog

Karl Hans Lody is but one example

</comment></comment><comment><USER15> The truth is somewhat in the middle. I've worked with a couple ints and a couple of their bosses. Some are hyper competent, some are effectively the equivalent of people that "play business" by forwarding technical "advisories" to non-technical people.

So yeah, it's a range of skills and dispositions, at least from what I've seen.

</comment><comment><USER16> I would counter that the real state secret is that the threat of global conflict in this day and age has dimished but the cold war mentality has persisted.

Furthermore, people don't care about privacy and are willing to trade liberty for securiy. We like to talk the talk but when the we get to the crossroads the general public is indifferent.

<comment><USER17> > _the threat of global conflict in this day and age has dimished but the cold > war mentality has persisted_

This is the problem at the bottom of the whole thing, Why do we have a Cold War sized NSA, or bigger, when we can look out decades or even centuries and see no totalitarian threat on the scale of the Soviet Union, and today not within three orders of magnitude of the Soviet Union? Nobody is occupying half a continent. No columns of thousands tanks are poised to invade. No multi- megaton hydrogen bombs are aimed at our cities.

The only threat this weapon is aimed at is the people.

<comment><USER18> I agree completely with your sentiment, but I'd like to point out that there are still "multi-megaton hydrogen bombs" aimed at our cities.

<comment><USER17> I would check on that. As far as I know, the US no longer stocks any "high yield" nukes, and the same for Russia, or at least a very small fraction of their previous arsenal. Not that a "small" nuke would be any picnic.

<comment><USER19> There's good reasons for that, unless you're trying to hit a particularly hard target, like the Cheyenne Mountain bunker that's now on "warm standby", really large nukes don't gain you anything, you get diminishing returns as additional heat liberated just radiates back into space.

Hitting a modern city with 3 low-centi-ton yield airbursts will do a lot more damage than one megaton class one.

</comment></comment></comment></comment></comment><comment><USER20> "If you wish to keep slaves, you must have all kinds of guards. The cheapest way to have guards is to have the slaves pay taxes to finance their own guards. To fool the slaves, you tell them that they are not slaves and that they have Freedom. You tell them they need Law and Order to protect them against bad slaves. Then you tell them to elect a Government. Give them Freedom to vote and they will vote for their own guards and pay their salary. They will then believe they are Free persons. Then give them money to earn, count and spend and they will be too busy to notice the slavery they are in." \--Alexander Warbucks

</comment><comment><USER21> It doesn't matter whether they are any good at catching bad people. What matters is how they impact the lives of good people.

</comment><comment><USER22> But this is what I worry about. A competent corrupt government is mostly concerned with crushing its genuine enemies. An incompetent one thrashes around crushing arbitrary people.

<comment><USER23> A government branch, when faced with difficult choice of either harming its own budget or exaggerating its legitimacy, will always do the latter.

Those who have high enough morale to harm their own interest for public good can only thrive in an environment of lots opportunities. So after making the case that they should be fired, they can find other equal or more lucrative careers.

</comment></comment><comment><USER24> Haven't read this yet - it's a bit of a long one. But I just thought I'd leave a comment for anyone wondering if this is worth reading. I can categorically say YES, yes, a thousand times yes. Adam Curtis is a master artist of a documentary film maker and everything he has produced is worth combing over in fine detail when alone and feeling introspective or with friends who are curious and open to new and exciting ideas. He will quite simply intrigue the ever loving bejesus out of you and I think the HN crowd (if not already) should be much better acquainted with his work.

If you need further convincing (and a shorter read), just check out this interview: [http://www.vice.com/en_uk/read/looking-beneath-the- waves-v10...](http://www.vice.com/en_uk/read/looking-beneath-the-waves-v10n12)

<comment><AUTHOR> I definitely haven't seen a finer writer or more intriguing than Adam Curtis. Malcom Gladwell comes to mind, but I subjectively like AC bit better. My favorite is the one on the interaction between pets and their owners on TV and how it changed over time.

I still would like to see some contra argument, though I doubt I'll find much on HN.

<comment><USER25> The only comparable person in terms of documentary is perhaps Jonathan Meades.

<comment><USER26> What about Simon Reeve? Maybe not in the same deepness level as Curtis but very much worth watching. Especially if you want to better understand human/nature interactions and how climate change and globilisation are effecting the world's poor.

</comment></comment></comment></comment><comment><USER27> > _the historian EP Thompson said that really Chapman Pincher was: "A kind of > official urinal in which ministers and intelligence and defence chiefs could > stand patiently leaking."_

Wow. I wonder what EP Thompson would say about the media today.

<comment><USER28> That line could be straight out of "The Thick of It".

</comment></comment><comment><USER29> Another example of MI5 dropping the ball was in the Irish War of Independence in the early 1920s. The "old" IRA was able to infiltrate it, execute various secret agents, manage to convince them that the IRA had much more guns and men then it actually did, etc.

<comment><USER5> Which is weird when we compare that to the STEAKKNIFE[1] infiltration of the IRA. ([https://en.wikipedia.org/wiki/Stakeknife](https://en.wikipedia.org/wiki/Stakeknife))

[1] I like this convention of putting everything secrety in capitals.

<comment><USER29> Difference of about 50→100 years there.

</comment></comment></comment><comment><USER30> "Thousands of Daily Mail readers couldn't be wrong."

</comment><comment><USER31> I think it is also very sad, that the things that KGB traitors did tell western people that KGB do, people don't believe, maybe because it worked as KGB intended (search around for Yuri Bezmenov interview... amazing)

</comment><comment><USER32> Is this article returning a Server Error page for anyone else? Whereas the others by this same author are not.

</comment><comment><USER33> Since i'm not using Flash anymore i wasn't able to watch the videos, but from the descriptions in the article i believe they would have added a lot to the text.

Appearently BBCs 'iPlayer' does support https streaming (for their iOS App), but only if you have an Apple signed client certificate.

:(

<comment><USER34> You might find [http://www.infradead.org/get_iplayer/html/get_iplayer.html](http://www.infradead.org/get_iplayer/html/get_iplayer.html) helpful then

<comment><USER33> Yes, thank you :)

</comment></comment></comment><comment><USER35> So, at the end if, now, intelligence agencies are spying retrieve information from Google et al and analyzing it with algorithms that are already in the public domain why they need a large budget or a budget at all?

</comment><comment><USER14> yeh right in reality there was a concerted effort by N the German navel intelligence to recruit and run spies in the UK.

A number of them where caught bang to rights both pre and during ww1.

hes right that Quex caused more harm than good but hey its the daily mail see the recent hysteria about opt in to porn which is David Cameron jumping the the DM's tune

</comment><comment><USER36> Off topic, but am I the only one who noticed "spies aren'y" in the image?

</comment><comment><USER37> Nice URL.

<comment><AUTHOR> I admit it is a nice wordplay on "bugs" that spooks use and the very British coarse word - bugger.

</comment></comment><comment><USER38> So ... they're like any other bureaucrat?

</comment><comment><AUTHOR> Ugh, op here. Why was title changed? It's less informative now :(

<comment><USER39> HN Guidelines[1] state that original article titles should be used as the title on HN (though I agree that it's sometimes to the detriment of HN readers).

[1] [http://ycombinator.com/newsguidelines.html](http://ycombinator.com/newsguidelines.html)

<comment><USER40> Indeed, title changes (by either submitter or an admin) which improve the original title, without adding spin or sizzle, should be welcomed.

The mechanistic insistence on original titles often gets things wrong, leaving a title in place that "buries the lede" (the actually new nugget in a particular story) or includes its own misleading spin. People then either miss or waste time on stories, when a few reasonable extra words in the title would have helped.

Possible experiments to address this might include:

• Adding a separately-voted 'title tournament' for each story, in which the original title, submission title, and others audience-submitted compete. (They're not competing for which gets the story the most upvotes, but which best describes the item.)

• Allowing a subhead per story, where either the original subhead or some other pull-up excerpt can appear for context. (This could be from the OP, admins, a group tournament, or even just wiki-style.)

</comment></comment></comment><comment><USER41> That explains why the guy who made the Facebook Event of 'spook spotting walk' in Brittain after the news that there was NSA personnel working there got inquired about his intentions! Idiots.</comment>


'National dignity' rules passed in Taiwan - <AUTHOR> http://www.taipeitimes.com/News/front/archives/2019/07/04/2003718085 <comment><AUTHOR> > _Under current regulations, the mayors, county commissioners and government > officials would need the approval of the Ministry of the Interior, in > conjunction with the National Security Bureau, the Ministry of Justice and > the Mainland Affairs Council's review committee, before traveling to China.

Under the amendments, government officials would also be required, upon returning to Taiwan, to report to the agency they serve, with the mayors of special municipalities reporting to the Executive Yuan, and the mayors of other cities and county commissioners to the Ministry of the Interior.

Retired or former employees of government agencies associated with national defense, foreign affairs, technology, intelligence or China affairs agencies and who worked with national security, interests or secrets could also be required by the agency to report before and after travel to China, according to the amendments._</comment>


Nanorobots That Can Travel Down the Bloodstream and Precisely Target Tumors - <AUTHOR> http://sciencenewsjournal.com/scientists-created-nanorobots-can-travel-bloodstream-precisely-target-cancerous-tumors/ <comment><USER2> Anytime we get practical implementations of ideas of the past by scientists and engineers working on it despite cutbacks in funding, I wonder where humanity would be if we at least halved the money spent on state-funded violence and similar counterproductive activities. Flying cars, deep sea habitats, space habitats, clean energy, hair style robots, fully coordinated jam-free personal traffic.

<comment><USER3> And this future would be even less evenly distributed than the one which exists now, which would lead to even more unrest which the state might try to quell with even more violence. So let's spend a quarter of the money spent on state-violence on future tech, and another quarter on health, education, liberty and peace in the developing world. I think on some level the Bill Gates philanthropist types are doing their charity because they realize that if the future moves too far and too fast then the bottom half just might rise up and destroy it.

<comment><USER4> Can't upvote this enough. I was recently at a talk by Kenneth Cukier from the Economist and he discussed how our economic climate is similar to the early days of the industrial revolution - inequality is increasing as jobs are being eroded by technology. In the short term, this actually causes problems as a whole generation are essentially displaced by technology and are not able to reskill, but in the long term the next generation inherit the right skill base to benefit from the new trajectory of civilization and mass prosperity is achieved.

The problem is that individuals often cannot see the bigger picture. It also does not necessarily follow that individuals benefit from aggregate wealth creation. If you are unemployed (by technology) and can no longer feed yourself or your dependents why do you really care that goods are now available cheaper and can be delivered 247: _you still can 't afford them_. If in your lifetime technology only brought starvation upon you, why should you care that future generations will benefit. Last I checked, we are not indoctrinated from young to be altruistic martyrs for humanity nor do I recall that being a basic human instinct either.

So displacement is a somewhat inevitable outcome from mass technological disruption. It's very easy to champion progress when you're on the winning side, and ultimately progress is important. It falls to the powerful (the wealthy like Gates and Zuckerberg) and nation States to protect the interest of all citizens to make sure everyone's basic rights are still preserved. Especially over trasitory eras such as the current one.

<comment><USER5> Hey - thanks for the nice words. The talk builds on work I'm doing for my upcoming book on AI.

A link to the video of the talk is at: [https://www.safaribooksonline.com/library/view/strata- hadoop...](https://www.safaribooksonline.com/library/view/strata- hadoop/9781491944639/video249103.html)

If you'd like to read more on the topic, the book Big Data is at [https://www.amazon.com/dp/B009N08NKW/](https://www.amazon.com/dp/B009N08NKW/) (or a synopsis, for free, is at [https://www.foreignaffairs.com/articles/2013-04-03/rise- big-...](https://www.foreignaffairs.com/articles/2013-04-03/rise-big-data))

Have stories to tell about how AI is changing business and society? Please reach me via twitter at @kncukier

Thanks!

<comment><USER6> Thanks for the links. Is the video posted elsewhere? Only a preview was available at that Safari link.

</comment></comment></comment></comment></comment><comment><USER7> By 'nanorobot' they mean bacteria.

>We show that when MC-1 cells bearing covalently bound drug-containing nanoliposomes were injected near the tumour in severe combined immunodeficient beige mice and magnetically guided, up to 55% of MC-1 cells penetrated into hypoxic regions of HCT116 colorectal xenografts. Approximately 70 drug-loaded nanoliposomes were attached to each MC-1 cell. Our results suggest that harnessing swarms of microorganisms exhibiting magneto-aerotactic behaviour can significantly improve the therapeutic index of various nanocarriers in tumour hypoxic regions.

So they load these little guys up with drug and use magnets to guide them into the tumor, which kind of works in SCID mice, although you'll note they make no claims about ability to actually kill or shrink tumors.

This news piece is awful, incidentally, but what else is new.

<comment><USER8> Unfortunately, the original article is inaccessible both from a paywall standpoint ($32 at [http://www.nature.com/nnano/journal/vaop/ncurrent/full/nnano...](http://www.nature.com/nnano/journal/vaop/ncurrent/full/nnano.2016.137.html)) and also from a technical standpoint.

<comment><USER9> It is available on sci-hub [http://sci- hub.bz/10.1038/nnano.2016.137](http://sci-hub.bz/10.1038/nnano.2016.137)

</comment></comment></comment><comment><USER4> This is pretty cool research, from what I can recall hypoxic tissue is hard to treat for three reasons:

1\. It is hard to detect 2\. Hypoxic tissue is hard to access as there is little blood supply 3\. Hypoxic tissue is hard and physically robust

So according to this release, the work done here should help to address the issues of hypoxic tissue.

Is anyone with deeper subject knowledge able to discuss the viability of this research: how much is hype? Are there any risks or weaknesses to this method? How commercially viable is it to mass produce this?

<comment><USER10> Not an expert, but #2 you bring up is pretty valid. Aside from directly administering a drug or agent, there is a reliance on the circulatory system to carry drugs to their targets. As for risks, any time you introduce a bunch of little things into the blood, that are likely (or possibly might) gather together, you have a potential risk of a stroke.

</comment></comment><comment><USER11> I wish these articles wouldn't turn up here. Although this sounds cool, the chance of having an impact on actual patient care is miniscule. This is a very complcated delivery system at the end of the day. We have enough trouble giving one drug and managing toxicity successfully, let alone this controlled nano infection cocktail. Also hypoxia isn't as tumour specific as you think, off target toxicity is a problem.

I don't think anyone will be cured by this and it will no doubt cost an absolute fortune.

<comment> Trill-I-Am What about in 30 years?

</comment></comment><comment><USER12> This is the cancer treatment of my childhood dreams.

<comment><USER13> [https://en.wikipedia.org/wiki/Fantastic_Voyage](https://en.wikipedia.org/wiki/Fantastic_Voyage)

</comment></comment><comment><USER14> Science catching up with sci-fi? [https://en.wikipedia.org/wiki/Fantastic_Voyage](https://en.wikipedia.org/wiki/Fantastic_Voyage)

<comment><USER15> That was exactly my first thought as well. It was a movie that definitely carved itself to my memory (though I saw it only on TV some time in early 1970's, no movie theatres around my place)

</comment></comment><comment><USER16> Interesting comments regarding this on reddit:

[https://www.reddit.com/r/Futurology/comments/4xz4nv/scientis...](https://www.reddit.com/r/Futurology/comments/4xz4nv/scientists_have_created_nanorobots_that_can/)

<comment><USER17> Yes, like linking to the original: [https://www.mcgill.ca/newsroom/channels/news/legions- nanorob...](https://www.mcgill.ca/newsroom/channels/news/legions-nanorobots- target-cancerous-tumours-precision-262058)

</comment></comment><comment><USER18> Haven't we already had this for a long time? Targeted drug delivery using Nano technology? A lesser complicated version and less of the sci fi but the technology has been here and proven for a long time with some FDA approved drugs already. Most of the drugs are still in trial but targeted drug delivery looks promising.

</comment><comment><USER19> There's an interesting Tedex with a similar outcome but different nanobot cancer approach - [http://www.ted.com/talks/paula_hammond_a_new_superweapon_in_...](http://www.ted.com/talks/paula_hammond_a_new_superweapon_in_the_fight_against_cancer?language=en)

</comment><comment><USER20> Anybody know when/if this type of treatment could be used? Any idea of the increase in the effectiveness of cancer treatments using this technology? I read the article and skimmed the paper but didn't get an idea of whether or not this technology is on a clear path to being a medical option for cancer patients.

<comment><USER21> The paper: [http://www.nature.com/nnano/journal/vaop/ncurrent/full/nnano...](http://www.nature.com/nnano/journal/vaop/ncurrent/full/nnano.2016.137.html)

        Anybody know when/if this type of treatment could be used?

At the earliest a decade. Effectiveness of the treatment wasn't evaluated. Just the delivery mechanism. This things are kind of a toss up, because this isn't a _drug_ per say, but a _delivery method_.

It's pretty cutting edge tech. But if the right $$$ is behind it potentially see us in 5-10 years. But this would cost a load, and require a lot more researches be involved. This is before we even get to human trials.

Generally a drug/therapy isn't going to make it _to market_ until the research teams spins off, or joins a bio-med startup. Then its 3-5 years away. Bio-med startups normally front the huge testing costs, then simply sell the patent+FDA approved drug to a large phrama firm for a HUGE pay off.

</comment></comment><comment><USER22> I remember reading Prey by Michael Crichton as a teenager and wondering if the nanobots he described there could be used to "eat" a tumor, like leaf-cutter ants gradually moving bits of material in a pipeline from one place to another. Glad to see that kind of idea realized in my lifetime.

</comment><comment><USER23> I love how they're calling bacteria "nanorobots." Why not call them bacteria?

</comment><comment><USER24> Is this real? I hope so</comment>