Kanagawa government hard disks swiped, sold online - <AUTHOR> https://www3.nhk.or.jp/nhkworld/en/news/20191206_24/ <comment><USER2> Years ago, I bought an old Sun Netra server from ebay. It had the original OS and apps still installed. Before installing OpenBSD, I changed the root password and looked around. It had customer data from a large, well-known online company.

I looked-up the company's contact info and emailed them. They called the next day and asked for the server's serial number (which I gave them). A few days later one of the company's executives called back and asked me to confirm the serial number (which I did), he said he was holding a certificate of destruction for that server's hard drives and would be taking some action against the contractor that had been hired to destroy them. I had already wiped the data and installed OpenBSD (or was about to).

Anyway, I'm not surprised this type of thing still occurs. To be sure data is not exposed, companies ought to wipe drives themselves and encrypt them before handing them over to contractors. Once the gear is gone, no one knows where it will end up.

<comment><USER3> If things are that sensitive and important no disk should leave a building whole. You have to have a ridiculous process in place that is unforgiving that says that unless physically destroyed a disk cannot leave a building (unless it's in a sealed bag from mfg —obviously disks have to get from receiving to where they'll be used).

<comment><USER4> Part of the problem is that modern hard drives are hard to destroy. E.g. try taking a hammer and chisel to them - you might manage to destroy the connectors and PCBs, but those are replaceable, and someone having hacked the pcb to pieces is a good sign it's worth trying to get to the contents. Getting to the platters is a pain, and destroying them enough to make recovery impossible as well.

