| 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 |
|
| |
|
|
| 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 |
|
| |
|
|
| 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 |
|
| |
|
|
| 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
|
|
|
| More |
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:
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.
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. 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. 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:
This says: j is a view of the last (first reverse) of k. We don't know what k is yet. This says: f is defined as an empty string. 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.
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.
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. This requires some knowledge of g/z: http://kparc.com/z.txtNote 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.
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. 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?