Can you name the Programming Language if You Know The Creators? - <AUTHOR> http://www.sporcle.com/games/mi0tch/prog_lang_inventors <comment><USER2> Grace Hopper invented FLOW-MATIC. She wasn't even on the COBOL design committee.

If I were to choose a single inventor for Scheme, I would have chosen Sussman, not Steele.

<comment><USER3> Hmmm... I don't know much about COBOL, but Wikipedia tells me that she wrote the initial specification of the language, and given that it doesn't look to me as such a big stretch to name her at least as one of the main inventors of the language. Although it might be the case that after the committee there wasn't much left of the initial spec. But as I sayd, I hardly know anything about COBOL.

<comment><USER2> Wikipedia's attribution of the work that took place in late 1959 on COBOL to Grace Hopper is incorrect. Note that it was made anonymously by someone who was fixing obvious vandalism. See

      http://en.wikipedia.org/w/index.php?title=COBOL&action=historysubmit&diff=283228831&oldid=283200503

I will summarize what I think is the correct story. I have "The Early History of COBOL" by Jean Sammet, 1978, which can be downloaded from <http://portal.acm.org/citation.cfm?id=808378> for $15. Sammet was on the short-range design committee which did the work that Wikipedia mentions occurring in late 1959. I also have a photocopy of the April 1960 CODASYL report on COBOL which I acquired from the Charles Babbage Institute.

There was a meeting of various people at the University of Pennsylvania in April 1959. They thought a "machine independent" language for data processing could and should be developed and they suggested that the Department of Defense lead the effort. In May 1959 there was a meeting at the Pentagon which outlined high level goals for the language. It also said that the existing languages FLOW-MATIC and AIMACO as well as the specified but unimplemented language COMTRAN should be studied to determine what is wrong and right with them. The May 1959 meeting also established a short-range committee, an intermediate-range committee, and a long-range committee to develop the language. The long-range committee would never actually meet. There was also an executive committee for coordinating the other committees. Grace Hopper was appointed as an advisor to the executive committee, but the executive committee was political in nature and wasn't involved in design.

Most of the design work for COBOL was done by the short-range committee, which met from June through December 1959. These people served on the short-range committee:

Col. Alfred Asch, Robert Barton, Howard Bromberg, William Carter, Ben Cheydleur, Miss Deborah Davidson, Norman Discount, William Finley, Charles Gaudette, Roy Goldfinger, Dan Goldstein, Mrs. Mary K. Hawes, Duane Hedges, Mrs. Frances E. Holberton, Miss Sue Knapp, Karl Kozarsky, Roy Nutt, William Logan, Rex McWilliams, Vernon Reeves, Gerald Rosenkrantz, Miss Jean E. Sammet, William Seldon, Edward Somers, Mrs. Nora Taylor, Miss Gertrude Tierney, Capt. Erwin Vernon, J..H. Wegstein (Chairman)

After the short-range committee dissolved, work was carried on by the intermediate-range committee at a slower pace. The following individuals are mentioned as participating in the intermediate-range committee (though Sammet thinks this list may be incomplete):

A. Eugene Smith (Chairman), Lester Calkins, Gregory Dillon, Roy Goldfinger, Jack Jones, William Keating, Colonel Gerald Lerner, Robert Rossheim

As for the influence of FLOW-MATIC on COBOL, I am not aware of any FLOW-MATIC manuals that are available online, unfortunately. Sammet's article lists 5 influences of FLOW-MATIC on COBOL, however. It also lists 6 influences of COMTRAN on COBOL. Sammet says the FLOW-MATIC influences are

1) It worked! 2) Full data-names unlike FORTRAN (though limited to 12 characters in length) 3) It used full English words for commands 4) It used less than a full machine world for each data item. 5) It separated data description and commands.

</comment></comment></comment><comment><USER4> Apart from a few the actual years of creation helped me more than the names of the creators.

</comment><comment><USER5> Missed Groovy. No regrets.

</comment><comment><USER6> Groovy and Scala but no Clojure?

<comment><USER7> Yeah, and I kept guessing Clojure on all the ones from the 2000s that I didn't know.

</comment></comment><comment><USER8> I can't believe I missed basic and javascript! I'm banging my head against the wall thinking "I know the name Brendan Eich, but where?"

<comment><USER9> 18/19 can't believe I missed BASIC! Should have been process of elimination of programming languages I've heard of at that point.

Most I got from the creators, managed to narrow down the others based on the year.

<comment><USER10> Same here, I was guessing on a couple of the other ones though.

I was thinking that it was Algol or Simula or one of the other ones that is super important in terms of influence but isn't used at all any longer.

</comment></comment></comment><comment><USER11> Score:9.

Consolation points: Did BASIC and Ada which many seemed to miss.

Old memories refreshed, LOGO followed by BASIC. When I first read about C, I wondered how things ever worked without 'goto'. What the hell is this thing known as recursion. :)

<comment><USER12> _Did BASIC and Ada which many seemed to miss_

There was no Ada in the list. You couldn't list Ada's authorship and still keep the entry-box above the fold.

</comment></comment><comment><USER13> 17/19. Missed Erlang and Groovy.

The ones which came to me quickest upon seeing the name(s) were Python, Lisp, C, Java, C++ and Go (because of the year). The one which was the hardest to recall was Scala.

And the bonus was quick to memory, too.

<comment><USER14> Scala was easy for people like me who took a compiler design class given by Odersky at EPFL. We actually wrote a compiler for a simplified version of Scala. I would have never thought to see that language again after university. (That was about 6 or 7 years ago.)

</comment></comment><comment><USER15> I thought James Strachan was the creator of Groovy.

<comment><USER16> I wonder how many of those other languages also really had a different creator to that listed in the quiz, but had its official history rewritten.

<comment><USER12> Scheme.

</comment></comment></comment><comment><USER17> 15/19, missed Groovy (also no regrets), BASIC, COBOL and Ada Lovelace (put Babbage)