If you don't have a facilities department that is prepared - e.g. with protective gears and an angle grinder or similar power tools, odds are someone will decide it's easier to bypass that process you describe than to get the equipment and do the job properly. It takes firm management by someone who knows and understand the risks and cares about preventing them to ensure it's hard enough to bypass these processes, and hiring someone that takes this seriously just isn't high up on peoples list (e.g. I've _never_ been asked about what approach I'd take to physical security of server infrastructure by anyone wanting to hire me to roles where I'd be responsible for server infrastructure).

<comment><USER5> I haven't taken a hard drive apart for about a decade but last time I did take one apart getting at the platters was a job for a couple of minutes and a hex- driver.

At that point, when the platters have been exposed, you're basically done, feel free to scratch them up or smash them with a hammer.

Frankly, having read about this, a once-over pass with dd if=/dev/zero of=/dev/sdX is going to be enough to destroy all data anyway. There is no instance I know of that the theoretical data-recovery techniques proposed to recover after that have been successful in practice, they depended on electron microscopes and 90s platter densities.

<comment><USER3> I think you're right that zeroing is effective with today's densities but it lacks visual evidence that gives confidence a policy was executed properly.

Also with defective drives or S.M.A.R.T. failures it's easier to meet the requirements by physically destroying the medium.

<comment><USER5> True!

</comment></comment></comment></comment></comment></comment><comment><USER6> If you want something done right (like making sure your data is no longer on someone else's hard drive), you should really do it yourself.

Zeroing filling a hard drive isn't hard.

<comment><USER7> But also not really guaranteed to do what you want in case of SSDs. It may. Or it may get optimised/balanced leaving lots of data behind.

<comment><USER8> Years ago we settled on using block device encryption for all flash storage and then destroying the headers or revoking all keys.

This satisfies the infeasibility requirement of NIST SP 800-88 without relying on flash vendors to have appropriately implemented ATA command standards like secure erase, which almost none fully do.

<comment><USER9> This destroys the filesystem, but not the physical disk, right? I mean, will the SSD be usable after that, albeit, by installing a new filesystem and reformatting?

<comment><USER8> Correct. It's not like when degaussing wipes the track information from a HDD.

This is also as opposed to relying on the self-encrypting feature on most modern flash. Whether you're dealing with high enough asset value to warrant this level of interest or are just beholden to the same standards, you should reach out to your flash vendor for clarification.

</comment></comment></comment></comment></comment><comment><USER10> off topic -- it made me happy to see a news paper from japan and in english too. i browsed around to see what they were covering and even if the news was gloomy, it was somewhat refreshing to see another perspective on what's going on in the world.

<comment><USER11> There's also The Japan Times [1]. Several non-English speaking countries do have at least a newspaper in English [2].

[1] [https://www.japantimes.co.jp](https://www.japantimes.co.jp)

[2] [https://en.m.wikipedia.org/wiki/Category:English- language_ne...](https://en.m.wikipedia.org/wiki/Category:English- language_newspapers)

<comment><USER12> What follows is a completely biased opinion, but I don't really have a high opinion of The Japan Times. IMHO they have an editorial slant that tends to cater to the foreign reader's biases rather than reporting news from a Japanese perspective. Like all newspapers, it's a mixed bag and there are often well written and insightful stories. However if I were looking for a place to stoke my confirmation bias for common misconceptions about Japan, The Japan Times would be the absolute first place I would look.

The NHK world news linked in the original article is probably the best place to get Japanese news from a Japanese perspective in English, but you also have to be a bit careful. While the NHK is very similar to the UK's BBC in many ways, news stories are frequently very soft on government policy. So it's sort of the opposite of the Japan Times ;-) The quality in general is much better IMHO, though.

If you don't mind relying on Google Translate (which is getting quite good these days) the TBS news website is very good: [https://news.tbs.co.jp/](https://news.tbs.co.jp/) There is video for most stories and a transcript written under the video. This is actually what I used for studying to learn to understand the news. The quality of the stories vary, but they make a good counterpoint to the NHK. Keep in mind that all Japanese news offices tend to have a cozy relationship with the government, so you need to keep your mind open.

If you have an interest in Japan, keeping abreast of these Japanese news is useful as I have found numerous blatant errors in foreign reporting of Japan -- sometimes to the point where they translate something a Japanese official says exactly the opposite to what they are saying. I don't think this is true only of Japanese news either. World news is full of shenanigans and it really is an eye opening experience to follow the news from the perspective of a different country/culture.

</comment></comment></comment><comment><USER13> There should be no need to wipe or zerofill the drives. They should be full disk encrypted from the start.

</comment><comment><USER14> I am curious why they chose to rent them instead of buying them, and how many times over they paid their price by doing so?

<comment><USER15> The leasing model (it's not 100% certain from the article that they have been leased) may make sense for disks, if the idea is that after some time they must be necessarily replaced.

Assuming they were leased, since the client returned them (instead of purchasing them), physicial space may have been a reason.

<comment><USER14> Wouldn't it mean that the lessor would be allowed to sell the drives? I mean if you rent them out, and they are handing the goods back would you just destroy them? Something doesn't sound right here.

<comment><USER16> Well recycling heavily used disk drives sounds more like waste disposal, I mean who can you sell that shit and get away with it? Maybe give em away if they work, idk.

</comment></comment></comment></comment><comment><USER17> Likely unrelated, but Kanagawa prefecture is home to a large US Navy base in Yokosuka city. A lot of military and US government employees likely have some of their data somewhere on those servers.

<comment><USER18> I'm hoping this isn't the case as I spent a lot of years there. Most of us had little contact with the local government -- road tax was the only thing we were liable for to the local government.

Well anyway, the US Government has managed to export all my personal data multiple times anyway, this can't be worse than that. The most they'd ever be able to get out of the Kanagawa government is the address where I lived when I was there and probably the license plate to the car I had.</comment></comment>


Ranked Searches with SQL - <AUTHOR> http://particletree.com/notebook/ranked-searches-with-sql/ <comment><USER2> For anyone wanting to make their searches fast, I would strongly recommend ditching the database.

Write a program that sucks your entire database into memory (memory is cheap - unless you really have _tons_ of data, you can afford to do this). Store records as objects or more simple structures, and index them in hash-tables. When you get a query, just look up the objects using the query as a set of keys into your hash-tables. If you take advantage of your knowledge of the data, you'll be able to do any intersections, filtering and sorting way faster than the database can.

This is how I did things when I rewrote justin.tv's search engine. The bulk of the work took me two days, and it's _fast_ (it'll be live in a few days, when we let our designer loose on it - right now it's functional but ugly).

<comment><USER3> Here we go again. I'll play my traditional opening move:

"How are you handling ACID guarantees?"

and then I'll direct you here:

<http://news.ycombinator.com/item?id=59885>

<comment><USER2> "How are you handling ACID guarantees?"

Maybe I'm missing something but I don't see how ACID plays into things. You don't imagine the search engine is putting stuff _in_ to the database do you?

From the link above, "Do any of these with your "big hash table" in less than 1 second"

1 second is eternity as far as my search engine is concerned. If I can't handle a request in less than a couple of milliseconds, I'd say I've failed. I've used this same approach in the past on a search engine that indexed 14 million records btw, and I didn't fail ;-)

<comment><USER3> 14 million? Okay, that's not very much. A RAM-based approach is fine there.

<comment><USER2> Heh, fair enough. Do many startups really have more than a few tens of millions of records to search though?

<comment><USER3> I can't speak statistically, but the one I work for now does and the one I'm about to start will too (but in the latter case I'm writing a DBMS, so that's kind of a pathological example).

If all your content is human-generated and O(n) in size, then 10^7 is a lot. The big numbers come when your data is produced by a simulation, or when you're doing OLAPey things with O(n^2)-sized intermediate results. Real-life example: keeping a log of all users, the IPs they've logged in from, and when, and looking for evidence of sockpuppet accounts.

<comment><USER4> I'd be curious to know why you're writing a DBMS from scratch. That seems like kind of an odd thing to do, from a value-for-effort POV, in this day and age.

<comment><USER3> Not from scratch. I'm building it on top of Hadoop and HBase.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> Or you could use Lucene (either the native Java version or one of its many ports) and leave the information retrieval to the experts.

Do you really want to implement stemming, WordNet integration, etc. yourself? No, you don't, if you know what's good for you.</comment>


How to build your own "Watson Jr." in your basement - <AUTHOR> https://www.ibm.com/developerworks/mydeveloperworks/blogs/InsideSystemStorage/entry/ibm_watson_how_to_build_your_own_watson_jr_in_your_basement7?lang=en <comment><USER2> My hunch is that 90-99% of all Jeopardy questions can be answered with information in Wikipedia/Wiktionary, properly understood.

So I'd start with Wikipedia: ~30GB uncompressed full article text. Break it into chunks; canonicalize phrasings to be more declarative, and include synonyms/hypernym/hyponym phrasings (via something like WordNet), so that various 'cluesy' ways of saying things still bring up the same candidate answers.

Because it's free and compact and well-structured, throw in Freebase, too.

Jeopardy goes back to certain topics/answers again and again. So I'd scrape the full 200K+ clue "J!Archive", and use it as both source and testing material (though of course not testing the system on rounds in its memory).

And I'd add special interpretation rules for commonly-recurring category types: X-letter words, before-and-after, quasi-multiple-choice, words-in- quotes.

I think such a system might get half or more of the questions in a typical round correct, and in a matter of seconds, even on a single machine.

<comment><USER3> "properly understood" is the whole point. That's the hard problem they are trying to solve.

<comment><USER2> Sure, but it does put somewhat of a cap on the amount of reference material you need to import. And a fairly low cap in the tens of GB: Wikipedia/Wiktionary/WordNet/Freebase/J!Archive is probably enough.

Beyond that, you want software/heuristics. You might find far more data helpful to initially create that software, but once it's created, the reference material to have at hand can come from a small set of sources.

<comment><USER4> there is a project on formalization of the human "common sense" with (partly) open source database. take a look: <http://en.wikipedia.org/wiki/Cyc>

<comment><USER5> For those who were intrigued by the story of Eurisko (that space fleet battle playing bot that completely crushed the competition and then was impossible to find decent info on) the developer of Eurisko, Douglas Lenat, is the one who started this program.

</comment></comment></comment></comment></comment><comment><USER6> _Search optimization: No, this team focused on making IBM Watson optimized to answer in 3 seconds or less. We can accept a slower response, so we can skip this._

That makes me laugh. I'd guess that search optimization effort has a power law response here. 3 seconds is extraordinary, 1 minute is tricky, 10 minutes is possible after some solid effort, 3 days-heat death of universe is what you get without optimization.

Not saying you actually ignore it. It's built into those libraries they casually throw around. Just thought the wording was funny.

</comment><comment><USER7> I somehow cannot give up daydreaming wistfully about a personal CM-5. From a previous discussion on HN it seems it still is going to be an expensive thing to build as a toy project. Particularly because of the hyper-cube inter- connection. Not sure if the source code for star-Lisp is available. But I think an emulator lives on at Sourceforge.

Edit 1: Here it is <http://sourceforge.net/projects/starsim/>

Edit 2: Just doubled checked, the Sourceforge repository has no code !! But I found it here [http://examples.franz.com/category/Application/ParallelProgr...](http://examples.franz.com/category/Application/ParallelProgramming/index.html) @dhess Thanks a lot for that link. I just ordered a copy :)

<comment><USER8> I think you might like this book: The Paralation Model, by Gary W. Sabot.

[http://www.amazon.com/Paralation-Model-Architecture- Independ...](http://www.amazon.com/Paralation-Model-Architecture-Independent- Programming- Intelligence/dp/0262192772/ref=sr_1_1?ie=UTF8&s=books&qid=1298514403&sr=8-1)

<comment><USER9> Interesting. Found this article which explains the paralation model.

[http://www.mactech.com/articles/mactech/Vol.08/08.07/Paralat...](http://www.mactech.com/articles/mactech/Vol.08/08.07/Paralation/index.html)

</comment></comment></comment><comment><USER10> It seems to me it would be a lot easier to use EC2 than to setup all the machines in the basement.

</comment><comment><USER11> Watson has become an unbelievable marketing tool for IBM.

<comment><USER12> Has become? From the beginning, Watson's purpose has been to advertise IBM's computers.

<comment><USER6> And there's pretty little surprise that it worked! IBM's been here before (Deep Blue).

</comment></comment></comment><comment><USER13> This article doesn't really tell you how to build a "Watson Jr." as they call it. It just tells you to use OpenNLP and UIMA (which is unnecessary, but understandable why its advocated since IBM created it).

I was kind of hoping that there would be a deeper dive into how the data was being stored and retrieved. I'm also interested in the Machine Learning side of it. They don't really give any hints at that as well.

<comment><USER14> Actually, UIMA _was_ used to train Watson (<https://cwiki.apache.org/UIMA/powered-by-apache-uima.html>).

You are right that UIMA isn't _needed_ , but some kind of tool for importing unstructured or semi-structured data is required.

</comment></comment><comment><USER15> I hate when I enter a page Im interested in that makes an ajax call whenever I click something, since I read long texts clicking and selecting text.

Why man? Why? If you want to track clicks on links with javascript, dont trigger the ajax call when I do click in :not(a) ... -_-'

</comment><comment><USER16> This is one of the great moments in the history of humanity, right up there with the first self-powered flying machine. North Carolina got a licence plate: "FIRST IN FLIGHT". Someone is going to get the credit for open ended question answering machine shortly. Who gets it?

The race is on, whoever creates the first reasonably good question-answering machine for demonstration will get their names etched into the sands of time for the next ten thousand years. Get to it!

This industry has the chance to be bigger than Google and Microsoft combined. Every person on the Earth will demand one of these. Those who won't have one will be at a remarkable disadvantage. This is going to turn into a trillion dollar industry.

<comment><USER17> open-ended question answering systems have been around for many years. there are stacks of research papers written about them, watson is an improvement.</comment></comment>


Ask HN: YouTube Scubscriptions with No Account? - <AUTHOR> I am in the process of degoogling myself and I am looking for FF extension or free website that would allow me to aggregate youtube channels I like and list latest videos from them, just like the standard subscriptions page on youtube for authenticated users.<p>Is there such thing or bookmarks will have to do? <comment><USER2> Yes, RSS. Every channel/user and playlist has an RSS feed. Users can also export all current subscriptions to OPML.

[https://support.google.com/youtube/answer/6224202?hl=en](https://support.google.com/youtube/answer/6224202?hl=en), [http://tips.slaw.ca/2019/technology/rss-feed-for-a- youtube-c...](http://tips.slaw.ca/2019/technology/rss-feed-for-a-youtube- channel-or-playlist/)

If you don't already have an RSS reader, Feedbin is worth trying. I'm a happy customer.

</comment><comment><AUTHOR> this is awesome [https://addons.mozilla.org/en- US/firefox/addon/feedbroreader...](https://addons.mozilla.org/en- US/firefox/addon/feedbroreader/?src=search)

you can get your subscriptions via [https://www.youtube.com/subscription_manager](https://www.youtube.com/subscription_manager)</comment>


CareKit Framework - <AUTHOR> https://github.com/carekit-apple/CareKit <comment><USER2> I wonder why it's not a part of Apple's Github account, [https://github.com/apple/](https://github.com/apple/) and instead on it's own. [https://github.com/carekit-apple/](https://github.com/carekit-apple/)

<comment><USER3> Often the answer to these kind of things is mundane, and comes down to "large companies are large"

<comment><USER4> Heh, that was my thought too. "Because it was taking forever to get someone to make me a new repo"

<comment><USER5> "And by someone, I mean Jim."

<comment><USER6> Dammit Jim!

</comment></comment></comment></comment></comment><comment> k-mcgrady I tried out one of the CareKit apps this morning (I think the first four were released today) and they're really nice. Very simple, good use of notifications to remind the user to take pills/add progress, and they're still useful even if your doctor isn't signed up.

I wonder why Apple is the only big company doing something like this? It just seems like a really great idea and I'm surprised Google for example hasn't got in on it (that I know of).

<comment><USER7> Curious which app you tried out...

<comment> k-mcgrady There was only one I could really test as two were for women and another was for diabetes which I presume would make it difficult to test without having it. The one I tried was called 'Start' and is for people with depression. It basically lets you set up reminders to take pills, gives advice on the pills your taking (side effects), and allows you to take a questionnaire on a daily basis so you can track your depression level and see if your treatment is working. I was just playing around with it but it seems like it would be really useful for someone with depression and it's very simple to use.

<comment><USER7> Cool. (Full disclosure: I'm the lead developer on the diabetes one.)

<comment><USER8> What did CareKit offer you that would make developing an app (or your upcoming hardware) for iOS more compelling than on, say, Android? Thanks!

<comment><USER7> We made the decision to develop for iOS first before CareKit hit the scene.

</comment></comment></comment></comment></comment></comment><comment><USER9> I recently helped a research group at a healthcare organization build a HIPAA- compliant version of mixpanel into their application to help patients with CBTi.

The app used this XML-based framework to manage the formatting of the questions so that the researchers (who were pretty tech savvy) could manipulate the questions. The XML-framework itself was a bit of a mess, but it got the job done. However, as new iOS releases passed, this XML-based framework slowly became outdated and required some extra work to maintain as time went along. Having an Apple-approved way to build surveys seems like it is the solution to that problem.

I could see a researcher who was technical enough being able to extend CareKit to be able to manage their own study without the help of a dedicated iOS dev everytime they needed to make a change to a question or survey. Part of that is CareKit, part of that is the fact that Swift seems more approachable than Objective-C. This was included in ResearchKit, but CareKit provides a way to track if people have completed daily steps and visualizing that for end users. It only took me 5 minutes from cloning the demo app and plugging in my HealthKit Entitlements that I was able to extend the sample app to track Asthma Inhaler Usage.

EHR integration will still be a challenge, but these are the type of things that my team working on Redpoint at Catalyze will work on like we did with HealthKit on it's release.

If you want to check out how I extended the sample project to include a new activity to track, you can check out my fork here: [https://github.com/molsches/CareKit](https://github.com/molsches/CareKit)

<comment><USER10> I think you might want to check out ResearchKit [https://www.apple.com/researchkit/](https://www.apple.com/researchkit/) as well.

</comment></comment><comment><USER11> 3-Clause BSD. Not too shabby.

</comment><comment><USER12> I guess Swift still isn't widely adopted inside Apple. Or it could be that CareKit was started before Swift. Anyone know for sure?

<comment><USER13> Apple has publically recommended Objective-C code to not call Swift libraries, but rather advises Swift calling Swift frameworks or Swift calling Objective-C frameworks.

<comment><USER14> Oh I didn't know that. It still seems weird. Objective-C has always been hard for me to read and yet I love reading code—especially Apple's—so I guess the struggle will continue. Even if that means I can't really contribute to this.

<comment><USER15> runOnSentencesAsMethodNamesDidNotAppealToYou ?

<comment><USER16> That's the best bit, and makes reading blocks of code incredibly efficient. You can observe a method being called like

      [table allowsMultipleSelectionDuringEditing:YES]

And even though you might not remember that UITableView method, once you read it you immediately know what it does, often saving you a round trip to the docs.

<comment><USER15> > often saving you a round trip to the docs

that's optimistic

those methods rarely do exactly what you think, they can be an overloaded version of another method

and more frequently there is another method with a similar method name, or one is singular and one is plural and it becomes very inefficient because the method names look the same, the exact reason why the english language has spaces and punctuation to begin with

<comment><USER16> Well duh, obviously. They're not going to concatenate entire paragraphs of documentation into the method name. Like so many things it's a matter of degrees. If the method was called _table.multiSel()_ then you'll be more likely to need to consult the docs.

It's not optimistic in my experience. Much of the time when doing code review or bug hunting other people's code, it's less about knowing exactly what a particular method does, as much as being able to rapidly estimate your way to relevant areas.

If nothing else, verbose names can make it faster to ignore irrelevant code.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> but what is it tho.</comment>


Can Agencies and Startups Get Along? Secrets of the Agency-startup Relationship - <AUTHOR> https://medium.com/@patrickjwoods/can-agencies-and-startups-get-along-secrets-of-the-agency-startup-relationship-de4ef5c582f7

<comment><USER2> Great breakdown of the relationship challenges startups and agencies face. This is a beneficial read for anyone looking to work with startups. I've experienced startup timelines, vocabulary and methods creating barriers with those unfamiliar.</comment>


Simple rules for proofreading your own work - <AUTHOR> https://languageedit.blogspot.com/2018/01/simple-rules-for-proofreading-your-own.html <comment><USER2> "A jumpstart for researchers seeking publication in international journals is to have their work present _incorrect_ scientific English. This will enable the reviewers to assess the document appropriately."

This proofreader could use a proofreader.</comment>


HN Poll: For or Against WikiLeaks and Why? - <AUTHOR>

I think the Hacker Community's opposition or support for WikiLeaks may decide whether it survives.
Please post as concisely as possible why you are for or against WikiLeaks. If you are ambivilent, please explain.
To make it easier to read the arguments of each side, please post your argument as a reply under one of these three top level comments: "I oppose WikiLeaks", "I support WikiLeaks", "It's complicated".
If someone has already captured your reasoning more or less, vote it up and add any clarification under it.
[EDIT] People are voting but not providing their reasoning. Are people that afraid to go on the record one way or another? <comment><AUTHOR> I support WikiLeaks.

</comment><comment><USER2> Please don't attempt to harvest karma using "polls" which are really just disguised comments with no visible results. Flagged.

<comment><AUTHOR> You presume that I care about Karma. Why not evaluate things on their merits rather than cynical assumptions?

And what do you mean, "no visible results"?

<comment><USER2> Unlike when we use <http://news.ycombinator.com/newpoll>, none of us can see the scores of your comments.

<comment><AUTHOR> Didn't know about that and it doesn't seem to be available anyhow.

Anyway, you make a good point about visibility but I could always have published that.

Doesn't matter because this isn't getting traction anyway. Not a single comment explaining why someone is for or against.

</comment></comment></comment></comment><comment><USER3> I support free information. Knowing is mostly always better than not knowing.

</comment><comment><AUTHOR> It's Complicated.

</comment><comment><AUTHOR> I oppose WikiLeaks.</comment>


Google has to pay a whopping $2.5 billion to MMI if the deal falls through. - <AUTHOR> http://fosspatents.blogspot.com/2011/08/25-billion-google-motorola-break-up-fee.html

<comment><USER2> I, for one, am getting tired of Florian Mueller's "anti-foss" articles here. The deal will not fall through. It's not like Google could stomp competition in the smartphone industry just from buying Motorola. It's ridiculous to even think of that.

<comment><USER3> I don't know if you can dismiss his entire argument because of his alleged "anti-foss" stance.

He is simply pointing out that in the light of a much, much larger than standard break-up fee someone in the deal (Motorola) must have concerns about it being approved. You don't tack on a 'ohhh and by the way if this doesn't go through you still owe us 2.5 billion' just for fun, and Google doesn't agree to it because they are such swell guys.

His remarks about using search to subsidize below/at-cost competition is a legitimate concern for a competitiveness perspective. It is one of the things that got Microsoft in trouble ([http://www.justice.gov/atr/cases/ms_tuncom/major/mtc-0002856...](http://www.justice.gov/atr/cases/ms_tuncom/major/mtc-00028565b.htm)), specifically the part of leveraging cross-subsidies to avoid having to worry about financial success of an unrelated product (see: Android) and using said lack of concern to smother your competitors ability to make money/drive them out of business.

I personally don't know how this whole thing will play out, but I would strongly suspect Google's mobile channel partners (the ones licensing Android + paying Google a fee for use of their stack on said devices) are NOT thrilled with the idea that the one licensing them the technology has now become a possible competitor. They may say one thing in public, through their PR agents, but I strongly doubt any of them like this turn of events.

They (Google) seem to believe they will be able to do what few if any companies historically have been able to do. Buy a large, established business in an area they are not expert in then run it as an isolated entity within their larger organization. Sounds good on paper, doesn't tend to work out so cleanly in real life with all the complexities that arise. We shall see, assuming the deal goes through.</comment></comment>


Ask HN: What are your favorite non-tech podcasts? - <AUTHOR> <comment><USER2> POLITICS:

"Pod Save America" \- politics podcast by funny guys (former Obama staffers)

"Lovett or Leave-it" \- comedy show about politics

"Pod Save the World" \- serious podcast about world issues

Anything by Crooked Media, basically.

Also, "Stay Tuned with Preet Bharara" \- serious, smart look at current events by former US attorney

"FiveThirtyEight Politics" \- insight into current events, with an emphasis on polls and facts.

Politico's "Nerd Cast" \- not my favorite, but actually winds up being a bit more conservative than the other podcasts I listen to

SORTA RANDOM:

"99% Invisible"

"The Way I Heard it" \- by Mike Rowe of Dirty Jobs fame. They're short, about 10 minutes each

"Freakonomics"

"This American Life"

"You are Not So Smart" \- dives into human biases and ways in which we really aren't that smart

"Stuff You Should Know" \- random trivia

SERIALS:

"Serial" \- murder mystery

"S-Town" \- mystery in Alabama

"Steal the Stars" \- scifi

ARTS:

"Splathouse" \- B-movie / horror

"Writing Excuses" \- for writers, hosted by authors such as Brandon Sanderson, Dan Wells, Howard Taylor, and Mary Robinette Kowal

"Country Gold" \- a podcast about 90s country (my guilty pleasure) hosted by Terri Clark

</comment><comment><USER3> How I Built This - This is a podcast from NPR that interviews founders of businesses. They have had the founder of Southwest Airlines to the founder of Atari to the founder of Chipotle. There are some tech companies involved but it is always interesting hearing the stories of the founders on how they built their business.

</comment><comment><USER4> Jocko Willink podcast [http://jockopodcast.com](http://jockopodcast.com) on discipline, leadership. I am trying to follow some of his leadership ideas and started to do Brazilian Jiu Jitsu, and take care of my body.

</comment><comment><USER5> The Becoming SuperHuman Podcast [https://becomingasuperhuman.com/podcast/](https://becomingasuperhuman.com/podcast/)

</comment><comment> open-source-ux _50 things that made the modern economy_

This was a radio programme from the BBC which is also available to download:

[http://www.bbc.co.uk/programmes/p04b1g3c/episodes/downloads](http://www.bbc.co.uk/programmes/p04b1g3c/episodes/downloads)

The BBC has a ton of podcasts available, although some are only available to UK listeners

[http://www.bbc.co.uk/podcasts](http://www.bbc.co.uk/podcasts)

</comment><comment><USER6> \- " _EconTalk_ " (economy)

\- " _Conversations with Tyler_ " (economy)

\- " _99% Invisible_ " (real-world design)

\- " _Radiolab_ " (journalistic stories)

\- " _Cosmic Vertigo_ " (astronomy)

\- " _The Dice Tower_ " (boardgames)

\- " _Common Sense_ " (political commentary)

\- " _Welcome to Night Vale_ " (fiction, surreal sci-fi)

\- " _Leviathan Chronicles_ " (fiction, epic fantasy)

</comment><comment><USER7> "Hello Internet," it's a weird meta-podcast, and I'd just call it "a love letter to the internet." Various science/philosophical topics, but mostly it's just about the new world that the internet has enabled.

Also, they released a vinyl episode, so I don't think I have to say anymore.

</comment><comment><USER8> "Art of Charm" \- Used to be just about dating but now its a lifestyle podcast that involves interviewing many different people from different fields. Love their content and been listening for years.

</comment><comment><USER9> Iron Radio, Barbell Shrugged, Running Rogue, The Tim Ferris Show, The Joe Rogan Experience, This American Life, Radiolab.

</comment><comment><USER10> The Joe Budden Podcast. It may be a somewhat inane pop culture podcast, but there's something endearing about Joe.

</comment><comment><USER11> Freelance Transformation

99% Invisible already got a few mentions, but it's so good that it's worth mentioning again.

</comment><comment><USER12> Of all the podcasts listed so far _radiolab_ is hands down my favorite.

I also like "wait wait don't tell me"

</comment><comment><USER13> Marathontalk - running, IMtalk - ironman triathlon, Lance Armstrongs podcast

</comment><comment><USER14> 1\. Waking up - Sam Harris

2\. You are not so Smart (Psychology, Bias, Cogsci)

3\. All in the mind BBC (Psychology)

4\. Buenos Dias America (north, central, and south american news, with. focus on usa)

5\. More or less behind the statistics BBC

6\. WDR 5 Profit (west german radio, pretty neutral economics/finance summaries and topics)

7\. Medizin und Gesundheit (Deutsche Welle)

8\. Francias Authentique (great podcast for keeping up that rusty french, with a really great host)

</comment><comment><USER15> Hardcore History for those long drives.

</comment><comment><USER16> \- "Waking Up" by Sam Harris

\- "EconTalk" by Russ Roberts

\- "LSE Talks" by the London School of Economics

\- "Revisionist History" by Malcolm Gladwell

\- "Freakonomics"

\- "Radiolab"

\- "The Commonwealth Club Talks"

<comment><USER17> Upvote for Revisionist History. I rarely revisit episodes from a podcast, but there are several episodes from Revisionist History that I've listened to 3 or 4 times apiece.

</comment></comment><comment><USER18> The only one I don't see alreadly listed:

LORE

</comment><comment><USER19> chapo trap house, zero books podcast, the nostalgia trap

</comment><comment><USER20> "you are not so smart"

</comment><comment><USER21> planet money and freakonomics.

Helps me understand how the world actually works.

</comment><comment><USER22> The daily by NY Times

Radiolab

Real time with Bill Maher

Wait wait dont tell me

snap judgement

Freaknomics

</comment><comment><USER23> small town murder</comment>


Wasm3 – A high performance WebAssembly interpreter in C - <AUTHOR> https://github.com/wasm3/wasm3 <comment><USER3> This is pretty exciting if real:

> Bytecode/opcodes are translated into more efficient "operations" during a > compilation pass, generating pages of meta-machine code

WASM compiled to a novel bytecode format aimed at efficient interpretation.

> Commonly occurring sequences of operations can can also be optimized into a > "fused" operation.

Peephole optimizations producing fused opcodes, makes sense.

> In M3/Wasm, the stack machine model is translated into a more direct and > efficient "register file" approach

WASM translated to register-based bytecode. That's awesome!

> Since operations all have a standardized signature and arguments are tail- > call passed through to the next, the M3 "virtual" machine registers end up > mapping directly to real CPU registers.

This is some black magic, if it works!

<comment><USER4> > "WASM translated to register-based bytecode. That's awesome!"

If the hardware executing this code is "stack-based" (or, does not offer enough general purpose registers to accomodate the funtion call) - this will need to be converted back to a stack-based function call (either at runtime, or beforehand). Wouldn't this intermediate WASM-to-register-based-bytecode translation be redundant then?

<comment><USER5> I don't know of any current physical stack machine CPUs.

<comment><USER4> Stacks are used extensively across the x86 family [0]

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

<comment><USER5> "Has a stack" isn't the same as "Has a stack based ISA".

<comment><USER6> To expand: a Forth machine or similar would be a stack based ISA. Using a stack is a different matters; Pretty much every ISA uses stacks.

</comment></comment></comment></comment></comment></comment><comment><USER7> Why is an interpreter desirable when JIT compilers create significantly faster code? Is this primarily about embedded use?

<comment><USER8> iOS prohibits JIT for example.

<comment><USER9> More specifically, apps submitted to the App Store may not utilize JIT.

<comment><USER10> Is there any specific reason for this?

<comment><USER8> Executing instructions dynamically from memory (JIT does this) exposes potential security issues. A good example is the famous Specter vulnerability.

Specter itself is not JIT-specific but it is known to very hard to reproduce that the only current viable target environment is JIT. So JavaScript was affected by Specter.

</comment></comment></comment></comment></comment><comment><USER11> The neater article seems to be about M3 interpreter [https://github.com/soundandform/m3#m3-massey-meta- machine](https://github.com/soundandform/m3#m3-massey-meta-machine)

Tbh, I couldn't get the eureka moment though. Might try to read in the AM ;)

<comment><USER12> Yeah, this is a good way to design a fast interpreter! It's traditionally called a "threaded interpreter", or (somewhat confusingly) "threaded code":

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

[http://www.complang.tuwien.ac.at/forth/threaded- code.html](http://www.complang.tuwien.ac.at/forth/threaded-code.html)

You can see an example of this particular implementation style (where each operation is a tail call to a C function, passing the registers as arguments) at the second link above, under "continuation-passing style".

One of the big advantages of a threaded interpreter is relatively good branch prediction. A simple switch-based dispatch loop has a single indirect jump at its core, which is almost entirely unpredictable -- whereas threaded dispatch puts a copy of that indirect jump at the end of each opcode's implementation, giving the branch predictor way more data to work with. Effectively, you're letting it use the current opcode to help predict the next opcode!

<comment><USER13> Yeah, but... It's not only the "threaded code" approach, that makes Wasm3 so fast. In fact, Intel's WAMR also utilizes this method, yet is 30 times slower..

</comment></comment></comment><comment><USER14> The motivation for WebAssembly rather than plain ARM or x86 assembly = portability, security.

It would be interesting to see how this is designed for security in mind.

<comment><USER15> Pardon my wasm illiteracy here, what exactly makes it more secure?

Struggling to see it.

<comment><USER3> WASM has a sandboxing model. The idea is:

1\. Control flow is always checked. You can't jump to an arbitrary address, you jump to index N in a control flow table.

2\. Calls out of the sandbox are also table based.

3\. Indexed accesses are bounds checked. On 64 bit platforms, this is achieved by demoting the wasm to 32 bit and using big guard pages. On 32 bit platforms, it's explicit compares.

The result is something which may become internally inconsistent (can Heartbleed) but cannot perform arbitrary accesses to host memory.

<comment><USER16> How is that different from CLR or JVM?

<comment><USER3> I'll speak to JVM; I'm less familiar with CLR but I believe it's the same.

JVM and WASM both have statically-verifiable control flow. No wild jumps, no executable stacks, etc. Phew.

Arrays and pointer arithmetic are a big difference. WASM has a big linear memory block, and instructions may access arbitrary locations within it - <USER2> runtime performs bounds checking only at the edges. So your `sprintf` can still overflow the buffer, and smash the stack's data, but can't affect the host, or the control flow.

JVM goes further: it prohibits pointer arithmetic _and_ pushes array accesses down into the instruction stream. To access a JVM array, you must provide the array reference itself, and the runtime will perform bounds checking using the length.

The JVM approach gives you better runtime safety - no Heartbleed! The WASM approach is lower-level and is more easily adapted to existing system languages: C++, Rust, other LLVMites.

<comment><USER17> CLR was designed to support C++ since day one.

And while WASM trumps the security trumpet, without actually supporting proper bounds checking, the CLR will taint C++ pointer arithmetic as unsafe, thus making the whole module unsafe.

So I as consumer can decide if I am willing to trust an unsafe module or not.

<comment><USER18> The CLR doesn't guarantee control flow integrity (modulo type confusion) or any form of isolation when linear memory accesses are used. So here WASM offers another option in the middle between trust and don't trust: "trust unsafe module only to not compromise its own functionality; no attacking the rest of the process or kernel" (modulo runtime bugs).

<comment><USER17> Well for that execution of unsafe Assemblies was already enabled anyway, so there isn't much that the verifier can do.

Which is something that WASM isn't being honest about, corruption of internal data structures is allowed.

If I can control what goes into memory just by calling module public functions with the right data set and access patterns, CFI won't help a thing.

Suddenly the authorization module that would authenticate me as regular user, might give me another set of capabilities and off to the races.

<comment><USER19> Note for C++ on the CLR that you can use /clr:safe as an MSVC compilation argument. This errors out when trying to access to random pointers at compile time.

/clr:pure uses unsafe and supports those cases though.

And yeah, WebAssembly only doing bounds checking within a _single_ memory block and not actually offering true bounds checking is a big downgrade, and a pretty much unjustified one (+ it's rare among JITted languages...).

<comment><USER20> If you care about "true" bounds checking, just compile to Wasm from a safe source language. Besides, Wasm does support multiple memory blocks so a potentially-unsafe module need not "taint" anything else.

<comment><USER17> Security is as strong as the weakest link.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> > Node v13.0.1 (interpreter) 28 59.5x

[https://github.com/wasm3/wasm3/blob/master/test/benchmark/co...](https://github.com/wasm3/wasm3/blob/master/test/benchmark/coremark/README.md)

59.5x faster than node.js at what? Executing WebAssembly?

<comment><USER13> V8 has a built-in (pure, no JIT etc.) interpreter of WASM. Which is quite slow according to this test.

</comment></comment><comment><USER22> These are impressive performance numbers.

> Because operations end with a call to the next function, the C compiler will > tail-call optimize most operations.

It appears that this relies on tail-call optimization to avoid overflowing the stack. Unfortunately this means you probably can't run it in debug mode.

<comment><USER13> It's not that bad even in debug mode (or without TCO). Just not optimal. Also, there is a way to rework this part, so it does not rely on compiler TCO.

<comment><USER22> If the jump to the next opcode is a tail call, wouldn't an arbitrarily long sequence of instructions take arbitrarily much stack space?

</comment></comment></comment><comment><USER23> Impressive list of constrained targets for embedded. The AtMega1284 microcontroller for example has only 16 KB of RAM. Which is a lot for an 8-bit micro, but pretty standard for a modern application processors.

<comment><USER13> Yup. TinyBLE is nRF51 SoC with 16Kb SRAM as well.</comment></comment>


Nokia vs Apple in The Internet Mobile Device Market - <AUTHOR> http://www.readwriteweb.com/archives/nokia_vs_apple_internet_mobile_device_market.php <comment><USER2> I predict that nokia's lead in the internet mobile device market will go back up with the release of the n96 in a couple months and the e66 (u.s. version). The release of these two handsets in combination with quite a bit of widespread dissatisfaction with the 3G iphone (battery life anyone?) will facilitate this. Also, remember nokia has not come out with their touch devices yet, so those handsets are also on the horizon.

<comment><USER3> I'm as big a Nokia fan as one can get, my current mobile is even the N95-8gb... however, there are a few problems with this:

1) The Nokia N96 is expected to cost at least $800. The E66 = $500. Let's see, buy 2-3 iPhones or one Nokia? The average US mobile consumer is going to look at the fashion factor / price and very little else.

2) The N96 is being released without support for NAM-3G (the same thing they did with the N95), so basically the phone is useless in the US from that standpoint.

3) Nokia E66 is not a U.S. spec Nokia N96

The N96 might drive sales over in Europe/Asia, but in terms of seizing a growing 3G market in the US, they're absolutely screwing themselves by releasing NAM-3G counterparts half a year later. Nokia needs to get in the game and realize that NAM-3G is finally here (because of the iPhone 3g), and waiting 6 months isn't helping to push new products. 3G is the US cell-phone buzzword for 2008, and Nokia fully blew it on this one.

And yes, I'm pissed, because I expected to get rid of my Euro-spec N95-8 and get an N96 that would fully work in the US.

</comment></comment><comment><USER4> I'm surprised not to see the Windows Mobile platform mentioned by a single word. Almost everyone I know with a smartphone has a Windows Mobile-device.

I very much doubt, as the article somewhat implies, that Nokia's loss of market-share is due to the iPhone alone.</comment>


What's the deal with online journalism? (A: Can't measure story impact.) - <AUTHOR> http://www.cringely.com/2016/06/28/15290/ <comment><USER2> The comments about journalism already suffering from the mid-70s is interesting. It seems to generally be taken as gospel that the Internet is responsible for the woes of the newspaper industry and serious journalists everywhere.</comment>


Google: Gmail users shouldn't expect email privacy - <AUTHOR> http://www.theguardian.com/technology/2013/aug/14/google-gmail-users-privacy-email-lawsuit <comment><USER2> This is a disgraceful smear. The phrase "expectation of privacy" occurs exactly once in the cited filing, and that's in a quote from another case. It is used to argue that if someone (not necessarily a Gmail user) sends email to a Gmail user, that sender ought to expect Gmail to process the email. What exactly Gmail does with the email is between the recipient and Google.

</comment><comment><USER3> No, Google did not say that there is no privacy in Gmail: [http://thenextweb.com/google/2013/08/14/no-google-did-not- sa...](http://thenextweb.com/google/2013/08/14/no-google-did-not-say-that-we- cant-expect-privacy-in-gmail/)

> Earlier on Tuesday, Google was quoted by Consumer Watchdog, RT.com (Russia > Today) and Gizmodo as having argued in a legal motion that customers have > "no legitimate expectation of privacy", but the quote has been taken out of > context.

<comment><USER4> Do some digging into Consumer Watchdog, they are basically a FUD group that basically comes up for air to launch Google smears then recede beneath the waters. The identity and funding of the organization are totally obfuscated.

<comment><USER5> Google is just one part of what they are active in [1].

[1] [http://en.wikipedia.org/wiki/Consumer_Watchdog](http://en.wikipedia.org/wiki/Consumer_Watchdog)

</comment></comment></comment><comment><USER6> ...but if the message contains a virus, then I should be protected from the sender's message exposing me to a virus, and I'll accuse the e-mail provider of negligence if they don't scan attachments in my messages for known viruses.

I'm not sure if I should be "stunned" by the admission that users shouldn't expect this kind of privacy, since e-mail is really nothing like postal mail as the article asserts, in the sense of packages being processed, delivered as-is and left unopened in the condition they were sent.

<comment><USER7> ...Is that a reasonable counterargument to the most recent ravings about Google and privacy? I didn't think they actually existed.

</comment></comment><comment><USER8> How is this a surprise?

The particular argument in this case is as old as GMail is: Google uses email content as a factor in presenting ads in the service. That's been the case since day 1. The case isn't suggesting Google gives individuals access to your email content, or publishes or shares them with other organizations. The case is directly about how GMail has always worked.

<comment><USER7> It's not a surprise, it just rides the trendy tide of accusing big corporations of egregious privacy violations.

Obviously Google has been doing this for years. But it's a slow news day and we need a sexy headline, so let's go with a recent favorite: "<insert BigCo here> is violating _your_ privacy! What are you gonna do about it?! Get angry!"

<comment><USER9> That may be true, however, we may understand that google has been doing this since day one but many people have no idea about this kind of stuff. Not everyone understands the Internet and how everything works... to some people I'd imagine this could be quite shocking.

But I do agree that this is definitely part of a trend and this could have been reported on at any time over the last couple years.

</comment></comment></comment><comment><USER10> Holy shit still? This is a misquote [http://thenextweb.com/google/2013/08/14/no-google-did-not- sa...](http://thenextweb.com/google/2013/08/14/no-google-did-not-say-that-we- cant-expect-privacy-in-gmail/)

<comment><USER11> Thanks for posting this. I was looking for the quote in the document [0] and was surprised to see no such quote by Google but rather a reference to a past case.

[0] [http://www.scribd.com/doc/160134104/Google-Motion-to- Dismiss...](http://www.scribd.com/doc/160134104/Google-Motion-to- Dismiss-061313)

</comment></comment><comment><USER12> For the umpteenth time to the umpteenth submission, this is not true, Google never said that: sections of this legal motion have been deliberately taken out of context to mislead readers.

If anything that quote is about non-Gmail users and even then it's in response to a certain aspect of the complaint.

The lawyer cited a 1979 precedent (as lawyers wont to do) to counter a specific allegation:

 _"a person has no legitimate expectation of privacy in information he voluntarily turns over tothird parties." Smith v. Maryland, 442 U.S. 735, 743-44 (1979)._

The whole case is built on trying to make physical mail (snail mail) analogies applicable to email, and Google's lawyer is counter-arguing accordingly. They are accusing Google of "reading" emails when it's computers "parsing" text, that particular part of the motion is in response to the argument that non- Gmail users class action is valid since they didn't agree to the TOS, Google counters the mail providers' "automated processes" are analogous to assistants that are allowed to open mail for their employers (the recipient). The "third parties" here aren't necessarily Google but the recipients of your email who happen to be using Gmail. As since you've turned over your information voluntarily to the email recipient they can apply "automatic processing" to it.

Link to relevant page: [http://www.scribd.com/doc/160041493/Google- Motion-061313#pag...](http://www.scribd.com/doc/160041493/Google- Motion-061313#pag..).

The case is about Gmail "scanning" emails to target ads, Google is arguing (rightly so) that machines parsing emails is not equivalent to "reading" it, and that "automated processes" are necessary for spam filtering, full-text search, etc.

The entire motion, read it and make you own conclusions: [http://www.scribd.com/doc/160041493/Google- Motion-061313](http://www.scribd.com/doc/160041493/Google-Motion-061313)

Shame on the guardian for publishing this (although it's their dubious tech section), the author evidently haven't read the motion, consulted a lawyer or bother to ask Google for comment.

</comment><comment><USER13> Pfew, The Guardian seems to be trying to win the Biggest Bullshit Of The Year award for 2013? Google mentions that automatically scanning Gmail and showing relevant ads has been standard from the start and is part of their privacy policy. The Guardian makes this into a vague NSA reference to link-bait... Terrible journalism, if you could even call it that.

</comment><comment><USER14> This is, obviously, obvious. Have to wonder why the plaintiffs thought they did not have to pay for this service. TANSTAAFL.

I've talked to plenty of businesses that are subject to privacy rules or laws (because they handle confidential personnel or health information) that preclude them from using Google for email or data storage. I argued that this data was probably safer on a Google server than on a server in their office being taken care of by a outsourced sysadmin. They completely understood these issues before I explained them, and they were not more computer-savvy than your ordinary citizen.

</comment><comment><USER15> this may be going too far; as far as I know, Google has always been frank about their _processing_ of the e-mails. Heck, who here hasn't been reminded by gmail that _you said you 'attached' something, but you don't have attachments_?

There's always a tradeoff, and in case of gmail, we trade off waivering content-based automatic process with convenience. If you wouldn't like to trade anything with privacy, go find something else. There's a reason why Lavabit attracted a decent amount of users.

Having said that, the google privacy policy[1] tells of exactly what sort of information they collect, and to what ends they use. The problem I have with the whole NSA debacle _concerning_ Google is with this exact phrase:

> We will ask for your consent before using information for a purpose other > than those that are set out in this Privacy Policy.[1]

I'm fine with waivering some rights, albeit limited, for an exchange with my enormously convenient service. If you do stuff which we never agreed in the first place, and which you had told me to ask for my consent, behind my back, I'm not fine with it.

[1] [http://www.google.com/intl/en/policies/privacy/](http://www.google.com/intl/en/policies/privacy/)

<comment><USER16> "Heck, who here hasn't been reminded by gmail that you said you 'attached' something, but you don't have attachments?"

Is this something that requires Google servers to inspect your mail? Pretty much every email client I have ever used does this even if I have no Internet connection. It is really a matter of matching a regular expression and checking if there are any attachments to a message being composed.

</comment></comment><comment><USER17> I don't care what Google says in their filings, we absolutely SHOULD expect privacy and confidentiality. Whether Google cares to honor and fulfill that expectation is up to them.

Now what they're really saying is "Google has no intention of helping keep your email private and confidential" which is a very different thing from insisting users have no expectations of privacy. They cannot speak for me.

<comment><USER18> That's not what they're saying at all; they're saying, as agreed to in the TOS, they will require "read, copy, and modify" permissions to messages. They need to read to provide world-class, spam filtering, virus protection, etc. They need to copy to distribute messages across redundant storage, so you don't lose your messages and they are readily available around the world on any device. They need to modify to display your messages in a sexy fashion. Among other reasons to require these permissions. You are very welcome to not agree to the TOS, and it's unlikely they are going to make exceptions to be able to turn off these features and need for the subsequent permissions, because most people won't give a crap about a non-human "reading" their messages, and everyone +/-1% will do a worse job at securing their own email service.

</comment></comment><comment><USER19> This shouldn't come as a surprise to anyone. You're using a web based email service and you're sending postcards when you should be sending letters. Both this and Lavabit feel like distractions.

<comment><USER16> 1\. You are assuming that everyone understands what "web based" means.

2\. You are assuming that everyone understands that email is like a postcard.

I have even met technically competent people who were surprised to discover how easy it is to forge email headers. When even people with years of accumulated knowledge about computers carry bad assumptions around, what can you expect out of people with little-to-no understanding of computers? For a lot of people a computer is a magical box that is beyond their comprehension.

<comment><USER19> I am not assuming and I agree about the magical box, but I have little sympathy for user ignorance and tire of this as an excuse. In the UK we are facing massive internet censorship because the masses of 'computer is magic' users are outraged about Facebook and Twitter posts, and accept filters to be put in place etc My mum thinks it's a great idea. It is complete bullshit caused by utter ignorance and failure to comprehend what is at stake etc. Sorry to rant but I get upset that this is somehow an excuse.</comment></comment></comment>


Google AI Challenge - <AUTHOR> http://csclub.uwaterloo.ca/contest/index.php <comment><USER2> Due to other engagements, I've decided to pass on in participating this, but not before my imagination went wild :)

First iteration: this is a schoolbook-example of discreet state spaces; the moves of each player can be represented by a tree, in which we're searching for a node with the following properties:

-is it OTHERplayer's move

-without him having further valid steps

Using a breadth-first search, calculating the number of moves forward has a (both time, and space) complexity of N^3 (you can not move backwards). Calculating all of the possible steps forward, then selecting consistently moves, where all possible end-state is a winning state would yield a mathematically guaranteed always-win robot (to the extent the table's configuration allows for).

This is feasible for several of the built-in test maps (the ones without nasty combinatorial explosions), as well as in endgames.

Working from this one backwards, see how much space you can fill for each player at a given step! If fill(a) != fill(b) then one of the players has been cut off; and the one with larger space wins.

This should give you a good head start; of course, you still need to figure out a good heuristics, that puts you into a position for a killer state-space :)

</comment><comment><USER3> These kind of collective challenges seem to me the best way to learn programming. If I had the time/money, I'd love to find a way to monetize a website dedicated to competitive challenges like this. I'm surprised TopCoder doesn't sponsor them.

About the problem itself, it seems solvable in a way that a good algorithm will never lose. Or am I off in my intuition?

<comment><USER4> I'm having trouble coming up with an evaluation function for game states. How can you tell which move is advantageous over another?

<comment><USER3> Deleted, my assumption about an m-by-n board with opponents starting in opposite squares was wrong [0]. Apparently, there will be arbitrary maps with what looks like mirrored (not random) starting positions. My intuition would then be to generate dynamic strategies which attempt to box the opponent. But that seems easier said than done :)

0\. [http://csclub.uwaterloo.ca/contest/forums/viewtopic.php?f=10...](http://csclub.uwaterloo.ca/contest/forums/viewtopic.php?f=10&t=29)

</comment></comment></comment><comment><USER5> Very cool -- particularly the support for so many languages. I was expecting them to require java or some such...

Once they make scheme available, I might give it a shot.

</comment><comment><USER6> It seems hardly fair that the waterloo students have already submitted their AI for it while the problem description page ( <http://csclub.uwaterloo.ca/contest/problem_description.php> ) is empty.

<comment><USER7> The problem description can be found at the bottom of this page: <http://csclub.uwaterloo.ca/contest/contest_information.php>

</comment></comment><comment><USER8> Any idea what size grids the contest is actually using or at least within what order of magnitude? The graphic used seems to show a square grid with a size of around 15-20 on a side.

</comment><comment><USER9> What is the connection to Google? It sounds more like the University of Waterloo AI challenge? Still sounds like fun.

<comment><USER10> they won the challenge last year, so they get to hold it i guess

</comment></comment><comment><USER11> The red text here makes them seem pretty paranoid about their ability to sandbox the submissions: <http://csclub.uwaterloo.ca/contest/contest_information.php>

</comment><comment><USER12> As a kid I wrote AI for snake in Atari Basic. I was very proud of it since it played aggressively and when you moved your snake close to its, it turned to get in you way when it was sensible.

</comment><comment><USER7> Working on this. The way the Ruby starter pack is written makes it mostly useless, so I ended up rewriting all the map class. I suppose that's what happens when they translate Java to Ruby.

<comment><USER13> I'm also trying Ruby on Mac OS X and I can't run any java simulations. Always throws a Bad Version number in .class file exception. I think I have the JDK, but anyway the most recent version on the Sun's website is not available for Mac OS X...

</comment></comment><comment><USER14> At my university they held Robocode contests <http://robocode.sourceforge.net/>

It was a fun way to learn programming.

</comment><comment><USER15> Waiting eagerly for the Haskell starter kit...

</comment><comment><USER16> Waiting for the C# kit, but maybe I'll use it as a way to teach myself Python or Ruby. Seems like a fun exercise!!

<comment><USER17> Yeah, I'm going to use this to improve my python skills. The last time I used python for anything remotely serious was 5 years ago... seems like it might be a bit dated.

</comment></comment><comment><USER17> Is there a good way to keep track of AI challenges as they come up? Or does HN seem to capture most of them?

</comment><comment><USER18> I'm winning this at the moment 57-0-2.</comment>


Show HN: Coin Daily Update – daily email report with cryptocurrency rates - <AUTHOR> https://coindailyupdate.com/ <comment><AUTHOR> I was looking for something that will send me daily email report with the rates of the cryptocurrencies I'm interested in. Seems trivial but couldn't find anything simple that just works. So - I just built it on my own. Would love any feedback or feature requests.</comment>


Minecraft is not just fun – it's changing education - <AUTHOR> http://www.pri.org/stories/2015-08-06/when-video-games-are-educational-they-are-fun <comment><USER2> Minecraft - especially _modded_ [1] Minecraft - is not just good for education; I believe it gives first-hand experience in on of the most important lessons for the future, which is the value of _automation_. In a future where "humans need not apply"[2], knowing how to automate tasks is one of the best skills you can have.

In modded Minecraft, some of the fancier equipment has very high resource costs. Most people figure out very quickly that _manually_ mining for several thousand iron blocks and hundreds of diamonds is a waste of time, so they learn to instead invest in the automated quarry robots. Later on, when their chests are overflowing, the Applied Energitics[3] "(literal) storage area network" becomes a priority. Some of the more recent mods require things like "8x compressed cobblestone" (9:1 compression, requires 9^8 = 43,046,721 cobblestone) which are so expensive they are not actually possible to make without automation.

Learning to say "lets build a machine to do that" when faced with a repetitive task may be one of the few jobs that exists in the future, and I've seen quite a few youtube videos where people of all ages discovered the lesson on their own by playing Minecraft.

[1] An archetypal example might be Jadedcat's "Agrarian Skies" modpacks ( [http://ftb.gamepedia.com/Agrarian_Skies:_Hardcore_Quest](http://ftb.gamepedia.com/Agrarian_Skies:_Hardcore_Quest) ), which are empty "skyblock" maps where you start with a minimum set of items (e.g. a dirt block and a sapling) and grow those into silly amounts of automation that can build just about anything in the game.

[2] [https://www.youtube.com/watch?v=7Pq-S557XQU](https://www.youtube.com/watch?v=7Pq-S557XQU)

[3] [http://ae-mod.info/About-Applied-Energistics/](http://ae-mod.info/About- Applied-Energistics/)

/* and if you want to take this to a silly and frustrating extreme, try _GregTech_ */

<comment><USER3> Agreed, these are things you can take away from playing minecraft... and we are on the same page, if we both think computer-games are an awesome way for explorative learning and creative development.

But still this doesn't change anything in the way our educational system works... Even if you see it as a new tool... i highly doubt you can build traditional courses around minecraft ( because some will love it and use it, while others will not see the potential and would just use it as another internet-surfing course. ) But as our educational systems fail more and more, bores us to death... motivation towards autodidactical styles of learning rise... and i think this is what we see in the sometimes incredible outcomes of minecraft games.

As it seems the empty canvas and creative outlet for people ( i admit i never played it and therefore can't fully understand the hype around it ).

<comment><USER4> I'm not sure it would be new courses; but it would be new manners to do projects and present, much like PowerPoint was introduced decades ago. It's right there alongside the course, like a chem lab is right behind the desks in chemistry class.

</comment></comment></comment><comment><USER5> Always amazes me that someone can talk about Minecraft in education without mentioning ComputerCraft, and the EDU variant: [http://computercraftedu.com/](http://computercraftedu.com/)

Simply the best way for kids to learn programming ever made.

</comment><comment><USER3> Ok, this article is just weak... Kids are using minecraft to live out their creativity... So how is this changing education? They are not learning how to be creative ( at least i see no prove for that in this read), they just exercise the skills they already have, which of course will train their creative muscles. Maybe you can say minecraft is a superior tool for doing so, as it doesn't enforce phisical limits ( and maybe introduces new challenges like mentioned materials etc. ). I read this because i expected something like the claims they made for second live, while i was in university, which we used for online courses ( also building auditoriums and stuff ) and soon failed to deliver the platform for courses with user-interactions and so on...

<comment><USER2> For traditional education, Minecraft serves two purposes: 1) it gets kids interested, and 2) it's a blank canvas the teacher can use similar to how they use a blackboard or any other teaching aid.

As usual in education, tools like Minecraft do not work _on their own_ (save more maybe the creative uses you mentioned). The teacher still has to be able to use the tool effectively.

<comment><USER6> And have the time to build the appropriate constructs for the learning to take place within. The knowledge that minecraft could be a useful learning environment hardly means that it is a practical one.

<comment><USER2> That's true for any teaching aid. Teaching is a hard, time-consuming process. The fact that some teachers have used Minecraft very successfully in their lessons proves it can be practical. It's up to the teacher to decide if they can use it practically in their lessons.

Software tools (in general, not just Minecraft) could become a lot more practical in the future if the community creates a CPAN/rubygems/npm style archive.</comment></comment></comment></comment>


Why FaceBook hasn't solved inbox spam issues. - <AUTHOR>

Place your bets on why FaceBook, with all of its top Social Media Engineers and Top-Level developers, has been negligent about solving issues of inbox spam...
If a user creates a FaceBook message, they can send it to other members with numerous FaceBook accounts listed in the distribution list. All subsequent FaceBook messages, from everyone in the original distribution list go out to EVERYONE in the original distribution list (friend or not), and there's no way to turn it off, even if you block the original message sender's profile.
This has been happening for ages, and there's no end in sight. In the wake of MySpace's downfall, you'd think thy would pay a minor amount of attention to spam controls, (Which led to MySpace's downfall)
Why is this happening?
1. Because FaceBook wants to retain their rank on Alexa by causing users to generate clicks (by keeping users constantly "engaged" in the process of deleting spam)?
2. Because FaceBook is legally blind, and doesn't know about this issue?
3. Because FaceBook thinks that the flow of useless information like "Listen to my demo" or "Join this group I'll forget about after a month of failure" should be upheld because its what the Internet is about.
Sorry to be so cynical, but I've had to log out of the application fro the last 2 days due to an annoying discussion in my inbox that I have no interest in, nor control over. #NoOffense, but these days I prefer Twitter. <comment><USER2> I suspect they don't care. There are a TON of usability issues dating back years that people have created groups and pages around, asking them to fix. And these appear to have gone largely ignored by FB. So that's my take on it

<comment><AUTHOR> This will probably be a deal breaker for me, it will probably get passed over by most users because they don't realize that its happening until it happens to them. _sigh_</comment></comment>


Amazon Kindle is UK's most unused Christmas present - <AUTHOR> http://www.pocket-lint.com/news/44083/kindle-most-unused-christmas-present

<comment><USER2> The Kindle is for people who like reading books, or who want to read more books. I suspect the low usage comes from people buying Kindles for others that don't _want_ to read more books.

<comment><USER3> Could be, but how do you explain the (nearly) 10% who never used their iPads?

>> The iPad is also mentioned: 9 per cent of respondents claim that they are yet to use their new device because they "haven't gotten round to it" or because "it isn't fully charged".</comment></comment>


A Simple Guide to Creating Heatmaps - <AUTHOR> http://blog.smartbear.com/web-monitoring/the-heat-is-on-a-simple-guide-to-creating-heatmaps/

<comment><USER2> I didn't realise that gMaps now had a heatmap layer option. That makes life a lot easier for me (once I work out how best to bucket the points into WeightedLocations).

</comment><comment><USER3> Also, the QGIS heatmap plugin is very good and fairly simple to use (although, admittedly, it's a little more involved than OpenHeatMap).

</comment><comment><USER4> I love that he used brony data for the examples. :-)</comment>


Thinking with Lazy Evaluation - <AUTHOR> http://begriffs.com/posts/2015-06-17-thinking-with-laziness.html

<comment><USER2> FTA: _Control flow can be manipulated as data._

That's an interesting perspective, I've never seen it that way before. I would love to learn more about this, as a non-Haskeller.

<comment><USER3> I see functions as tiny stepping gears and composition as the mental act of assembling these mathematical pieces of geometry.

<comment><USER2> As far as that goes, you can do it in Lisp or ML, too. But Haskell's lazy evaluation adds a nontrivial twist to it that I haven't fully grokked yet.

<comment><USER4> I understood Haskell once I internalized the actual purpose of non-strict semantics.

Abstractly your program is a tree rooted at main. In a language like C you concentrate on building trees knowing that you are going to touch every node. So you are trying to design small trees that have good execution semantics as well as being correct in the problem solving domain. You have to address the problem at 2 levels. Because C is strict every function you call will be evaluated before it can return some result.

Haskell is different you can build any tree you like because a node will only be evaluated if its result is required for the current context. You are free to work with models of data like "the integers" or "all possible game states".

Concretely in C if you wanted to find the smallest positive integer that satisfies some property P you would write something like

        for (int i=1; ; i++) if (P(i)) return i;

This is a single node in your program tree which modifies a variable until a condition is met.

In contrast in Haskell you might do something like

        find P [1..]

I would interpret this as find operating on an infinite lazy tree and discarding the infinite tail list (which is an infinite computation) once the result is found.

Applying this simple example, in Haskell you aren't concern with limiting the shape of your program's tree. You build the correct model for your program regardless of constraints like infinite lists or terminating searches early. You just allow non-strict evaluation to process your input data because you will never have to strictly generate an infinite integer list before scanning it.

At root non-strict semantics is just a reversal of the order of reduction of expressions.

<comment><USER3> Am I misguided to think that strict / lazy has some relation between push / pull effects in other systems (GUI, parsing) ?

Beautiful comment btw.

<comment><USER5> That sounds like a good intuition to me. Strict is like push, because it gives you the result as soon as it's ready. Lazy (or perhaps more precisely non- strict) is like pull because you have to go and ask for the result.

<comment><USER3> Yes, and after years of struggling to find which should prevail, I recently heard the term of backpressure (used in reactive GUI IIRC) to be able to reason about things in both direction. Is there a middle ground for evaluation strategies ? Right now one can for strictness (in Haskell) or lazyness (in ml) but I never found a 'theory' about both.

<comment><USER6> _...backpressure (used in reactive GUI IIRC)..._

And unix pipes, and node.js streams...

Your intuition about a middle ground is interesting. Perhaps one of javascript's derivative languages could come up with some syntax to make using this more intuitive, because let's face it node.js streams would be easier to use if there were some way of plumbing them together that didn't look like Java from 1999.

<comment><USER7> I don't know node, but, conceptually, Arrows [1] map to the steam concept very well (as always in Haskell, they are more general). The sugar in Haskell to use them similar to do-notion is really a joy to use.

I was exposed to them in the Haskell music library Euterpea in the Haskell School of Music [2]. The signal processing API uses arrows.

[1] Generalizing Monads to Arrows. John Hughes. [http://www.cse.chalmers.se/~rjmh/Papers/arrows.pdf](http://www.cse.chalmers.se/~rjmh/Papers/arrows.pdf)

[2] [http://haskell.cs.yale.edu/?post_type=publication&p=112](http://haskell.cs.yale.edu/?post_type=publication&p=112)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> One thing that bothers me is, can I rely on the compiler making those optimisations? Which ones are guaranteed for me? Those are sort of important considerations, because it can mean the difference between a linear fibs and a quadratic fibs, or an O(nlogn) sort and a O(n²) sort.

</comment><comment><USER9> Nice. But Laziness with I/O is not trivial at all.

<comment><USER10> Haskell has some great solutions for lazy IO: io-streams or pipes for example. Check them out! It's a great way to code IO.

<comment><USER9> Yes. Conduits and iteratees too, for that matter. And I believe, there was some talk about "Machines", which I did not understand at all. Am not sure what is the current status of that approach.

I thought conduits and io-streams are preferred over pipes.

<comment><USER11> As I understand it in the Haskell community right now.

1\. Pipes | Conduit

2\. io-streams (perhaps not in 1 only because of a lack of popularity and it is new)

3\. Iteratees (have some issue Pipes/Conduit do not which I can't recall)

Not sure where Machines comes in here.

<comment><USER10> io-streams is built specifically for IO and is in the IO monad. This allows for performance benefits as well as simplified API like using normal IO functions for error and resource handling (ex: `bracket` can be used)

</comment></comment></comment></comment></comment><comment><USER12> Neat. If you're a Ruby developer check out rlet - a rspec-like let for lazy evaluation:

[http://github.com/hosh/rlet](http://github.com/hosh/rlet)

</comment><comment><USER13> R has lazy evaluation (but only at function arguments). That makes it an easy place to play with some of the effects of lazy evaluation (but not get too bogged down with issues like IO).</comment>


Reddit launches self-serve ad tool (buy a sponsored link for as little as $20) - <AUTHOR> http://blog.reddit.com/2009/11/now-for-as-little-as-20-you-can-buy.html

<comment><USER2> I would be very interested in this if Reddit were chock to the brim of positive, technically disinclined females who enjoy commercial messages and spend money on software.

CTRs do not make advertising successful. Conversions make advertising successful. Your users, when they're in Reddit mode, "consume" links at a prodigious rate and are primarily engaged in interaction with Reddit rather than interaction with the links. Conversions from them are, for most businesses, going to be too low to measure. On the other hand, conversions from AdWords are fairly predictable, because if you're doing it right you are guaranteed to be speaking to someone who wants what you're selling.

Advertising is not a magic "pennies fall from heaven" game -- at the end of the day, somebody actually has to _buy_ something. When you cultivate an audience of rapidly anti-commercial poor adolescents, you end up with the only remaining advertisers being the sort of autoplay flash infection vectors, because scams are the only business model that works profitably.

<comment><USER3> Is something wrong with you? You are usually reasonable, intelligent and have a good point, but this - what on earth gives you the idea that only females by stuff?

I pay for last.fm to give me recommendations for music that I will properly like, then I buy the best tracks in iTunes. I would do the same with tv-shows if Apple would let me (non-us, don't even get me started). I am a male CS student, so by your comment I shouldn't spend any money at all.

<comment> daniel-cussen >only females buy stuff?

He's talking about the teachers that are his customers, I think.

<comment><USER4> The "technologically disinclined females" are his market, but the "pay money for software" one stings no matter who you sell to.

</comment></comment></comment></comment><comment><USER5> By the way, if any of you want in on the beta, mention either YCombinator or Hacker News in your email to firstname.lastname@example.com and we'll put you on the top of the beta list.

</comment><comment><USER6> I like the open bid, split the pie approach. I suspect that it will go spectacularly wrong at least a few times before it converges on an optimal ruleset.

But I'm glad that reddit is continuing to innovate.

</comment><comment><USER7> This is a good idea. I expect that reddit will make a lot of money from it.</comment>


Building 360 video - <AUTHOR> https://code.facebook.com/posts/1638767863078802/under-the-hood-building-360-video/ <comment><USER2> I wrote a library to play these videos: [https://github.com/thiagopnts/video-360](https://github.com/thiagopnts/video-360)

<comment><USER3> Very impressive... Do you have a toolset for converting regular video to 360?</comment></comment>


Using checklists for code review - <AUTHOR> http://blog.rbcommons.com/2013/04/24/using-checklists-for-code-review/

<comment><USER2> It sounds minor, but I think it's pretty important: The points on his checklist aren't clear yes/no questions, they're a bunch of things you should remember to consider.

Specifically, how do you check "Correctness of algorithms"? What is the criteria to pass that? "Well, I think it's right", of course you do, otherwise you wouldn't have committed it. Formal proof? Unit tests?

Items phrased like this are ripe to become a "looks fine, check" style process-theatre that doesn't actually add anything.

Credit where credit it due, "Are controls laid out in a way that makes sense given visual scan order?" is a bloody good one.

Checklists can be very helpful to make sure you remember to consider everything in the right order. I have a phone screen checklist that includes "introduce yourself" because sometimes I forget and that's embarrassing. At a previous job, we had a "stakeholders that might be affected" checklist used in feature planning (we had gotten into a bad habit of building features that affected the performance profile of the app, causing ops to get paged on the weekend because they hand't been told to expect different behavior, also: removing an arcane feature that we had wrongly assumes nobody used).

One thing to remember when comparing with flight or medical checklists: These people deal in repeating almost the same thing as consistently as possible. Software engineering is rarely like that.

<comment><USER3> I think even a woolly item like "Correctness of algorithms" is helpful - "why is he using bubblesort for umpzillion items?"

It's not really meant as a yes/no; it's meant to prompt the code reviewer (not you!) into checking the algorithms for insanity. Easy to forget that when you're rushed and hassled and wanting your lunch.

Also, aren't the majority of flight checklists for abnormal situations? And specifically to make sure that things are handled in a sane and sensible fashion when everything is going off klaxon-wise and/or on fire?

<comment><USER2> The developer should absolutely follow the checklist as well, otherwise he's wasting the reviewers time.

So, what you're describing is actually a good yes/no question: "Is the best algorithm for the problem used?" (or, better: "Has functionality that is available in a library been implemented by hand?", but that's not your point :) )

No, flights use checklists for even completely routine thing (especially for routine things, because that's where sloppiness will manifest itself first). For an example, if you forget to set flaps correctly before you hit the throttle for take off, you're going to have a bad time, so that's on the checklist. (Of course, these things are largely automated now, so modern aircrafts will yell at you if you don't. I think Airbuses will even override the throttle)

<comment><USER4> > "Is the best algorithm for the problem used?"

Rather: "Is the algorithm good enough?"

</comment></comment></comment></comment><comment><USER5> There's a nice list of checklists at

<http://www.projectcheck.org/checklists.html>

including a "checklist for checklists" (!)

<http://www.projectcheck.org/checklist-for-checklists.html>

Great article on the use of checklists in hospitals, by Atul Gawande:

[http://www.newyorker.com/reporting/2007/12/10/071210fa_fact_...](http://www.newyorker.com/reporting/2007/12/10/071210fa_fact_gawande)

<comment><USER3> Gawande's book on Checklists is excellent but I suspect more of an expansion of the NYR[1] article than a standalone work.

(Offtopically, "Complications" is also worth a read.)

[1] how do you abbreviate The New Yorker?

</comment></comment><comment><USER6> As much as people feel negatively about Java, it really has fantastic static code analysis tools. PMD, FindBugs, CheckStyle are all very helpful when properly configured. They're basically on the checklist level.

I think checklist level thinking for code reviews is bad though. It ends up being a pretty soul destroying experience when someone tells you that you need to validate arguments to all methods as not null (for the 100 you wrote), or that you should take the data in your test cases and put it in a text file. Or that you've re-used the same string in several places and should make it constant. Robots can tell me that, and I can get their feedback while I'm developing or choose to ignore it. People are invaluable for helping you step back and see how to re-organize your code, introduce new abstractions, re- interpret requirements, and see actual bugs that no QA person or tool would ever discover (likely affecting some unlucky user who would hit an extremely rare bug that couldn't be reproduced easily). Those types of reviews are invaluable. Put down the checklist and automate it instead.

<comment><USER7> To be fair, there are similar tools for most languages.

One of the most comprehensive tools for doing automated quality reviews of code is Sonar ( <http://www.sonarsource.org/> ). It supports pretty much all programming languages (thought not all for free).

For example, for PHP code sonar runs a combination of PHP_CodeSniffer, PHPMD, phpDepend and phpunit and integrates the reporting of all those tools.

</comment></comment><comment><USER8> Some of these can be caught automatically, and the more automation (taking the human out of the loop), the better, because humans can gloss over a checklist or accidentally skip something. My current project uses a combination of Gerrit, Jenkins and Sonar, along with unit/regression tests, so that every single change is checked automatically to make sure it builds and passes the tests, along with requiring at least one human review and okay it. Combine this with code checking tools (vera++, rats, cppcheck, cpplint, flawfinder, pscan, valgrind, fuzz, along with just about every warning available on two compilers), and we hardly ever have to do anything but look at code in Gerrit and approve it.

<comment><USER9> Side discussion: why do you guys think software like Gerrit, Jenkins and Sonar, software that is used by many folks and mostly praised, is written in Java (instead of say, Python)?

<comment><USER8> Honestly? Don't know, don't care. And yes, we have arguments about the pros and cons of programming languages all the time. I'm guessing that Java started down this road of appearing more "professional", and that went some ways towards people actually wanting to prove it, so things like accountability and reproducibility started getting serious consideration in mainstream programming. And it's not like everything is Java; git, vera, cpplint, valgrind are all not written in Java.

To be honest, the only reason we are using C++ is because it's mandated by the project, and quite frankly, it's what we're good at (we'd probably be working another C++ project if this one wasn't in C++). And yes, we know C++ is a kludge; quite frankly, I wouldn't trust a C++ "expert" who didn't question design decisions of C++.

</comment></comment></comment><comment><USER5> We've tried using checklists a bit for code review, and hit the problem that our checklists would be pretty much guaranteed to have at least one item that was arguably inapplicable to the changeset. So you'd have some changeset that was very small, or not contain UI elements, or did contain UI elements, or was related to build tools, and so on.

And so we'd get into a situation where we'd have to decide whether a particular item was even applicable or not, which somewhat defeats the point of checklists, since you're supposed to be able to decide immediately whether an item is satisfied or not.

<comment><USER10> "Not applicable" or "0/0 UI elements are correct" is a fine response to checklist.

</comment></comment><comment><USER11> I like it. A checklist is a very lightweight and efficient way for a team to codify a list of objective things that they feel _must_ be done and checked for every pull-request. Once that's done, it should be considered good to merge regardless of peoples subjective opinions about the code. This avoid drawn out and opinionated debates about the code dragging down productivity. That isn't to say a bit of debate isn't a good thing, it just need not be the _main_ thing.

</comment><comment><USER12> I have yet to see a code review checklist that I find useful. There are just too many things that can go wrong with software, so the list ends up either too long to be practical, or too generic to be helpful.

What I do find useful is to have a good variety of skills on the review team. Different people tend to check for different things. Some are just naturally good at spotting, say, concurrency problems, others have a pet peeve with names that aren't clear, etc. But someone who doesn't have an eye for concurrency problems won't magically start noticing them in a pile of code because there's a box saying "check for race conditions" somewhere on the list.

</comment><comment><USER13> I just think its rather silly to do code reviews this way unless you're writing software to power a space shuttle (ie stuff that should never fail/break), It would simply take too long.

<comment><USER14> i disagree. fundamentally the point of these checklists is to standardize the sorts of things you evaluate during the code review. if feedback is inconsistent, you end up seeing different standards applied to several parts of the codebase which can (and does) manifest itself as an inconsistent product.

the overall appearance of the checklist does make it seem like it would be problematic, but i think the author makes a good point of showing that they act as a template for the reviewer rather than as strict set of guidelines.

in a situation where "we're all consenting adults here," having a set of things to evaluate features or code style makes it easy for anyone to know what to expect when checking in a change or when reviewing one for the first time. it may not work for you, but it certainly adds consistency when they're used non-dogmatically.

<comment><USER15> Exactly.

Forcing a checklist upon all reviewers isn't what the article is all about, but rather it's about one developer's way of organizing his own personal process for doing code review so he doesn't forget something.

If I have a huge change in front of me, and I know that I tend to look for certain things, I could certainly try to look for all those in one go. That's error-prone, though. Might forget something, or get bogged down in syntactical stuff and miss something important. However, with a little personal checklist in front of me, I can go "Okay, I'm done looking at syntax. Now let's make sure that there's no off-by-ones." Leads to better organization of thoughts.

<comment><USER16> Lists in general are great for organizing thoughts. Being able to check items off the list helps focus thoughts and offload the overhead of keeping track of progress to something better suited to the task.

</comment></comment></comment></comment><comment><USER17> Couldn't a checklist also be the tests written for the feature? This ensures that future revisions don't muck with the already working system.

<comment><USER18> Some things are hard to write tests for. Basically most things where the criteria is "does it look right"

</comment></comment><comment><USER19> Checklists are OK, but beware the checklist. They tend to cause complacency. "It wasn't in the checklist!"

<comment><USER8> _"It wasn't in the checklist!"_

"Well now it is, and there's a unit test for it, and you won't be able to commit code that breaks that unit test. Problem solved."</comment></comment>


Tristan Walker: two years ago, today. - <AUTHOR> http://justtristan.com/post/7696394458/two-years-ago-today <comment><USER2> Someone with this kind of tenacity seems to be a potentially great "non- technical" cofounder. (Not to be misread as a statement implying that he's a foursquare cofounder.)

<comment><USER3> You should drop the "potentially." Anyone with the opportunity to work with and learn from Tristan should consider themselves extremely lucky. He's one of the most awesome, humble and driven people I know.

<comment><USER2> Without "potentially," I'd be describing him as a great non-technical cofounder, which would only be true if he were a cofounder. I am sure that he is an actually, not potentially, great person. :-)

<comment><USER3> Excellent point.

</comment></comment></comment></comment><comment><USER4> I can't help but imagine how the outcome may have been different had he not name-dropped "Stanford Business School".

<comment><USER5> Not trying to be snarky, but a huge benefit of going to a place like "Stanford Business School" is precisely the advantageous effects of "naming-dropping" you went there.

<comment><USER4> Indeed, but it side-steps the parts where the blogger inflates the importance of being passionate and such. Anyone less fortunate in those terms in that point in life probably couldn't get away with it, even if it were still a great school (top-50). It goes along the same irony vein that results in so many people to using Mark Zuckerberg as an example of how/why dropping out of school can be better than staying in, all the while ignoring the fact that he was still at Harvard, far above and beyond the initial position of those re- purposing the example for themselves.

</comment></comment></comment><comment><USER6> I am not sure I like people offering to work for free. Nor of founders taking people up on this offer.

Also, I guess this explains why foursquare signs up so many seeming biz dev wins but still does not manage to generate revenue from any of these deals. [http://online.wsj.com/article/SB1000142405274870407680457618...](http://online.wsj.com/article/SB10001424052748704076804576180841727743146.html)

<comment><USER7> Tristan worked for free for a really short period of time. He now makes a salary and has significant equity in the company (like all other full time employees at foursquare).

</comment></comment><comment><USER8> I got hired for my current internship in the same sort of way. I loved the company, and emailed one of the VPs telling him how much I wanted to work for him.

Probably doesn't work every time, but it's worth a shot.

</comment><comment><USER9> awesome post Tristan. working for free makes perfect sense for a short period of time--you let cofounders get an opportunity to try you out risk-free. it's not "desperate" like some people think it is; it shows serious dedication and interest, and those are the type of people you want to attract. too many people feel entitled, where has the appreciation for hustle gone?</comment>