Did a reporter just solve the bitcoin mystery? - <AUTHOR> https://www.npr.org/blogs/money/2011/10/03/141011155/did-a-reporter-just-solve-the-bitcoin-mystery

<comment><USER2> _"The writer also notes that Satoshi typically uses British (rather than American) spellings.

So he narrows the field to people from the UK at Crypto2011."_

Not Singapore, NZ, Australia, Hong Kong, India or any number of prior British colonies that use British English and spellings instead of American? (How about China? Not sure what English version they use, but wouldn't be surprised it's Brit).

Unles there was no one from any of those countries at Crypto2011, then it looks like he excluded up to 2/3rds of the solution space.

Also, I wouldn't be surprised at a skilled cryptologist who wanted to stay incognito faking his spellings to throw people off. For example, I'm not a cryptologist, am American, am not trying to be incognito, and enjoy using British slang and spellings occasionally anyway. And this guy Clear sounds like he's enjoying taking the piss out of the reporter.

<comment><USER3> _(How about China? Not sure what English version they use, but wouldn't be surprised it's Brit)._

I'm well acquainted with many native speakers of Chinese who have learned English as a second language (and am married to one). There was a time when the British standard was consciously preferred by educational authorities for English instruction in both China and Taiwan. But that time is past. American English spellings are dominant in China and in a larger part of the "expanding circle" of international use of English.

<http://www.pyrtvu.cn/xush/home.files/text/8.htm>

<http://www.inst.at/trans/15Nr/06_1/price15.htm>

