Whither Stack Overflow - <AUTHOR> http://motherboard.vice.com/read/whither-stack-overflow <comment><USER2> The article casts users as the problem: help vampires, noobs and reputation collectors.

My strong opinion is that there are other serious issues that the article doesn't even touch on:

1) the silo model of creating dedicated SE sites. There should have been one SO for everything. Collaborative filtering etc would have been an infinitely better direction to go in.

2) the over-moderation by misguided 'defenders' who are too eager to mark something duplicate or move it to some dead SE site. Here's a group of users the article doesn't point fingers at, but which I believe is more of a problem than the noobs!

3) the shelf-life of answers. Almost all the accepted answers are now _wrong_. Frameworks change, features are added to languages, bugs get fixed. And woe betide anyone who asks a question afresh hoping to get a new and actually working solution...

4) that I'm ok with subjective questions. These ought be handled as such, rather than closed.

There are a gazillion little ways to fix this and make SO relevant again, but I think the mgmt and 'community' are a big part of the problem, not solution :(

(disclosure: I have well over 40K rep, most of it on SO)

<comment><USER3> > _There should have been one SO for everything._

What could _possibly_ go right about mixing Judaism questions and Christianity questions into the programming questions?

<comment><USER2> Its something I've mulled for years ;)

Here's about collaborative filtering: [http://williamedwardscoder.tumblr.com/post/15581427232/self-...](http://williamedwardscoder.tumblr.com/post/15581427232/self- organizing-reddit)

Here's just general SO discontent: [http://williamedwardscoder.tumblr.com/post/25426541504/stack...](http://williamedwardscoder.tumblr.com/post/25426541504/stackoverflow- unwinding) and [http://williamedwardscoder.tumblr.com/post/26580091073/stack...](http://williamedwardscoder.tumblr.com/post/26580091073/stackoverflow- humour-underflow)

;)

<comment><USER4> The collaborative filtering thing stands out as a really good idea to me.

Anyone here who can say anything about the community size you would need for something like this to be viable?

</comment></comment></comment></comment><comment><USER5> I stopped being really active on SO around the end of 2012. I don't think the reason was anything from the article. For me it was 2 fold: the rise of members who criticize _everything_ and the feeling of shouting into a void.

I don't have a good name for these users like help vampires. They seem more like Harry Enfield's old "Only Me!" character who show up to say "you don't want to do it like that" without providing anything useful. Post an answer to something that is tricky and doesn't really have a good solution and within minutes you'd have a comment saying "that's not the way to do it, the real solution is for the OP to start over using some other methodology". Often I'd get an accepted answer, but the comments were just grating. They'd gloss over the problem to post a rep-safe comment undermining your answer.

Then the other problem I had was I would find a problem that I'd suffered before asked as a question. It was usually something fairly uncommon. I'd post an answer, then there'd be nothing. No upvotes, no response from the OP, no comments... just nothing. I figured if the original askers don't care about their questions, why should I bother? Eventually from 2012 to 2015 I just stopped answering at all. I still occasionally visit the site but don't feel motivated to get involved any more. :-(

<comment><USER6> I'm with you. As far I'm concerned, Answer Puritans are more harmful than Help Vampires.

Just as you mention, for most questions on StackOverflow, there is at least one "Never Do That!" answer. Nobody seems to be aware that users seldom care enough about the sites the visit to "Read the FAQ" and no matter how many of them you hunt down and guilt, you will never find them all. The site has so much moral righteousness, it's kind of like the "Stanford Prison Experiment" of help sites.

While StackOverflow has many good qualities, it makes the mistake of "blaming the customer." It's an illusion to think you can improve a site by making people feel bad. The energy they spend on hunting witches, would be better spent on ways to fix the quality problem that focus on carrots only.

The problem with addressing question quality by making people feel bad, is that you're setting yourself up to be (ugh) "disrupted." As soon as someone finds a way to get the same quality of results without all the pithiness, and finger pointing, you're at a big disadvantage.

</comment></comment><comment><USER7> Interesting read. Here's how I'd sum up my history with Stack Overflow:

1) SO launched a few years after I graduated college and was an immediate and invaluable resource to me.

2) I learned more, got in a position to be able to answer some questions, and started trying to answer questions. Realized there were people on the site that were much faster than I was at answering (and often more incomplete) and stopped.

3) Started asking more subjective questions. They got really useful, long, smart answers from experienced people. Example question: "How do I plan an enterprise level web application?"

4) Started contributing to SO less and less as the correct SO answer would often be a top Google hit. 5) Noticed that many of my subjective question posts were closed or moderated in some way.

6) Tried asking more subjective questions that were immediately closed by moderators as being too open ended. Got frustrated. Stopped thinking of Stack Overflow as a place to go to get an expert's opinion.

7) Noticed as I got more experienced that the quality of answers was extremely variable. Sometimes the most upvoted answer or the answer that was marked correct either lacked import context/caveat information or conflicted my firsthand experience with the problem.

I don't use SO as a source of learning anymore other than when API documentation isn't available or sufficient.

It's an invaluable tool for a junior developer but becomes less and less useful as a person grows into their career.

<comment><USER8> > I don't use SO as a source of learning anymore other than when API > documentation isn't available or sufficient.

The latter point is really important. I use API documentation whenever it is actually reasonably complete and up-to-date. But with many abysmal documentations ( _cough_ Rails _cough_ ) I just go straight for SO because the thing I'm looking for is probably not even documented. Or if not, I won't find it in there because search is only by class/method name, not by task.

<comment><USER9> I often wish there was a site like SO with a great community around building task-oriented code-first samples to replace shoddy project documentation. Often with SO the accepted answer is too specific, outdated or not descriptive enough but its existence locks out better responses. I would prefer a canonical, up-to-date wiki answer than strict authorship most of the time. I've taken a few stabs at building a solution to this problem but I think finding the right mix is super important.