<comment><USER18> Same, missed basic, cobol, scheme and JS. :(

</comment></comment><comment><USER19> anybody else put 'emacs' for Guy Steele?

</comment><comment><USER20> Missed Groovy...

I would like to see other very important people on this list, e.g., where is Niklaus Wirth? or Alain Colmeraurer? or Chuck Moore?

</comment><comment><USER21> 15/19, but only because I wrote the back-end for this app: <http://flashcards.educationlabs.com/#/Play/?deckid=0> and the Language Creators deck was the very first test deck I made early in development. I'm very impressed with those who actually knew all of them!

</comment><comment> loup-vaillant Sigh, I see no language with type inference. Nor any concatenative one. Nor any non-strict one. So unfair.

<comment><USER22> C#'s `var` too weaksauce?

<comment> loup-vaillant When I said "type inference", I actually had system F in mind. And I didn't see ML (not even F#), nor Haskell, nor Miranda, nor Clean… So yes, `var` is too weaksauce.

</comment></comment></comment><comment><USER23> 16/19: No surprise that I missed php and groovy, but I should have guessed fortran. I read somewhere that Backus was involved in the early stages of the functional programming language movement, and got sidetracked by that. He is also the B in BNF, of course.

</comment><comment><USER24> Got em all except BASIC, Groovy, Scala, C# & Fortran. Not very interested in those languages anyway. I would have liked to see Haskell & Smalltalk on there. Apparently I do as much reading _about_ programming languages as I do _of_ them!

<comment><USER25> Tip: use *'s for italics, not _'s.

</comment></comment><comment> s-phi-nl One they did not ask: Alan Kay

<comment><USER26> Or Niklaus Wirth:

<http://www.sporcle.com/games/supreddit/prog_lang_wirth>

</comment></comment><comment><USER27> I feel ashamed that I didn't realize Guy Steel did Scheme nor that he is the current Chairman of Common Lisp. Go figure.

Anything Lisp related just immediately makes me think of McCarthy.

</comment><comment><USER28> A little more info on Ada (which I missed): <http://en.wikipedia.org/wiki/Ada_Lovelace>

</comment><comment><USER29> 3\. Bonus (how many _didn't_ get this one?), Perl (everything Perl mentions Larry), and Ruby (because his name is Japanese).

Huzzah!

<comment><USER30> I got the bonus, I didn't get many others besides Perl, C++ and a couple others

</comment></comment><comment><USER31> Missed groovy, scala and basic. Actually surprised I missed the latter, but then again I never sat down and thought, "who invented basic?"

</comment><comment><USER32> Got 17/19. I did not get Rasmus Lerdorf PHP. I also did not get the Ada Lovelace one, but I should have, I just couldn't recall it.

</comment><comment><USER33> 19/19, but I struggled a bit with the Basic one.

<comment><USER34> Same here.

</comment></comment><comment><USER35> I only got three, coicidently all "C". C, C++ and C#. Dont ask me why I know those three right away but struggle with the rest.

</comment><comment><USER36> I feel like I cheated on BASIC: I didn't know the creators, but it was the only big one from that era I didn't have yet.

</comment><comment><USER37> 14/19 How the hell did I get perl from larry wall? Never heard about those the creaters of php, Groovy or basic.

</comment><comment><USER38> 15/19. Missed JS (wow), Groovy, BASIC, and Erlang. That was a bit harder than I thought it'd be, honestly.

</comment><comment><USER39> 17/19. I didn't know groovy or scala.

</comment><comment><USER40> 18/19 groovy was out of my radar.

</comment><comment><USER41> No smalltalk or erlang but a question about ada and not actually the language?

</comment><comment><USER42> 16/19, 2 minutes, got bonus for Ada, missed Groovy, PHP, and (sigh!) Erlang.

</comment><comment><USER43> 14/19. Got many from the names, but a few I could guess just from the year.

</comment><comment><USER44> 13\. got all the old langs and the bonus. Missed Scala and Php, oh well...

</comment><comment><USER45> 14/19, missed BASIC, C#, Groovy, Scala, and Ada Lovelace.

</comment><comment><USER46> 15/19; missed JavaScript, Groovy, Scala, and Erlang.

</comment><comment><USER47> 12/19. Oh well, at least I had Ada Lovelace. :)

</comment><comment><USER48> 16/19, missed Javascript, COBOL, and Groovy.

</comment><comment><USER49> 17/19 - missed javascript and groovy.

</comment><comment><USER50> I got 4.</comment>


Fixing Mt. Gox - <AUTHOR> https://www.reuters.com/investigates/special-report/bitcoin-gox/ <comment><AUTHOR> This is just the sidebar: (URL is fixed for some reason)

[https://www.reuters.com/investigates/special- report/bitcoin-...](https://www.reuters.com/investigates/special- report/bitcoin-gox/?utm_source=twitter&utm_medium=Social#sidebar-gox)</comment>


Micro-tweet – The Twitter Client that Fits in a Tweet (Python) - <AUTHOR> http://w-shadow.com/blog/2010/08/10/micro-tweet/

<comment><USER2> Reminds me of: [http://stackoverflow.com/questions/284797/hello-world-in- les...](http://stackoverflow.com/questions/284797/hello-world-in-less- than-20-bytes/284898#284898)

</comment><comment><USER3> I'm fairly sure at least the posting tweets part of this won't work anymore since basic auth was turned off a few months ago. It looks like this was posted not too long before basic auth was turned off though.

<comment><USER4> So, who will write the first OAuth Twitter client in 140 chars?

<comment><USER5> well, you wouldn't really, or it would be the same code as presented here without the login information. oauth credentials are pulled from constants, a security file, or the environment, so it is just a different paradigm, but the code is actually just a little simpler, it is devoid of most login logic other than passing the keys.

</comment></comment></comment><comment><USER6> "import twitter"?

<comment><AUTHOR> From the article:

"And yes, I'm aware that using a pre-existing library to interface with the Twitter API might be considered "cheating", but it would be downright impossible to fit the script into the size constraints without it. The API endpoint URLs alone would probably be long enough to push the script over the limit."

Edit: Before this turns into a gauntlet[1], I'm simply quoting the article so that people don't think the author is oblivious to this fact.

[1] [http://wordnetweb.princeton.edu/perl/webwn?o2=&o0=1&...](http://wordnetweb.princeton.edu/perl/webwn?o2=&o0=1&o7=&o5=&o1=1&o6=&o4=&o3=&s=gauntlet&i=3&h=0000#c)

<comment><USER7> And that is exactly why this doesn't make sense at all... it's just not possible to code it with these few lines.

</comment></comment></comment><comment><USER8> Reminds me of Tweet MVC, a PHP model-view-controller framework a former co- worker created for fun. Each component (like "model") is 140 or fewer characters. It definitely doesn't follow many best practices ;)

<https://github.com/tweetmvc/tweetmvc-core>

(But hey, `import twitter as t`? Abstract things enough and any super-simple program can be 140 characters)

</comment><comment><USER9> How to draw an owl[1] like a master

1\. declare some consts and vars

2\. import owl; print owl.new()

[1]: <http://news.ycombinator.com/item?id=1952712>

</comment><comment><USER10> My best attempt (jQuery):

        $.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?screen_name=ElbertF&callback=?',function(json){alert(json[0].text)})

The long API URL alone makes it pretty much impossible to make something useful, this "client" simply gets the latest tweet and can't post updates. Not much of a client, I know.

</comment><comment><USER11> Brilliant! I tweeted it as soon as I read it.</comment>


X-Wing is Biggest Lego Model Ever - <AUTHOR> http://www.wired.com/underwire/2013/05/largest-lego-x-wing/?viewall=true

<comment><USER2> Kinda a meta-model. They used bricks to represent the scaled up bricks of the smaller model.</comment>


Ask HN: How would you secure your laptop against the NSA? - <AUTHOR> Hypothetical scenario of securing your laptop against a state-level actor. What are all the steps you would take? Is something like FileVault on OSX enough? Would you feel confident in your ability to keep your data private against such an adversary? Is it even possible? <comment><USER2> How valuable is the information on your laptop to the NSA? If it's under $100k you're probably ok doing what Stallman does [https://stallman.org/stallman- computing.html](https://stallman.org/stallman-computing.html) . If you have information worth over $5M to the NSA, then you better get physical security personnel as well as network and hardware security personnel; maybe ally yourself with a different powerful state or corporate actor. In other words you need to make their expected cost of getting that information significantly higher than it's worth.

<comment><USER3> I knew the FSF people could be dicks, but this guy.. holy shit

<comment><USER4> Yes, he really is... Once listened to him criticize one of the old hosts of the Linux action show because he worked for a company as a developer and was writing non-open source software... He felt he should quit and not support his family or get a job outsiders of development rather than not writing open software... Was an a$& about it too...

<comment><USER5> He thinks writing closed source code is morally wrong. So he doesn't care if it's done for supposedly good or bad reasons, it's just bad to him.

</comment></comment></comment></comment><comment><USER6> I'd just smash my laptop with a hammer, microwave the HDD, and go live a simple life on a mountain somewhere raising alpacas.

<comment><USER7> I've seriously considered doing this before, but I would be bored out of my mind without any intellectual stimulation.

<comment><USER8> that's why you need alpacas

</comment></comment></comment><comment><USER9> The first step is buying the right laptop. In this day and age, even hardware can have backdoors. You'd want something devoid of such backdoors (or the potential thereof, which tends to put a dependency on open hardware) and fully compatible with open software (not necessarily free, but it tends to help) all the way down to the firmware.

Transparency is a dependency of trust. If any component lacks transparency, then it cannot be trusted. Period.

This means neither macOS nor FileVault are sufficient; neither are transparent, and therefore neither are trustworthy. Even a fully-free operating system like a Linux distro or OpenBSD is insufficient if you rely on closed-source drivers or firmware.

Next step is to detect tampering. This means that your laptop needs to prevent booting any operating system unless you've signed it with some private key, and needs to clear any full-disk encryption keys if any attempt is made at physical tampering. This is also the step where you ensure the physical security of that machine.

Once you've established physical security and full-stack transparency, you can start worrying about the encryption itself (which will need to be much stronger than the norm) and about sandboxing untrustworthy software.

Really, the only perfectly-secure computer is an incinerated computer. The best anyone can do is minimize the opportunities for such a state-level actor to, well, act. Transparency, tamper-resistance, cryptography, and isolation are the keys, and even the slightest error or concession for "convenience" can and will permit the likes of the NSA to actually infiltrate your systems.

</comment><comment><USER10> Physical security is _the_ primary concern.

If access to data "after the fact" is what you're really asking, then you use the strongest encryption possible (a few options), and have a deadman switch to physically destroy the hardware (e.g., melt the platters/chips) including any caching mechanism(s) that's off-drive.

</comment><comment><USER11> I followed the Snowden leaks only from MSM sites, so I know little of the details. Most of the comments thus far are "there's nothing you can do."

Can somebody explain in more depth whether this is likely true, or an over reaction, and why?

Is there literally no way to stop the NSA from snooping? What if I built a laptop from multiple separate components ordered from different websites or purchased from different B&M stores using heavily tumbled bitcoin and ordered to several different addresses or PO boxes from a public library, encrypt all of the drives, boot Tails from a flash drive, use a yubikey or some other physical authentication method in addition to passwords, and never connect the laptop to the internet (remove the Ethernet and WiFi cards)? Put some dynamat in the case, just to avoid some type of fancy-ass soundwave-based snooping... maybe even throw some thermite activated by 5 or 10 failed password attempts. Oh, and a super-silent keyboard to avoid password grabbing via the sound the keys make. And a pop-up visor to avoid people looking behind your shoulder.

<comment><USER12> These two links have been posted already on this thread but they answer your question very precisely.

[https://xkcd.com/538/](https://xkcd.com/538/)

[https://www.schneier.com/blog/archives/2015/08/mickens_on_se...](https://www.schneier.com/blog/archives/2015/08/mickens_on_secu.html)

</comment></comment><comment><USER12> If a state level actor really wants the data in your laptop in a targeted manner, there's very little you can do. For starters, if that were _really_ your situation, you wouldn't use OSX or Windows :-)

If your objective is instead to prevent data theft by identity thieves or commercial spies, the FileVault type precautions and standard security practices are probably good enough.

</comment><comment><USER13> a laptop you are actively using, connected to the internet? Assuming the NSA really wants to get you, there's nothing you can do. Here's how they would do it:

First they need an RCE, probably for your browser, maybe your TLS library. For a state actor, this is not a problem. Let's assume it's your browser. They need you to visit a page with their malicious payload. They can use phishing, they can take over a site you visit. Or they can take control of some machine in the path between you and sites you visit. From there they can MitM a TCP connection to inject the payload. (They might not even need to be in the path, but most exploits to MitM a TCP connection not in your path only work for long running connections). Now all you have to do is make an un-encrypted connection to any site, and they've got you.

Now they have taken over the browser process. Maybe you decided to be safe and do all your browsing in a VM, or use something like Qubes. Then the NSA has to break out a virtualization escape from Xen/VMWare/whatever. Difficult, but not impossible, and entirely within the NSA's capabilities. Once out of the VM, they can use an OS exploit to get into kernel space, or just do some privilege escalation and load a kernel module.

From here they've got complete control of your machine. They can do disk and memory capture, capture all your keystrokes, record your screen, etc.

All of the above can be done without leaving a clear footprint in network traffic or on disk. An analyst could find it, given time, but I wouldn't trust any sort of AV program or network monitor to catch any of this automatically. Exfilling data is a little more complicated to avoid leaving a giant footprint in the network traffic. Probably the best thing is to take advantage of that staging server they set up in your path: your machine can make a TCP connection to an innocent-looking IP address and get the connection MitM-ed. Break the data into pieces and hide it in innocent-looking requests to generic places and have it intercepted.

Notice everything I've described can be done completely remotely, without any physical access, and can be applied to basically any setup you have. The bottom line: once you're dealing with a adversary sophisticated enough to be able to use multiple 0days against ubiquitous programs, there's not much you can do. Your best defense at this point becomes security through obscurity: force them to have to figure out what setup you have to progress through your system. This might slow them down enough that they get caught.

<comment><USER14> > Now all you have to do is make an un-encrypted connection to any site, and > they've got you.

Seems easy to ensure that doesn't happen. If I block all non SSL requests going out from my machine, what's the next step?

<comment><USER13> The NSA still has plenty of options. First is an undisclosed RCE in your SSL implementation. If they don't have an 0day handy, they can compromise any server you would visit. They can hijack a web server to inject the payload, they can steal the certificate and then MitM anywhere on the path. They can create a malicious ad with the payload, targeted towards you. They can get their hands on a valid certificate for a site you commonly visit, by using a CA that doesn't properly check these things, either through a vulnerability, social engineering, forgery, or coercion. And of course there's always spear phishing. They don't need to get credentials, just get you to click the link.

</comment></comment></comment><comment><USER15> Remove hard drive send via UPS, or private courier.

If that is insufficient it's not a fight over security. It's a fight about mobilization of lawyers and political contacts.

</comment><comment><USER16> I've never been worried about a National Security kind of interest in my affairs, but if you are here is a humorous and relevant blog post on Schneier's blog: [https://www.schneier.com/blog/archives/2015/08/mickens_on_se...](https://www.schneier.com/blog/archives/2015/08/mickens_on_secu.html)

</comment><comment><USER17> Yes, you should most definitely take steps. The main thing to look out for, and easier to prevent, is 'persistent intrusion', as opposed to 'incidental intrusion'.

'Persistent intrusion' involves long-term monitoring to gain psychological and behavioral insight. The industry has evolved, it's not always just about running a keylogger and capturing some files, anymore. Some example of what persistent intrusion is about: running a 'wmctrl' equivalent every 12 seconds to capture classes and titles of windows currently opened, which is then uploaded and assessed. Keyboard typing patterns are also captured. Your music collection is captured, including which tracks you listen to and how often. Over the course of months/years an large amount of information is ultimately collected which is then sent to a team of data scientists and psychologists for data mining and analysis. The wealth of information allows you to predict the target's thought patterns and movements.

The microphone is NOT captured for standard targets.

Persistent intrusion is easier to prevent:

\- Prefer Linux to OSX/windows. Prefer Arch or similar but Ubuntu is infinitely better than OSX/windows.

\- If you are using Ubuntu, never download apt-get packages over http (the default), switch to a mirror that uses https. The reason is there is MITM monitoring on the packages you are downloading in order to look for packages they need to find exploits in, and to gain information about your system.

\- Obviously, never connect to a website unencrypted. The connection will be MITM'd, a 0day will be injected in-flight on the return path from the remote host and your browser will crash.

\- On Linux, in the event of a normal crash, never use the crash reporters to send a crash report. The connection will be MITM'd, a 0day will be injected in-flight on the return path from the crash acknowledgement server.

\- Routinely reinstall your operating system every 2-3 weeks. It's easy on Linux and you can automate the install using scripts. Additionally you can mount your home directory seperately. Physically change the installation drive.

Unfortunately, incidental (one-off) intrusion is more difficult to stop since assumedly a single attack is all it will take to lose your data on disk, if this is the resource you are trying to protect.

Even if you are not a high profile target, any connection to a VPN or TOR is monitored, and your IP address is added to an array and entered into a lottery for penetration.

</comment><comment><USER18> Obligatory XKCD: [https://xkcd.com/538/](https://xkcd.com/538/)

<comment><USER19> It's funny because it is true.

</comment></comment><comment><USER19> Assuming this is about some secret data:

It's maybe the wrong question, or part of a bigger question of how do you secure information you want to keep from a state-level actor. Your laptop may be part of that but also your mobile device, home phone, cloud services, and other people who also have access to the said data. Also how determined they are to get the data is another factor, and can they achieve what they need to another way without 'your' data.

</comment><comment><USER20> you forgot the biggest piece of information: is the laptop connected to the internet or a local area network? (or bluetooth etc)

edit: assuming it is not "connected" to the physical world, I'd partner with an embassy to house the laptop there. preferably a communist state where we don't have good relations.

</comment><comment><USER21> Avoid attracting unwanted attention.

<comment><USER22> Yeah, this one's pretty important - don't do stuff publicly the government does not like to not have your electronics seized. Being on the grey list ain't that fun from what I've read..

</comment></comment><comment><USER23> Thermite + vigorous stirring.

Oh, you mean a _usable_ laptop?

</comment><comment><USER24> Never connect it to the internet.</comment>


Ask HN: How to download comments of my favorite submission on HN - <AUTHOR> Does anyone have a tool for this? <comment><USER2> I'd start with a query like this ([https://www.graphqlhub.com/playground?query=%7B%0A%20%20hn2%...](https://www.graphqlhub.com/playground?query=%7B%0A%20%20hn2%20%7B%0A%20%20%20%20nodeFromHnId\(id%3A%20%2219701416%22%2C%20isUserId%3A%20false\)%20%7B%0A%20%20%20%20%20%20id%0A%20%20%20%20%20%20...%20on%20HackerNewsV2Story%20%7B%0A%20%20%20%20%20%20%20%20score%0A%20%20%20%20%20%20%20%20timeISO%0A%20%20%20%20%20%20%20%20title%0A%20%20%20%20%20%20%20%20url%0A%20%20%20%20%20%20%20%20kids\(first%3A%205\)%20%7B%0A%20%20%20%20%20%20%20%20%20%20edges%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20node%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20by%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20hnId%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20timeISO%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D)).

But if you want recursion you might need to patch the schema ([https://github.com/clayallsopp/graphqlhub](https://github.com/clayallsopp/graphqlhub)).

<comment><USER3> This is amazing! Thnks

</comment></comment><comment><USER4> Is there a reason curl and either awk or the combination of htmltidy and xmlstarlet wouldn't work?

</comment><comment><USER5> File -> Save Page As

Or is that too simplistic?

</comment><comment><USER6> I'm actually working on a project for this haha - curious if anyone has suggestions on a data-structure to archive comment threads?

<comment><USER7> I would probably use an SQL-like database with a submissions table (id, title, url, sender, date, points), a users table (id, name) and a comments table (id, author, date, parent, submission, color, content).

If you prefer using maps, for each table (map), use id as the key and the rest of the fields as the fields for a structure used as the value for each entry (using a C struct, or a Python tuple, named tuple or dataclass, assuming these languages).

You may want to use the id field from the HN URLs. You could drop the submission field for the comments.

Edit: You also need to decide how to handle edited, deleted and flagged comments, and dupe and flagged submissions.

</comment></comment><comment><USER8> Someone on HN made a github project called Monolith. It's a command line thing. Go check it out and see if it will accomplish what you want

[https://github.com/Y2Z/monolith](https://github.com/Y2Z/monolith)

<comment><USER9> good project but not really what OP wants.</comment></comment>


Composition is better than recursion in functional programming - <AUTHOR> http://blog.fogus.me/2011/03/09/recursion-is-a-low-level-operation/

<comment><USER2> Early functional languages were based on two basic constructs:

      *Linked lists (cons-cells) for data structures
      *Recursion (with or without TCO) for control flow

Both of these concepts are fundamentally sequential and not less important very low level. For today's manycore/parallel/distributed world, better fit would be:

      *Nested data-parallel types (like in NESL or Intel ArBB)
      *HOFs, array/dictionary/parallel comprehensions

<comment><USER3> Recursion is not fundamentally sequential. It depends on your data structures:

Structural recursion on sequential data structures is sequential. Structural recursion on somewhat-balanced tree-like data structures is more amenable to parallelism.

(And non-structural recursion is too general to talk here.)

Though I agree that using recursion does not scale very well in terms of program complexity. Hide your data flow behind combinators, if you don't want to get a headache.

I highly recommend Guy Steele's talk that's linked in a sibling comment. I am glad I attended ICFP that year.

</comment></comment><comment><USER4> For me, the important point is that higher-order functions (map, fold, etc.) compose well with other higher-order functions, whereas hand-coded recursion doesn't really compose with itself or anything else. Using recursion in a functional language is a little like using a for loop in an imperative one.

<comment><USER5>
        hand-coded recursion doesn't really compose
        with itself or anything else

That's not true. If you look at the implementations of the functions composed in the OP, you'll see:

* `partition-by` implemented via recursion

* `comp` implemented via recursion

* `map` implemented via recursion

* `repeat` implemented via recursion

The point is that recursion should be a last resort[1] and something squirreled away in combinators.

[1]: Last resort is a flexible term, but my meaning should not be taken as "never use recursion", just be thoughtful about it.

<comment><USER6> I think you missed Tim's point. A better analogy might be duplicating code vs writing a function once and reusing it. Hand-written recursion with the operation inlined is not usually very reusable (i.e. composable); however, if you factor out the recursive traversal and parameterize it by the operation to be performed, it composes much better. But at that point you're writing a library routine, rather than logic specific to the task at hand.

(As an aside: in my way of thinking about software design, generic library code is "free" - it doesn't count towards the number of lines of code for the actual task being solved. I try to make as much of the software that I design library-like, and the core of the app not a lot more than composing these pre- fabricated bits, as possible, potentially even to my detriment in short-term productivity. But this approach handles scale much better, in my experience.)

</comment></comment></comment><comment><USER5> In fairness, the title of this submission should be _Composition is better than recursion in functional programming... unless recursion is better._

</comment><comment><USER7> >> Having said that; their points are valid because in Clojure (and likely most, if not all functional languages) _recursion should be seen as a low- level2 operation and avoided if at all possible_.

That part was even in bold. Which totally runs counter to what Scheme emphasizes (recursion wherever possible).

<comment><USER8> I'm not 100% certain you got the point, which is that in Clojure (and Haskell and I'm sure others) recursion is used "whenever possible" but given a choice you should use the pre-rolled recursions available in the various combinators, not implement it yourself directly.

fold, map, filter, and a wide variety of other things are all recursive, but the recursion can and should be factored away. A "map" is utterly clear what is going on. The handwritten recursive version of a map requires a bit of analysis to be quite sure there's nothing tricky in the function being mapped, especially as the function being mapped gets large.

</comment></comment><comment><USER9> Except in this case, it is not better.

His RLE example traverses the sequence twice and creates an intermediate structure. It works find for small examples, but what happens when you are doing 3x the work on your 1,000,000 item sequence?

This could be done just as clearly (possibly more clearly) recursively, traversing the sequence only once, without an intermediate data structure.

I am all for functional composition in programming languages, but composition and recursion should be treated as equally fundamental (what is recursion but composing a function with itself, in a certain way, anyway?)

Here is a (not heavily tested) tail-recursive common lisp version (no recent clojure version installed here currently).

<http://paste.lisp.org/display/120383>

<comment><USER5>
        > Except in this case, it is not better.

Clojure's sequence functions are lazy. Observe the following:

        (def inf (interleave (cycle [1 1 2])
                             (cycle [1 2 2])))

Depending on your REPL settings, if you try to evaluate inf you'll eventually blow your heap. This is clearly an infinite sequence. So by your measure, passing it into rle will be a disaster right?

        (take 5 (rle inf))
        ;;=> ([3 1] [3 2] [3 1] [3 2] [3 1])

The laziness of Clojure guarantees that at no point is the full sequence realized in memory. The sequence is processed once, and only the part of the sequence that we care about is processed.

<comment><USER9> Yes the sequences are lazy, but that isn't really the point.

The 'pack' function is still consing together unnecessary subsequences. The count function also has to iterate across each of these subsequences (assuming they are lists, which they look to be). This can be done much more cleanly in a recursive fashion.

When I'm counting consecutive equivalent entries in a list, why wouldn't I just count them and return the results?

Sorry fogus, but implementing this in a point free style is horribly inefficient.

<comment><USER5>
        The 'pack' function is still consing
        together unnecessary subsequences.

No, it's not.

        The count function also has to iterate
        across each of these subsequences

Only the sequences that it sees.

        This can be done much more cleanly
        in a recursive fashion.

I suppose we have different definitions of clean.

        implementing this in a point free
        style is horribly inefficient.

Call me unconvinced.

<comment><USER9> I wasn't sure if you were just obstinately dismissing my arguments, so I decided to do a benchmark and prove this to you.

<http://paste.lisp.org/display/120386>

Here is the benchmark. I did two versions in clojure 1.2, the first one uses a transient vector... the second a list. (which it reverses at the end).

As you can see, on my machine, the timings for these benchmarks puts the recursive list version approximately 2x faster than your version.

edit: annotated paste with more generous timings of composition version.

<http://paste.lisp.org/display/120386#2>

Are you convinced that yours is doing more work now?

edit2: I will note, however that neither of mine are fully lazy. I am not a Clojure expert, so I'm not intimately familiar with the laziness abstractions, how would I make these functions use the laziness abstractions? is it even possible?

<comment><USER9> I've added a tail-recursive lazy version.

It seems to be about the same amount of a speedup, with the nice addition of less memory use.

<http://paste.lisp.org/display/120386#3>

I thought the 'better performance' of my other versions were specious because data-structure choice often makes a big difference in these sorts of benchmarks. List vs Array vs Lazy-Seq should make a difference.

I think this is more definitive, as it produces the (program-flow wise) similar computation to the original. (Not just the same results).

<comment><USER5> You seem to have reframed the discussion from "horribly inefficient" as defined by extraneous operations, to one of raw speed. I'm certain I've never claimed that a tail-recursive implementation couldn't produce faster times. My statement from the beginning has been that recursion is a low-level operation. I stand by that statement. My combinator post provided 3 useful functions that could prove useful in the future. Your `recle4` implementation does one thing only. If any one of the functions in my combination gains speed, then my implementation will likewise gain speed. This leaves room for optimization without having to dive right into creating a convoluted recursive implementation. I'm pretty sure the words "avoided if at all possible" subsumes the need to optimize if every ounce of speed is required. Raw execution speed is __not __the only unit of speed that we should consider. We shouldn't sacrifice the speed of the developer or the speed of comprehension just to placate our lizard brains.

<comment><USER9> I have not done any reframing whatsoever. You never framed the conversation to begin with.

You said, point blank, that composition is better than recursion in functional languages. Better. I called BS.

How, exactly, then, do you define 'better'? You didn't give an operational definition of 'better' (which is your responsibility, not mine), so I made up my own.

If you don't like it, then be more careful with your claims. It certainly is not 'better' in all meanings of the word. (at least any of those that are clearly defined or measurable for me. In retrospect I see that you were talking about 'style' but 'style' is pretty impossible to measure as it is entirely subjective).

..

I wrote a similar function in the same language, and it was twice as fast as yours. Your function, therefore, wastes operations. (At least twice as many, approximately). That isn't a small amount!

I'm not even serious about Clojure and my solution seems pretty straightforward. Unless all recursion is rocket science, it is very simple recursion.

(Granted I had to RTFM to write it and I suppose a proper name might help, but it would help your implementation too).

Why do I need dozens and dozens of ravioli functions that I'm just going to forget that I implemented clutter my name-spaces? Please, for the love of God, at least use a letfn/flet/labels.

What is the next developer going to do when I am dead or have retired to my private island? He'll have to learn, not one, but 3 different functions, and know what they do. None of your composed functions are particularly self explanatory.

In what way do you think you will get a 2x improvement through the improvement of other functions?

I suppose if you write a new compiler for Clojure (perhaps a sufficiently smart one?), it could happen, but you will not get that type of improvement simply by improving the 'pack' function, for example.

The way that you are going about collecting the values is fundamentally opposed to efficiency.

'Creating homogeneous groupings then counting the size of those groups' (what you did) is going to be slower than 'counting consecutive same things' (what I did).

This isn't really about raw efficiency, this is about a fundamentally broken thought process used to describe the algorithm. That broken thought process is a result of attempting to shoehorn the answer into the realm of functional composition.

Anyway, I respectfully disagree.

<comment><USER5> Next time before you go off on a tirade against my so called claims, go back and check your facts. _I_ did not say "better". Whomever submitted my post did.

You have interesting ways of respectfully disagreeing with people.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Can't agree more! Just think about how code can scale to multi-cores / GPUs. It's all because composition is more _declarative_ than recursion. (Although recursion is still more declarative than C-style imperative programming.)

</comment><comment><USER11> Why?</comment>


Measuring Information in Millibytes - <AUTHOR> https://engineering.vena.io/2016/07/12/measuring-information-in-millibytes/ <comment><USER2> > _This is a little more than eight thousandths of one bit. Therefore, the > information given by one passing test run is just a little over one > millibyte. To debug this compiler, we 're going to be running hundreds and > hundreds of experiments, each of which gives us a tiny fraction of one bit, > until we can finally put together the single byte we need to isolate the > faulty optimization._

It doesn't work that way. If you're dead set on measuring a single passing test run as a milllibyte's worth of information, you have to realize that every subsequent passing test run is worth less and less. Otherwise running a thousand passing tests would give you a full byte of information, and yet a thousand passing tests does not give you 100% confidence that the enabled optimizations are not buggy. The only way to get a full byte's worth of information is to actually hit upon a failing test run.

And in fact even this is mistaken. You don't have a millibyte's worth of information. You have a lot more. The number of passing test runs at a given optimization gives you a probability that the optimization is buggy. Claiming that all this information you have about probabilities of the bugginess of various optimization passes is really just a millibyte is misleading; you have a lot of information, you're just ignoring it and saying you only _care about_ a millibyte's worth of it.

<comment><USER3> I run into this with much larger p and have to explain it to coworkers.

Flip the scenario around: the code is fine but the test has a concurrency bug in it. It fails about 20% of the time. You ask someone to fix it. After six green test runs they declare the bug fixed. But then build 8 fails and so does build 10.

Why? Because probabilities aren't additive, they're multiplicative. You didn't test 6p > 1, you tested (1 - o)^6 < 0, _which will never be true_.

In this case there was a 26% chance the test was still broken after 6 green tests. You need 11 runs just to get the probability into single digits.

(Another consequence of this is that if you have 5 flaky tests the probability of a green build is one in four, and the likelihood of getting multiple consecutive red builds is high enough that it happens every week or two).

</comment></comment><comment><USER4> Tarsnap storage costs 0.25 picodollars per millibyte-month of storage.

<comment><USER5> And it works great! Well worth my picodollars.

<comment><USER3> If I write a check with the dollar amount in scientific notation, will my bank honor it? How about a credit union?

</comment></comment></comment><comment><USER6> > You decide to try running with optimizations 1-128 enabled, and 129-256 > disabled. That run fails. Now you know that one of the first 128 > optimizations is to blame. You try again with 1-64 enabled, and 65-128 > disabled, and that run passes. The bad optimization must be between 65 and > 128. Continuing in this fashion—a binary search—you're able to locate the > faulty optimization in just eight steps.

This doesn't work for the case where the failure(s) might be caused by a combination of a subset of the optimisations. That is,

1000 0100 0010 0001

all succeed, but

0101

fails.

A binary search is not possible for these more complex bugs. We had such cases in the reproducible builds project.

For the case where you can assume (subset A exhibits a failure => any superset of A exhibits a failure), then you can just go through all the options (in the OP's case 256) and switch them on, one at a time. Then the running time is 256, not 8.

For more complex cases where you can't assume even that, then you're stuck indeed with 2^256 test cases.

<comment><USER3> I think for pairs you can still do a logarithmic search, it's just not base 2.

A trinary or quaternary search should be able to find two bugs at once (and intuition tells me a quad search should be able to handle three).

Say you have 16 optimizations and 7 and 12 don't work together. Eliminate the first half, the second half, the odd or the even opts and the build is still green. But if you remove the first third or quarter the tests still fail.

So in a trinary search you might see 1-16 -> 6-16 -> 6-13 -> 6-8,12-13 -> 6,7,8,12 -> 6,7,12 -> 7,12. Including the first and last sanity checks you're in for about 8-14 test passes for 16 tests, which is a lot better than 2^16.

But there's still a binary search you can do, and that's a bisect of the commit history. Before some commit this bug didn't happen. And that's going to contain one half of the bug. Now you run a second binary search to find its complement.

</comment></comment><comment><USER7> if you use base e logarithms, you can measure information in natural units aka nats. [https://en.wikipedia.org/wiki/Nat_(unit)](https://en.wikipedia.org/wiki/Nat_\(unit\))

</comment><comment><USER8> Another example of sub-bit information:

Base85! 85 different ASCII characters have lb(85) ≈ 6.4094 bit. With 5 of then you get slightly more than 32 bits. Each of the 5 characters have a surplus 0.4 bit of information to add up to 2 bits.

To encode to Base85 use a 32 bit entity as an 32 bit unsigned integer then divide by 85 five times and take the remainders (from 0 to 84) as indices to the string of all Base85 characters of length 85.

To decode view the characters as a number written in base 85. This means that there are a few Base85 representations which are more than 2^31 - 1, this would mean an decoding error.

</comment><comment><USER9> To anyone interested in learning more about Shannon entropy, I recommend reading Shannon's original article. It's highly readable!

There's a link to the PDF on [https://en.m.wikipedia.org/wiki/A_Mathematical_Theory_of_Com...](https://en.m.wikipedia.org/wiki/A_Mathematical_Theory_of_Communication) .

</comment><comment><USER10> Data compression is another place where measuring in millibytes is feasible. For example, if a video codec took in pixels in RGB8.8.8 format (3 bytes per pixel) and has a 100:1 compression ratio, then you could say that the compressed video uses an average of 30 millibytes per pixel.

</comment><comment><USER11> >Why eight steps? Well, to differentiate between 256 equally likely possibilities requires eight bits. Each experiment, since it differentiates between two equally likely outcomes (pass and fail), provides one bit of information. Therefore, we need eight such experiments to give us the eight bits we need to determine the faulty optimization.

Is this explanation a little odd?

Each step in a binary search halves the amount of suspects, you need 8 steps because with 8 steps you go from 256 suspects to one.

I can't see it the way the article describes it.

It's just me? Anyone else found the article reasoning for 8 steps a little odd?

<comment><USER12> Yeah, I noticed that too. Treating a byte as eight tally marks misses the point about the combinatorialnature of place settings.

It's not 100% wrong, because bit shifting and bit packing are real-world applications used in memory all the time.

But these are not the only possible values:

      00000001
      00000010
      00000100
      00001000
      00010000
      00100000
      01000000
      10000000

It's not incorrect to make a decision to limit one's input to those values, but it _is_ incorrect to presume that binary data can only be recorded that way.

Treating those 8 place settings as eight lightbulb circuits that each need an individual test isn't the right mindset for someone performing compiler optimization.

</comment></comment><comment><USER13> I got a paragraph in and was like -- he had to run eight tests a thousand times to get one yes/no answer each, didn't he.

</comment><comment><USER14> Password entropy is another place where fractional bits can be encountered.</comment>


Ask HN: How to handle life insurance while waiting for coverage at new employer? - <AUTHOR>

What do you do for life insurance (not health) when you change jobs?
My situation: I'm about to leave one job for another, and after I accepted the offer, I saw that the new employer's life insurance coverage doesn't start for 45 days. I'm not comfortable being uninsured that long now that I'm a parent and the sole breadwinner for the family. I called up my homeowner's insurance agent and asked what they offer. They can give me a policy that lasts 10 years, and I can cancel it after I get set up at the new job. Probably what I'll do, but it may still leave me with a couple days uncovered since they do everything with paper. Also, it feels a little weird to sign up for a service that's meant to go for 10 years with the intention of cancelling after just 2 months.
My current employer's HR is not responding to emails/voicemails and is sending inconsistent messages about whether I can extend coverage. <comment><USER2> > Probably what I'll do

Do it.</comment>


Club Penguin is shutting down - <AUTHOR> http://puffl.es/2jMtlPJ <comment><USER2> Ah, I remember my older son being quite addicted to CP back in the day. It seemed to be a cool platform, really easy for kids to use and interact with their friends. I think I even paid for a couple of annual subscriptions.

But I think I will be sadder to see it go than my son would, purely from a nostalgia standpoint and for the sake of remembering those days of innocence...

<comment><USER3> That is such an unfortunate acronym...

<comment><USER4> for those unaware, "CP" often refers to child pornography

<comment><USER2> Ah, thanks for the clarification. I was not aware of that acronym. I guess it depends on what world you move in. Those in law enforcement or counselling, I guess it would be an every day thing, but for the rest of us, it is completely meaningless...

<comment><USER5> > Those in law enforcement or counseling

Or those who have friends with "off" senses of humor, have hung out in uncensored and unmoderated forums, watched enough television about crime, and so on. I don't remember where I first heard those letters used in that way, but I imagine it was about 15 years ago, when I was in high school.

To be clear, in context, your post only reads awkwardly for me after having the alternate parsing of "CP" pointed out. Your intended "Club Penguin" meaning was the first way that I read your comment.

<comment><USER2> Interesting addendum - I asked my wife that that acronym would mean to her (she used to be a counsellor, and for a time was involved with sexual assault victim counselling), and to her, "CP" was "Child Protection", as in "call CP Services...".

So there you go - a total polar opposite association of those initials...

</comment></comment></comment></comment></comment></comment><comment><USER6> For people who is wondering what it is.. "Club Penguin is a massively multiplayer online game (MMO) involving a virtual world containing a range of online games and activities,"

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

<comment><USER7> More specifically, it's an MMO aimed at children. With restricted chat and simplistic gameplay, it was very popular with the under 14 crowd.

<comment><USER8> It was also a known gateway for terrorists, and terrorist recruiting cells. The relative obscurity of the game and the assumed anonymity made it a breeding ground for black market crimes.

<comment><USER9> Wasn't that a joke in the film Four Lions?

<comment> J-dawg It also reminds me of "Pantou the dog" [0] from Brass Eye [1] (created by the same person as Four Lions), which successfully duped several British celebrities and politicians. That particular episode caused media hysteria when it came out.

[0] [https://m.youtube.com/watch?feature=youtu.be&v=RcU7FaEEzNU&t...](https://m.youtube.com/watch?feature=youtu.be&v=RcU7FaEEzNU&t=20m15s)

[1] [https://www.theguardian.com/tv-and- radio/2017/jan/30/brass-e...](https://www.theguardian.com/tv-and- radio/2017/jan/30/brass-eye-at-20-still-chris-morris-at-his-hysterical- gobsmacking-best)

<comment><USER10> How did anyone ever think that it was serious? It's so obviously satire.

</comment></comment></comment></comment></comment></comment><comment><USER11> Oh man! My very first job, I worked for the studio that made the Club Penguin DS game. Cut my teeth on assembly (for a profiler) and a FLC video decoder (void * cast to structs, anyone?). Good times!

Also, my immediate boss / mentor was the spouse of EA Spouse. Dude was (and almost certainly still is) a ridiculously amazing engineer.

<comment><USER12> Write a book! I'll buy it.

<comment><USER11> Not nearly enough material. Probably enough for a good blog post. Lan (the guy) probably has enough material, but I only worked with him for a few months.

I think the best quote came from a mutual friend (paraphrased, because decade ago) "When I first met Lan, I made a resolution: I'd be as good as he was in a year. Then I got to know him, and realized: I could be as good as Lan _was_ ; he got better faster than I could catch up."

</comment></comment></comment><comment><USER13> The title "Club Penguin is shutting down" isn't perfect. They are launching something called "Club Penguin Island".

<comment> james-skemp Except they are shutting down the current app and system. So the title seems to be accurate.

<comment><USER14> It's accurate, but probably not good. Most of the articles on HN that talk about a shut down are about the company going under. That doesn't seem to be the case here.

Regardless of it's right or wrong to assume the content of a post based on its title, a much better title would make it clear the game is shutting down and not the company.

<comment><USER15> Disney's not going under anytime soon.

<comment><USER14> Great if you know that "Club Penguin" has any thing to do with Disney. Personally, I've never heard of it before (nor did I linger on the article long enough to find that out about any association with Disney). Given the start up community's penchant for... unorthodox... company names, for me it could have been an 'Uber' for dry cleaning for as much as I could glean from the title (Uber for dry cleaning... hey.... never mind).

Again: completely accurate title, not as informative as it could be to anyone not already in the know.

[edit for clarity of point]

</comment></comment></comment></comment></comment><comment><USER16> Why is this a link to puffl.es instead of the Club Penguin site directly?

<comment><USER17> puffle is one of their trademarked applications they made that was a spin-off of the Club Penquin IP. I am pretty sure that they closed down those projects and most likely just made the URL just link back to the Parent/Main site.

</comment></comment><comment><USER18> All I ever knew about Club Penguin was that for a while it was popular for people to post dirty stuff there to get banned and then submit a screenshot of the ban to Reddit. [0]

[0] [https://reddit.com/r/bannedfromclubpenguin](https://reddit.com/r/bannedfromclubpenguin)

</comment><comment><USER19> Pools closed forever.

<comment><USER20> That was Habbo Hotel. Was that shenanigan used at CP too?

<comment><USER21> Not AFAIK, just a reference it seems.

</comment></comment></comment><comment><USER21> And they are launching a successor, Club Penguin Island which is apparently just the same thing but better, so there's that.

<comment><USER22> Not better if your kids play it on desktop.

<comment><USER23> True but they can still do so with an Android emulator like Andy

</comment></comment></comment><comment><USER22> Oh god, I'm going to have to break this to my daughters this evening.

<comment><USER24> Same here - although my daughter doesn't play consistently. Thankfully I've got her jazzed about TF2 now that she's a bit older and has gotten good with the WADS/FPS controls.

I think any parent with a child who's an active CP player is thinking two things: "Oh man, I got to break it to my kid" and "Great! Now they'll stop nagging me for a paid subscription"

<comment><USER25> > Thankfully I've got her jazzed about TF2 now that she's a bit older and has > gotten good with the WADS/FPS controls.

You probably already know, but I'd highly recommend Overwatch in that kind of niche. Similar co-operative FPS gameplay with a more vibrant/interesting backstory/world and characters, and _very_ polished. It's got me doing more gaming than I have for perhaps a decade (heck, it's even good enough to be worth putting up with a non-Steam platform).

<comment><USER24> Thanks for the tip - I think the part she likes the best is we get to play together/co-op

</comment></comment></comment></comment><comment><USER26> That took FOREVER. My son when he was 7 thought it was the greatest thing ever. I bought him one month and then I never allowed him to spend a dime on it. It was really not a quality product. There were better games and more social things then that site.

He ended up addicted to Pokemon :)

<comment><USER26> My youngest son loved the Marvel Hero Up Squad game at heroup.com. It closed this month.

<comment><USER27> Moderated Lego forums are closing this month too, weird

</comment></comment></comment><comment><USER28> I was a kid in the early 2000s, so my perspective is somewhat different to many here.

I was a CP member, and played fairly religiously for a few years. It was one of the first things I got an account for on the internet.

Farewell CP. We will... Not exactly miss you, but, you know.

</comment><comment><USER29> My son used to love CP, played off and on until I introduced him to Garry's Mod.

<comment><USER22> What does your son do with GM? Seriously interested.

<comment><USER29> He's been playing for 5 years now, so he's a mod on a few servers. He started out building simple things, then progressed to wiremod within a couple of weeks. It wasn't long before I couldn't keep up with him when I tried to check out what he was building. He used to build cars/vehicles (mostly from scratch, not using car models) and add them to the workshop, think he has a couple dozen in there. Now he mostly camps on servers and chats with friends (online friends), warns and kicks players when he gets reports, that sort of thing.

</comment></comment></comment><comment><USER30> Is the death of Flash causing problems for them? Unless something I'm unaware of happened, the entire client is still built in it.

I would guess it was their reliance on Flash which motivated writing a new mobile version.

<comment><USER31> Yeah, I'm sure that played a significant role. It's getting harder and harder to run Flash these days. My understanding is that some browsers require a fairly complex, multi-window process to add a domain to the Flash whitelist, and that this is only going to get worse, culminating in Flash's complete removal over the next 1-2 years.

They likely decided that moving to mobile-only and abandoning the desktop market was better than trying to write a WebGL/HTML5 compliant client.

<comment><USER32> Is there a good way to preserve and run flash content as we move into this brave new flash-free world, with good long-term prospects? At least the stuff that doesn't require a server component?

Lots of cool stuff from the mid-period Web was flash. All of Homestarrunner, obviously. Thousands of games. JibJab was (is?) big, and IIRC their early stuff was Flash. Various animated shorts of varying character and quality (remember when Stickperson Fight animations were big? The best were usually in Flash)

<comment><USER5> I haven't tried the Gnash player in a while (years), but when I _did_ try, it was pretty promising for playing swf files that were just animations. A lot of them have also ended up as rendered video on places like Youtube.

</comment></comment></comment></comment><comment><USER33> My daughter used to love Club Penguin. This story gave me a bit of a nostalgia hit. Especially the image of the final party town centre with the big two- penguin picture.

</comment><comment><USER34> My son played a lot of Club Penguin when he was younger. Now my daughter is playing Animal Jam instead.

</comment><comment><USER35> Nooo!!!! My childhood!!!!!

</comment><comment><USER36> Aww. Too bad.

</comment><comment><USER37> Damn no more trolling

<comment><USER38> You were trolling 10 year olds? Really?</comment></comment>


Cashless Society: Security Considerations for a Chinese Social Credit System - <AUTHOR> https://citizenlab.org/2017/01/cashless-society-cached-data-security-considerations-chinese-social-credit-system/ <comment><AUTHOR> also: [https://citizenlab.org/2017/01/cashless-society-cached- data-...](https://citizenlab.org/2017/01/cashless-society-cached-data-mobile- payment-systems-protecting-chinese-citizens-data/)</comment>


Ask HN: Discuss my library: Canny a lightweight authorization Engine in Java - <AUTHOR> http://github.com/eltados/canny

<comment><AUTHOR> What do you think about this?</comment>


Economics in One Lesson - <AUTHOR> http://jim.com/econ/

<comment><USER2> This was required reading in my Econ 101 Class.

A must read. However, a caveat: this book, along with Carl Menger's Principles of Economics, will turn you into what some might call a "[Ron] Paulite".

Then again, some see that a term of endearment. ;p

<comment><USER3> This book will make you an Austrian: that will make you a Paulite ;)

This should be required reading for everyone, considering our current economic situation.</comment></comment>


Mysterious Cosmic Rays Shooting Out of Antarctica Could Break Physics - <AUTHOR> https://motherboard.vice.com/en_us/article/d3jdmk/mysterious-cosmic-rays-shooting-from-the-ground-in-antarctica-could-break-physics <comment> java-man oh no, it's my favorite science!</comment>


Show HN: Play online Microsoft Flight Simulator 1 to 4 - s-macke https://github.com/s-macke/FSHistory <comment><AUTHOR> I have an old hack for FS1 that added CGA color on IBM PC. I wonder if they would like it.

</comment><comment><USER2> Fantastic! I made it between the antennas on the tall building!

<comment><USER3> Same. I recall being a kid playing this... take off, buzz the Sears Tower, fly between the antennas, try to land and crash horribly. This replicates that experience perfectly!

</comment></comment><comment><USER4> Uh how do you get function keys on the new iPad Pro floaty keyboard thingy?

Honestly I don't know why for the love of god apple hasn't included a full keyboard complement

<comment> s-macke The simulator uses almost all keys of an IBM keyboard, including the scroll lock key. I guess there is no chance on your iPad to have a pleasant experience. At least you can press the given keys on the right side. Enough to play around.</comment></comment>


Ebola is 'entrenched and accelerating' in West Africa - <AUTHOR> http://www.bbc.com/news/world-africa-29563530 <comment><USER2> There seems to be a big problem with innumeracy in responding to this epidemic. The number of ebola cases is doubling every 15 to 20 days. I guess people don't "get" exponential growth. Otherwise how are there so many statements about resource needs without a time tradeoff mentioned? Liberia needs about 3000 beds today to isolate patients, but only has about 600 currently. The US is helping to build more treatment centers totalling about 2000 more beds... but on a 5-12 week timeframe (to accomodate using Liberian engineers and local resources). In 5 weeks, the need will be for around 12000 beds! Do the leaders just not get the math? Or how else isn't the answer "do it the fastest way possible and nevermind who gets slighted or misses their cut of the business"!

<comment><USER3> It's not about helping, it's about making a political statement. I can buy pink gear from Susan G Komen and everyone will think I'm wonderful for it, even though Komen is one of the worst cancer charities you can give money to. A politician can vote to build a number of beds that sounds great to voters, but also gives kickbacks to their friends and doesn't actually do anything because doing something costs real money.

</comment></comment><comment><USER4> What strikes me odd about the Ebola problem is this seemingly fear to do anything about it. With SARS we had many countries preventing people from traveling, we had border checks, and the restrictions affected air travel.

Yet Ebola while not airborne is far deadlier, so where are the travel restrictions? Is there some PC element to this, or is there some fear of perceived over reaction? Considering two recently publicized cases involved people who should have known better (if not the organizations they are part of) screwing up how are we to deal with people who don't know better understanding the signs and risks?

<comment><USER5> Africa is a continent that the Western, mostly-white-run world has an incredibly troublesome history with. I suspect this is giving us (in the US) internal fits when we try to decide what to do. Almost anything short of sending direct aid makes it look like we are abandoning them and sending direct aid looks suspiciously like a military invasion (because we'll be sending armed troops).

We haven't even figured out how to "deal with" black people here in the US and those guys over there, well, they're _foreign_ black people.

<comment><USER6> You wrote: ___" We haven't even figured out how to 'deal with' black people here in the US..."_ __

That 's an absurd statement. The US has an African American president. He was elected twice by a large majority.

<comment><USER7> I doubt mr Obama is at all African, he was born in Honolulu for crying out loud. All this crap with African-American is annoying and needs to stop. You don't call white citizens European-American, do you?

<comment><USER8> "I doubt mr Obama is at all African"

<Baracks> father, Barack Obama, Sr., was a Luo from Nyang'oma Kogelo, Kenya

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

</comment></comment></comment></comment></comment><comment><USER9> Some very interesting things are going to happen in international politics over the next six months, driven by Ebola. And I use the word "interesting" in the same way as it's used in the curse "May you live in interesting times"

I think by early next year it'll become obvious that we're going to lose millions of folks to the disease. What remains unknown is what the containment ability of western societies are. R is overall around 2, but in Europe maybe it's just .2 -- or maybe 1.2. The difference between those two numbers has staggering implications for the future of many societies.

I also do not believe that some sort of massive intervention would work to contain Ebola in Africa right now. Mathematically, yes, you can make the numbers work to show that a huge intervention could contain it. But practically? Not happening. The world is heading down this road whether we're prepared for it or not.

<comment><USER10> I read some senator wants to hold up the US investment for helping out in Africa for political reasons. I suppose there are no voters in Africa so why spend money there. Not in my back yard often goes both ways. People are dying in Africa, why should we care. Of course this is a world problem but politicians seem unable to grasp that.

<comment><USER11> It's a nice idea to only repeat things like that if you can find some decent source for it. Here's one:

[http://www.reuters.com/article/2014/10/09/us-health-ebola- us...](http://www.reuters.com/article/2014/10/09/us-health-ebola-usa-senator- idUSKCN0HY27L20141009)

(Well, I think it's useful to provide a source for something like that, it cuts at least 1 step out of the game of telephone that may ensue.)

</comment></comment></comment><comment><USER12> I hate to be negative, but really I expect a little better from the BBC on a story as serious as this. Do we really need an interactive photo of someone in an "ebola suit" with such informative labels you can click on that say things like "boots" or "goggles"?

<comment><USER13> Yes we do need these things, as here in spain they have cut all spending on hospitals, to the level of having simple "supermarket fruit section gloves" when working with patients. Its really fu __ __up and the government, are trying to hide it by saying they are ready etc etc etc. There is not a single public hospital in spain that is technically able to handle the virus, as they dont have the level of isolation units necessary.

<comment><USER14> It's telling that that hospital's infectious disease ward was closed a few months before, e.g. see [https://www.thespainreport.com/11651/spains-health- minister-...](https://www.thespainreport.com/11651/spains-health-minister-ana- mato-must-resign/) which echoing other reports says, quoting someone, it was reopened " _in a rush, urgently and at top speed_ ".

</comment></comment></comment><comment><USER15> I read a book about Ebola in West Africa 20 years ago or more ago so "entrenched" is very old news and "accelerating" is last month's news.

<comment><USER14> It's zoonotic ([https://en.wikipedia.org/wiki/Zoonosis](https://en.wikipedia.org/wiki/Zoonosis)), and in fact rather poorly adapted to humans (kills us way too often and quickly, one big danger from this outbreak is that less lethal strains will develop).

So it was "entrenched", or, rather, endemic in we guess fruit bats, the index case was a child in a household where some "bushmeat" was butchered, but not, until now, in human populations.

Note this is believed to have started with one child who died on December 6th, 2013. Exponential growth since then, and nothing specifically foreseeable is going to change that any time soon.

ADDED: if you assume, as many do, there are about 20,000 cumulative infections as of now, that equals a doubling rate of 3 per week ([http://www.doubling- time.com/compute.php?lang=en](http://www.doubling- time.com/compute.php?lang=en)), which also matches some other estimates I've seen.

</comment></comment><comment><USER16> I was down-voted last time for this,but Please share this Ebola awareness poster. [http://bit.ly/1vF1COO](http://bit.ly/1vF1COO)</comment>


Corrupted Blood Incident - <AUTHOR> http://en.wikipedia.org/wiki/Corrupted_Blood_incident

<comment><USER2> I was around for this. It was amazing fun. It really made the world (of warcraft) feel more.. alive somehow. You'd do everything you could to avoid infected players, I'd only play on an alt since my main was parked in Stormwind when the epidemic broke. I just stayed hidden away in the more obscure levelling zones and survived. It's a shame stuff like this doesn't occur more often, it really adds flavour to the game.

<comment><USER3> >It's a shame stuff like this doesn't occur more often, it really adds flavour to the game.

I'm not sure. WoW as of today looks like it's engineered to avoid the slightest inconvenience or annoyance to players. :P

<comment><USER2> Oh I absolutely concur, I came back for WoD.

LFR, LFG, bonus loot rolls, facebook minigame of garrison management, Bind on Account for all pets, mounts and Heirlooms.. Heirlooms themselves.

It is definitely far more casual than it used to be. I'm not going to whine, I understand the game needs to play to the market and I'm not going to pretend I enjoyed having to find a group in a chat channel, run to the actual instance and then grind away about an hour for resurrecting and loot squabbles that existed before LFG and Personal Loot, some of the changes are great. I suppose I'm also older and 'wiser' now (At least busier, with a 9-5 and whatnot), so this new style of WoW suits me, I can't just stay up all night playing like I used to.

</comment></comment></comment><comment><USER4> I was playing WoW when this happened and witnessed it.

They call it "abusing game mechanics" now, but personally I find the act of discovery of this sort of thing possibly the most fun aspect of games. WoW was particularly vulnerable because of the raw complexity of mechanics introduced in a short timespan.

See: Gamesmanship vs. Sportsmanship

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

There was another time in WoW when a mage soloed a raid by discovering they could use spellsteal to steal invulnerability buffs off of bosses. (Hey... that's what it says on the tin, right? "Spellsteal"? ;) ) Anyway... That got patched. ;)

I remember playing Neverwinter Nights 1 and somehow I was able to squeeze 1 more weapon enchant than was supposed to be possible, onto my weapon, without cheating. My monk became pretty OP :)

<comment><USER2> I remember in Vanilla as a mage you could make yourself completely immune to the damage that Air Elementals caused in the Blackrock Mountain area (I think? I don't remember specifics, this was a good 9 years ago or so), and so could farm highly sought after crafting mats in bulk. Nobody got banned AFAIK, blizz just quietly patched it and moved on. I agree that some of the most fun things in WoW were unintended (Twinking, exploration, GM Island etc), it's a shame they're so much more against it these days.

<comment><USER4> I'll never forget the day I got an escort to Ironforge from Menethil Harbor. It was a walk that took close to an hour, as nobody had mounts then. I was a lowbie night elf from Darnassus, before it had an auction house (or flight paths, for that matter), and I needed to see it! But the areas we'd walk through were dangerous, so someone nice volunteered to escort me. I wish I could meet that person IRL and buy them a beer. ;) And then... finally walking up to and through those gigantic doors... it was pretty amazing. I still think IF is my favorite city in that game.

Another time, someone showed me how to get to the top of Ironforge. That too was amazing. Sort of meta-gaming!

</comment></comment></comment><comment><USER5> I wonder if this was possible in Second Life, and so a disease could actually be engineered by a player.

That would be pretty interesting.

I don't know much about Second Life, though--I'm not even sure if you could die.

<comment><USER6> Well, it's been years since I last touched SL. But last I checked it was really easy to make infinitely self replicating items that would end up completely filling up, and eventually crashing sims.

Something like this, [https://youtu.be/YCc0hDuQt3w?t=72](https://youtu.be/YCc0hDuQt3w?t=72)

</comment></comment><comment><USER7> I remember this. I don't recall specific chats, but I remember it being complete mayhem, some people not understanding what was happening to them, some intentionally inflicting it on others and some understanding it and getting away from everyone. I thought it was pretty funny at the time and then recall that some group was studying it for the parallels of an epidemic in real-life. Pretty interesting!

</comment><comment><USER8> a freeform mmo with an economy like EVE might be able to swing user-created viruses with user-manufactured cures...

<comment><USER9> I think it would actually be really hard. In game lore, capsuleers can't meet in stations because decontamination is insufficient. Capsuleers already have compromised immune systems as a result.

Not to say it couldn't be made to work, but I highly suspect it'd just result in a pandemic that perma-deaths the player base. Could be handy if you could dope a capsuleer with a debuff though, like a stim with no upside. (Maybe pay off an NPC corp for the subterfuge?)

</comment></comment><comment><USER10> Cool when an artificial world takes on a life of its own</comment>


Minimalist Cocoa programming (2010) - <AUTHOR> http://www.cocoawithlove.com/2010/09/minimalist-cocoa-programming.html

<comment><USER2> This reminds me of a very short-lived wave in Windows application development. Application bloat was deemed to be endemic, and frameworks like Microsoft's MFC certainly didn't help. So alternatives were sought. For some, just using bare W32 in C/C++ or with some minimal wrappers (Microsoft did have an STL=ish ones, IIRC) was enough. But a surprisingly large community started developing apps in assembly!

Not sure how much of that is still available. But due to and early Palm devices, assembly had a short-lived renaissance and (small) size was important.

Nowadays? Well, what's the average size of an iOS/Android app?

<comment><USER3> > Nowadays? Well, what's the average size of an iOS/Android app?

Depends. Sometimes you see apps which pack a ton of features and a killer UI under 10 MB; and sometimes you have apps that are barely more than web view wrappers go take a few hundred MB's because they pack useless intro movies and ridiculously large assets.

</comment></comment><comment><USER4> That horizontal scrollbar...

</comment><comment><USER5> Nice to see some Mac dev articles on HN :)

</comment><comment><USER6> No longer brings up a menu in 10.9.5.</comment>


Ask HN: What's the most black hat hack you did as a young child? - <AUTHOR>

Just because these always make me laugh. <comment><USER2> 2008, 15

Hung out in a private IRC channel where gamehackers resided, guys who made cheats for valve games. A few of us exploited websites (complete skids, just downloaded shit off milw0rm). Not too exciting a story, but one of the guys links me his injected c99 shell to some site, and then links me their directory of plaintext databases that include CC's and tons of info burried into some stupid generated path like a/w/da/w/r//13/g3/g/g/3/g1/g1/3ga/g/s/g/<csv files>.

Turns out all they did was parse this shit with a PHP script from their form over HTTP. I emailed them this story. 3 weeks later police raid my house, I give them every email I know of from the hackers I knew, and they spent hours meticulously disassembling every part of my computer and filing it in these special plastic bags and boxes. Then my Dads computers, and my Mom's. And all our laptops/tablets.

The only scary part was when the cops picked me up in an unmarked van to take me home to open the door for the agents or whoever they were. They asked me one question, "when you're ready, tell us what you did". Obviously being 15 I'm shitting my pants and just start ratting myself out for the next 15 minutes until we got home, and even then I had no idea what the fuck I did until it dawned on me. Cops probably tell this story to this day.

Goodbye $15k~ which I'm still on the hook for from my parents. Yet to hear back from the police.

I still have no idea what the fuck happened.

</comment><comment><USER3> ~2008,~15.

I was interested in building websites and after my curiosity getting the better of me, I ended up playing with SQL injection. Instead playing with my own websites, I thought it would be more fun to find the same vulnerabilities in other sites.

You can imagine my excitement and disbelief when one of the largest online DVD retailers in the world ended up spitting out over 600,000 records complete with SSN, full name, address, credit card number/expiry/CVV, email. Among these records I found the information of a certain female CEO of the world's 2nd largest food and beverage company (or someone pretending to be her). Of course, about 70% of these were expired, but I was just curious. I had no intent to use them (okay maybe a little itch).

My excitement quickly turned into fear as I realized the legal implications of such a feat. And against my better judgement, I contacted the company and let them know about the vulnerability.

Fortunately, after warning me that they would use the law to its full extent in punishing me if they ever found those records leaked/used, they left me alone.

Around that same time I also compromised various government departments of South Asian countries (think Indonesia, Malaysia, etc). But they never replied when I notified them.

Still scares me to this day.

</comment><comment><USER4> ~2007 / 15 years old

I wrote a script that allowed me to create a Google account with the IP address of a visitor to my website, all without them knowing. All I had to do was open the registration page with a server side script, download the CAPTCHA, display it to the user and ask them to fill it out. When they filled it out, the submitted form targeted the Google registration form in a 1x1 iFrame, then another button targeted the logout form. Google was not checking the referrer of the sign up form, nor was it comparing the IP address that received the CAPTCHA to the one that submitted it.

I had a friend load that script into thousands of generated blogspot blogs, which got long tail google traffic and asked the user to "fill the CAPTCHA to continue." The script ran for ~2 weeks and generated ~60000 Google accounts all from unique IP addresses.

That was around 2007, so obviously it's all patched up by now. I was 15 years old and never did anything with the accounts, so if anyone from google is reading this, keep the lawyers away from me please.

Blackhat SEO actually has a lot of clever tricks. I haven't been part of that space in a while, for a lot of reasons, but I can attribute 99% of my knowledge of marketing to time spent trawling through blackhat SEO forums reading not only about that, but also landing page optimization, conversion tracking, copywriting, etc. It was definitely a worthwhile learning experience for me.

</comment><comment><USER5> A friend and I in our early teens would purchase games for our C64 computers. This was a time before store return policies prevented getting your money back. The games were always on 5-1/4" floppies. We would attempt to crack the copy protection via purchased cracking software, or our own cobbled-together scripts. We wanted a copy for ourselves. This would usually work, and we would then return the game, with some lame excuse like "we bought the wrong one".

Sometimes, we couldn't crack the game. As a last resort, we would gently peel the game sticker off the store floppy, and glue it on an blank floppy. We would go back to the store, and say "uhh...this game doesn't work". They would give us our money back - rarely with any resistance.

We would then walk to the game section and pick out another game.

Muahahah.

<comment><USER6> Back in my C-64 days we had software rental stores. We could go in and rent the latest C-64 games and tinker with floppy disk copiers until we could crank out working copies. Or we'd swing by a friend-of-a-friend that must have been an early warez distributor and see what he had that was new.

</comment></comment><comment><USER5> For my other stunt (see my "C64" post also on this page), I got in early to the library room in 5th grade (1983). They had 20 or so Commodore PET computers for us to use to learn from. The teacher was going to have us play Oregon Trail and had already preloaded the game into the memory of all the machines.

A simple LIST of the program revealed the supplies you had available. Another command to update the line (lines?) of code to change supplies (Oxen becomes Monkeys, Bullets becomes Bubble Yum, you get the idea).

Once we all started playing, the confusion and giggling ramped-up pretty fast. It didn't take long for the teacher to figure out the perpetrator. It was the first time I had to stay after school.

<comment><USER3> Man, my elementary had those old Apple computers back when the logo was rainbow coloured, and only the librarians got to touch them...

Mind you this was only in ~2000 and I didn't get to touch a computer for the first time years later.

<comment><USER7> Mid 1990s, my elementary school had an entire room of Apple 2 computers. I loved playing around on those things every Friday.

</comment></comment></comment><comment><USER8> 2004 / age 14 I discovered an exploit on the GameFAQs message boards that allowed me to use HTML in topic titles. I just used this to post some topics with images as titles, instead of looking for SQL injections.

That same year I obtained every student's social security number from my school's database, though I didn't write them down. I never told the school about their massive security flaw because I was afraid I would get in trouble.

</comment><comment><USER7> Is it black hat to write a program to cheat on tests? Because I wrote a program on a TI-84 for my Algebra courses in high school (2006-2008) that ran the quadratic equation for me. And then I expanded it for my AP Physics course to take care of solving every equation I needed, from Newtonian motion to thermodynamics.

</comment><comment><USER9> I borrowed my classmate's TI-83 PLUS calculator and archived all his variables.

</comment><comment><USER6> ~1985 on a 12-user TRS-80 Model 16 running XENIX:

        cat > /dev/ttyNN

and drive other students nuts with seemingly random stuff appearing on their screen.

I don't remember even knowing there was a root account or /etc/passwd then and I was too busy trying to learn enough vi to get my COBOL programs done. The things we endured to get to take "the computer class" at school.

</comment><comment><USER10> When I discovered smtp I sent mail to people from firstname.lastname@example.com telling them they were very naughty this year and to expect coal in their stocking.

<comment><USER11> email@example.com here.

</comment></comment><comment><USER12> 14/15\. French Lessons (didn't like French). Spent about 6 weeks building a program that listened for instructions and ran windows binaries for lock/logout, or moved the mouse randomly across the screen.

Ran the program on teachers PC when she wasn't looking, ran the client on my PC, spent the next hour confusing the teacher.

</comment><comment><USER13> I reverse engineered a teacher's password in middle school because the teachers' logins had access to Doom on the school computers. The IT monitor noticed me playing after a few days and I was banned from the IT lab for the rest of the year. (4 weeks or so, if I remember right)

</comment><comment><USER14> ~2000 ~15

Hacked the schools computer system during school hours and had access to ALL passworts of every pupil and teacher in IT courses. Access to the admin account was saved in a file on the networkserver you would normally not have access to...

</comment><comment><USER15> age 13, wrote batch scripts that could A) open up a command prompt window that otherwise was restricted and B) turned off monitor software that allowed teachers and librarians to watch what someone was doing on a computer.

The only reason I was caught was because I complained to the sysadmin about disk space and she looked up my account and happened to spot .bat files and she came in and confronted me during a class and I became the youngest student to be put on the permanent wall of shame for technology violations which was usually reserved for students who look up porn.</comment>


How Wild Was Wild Bill Hickok? - <AUTHOR> https://www.nytimes.com/2019/02/14/books/review/tom-clavin-wild-bill-biography-james-butler-hickok.html <comment><USER2> The legend in my family was never really that he was that wild -- he's my first cousin ~five times removed.

The story told over and over again when I was growing up was of his death, shot in the back playing poker with his back to a window. He normally refused to sit with his back exposed, and it was used to remind us to be careful and not let us be tempted into doing something rash. The effect? I was mildly uncomfortable sitting with my back to a window in a restaurant into my 20s, and would avoid it if convenient.

Though lots of people have "heard of him", no one I've ever met can be specific about what he did or who he was, other than part of the "old west". The lasting impression he's left on the modern world seems to be the dead man's hand -- [https://en.wikipedia.org/wiki/Dead_man%27s_hand](https://en.wikipedia.org/wiki/Dead_man%27s_hand) \-- a term commonly associated with the hand he was (possibly apocryphally) holding at his death since the 1920s.

<comment><USER3> Not related (as far as I know) to Wild Bill, but I lived for several years in Springield MO, just blocks from the square where he famously shot Dave Tutt. The evening I proposed to my (now) wife, I had some mutual friends "kidnap" her, and take her to the square. I showed up and dueled them with our cap guns, "re-enacting" the famous gun fight... rescued her, and the rest is history as they say. In those parts, there are many that still know a lot about Wild Bill.

<comment><USER2> That's fun to hear, thanks.

</comment></comment></comment><comment><USER4> He could fire off 10 shots because he was ambidextrous. Revolvers are carried with the hammer down on an empty chamber lest they go off accidentally and put a big hole in your leg

<comment><USER5> Yeah, the fact that he mentions shooting 6 shots is pretty iffy on this historical account. There are stories of him knowing he was about to go out to a gunfight and preparing his guns and bullets, so maybe he loaded up six shots and was very careful while transporting his pistols

Here's a good video explaining why people would load post-Civil War single action revolvers with 5 shots instead of 6: [https://www.youtube.com/watch?v=ldHPNnsp- cs](https://www.youtube.com/watch?v=ldHPNnsp-cs).

<comment><USER6> Wasn't aware they could accidental fire that easily! That sounds like a massive design defect.

<comment><USER7> Theres reasons. One, we just sorta didn't know. In less than 100 years we went from single shot flintlock pistols to repeating revolvers; we were still figuring a lot of things, like safety, out. Modern revolver lockwork would take a few more decades.

Even today, in a world of very high quality modern firearms, safety issues arise. The Sig 320 - now the M17 service pistol of the US Army - had a problem where if dropped just so, it could discharge. It was kind of a scandal; modern firearms are incredibly safe to handle, compared to even 30 years ago. Consider that in the 60s it was not unheard of for pistols to require the user to pull the trigger as part of operating the decocker mechanism. Insanity to modern eyes.

Anyway, firearms at that point were kinda new. We didn't know what "safe" really meant, we didn't do things like drop tests, we lacked the material science to make carefully heat-treated components, we lacked the manufacturing ability to make the sorts of small, high quality components we use today ... it wasn't a design defect as much as we didn't have the science and understanding.

<comment><USER8> Modern revolvers don't have the "striking the hammer can discharge the round" because they now use a hammer bar. You can load all the chambers without fear of this happening. You may be surpised to learn that all modern revolvers require pulling the trigger and thumbing the hammer down, as do the very popular 1911 pistol and it's many clones. It should be noted that modern revolvers don't have a safety. A large majority of striker fired pistols don't have a traditional safety either.

</comment></comment></comment></comment></comment><comment><USER9> I saw another review sometime last week and did a little research.

There was the series Deadwood on HBO, which included him for a couple years. And there's a hand in poker which is based on his last hand.

[https://en.m.wikipedia.org/wiki/Dead_man%27s_hand](https://en.m.wikipedia.org/wiki/Dead_man%27s_hand)

</comment><comment><USER10> We visited Deadwood last summer. There is a private museum I can recommend. Town seems similar to my imagination with horses replaced with Harleys. Gambling is legal. I asked my wife, 'I wonder where are the whore houses?'

</comment><comment><USER11> If I remember correctly, he is featured in the amazing Thomas Berger novel 'Little Big Man'.

Many colourful characters of that period is vividly portrayed in the movie "Tombstone", especially Val Kilmer as Doc Holliday. The film has a certain gravitas that is missing from more recent studio big-budget movies.

</comment><comment><USER12> Wow.. And to this day, his name precedes him..

[https://www.youtube.com/user/hickok45](https://www.youtube.com/user/hickok45)

Now I'll have another mental image of a man once I also hold a Mossberg 500.</comment>