[http://dooku.miun.se/engelska/englishB/languageprof/Student%...](http://dooku.miun.se/engelska/englishB/languageprof/Student%20work/VT06/First%20final%20drafts/Helena%20Ling.htm)

[http://c-faculty.chuo-u.ac.jp/~mikenix1/co/we/Future_of_Engl...](http://c-faculty.chuo-u.ac.jp/~mikenix1/co/we/Future_of_English.pdf)

<http://www.palgrave.com/pdfs/1403918309.pdf>

<comment><USER4> Satoshi's English was better than would be indicated by most Chinese students.

<comment><USER5> The guy seems to be an excellent developer with a very strong knowledge of crypto. He would not be "most Chinese students" (indeed he would not be "most students" at all), especially in writing.

</comment></comment></comment></comment><comment><USER6> This appears to be a denial by the person in question: <http://www.scss.tcd.ie/~clearm/bitcoin.html>

I did the same undergrad as the guy. I have to say, I'd be really impressed if he put together Bitcoin just as he was finishing college. I would have guessed it was designed by someone, or group, with many years experience developing crypto infrastructure. But who knows.

The bit at the end of the article, about the wallets being encrypted, seems completely spurious to me, and no evidence that the reporter found the right guy (which the reporter seems to intend it to be).

<comment><USER7> Well it is very possible these gentlemen socialize in the same circles. Interesting read indeed.

</comment></comment><comment><USER8> Never title something with a question that can be answered "No."

<comment><USER9> Any article that has a question as a title is always answered "no".

<comment><USER10> Not sure why you are getting downvoted. I think that it's one of those "Internet Laws" but I can't find a reference as my Google-fu is weak.

<comment><USER9> I think it's an HN thing. At least, I heard it here.

I get downvoted a lot.

<comment><USER10> I think I heard it here, too. It's funny how often the rule works, mainly with sensationalist news stories. "Is this the iPod killer?" No.

</comment></comment></comment></comment></comment><comment><USER11> You should read the original article:

[http://www.newyorker.com/reporting/2011/10/10/111010fa_fact_...](http://www.newyorker.com/reporting/2011/10/10/111010fa_fact_davis) (subscription required, unfortunately =/. use your uni account or something)

The tone there is much more neutral, because Michael Clear in fact qualifies his statement.

quote from the new yorker article </comment><comment></comment><comment></comment><comment>-----

Clear responded that his work for Allied Irish Banks was brief and of "no importance". He admitted that he was a good programmer, understood cryptography, and appreciated the bitcoin design. But, he said, economics had never been a particular interest of his. "I am not Satoshi," Clear said. "But even if I was I wouldn't tell you."

The point, Cler continued, is that Nakamoto's identity shouldn't matter. The system was built so we don't have to trust an individual, a company, or a government. Anybody can review the code, and the network isn't controlled by any one entity. That's what inspires confidence in the system. Bitcoin, in other words, survives because of what you can see and what you can't. Users are hidden, but transactions are exposed. The code is visible to all, but its origins are mysterious. The currency is both real and elusive -- just like its founder.

"You can't kill it," Clear said, with a touch of bravado. "Bitcoin would survive a nuclear attack."

</comment><comment><USER12> So, anyone written any software that compares two pieces of code and gives the odds of them both being written by the same person?

<comment><USER13> One of my CS professors claimed he had a script to analyze all of his students' programming assignments to find possible instances of cheating. I have no idea how extensive his algorithm was: it could have been anything from a simple whitespace and variable name normalization to an analysis of the abstract syntax tree. Or he may have just been bluffing.

<comment><USER14> Here's a very simple trick that works for programming languages with a C-style syntax: strip out everything except parentheses, braces, and semicolons and compare. I know that it was used successfully in an algorithms course (shortest paths, flows, that kind of stuff) which had stand-alone implementations of the algorithms as assignments.

Edit: Of course there was a manual inspection step involved as well, this matching process was only used to flag suspicious instances.

<comment><USER15> And I wouldn't punish cheating in those courses directly: Just add the requirement that people need to be able to explain their solutions however they arrived at them. Being able to explain other people's code is a useful skill, too.

<comment><USER16> It may be a useful skill, but it's also not what's being taught in an algorithms course.

</comment></comment></comment></comment></comment><comment><USER17> I've met Michael Clear a few times, being in the same University as him and generally hanging around with the same crowd of people.

As much as I would love to believe this conspiracy, and would suddenly make my pub meetings with his research group way more interesting, I don't think it's him. But I will keep this article in mind so I can bring it up at every opportunity.

</comment><comment><USER18> The shroud of secrecy hardens my conspiracy theory that bitcoin was created by the FBI to track illegal payments.

<comment><USER19> Not created by them, but when people start using a perfectly traceable currency to make illegal purchases, the FBI must rub their hands in glee...

<comment><USER20> Until they try to trace it to an actual person...

<comment><USER19> If people assume bitcoin itself is untraceable, they will most likely neglect to try to hide the entry/exit points. And from what I read around, many do make this assumption.

</comment></comment></comment></comment><comment><USER21> NPR should stick to reporting real news.

</comment><comment><USER22> There's a pretty good interview with Michael Clear in todays Irish Times:

[http://www.irishtimes.com/newspaper/weekend/2011/1008/122430...](http://www.irishtimes.com/newspaper/weekend/2011/1008/1224305442727.html)

</comment><comment> Anti-Ratfish I hope that British spellings weren't the basis of the UK search. A fair portion of the English speaking world use British spellings. Not that I'm claiming bitcoin for New Zealand.

</comment><comment><USER23> Good job, link to an https article when over half the content on the page is delivered via HTTP.

</comment><comment><USER24> Finally! Another bitcoin story makes it to the front page of HN again! It's been a long time. I was beginning to think the HN community has moved on to more important things. When will this Bitcoin nonsense fade away? I think the dollar/yuan situation is far more relevant than some fairy coins nobody uses outside of the World of Warcraft crowd.

</comment><comment><USER25> The line

> "I'm not Satoshi"

reminded me of this: <http://pbfcomics.com/archive_b/PBF045-Wise_Shitashi.jpg>

Wonder if Satoshi likes PBF..</comment>


The Joy of Psyching Myself Out - <AUTHOR> http://www.nytimes.com/2016/01/10/opinion/sunday/the-joy-of-psyching-myself-out.html?rref=collection%2Fsectioncollection%2Fscience&action=click&contentCollection=science&region=stream&module=stream_unit&version=latest&contentPlacement=2&pgtype=sectionfront <comment><USER2> I think it is really inaccurate to say that the work of a writer and the work of a psychologist are very different. Both require abstraction and a framework to define the narrative.

<comment><USER3> This could be true of literally any profession.

<comment><USER4> well they're all not all that different then</comment></comment></comment>


Vixle: A game engine that teaches kids to code - <AUTHOR> https://www.kickstarter.com/projects/realityfoil/vixle-a-game-engine-for-everyone

<comment><USER2> This reminds me [http://craftstud.io/](http://craftstud.io/) which is also a game to create games. It was also crowd founded [https://www.indiegogo.com/projects/craftstudio-real-time- col...](https://www.indiegogo.com/projects/craftstudio-real-time- collaborative-game-making).

</comment><comment><USER3> "A..." (presumably nonfree) "...game engine that teaches kids to code"

...by hiding the source from them?

<comment><USER4> I'm curious why precisely they need to see the source.

As a secondary note: Why would you expect it to be free? It's something that someone spent time on.

<comment><USER3> I'm curious as to why it should be hidden from them. Hiding source is the perfect way to create a "them and us" environment. "Sure, go and play and code away in your little sandbox but don't ever expect to understand how and why things in the game are achieved. That's _real_ programming."

As a secondary note, I "expect" to be able to see source as they "expect" me to run their code on my computer.</comment></comment></comment>


The Revolution by Lucio Russo (1996) [pdf] - <AUTHOR> https://www.ams.org/notices/199805/review-graffi.pdf <comment><AUTHOR> A recent post on HN reminded me of this great forgotten book. Where you to read it, you will captivated by a different tale on the science and technology of "ancient Greeks" (more specifically of the Hellenistic period of second and third century BC), how modern they were and how the modern times and modern science really got off trying to reach for those heights. You will be gifted with a complete new point of view over modern and ancient science, how it comes to be and how it can get lost on her way.</comment>


Robot Finger Does What Your Finger Can't - <AUTHOR> http://spectrum.ieee.org/automaton/robotics/robotics-hardware/robot-finger-does-what-your-finger-cant

<comment><AUTHOR> Not the high speed robot I was expecting <http://www.youtube.com/watch?v=-KxjVlaLBmk> but just as clever</comment>


Coub (YC S16) makes it easy to create short, looped videos - <AUTHOR> http://www.themacro.com/articles/2016/05/coub/ <comment><USER2> The monthly viewership figures (50m viewers, 500m views) are interesting, I've never heard of Coub before. Are there places we might have seen a Coub and not realised it, do you have integrations with other services, or are all your views driven through your website (from social media?)? Thanks!

<comment><USER3> Coub is very popular in Eastern Europe, but it is not well known in US yet. We are not locking content on our platform, our goal is to deliver our content in every social network, messengers, media. We already work great in FB, Twitter, Reddit, Tumblr, Telegram, Kik and lot more. A lot of media and news sites use coubs as a quote or animated illustrations. And we are heavily focused on more integrations to make coubs work everywhere.

</comment></comment><comment><USER3> Hi all! I am one of the founders of Coub. We are very excited to be in YC S16 batch. We will be happy to answer your questions about Coub.

<comment><USER4> Did your team have a technical co-founder when you guys applied to YC?

<comment><USER3> Of course. When we started making projects together, Anton was a designer and I was a programmer.

</comment></comment></comment><comment><USER5> How do you guys plan to monetize Coub? If it's through ads I can see a problem since the videos are very short.

<comment><USER3> Our users produce tons of great viral content. And while it is short, it is much easier to consume and become viral. So it could be a perfect marketing tool for brands. We have already made some experiments with monetization. We've made special projects with brands to involve our users to create viral coubs from their content, like this one we've made with Disney and Star Wars: [http://coub.com/theforceawakens](http://coub.com/theforceawakens)

</comment></comment><comment><USER4> How much did your final product change from your initial vision?

<comment><USER3> The core idea of the short looped videos did not changed at all. But the way people used it changed a lot. We provided the simple creative tool and our users created a lot of new formats using it: video mashups, diy music videos, quotes in news sites.

<comment><USER4> Thanks for the insight!

</comment></comment></comment><comment><USER6> What is your road plan for the next year? How do you plan on growing?

<comment><USER3> We have a great creative community that produces a lot of great content, our goal is to show this content to everyone. We will improve our creation tools and work with our core users to understand their needs. And we also will improve the ways it could be shared in social networks, messengers, media sites etc to help our content spread everywhere.

</comment></comment><comment><USER7> ...So, webms?</comment>


Ask HN: What is happening to Namecheap? - <AUTHOR> I transferred every single domain I had over to them about 5 years ago because they actually were a great domain registration company at the time.
Just today... I tried to buy some .ca domains and was given some cryptic error message of "unable to contact provider" and requested to try again... which I did for about 10 minutes... at which point I contacted their online chat.. and was informed that they have been unable to register .ca domains for the past 4 days with no estimate as to when they will be able to do so in the future...
That's not the only issue I have had with them recently... but it's the most serious which is why I brought it up.
I just bought the two domains I was after through GoDaddy reluctantly.
Has Namecheap had a significant corporate structuring change or something recently? <comment><USER2> I think the country code ones require that they can actually talk to the registrar of said country? I remember a company talking about trouble with a .io domain they couldn't fix when the people in that region were awake.</comment>


Show HN: Phuslu/Log – Structured Logging for Humans - <AUTHOR> https://github.com/phuslu/log <comment><USER2> These don't seem like very practical interfaces to me. One of the nice features of glog is when you log at a high severity it flushes all the output buffers and syncs the files. For this to work, the lowest level of glog has to be aware of the severity. If you cut off that knowledge in the middle of your interface (by serializing the log early, and passing down []byte) then you don't have the information you need at the right place and time.

This library author should have realized their error when they needed to add the parseLevel function to get the severity back out of the formatted output.

Aside from the weird interface, this library is pretty cavalier about unix file i/o. This function will never notice that all its writes are failing. [https://github.com/phuslu/log/blob/master/file.go#L67-L96](https://github.com/phuslu/log/blob/master/file.go#L67-L96)

<comment><USER3> Also little things like the w.mu.Unlock() at the end of the function instead of using defer show that this was probably written by (Go) beginners.

</comment></comment><comment><USER4> This seems like an alternative to Zerolog, with some very small performance improvements. I don't understand why you wouldn't just improve Zerolog, or at least (if the original authors don't like your changes) just fork it. For me, while this looks decent, it doesn't justify an entirely new project, nor do I see any particular reason to switch.

Personally, I wish there was more focus on assimilating context.Context. While I dislike Context for its virulence in codebases, it's a necessary evil at this point. Correlating log statements with some request and following the logic flow (not just within a single app, but across apps) becomes really important in complex systems. The only way to really accomplish this is to flow the logger through Context. You should never instantiate a new logger except at the root of the program.

</comment><comment><USER5> For people interested in this, there's a great presentation, The Hunt For a Logger Interface[0].

It describes how approaches to structured logging evolved over the years. I especially like the idea of using closures as logging context values, which get evaluated every time they're printed, it often greatly simplifies contextual logging.

[0]: [https://go- talks.appspot.com/github.com/ChrisHines/talks/str...](https://go- talks.appspot.com/github.com/ChrisHines/talks/structured-logging/structured- logging.slide#1)

</comment><comment><USER6> Ooooh, stop the "for Humans" insult already! It suggests that all other libraries are not "for humans" somehow. It's very offensive to everybody. Terrible branding.

<comment><USER7> It's still a valuable information, it claims that they focus on user friendliness and fight clutter/cognitive overhead / boilerplate. How would you alternatively communicate this?

<comment><USER8> "... - Go Logging Made Simple" or whatever else. There's many ways to communicate this without the stupid "for humans" tag.</comment></comment></comment>


AdGrok (YC S10) announces Groktoberfest - <AUTHOR> http://adgrok.com/groktoberfest-2010

<comment><USER2> awesome news guys - pls send beta invite asap - thanks!

<comment><USER2> not that I care too much. but why down vote this comment? just wondering.

<comment><USER2> fair enough - but to be clear I'm hardly begging, I met the AdGrok folks a few weeks back and would be a real customer if the product is awesome.

<comment><USER2> cool, I'm excited to check out the app.

<comment><AUTHOR> Where did we meet?</comment></comment></comment></comment></comment>


Awaiting Layoffs, WeWork Employees Say Founder's Payout Is 'Graft' - <AUTHOR> https://www.nytimes.com/2019/11/08/business/wework-employees-letter.html <comment><USER2> And yet this is the system we all implicitly consent to in exchange for a job until people much more powerful from us are suddenly compelled to prevent this from happening</comment>


MongoDB and RocksDB at Parse - <AUTHOR> http://blog.parse.com/announcements/mongodb-rocksdb-parse/ <comment><USER2> MongoDB seems to have a bad rep on HN for its various shortcomings, and yet here FB/Parse seem to use it. Is the bad rep overrated? (Honest question)

<comment><USER3> No, the bad reputation is not overrated. This is the essence of why appeal to authority is a fallacy. Facebook is (or was) largely written in PHP; that doesn't mean PHP's bad reputation is overrated. Many banks run on COBOL; that doesn't mean Cobol's bad reputation is overrated.

MongoDB's bad reputation is well-deserved and based on a long history of misleading (or outright false) marketing claims coupled with poor technical properties (from unavoidable data loss to horrible compaction performance to global write locks). At this point, even if all the known issues were fixed (and they aren't) it would still take a long time for their reputation to recover. Given that some of MongoDB's direct competitors do _not_ suffer from these problems and can largely function as drop-in replacements, recommending people use something else is really the only responsible course of action.

<comment><USER4> _some of MongoDB 's direct competitors do not suffer from these problems and can largely function as drop-in replacements_

Which competitors are you referring to? Personally I find the power and flexibility of the MongoDB query language to be a big positive that for many cases outweighs performance and reliability issues. It seems like no other competitors are quite there.

<comment><USER5> I don't know that I would call them competitors, but DB2 and Informix both have JSON support and both implement the MonogoDB protocol.

<comment><USER6> Also ToroDB ([https://github.com/torodb/torodb](https://github.com/torodb/torodb)) implements the MongoDB protocol. But it uses PostgreSQL as a backend and it's open source ;P

(ToroDB developer here)

</comment></comment></comment></comment></comment><comment><USER7> What's the main use case for something like RocksDB ? Is it an out-of-process local caching engine (in-memory + unloads to disk if necessary) ? Or is it something different? Can it communicate between nodes? Why would I use it instead of a large dictionary in memory?

<comment><USER8> I'm going to provide basic answers here. You can look at the homepage for more detailed answers (the video linked there is very helpful too) [1].

Main use case: Multi-threaded low latency data access. It is optimized for use cases where the insert/update rate is very high. In short, it has an LSM tree to quickly add new/updated records. At frequent intervals this LSM tree is merged into the on-disk pages. It is very well engineered, making the lookups very fast as well.

Queries can touch data on disk as well.

Rocks is an embedded database. Natively written in C++, but has bindings for other languages. [2]

No, nodes do not talk to each other.

Something I am personally excited about: RocksDB has a merge operator, which is (probably) still in development. It allows you to update the value of an entry by providing a merge function. It is extremely useful to merge data if you binary format supports it (for example, protobufs do this natively, and it will be very smart to store your protobuf binary natively in Rocks, and do regular merges to it).

No, an in-memory dictionary will provide far fewer guarantees and features.

[1] [http://rocksdb.org/](http://rocksdb.org/)

[2] [https://github.com/facebook/rocksdb/wiki/Third-party- languag...](https://github.com/facebook/rocksdb/wiki/Third-party-language- bindings)

</comment></comment><comment><USER9> By the way, does anybody knows how Parse execute sandboxes javascript on the server ? I can't find an article on that matter.

</comment><comment><USER10> > The RocksDB engine developed by Facebook engineers is one of the fastest, > most compact and write-optimized storage engines available.

Will it fix MongoDB's data loss issues? I'm hoping that is what "write- optimized" is partly implying.

<comment><USER11> The 'compact' and 'write-optimized' are probably to differentiate RocksDB from LMDB, which pretty thoroughly smokes it for read loads and has an arguably more useful transaction model (which it pays for by single-threading writes and having a little more write-amplification for small records).

<comment><USER12> RocksDB is also single-writer. [http://rocksdb.org/blog/521/lock/](http://rocksdb.org/blog/521/lock/)

"write-optimized" means they take great pains to turn all writes into sequential writes, to avoid random I/O seeks and get maximum I/O throughput to the storage device. Of course structuring data as they do makes their reads much slower.

LMDB is read-optimized, and foregoes major effort at those types of write optimizations because, quite frankly, rotating storage media is going the way of the magnetic tape drive. Solid state storage is ubiquitous, and storage seek time just isn't an issue any more.

(Literally and figuratively - HDDs are not going extinct; because of their capacity/$$ advantage they're still used for archival purposes. But everyone doing performance/latency-sensitive work has moved on to SSDs, Flash-based or otherwise.)

"compact" doesn't make much sense. There's nothing compact about the RocksDB codebase. Over 121,000 lines of source code [https://www.openhub.net/p/rocksdb](https://www.openhub.net/p/rocksdb) and over 20MB of object code. Compared to e.g. 7,000 lines of source for LMDB and 64KB of object code. [https://www.openhub.net/p/MDB](https://www.openhub.net/p/MDB)

<comment><USER11> I hear you RE: compact source code, and that as much as the benchmarks are why I use LMDB (thanks) and not Rocks when I have a need.

I was under the impression that Rocks manages more compact storage, probably as another consequence of all those sequential writes being packed right next to each other, rather than LMDB's freelist-of-4k-pages model.

Is that the case or was I misreading whatever mailing list I got that from? Don't get me wrong, I value not having compactions more than slightly less write amplification, just checking my understanding here.

<comment><USER12> RocksDB is more compact storage-wise when records are small. Notice here [http://symas.com/mdb/ondisk/](http://symas.com/mdb/ondisk/) that RocksDB space is smaller using 24 byte values, but same or larger at 96 byte values. By the time you get to 768 byte values, LMDB is smallest.

<comment><USER11> Cool, thanks for the response and for writing lmdb!

</comment></comment></comment></comment></comment></comment><comment><USER13> "And we now have some exciting news to share: we are running MongoDB on RocksDB in production for some workloads and we're seeing great results!"

Some stats and a way to replicate would be nice here.

<comment><USER14> Like I said in the post, we're preparing a series of blog posts for next week that does a deep dive into our workloads, our benchmarks, how to repro, etc.

Spoiler alert: we consistently get around _90%_ compression and the inserts are ~50x faster. ^_^

<comment><USER15> Compared to MMAPv1 or compared to WiredTiger?

<comment><USER14> We're testing with both. Somewhat hindered by the fact that WT often dies trying to import our data, or crashes, or loses data in weird ways. :( I believe WT will eventually get there, but rocks has been unfathomably more solid for us so far.

<comment><USER16> WT has been pretty decent for us (only TB level amount of data, so probably not as much as you folks are dealing with). The thing it has issues with is _occasionally_ using the wrong indexes and caching them, and even putting hints in does not solve the issue in all cases. It started happening on WT, but it seems to be mongo's issue and not the storage engine.

<comment><USER14> We have a lot of edge cases in our data set and usage model, no question. Glad it's working well for you. :)</comment></comment></comment></comment></comment></comment>


Pinterest Brings 'Shazam for Food' Idea from HBO's Silicon Valley to Reality - <AUTHOR> https://net.xyz/2017/05/23/pinterest-brings-shazam-for-food-idea-from-hbos-silicon-valley-to-reality/ <comment><USER2> Not hotdog.

</comment><comment> rm_-rf_slash I don't see how this can be anything but a gimmick unless you're blind and you have terrible friends.

What _would_ be useful, however, would be a way to identify ingredients themselves. For people with severe food allergies, such a technology would be a godsend.

</comment><comment><USER3> You can stay for 12 months no matter what owner says.

</comment><comment><USER4> Who uses pinterest anyways ? Genuine question

<comment><USER5> Lot of people do. My girlfriend has like 50 odd pinterest boards for everything from DIY ideas to cooking recipies. And I know couple of my designer friends use it to collect and organise their ideas. It definitly fills out a vaccum for visual interest based discovery. I also use it on decently regular basis and I like the fact that it is not overly social.</comment></comment>


Adversarial Examples That Fool Both Computer Vision and Time-Limited Humans - <AUTHOR> https://arxiv.org/abs/1802.08195 <comment><USER2> The interesting data are in "Table Supp. 1" at the bottom of page 14.

I opened the paper hoping to see some examples of images that look to me like one thing on first glance, and something else on closer inspection. The best image is the one with the spider on a blurred-snake background, and that's not going to trick anyone who looks at it for more than a second.

The humans were shown each image for either 63ms or 71ms. That's 1-2 frames of a movie. So whilst the result is important, it's not as surprising as you might expect.

<comment><USER3> To be fair to the computers, that's about the speed we train image classifiers to run at, if not faster. It seems likely that if we were willing to tolerate a second or two of latency we might be able to devise architectures that are able to see through some of the images that confuse current architectures.

<comment><USER4> The problem is not that we're not willing to tolerate latency. The problem is that the model of how neural networks are trained is completely different from how humans learn to see. When a neural net is trained, it is shown a static image, weights are tweaked until the output is correct, and then it is shown a _completely different_ static image and the process is repeated. Neural net learning is iterative, discrete, and supervised. Human visual learning, by contrast, is continuous and largely unsupervised. We don't see snapshots, we see continuously varying images. Furthermore, we actively interact with the world by manipulating objects and shifting our gaze, and that information is also incorporated into our visual learning. Finally, humans have very advanced feature detectors built in to our brains by evolution. We don't learn to see cats, we have cat-detectors built in to our brains by our DNA, which learned to detect cats because that was a useful skill in our ancestral environment, when cats were a lot bigger and could eat us. We do learn that the thing that our cat-detectors detect is called a "cat", but we don't "learn" what a cat (or a human) _looks like_. That's built in to our brain wiring. (There are some things that we do learn what they look like, like cars, which obviously didn't exist in the ancestral environment. That's why all humans can tell the difference between a cat and a dog, but not everyone can identify whether something is a Honda or a Toyota.)

The point is: the process that humans go through when they learn is completely different than the process that contemporary neural nets go through. No one has yet come up with a theory that combines all of the features of human learning into an implementable algorithm. It will surely happen eventually, but there are at least a few more conceptual breakthroughs that will need to happen. Minor tweaks to back-propagation won't do it.

<comment><USER5> Do you have a citation on humans having from birth classifieds for things like cats?

<comment><USER6> I think the GP didn't mean to imply that humans have an innate cat representation from birth.

It makes more sense to interpret the comment as saying that humans don't learn an internal _image_ representation. Humans _do_ learn representations of bridges, aircraft, cats, etc. But those are built on top of an image processing/representation system that we are born with, analogous to raster graphics?

Edit: Maybe I'm misreading the comment. What's definitely built in at birth is things like edge and orientation detectors. A zebra detector would be a surprise.

<comment><USER4> > I think the GP didn't mean to imply that humans have an innate cat > representation from birth.

Actually, that is what I meant, though I don't have a reference for cat detectors per se. But there is ample evidence for innate feature detectors of comparable complexity (e.g. human facial expressions), even if the actual target is something other than cats.

</comment></comment></comment></comment></comment></comment><comment><USER7> Speaking of similarity between CV and human visual systems; it was kinda striking to me just how psychedelic/"trippy" the "universal adversarial perturbations" (see page 5 in [https://arxiv.org/pdf/1610.08401.pdf](https://arxiv.org/pdf/1610.08401.pdf)) look.

Indeed, the look of visual hallucination "form constants" is intimately related to the machinery in the visual cortex that detects edges/contours/surfaces: [https://www.math.uh.edu/~dynamics/reprints/papers/nc.pdf](https://www.math.uh.edu/~dynamics/reprints/papers/nc.pdf) and such visual hallucinations can be elicited without any drugs or physiological interventions/defects -- just via diffuse flickering light: [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3182860/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3182860/)

<comment><USER8> There's a video demo of the first paper here: [https://www.youtube.com/watch?v=jhOu5yhe0rc](https://www.youtube.com/watch?v=jhOu5yhe0rc)

i was trying to build a bit of intuition about this paper by considering a trivial case where there are two classes, and the classifier is linear, in very low dimension. consider the following trivial example:

[https://en.wikipedia.org/wiki/Linear_classifier#/media/File:...](https://en.wikipedia.org/wiki/Linear_classifier#/media/File:Svm_separating_hyperplanes.png)

in this example, the decision boundary from different classifiers is shown as H_1, H_2, H_3. The "universal" perturbation for each of the three classifiers would be a small vector normal to the each classifier's decision boundary. This paper defines "universal" perturbation with respect to the choice of input from the population of inputs, but each "universal" perturbation is optimised specifically to target a single model (aka classifier).

both H_1 and H_2 do a reasonable job of separating the two classes, but the H_1 decision boundary with the smaller margin is more vulnerable to misclassification if inputs are perturbed by a small vector normal to its decision boundary.

You can imagine translating the input space a bit to the right -- this would result in H_1 misclassifying say 2 out of the 18 data points shown, whereas H_2 (the SVM generated decision boundary with maximal margin) classifier would not experience any errors.

</comment></comment><comment><USER9> Interesting. Anyone in the space have some meta/context to share?

I may have this wrong but it _seems_ the authors are very interested in a particular subset of classification errors common to machines and humans.

What is that subsets of "transferable" mistakes are trying to find? What does the existence of a particular subset of "adversarial example" (sneakily doctored images) tell us either about human or machine brains?

<comment><USER10> This is what the authors say: "A rigorous investigation of the above question creates an opportunity both for machine learning to gain knowledge from neuroscience, and for neuroscience to gain knowledge from machine learning."

</comment></comment><comment><USER11> Does this mean we can stop seeing adversarial examples as a deep fundamental flaw of deep neural networks? Seems like human system experiences them as well!

<comment><USER12> Aren't optical illusions just adversarial examples for people?

<comment><USER13> No, and I wish people would stop that meme.

Humans can obviously be tricked, in a variety of ways. But adversarial images take advantage of the fact that image-recognizing neural networks do not fit their image recognition into a full fledged understanding of the world like we do. So a few pixels here and there can make a truck look like a panda and the algorithm never says, "But wait, pandas are mostly black and white and this is mostly yellow," or, "But I don't see legs anywhere, or ears."

Optical illusions mostly don't cause high level image misclassifications. To the extent that they are anything similar, they're the reverse: using our general world understanding to cause glitches in our information processing, such as cases where you think something is darker or lighter than it is, or bigger or smaller, or bent or straight. Those are your mind applying rules that are based on "how the world usually appears at a high level" to an image where those rules do not in fact apply.

<comment><USER12> I'm no machine learning expert, but it seems to me that neural networks just don't really work like people do, as much as people would like to claim that they've created something that works like the human brain.

<comment><USER13> Sure. So, then, why did you posit a direct parallel between optical illusions and adversarial images?

<comment><USER12> Because that's another thing I can now mention when people tell me neural networks are like the human brain, since this is an example they often like to bring up.

</comment></comment></comment></comment></comment></comment><comment><USER14> I'm looking forward to when these are integrated into Recaptcha...

</comment><comment><USER15> Aren't we all time-limited humans?

<comment><USER16> On a long enough timeline the survival rate for everyone drops to zero.</comment></comment>


Mibbit (axod's startup) video featured on Google Code Blog - <AUTHOR> http://google-code-updates.blogspot.com/2009/02/now-playing-developer-created-videos.html

<comment><USER2> Hehe thanks guys, it was quite fun to do, not so much seeing myself say "erm" quite so much (This is after I edited out several 'erm's).

FYI The video was put together with screenflow and iMovie.

If you use some of the Google APIs I'd definitely recommend putting something together and submitting it, especially ideas of what APIs they should do, improvements they could make. They really listen to the users.

</comment><comment><USER3> I like axod. I don't follow his story in any way, but what I like about his product is that it offers actual value, there's no barrage of marketing, there's no incessant self profiling, there are no blog posts where he praises himself by describing how he did things right.

He's the underdog guy that one roots for, the real deal, the one that focuses on his product, and not on his selling.

Axods ability to give this impression in just a few articles about him and his product should be a model for startups who want to stay genuine.

<comment><USER4> His startup may be great, but unfortunately, to me, he tainted himself as a credible well-meaning business person when in my opinion he used YC as a platform to promote his bigoted anti-Gay views on California's Proposition 8. I'm guilty too of talking about non-tech stuff on YC, but that's only part of the issue; the disturbing thing is to see someone using their position in this community in a way that promotes denying certain people their rights. I'll be downmodded for being off topic, no doubt, but somebody has to speak up about this.

<comment><AUTHOR> People are more complex than you give them credit for. Axod is an ace coder, a smart business guy, a talented musician, a great dad... and yes, _dead wrong_ about prop-8.

I wouldn't be so quick to write-off someone for a single flaw. We all have them.

<comment><USER2> Heh thanks ;)

Just to clarify though (I think this argument is along the lines of politics/religion/etc - no one ever changes their viewpoint)... Thought I'd state my case though since people seem to think I'm 'wrong' ;)

       * I am 100% for equal rights for all.
       * I would rather they call it something else
         we have waiter and waitress to determine the sex, why not marriage and <insert_other_word_here>?
       * I don't feel strongly enough about it to actually vote on it - either way.
       * If I was gay, I wouldn't really care enough about it either to push for a change from the status quo.
         IMHO There are more important things that need fixing in the world.

If people truly think it's a cause worth fighting for, then go for it. Hope it brings them happiness.

I'm not wrong though, I'm just a person with an opinion.

<comment><USER5> Your text stretched out the screen. :-( (EDIT: Thanks!)

I disagree with you, but I'm sure you don't want this to turn into a debate. I care more that you've created a great service, which you have. However: if you weren't allowed to marry the person you were in love with, I think you'd feel differently. You're married right now, no? Wouldn't it suck if you'd been banned from marrying her?

<comment><USER6> In his defense, he doesn't seem to care if they're married, he'd just prefer it was called something else.

I campaigned against 8 in my area, but I think that if we're going to argue against its supporters, we ought to at least argue against what they're actually saying. :-)

<comment><USER5> Yeah, and there's a separate argument for that, but this isn't the place to argue it. This is the place to congratulate him on his incredible site.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> axod's too shy to post his own good news, but even bigger (in my opinion) news: mibbit will become the default irc:// handler in Firefox. I have to admit that irc:// links are pretty rare, now, mostly due to how unreliably they work. Big usability win for Firefox.

See [http://informationisart.com/stas/mibbit-as-an-irc- protocol-h...](http://informationisart.com/stas/mibbit-as-an-irc-protocol- handler-in-firefox-31-in-your-locale)

Good work mibbit, axod.

</comment><comment><USER8> congrats axod!

getting into firefox is huge.

we (<http://www.amahi.org>) use it to help our user community better and we saw a bump in the number of people using our channel for support, questions or just plain cheering us up, when we started using mibbit.

while i am here, a suggestion: we do very consistently see that sending PMs to users (most of them are fairly new to irc) that use mibbit is nearly impossible for them to see in the default skin. not enough visual variation or attention to catch their eye. liven it up a little :)

kudos otherwise!

</comment><comment><USER9> Wow, congrats, that is a lot of extra advertising dollars that will be coming in.

</comment><comment><USER10> Congratulations axod! Mibbit is easy to use, and I rely on it when I'm out and about with no irc client. It's a credit to you - keep up the great work :)

</comment><comment><USER11> Congrats axod!

</comment><comment><USER12> how does mibbit make money?

<comment><USER13> I recall axod saying he made revenue from the contextual text ads above irc rooms. They change depending on what the room is about/talking about so they are actually pretty relevant.

<comment><USER12> I am in the advertising biz, and I have a really hard time believing this.

<comment><USER2> What part do you not believe? :/

<comment><USER12> Hi - text ads are about end user conversion. Otherwise it is just click fraud. People clicking have to buy something in the end. I have a hard time believing that IRC channels have a good enough conversion to pay for bandwidth and salaries.

I'm seeing that this is a longer conversation, but consider this simple example. Facebook ad rates have dropped significantly from their early days. When people are communicating in an application (which is all Facebook really is), they are not in the mood to buy/convert. So, if you are receiving income, great, but I doubt it will be sustainable. Take a look at the ads you get and see if you get re-buys.

Anyways, please don't take this as harsh. This is probably one of the hardest problems for a publisher to solve. Twitter is just trying to figure it out right now.

<comment><USER2> I think Twitter has larger problems. They have an open API which leaves little room to monetize.

"People clicking have to buy something in the end"

That's never been true. You have ads for brand awareness, signups, ad arbitrage, etc etc.

I believe the ads above GMail are pretty lucrative... also people on webchat are often trying to buy something.

      >> "Hey, what book should I get to learn javascript"
      >> "Hi what's a good webhost"

And that's not including the massive areas of non-tech IRC communities.

"Anyways, please don't take this as harsh."

hehe it's ok, I've been making money off online advertising since 1999. I'm 90% sure I know what I'm doing ;)

<comment><USER12> Ah - twitter raised $30+ million.. Is that is what you mean by larger problems :-)

Regarding CPC. People have to buy something is the VAST majority of the txt ad market. There is near ZERO brand awareness in that market. If an advertiser is buying txt ads on IRC and hoping for conversion, I would be really, really surprised that they re-buy. (aka - you are getting filled by a network)

Your example text tells me how you are really getting revenue. You are using context for affiliate deals. That _actually_ might be viable.

Re: since 1999... cool, what sites were you involved with before?

<comment><USER2> >> "Ah - twitter raised $30+ million.. Is that is what you mean by larger problems :-)"

Sure, that's a pretty risky position to be in IMHO. Now they either have to suddenly be insanely profitable, or get bought for a _lot_ , or raise more money. You have to have balls of steel to play that game.</comment></comment></comment></comment></comment></comment></comment></comment>


The Floating-Point Guide (2010) - <AUTHOR> https://floating-point-gui.de/ <comment><USER2> You have to be very careful using floating point on embedded processors not only for the reasons in this website, but for speed too! Unless you have a separate floating-point core (ARM Cortex M4s have one, M3s do not) it can take 1,000's of clock cycles to perform any floating point math like addition, multiplication, etc.

Even with a floating point processor you need to be careful when switching into and out of interrupts! The floating point core has it's own set of registers you need to keep track of. Doubles are even worse!

Basically it is almost always better to use integers when you can, and be aware of what types you are using (always important in C anyways).

<comment><USER3> Something seems off about your numbers given that you can emulate fp with integer ops in much less than 1000 instructions.

<comment><USER4> probably because on cpu without fp units, fp instructions cause invalid instruction exceptions to be raised that need to handled by the kernel, and that can be very expensive (that used to be a thing on x86 in the past).

<comment><USER5> Kernel? What kernel? You probably aren't using a separate kernel with an M3, though you might have an RTOS. You'll, as a rule, have the compiler putting the floating point emulations in directly. I think the performance hit is only around a factor of 100 or so for an M3 though.

</comment></comment></comment></comment><comment><USER6> FWIW and for all its other shortcomings, Raku (nee Perl 6) handles common arithmetic in a manner that wouldn't surprise a mathematician. Or non- mathematician, for that matter. Witness:

        $ python3 -c 'print(0.3 == 0.1 + 0.2)'
        False

        $ ruby -e 'puts 0.3 == 0.1 + 0.2'
        false

        $ perl6 -e 'say 0.3 == 0.1 + 0.2'
        True

<comment><USER7> As a mathematician, I am actually very surprised by perl's 6 behavior here. What the hell is going on? Does it use fixed point arithmetic or what?

<comment><USER8> It uses exact rational arithmetic for values that it can represent that way, preferring correctness to efficiency. Scheme and some other languages do the same thing.

Using imprecise but efficient-to-calculate-with-numbers for exact literals by default is probably the most pervasive premature optimization in all of computing.

<comment><USER7> > It uses exact rational arithmetic for values that it can represent that way, > preferring correctness to efficiency.

This is _exactly_ the same situation as with floating point numbers. In both cases you have a predetermined finite set of rational numbers, with exact rational arithmetic when you stay within those numbers, and deterministic rules when your operation exits this finite set.

> Using imprecise but efficient-to-calculate-with-numbers for exact literals > by default is probably the most pervasive premature optimization in all of > computing.

I do not see how this is a matter of precision nor efficiency. Floating point arithmetic was deemed more useful for general purpose for good reasons: the representable numbers are mostly scale-free, so that you do not care about the absolute size of your numbers (you can compute in armstrongs or in parsecs and obtain essentially the same results). With rational arithmetic using bounded integers, you cannot represent very large or very small numbers. On the other hand you can represent small fractions like 1/3, which is arguably useful in some cases, but not really a big deal in practice. There's no reason why rational arithmetic with bounded numerator and denominator could not be efficiently implemented in hardware as fast as floating point; I do not understand your point.

<comment><USER9> It is not at all the same situation as with floating point numbers.

1\. It does not use a predetermined finite set of rational numbers. It uses a bigint numerator and a 64-bit denominator.

2\. Even the case of bounded numerator and bounded denominator would preserve more of the nice mathematical properties of rational arithmetic than IEEE 754 floating-point arithmetic does (e.g. the associativity of addition).

3\. While the latter could be implemented in hardware, it is not implemented in hardware. The defaults for literals prefer the choice that is implemented in hardware, IEEE 754 floating-point. This is a premature optimization.

<comment><USER7> > 1\. It does not use a predetermined finite set of rational numbers. It uses > a bigint numerator and a 64-bit denominator.

This is rather ugly for it is not closed by inversion.

> 2\. Even the case of bounded numerator and bounded denominator would > preserve more of the nice mathematical properties of rational arithmetic > than IEEE 754 floating-point arithmetic does (e.g. the associativity of > addition).

I do not see how this can possibly be the case. How do you define rational arithmetic with bounded denominators so that addition is associative?

> 3\. While the latter could be implemented in hardware, it is not implemented > in hardware. The defaults for literals prefer the choice that is implemented > in hardware, IEEE 754 floating-point. This is a premature optimization.

Alright, but this view is rather subjective, and only valid if you find rational arithmetic more natural than floating point (which many people do not). Regardless of efficiency, using rational arithmetic with bounded integers in numerical computing would be extremely unnatural to most analysts, they would always need to "normalize" the computations so that all the numbers do not become too small, and a lot of ugly tricks that are not needed in floating point.

Besides some trivial decimal arithmetic (that can be easily implemented in fixed point for the common use case of counting money), I do not really see the point of the rational representation with bounded ints. Of course, when the denominator is allowed to be a bigint, this is very useful in math, but you'll agree this is a completely different context.

<comment><USER9> > I do not see how this can possibly be the case. How do you define rational > arithmetic with bounded denominators so that addition is associative?

There's only one mathematically natural choiceIn the case of bounded numerator and bounded denominator. You simply define (an/ad) + (bn/bd) = (bd × an + ad × bn) / (bd × ad) where the + on the right hand side is ordinary twos complement addition (and the equality test for an/ad and bn/bd is ad × bn == bd × an, which also naturally accounts for the zero-denominator-due-to-zero-divisors cases; alternatively, you can put everything in lowest terms, but there's no point).

> Regardless of efficiency, using rational arithmetic with bounded integers in > numerical computing would be extremely unnatural to most analysts

Floating-point was invented by numerical analysts for numerical analysts. No wonder they find it most natural. The overwhelming majority software developers are not numerical analysts, and most programming languages do not target numerical analysts. Nobody says that numerical analysts should not use floats (except maybe the unum guy), we're arguing about defaults in languages that explicitly do not have numerical analysts among their core target audience.

<comment><USER7> >> I do not see how this can possibly be the case. How do you define rational arithmetic with bounded denominators so that addition is associative?

> That's easy. In the case of bounded numerator and bounded denominator, you > simply define (an/ad) + (bn/bd) = (bd x an + ad x bn) / (bd x ad)

This definition is not complete. What happens when "bd x ad" is larger than the maximum allowed denominator ?

> The overwhelming majority software developers are not numerical analysts,

the overwhelming majority of young people who learn to program today do machine learning, which is based on mungling huge arrays of floating point numbers. Tell them to use rationals if you dare!

<comment><USER9> > This definition is not complete. What happens when "bd x ad" is larger than > the maximum allowed denominator ?

All integer operations are twos complement operations, as I'm sure you guessed anyway.

> the overwhelming majority of young people who learn to program today do > machine learning, which is based on mungling huge arrays of floating point > numbers. Tell them to use rationals if you dare!

That's very far from factually true, but this kind of argument is not relevant to the Raku defaults in any case. A machine learning library can use whatever optimized number representation its creators wish to use. In fact, the default choice of most language implementors (double-precision floating point) is typically not the representation used in training or inference on deep learning models anyway. The 1080Ti is fast enough only with single-precision floats.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Discussion when I created the site and first submitted it to HN: [https://news.ycombinator.com/item?id=1257610](https://news.ycombinator.com/item?id=1257610)

</comment><comment><USER11> FWIW, their "basic answer" page is the simplest i've seen that neither lies or omits critical factors in the 0.1 + 0.2 problem. It's probably a good starting point that induces some lingering questions tempting you to find out more.

If you want a thorough understanding you will want to look at representation- error, rounding-error, error-propagation, why they exist and how they interact.

The interplay between those three forms of numerical error in floating point numbers will also allow you to more easily see the world of limitations of fp beyond 0.1 + 0.2 for yourself.

<comment><USER12> I understand the "problem" from the hardware perspective, but I still don't accept their "basic answer" as reasonable.

> It's not stupid, just different.

Over the past 50 years, my computer has adapted to how humans normally operate in nearly every other way. Why do they continue to use this system which produces results different from what any normal person expects?

> Computers use binary numbers because they're faster at dealing with those

Computers are faster at dealing with all-caps ASCII, too, but we've accepted here that micro-optimization is less important than _doing what people want_. Most of the languages I use have even moved past _fixnums_. Why have we not improved real arithmetic since 1985?

<comment><USER13> > Over the past 50 years, my computer has adapted to how humans normally > operate in nearly every other way. Why do they continue to use this system > which produces results different from what any normal person expects?

Lisps and Lisp-derived languages, like Scheme, have had a proper numerical tower, including rationals, for decades now. Using reals is optional, but using rationals and everything else imposes an efficiency cost, so people make their decision. Implementing rationals in hardware would not necessarily make them more efficient; that is, if you think having rational support in hardware would help, you have to make the case. It isn't an automatic win:

[https://yosefk.com/blog/its-done-in-hardware-so-its- cheap.ht...](https://yosefk.com/blog/its-done-in-hardware-so-its-cheap.html)

<comment><USER12> The numerical tower is one of the features of Lisp that the Algol descendants have not yet stolen, and I don't know why not.

"Efficiency" is tough to believe given all the other inefficient yet nice features that have been universally adopted, like Unicode, variable length lists, bigints, etc. In many dynamic languages, every method call is a hash table lookup, yet we're expected to believe they don't use Decimals by default because it would be too slow? In C++ I'd buy that excuse.

</comment></comment></comment></comment><comment><USER14> A very useful resource that I've used quite a few times in the past for comparing floats: [https://floating-point- gui.de/errors/comparison/](https://floating-point-gui.de/errors/comparison/). The latter also provides the following link to unit tests that cover a lot of edge cases: [https://floating-point- gui.de/errors/NearlyEqualsTest.java](https://floating-point- gui.de/errors/NearlyEqualsTest.java)

</comment><comment><USER15> Given the name I thought the site would have a GUI for playing around with floating-point numbers, like this one: [https://www.exploringbinary.com/floating-point- converter/](https://www.exploringbinary.com/floating-point-converter/)

The "On Using Integers" page seems very narrowly applicable because it only discusses fixed-point in the context of currency; in a lot of other applications, notably DSP and other multimedia, fixed-point is the norm.

<comment><USER10> The page is about using fixed point types to avoid binary rounding, which is the underlying issue the whole website is about.

AFAIK in DSPs you use fixed point for a completely different reason, namely because it's simpler and thus more efficient to implement in silicon.

</comment></comment><comment><USER16> Wot, no Goldberg? E.g. [https://dl.acm.org/citation.cfm?id=103163](https://dl.acm.org/citation.cfm?id=103163) or [https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.h...](https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)

<comment><USER10> It's in the links of course, but I wrote the site specifically because I saw it being used too often as a kneejerk response to basic questions, where it's not helpful at all.

<comment><USER17> Thank you! The Goldberg article is a terrible way to learn about floating point, and the frequency with which it is referred to on StackOverflow is really disheartening.

<comment><USER18> Why do you say that? It is an extremely good paper and provides a practical and _high-level_ overview in an accessible (details to follow) format. If it's still just too technical, then a) know there is are "subtleties" and b) use double precision c) it's hard because... reasons.

<comment><USER17> I disagree about practical and accessible:

\- its exposition is complicated (trying to prove everything in a general base makes it difficult to understand)

\- it's woefully out of date (lack of guard digits haven't been an issue for at least 25 years, extended precision hasn't been an issue for the past 10 or so, and most languages now default to having fairly strict floating point semantics)

\- it gets bogged down in irrelevant minutiae (rounding modes and exception flags, while available in modern hardware, aren't really supported by any modern languages/compilers)

\- it doesn't really provide any practical advice (it barely mentions binary- decimal conversion, it jumps to doubling precision and Kahan summation without suggesting any intermediate steps such as sorted or pairwise summation).

But my biggest complaint is the frequency with which users are referred to it on StackOverflow as if (1) it is a good way to learn about floating point concepts, and (2) anyone using floating point numbers should be expected to understand it all.

<comment><USER18> I don't even disagree from a purist standpoint. And yes, I think everyone should read it. But they won't all, and don't need to, understand it.

But um, so a sophomoric summary without the "complications" of proving it is NOT better nor more accessible.

And I see none of your bullet points are improved upon in the linked paper.

</comment></comment></comment></comment></comment></comment><comment><USER18> This article is terrible. Referring to the Goldberg paper as "long article with loltz of formulas" in a throwaway blog post shorter than most of these comments is telling.

The "absurd" result that [1+2 != 3] * (0.1) isn't even the problem with floating point. It's an even simpler misconception that "even" vs. "repeating" fractions are the same for base 10 vs. base 2 fractions.

So we can understand that 0.33+0.33+0.33 != 1 in decimal due to rounding. So when 0.1 (decimal) which is a truncated repeating "binary decimal" fraction isn't exact we loose our shit. But why is base 10 good and base 2 bad? Why not base 57? Clearly for any base, a truncated decimal-like fraction will be inexact for a lot of numbers. Rounding errors will add up, but this is really a binary vs. decimal issue.

More subtle are errors that grow simply because of issues specific to floating point. For example re-normalization when numbers of very different magnitudes are added or subtracted which eventually causes precision loss.

This is neither hard to understand, nor the only complication with floating point, nor is anything wrong, or bad, nor should anything be fixed in IEEE-754. This is just stuff that numeric programmers MUST understand, at least at the rudimentary level.

<comment><USER10> It's telling how you call the website "terrible", and then proceed to do _exactly_ what it does: give a basic, factual explanation why floating point math does not behave as people naively expect.

No, it is not hard to understand, but it is not obvious, and in fact counterintuitive to most people. Which is why there is a need for a website like this for people to refer to intead of the Goldberg paper which is great if you actually need to do error propagation analysis on your numeric algorithm but which does _not_ give this basic explanation and is therefore _not_ suitable to be cited to people who are suprised that 0.1 + 0.2 != 0.3

So please explain to me how referring to the Goldberg paper as "long article with lols of formulas" is anything but factually correct and a good reason to provide an alternative?

<comment><USER18> OK, let's try again. I gave a correct summary of what I've learned from Goldberg and elsewhere. In a short comment.

This article is "terrible" because it gives a single bad example and derides a very good reference implying it's too complicated. And steals it's title.

Every programmer that uses floating point should read Goldberg. That blog post is garbage. Post the real source, or an informative article, not junk.

<comment><USER10> > I gave a correct summary of what I've learned from Goldberg and elsewhere. > In a short comment.

So did I on a small website (yes, I'm the author). It's a website. Not an article. Not a blog. There is more than the title page, which seems to be the only thing you've looked at.

> This article is "terrible" because it gives a single bad example

Which example? What makes it bad?

> and derides a very good reference implying it's too complicated.

I absolutely do not "deride" the Goldberg paper, and it _is_ too complicated for people without a CS background. That doesn't mean there's anything wrong with the paper, or with those people. There _is_ something wrong with kneejerk-posting a link to the paper as an RTFM to basic questions about floating point behaviour. My intention was to provide a better resource for those cases.

> And steals it's title.

Don't be ridiculous. I use the _format_ of the title, which lots of people do (it's basically become a meme now, not sure if Goldberg was the first to use it either), with a critical difference that you seem to have missed: Goldberg adresses his paper to "every Computer Scientist", I address my website to "every programmer". Different audiences.

> Every programmer that uses floating point should read Goldberg.

Maybe. But it is not a good introduction.

> That blog post is garbage. Post the real source, or an informative article, > not junk.

You have still not been able to explain what is wrong with it. I am beginning to think you have serious problems with reading comprehension.

<comment><USER18> > So did I on a small website...

I was responding to you saying that a comment in a forum that I made was "doing the same thing" as your small website. But it's not equivalent. I didn't make a website, not a paper. I didn't post it as a reference for the community. I am making, what I hope you understand, is a good faith critique. When the critique written in 3 minutes has as much technical merit (says you) as the "paper", that is not good.

> "Which example?"

Your using an example 0.1 + 0.2 != 0.3. This is nothing to do with floating point. This is an issue of choice of fraction base and an issue of precision that could affect any non-analog computation.

> Don't be ridiculous

You understand _exactly_ what I mean. You replaced "Computer Scientist" with "Programmer". Borderline infringement, borderline plagiarism.

> But it is not a good introduction

So did you give one? No. You summarized a very famous paper and tweaked it's title. You provide no real advise for what to do. You provide no practical examples of real world code for "those programmers" that just want to know what to do.

> Maybe. But it is not a good introduction...

Why is it not good? I like that it puts the simple parts first and the formal math later, so you don't get bogged down in it. You're as welcome to your opinion as I am mine.

> I absolutely do not "deride" the Goldberg paper.

Yes you did. Let's say I said "Your website is oversimplified and difficult to navigate. It is garbage." Did I deride yours? [yes. yes i did.]

> I am beginning to think you have serious problems with reading > comprehension:

I have serious problems comprehending a disorganized web page with a web 1.0 navigation panel instead of a properly formatted paper.

> You have still not been able...

See above:

\- Your example is borderline wrong. It's about a different subject.

\- "Programmers" is not a good title when your audience is "Computer Scientists" and "Software Engineers".

\- You changed the title in the HN post to obfuscate that you ripped off the original title.

\- There is zero creative, or new information presented.

\- The most valuable part is the "References" page. In which every single link contains more relevant and accessible information than your "site".

\- You aren't even linking to a definitive reference. But instead to an appendix of a user manual Instead of, for example: [http://perso.ens- lyon.fr/jean-michel.muller/goldberg.pdf](http://perso.ens-lyon.fr/jean- michel.muller/goldberg.pdf)

I think it'd be great stuff if:

\- you wrote a little blog

\- that introduced the goldberg paper gently

\- that augmented and highlighted the references. If they are a little complicated, then _explain_ them. Don't imply "too complicated, you should skip".

\- that was able to be printed in a coherent format. Not 8 or 10 different individual web 1.0 frames.

There's a reason academic papers are formatted the way they are. It's actually for precise communication. If you try to "simplify" and make things too much more "accessible" for regular "programmers", you may falsely believe you are helping.

But this is a bad idea. Complex subjects do require some amount of concentration and work to understand. Floating point subtleties are not the lack of a zippy "programmer"-friendly website/blog away from that. You've tried to dumb-down a very introductory paper. It's amateurish and doesn't help.

I appreciate the references. Wouldn't it have just been easier to add them to the Wikipedia article?

<comment><USER10> >I am making, what I hope you understand, is a good faith critique.

"terrible", "junk" and "garbage" is not a good faith critique.

> When the critique written in 3 minutes has as much technical merit (says > you) as the "paper", that is not good.

Except It's not a "paper" either, it's a website, with multiple pages, with your "critique" being equivalent in content to maybe 1.5 of them.

> Your using an example 0.1 + 0.2 != 0.3. This is nothing to do with floating > point. This is an issue of choice of fraction base and an issue of precision > that could affect any non-analog computation.

I.e. it has _everything_ to do with floating point. And it happens to be an example of exactly the kind of real, concrete problem that real people writing real programs encounter in the real world and then look for help with.

> You understand exactly what I mean. You replaced "Computer Scientist" with > "Programmer". Borderline infringement, borderline plagiarism.

I understand that you have no fucking clue what the words "infringement" or "plagiarism" mean. There are now _dozens_ of articles out there using that title format (and I would not be certain Goldberg was the first), just like there were dozens of articles using the "X considered harmful" format, and no sane person (and no lawyer either) would consider any of it "stealing", "infringement" or "plagiarism".

> You summarized a very famous paper and tweaked it's title. You provide no > real advise for what to do. You provide no practical examples of real world > code for "those programmers" that just want to know what to do.

What the flying FUCK? I very much do all of those things. How about you actually LOOK at the thing you criticize?

> Why is it not good? I like that it puts the simple parts first and the > formal math later

It is still very much an academic paper and starts using formal math notation already when introducing floating point formats, and theorems two sections later, about 10% into the paper. The "simple parts" are already way too formal and too general for most of the people who get directed at it, and thus it fails to be helpful for them.

> Yes you did.

No, I did not. That is a lie.

> Let's say I said "Your website is oversimplified and difficult to navigate. > It is garbage." Did I deride yours? [yes. yes i did.]

Yes, the word "garbage" is obviously derisive - and I used no such word to describe the paper. Unlike your example, I did not even _criticize_ it explicitly. The worst thing I wrote was that it "didn't seem to help with your problem" \- notice the "seem"?

> I have serious problems comprehending a disorganized web page with a web 1.0 > navigation panel instead of a properly formatted paper.

Well, that says more about you than about the website. Multiple other people have praised the website's clean design and usability.

> \- Your example is borderline wrong. It's about a different subject.

Nonsense. It's an example of exactly the kind of problem people have and are looking for help with.

> \- "Programmers" is not a good title when your audience is "Computer > Scientists" and "Software Engineers".

My audience is programmers. People who don't think they're programmers can feel free to ignore it. Or is your problem that it's not ideal for "Computer Scientists" who also consider themselves programmers? So what?

> \- You changed the title in the HN post to obfuscate that you ripped off the > original title.

What a load of bullshit. The HN post of this comment thread was not made by me. The HN post I made in 2010 did in fact have the title format in question. And the idea that it was "obfuscated" is just plain idiotic any way you look at it.

> There is zero creative, or new information presented.

My main goal was not creativity or new information.

> The most valuable part is the "References" page. In which every single link > contains more relevant and accessible information than your "site".

Says you. Pretty much everyone else seems to disagree.

> You aren't even linking to a definitive reference. But instead to an > appendix of a user manual Instead of, for example: [http://perso.ens- > lyon.fr/jean-michel.muller/goldberg.pdf](http://perso.ens-lyon.fr/jean- > michel.muller/goldberg.pdf)

Now you're just making a fool of yourself. It's exactly the same content. Your link is a scanned paper article with bad OCR that happens to lie around on some scientist's (very much web 1.0, I might add) site and might disappear at any time.

> I think it'd be great stuff if: - you wrote a little blog - that introduced > the goldberg paper gently - that augmented and highlighted the references. > If they are a little complicated, then explain them.

No, that would not be great. That would be an idiotic waste of time. The solution for a reference that is already too long and complex for the target audience's question is _not_ to add more stuff to it! We're not doing literature analysis here!

> Don't imply "too complicated, you should skip".

That is not what I am implying (otherwise why would I list the references at all?). It's "too complicated for you right now, here's the basics, now go back there if you want more details".

> that was able to be printed in a coherent format. Not 8 or 10 different > individual web 1.0 frames.

Format is always a matter of taste, but many people seem to like it. And you keep using

> There's a reason academic papers are formatted the way they are.

Yeah, and the biggest reason is that they are designed to be published in printed journals.

> It's actually for precise communication.

If you're seriously claiming that there is a fundamental difference between one long article with separate sections, and a webpage with an navigation index and some separate pages, then I really can't help you (but you need help). And you keep using that expression "web 1.0". It doesn't mean what you think it means. "frames" as well. You might want to inform yourself.

> If you try to "simplify" and make things too much more "accessible" for > regular "programmers", you may falsely believe you are helping.

Many, people have in fact stated that my website helped them. So it seems you are provably wrong.

<comment><USER18> > My audience is programmers

This gets to the heart of why I felt it necessary to comment at all, and as you have gathered, am being derisive and negative toward your _website with navigation panel_.

Programmers is not a term I like. It implies that you trust someone to write a program. And the way you use the term, you do not need to be an engineer or a computer scientist. Therefore we need to "dumb down" some super-to-complicated content X.

For another example in the same genre: [https://poignant.guide/](https://poignant.guide/)

This kind of narcissistic behavior and writing is amateurish and insulting to those of us who actually do the fairly hard work of learning and working in a formal field.

Just about every security vulnerability and _every_ broken memory hog of a java program is due people acting and thinking like programmers, not engineers. Computer Scientists are not the cause of rampant security vulnerabilities.

<comment><USER10> Indeed it seems we have arrived at the heart of our disagreement.

You are proud of having done "hard work of learning and working in a formal field", and are accustomend to the writing and publishing style of that field, and that has led you to strongly resent the implication that something which does not follow that style could possibly be better in any way or for any purpose than something that does.

And I believe that you are wrong, that the academic writing style is not the most appropriate for every situation or every audience, and that there is value in addressing different situations and audiences.

> Programmers is not a term I like. It implies that you trust someone to write > a program.

It really only implies that someone _is_ writing a program.

> And the way you use the term, you do not need to be an engineer or a > computer scientist.

That is a simple fact. And another fact is that even most people who've had formal education in engineering or computer science typically lose fluency with the formal academic style and notation once they leave academics, because it is very rarely needed in their daily work.

> For another example in the same genre: > [https://poignant.guide/](https://poignant.guide/) > This kind of > narcissistic behavior and writing is amateurish and insulting to those of us > who actually do the fairly hard work of learning and working in a formal > field.

And here you are engaging in nothing but arrogant, elitist gatekeeping. You don't have to _like_ that writing style (I don't either), but taking it as a personal insult is silly, and the implication that there is only one appropriate style for any writing that concerns programming is needlessly close-minded.

> Just about every security vulnerability and every broken memory hog of a > java program is due people acting and thinking like programmers, not > engineers. Computer Scientists are not the cause of rampant security > vulnerabilities.

I beg to differ. Being well versed in computer security and having formal computer science or engieering education are not all that strongly correlated. I would in fact bet money that more than 50% of the security vulnerabilities on [https://cve.mitre.org/](https://cve.mitre.org/) were originally introduced by someone with formal computer science education.

In fact, computer scientists with no industry experience are often _godawful_ at programming, including security and performance aspects, because they're used primarily to writing throwaway proof of concept code that doesn't need to be maintained.

<comment><USER18> So please point to all the security holes created by Lamport or Knuth.

I didn't say, by the way, credentialed engineer. I said "think like an engineer". I'd even accept Hacker.

Those who are just "programmers" are essentially data-entry clerks. And EVEN THEY can read Goldberg before doing floating point for at least they can get a hint of the difficulties.

"Java Programmers" writing blogs and websites for "Ruby Programmers" to give hints to "C# programmers" so they don't have to cut-paste from Stack Overflow is harmful. It's noise and addition random bad information that a good programmer, who should be engineering a solution, will have to cull out.

<comment><USER10> > So please point to all the security holes created by Lamport or Knuth.

If the logical fallacy in this request is not glaringly obvious to you then you have less understanding of computer science than most "data-entry clerks".</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


IMF attacks EU over bailout terms - <AUTHOR> http://www.bbc.com/news/business-33531845

<comment><USER2> I read this and a couple of other articles and it seems more like part of the process. The EU makes a deal, Germany is pouty, the imf says debt relief must happen, Germany relents.</comment>


The Rich Are Planning to Leave This Wretched Planet - <AUTHOR> https://www.nytimes.com/2018/06/09/style/pigs-in-spaaaaaace.html# <comment><USER2> oh no.. they paid a deposit to take a ride on a space ship? Clearly trying to leave the planet... just like that time I took a flight so I could live in the sky.

If you really believe this, then you clearly don't understand just how inhospitable the rest of the universe is to human life. Antarctica is tough for us... Mars is antarctica without breathable air. Colder, far less pressure. Every resource your life depends on is difficult or impossible to get on Mars. You evolved here, not mars. And probably for the rest of my life, going there without a way back is a death sentence.

Do you really think Musk is planning to go to a lifeless planet to suffer and die?

<comment><USER3> Concomitant to that: if inequality gets bad enough that we do have a plutocratic class that owns the entire planet, it will be a lot cheaper for them to actually try to fix things here (or at least slow down on the path to catastrophe) than to move to Mars.

 _The Expanse_ series, despite not being 'hard SF', does explore a bit of the challenges in detail. Mars is too cold and too dead, and Jovian moons are too far from the sun.

You can build arcologies or other artificial habitats where life can be sustained, but the _supply chain_ for making sure those habitats stay up will still require Earth. If anything goes wrong, most everything a habitat will die, and you will need another supply of ready humans and plant/animals to repopulate it.

If anything goes wrong, you likely will not have a sufficiently self-sustained autarkic supply chain on Mars to bootstrap the process from scratch again, hence Earth.

Earth is an 'infinite' (from the POV of a relatively dead place) supply of biodiversity, genes, organics, people, and manufactured goods.

</comment></comment><comment><USER4> Being staff on one of those things would probably be the most thankless highly-skilled job in the world. Can you imagine: you're trapped in a tin can with a bunch of extremely rich, extremely bored, extremely motion-sick people, and its your job to not only keep them alive, but also happy enough to justify their $55m outlay?

<comment><USER5> If you also want to leave this wretched planet, but you're not plutocratically rich, I imagine that would be motivation enough to serve some drinks along the way.

<comment><USER6> For the foreseeable future life off earth is going to be boring, deadly, uncomfortable and require a high degree of technical skill even from someone who is mostly a passive observer.

It does not sound like something that will be attractive to the leisured wealthy aside from the very few who are into extreme sports and bragging rights. You don't see rich people going on six month camping trips in Antarctica and any space colony that isn't in LEO is going to be even more distant, less stimulating and more dangerous.

<comment><USER7> The rich people are already visiting Antartica, but certainly not in camping trips.

And when you have visited most wonderful places, the most unlikely one are the one you seek. There are many travel agencies proposing this. And it is better if there is a well known scientist on board:

[https://oceanwide-expeditions.com/blog/at-home-in- antarctica...](https://oceanwide-expeditions.com/blog/at-home-in-antarctica- an-interview-with-polar-scientist-and-guide-katja-riedel)

</comment></comment></comment></comment><comment><USER8> > _"My vision is to create a comfortable egg, friendly, where walls are so > soft and in harmony with the movements of the human body [...]_

That sounds like a padded cell... Apparently, that's also exactly what it looks like[0]. Further... check out "axiom" on Google Images[1].

[0][https://static01.nyt.com/images/2018/06/10/fashion/10AXIOM-i...](https://static01.nyt.com/images/2018/06/10/fashion/10AXIOM- interior/10AXIOM-interior-superJumbo.jpg?quality=75&auto=webp&disable=upscale)

[1][https://www.google.com/search?q=axiom+spaceship](https://www.google.com/search?q=axiom+spaceship)

<comment><USER9> That looks ... horrid. I think I'd rather use my $50M to buy a big piece of land somewhere remote and beautiful here on Earth.

<comment><USER10> After you've bought a few of those and still have plenty left over... Then what?

Might as well go on this trip

</comment></comment></comment><comment><USER11> I love that the url for this is "pigs-in-spaaaaaace".

</comment><comment><USER12> _A new life awaits you in the off-world colonies! A chance to begin again in a golden land of opportunity and adventure!_

</comment><comment><USER13> If we look at this purely from a 'what is the best option to attempt to ensure the continuation of the human race?', then we should be attempting to do this asap. Having 100% of humans exist on earth leaves us very vulnerable and a single point of failure.

<comment><USER14> Unless we are already a colony that originated from some other planet.

<comment><USER15> Like Golgafrincham?

<comment><USER5> At my old job we frequently referred to humans having come from the "B Ark."

</comment></comment></comment></comment><comment><USER16> I'm 100% convinced this is what Elon Musk's end goal is. Tesla is just buying him time until he can pull it off. The Boring Company is a backup plan.

<comment><USER17> Elon Musk has always said he wants to die on Mars. The Boring Company is useful on earth for transport, as well as on Mars (underground habitats).

Edit: now I'm interested in how many BFR flights gets one TBM to Mars surface

<comment><USER18> "Lots".

It depends on how big the TBM is and you also have to ship a bunch of power generation to run it and so on.

</comment></comment></comment><comment><USER19> Too bad we won't survive in space. So maybe they should look at making the current situation more livable.

<comment><USER20> No matter how livable you make it here, there will be people like me who will always want to go somewhere else. Like all of those people in Europe who left and came to the New World. Why didn't they stay in Europe and make it more livable?

<comment><USER19> Because it sucked ass and there was new frontier that likely was livable... The latter doesn't apply to space.

</comment></comment></comment><comment><USER21> The investment in commercial orbital stations is more interesting to me than hypothetical Martian colonies, since those might actually get built in the near future. Guess it's another part of Carl Sagan's vision of the future as seen in Contact that's coming true.

</comment><comment><USER22> Click bait alert. This isn't about living on another planet, it's about a short trip to a space station.

</comment><comment><USER23> The meek shall inherit the earth.

</comment><comment><USER24> The rich are going to give themselves cancer, with all that radiation...

<comment><USER20> The material on those walls absorbs a great deal of that radiation...

</comment></comment><comment><USER25> thus the reptilian race was born

</comment><comment><USER26> The sooner, the better? I bet they will send somebody else first...</comment>


On testing culture in GitHub projects - <AUTHOR> http://to.leif.me/ghtesting

<comment><USER2> I'm a huge fan of drive-by commits. GitHub's web editor makes it really easy to correct a typo or add a two-line fix - and for many people that might be their first contribution to open-source, without the faff of downloading git etc.

<comment><USER3> Maybe for documentation or source-comment fixes, but most code fixes should have one or more unit tests to accompany them. To me, a pull request represents something that should be pretty close to finished work. There may be a few style issues to clean up but it should be functionally done.

If someone wants to discuss how to approach or solve a problem in general without working and tested code, I'd prefer to see that happen in the bug/issue rather than a pull request. Otherwise it can lead to wasted effort and/or hurt feelings on the part of the contributor.

</comment></comment><comment><USER2> Cache link: [http://webcache.googleusercontent.com/search?q=cache:blog.le...](http://webcache.googleusercontent.com/search?q=cache:blog.leif.me/2012/09/github- testing/&hl=en&client=ubuntu&hs=3Ve&channel=cs&prmd=imvns&strip=1)

and link to the paper concerned: <http://se.uni- hannover.de/pub/File/pdfpapers/Pham2012.pdf>

<comment><AUTHOR> Either I fixed the problem or traffic has simply gone down enough.

</comment></comment><comment><USER4> Can anyone actually get to the site right now? I was getting database connection errors but now the site is not even responding.

<comment><USER5> That _is_ the site, demonstrating what a lack of testing gets you. It's brilliant.

<comment><AUTHOR> Nice one. :)</comment></comment></comment>


Where are the Eyes is a program for detecting and mapping surveillance cameras - <AUTHOR> https://github.com/DaylightingSociety/WhereAreTheEyes <comment><USER2> You need to provide the data.

You should also specify the terms of contributions and a license of the data.

People will be more encourage to contribute if they know that their free work is benefiting others, and not just the project owners. Looking at the code, there is an API route, it says that the data is not confidential, but that it's only for admin users because you don't want people hitting the service too much. In this case, I would suggest providing daily or weekly dumps of the data. (You could also benefit from seeing the growth over time).

So, provide the data, make the data open. Think about the license of the data. What's different from Google doing this? Why would anyone want to contribute to this project, and not say a project from Microsoft? Is having open source a differentiator? What benefit to the contributor does having the code as open source provide, if they cannot get the data. Differentiate your project and encourage actual crowdsourced contributions by specifying that it is open DATA and specify your terms for contributing.

<comment><USER3> I just sent an email (before seeing your comment) asking after the data license. If it's an open license, it could be integrated with existing services like OpenStreetMap which 1) allows many more people to benefit from the data; and 2) allows users of this project to benefit from existing OSM data.

Let's see what they say.

Edit: 39 minutes later (that was quite quick!):

> Whoops, good catch! That is absolutely not our intention, give me a bit and > I'll extend the license to cover GPS data for camera positions.

> We are considering closer integration with OpenStreetMap. We already use > them for all of our map backend, but don't currently store our camera data > in OSM. There are some concerns about corrupting their data with non- > existent cameras, particularly if someone scripts interacting with Where are > the Eyes. While the data is under our control we can try to detect bots and > roll back their changes, but we don't want to be "rolling back" parts of > OpenStreetMap.

> I definitely agree about adding the cameras from OSM to Where are the Eyes, > and periodically copying the Where are the Eyes data to OSM, but I am less > comfortable with completely integrating the two.

I won't go into detail about issues and solutions I see with either option, but they seem to be considering things carefully, and I guess that's not a bad thing.

</comment></comment><comment><USER4> It's not sure where the data comes from. OpenStreetMap, of course, has a way to tag and store survelliance cameras[1]. There are some maps already using this data on a map:

        https://kamba4.crux.uberspace.de/

[1] [https://wiki.openstreetmap.org/wiki/Tag:man_made%3Dsurveilla...](https://wiki.openstreetmap.org/wiki/Tag:man_made%3Dsurveillance)

<comment><USER5> and the stats :

[https://taginfo.openstreetmap.org/tags/man_made=surveillance...](https://taginfo.openstreetmap.org/tags/man_made=surveillance#map)

</comment></comment><comment><USER6> One of the things I intuited from working with Security Camera businesses, was that, in fact, the authorities had a very low awareness of all the cameras and camera footage available to them. You may want to consider whether this will, in the short term, actually aid them in identifying sources.

<comment><USER7> That would be security by obscurity. Especially in this case, we shouldn't rely on it.

</comment></comment><comment><USER8> Well this sounds exactly like the project I ran for the local Pirate Party during Slovenian elections - nadzorovan.si ("you are monitored" in Slovenian).

You can see the map of cameras here: [http://nadzorovan.si/zemljevid](http://nadzorovan.si/zemljevid) (we targeted the capital city center for coverage).

Anyway the original hack was simple - you use your normal camera with geotagging enabled (and a sports app running in the background for better GPS coords) and take pictures of cameras. Activists than sent it to me, I ran it through a basic PHP script that resized the images, stripped the EXIF data and constructed a JSON that was displayed on a map.

We upgraded it to the current status - nadzorovan.si - a year later but due to time constraints have been unable to finish the mobile apps that simplify the image taking and upload experience and enables us to incorporate non-Pirate activists. The code will be open sourced (it kind of already is, it just isn't on github) and the dataset is entirely public.

We plan to restart the project in the spring. There are a whole host of issues with a project like this - if anyone's interested I can go into details.

I should note the project was very well received in the public.

<comment><USER9> That is very cool. And a nice way to make it happen. Any ideas how to include direction they are facing? Or general direction? Something like the compass data plus the angle of the camera in the photo?

</comment></comment><comment><USER10> I've been traveling through Europe recently and have been shocked by the sheer number of surveillance cameras in public spaces. It's not uncommon to see 3 - 5 cameras on a single pole.

There is no indication regarding who owns each camera, when it's recording (presumed always), if it has audio, the purpose of the camera and how long the data is retained. This project is awesome, and could be the first step to answering the above questions (and more) for each camera.

<comment> q-base Sounds a lot like UK. As someone else pointed out - Europe is way to diverse to call as a single entity with this scope. Large cities in UK are quite heavily monitored, but if you look at Europe in general, then the surveillance is centered around government buildings, embassies etc.

In Denmark you can have quite a lot of cameras in shops and outside petrol stations, which is the business owners way to up their security. But those are NOT allowed to film anything facing away from the premises, meaning you can't just film people on the street from these cameras.

<comment><USER11> > those are NOT allowed to film anything facing away from the premises

Makes sense, but any idea how they verify this? Would someone report a camera they think is facing outwards and this would be investigated? Or are there random checks?

<comment> q-base To the best of my knowledge, it's not enforced. And if it is, it is probably only when someone feels violated and as you say report it. I'm pretty sure the control is next to nonexistent.

</comment></comment></comment></comment><comment><USER12> A friend of mine was biking along a river in rural UK and stopped to take a piss. While he was relieving himself, he heard a zzzzz sound coming from somewhere. On closer inspection a camera mounted on a decommissioned telephone pole was moving, tracking him.

This is not the world I want to live in.

<comment><USER13> Seems very unlikely. Why would a rural river be monitored, especially with a motorized camera?

An urban river (or canal) is much more likely. I don't know if the statistics back up the perception, but these places are often considered unsafe at night -- poor lighting, not many people around, usually only two directions to run.

</comment></comment><comment> q-base Cool project. You could end up with somewhat of a goldmine of data. Even with quite a bit of interest for the local government. Here in Denmark, they talked about making a register that the government could access in cases where the investigation warrented it(whatever that means). The point being; that no one seems to have an overview of all cameras present. The law here, as I understand it, prohibits businesses and private people from filming anything other than their own premises and directly in front of. But some probably film more and could be useful in mapping 'suspects' routes to and from the crime.

<comment><USER14> Big brother is watching. Europe is so concerned about privacy (e.g. google, facebook), but on the other hand goverments does this and no one bats an eye. Like you noticed it's not really clear who uses those cameras, how they are controlled, how they are protected from hackers and what if someone just add his own camera that looks just the same.

<comment><USER15> > goverments does this and no one bats an eye

> Like you noticed it's not really clear who uses those cameras

I think you missed that parent was talking about "businesses and private people" using cameras and government wanting to have a register of camera ownership.

From my experience in Germany, surveillance cameras you see in public will be

1\. in train stations: there are warning signs to notify you that you will be filmed

2\. outside an apartment building, pointing at the door (to discourage burglars)

3\. inside a store, pointing out the front window (burglars again)

4\. on private property, surveilling said property (trespassers and burglars)

All of these uses are subject to regulation concerning how much public space can be filmed. There was a case of a murderer/rapist (can't remember exactly) being caught walking by a store's front camera. The police were happy to take the tip, but the storeowner was still fined for violating the regulations.

</comment></comment></comment><comment><USER16> It would be nice if this data was made available as a standard format for consumption in other systems, such as OGC WFS.

<comment><USER17> Even a way to view the data on their own site would be a good start.

</comment></comment><comment><USER18> Is there any way of seeing the map of cameras nearby without downloading the app?

</comment><comment><USER19> One option to reduce the risk of bots or otherwise false data would be to request people to submit picture of the camera.

</comment><comment><USER20> I can't figure out what the app does to "detect" surveillance cameras?</comment>