Hacker Newsnew | past | comments | ask | show | jobs | submit | 2014-10-18login
Stories from October 18, 2014
Go back a day, month, or year. Go forward a day, month, or year.
1.Thoughts on Startup School (daemonology.net)
318 points by cperciva on Oct 18, 2014 | 120 comments
2.What we give away when we log on to a public Wi-Fi network (decorrespondent.nl)
262 points by ricksta on Oct 18, 2014 | 110 comments
3.Building the Largest Ship in the World (alastairphilipwiper.com)
241 points by taytus on Oct 18, 2014 | 68 comments
4.BeeFree email editor (beefree.io)
211 points by massiarri on Oct 18, 2014 | 52 comments
5.Doctors Tell All, and Itโ€™s Bad (theatlantic.com)
216 points by ivank on Oct 18, 2014 | 123 comments
๐Ÿ“š. Honda Needs a Tune-Up (davidsd.org)
22 min read | by davidsd.org | saved 108 days ago | archive
6.An Author Confronts Her Number One Online Critic (theguardian.com)
150 points by pepys on Oct 18, 2014 | 45 comments
7.Functional Programming in JavaScript: A Collection of Hands-on Exercises (jhusain.github.io)
144 points by AllThingsSmitty on Oct 18, 2014 | 45 comments
8.The Gentleman Who Made Google Scholar (medium.com/backchannel)
119 points by soundsop on Oct 18, 2014 | 12 comments
9.Your language sucks (damore.org)
109 points by zdw on Oct 18, 2014 | 127 comments
10.A difficult lock to pick [video] (youtube.com)
110 points by bane on Oct 18, 2014 | 25 comments
๐Ÿ“š. Training the Idea Muscle (sfalexandria.com)
10 min read | by Aadil Pickle | saved 70 days ago | archive
11.Thatโ€™s me in the picture: Kevin Berthia on the Golden Gate bridge (theguardian.com)
110 points by sssilver on Oct 18, 2014 | 4 comments
12.Sorry but not sorry (aeon.co)
106 points by bsbechtel on Oct 18, 2014 | 10 comments
13.SSLsplit โ€“ Transparent and scalable SSL/TLS interception (roe.ch)
103 points by shayanbahal on Oct 18, 2014 | 34 comments
14. [dupe] Google Material Design Icons (github.com/google)
105 points by jonaslejon on Oct 18, 2014 | 22 comments
15.For a Better Brain, Learn Another Language (theatlantic.com)
105 points by diodorus on Oct 18, 2014 | 52 comments
๐Ÿ“š. The Microstructure of Wealth Transfer in Prediction Markets (jbecker.dev)
13 min read | by Jonathan Becker | saved 46 days ago | archive
16.Cops Need a Warrant to Grab Your Cell Tower Data, Florida Court Rules (wired.com)
98 points by diafygi on Oct 18, 2014 | 13 comments
17.Towards Reliable Storage of 56-bit Secrets in Human Memory [pdf] (usenix.org)
101 points by gwern on Oct 18, 2014 | 39 comments

I'll give this a shot. I'll try to explain what's in my mind as I read it as well.

First, get out the reference manual: http://kparc.com/k.txt and we'll do the first couple lines.

The sequence that goes f x applies x to f. this f is unary.

The sequence that goes x f y applies x and y to f. this f is binary (and just labelled verb).

Some things (adverbs) go f a x and apply f in some special way to x.

Last hint: You read this code from left to right (like english). Do not scan it.

Now let's dive in:

    c::a$"\n"
This says: c is a view of where a is a newline. That is, if "a" contains a file, then c is the offsets of each newline.

A view is a concept in k that is unusual in other languages: When "a" gets updated, then "c" will automatically contain the new values. This is similar to how a cell in Excel can refer to other cells and reflect whatever the value of those cells happens to be.

    b::0,1+c