<comment><USER8> [http://meta.stackoverflow.com/questions/303865/warlords- of-d...](http://meta.stackoverflow.com/questions/303865/warlords-of- documentation-a-proposed-expansion-of-stack-overflow/303981)

<comment><USER9> Yes, I am in the beta. Does not seem like it provides much of the topic hierarchy (beyond 1-2 layers) or ability for long-form content that I would like. I built this [https://srcbottle.com](https://srcbottle.com) that approximates what I would like but am still playing around with it.

</comment></comment></comment></comment></comment><comment><USER10> I kinda left SO primarily for how trivial-oriented is has become. Say you write an answer on how to automatically distinguish images of floorplants from general pictures; 3 up votes. What is the current content type for JSON(P)? Hundreds.

The same goes for questions, if you ask something that is moderately complicated it will go largely unnoticed and unanswered (even if you bounty the hell out of it).

And then you have the zealous behaviour of some mods, some of them don't even have the slightest sense of consistency - I've seen extremely helpful questions with tons of valuable answers being closed as "off-topic" just because the post was (still) getting a lot of attention. Where as mostly related questions / answers in another thread (but with much less value in terms of knowledge) are still alive.

</comment><comment><USER11> What is interesting to me is how good their "are any of these questions similar to yours?" suggestions are. When searching fails, I usually start asking a question - often just to find a solution without posting it. And if not, I can still just post the question.

</comment><comment><USER12> The article summarizes a study that "confirms [the authors'] hypothesis as well as the community perception that the system was flooded by content that nobody cared about, while really interesting content was getting rarer" and presents this as a problem to be solved.

I think this is actually not a problem, because most users can still successfully find the answers they need on Stack Overflow.

Here's how I believe I and other users use Stack Overflow. We have a problem. We Google that problem (or occasionally search on Stack Overflow). We usually find a fairly popular (and high-quality) question with a fairly popular answer. We're satisfied by that answer.

The article points out that the number of good questions has remained constant, but the number of bad questions has increased. Maybe there's really a close-to-constant number of good, searchable questions that can be asked at any given time, and the declining average quality is just a result of Stack Overflow's popularity.

<comment><USER13> I know that I was looking for answers on specific Lucene problems and found multiple questions that were basically the same. There were some good answers on there, but the questions were closed.

My main issue is that there's a lot of closed questions that probably shouldn't be.

I also agree with many other comments that there should be far fewer SO sites. There's no reason why a lot of the technical SO sites related in some way to programming need to be separate ones.

</comment></comment><comment><USER14> Everything does NOT belong on StackOverflow.

I wish SO highlighted [http://stackexchange.com/sites](http://stackexchange.com/sites) so that people can participate in the respective stackexchange communities where they will be more welcome. I have seen that a lot of good questions on StackOverflow get closed/migrated simply because they are irrelevant on StackOverflow.

A similar analogy would be to think of something that would be gold in the right sub-reddit but controversial/irrelevant on the main reddit page.

StackOverflow encourages constructive Q&A.

The SO community has always aimed to close any questions whose answers will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.

<comment><USER15> I totally disagree. Back in the day a lot of these questions fit on Stack Overflow just fine. A lot of the sites are too specific and have to few users for good answers.

> The SO community has always aimed to close any questions whose answers will > tend to be almost entirely based on opinions, rather than facts, references, > or specific expertise.

This isn't true back in the day people gave good opinions on things with subjective answers. Frequently you'd have author of framework A saying whats pluses and minuses it has and the same for framework B and C. I didn't see any flamewars. The problem is that they started moderating questions instead of answers. If you get a bad subjective answer simply remove it with a warning.

<comment><USER14> > A lot of the sites are too specific and have too few users for good answers.

Thats what! If enough people aren't interested/participating in a particular stackexchange site, then an open-ended question on StackOverflow is not likely to generate any canonical answers with proper references from the people hanging out on StackOverflow.

Also such a question is likely to be too-specific i.e. "ahead of its time" to be discussed in an open forum without enough people having experienced first- hand the various nuances involved. Ergo, Fanboyism/Flamewars ensue...

The strict community moderation guidelines on StackOverflow, make it a very "clean" and informative part of the internet. This is at the cost of few "borderline-acceptable" questions being closed.

Right now, it appears to be a conscious decision to accept this fact on StackOverflow.

It would be good to ensure that people who ARE interested in a sub-domain are aware of he relevant stackexchange sites. Discover-ability and the ease of browsing/following related tags across the various stackexchange sites could be easier, so that people can "hang-out" in the relevant sites. Is there a way to generate unified feed or search for a tag across all sites on StackExchange? (i don't know. maybe it would help improve participation in the relevant sites)

<comment><USER11> I had a schoolmate in high school who believed that every question has an objective answer. Man, what a pita it was when he set out to find it and wouldn't let go even after all the others gave up and tried to abort the discussion...

Sometimes I am looking for subjective answer, because let's face it - objective one doesn't always exist (if ever). Saying SO is not the correct site for this is of course a legitimate response, but the feelings it evokes in me (especially after it replaced myriad of forums where I could have gotten a better answer) are not very friendly. I deal with it in my own way (not actively helping others), but it's a shame...

</comment></comment></comment></comment><comment><USER16> Just some thoughts about SO:

* The android section is terrible. The questions are a mixture of people not knowing how to write java code at all mixed with questions of people getting hindered by the terrible SDK. (I develop software in Java for 10+ years and Android still gets me sometimes.)

This situation would be better if it wasn't so easy to shoot yourself in the foot with the android-SDK, but nothing we can do about that now.

* Sometimes I have in-depth question about libraries which, if I follow the support-instructions, often go like this:

1\. Ask in the chat (ugh, why chat?): I almost never do that, because I need archivable asynchronous communication not chat.

2\. Ask on the mailing-list if there is one. This goes well in some projects.

3\. Open a github-issue. In overwhelmed projects like react-native, you get immediately forwarded to SO.

4\. Ask on SO where nobody answers because nobody knows the technical details.

So… The maintainers of projects like react-native often get spammed with general coding questions of newcomers, which leaves no time for in-depth questions.

Another problem is that, especially in Android, many answers are not actual solutions but crude workarounds that work in specific cases and might even break more stuff in the future. But: "Hey it compiles!".

 _frustrated_

<comment><USER11> Hey, really, you find Android SDK terrible? Genuinly curious, which parts? I have written my share of Java (though I wouldn't consider myself a hardcore Java programmer) and I found Android... logical, well documented and in general a delight to work with (well, apart from Eclipse and sloooooow emulators).

<comment><USER16> It's gotten better, but check my comments from some time ago:

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

Generally: bad inheritance, bad separation of concern, unidiomatic java (I think much of it was automatically converted from C++), overcomplicated classes and just so many wtf-moments I had.

Example: You want to store state.

1\. In standard activities you have this really nice method "onSaveInstanceState" where you can save state to a "Bundle". And "onCreate" where you are handed a bundle to restore. You write the logic for doing that and should be done.

2\. Then you learn that "onSaveInstanceState" isn't actually called when stopping an app, only when rotating the screen, so you have to save your state elsewhere. In onStop for example, sounds nice.

3\. onStop doesn't take a "Bundle". Hm… ok let's see save it to disk.

4\. Oh, Bundle isn't meant to be serialised because the internal format is allowed to change, so you have to write serialisation again after all. Ok, "Bundle" is out. Let's use json and be done with it.

5\. But for some reason it sometimes doesn't work. Turns out "onStop" only sounds like it's being called when your app stops. It's actually not guaranteed to be called, so you have to use "onPause".

This is just one example of many where things could be more aptly named, better documented and so on.

<comment><USER11> Thanks for the explanation. I guess I never even looked at the names of these callbacks because I just followed the app lifecycle diagram - yeah, I agree, the names could be much better.

<comment><USER16> Well nothing in the diagram here says anything about onStop being not guaranteed:

[https://developer.android.com/training/basics/activity- lifec...](https://developer.android.com/training/basics/activity- lifecycle/stopping.html)

</comment></comment></comment></comment></comment><comment><USER17> Whats more interesting is every other overflow doesn't work at all ( Except the original 3, perhaps mathematics and specialised server fault ones like Ubuntu )

It's just not replicate-able outside of the world of computers.

And it not because these other fields don't have solid answers, it just seems it's to hard to get consensus on what they are.

There is a best way to cook an egg, it's not subjective, but fked if cooking overflow can work it out.

</comment><comment><USER18> a well-written summary of a paper by Ivan Srba and Maria Bielikova of Slovak University of Technology, published this week IEEE Software. from the Vice article, near the end:

> Stack Overflow's talent for self-regulation is really, truly impressive and, > sure, results in some dickishness, but asking bad or lazy questions is its > own kind of dickishness. It would be a shame to see it erode further.

</comment><comment><USER19> Like Wikipedia, it's users vs. bureaucrats now. I actually dislike the "edit queue" that appears at the top of the profile; I'd rater opt out of participating in this patronizing crap completely.

</comment><comment><USER20> Do Stackoverflow use ML learning algorithms to filter out duplicate questions answers? Perhaps this could reduce some of the problems listed in this article?

</comment><comment><USER21> Stack Overflow needs to be front-ended by an AI which tries to find an existing answer to the question. There are sites which have keyword systems to do this, but it's time to move beyond that and have something with minimal intelligence.

<comment><USER22> "Now you have two problems."

(Though there's some sense to that, yes.)

</comment></comment><comment><USER23> We changed the baity title to the one encoded in the URL, often a good place to look for something more neutral.

Better still would be to change the URL to the paper the article reports on, but it doesn't seem to be accessible online.

<comment><USER22> I'll leave you to ponder whether or not HN wishes to officially link directly to Sci-Hub.

That said, those willing to thumb their noses at paywalled science may do so here: [http://220.127.116.11/http://ieeexplore.ieee.org/xpl/articleD...](http://18.104.22.168/http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=7412622)

<comment><USER23> I think that degree of anthill-overturning would be past prudent.

<comment><USER22> It's the first two words of that response I appreciate most.

The proposal was considerd. Rejected, but considered.</comment></comment></comment></comment>


Thumbnail track pad - <AUTHOR> https://newsoffice.mit.edu/2015/wearable-thumbnail-sensor-controls-digital-devices-0417 <comment><USER3> Touch your inner ring finger with your thumb.

That's the place to put it, and it could be sold as, you know... a ring, instead of a giant fake fingernail that makes it look like you had your thumb surgically replaced with a big toe.

What I'd really like to see is a novel mobile method of text entry. The first company to sell something that lets you efficiently type on the go without involving a tiny QWERTY keyboard is going to really make a difference in how we use tiny devices.

I've always wondered if it would be effective to try and determine virtual letter presses based on subtle "air typing" finger movements tracked with accelerometers or something. I might be willing to don goofy bluetooth fingernails for that kind of functionality...

<comment><USER4> Sorry for sounding like a shill for this comment.

as far as typing on silly surfaces, minnum has personally had my eye the most. tl;dr make the keyboard 1 dimension, and then use excessive prediction to correct the issues with that.

combining that with a watch with a distance sensor (up along the arm), you then would have a keyboard and trackpad in the space of a watch. [http://minuum.com/future-of-wearable-typing/](http://minuum.com/future-of- wearable-typing/) for explanation

</comment></comment><comment><USER5> I think calling it a track pad is probably the wrong angle - It makes it seem like you should be able to use it with the same fidelity as a regular trackpad.

Consider it as a completely new input device. Time for the UX designers of the world to make it something special. I like it a lot.

</comment><comment><USER6> "Let's say that today I wanna very subtly change the color of an accessory that I'm wearing when I enter or exist a certain social scenario"

This puts a smile on my face... but come on, there must be better uses. Surely touching the accessory is easier. Also, the lettuce stirring while scrolling seems like a problem that is most easily solved by speech recognition. It's not that I don't like the idea but if it is that hard to come up with a situation where it is the one and only, superior interface... Perhaps someone will think of it...

<comment><USER7> > but come on, there must be better uses.

Controlling devices like Google Glass comes to mind.

</comment></comment><comment><USER8> I can feel the RSI already. I was excited that this might have been a weird hybrid between a mouse and a trackpad where the tracking surface goes on your fingertip, and everything becomes a trackpad.

<comment><USER9> Right, a thimble?

I'd want it out of the way for typing and other tasks.

The thumbnail is probably a good place to mount because it's not touching skin for long periods of time, or blocking the pad of fingers.

I'd test a pointing stick "eraser" or a trackball of some sort (because capacitive touchpad style won't work on everything) on the fingernail tip.

</comment></comment><comment><USER10> Interesting, love the idea of small track pads. One issue that I immediately thought of though with it on your thumb is damage to the nail bed. As far as I understand it, pressure on the nail and the part of the thumb behind the nail can lead to nail deformities. Might be a bad place for repetitive use.

</comment><comment><USER11> This is obviously very cool. My one thought is that it would be very hard for children to use. It's important to consider adoption from a wide audience.

</comment><comment><USER12> just tried putting my index finger on the far side of my thumbnail; not at all "unobtrusive" from a comfort perspective, imo.

<comment><USER13> I'm not having any difficulty; if it were thin enough, I don't think I'd mind at all.

My concerns are with the precision.

<comment><USER14> My concerns are with the impedance mismatch between the touchscreen model and the trackpad model. It does not look straightforward to me to use a current touchscreen UI through this. Having this as a different input mode from touchscreen would ensure its failure.

<comment><USER13> I'm not sure what you mean. Can you elaborate?

<comment><USER15> I think he's saying that the shape of the nail is different than the shape of your computer's trackpad, making this awkward to use.

</comment></comment></comment></comment></comment><comment><USER16> I suspect people would end up getting a lot of repetitive stress injuries from such a device if used with one hand as pictured.

<comment><USER17> If so then just move it to a natural position. For example in a nostril.

</comment></comment><comment><USER18> I'm really interested in this type of tech but don't have any experience with electronics. Could a project like this realistically be completed by an amateur enthusiast?

</comment><comment><USER19> Wow, that's a great idea - but why not use the opposite side of the thumb - <USER2> if you are putting salt on things - imagine if you were having it there.</comment>


Why are we so bad at predicting startup success? - <AUTHOR> http://andrewchen.co/2013/04/08/why-are-we-so-bad-at-making-startup-predictions/

<comment><USER2> bad or unlucky?</comment>


Ask HN: How do I tell an Indie Dev about vulnerabilities that I exploited? - <AUTHOR> An Indie Developer sells his source code and a license to use it. His site is built on top of his product.
I watched a guide he created for getting started with his software. As he was demonstrating something I noticed a potential vulnerability. Out of curiosity I decided to try it out and see if it worked. And it did (I didn't expect it to). It allowed me to download the source that he was selling without having to pay.
Now it's probably at this point that I should have emailed him to tell him about the issue. Instead, I looked through the source and found a second vulnerability. This time, I didn't attempt to try it out on his site. But assuming that he uses the same code on his site, it means that anyone can purchase a license to use his source for any price they choose. Granted, if someone did this, he would probably notice that they didn't pay full price.
In short, I found two vulnerabilities on an Indie Dev's site that allows anyone to download his product, and pay any amount for a license.
How do I tell this Indie Dev about the vulnerabilities? I'm concerned that telling him I exploited a vulnerability (out of curiosity, not malice), and then found another makes me look like a black-hat. <comment><USER2> Just inform the developer outright. No need for secrecy. You are doing them a considerable favor. Tell the developer you will publish these vulnerabilities to the public in 3 months.

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

So long as you are not asking for any kind of compensation you are in the right. The moment there is a question of compensation the subject changes from responsible disclosure to extortion.

</comment><comment><USER3> I'll answer from the other side of the fence. I'm a semi-indi-developer. I mostly make software tools, almost all of which is distributed as source code. (it's not open source, but licensees get it as source code)

I get bug reports all the time. Some come with suggested fixes. Some discuss vulnerabilities. All are accepted with appreciation. All people I correspond with use their real names.

I don't have a bug bounty program, but folk who are helpful get discounts, and in some cases free licenses to other bits.

Of course YMMV. But if it was me I'd just email them the info.

</comment><comment><USER4> There's a saying:

No good deed goes unpunished.

What's right for your personal morals may conflict with the law. I'm sure most developers would appreciate the report. But some people misunderstand things. Are unreasonable. Or psychopaths.

If you want to send a report there is absolutely a need for secrecy. It may already be too late for perfect secrecy as all your actions on the internet are logged, so it's possible for the US government to determine that you were the one who downloaded source code. Unless you always use things like encryption and tor.

</comment><comment><USER5> > In short, I found two vulnerabilities on an Indie Dev's site that allows > anyone to download his product, and pay any amount for a license.

Would anyone really be brazen enough to obtain a license this way and expect legal protection?

</comment><comment><USER6> I'll go for some low hanging fruit here.

Anonymous email, VPN and tell him. Demonstrate it, explain it and don't claim the glory.

Disclaimer: I'm not a security expert so I've never done responsible disclosure.

</comment><comment><USER7> I would just email in good faith but dont ask for any compensation unless they have a bug bounty program which is unlikely for indie dev. I m sure they would appreciate it.</comment>


Google services down for some users - <AUTHOR> http://www.cnn.com/2013/07/10/tech/web/google-down/index.html?sr=sharebar_twitter

<comment><USER2> The issue, at least for me, appears to be with Comcast. I've confirmed that Google is accessible on both Verizon and T-Mobile networks.

Since I happen to be working on a web application with several scripts pulling from Google's CDN, I needed access to it. Assuming you have a server that is not on Comcast's, you should be able to setup a simple SOCKS proxy and tunnel your traffic through it:

ssh -D localhost:6772 username@hostname

Assuming OS X as your OS, go under Network Preferences -> Advanced -> Proxies, check "SOCKS Proxy" and enter the host/port.

From there, your internet traffic should be tunneled through the server.

<comment><USER3> An issue with an ISP would certainly be consistent with the reports that the outage is geographically limited.

</comment></comment><comment><USER4> Ok google was down and they cite a couple funny tweets about how the world is going to end. Anything else that's of interest here? Google's not gonna tell us how it was caused (they're too cool for that)...

</comment><comment><USER5> The server for [http://www.google.com/webhp?hl=en](http://www.google.com/webhp?hl=en) took too long to respond. It may be overloaded. Error code: 504

</comment><comment><USER6> They're right about the Southeast; here in Florida all the services I tried are dead, except I can ping Google.com.</comment>


ISP wins 11-year battle to reveal warrantless FBI spying [pdf] - <AUTHOR> https://www.calyxinstitute.org/sites/all/documents/08_28_2015_REDACTED_Decision_and_Order.pdf <comment><USER2> Discussion yesterday: [https://news.ycombinator.com/item?id=10217555](https://news.ycombinator.com/item?id=10217555)

</comment><comment><USER3> Reads nicely until page 20 when things start getting redacted. Why would that be since the court found these things oughtn't be legally withheld?

edit: Ah, the blog post explains the order doesn't go into effect for 90 days.

[https://www.calyxinstitute.org/news/federal-court- invalidate...](https://www.calyxinstitute.org/news/federal-court- invalidates-11-year-old-fbi-gag-order-national-security-letter-recipient- nicholas)</comment>


Bomb Sight – Mapping the World War 2 London Blitz Bomb Census - <AUTHOR> http://bombsight.org/#13/51.5087/-0.0879 <comment><USER2> That's a very graphic visualisation. You've got to wonder if every one saw and understood this whether there would be greater tolerance and understanding to avoid war...

<comment><USER3> I don't think that's how humans work. We know that bombing is awful, but we also "know" that the people we are bombing are the enemy and deserve to be blown up.

The thing to avoid is dehumanizing and vilifying groups of people.

<comment><USER4> I agree with that when it comes to starting a war as an aggressor --but not as a defensive war. I mean, if someone is coming to get you and they have vilified you or for whatever reason have decided to wage war against your group, it would be utter folly to say, well, it's wrong to dehumanize and vilify the enemy, unless you propose getting rolled over is an acceptable alternative.

<comment><USER5> That sort of thinking leads to "the ends justify the means".

Because we're on the defense, then any captured POWs don't deserve human rights.

Because we're on the defense, we can deploy nerve gas against them.

If all you do is see the enemy as the villain... You become one.

<comment><USER4> There is that possibility --and we saw that in WWii with German prisoners of war captured by Soviet forces. On the other side US forces were much kinder to German PoWs, but that's perhaps because it wasn't as personal a war to us.

Ethics and morality don't help win wars --but they are good PR post war, if you are the winner.

There is no clean answer to this problem because your enemy will by all means take advantage of your self-imposed constraints. Osama even admitted fighting the Soviets was very, very hard fought --and fighting the Americans would be a much easier task in his view. Here is one place I might agree with his assessment.

</comment></comment></comment></comment></comment><comment><USER6> The shocking thing to me is that this is the side that won. This is what victory looks like, even when the other side doesn't have nukes.

<comment><USER7> Yes, and that map shows the hits London took. Britain received something like 75,000 tons of German bombs. British and American bombers dropped something a bit short of 2 millions tons on Germany. It was on a whole different scale in Germany.

This book covers is well. [https://www.google.co.nz/amp/s/amp.theguardian.com/books/201...](https://www.google.co.nz/amp/s/amp.theguardian.com/books/2013/sep/27/bombing- war-europe-richard-overy-review)

<comment><USER8> The part that always surprised me about the blitz is only 28k killed and 25k wounded. How is that even possible?

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

> Civilian casualties on London throughout the Blitz amounted to 28,556 > killed, and 25,578 wounded.

<comment><USER7> That seems a lot of dead to me, but it is a lot less than later bombing caused and the lack of firestorms is the reason. The allies put a lot of effort into optimising conditions for causing them.

</comment></comment></comment></comment><comment><USER9> Unbelievable how many bombs dropped. Two within a few metres of my house!

<comment><USER10> My partner's mother was a little girl during World War 2, and told me that she remembers being at school with her gas mask nearby at all times. She told me how a bomb fell near her house in Dorking blew out all the windows, while another destroyed the railway bridge, presumably the one on Pixham Lane in Dorking.

She remembers the V1 bombs, the Doodlebugs, and explained that you were alright as long as you could hear the engine but if the noise stopped, you were in trouble.

My history teacher at high school also lived through the Blitz, being just a little older. I remember him telling the class about the bomb that fell near his house, and when he ran out looking for his parents he accidentally kicked a helmet which, he discovered, contained a head. He still had nightmares about it 40 years later, understandably.

I find personal histories fascinating, I wish I was able to hear them all, and visualize them to a degree. (Maybe not that last one.)

</comment></comment><comment><USER11> Solly Zuckerman's work (O/R I thing) on the efficacy of bombing, and how it was politically expedient to supress or white-ant it is worth reflecting on (its in his biography "From Apes to Warlords")

</comment><comment><USER12> It would be nice if you could make the dots transparent. There appears to be a pattern of right to left lines across the city, but it is not easily visible as is.

<comment><USER13> I was going to suggest changing the opacity attribute of the marker elements using your browser's developer tools, but the markers are provided as a layer of pre-generated image tiles (e.g. [1]), so while you can make these images more transparent (which lets you see place names on the underlying map) you can't make the individual markers more transparent.

[1]: [http://geoserver.bombsight.org/geoserver/gwc/service/tms/1.0...](http://geoserver.bombsight.org/geoserver/gwc/service/tms/1.0.0/sit:prod_week_bomb@EPSG:900913@png/11/1023/1367.png)

<comment><USER14> does this mean that the layers are merged into tiles and cached beforehand? is this better than having a separate layer for markers?

edit: asking because this map is blazing fast, esp given the amount of points to map

<comment><USER13> All of the _markers_ are merged into tiles and cached, and it is more efficent for the browser to just load these than it would be to create a separate circle or image for each marker. At zoom level 15 and higher actual individual markers are drawn (each one as a separate png image).

There are still two layers, but both just contain image tiles: one contains the base map, and the other contains red circles on a transparent background.

</comment></comment></comment></comment><comment><USER15> Wow! I didn't realize there were that many!

<comment><USER16> In Kassel, the allies dropped 2 bombs per m^2 on average in a couple hours.

[http://www.kassel.de/stadt/geschichte/zerstoerung/](http://www.kassel.de/stadt/geschichte/zerstoerung/)

<comment><USER17> I lived in Stuttgart for 10 years (I'm British) and the post-bombing photos of the city filled me with sorrow. 21000 long tonnes dropped on that beautiful provincial city.

Sadly reconstruction was not as kind as it was in Munich (less money presumably).

I love that place and miss it dearly.

[https://en.m.wikipedia.org/wiki/Bombing_of_Stuttgart_in_Worl...](https://en.m.wikipedia.org/wiki/Bombing_of_Stuttgart_in_World_War_II)

</comment></comment></comment><comment><USER18> Startup Idea: Improve the unexploded ordinance detection & removal process

</comment><comment><USER16> Are there any maps that show German cities? E.g. Kassel or Dresden.

<comment><USER7> It wouldn't be possible I don't think. The number dropped was vastly greater and firestorms were the specific goal. Fires are large as those caused would obliterate a lot of the evidence. There were specific recipes made to cause major fires, with roofs opened up with explosives, incendiaries to follow into the roof spaces. All done in nice dry weather. The British spent a lot of effort on this.</comment></comment>


Zuckerberg: I want to cure all diseases this century (2016) - <AUTHOR> http://www.cnbc.com/2016/04/27/zuckerberg-i-want-to-cure-all-diseases-this-century.html <comment><USER2> Three questions here: 1\. Has he cured even one? 2\. Cure them for whom? 3\. How much is a cure?

I would argue that with proper utilization of the world's technology today and proper incentives of the world's behavior, most incidence of disease could be eradicated now. For example, fast food for example leads to heart disease [1] I believe it's easier to make fast food extremely expensive to the point where no one would want to eat it and consequently there will be a significant decrease in the occurrence of heart disease, compared to curing heart disease. There are MANY examples of things like this.

[1] [https://www.heart.org/HEARTORG/HealthyLiving/HealthyEating/D...](https://www.heart.org/HEARTORG/HealthyLiving/HealthyEating/DiningOut/Eating- Fast-Food_UCM_301473_Article.jsp)</comment>


How to pick a microcontroller - <AUTHOR> http://www.sureshjoshi.com/embedded/how-to-pick-a-microcontroller/ <comment><USER3> Related on EE.stackexchange: [https://electronics.stackexchange.com/questions/264794/how-d...](https://electronics.stackexchange.com/questions/264794/how- do-i-come-up-with-a-list-of-requirements-for-a-microcontroller-for-my- projec/264813#264813)

I agree with OP's "grief factor" \- difficult to estimate but really critical to your project timeline.

I'm also going to advocate my "pick _something_ " suggestion; the first one of anything you buy in an unfamiliar product area will always be wrong. This applies to computers, cars, cameras, houses, everything; when you're entering the market you won't understand your own requirements and anti-requirements. So buy something cheap and standard then use it to understand how it's inadequate for you specifically. You'll also appreciate the expensive options.

If you've never bought a microcontroller, buy an Arduino. It may not be right but you'll have a lot of company.

<comment><USER4> If we're recommending pet favorites, the Raspberry Pi Zero Wireless, despite being the newest, is now my recommended "microcontroller". There are a few tweaks needed on top of the base Rasbian distro to make it appropriate for use as a microcontroller, but with a base price of $10, it's cheaper, more powerful, and has accessories (ie - anything USB with open source Linux drivers), than some Arduinos.

Built in wifi, Linux, plus USB and GPIO, means it's perfect for the device end of an hobbiest-level IoT project.

<comment><USER5> I still consider that a 'computer' and not a microcontroller.

You will inevitably need adc functionality, possibly real time clock and battery usage.

Most servos don't need wifi or Ethernet. Instead, you will usually want to be able to read a voltage and then time how long it takes for that to change.

15 cent quartz crystal and built in adcs. Bitbanging pwm from raspberry pi is also horribly inaccurate... You need a ton of shields to just run a motor with an encoder on it... While arduino can do all that around 10mA

<comment><USER6> It's also not something you can build a production device out of...unless your margins are so insanely large that you can afford it and nobody cares.

<comment><USER5> Ehhhh... depends really.

You can easily spend around $10 on a single filter (ex: 8-pole Filter... such as [https://www.digikey.com/product-detail/en/linear- technology/...](https://www.digikey.com/product-detail/en/linear- technology/LTC1069-1CS8-PBF/LTC1069-1CS8-PBF-ND/961297)). If you need an 8-pole elliptical filter, you just go out and buy one, amirite?

The "production" competitor to the Raspberry Pi Zero is honestly something like... the Octavo Systems OSD3358. At $50, you may wonder why this device is superior... but it has integrated RAM, Open Documentation, the features that are necessary for microcontroller work (ADC, DAC, PRU/Programmable Realtime Units, RTC, on-board LDO Regulator, on-board Lithium-Ion cell balancer and Lithium-Ion manager, support for TWO Crystal Oscillators, 114 GPIO, 6 UARTs).

[http://www.digikey.com/product-detail/en/octavo-systems- llc/...](http://www.digikey.com/product-detail/en/octavo-systems- llc/OSD3358-512M-BAS/1676-1000-ND/6012564)

Its all about your REQUIREMENTs. The Raspberry Pi Zero barely does anything aside from computer things (Ex: WiFi, USB).

Don't get me wrong, the Raspberry Pi Zero is a wonderful computer. But microcontrollers are things that can work with Thermocouples, control Active Filters, and control motors. In contrast, the Raspberry Pi burns itself out if you put an LED on its weak GPIO pins... and even "Realtime" Linux can't save you from the micro-second delay associated with the GPIO pin hardware.

<comment><USER6> My point is that if I needed to build and sell 200,000 of something over 10 years, I can't order that many from the Raspberry Pi foundation and trust the piece will still be around the entire time. And if I wanted 200,000 of the Broadcom parts, they wouldn't sell it to me in that small of a quantity.

The OSD3358 is definitely the right approach, since putting high-speed impedance/timing matched DDR lines on a board to make it work right with a modern 1GHz+ CPU is a much higher level of difficulty. Plus you will also need to make your PCB 8 or 10 layers to shield the interference which increases the cost.

I thought package-on-package (like the AM335x's predecessor, the OMAP) was the way to go, but I'm starting to like the monolithic package better.

</comment></comment></comment></comment></comment></comment><comment><USER7> This was a pretty good overview. I get asked this same question a lot because I have been working with microprocessors for decades and I have used many different ones from the old 8051 to Microchip, Arm and even FPGA embedded. The way I usually start is I ask this "will you need an OS like Linux ?" (there are a bunch of follow on questions on that issue to decide that.

If the answer is yes then that steers you to a much bigger and more expensive chip, usually and increases the complexity significantly. For beginners who need an OS for their project, I steer them to the RPI simply because there is just a ton of resources on the web to help them along. There are other really good boards but I steer them to an off the shelf solution like that and the RPI seems to be really well supported.

If you don't need Linux or RTOS or similar then that narrows it to a lower end simpler solution. For beginners I almost always steer them to the Arduino even though I rarely use it myself but for the same reason, tons of support on the web and you can, over time move to C or C++ on it as you advance your skills.

I am not a big super fan of those platforms I personally have my own dev system using my own boards and system that I have evolved over the years to be able to get designs done very fast. But I just think those are good starting points for a beginner.

</comment><comment><USER8> One more thing to consider: if your time is limited and you have to design/build lots of different devices, stick to more extensive product lines. As an example the NXP Kinetis, while having its share of warts and issues, is a huge product line with hundreds of chips, sharing a similar architecture.

This means that you can use a chip that fits requirements well, ranging from tiny simple M0+ devices all the way to monster M4 chips with 1M flash and every peripheral one can imagine. They not only share some peripherals, but you use the same SDK, documentation formats are the same, etc.

This is a huge time saver and lets you use the right chip for each project, instead of sticking the same expensive microcontroller everywhere, or using ones from different manufacturers.

<comment><USER9> I switched from STM32 to the Kinetis family two years ago and I've been super happy with the change. The free IDE is actually pretty solid and support has been adequate. Now that Freescale has been doubly gobbled up (first by NXP and then NXP by Qualcomm) this may go downhill a bit, but the user forums are decent.

Edit: I'm also using an M4 with dual bank flash almost everywhere. The projects I'm doing these days aren't particularly BOM cost sensitive and the headroom + foolproof firmware updating are fantastic (as the article says).

<comment><USER8> Interesting -- could you write about your impressions? How do peripherals compare? I think you get 32-bit timers on the STM32? And I heard that most other peripherals are newer/better than the 8-bit peripherals that NXP/Freescale adapts to the Kinetis chips -- what do you think?

<comment><USER9> I guess I just haven't needed those bells and whistles. 32 bit timers are kinda huge. And some of the peripherals on the STM are suffering from "newer ain't always better" \- the CAN and I2C controllers are more complicated than they need to be, IMHO.

Edit: I can't make any useful comparison on analog peripherals since I use external ADCs, DACs, etc. more or less 100% of the time

<comment><USER8> Thanks, this reply is much appreciated.

</comment></comment></comment></comment></comment><comment><USER10> Generally solid advice (although its more like "how to pick a micro-controller for your design you're trying to keep as cheap as possible.") and one of the areas where I quibble is the use of "generator" tools to generate I/O code. The STCube application is easy to use for beginners but easily uses twice as much flash as actual user written code. That isn't a problem if your app is small and the flash is large but puts you at a disadvantage if you are competing with people who know how to write that code.

My philosophy has been to develop an understanding of the peripheral fairly deeply, write a 'driver' for it and a bunch of documentation that will remind me of the quirks when I come back to it, and then put that in a library. The benefit is 'easy code' (just use the library) that is more efficient and smaller than generated code, and a quick spin up document if I need to dive in and do more complex work with the peripheral.

<comment><USER11> That is a great point about the downsides of generated code that I didn't mention (but should have).

I don't think it uses twice as much flash per se, but it definitely does use 'more' than hand-rolling your own code.

But ST-Cube has also gotten MUCH better over the last few years and no longer generates a lot of unnecessary, yet compiled, code. The version I first used in 2012ish was pretty weak.

I try to approach this from the direction of what gets me up and running fastest (and what has the lowest barrier to entry for my team - <USER2> communication), and then I re-factor out the guts afterwards if needed.

Practically speaking, my workflow is that I have a set of heavily unit tested and mocked out middleware and device drivers, that are portable to any ARM... So, all I need are the low-level drivers which interact with the peripherals.

I can generate them with ST-Cube, hook them into my middleware/drivers through interfaces (C++) or linking (C).

From here, I run my automated integration tests to make sure everything works on my hardware - and once that's done, I evaluate my flash usage.

If needed, I gut the generated code in favour of something hand-rolled, while being able to make sure everything is still 'correct'.

Also, contextually, I almost never use anything less than 32kB flash - so I don't often need to hyper-optimize.

</comment></comment><comment><USER12> Now that you've picked a microcontroller, here's some tips on the next steps: "How to be: A smart hardware programmer"

[https://youtu.be/g8QDCMuy6oM](https://youtu.be/g8QDCMuy6oM)

I link to this only partially in jest - you really will need way more components than the plan says you'll need. Even microcontrollers; misaligning a header by one pin can result in things like putting the output of a 3C Li- Poly over a signal header...

<comment><USER13> This is why I like prototyping with Arduinos - you'll 99% likeley get away with plugging an 11.1V (or 12-13V fresh off the charge) battery into any of the pins on an Arduino. You'll be looking for another RasPi if you made _that_ mistake...

<comment><USER12> In this case, it wasn't the voltage, which had been brought down to 5v by the motor controller, it was the 160+amps. Not milliamps, amps (3300 mah, 50c battery).

Drone batteries are nasty pieces of work...

<comment><USER13> Indeed.

I wasn't paying enough attention when soldering a plug onto a 7 cell 5800mAhr 40c battery once. I melted the tip of my iron, and pretty much vapourised the plug's contacts... (The battery seemed fine about it - I got 6 or 8 months out of it powering a bicycle before it started to show signs of imminently-firey puffiness...)

</comment></comment></comment></comment><comment><USER14> A quicker guide for real beginners:

Do you want to understand in detail what's happening? => Arduino UNO

Is the UNO too small/slow? => Arduino Due

Still too small or you really just want a small computer running Linux but with GPIO-Pins? => Raspberry PI

<comment><USER8> I disagree. Everything you listed a) can't be used for products, b) doesn't let you make progress beyond "oh look, I lit up an LED!".

Sure, if you never programmed a small device, by all means, start with an Arduino. But after you do light up that LED, please learn more. Go bare metal, learn about interrupts, state machines, entering sleep states -- without those things you'll stay forever in the toy world. In the real world, if you work with battery-powered devices, you never have the comfort of busy waiting for your UART/I2C transmission to finish, or calling analogRead() and getting immediate results (because ADC takes time and you want to do it asynchronously).

It's my pet peeve: I'm very happy that Arduino has been such a success, but I think too few people progress beyond that, and many believe this is how one programs embedded devices.

As for RPI, it's neither a production device, nor a learning tool for embedded programming. The complexity involved means there is no way a beginner can understand everything that's going on.

<comment><USER14> As the other poster stated, you don't really disagree, just misunderstand.

You can actually do everything you need in the Arduino IDE and then leave the IDE, compile and upload your own program written from scratch to the UNO. All that while staying compatible to the dozens of hardware extensions out there.

The "Arduino" part is not the destination, it's three quarters of the path to the destination and that path is already paved.

<comment><USER8> No, I do not misunderstand -- I design products, as in things which are produced. Arduino is not for making products.

</comment></comment></comment></comment><comment><USER15> We use NXP/Kinetis chips (Cortex M0+) and have been relatively happy with them from a cost and hassle point of view. When developing we use SWD with a kinetis dev board as the programmer hooked up to the target MCU. We have had strange issues with the MSB bricking things when updating the bootloaders but thankfully they're cheap enough to replace.

</comment><comment><USER16> 1: PLAY "Shenzhen I/O"[0]

2: JMP :1

[0] [http://www.zachtronics.com/shenzhen- io/](http://www.zachtronics.com/shenzhen-io/)

<comment><USER12> Be sure to jump to Factorio when you want a bit more experience in designing circuit traces. It's amazing how quickly main bus designs naturally evolve.

<comment><USER16> Hehe, literally in Shenzhen right now. There are loads of people with better skills. I am happy to outsource.

</comment></comment></comment><comment><USER17> How is almost no one talking about the esp32? WiFi, Bluetooth, two cores, and an ultra low power processor that can wake the main cores for when you need low power consumption are just the main features of this thing, there are plenty more. Not to mention they have a great tool chain with lots of example code.

</comment><comment><USER18> Starting with a beefy ARM chip! Try Arduino. If you are not familiar with micro controllers you might as well stick to something that is made for beginners. Plus as you get more advanced you can always use the raw AVR chip without the added Arduino bootloader.

</comment><comment><USER19> Its slightly ironic that this article "for beginners" is filled with obscure acronyms he doesn't define (UART, BOM, BLE...).

<comment><USER20> A more productive way to make this point is to simply ask what the terms mean.

UART is a programmable serial interface; it usually refers to the kind of serial you speak to peripherals in the outside world, as opposed to something like SPI, which is serial spoken to components on the same board.

BOM is "bill of materials". It's the catalog and price of all the components needed to ship an actual product. If your chip doesn't have an RTC (clock), and you need to buy another part to provide it, that adds to your BOM.

BLE is Bluetooth Low Energy.

<comment><USER19> Its all readily googlable, certainly. My point was that its poor practice when writing a piece aimed at introducing people to a subject; if they have to go to google every few lines to see what something means, that distracts attention from what the article is actually trying to convey. For that matter, they could just as easily google for a different article.

<comment><USER21> Your confusion stems from what kind of beginner the author means. You read it as "total beginner to anything vaguely related to microcontroller programmer". I assume the authors means it as "has _programmed_ stuff with microcontrollers before but never made a hardware design from scratch yet". After all, picking a microcontroller is a design/architecture choice more than a programming choice.

<comment><USER19> Well, then there's another term he ought to define! :D I've done several projects using various flavours of Arduinos and Pis, but that sort of hobbyist-maker-level experience hasn't lead me to encounter an acronym for "Bill of Materials."

<comment><USER22> Few people have seriously contemplated ordering the manufacturing of a small run of something they themselves designed. More people have seen the term BOM when reading estimates of how much it costs big brands to manufacture a smartphone or a game console in industry publications or even in the more technically-oriented consumer reviews.

</comment></comment></comment></comment></comment></comment><comment><USER23> Couple of thoughts after skimming the article. Consider weighing the importance of being able to upgrade or change uC. Don't choose a controller made by only one manufacturer (unless there is a level of certainty or confidence in their continued production/support and profitability). It would be unfortunate for example, if you used an atmega microcontroller and they went out of business, or changed their strategy and abandoned a platform, requiring you to switch to an alternative and rewrite some or all of your code. Having a codebase that can be made to run on different platforms easily would be ideal.

If there is a good chance, after a small order, you realize from feedback you are missing some crucial features and need to make changes, changes which require more it's higher or more precise clock, or whatever, make sure that the jump to the next size chip doesn't abandon or make a drastic jump in price or available volume. If you plan to manufacturer your product for a long time, ensure that you are confident in the availability of quantities at similar price for however long you expect to require it. Always be wary of jumping on board anything brand new. The Intel Edison/Curie for example based on the Quark ended up having an unfixable segfault, and was virtually abandoned shortly after it's release.

</comment><comment><USER24> Parallax Propeller

<comment><USER25> As someone who has used the parallax propeller, I feel like you a doing a bit of a disservice to not include some reasons for or against it.

Cons:

\- Comparatively high price point at $8

\- The custom 8-core architecture is more difficult to make full use of

\- No other chips in the family (can't flexibly move up or down in flash size / IO / core count)

\- No interrupts

\- Uncertain availability, and may be nearing end-of-life (this is speculative)

\- Programming in C is secondary to the proprietary scripting language SPIN (which has an interpreter in the chip)

Pro:

\- The processor is open source under GPL v3

\- Multicore architecture makes it easy to create systems that work concurrently

\- VGA output

\- No interrupts

\- SPIN isn't that bad... and assembly code integrates nicely with it

<comment><USER24> Wow, some lovely downvotes for making a suggestion. Not sure how two words can be so offensive to people...

Other advantages to Propeller in addition to what you say:

      - DIP form factor, easy to breadboard

      - Very little supporting circuity needed. Very easy to set up.

      - Enthusiastic intimate helpful community on the forum

      - GCC available (not an advantage over Arduino but it exists you don't have to use SPIN)

      - Pretty high performance compared to Arduino -- 80mhz on 8 cores [tho that doesn't tell the whole story since memory accesses to the shared memory take a lot of cycles)

Other disadvantages:

      - Small memory space.  32k of slow shared memory space, only 2k per cog (core)

      - New Propeller 2 is taking years to come out and the old Prop 1 is really starting to show its age

<comment><USER26> I'm not sure DIP form factor is a pro these days - it ups manufacturing costs a lot - unless of course all you are making is breadboards - are there SMT versions available?

<comment><USER24> Yes, they sell in both. DIP is generally better for hobbyists.</comment></comment></comment></comment></comment>


Making a Pratt Parser Generator - <AUTHOR> https://www.robertjacobson.dev/designing-a-pratt-parser-generator <comment><USER2> My go to article for Pratt parsing:

[http://journal.stuffwithstuff.com/2011/03/19/pratt- parsers-e...](http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers- expression-parsing-made-easy/)

</comment><comment><USER3> Pratt-parsers is a very underrated style of parsing.

Years ago when I was at Mozilla we built PrattParser utils in JS: [https://github.com/taskcluster/json-e/blob/386ae415d807eb066...](https://github.com/taskcluster/json-e/blob/386ae415d807eb066a603007253fd9d316dadc1b/src/interpreter.js#L317)

It probably had short comings, because it's been rewritten since (I haven't kept up).

But with a few rules and simple functions a pratt parser is rather intuitive, and easy to write and port to other languages.

I'd be very curious to see the next article :)

</comment><comment><USER4> Thorsten Ball's "Writing an Interpreter in Go" has a very in-depth walkthrough of building a Pratt parser. It's a very good read/tutorial.

Maybe it's just me but it seems there's a lot of language design coming out recently. E.g. Bob Nystrom has "Crafting Interpreters." It really like that language design and parsing gets more attention, which is great because it's fascinating stuff.

<comment><USER5> My favourite article on Pratt parsing, it's in Rust but easy to port to any language:

[https://matklad.github.io/2020/04/13/simple-but-powerful- pra...](https://matklad.github.io/2020/04/13/simple-but-powerful-pratt- parsing.html)

<comment><USER6> Matklad follows Norvell's excellent exposition in these two articles pretty closely:

[http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm](http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm)

[http://www.engr.mun.ca/~theo/Misc/pratt_parsing.htm](http://www.engr.mun.ca/~theo/Misc/pratt_parsing.htm)

Matklad's stuff is really great. I wish he had cited Norvell, though.

</comment></comment></comment><comment><USER7> Hopefully Robert Jacobson sees this, but, the TFA uses the word "donation" when Pratt used "denotation." Just a couple small typos.

<comment><USER6> I have easily read more than a dozen articles over the years on this parsing strategy, including Pratt's original paper, and in every case I have read "donation." But you are 100% right! All of my sources actually use denotation. MY MIND IS FREAKING BLOWN.

I am going to go meditate on the subjectivity of my reality. If I am wrong about this, what else am I wrong about?

<comment><USER7> LOL. I don't think it's that serious. Maybe it's the Berenstain Bears Effect, Mandela Effect, Glitch in the Matrix, or ... a slight lack of your favorite morning pick me up. :D In any case, looking forward to reading the next article.

Personally, at some point, I'd like to write a Pratt Parser in C99. I'd like to explore the one sentiment you had that OOP has a negative effect on understanding Pratt Parsers.

</comment></comment></comment><comment><USER8> Can anyone recommend the best parser for human language? Detecting natural suffixes, etc.

<comment><USER9> Google "natural language processing."

Natural languages are highly ambiguous. Using a naive approach like Early's algorithm can lead to thousands of parse trees for a single sentence. Probabilistic grammar parsing algorithms attempt to discover the "most likely" parse tree with respect to a particular statistical model of the language grammar. As with parsing algorithms for formal languages, different algorithms make different trade-offs. "Best" only makes sense with respect to a particular metric: "Best" in what sense?

I personally don't know much about this area beyond what I just said.</comment></comment>


Show HN: Parapet – A purely functional library to build distributed systems - <AUTHOR> http://parapet.io <comment><USER2> One specific thing I think FP distributed-system frameworks could bring is instantaneous, deterministic testing.

e.g. I have N microservices, they communicate via IO (which means slow/brittle tests) but the framework abstracts over that, so I can run the whole system test suite under a second, because all IO (messaging, DB, concurrency) can be replaced with an in-memory implementation.

Interestingly, one could also inject faults to those IO mocks, and test how the system respond to that.

I believe FP is a prerequisite for meeting those goals, because otherwise having impure IO all over the place is hard (if not impossible) to mock out.

<comment><USER3> I agree, but what about when the persistent shared state ends up actually being most of what needs to be tested in a distributed system?

<comment><USER2> Can't see the problem in principle - all kinds of storage (DBs, S3, Redis) seem mockable.

</comment></comment></comment><comment><USER4> Looks like a library for Scala and other JVM languages?

<comment><USER5> Yes

</comment></comment><comment><USER6> Is this an alternative to something like Akka Cluster Sharding and Persistence/Distributed-Data?

<comment><AUTHOR> In theory, wherever Akka is used Parapet can be used instead. It's just not that big as Akka. Parapet provides a messaging module for interprocess communication based on ZMQ.

</comment></comment><comment><USER7> How does this compare to Metaparticle ([https://metaparticle.io/about/](https://metaparticle.io/about/))?

<comment><AUTHOR> as I can see Metaparticle is a tool specifically built for Kubernetes and uses its API underhood. Parapet can be extended to support Kubernetes ecosystem how it was done for ZMQ. Parapet can be integrated with Metaparticle, so that you can run the same distributed algorithms written in Patapet in a Kubernetes cluster.</comment></comment>


Tripadvisor for Hotels, We Are Recfluence for Recruitment Agencies - <AUTHOR> http://www.recfluence.com/ <comment><AUTHOR> "Recfluence is free, independent community platform to allow job hunters and industry peers to interact, exchange and collaborate to stream line the job searching process. The team at Recfluence (which includes a Series 1 BBC Apprentice) have a big challenge ahead - to bring full transparency and accountability to the recruitment industry.

1\. Search & Review thousands of recruitment agencies 2\. Insightful reviews by real candidates 3\. Candidate driven community"

<comment><USER2> Not sure a reality TV persona is relevant or a selling point.

</comment></comment><comment><USER3> What a terrible name. It sounds like a portmanteau of "Rectum" and "Flatulence"!</comment>


What is Concrete? - <AUTHOR> http://gizmodo.com/what-is-concrete-1721627320 <comment><USER2> Cool stuff -- author doesn't mention that Roman cement had a usability life of >2000 years, while Portland cement starts to degrade after 50 years (for rough harbor usages).

[http://www.bloomberg.com/bw/articles/2013-06-14/ancient- roma...](http://www.bloomberg.com/bw/articles/2013-06-14/ancient-roman- concrete-is-about-to-revolutionize-modern-architecture)

</comment><comment><USER3> One of the really surprising things when you visit the Colosseum in Rome is how _modern_ a structure it feels. Rather than ruins, it feels more like a construction site, a half-finished stadium for some up coming Olympics or World cup.

It's not just two Greek amphitheaters dug into facing hillsides...it's something on a completely different level.

All this despite being left in complete, abandoned ruins for something like a _thousand_ years. Then damaged in earthquakes, stripped of stone (probably also concrete blocks) for other construction, legend has it's been used by monastic orders, as a wool factory and other crazy uses.

This isn't modern reinforced concrete, it's _just_ concrete.

If you wonder around Rome you come across possible the pinnacle in concrete work in human history, the Pantheon. I've heard that we _still_ don't know how they produced the dome, another nonreinforced wunder construction that's survived for millenia. Again, survived earthquakes, wars, and other uses, and again a huge structure that feels amazingly modern in size and scope.

<comment><USER4> "I've heard that we still don't know how they produced the dome, another nonreinforced wunder construction that's survived for millenia."

We didn't, but we do now. It has recently been fully understood to have been volcanic ash mixed into the concrete that makes it so strong and stable.

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

[http://www.romanconcrete.com/docs/spillway/spillway.htm](http://www.romanconcrete.com/docs/spillway/spillway.htm)

<comment><USER3> my understanding is that the density (and thickness) of the concrete changes as the dome moves inward from the walls to the oculus, and we have no modern method for reproducing such a constant density variance

</comment></comment></comment><comment><USER5> it still boggles my mind that Rome has working sewers that were constructed more than 2000 years ago and there is every indication that they will last another 2000 years of continuous use

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

</comment><comment><USER6> The book _Stuff Matters: Exploring the Marvelous Materials That Shape Our Man- Made World_ has a chapter on concrete. The self-healing concrete was completely new to me. Definitely worth a read, and not just for the concrete chapter:

[http://www.goodreads.com/book/show/18222843-stuff- matters](http://www.goodreads.com/book/show/18222843-stuff-matters)

</comment><comment><USER7> See the concrete canoe competition:

[https://en.wikipedia.org/wiki/Concrete_canoe](https://en.wikipedia.org/wiki/Concrete_canoe) [http://www.asce.org/concrete-canoe-photo- gallery/](http://www.asce.org/concrete-canoe-photo-gallery/)

</comment><comment><USER8> Another interesting property of unset concrete is that it can burn your skin due to alkalinity.

</comment><comment><USER9> Meta comment: I often times find great articles on Gizmodo. While other Gawker sites like Lifehacker are more mediocre, Gizmodo often features interesting and more in depth posts like this one.</comment>


In Spain, reading about "radical" ideas can take you to prison - <AUTHOR> https://translate.google.com/translate?sl=auto&tl=en&js=y&prev=_t&hl=en&ie=UTF-8&u=https%3A%2F%2Fwww.eldiario.es%2Fcontrapoder%2Fdelito-autoadoctrinamiento-deberiamos-cuidar-leemos_6_776282382.html&edit-text=&act=url <comment><USER2> "Terrorist self-indoctrination was introduced into the Criminal Code by LO 2/2015" (Google translated)

I don't see in the article where anybody got prosecuted.

<comment><USER3> If it's in the criminal code, it can take you to prison. (The title didn't say _will_ , it said _can_.)</comment></comment>


Lisp Hackers: Vladimir Sedach - <AUTHOR> http://lisp-univ-etc.blogspot.com/2013/03/lisp-hackers-vladimir-sedach.html <comment><USER2> I had to read twice to make sure I understood correctly: this guy wrote a C-to-Lisp compiler. That's something you don't see every day.

<comment><USER3> Actually, I started working on one this past weekend as an exercise. The only real work is the front-end; your Lisp compiler itself can serve as the back- end.

It's not all that shocking; Prolog-in-Lisp is a common exercise, and in Let over Lambda there is a chapter about Forth-in-Lisp.

<comment><USER4> The problem with C-in-Lisp, though, is modelling the low-level behavior of C using the high-level concepts of CL.

Case in point: pointer punning. Somebody takes a 'char _', writes some stuff through it, then casts it to an 'int_ ' and starts reading that stuff back. ZetaLisp, having been built to implement the Lisp Machine OS in, had some low- level features that made this kind of thing doable, but those features did not make it into Common Lisp (I'm thinking of displaced arrays with mixed element sizes, though as I write this it occurs to me that it might be possible to coax an open source CL implementation into dealing with this, if you can give up on the generated code being portable CL).

If you want to look at Zeta-C, the sources and some commentary can be found here: <http://wiki.alu.org/Zeta-C>

<comment><USER5> The C standard doesn't actually require as much from the implementation as you might think. Pointer arithmetic and comparison is only defined for pointers into the same array object (including one past the end), so it's completely possible to implement C with bounds-checked fat pointers. The most painful requirement is probably that there is a sufficiently large integral type to represent pointers across round-trip casts. In portable CL that would require you to track all allocated objects with a unique identifier or implement your own heap.

</comment></comment></comment></comment><comment><USER6> Wow inspired by Mirai! It was indeed a very cool application. In my oppinion stomped on PowerAnimator and Softimage.

Mirai was written all in common-lisp. Wings3D, inspired by Mirai, is written in Erlang.

<comment><USER7> Wow, Mirai. Haven't heard that name in a long time. So many good stuff came out of it. It just wasn't received widely for some reason. I got a demo CD from nichimen with it, I bet I still have it somewhere.

This is Mirai: <http://www.youtube.com/watch?v=ubgvomRTW80> Here is Bay Raitt working with it. Note the year. Also note that is the guy that worked on Golum (and later at Valve). Modeling in that video seems like a normal workflow by today's standards, however at the time NURBS/Patch modeling was all the rage and box modeling was a novelty most users were skeptical of. Mirai provided workflow which pushed it onto a new level. Prior to that Lightwave had something similar with its MetaNURBS.

IIRC, it was a time when Maya finally caught on (ver 2 I believe) and new Softimage (codename Sumatra, later XSI) was getting adopted too. Interesting fact is that Softimage bought nichimen's modeling toolset and integrated it into XSI.

So many firsts were spawned from Mirai. Some due to technical achievements/features, some by its users. Bridge poly tool comes to mind, and of course, box modeling pioneered by Bay Raitt and Mirai peers for production. Truly defining time for 3D. A year later we all learned about skybox/GI/FG, and a couple of years later Zbrush came out. Nothing was the same anymore.

<comment><USER8> ZBrush was an amazing piece of software when it came out. I stopped following developments in 3d graphics around the time that happened, but I remember that most of the remaining Mirai users active on the web back then moved over to it.

Dave Cooper of Genworks (<http://www.genworks.com>) told me that he met some of the Mirai developers (they're still around: <http://www.izware.com/>) at a conference not too long ago, and that they're working on the next iteration of Mirai.

<comment> Arcanum-XIII A next generation Mirai ? Wow... wasn't even aware that this company trully still exist, since they seem dead for almost 10 years now (no update or anything).

Funny thing is that, since it's in Common Lisp, when there's a problem, you were dumped into the debugger, which was scary... only now do I know that it's an amazing opportunity to access the underlying system in fact !

</comment></comment></comment></comment><comment><USER8> Feel free to ask me any more questions in this thread. I haven't read HN very often in the past 6 months.

<comment><USER9> What's your opinion on clojure? I'm trying to pick the lisp I'd like to learn and clojure with it's java interop is really attractive

<comment><USER8> I don't see myself ever using Clojure. It's missing too many of the good things from Common Lisp: readtables, imperative constructs (PROG, LOOP, etc.), separate function/variable namespaces. Lispworks and Gambit have better concurrency primitives than Clojure. I've never needed Java interop, interfacing with C libraries is much more important. If I ever go back to doing functional programming it's going to be in Haskell again because it's not worth giving up imperative programming unless you get the combination of static typing and monads in return.

</comment></comment></comment><comment><USER10> I don't understand: " I really like Azul Systems' hack of using the EPT/RVI virtualized page tables as a hardware read barrier for real-time garbage collection, and with a single-address space operating system I think you can do the same thing on hardware with a regular MMU."

I understand real-time garbage collection, but what is EPT/RVI virtualized page?

</comment><comment><USER11> Vladimir has read more deeply in computing history than anyone else I know. It shows in his work.

</comment><comment><USER12> Don't break the chain!!!</comment>


The power of mobile money - <AUTHOR> http://www.economist.com/opinion/displayStory.cfm?story_id=14505519&source=hptextfeature

<comment><USER2> Good article.

Paypal, Amazon Payments and Google Checkout should all be in a good position to dominate the mobile money market in the US, I would think.</comment>


Box's 65-Year-Old Android Engineer Gives Your Startup Some Unsentimental Advice - <AUTHOR> http://www.fastcolabs.com/3007250/open-company/boxs-65-year-old-android-engineer-gives-your-startup-some-unsentimental-advice# <comment><USER2> I congratulate this guy.

But I feel like the youngish folks reading hacker news (self included), especially those that get wrapped up in youth-worship and pseudo- libertarianism (not me) should ask themselves, what will we do at 65? It's a fairly uncomfortable question in our field. Whatever the reason we should not tolerate the factors that push older people out, or make excuses for doing so.

<comment><USER3> Does anybody who has spent their adult working career in this industry have an excuse for not achieving financial independence by age 65?

<comment><USER4> Children, medical problems, divorce, expensive hobbies, stock crashes. Stuff happens. If you expect to live to 85, which is pretty reasonable, and keep paying to live in the Bay Area, do a little traveling, you'd want to pull down $100k or so per year and thus need about $2M in the bank.

<comment><USER5> True if your $2M sits in an account earning zero interest. In reality you need quite a bit less than $2M if you want to guarantee 20 years at $100k.

<comment><USER6> At a 7% return you'd still need about $1.5 mil. And that's assuming that your hopefully more conservative investments in retirement earn 7% a year and over that 20 year span there is not a crash... This includes about 3.5% per year for inflation.

</comment></comment></comment></comment></comment><comment><USER7> I continue to believe that over the next couple of decades the tech community is going to see something it never has before: lots of kick-ass retirement-age programmers.

I'm hoping that we see some great startups come out of it, but whatever happens, it's going to change a lot of things. Programming won't be seen as a college-kid thing, older folks will be able to create interactive tech experiences around their worldviews, and discussions around the impact of technology on society will have many more voices. This guy is just the vanguard of a big crowd to come.

Neat.

</comment><comment><USER8> I enjoyed this comment: "Maynard says the current generation of startups should be more patient than he was. "Englebert's law of technology prediction says that all technology predictions overpredict what technology will do for you in the short term and underpredict what technology will do for you in the long term," he explains. "I have seen this curve over and over, and lots of startups fail in that gap because they don't keep at it long enough. They think the technology will be there before it's really ready."

</comment><comment><USER9> "That is unbelievable--but I think we have lost the idea of the software artist. When the machines were much smaller, I did my game essentially as a one-man team. I did all the art. I did all the programming. I had one other engineer help me with some of the music. I have a friend working with EA today and he is probably working in a team of 120 engineers."

"Electronic Arts treated the programmer as an artist," he says. "They were the first people to do that."

First time I've read someone explain this concept...

<comment><USER10> Speaking of which, here's David Maynard himself posing (lower-right) in EA's first software-artist-themed "Can a Computer Make You Cry?" advertisement:

<http://chrishecker.com/Can_a_Computer_Make_You_Cry%3F>

<comment><USER11> +1 to you for remembering the original Electronic Arts. It's been such a long long time, hasn't it?

</comment></comment></comment><comment><USER12> This reminds me of the Eddie Izzard bit about Europe vs. America and how Americans will make a big deal about something restored to the way it was "over 50 years ago". __GASP __"Surely, no one was alive back then!"

"OMG this guy is 65 and still codes?". C'mon. There are a lot of older programmers out there. At least the ones who weren't bullied out by management or peer pressure or killed off by the health effects of sitting at your desk for 40 years.

<comment><USER13> I find it hard to believe that there are too many guys above 65 and coding that aren't Fellows or academics.

Not that I believe that they are in anyway incapable, I'm just thinking once you get to 65 or thereabouts, you're probably looking to retire.

<comment><USER14> >> I find it hard to believe that there are too many guys above 65 and coding that aren't Fellows or academics.

Being a Fellow or academic sounds to me more like a sentence than a career goal.

<comment><USER15> Given the benefits you get out of it in certain places, I would surely appreciate it.

It all depends where you work.

</comment></comment></comment></comment><comment><USER16> I'm not as old, and MIT's LCS and AI lab were well-established by the time I was an undergrad. But I do feel privileged to be there close enough to the beginning to have written code for some of DEC's oldest products and seen, firsthand, how venture capital and software intertwined and grew together. Maynard does a great job of articulating the perspective that growing up with computing imparts.

I think it is no accident he is making Android code. It's a system you can learn about inside and out. It's elegant in many of the same ways Macintosh was in 1984. It's enjoyable, which is important when you could just decide you are too old to code.

</comment><comment><USER17> Here's David in EA's iconic "We See Farther" poster, from the company's golden age (the Trip Hawkins era):

[http://www.flickr.com/photos/grouchodis/7918145932/in/photos...](http://www.flickr.com/photos/grouchodis/7918145932/in/photostream)

I had this poster on my wall in high school; these guys were the original "rockstar" coders.

</comment><comment><USER18> EA really did used to be a great company. It is a shame how far they've fallen.

<comment><USER19> Just for the outside. At that same time they were commissioning work from multiple developers for the same project at low fees saying: "We'll make it up in royalties", but canceling those versions they didn't like. None of the developers knew this was the case until they got the cancelation call.

Ethics? Not really.

<comment><USER20> So they were an incubator.

Heh.

<comment><USER19> Ha! In a way... it's like losing/winning a race you didn't know you were in.

</comment></comment></comment></comment><comment><USER21> What advice is he actually giving? Don't introduce new technology too fast? Keep working at a failed startup because it might work longterm?

<comment><USER22> The title is misleading. I couldn't find "Englebert's law of technology" but basically Douglas Englebart must have taught him "technology predictions overpredict what technology will do for you in the short term and underpredict what technology will do for you in the long term." He goes on to say "I have seen this curve over and over, and lots of startups fail in that gap because they don't keep at it long enough. They think the technology will be there before it's really ready." So yes, keep at it, and timing is everything.

<comment> T-A Sounds like Amara's Law: <http://en.wikipedia.org/wiki/Roy_Amara>

<comment><USER22> _[Amara] worked closely with Doug Engelbart on the proposals that led to Engelbart's history-making Augmentation Research Center._ <http://boingboing.net/2008/01/03/roy-amara-forecaster.html>

Maynard is mis-remebering, which is understandable since Amara and Engelbart worked together.

<comment><USER23> Yes you are probably correct. However it was Doug that explained to me the reason why this law holds. It is because of Moore's law that the technology level grows exponentially but the human mind seems incapable of grokking the exponential curve and thus predicts on a linear basis. The linear line stays above the exponential curve until they inevitably cross. Thus ""We tend to overestimate the effect of a technology in the short run and underestimate the effect in the long run"

<comment><USER22> We're in the same age bracket and like you, all I've ever wanted to do was write code. I'm thinking about your explanation here and wondering if Moore's law is the most relevant factor or if it's network power laws. I'm not reading a lot of posts saying "I have this great app that will be revolutionary but I need much more speed and memory in mobile devices." But I do read a lot posts about growing a network of users. On the other hand, it's inevitable that there will be much more power in mobile devices, so the it's best to see what code can be written with that target in mind, which is why I don't get involved in the native vs html5 debate. It's clear HTML5 will continue to get better and be sufficient for most applications.

I'm a few years behind you, so I idolized guys like you and Englebart when I was starting out. I kind of miss that ga-ga eyed hero-worship phase of my life. Now I'm older than the President of the United States and that's kind of hard to grasp.

</comment></comment></comment></comment></comment></comment><comment><USER24> He's also #1 on the company's internal fitbit competititon

<comment><USER3> That is awesome. Is that a common thing for organizations to have internal fitbit rankings?

<comment><USER25> Y, I've have several other friends with similar competitions at their companies, prizes handed out every few months. Fitbit isn't the only brand of fitness monitors.

Good HR departments are handing them out as part of Open Enrollment and Health programs.

<comment><USER26> An informal competition has sprung up among the engineers at my company but we are mostly trying to hack it. Does anyone know what happens when you put a FitBit in a paint shaker?

</comment></comment></comment></comment><comment><USER27> "But if I had to do it over again today, I might choose bio-informatics or nanotechnology."

In 20 years from now, IT skills will better be more than common. The internet will be in a post-maturity stage. The new "lack of" won't be of CS folks. It may as well be of what he mentioned.

<comment><USER28> I have doubts, given that machines are getting locked down both in terms of hardware and software, preventing users from exploring the guts of their gadgets as their curiosity is piqued by using these devices.

The advances in technology, while making "creation" more accessible than ever, also seems to be enabling fewer people to serve more people than ever before.

<comment><USER29> I expect more and more to be locked down. Not so much because of desire by companies to lock their product (although that is a motivator), but media sensationalism and politicians need to look like leaders while expending no effort. I look at the case of the startup uploading all the addresses found in the contacts of an iPhone and the reaction to that. I did not see one article asking if someone's Outlook for Windows contacts had ever been uploaded. It was a stupid move for the startup, but given the history of PCs, it seems like something post-PC product managers would overlook. People seem to want to share everything, but have control over privacy. Adding to that, I am sure a push to make absolutely sure security measures (remote wipe, find my phone) cannot be disabled by a thief. All this gets us secure, locked devices, because it is easier than having your C-level executive be lectured to by some member of Congress's committee.

So, I would expect to see less and less of people in the industry who got into like me with and Atari 400. There are certainly no modern day version of the C64, Sinclair Z80, or TI-99/4a (no, Raspberry Pi isn't even close).

iOS provides great software to start every career but the one that makes it sing.

</comment></comment></comment><comment><USER30> Wow, this guy worked with Doug Engelbart _and_ Kelly Johnson!

<comment><USER23> To set the record straight I worked for Lockheed, and got to meet Kelly Johnson, who is one of my heroes, but I actually did not work with him. I did work for Doug Engelbart. Both true visionaries and engineering Samurais.</comment></comment>


HTTP client timeouts - <AUTHOR> https://brightinventions.pl/blog/http-client-timeouts/ <comment><AUTHOR> We have already touched upon the importance of timeouts and described most important related JDBC knobs. The next aspect of timeouts I would like to focus on is using API clients. Specifically HTTP clients which are by far the most popular. We will review couple of popular HTTP client libraries and their configuration regarding timeouts.</comment>


Show HN: Faceclash, a totally modernized version of Mark Zuckerberg's Facemash - <AUTHOR> I worked on this for about a month during October last year. It was a project to get to know Ajax and SQL a bit better. It was also an experiment with the Elo rating system. The site was up for only one night, but received 18,000 votes and 730 unique visitors. It's open-source on GitHub now at https://github.com/ifvictr/faceclash. Hopefully someone else will use it and learn a thing or two from it, and run a copy of it. Hopefully it'll be enough to push them to achieve even greater things. :) <comment><USER2> [https://github.com/ifvictr/faceclash](https://github.com/ifvictr/faceclash)</comment>