This says: b is a view of zero join one plus c. That is, where "c" contains the offsets of each newline, 1+c would contain the beginning of each new line. We joint zero to the beginning because of course, the beginning of the file is also the beginning of a line.

    d::(#c),|/-':b
This says: d is the view of the (count of c) joined with the max reduce, of each pairs difference of b. That sounds like a lot, but "each pairs difference of b" (where b is the position of all the new lines) is also the length of each line, and the max reduce of that is the longest line. You might say that "d" is the dimensions of the file.

    i::x,j-b x:b'j
This says: i is a view of x (?) joined with j (?) minus b (the offset of the beginning of each line) applied to each x which is defined as the bin of j in b.

j hasn't been defined yet, but you can see that x is defined later in the definition, and used to the left. This is because K (like APL) executes from right to left just like other programming languages. you write a(b(c(d()))) in C and you're executing the rightmost code first (d) then applying that leftwards. We can do this with anything including definitions.

The other string thing is that we know that b is the offset of the beginning of each line, and yet we're applying something to it. This is because k does not distinguish between function application and array indexing. Think of all the times you write in JavaScript x.map(function(a) {return a[whatever] }) when you'd really just like to write x[whatever] -- k let's you do this. It's a very powerful concept.

On that subject of binning: b'j is going to find the index of the value of b that is smaller or equal to j. Since we remember that b is the offset of the beginning of each line, then if j is an offset in the file, then this will tell us which line it is on(!)

But we don't understand what j is yet; it's the next definition:

    j::*|k
This says: j is a view of the last (first reverse) of k. We don't know what k is yet.

    f:""
This says: f is defined as an empty string.

    g::a$f
This says: g is a view of the offsets of f (an empty string) in a. Initially this will be null, but other code will assign to f later making g a value.

Next line.

    s::i&s|i-w-2
This is very straightforward; & is and, and | is or. While excel doesn't let us use a cell in it's own definition, k does: It means the old value of s. So this is literally: the new view of s is i and the old view of s or i minus w (?) minus 2.

We don't know what w is yet.

    S:{s::0|x&d-w}
This is a function (lambda). x is the first argument. If we called S[5] it would be the same as setting s to zero or 5 and d (dimensions) minus w. Double-colon changes meaning here; it no longer means view, but set-global.

    px:{S s+w*x}
This requires some knowledge of g/z: http://kparc.com/z.txt

Note that px is defining a callback for when the pageup/pagedown routines are called. x will be 1 if we page down and -1 if we page up. It may now become clear that S is a setter of s that checks it somehow. When we understand what w is (later in the program) it will be absolutely clear, but pageup/pagedown are changing s by negative w when pageup, and positive w when pagedown.

    wx:{S s+4*x}
Consulting the g/z documentation, we can see this has to do with wheels. Note we modify s again relative to 4 times x; x is -1 when wheelup and 1 when wheeldown. It becomes clear that s is modified by the pageup/pagedown and the mouse wheel.

    cc:{9'*k_a}
Again: in the documentation, 9' stashes something in the clipboard. cc is a function that takes the first slice of offsets k (we still don't understand) in a (the file). The g/z documentation says that cc is the callback for control-C. This is expected as control-C traditionally copies things to the clipboard. Since the slice of offsets k in a are being saved in the clipboard, we may guess at this point that k will contain the current selection.

This process is time consuming, but it is to be expected: Learning english took a while at first, and often required consulting various dictionaries. Eventually you got better at it and could read somewhat quickly.

I don't know if you want to try the next few lines yourself to see if you can get a feel for it, or if you want to try one of the less dense examples:

* http://www.kparc.com/$/view.k * http://www.kparc.com/$/edit.k

... or if you want me to keep going like this, or if you want to ask a few questions. What are your thoughts?

19.How to Build and Use a Multi GPU System for Deep Learning (timdettmers.wordpress.com)
79 points by rbanffy on Oct 18, 2014 | 6 comments
20.Everything You Need to Know About Cooking with Blood (good.is)
84 points by juanplusjuan on Oct 18, 2014 | 36 comments
๐Ÿ“š. Productivity advice (zhengdongwang.com)
40 min read | by Zhengdong Wang | saved 62 days ago | archive
21.A Conversation with Arthur Whitney (2009) (acm.org)
78 points by radicalbyte on Oct 18, 2014 | 16 comments
22.Gnome developer creates new animated image format (mecheye.net)
88 points by powerbook5300CS on Oct 18, 2014 | 36 comments

The sad truth is that this is due to a variety of problems at a variety of levels. Of course, all that follows is highly dependent on the team, hospital, and location.

A the lowest-level, you have doctors who're just assholes. Unfortunately, they don't do a good job at filtering out abrasive personalities upon entry to medical school. In fact, I'd say in some ways they self-select for that type of person. I've worked with heads of departments at huge hospitals who've openly discussed their salaries with me in patient rooms or brushed off a patient's concerns in a condescendingly paternalistic manner only to laugh with colleagues about it the second they step out of the patient's room. I've argued many times with specialists running their own clinic about their exorbitant fees and clever ICD-coding skills -- that some brag about developing -- to squeeze every penny out of insurers, all justified by "we've got to make a living." Assholes in medicine run rampant.

Up one level and you have the sheer morbid nature of medicine that physicians deal with on a day-to-day basis. I've given chest compressions to trauma patients with self-inflicted gunshot wounds to the head, and cleaned maggots out of a patient's festering diabetic foot. To the outsider, it is all incredibly shocking and gruesome, but as a physician you grow callous to it. Unfortunately, many times that means growing callous to all emotions and stunting your ability to empathize. Mix that with a superiority complex and you get things like Hispanic Hysteria Syndrome.

Go up a level and you've got a huge logistical and resource problem. Hospital physicians, particularly residents at teaching hospitals, are often overloaded with responsibilities and patients. They often feel they cannot give every patient and every obligation full and thorough attention because they are being bombarded by pages for new admissions, calls from other staff, etc. I have seen residents breeze through a list of patients, only giving minimal attention to each, just to avoid being chastised by a superior for not fulfilling all responsibilities in the short time allotted. And when you are severely limited to the number of open beds you have, and you've got a crowded ED, it becomes a game of who can we push out the fastest without killing.

At a higher level, you have a hospital who needs to keep the lights on, needs to pay salaries, needs to maximize profits and yet treat patients as best as they can. Unfortunately, many hospitals are being swindled by suppliers who're working through group buying organizations [1], inflating costs and making it difficult for hospitals to hit their margins.

There's a lot more I could go on about.

24.Thinking Functionally with Haskell โ€“ย Richard Bird's New Book (amazon.com)
73 points by lisptime on Oct 18, 2014 | 14 comments
25.NSA reviewing deal between official, ex-spy agency head (reuters.com)
76 points by r0h1n on Oct 18, 2014 | 32 comments
๐Ÿ“š. People Are Worried About Blue Owl Liquidity (archive.is)
16 min read | by Matt Levine | saved 2 hours ago | archive
26.Prospector: Python Static Analysis for Humans (landscape.io)
72 points by doismellburning on Oct 18, 2014 | 21 comments
27.Your Hacker News history visualized (gnod.com)
67 points by mg on Oct 18, 2014 | 16 comments
28.Webmail and Open Source (whiteout.io)
67 points by bpierre on Oct 18, 2014 | 26 comments

Colin: I'm sorry we didn't deliver what you needed.

YC's goal in selecting Startup School participants is to get a mix of deeply technical people and popularizers. The combination of those two skill sets makes a great startup.

When I saw you at Startup School I was like, "Hey, it's cperciva! Maybe he'll find a co-founder who can sell and together they can make Tarsnap take over the backup business!" That would be a good thing for the universe.

Tarsnap is a great example of a better technology that should be backing up most of the world's data. It would, if you teamed up with the right popularizer to get the word out and close deals. It hurts me to see Tarsnap backing up only a tiny fraction of the world's data, while companies with great salespeople back up most of it badly.

Still, I think we delivered for some people who were inspired to bring their better technology out into the wide world.

Also: I hear you about power outlets. My current MBP runs Emacs for 8 hours so I've lost touch with that need, but I'll bring extension cords and power strips to future events.

30.Military Professional Reading Lists (militaryprofessionalreadinglists.com)
65 points by tcopeland on Oct 18, 2014 | 23 comments
๐Ÿ“š. Insider Trading on War (archive.is)
17 min read | by Matt Levine | saved 2 hours ago | archive

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: