Quasi-Polynomial Algorithm for Graph Isomorphism - <AUTHOR> http://www.scottaaronson.com/blog/?p=2521 <comment><USER2> That's super fascinating! I have been studying the graph isomorphism problem for a while now since I actually needed it for a real-world use case, so I'm really psyched to hear that there is a good solution now.

About our use case: We developed an algorithm for creating "semantic diffs" between two source code trees. Starting from a graphical (AST) representation of the source code of an entire software project, such a diff would basically tell you how you can transform one tree into the other using a range of edit operations (e.g. insert, delete, copy, paste, modify). The advantage compared to line-by-line diffs is that the latter work only on the text-level (i.e. "this line has been removed, this other line has been added"), whereas the former can actually tell you what changed on a semantic level (i.e. "this argument was inserted into this function and this variable name was changed").

For big projects, this is quite a computational challenge and can (could) only be solved using approximations and shortcuts. Having a polynomial-time algorithm for this would therefore be a huge deal.

I hope that the proof will soon lead to practical implementations of the algorithm.

<comment><USER3> Is this the sort of technology that could theoretically enable reasonably good, automated conversion between programming languages?

<comment><USER4> Not really, it's not hard to write a compiler to convert between different programming languages. The challenge is translating between the different semantics of different programming languages (e.g., object-oriented vs. functional, dynamically typed vs. statically typed, etc.).

</comment></comment></comment><comment><USER5> What. A. Bombshell. Sorry for the low-content post; but it is no exaggeration to say that this " _might_ be the theoretical computer science result of the decade". I'm dying to see how Babai managed to pull it off.

<comment><USER6> With the news of the EM drive today, probably he confused himself with unclear notation on line 57 of the proof. ( It would be cool if he pulled it off, but even highly respected scientists make mistakes, and a blog post based on the title of a seminar is nothing to get excited about.)

<comment><USER7> Good mathematical work is rarely an all or nothing proposition. Many independent ideas are required and when the mathematician is very good it is rare that there will be many mistakes.

So even if there are issues with some aspect of the proof there is usually lots of interesting stuff that can be salvaged. The proof of Fermat's last theorem as originally given is an example. It was wrong, though it got patched later, but the original work was still very exciting I think.

</comment></comment></comment><comment><USER8> Could anyone provide a good pointer to an introduction more amenable than e.g. Wikipedia? A brief googling provides a lot of material, but I could use a little curation... and that's the sort of thing that sometimes HN is best for. Thanks!

<comment><USER9> Disclaimer: I don't know much about the subject, but I'll try to help.

Two graphs are isomorphic if they are "the same" graph, as in, if you renamed the edges, the graph would be the same.

For example, if you have the graphs:

G1: A -> B <-> C G1: C -> B <-> A

The only difference between those graphs is the name of the vertices. If you rename them, you get exactly the same graph back.

The first example from the wikipedia page seems like a nice one: [https://en.wikipedia.org/wiki/Graph_isomorphism](https://en.wikipedia.org/wiki/Graph_isomorphism)

While the two graphs look different, they are exactly the same.

Quasi-polynomial algorithms, as the name implies, are algorithms that are "almost-polynomial" (ie. slower than polynomial, but faster than exponential). According to [https://en.wikipedia.org/wiki/Time_complexity#Quasi- polynomi...](https://en.wikipedia.org/wiki/Time_complexity#Quasi- polynomial_time), the worst case for a quasi-polynomial algorithm is 2^O(log (n)^c).

<comment><USER10> From the example it looks as if this can be solved linearly, because the structures obviously match. To intuit that the algorithm must be exponential, imagine the vertices to be balls on wire. You grab one ball pull it up as the root from which you start to compare. Now it is obvious you have to pick a vertex from the other graph as well to be the root nice from which to begin the comparison, if you pick the wrong one the graphs won't match. So you will have to pick every ball and see if its structure matches. For a tree (a graph without cycles) it's plain to see it's exponential: in the worst case you have to pick each vertex from one graph and then compare its children with the other graph, that's N * N operations. When the graph does have cycles, the problem becomes more complex. How much more complex is what this scientist perhaps put a new upper limit on.

</comment></comment></comment><comment><USER11> Can anyone give an example of real-world problems that graph isomophism can be used to solve? I am out of my depth here and I might be able to make more sense of it if I had a concrete example to relate these concepts to.

<comment><AUTHOR> One application is electronic circuit verification. A conceptual circuit diagram needs to be mapped to a specific geometry of components and conductive paths between them. The verification that the circuit diagram matches the layout is a graph isomorphism problem; you need to ensure that you can assign the pre-layout components to the ones in the specific layout, such that all the edges line up with those in the original diagram.

</comment></comment><comment><USER12> woozers, really excited to see this. hope videolectures.net picks up the presentation soon afterward.

</comment><comment><USER13> Original title "Quasi-Polynomial Algorithm for Graphic Isomorphism Proposed" should be "Graph" instead of "Graphic"

<comment><USER14> Yes. Fixed.

<comment><USER15> ...except you dropped off the key piece: "Proposed"

As far as I can tell, the page at the link contains no quasi-polynomial running time algorithm for solving graph isomorphisms, yet that is exactly what the title of this posting now states.

There is only a claimed, or, "proposed", algorithm, as far as I can tell. The details won't be revealed until November 10, apparently.

<comment><USER14> That seems a bit nitpicky. The post doesn't contain a proposal either.

<comment><USER15> I agree. I only used the word because it was the apparent original title (according to the person you responded to).

Possible Quasi-Polynomial Graph Isomorphism Problem Algorithm Upcoming?

</comment></comment></comment></comment></comment><comment><USER16> I wonder if bits of the proof could be used for other graph problems. For instance the "clique problem" [1], which is NP complete.

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

</comment><comment><USER17> I know a guy who may have independently come up with the same or a similar result. He's been keeping it under wraps because he's not a mathematician and hasn't proved it, just come up with the method.

I've advised him to upload his results somewhere as soon as possible because he's been working on this for several years. I'll be very interested to see how their methods differ.

<comment><USER18> Giving false proofs that GI is in P or a related time class is, I think, a common occupation (see, for example, [https://rjlipton.wordpress.com/2009/11/04/on-mathematical- di...](https://rjlipton.wordpress.com/2009/11/04/on-mathematical-diseases) ); so, if all you know is that this guy _thinks_ he has a solution to the problem, and if the guy is not a mathematician and doesn't have a proof, then the balance of probabilities is that he's probably mistaken (but there's no harm in making the work publicly available, just in case).

<comment><USER17> I've seen the method and I have a background in math, just not enough to really help prove it.

I was never claiming that he succeeded, just that he had something similar that worked in all our tests, at least. Even if his solution isn't polynomial it might be quasi polynomial like this result, in which case the differences would be enlightening.

The most likely case is that my friends work is polynomial but wrong in some obscure way. But it will be interesting nonetheless.

<comment><USER18> > I was never claiming that he succeeded, just that he had something similar > that worked in all our tests, at least.

It's hard to tell the running time of an algorithm by testing; an O(1) algorithm is indistinguishable from an O(2^(2^n)) algorithm if you only run them on inputs up to n = 10^(10^(10^(34))), say.

(That sounds facetious, and it kind of is, but it cuts the other way, too: I seem to remember that polynomial-time primality testing isn't used in practice because the constants are so huge that, on 'real-life' inputs, it's impractically worse than probabilistic testing.)</comment></comment></comment></comment>


Show HN: Generate a link and control your machine via browser - <AUTHOR> https://github.com/TrevorSundberg/skugo <comment><AUTHOR> The server source is also in that same repo, it's under relay: [https://github.com/TrevorSundberg/skugo/tree/master/relay](https://github.com/TrevorSundberg/skugo/tree/master/relay)

There's some code shared between the relay, client, and server (for message structure) in the shared directory.

</comment><comment><AUTHOR> I'll check out ngrok, it looks really handy! I was actually thinking that could be another use is to make a tunnel, but I decided to just scope it to browser apps only so you don't have to install anything on the client machine. I added ngrok to the related projects :)

</comment><comment><USER2> Interesting!

Related: ngrok

Are you keeping the server closed source?</comment>


In-N-Out - <AUTHOR> http://www.ritholtz.com/blog/2012/08/in-n-out/ <comment><USER2> In-N-Out is an example of efficiency wages in action: <http://en.wikipedia.org/wiki/Efficiency_wage>. In-N-Out starts new employees at $10/hr, well above other fast food chains, on the theory that higher wages improve worker performance and encourage efficient service.

</comment><comment><USER3> I Love In N Out Burger !! Animal Style burger & fries , Doubble Doubble that is . Their the main reason I don't move .</comment>


The Two Generals' Problem (wikipedia) - <AUTHOR> http://en.wikipedia.org/wiki/Two_Generals_Problem <comment><USER2> Assuming I was the general who decided when we'd attack, I'd send n messengers each with a c chance of getting captured, yielding a (1 - c^n) chance of the other general attacking at the same time. By adjusting for n, I could have whatever probability of success I wanted, though never a guarantee of success.

One can calculate the chance of losing data stored redundantly on multiple disks due to disk failure the same way, assuming that disk failures occur independently of each other, as they might for a large internet company with the data stored across multiple data centers.

</comment><comment><USER3> Assume a solution of N messages exists. The N'th message may fail. Either N messages is not enough, or N-1 IS enough; then recurse on N-1.

</comment><comment><USER4> Can someone explain to me why this is important. From the outset it's clear that there will always be a chance of failure and the two generals can never be certain. Why does it matter that this proof exists. Or is there something that's non-obvious here.

<comment><USER5> It's an important impossibility result like the Halting Problem. You can be led down the wrong path for hours designing protocols which attempt to solve an unsolvable problem but do so in a seemingly-almost-correct way -- until the complexity is so great that you can't understand where it goes wrong. If you didn't have these results, you might be tempted to believe your solution at that point was correct. With this result you can be sure it's wrong, recognize the pattern of unsolvability, and give up much sooner.

<comment><USER4> That makes a lot of sense. But also just goes to show how effective preliminary design work can be for making a smoother overall production curve. Still, one can easily get lost in it if they don't step back every once in awhile and realize their beating their heads against a wall.

<comment><AUTHOR> As a side-note, the way I came across the problem was that yesterday I was trying to change the location of a date and my text messages were not always getting through (possibly due to my proximity to the G20 cell jamming). I realized that there was no way to know for sure, by text messages, whether we both committed to the change. (fortunately it worked out anyway)

</comment></comment></comment></comment><comment><USER6> One thing I never understood is how you can guarantee consistency in distributed transactions given this problem. Can you really build a 2-way ACID system, or is only "eventual" consistency achievable?

<comment><USER7> There is also the Paxos algorithm:

<http://en.wikipedia.org/wiki/Paxos_algorithm>

(Bigtable uses 'Chubby' - google's implementation of Paxos)

</comment></comment><comment><USER8> Am I the only one annoyed by the recent (to me) trend of submitting Wikipedia articles to Hacker News?

<comment><USER9> I like it.

</comment></comment><comment><USER10> In most real situations, people arrange more than one means of communication, or more than one step, so there is not a single point of comm that is critical. When I was in the Air Force, for one critical procedure there were 44 different methods of communication. Yeah, it was the Cold War, and we had limitless money, but it was amazingly reliable.

</comment><comment><USER7> Commius and Vercingetorix had this problem at Alesia; Caesar's troops enforced a network partition!

</comment><comment><USER11> Fantastic link, and timely too. Thank you.</comment>


Ask HN: What are good places to market services? - <AUTHOR>

Obviously Ebay and Amazon are good places to sell products but usually not services. Also, are there big players that are not centered in the U.S.?<p>For a little bit of background: My website, ktbyte.com, does automated java tutorials. Some of the full classes (200 lectures/problems or so) will be on sale for 90% off this summer, and I'm not sure how to get the word out. <comment><USER2> Groupon. I bought a few online classes there.

</comment><comment><USER3> How about selling them on Udemy?</comment>


Teslas Aren't the Future - <AUTHOR> https://theweek.com/articles/861665/why-teslas-arent-future <comment><USER2> Media outlets need to start hiring folks who live outside of a handful of trendy metro areas like New York, San Francisco, or DC (or in this case, Toronto).

It's quite obvious that the author has not spent much time in the types of communities where most people actually live, nor does he seem to have much familiarity with the concept of child rearing.

I'm not going to load my young children and 12 bags of groceries onto some pay-by-the-mile micro scooter. I'm going to use my minivan.

Has the author ever even installed a carseat? If you have children under the age of 10 or 12 then things like Uber, Ridesharing, etc. are pretty much out of the question due to laws around car seats and child safety.

Urban planners have been trying all manner of sticks and carrots (mostly sticks) to get people out of their cars for over 30 years now with very little success, outside of a few very high density older metro areas like London or New York.

Cars are popular because they give people convenience and flexibility that the didn't have before. Very few people are going to give that up voluntarily. This is doubly true when you have children.

If the author is going to pontificate on the future of transportation, he may want to think about the giant chunk of the population living in the suburbs and raising children. Otherwise it's just an article about the future of transportation for childless professionals living in trendy cities built before WWII.

<comment><USER3> Your kid should be in a booster by 5 or 6, and then they transition out of that between 8 and 12 (4'9"). Once they are in a booster, you can conceivably carry it around and use a ride share. See [https://www.healthychildren.org/English/safety- prevention/on...](https://www.healthychildren.org/English/safety- prevention/on-the-go/Pages/Car-Safety-Seats-Information-for-Families.aspx)

Buses and trains/trams don't require child seats, so they can always be used. Some states also exempt taxis and passenger van services.

Uber offered car seats in a few markets once upon a time. Not sure if they still do, or how it would really work considering different kids require different seats.

<comment><USER2> I don't think it's practical to lug around 2 or 3 boosters. Possible, yes, but a terrible user experience.

<comment><USER3> If you have 2 or 3 kids, sure, that would suck. Anyways, it is a relevant strategy for us (one kid) when we visit China and a car rental isn't possible. Of course, they don't have child seat laws anyways, but that option doesn't sit well with the wife.

<comment><USER4> Roughly speaking, the average family has to have about 2 kids or more (to make up for people who choose not to have children).

So the situation of having 2 kids is pretty typical.

<comment><USER3> The average is 1.9. You are supposed to space them out a bit, however. Also, 20%of all kids are only children, big cities one child is more common (Seattle its 47%).

<comment><USER4> That's the average per woman, not the average per family (which wouldn't include independent, childless single people).

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> > healthier _cities_

> move through _cities_

> _cities_ populated with these vehicles

This article seems to be forgetting how many people don't live in cities.

> For long distance trips, inclement weather, or for the elderly or disabled, > of course cars will still play a role.

In the part of the US I live in, about about 4 continuous months of the year could easily be described as "inclement weather" and many of my coworker's daily commutes would qualify as "long distance trips" (with no mass-transit alternatives). A more traditional vehicle is not an option, it's a requirement, and electric vehicles seem like the most intimidate route to meeting that requirement while reducing the environmental impact.

While I think focusing on alternatives to cars in urban areas is a great idea, and has potentially massive benefits beyond even the obvious environmental impact, any long-term view of the automotive industry has to take into consideration the needs of the roughly 50% of the population that doesn't live in urban centers.

<comment><USER6> The majority (>60%) of Americans live in cities: [https://www.census.gov/newsroom/press- releases/2015/cb15-33....](https://www.census.gov/newsroom/press- releases/2015/cb15-33.html)

A environment designed and built to make car-ownership a requirement (your word) has massive ecological and sociological downsides, and we should be doing what we can to shift away from it.

<comment><USER7> Phoenix is the 5th most populous city in the US and spans 517 square miles. The Phoenix Metro area spans over 14,000 square miles. Good luck navigating that on your scooter - especially with kids or cargo.

"Cities" don't necessarily mean "densely-packed sardine cans where people conduct their entire lives within a 2 mile radius of home".

<comment><USER8> In the last 5 years how many times did you have to travel 100 miles in a day. For most people it would be less then 5. Cars are mostly wasteful where you use energy to move few tons when actually want to move just 100-200kg.

<comment><USER7> Me personally? Quite a few. Work is 43 miles each way. My mom's 53 miles away. Not that unusual for Phoenix residents, particularly those who live out in the suburbs where housing is more affordable. Weekend activities are frequently 20-30+ miles from home.

</comment></comment></comment></comment></comment><comment><USER9> The article argues that the "simpler" solution is better – but surely the simpler solution is having better cars than convincing everyone to take a scooter or a bike, which have big drawbacks in many common scenarios.

I also support denser city living, with walkability (and scootability and bikeability) between work, home, shops, and everything else. Let's get that started and start our cities evolving to support that as soon as possible.

However, it seems like everybody has forgotten that cars (especially if you aren't the one driving) are really a quite good user experience, and that's why people prefer them.

</comment><comment><USER10> We're not about to raze suburban cities to the ground, so electric cars are a good in-between.

<comment><USER11> This is the right way to think about it. EVs are a transitional technology. They allow us to maintain the current lifestyle choices while simultaneously empowering the reduction of reliance on fossil fuels. One can make no further statements without venturing into speculation on potential "best" futures that many find objectionable.

I'd personally like to see a future in which housing in cities is much denser, public transportation much better and private automobiles are considered a nuisance to be born by the relatively few who need them. But, even though most people consider that an extreme position, there are a lot of ideas that are commonplace today that were previously considered extreme.

<comment><USER12> I don't see suburban areas ever becoming truly mass transit viable.

I DO see a future where the benefits of living in denser-packed cities outpace the downsides, encouraging more and more of the US population to live in areas that are (or become) population dense enough for car-free lifestyles to be viable.

<comment><USER13> There are plenty of parts of London (typically zone 3 and out) which is full of low rise single family homes. The transit links in most of these areas are good enough that you can easily get by without a car (even as a family, although of course it would be easier by car). At least by my definition these would be a "suburban area".

</comment></comment></comment></comment><comment><USER14> He's suggesting e-bikes which won't go fast enough to get you where you're going, not to mention that there's very little infrastructure support for biking.

E-motorcyles maybe, but they're not comfortable at all.

MicroCars (they already exist in india: The Tata) are completely illegal in the US. There's so much regulation on car companies these days, there's very little room to innovate, especially with smaller cars which are pretty much illegal these days.

</comment><comment><USER15> Did someone say they were? Seems like the article is arguing against something that no one is promoting and offering solutions that have been available for many years and not yet taken up. Where I live (Norway) electric scooters, hoverboards, etc., are all in use and have been for years but they are typically replacing walking not driving.

I agree with the article that things can suddenly change in unpredictable ways once a new technology becomes massively available. But it seems to me that both of us are pretty much stating the obvious.

</comment><comment><USER16> People need cars for various reasons: trips to Home Depot to pick up home gardening gear, taking the kids and their friends to the movies, heading to the park to fly kites, traveling to the local university for graduate classes, travel for work that requires driving for hours to nearby cities. My family has done all of this, and none of it is convenient without a regular (gas or electric) car.

There may be some climates in the USA that allow year round commuting exposed to the elements, say San Diego, but in most of the country this isn't practical. I've lived in places where it got to 13 degrees Fahrenheit _below zero_ and in other places where it has been over 113 degrees above zero. Travel without the protection of a car for a couple of miles under these conditions is difficult.

For these reasons, people feel they need cars and once the sunken cost of such an investment is made it makes less sense to use public transportation or scooters. Someday, in the distant future, perhaps cities will have better, cleaner, safer, and more convenient public transportation and then the equation may change, but once you have a car in the garage already it's often the easiest choice and having a Tesla might lessen the environmental impact.

</comment><comment><USER17> Am I the only one who prefers a car to shared trains/rideshare/walking? Knowing I have a portable climate controlled space when the weather isn't to my liking? Knowing I can conveniently leave things fairly securely near where I happen to be (if not at home)? Knowing that no-one has recently barfed in my car, or have to wonder: ugh, what's that stain on the seat? Not having to run my life around a transit schedule (or deal with a full or very crowded bus/train) is great. The freedom cars give is absolutely wonderful relief from these things that you encounter in the city.

Personally, I don't get pro-urbanization: it's crowded, loud, smelly, and for all that wondrous enjoyment (and more), crazy expensive. I like not being able to see/hear my neighbors and for them not to see/hear me. I like that my views are very pretty. I like that the noises I hear are nature, and not man/machines. I like that I get to spend more of my money on things other than rent (other things are cheaper in the 'burbs too). And to someone else's point -- I live in a city, but looking around, you'd never know it.

But maybe I'm just weird.

<comment><USER18> uh, you may be missing the point. Few if any are against cars because the experience is poor. Absolutely the experience is individually superior. The point is that car usage is selfish, wasteful and generally worse for society as a whole.

in the west we are used to and loath to give up these comforts. personal cars, large suburban homes.. look at places that have modernized more recently, like in east Asia. Density, verticality, public transportation, these are the name of the game. Of course they would prefer to have their own cars and large homes, but the reality is that it's too inefficient for society to support.

<comment><USER17> Selfish? Really? That's your socialist dogwhistle right there.

Wasteful? That's in the eye of the beholder. It all depends on what you value. Some people value things differently than you.

Worse for society? Is it better to have to have millions of people burn substantially more time of their lives to live in cities due to the added expense? Is that really better for the poor?

Density is not a virtue. Misery of crowded, smelly, noisy and expensive, cities is not a virtue to inflict. Some people prefer cities. Good for them. Many do not.

Too inefficient? For whom? Funny, it works really well for many millions.

If you're pro-misery, claim it and own it. I just find it ironic that people from smoggy smelly cities are judging people from the comparatively, beautiful, clean, and low crime suburbs.

Try exiting your bubble.

<comment><USER19> Please don't cross into personal attack on HN. We ban accounts that do that repeatedly.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

</comment></comment></comment></comment><comment><USER20> At the end I didn't understand if he was talking about pollution or space use. Aren't Tesla cars emission free vehicles?

</comment><comment><USER21> TL;DR: Claims a future of "small, personal electric vehicles like e-bikes, scooters, or micro-cars that are yet to exist. That's it."

Our road networks (urban, AND suburban & rural) host an extremely wide range of vehicle types. While the "small personal vehicles" touted might become popular (with a tweaked road network) it's unlikely to be at the exclusion of all the other vehicle types.

Sometimes you want to put your family in a {thing} and go somewhere together. We still need to haul/move/ship/deliver things. Those requirements don't go away.

</comment><comment><USER22> I honestly couldn't read past the third paragraph. Yawn.

</comment><comment><USER23> I completely agree with this article.</comment>


Google on track to outspend banks, big tobacco in lobbying - Suraj-Sun http://arstechnica.com/gadgets/news/2012/04/google-on-track-to-outspend-banks-big-tobacco-in-lobbying.ars

<comment><AUTHOR> can anyone tell us if any of google's lobbying prevented the web from being less free and censored? do they support CISPA which is using cyber security as an excuse to stifle free speech on facebook twitter and others?

<comment> Suraj-Sun This ZDNet article claims that, "Google helped with CISPA, joins Cybersecurity Theatre," and "CISPA's author Rep. Mike Rogers (R-MI) has bragged that Google had, in fact, quietly worked with the bill's authors behind the scenes."

[http://www.zdnet.com/blog/violetblue/google-helped-with- cisp...](http://www.zdnet.com/blog/violetblue/google-helped-with-cispa-joins- cybersecurity-theatre/1238)

<comment><USER2> The source of the ZDNet article is a bit less sensational sounding:

[http://thehill.com/blogs/hillicon- valley/technology/221977-g...](http://thehill.com/blogs/hillicon- valley/technology/221977-gop-chairman-google-supportive-of-controversial- cybersecurity-bill-cispa)

      >"They've been helpful and supportive of trying to find the right language in the bill," Rogers said, adding that Google wants to protect consumers' privacy and prevent regulation of the Internet.

It makes sense that they'd try to get in during the drafting phase instead of being on the outside looking in, ala SOPA.</comment></comment></comment>


The Yoda of Silicon Valley - <AUTHOR> https://www.nytimes.com/2018/12/17/science/donald-knuth-computers-algorithms-programming.html <comment><USER3> My favorite Knuth quote: "Email is a wonderful thing for people whose role in life is to be on top of things. But not for me; my role is to be on the bottom of things. What I do takes long hours of studying and uninterruptible concentration. I try to learn certain areas of computer science exhaustively; then I try to digest that knowledge into a form that is accessible to people who don't have time for such study."

source: [https://www-cs-faculty.stanford.edu/~knuth/email.html](https://www- cs-faculty.stanford.edu/~knuth/email.html)

<comment><USER4> I feel completely the opposite.

Not that email or any of the million other apps don't produce constant interruptions - but in terms of what I want my role to be and what I find pleasure in.

A world of high stimulation and constant social interaction? A million things shouting at me and I have to sort through them and grab the most important one and hop from thing to thing fast? That's what I like.

Focusing on one topic for hours, days, even weeks to really understanding every facet of it? I think it'd kill me. I know people theoretically need these big blocks of uninterrupted time to get work done, but I'd much rather have a bunch of meetings where we can figure out the path forward.

I have mad respect for him... but I never could have been an academic.

I like to take in all those digested kernels of knowledge, I like to digest as many of them as I can; I know I lose the details, but integrating them all into something bigger has always been my dream; it's just how I live my life.

<comment><USER5> It's only after you've developed a deep understanding that any efforts at integration would be successful. If you just like orchestrating, that's fine but I've met too many managers/product managers who think up lofty ideas on how to integrate various pieces without a deeper understanding of the underlying technology.

<comment><USER6> Yup, been around a lot of them, they are the ones who love to sling words around and are a prime definition of _tech bros_ always looking to debate not on the basis of firm knowledge but as a cover-up for their inadequacies.

<comment><USER7> I have seen the other side of this where the developers trying to implement business requirements in code are making bad assumptions and end up in confrontations with middle management because their technically "pure" vision for how something should work doesn't solve the business goal.

<comment><USER5> Yeah. Seen this happen too. That usually points to a lack of (good) senior leadership in the dev team (senior developers not product/managers).

</comment></comment></comment></comment></comment></comment><comment><USER8> My favorite Knuth story, attributed to Alan Kay (if you're around, would love confirmation):

When I was at Stanford with the AI project [in the late 1960s] one of the things we used to do every Thanksgiving is have a computer programming contest with people on research projects in the Bay area. The prize I think was a turkey.

[John] McCarthy used to make up the problems. The one year that Knuth entered this, he won both the fastest time getting the program running and he also won the fastest execution of the algorithm. He did it on the worst system with remote batch called the Wilbur system. And he basically beat the shit out of everyone.

And they asked him, "How could you possibly do this?" And he answered, "When I learned to program, you were lucky if you got five minutes with the machine a day. If you wanted to get the program going, it just had to be written right. So people just learned to program like it was carving stone. You sort of have to sidle up to it. That's how I learned to program."

[0] [http://www.softpanorama.org/People/Knuth/index.shtml](http://www.softpanorama.org/People/Knuth/index.shtml)

<comment><USER9> There's another interesting story about Knuth that's worth repeating here.

[http://www.leancrew.com/all-this/2011/12/more-shell-less- egg...](http://www.leancrew.com/all-this/2011/12/more-shell-less-egg/)

The tl;dr is that Knuth wrote an elaborate implementation of a program to solve a particular problem, and Doug McIlroy replaced it entirely with a six step shell pipeline. (Knuth's program was written using his literate programming tools, could be typeset in TeX, and involved some precise work with data structures and algorithms.)

I love this story as an example both of Knuth's genius and perspective, but also as a way to show what his level of dedication can achieve. It's an amazing intellectual accomplishment.

I also love this story as a demonstration what those of us without that skill and dedication can achieve using the advancements built on the work of Knuth and others.

<comment><USER10> I love that story, although I think the takeaway needs to be slightly updated. It's quite possible that a sorted word count was easiest to do with bash and unix utilities in 1992. Now, it's easier and more comprehensible in your favorite scripting language (which I'm assuming _isn 't_ bash).

The real lesson is to program using the most powerful tools at your disposal.

<comment><USER11> There is no bash (or any scripting) involved, the complete command from the article is:

      tr -cs A-Za-z '\n' |
      tr A-Z a-z |
      sort |
      uniq -c |
      sort -rn |
      sed ${1}q

The real benefit is that each is a single command that is easy to test in isolation and it's multi-process. That's not possible in most scripting languages.

<comment><USER10> McIlroy literally calls it a script in his review (notice the ${1}).

Nothing prevents you from unit testing in scripting languages. Multi-process, sure, but most people aren't looking for that.

<comment><USER11> > McIlroy literally calls it a script in his review (notice the ${1}).

Ok, there's a single shell substitution, if it was fixed would you still call it a script? Technically the result of that is itself a sed script "3q", but if you count either of those then there isn't a lot of wiggle room between script and command, the arguments to tr are by far the most complex "script" involved.

> Nothing prevents you from unit testing in scripting languages.

That is a world away from what I'm talking about. Each line of that command can be executed on the CLI in isolation, you'd be replicating a lot more in nearly any scripting language, except maybe perl and awk.

> Multi-process, sure, but most people aren't looking for that.

Neither am I generally, still quite nice when you get it for free though.

<comment><USER10> You're really splitting hairs. You can execute a Python command in a REPL. There's little material difference between scripts and commands for our purposes. And scripting languages provide facilities to test functions in isolation.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> Taking the opportunity to post the video of Knuth mishearing the question "What makes a good teacher?" as "What makes a good T-shirt?" at my uni.

[https://youtu.be/74BfHoE66rc?t=42m17s](https://youtu.be/74BfHoE66rc?t=42m17s)

<comment><USER13> I wish the guy would have let him answer as to what the CompSci equivalent of that T-Shirt is.

<comment><USER14> A few years ago, while doing a bit of a family history research project (Knuth was my father's PhD advisor at Stanford), I stumbled across a rather awesome t-shirt design. May I humbly submit "Knuth is my homeboy" as my entry to the CompSci t-shirt contest. (not my own design, to be clear, I just came across it on the internet)

[https://geekz.co.uk/shop/store/show/knuth- tshirt.html](https://geekz.co.uk/shop/store/show/knuth-tshirt.html)

And here is a shot of the recursive shirt in action: [https://laughingsquid.com/jacob-appelbaum-donald-knuth- demon...](https://laughingsquid.com/jacob-appelbaum-donald-knuth-demonstrate- the-recursive-homeboys-principle/)

</comment></comment></comment><comment><USER15> My favorite Knuth quote:

 _One of the first times I was ever asked about the title of my books was in 1966, during the last previous ACM national meeting held in Southern California. This was before any of the books were published, and I recall having lunch with a friend at the convention hotel. He knew how conceited I was, already at that time, so he asked if I was going to call my books "An Introduction to Don Knuth." I replied that, on the contrary, I was naming the books after him. His name: Art Evans. (The Art of Computer Programming, in person.)_

</comment><comment><USER16> As mentioned in the article he is also a devoted Christian and one of the smartest I know of.

Some of his writings on the subject:

[https://www-cs-faculty.stanford.edu/~knuth/things.html](https://www-cs- faculty.stanford.edu/~knuth/things.html)

[https://www-cs-faculty.stanford.edu/~knuth/316.html](https://www-cs- faculty.stanford.edu/~knuth/316.html)

</comment><comment><USER17> "I was sitting in Steve's office when Lynn Takahashi, Steve's assistant, announced Knuth's arrival. Steve bounced out of his chair, bounded over to the door and extended a welcoming hand.

"It's a pleasure to meet you, Professor Knuth," Steve said. "I've read all of your books."

"You're full of shit," Knuth responded.

[http://www.folklore.org/StoryView.py?project=Macintosh&story...](http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt)

<comment><USER18> No way; I worked for him from 1978-1986, and never heard him say a naughty word. Also, I tagged along when he went to Apple to meet Jobs, who wanted to show him a late prototype of the Mac, and don't recall hearing any such thing at the time (and it would have shocked me).

<comment><USER19> I've also heard that story with several different people in the place of Jobs (mid 90's it was almost always Bill Gates, for example), making me believe it to be apocryphal.

<comment><USER20> Also, it seems unlike Jobs to be reading algorithm books or to claim so - <USER2> was not interested in writing software. Jobs would involve himself in the user-facing functions of software.

Whereas I recall Gates claimed to have read them, or at least some of the volumes, and found them mind-expanding. Gates wrote a fair amount of software himself early on and later would still challenge people on very technical points.

</comment></comment></comment></comment><comment><USER21> When Java was new, James Gosling and I gave a talk about it to a group that included Don. When we gave the talk I was in the process of leaving Sun for a startup. A couple of years later Don mentioned to me that the talk was the first time we met and, at the time, he couldn't figure out if I was really smart or really stupid for leaving Sun right after Java shipped. In 2010 we both agreed that in the long term, it was the right choice for me, but neither he nor I could have predicted that at the time.

</comment><comment><USER22> "I am worried that algorithms are getting too prominent in the world," he added. "It started out that computer scientists were worried nobody was listening to us. Now I'm worried that too many people are listening."

cheers!

</comment><comment><USER23> Ok, so this journalist gets to spend WHOLE day with Knuth and all we get is some bits of history and quotes from couple of Google guys. Massively lost opportunity to provide window in this legends daily life, thoughts and habits...

<comment><USER24> > At age 19, Dr. Knuth published his first technical paper, "The Potrzebie > System of Weights and Measures," in Mad magazine.

I'd say she did something positive with the opportunity.

<comment><USER25> I have a copy of the issue, so when I went to see one of his Christmas Tree Lectures a few years ago I took it with me to get signed after the talk.

Instead of just signing it, he opened to his article and corrected a typo in the Potrzebie article--I think it amounted to two numbers being transposed somewhere around the millionths place (My copy is packed away from a recent move so it's not too convenient to verify).

What was funny was he had a poem he used to remember the order of the numbers after the decimal. He couldn't quite remember it, so he ssh'd into his home machine (or University, dunno), fired up Emacs, and opened a file containing the poem. Then he corrected the typo.

And that's how Donald Knuth "signed" my copy.

<comment><USER26> +1 I was behind you in this line and can confirm this story :-) He was surprised someone brought this and IIRC asked you how you got hold of this MAD magazine issue. I remember him not wanting to sign without fixing the typo, and also ssh-ing to find the correct numbers after he wasn't sure he remembered them.

<comment><USER25> Wow, that's wild. It makes me happy someone else remembers it. I kinda figured it was just me as I think I attended the lecture alone that year--pretty sure it was 2015.

FTR, the answer to how I got it: I made an off-hand comment to my wife about the magazine and she tracked it down for the next gift-giving occasion.

</comment></comment></comment></comment></comment><comment><USER27> My favorite book from Knuth isn't computer-related at all.

3:16 Bible Texts Illuminated

[https://smile.amazon.com/3-16-Bible-Texts- Illuminated/dp/089...](https://smile.amazon.com/3-16-Bible-Texts- Illuminated/dp/0895792524)

<comment><USER28> The book where he discusses these is also wonderful: "Things a computer scientist rarely talks about".

[https://www.amazon.com/Things-Computer-Scientist-Rarely- Lect...](https://www.amazon.com/Things-Computer-Scientist-Rarely- Lecture/dp/157586326X)

</comment></comment><comment><USER29> Donald Knuth shaved the ultimate yak. He wanted to write a book with mathematics in it so he implemented what for decades has been industry- standard mathematical typesetting system: TeX.

That's remarkable. I just wish he'd finish the book.

<comment><USER30> The details are even hairier.

He wrote TeX82 (modern TeX) in WEB, a literate programming language he invented that could be tangled into the Pascal machine code or weaved into literate documentation in ... TeX itself.

In fact he wrote WEB itself in WEB and by hand compiled the output of the tangle program, which he ran on the tangle source to get the same output.

He also wrote the program METAFONT to produce the typefaces, which he used to design the Computer Modern font.

And then he used that to write instruction books for TeX and METAFONT as well as new editions of The Art of Computer Science and others.

TeX is still in regular use in the academic community (ported via Web2C) over 35 years later, despite the changes in technology in that time (with hacks to deal with modern fonts, outputting PDFs instead of DVI, including images and the like).

He taught the yak to shave itself, and it's still clean shaven 35 years later.

<comment><USER31> "In regular use" is an understatement. Virtually all manuscripts published on Arxiv.org, which comprises a large portion of all contemporary physics research output, is typeset in Latex.

</comment></comment></comment><comment><USER32> Knuth has enormous patience for someone so productive.

My son used to refer to Knuth as "that amazing harpsichord player" and didn't care about the computer science "stuff" I tried to tell him was really important. And he had plenty of time to sit down with a kid and go through the score of Fantasia Apocalyptica and laugh together at the musical jokes in the score.

OTOH I either have to consciously decide not to stress about all the things I want to get done or else...stress and push hard. Yet the things I feel driven to accomplish are quite minor compared to Knuth's to do list!

</comment><comment><USER33> Knuth is just ONE section away from writing about my (current) topic of study: Constraint Programming.

His 4th volume of TAOCP is so big that its beginning for him to take decades to write sections. Backtracking search + 3-SAT solvers is really interesting (and very closely related to Constraint Programming), but I'm deeply curious to know what his take on Constraint Programming will be.

Its really odd to be "waiting" for the next chapter of TAOCP. Its a serious body of work that has spanned decades of research and writing... I really hope he finishes the next section sooner.

Maybe I'll go and buy the fascicle for 3SAT and read it while waiting.

<comment><USER26> In his recent Dancing Links talk (a couple of weeks ago), he mentioned a generalization of exact cover that also covers constraint programming. You may want to look into that (XCC) in the meantime, in Knuth's fascicle on Dancing Links ([https://cs.stanford.edu/~knuth/fasc5c.ps.gz](https://cs.stanford.edu/~knuth/fasc5c.ps.gz)).

I know the feeling of waiting for new chapters of TAOCP; I'm waiting for Chapter 8 on recursion because his idea of it is so different from everyone else's.

<comment><USER34> What makes his idea different from everyone else's? I know he covers coroutines, being something not really available in most languages. That said, I thought it was an accepted term and I didn't think that was his invention.

<comment><USER26> Oh sorry, to be clear, by "his idea of it" I meant "the way he thinks about it [recursion]". What's different is that when most people learn programming, they pick up the idea that iterative structures (loops etc) are simple, and recursion is something more "advanced", harder to understand. Knuth thinks that recursion is the simpler thing (what comes to humans/children naturally), and the mark of a better programmer is being able to translate recursion into iterative structures.

This seems to tie in with his attitude towards programming in general: while in the zeitgeist the idea is that a good program builds better abstractions until the structure of the program reflects human thought, Knuth seems to think that a good programmer is one who starts with a human-level description of the solution and carefully refines it until it translates into a good set of instructions (in machine code). (There's no contradiction, but the point of view seems different from the usual.)

He briefly mentions something related in his _Structured Programming with Go To Statements_ (1974) [https://pic.plover.com/knuth- GOTO.pdf#page=21](https://pic.plover.com/knuth-GOTO.pdf#page=21)

> I have always felt that the transformation from recursion to iteration is > one of the most fundamental concepts of computer science, and that a student > should learn it at about the time he is studying data structures. This topic > is the subject of Chapter 8 in my multivolume work; but it's only by > accident that recursion wasn't Chapter 3, since it conceptually belongs very > early in the table of contents.

<comment><USER34> I think some of this is likely to be a product of the times. The vast majority of early programming languages were not friendly to recursion. It wasn't at all uncommon for functions not to be reentrant, and to rely on self manipulation to set the return stack, if I recall.

Even today, for many "systems level" programs, you have to take extreme care around recursion, since you are likely to blow the stack limits. (That is, you can't just use recursion freely, but instead have to prove the maximum depth that you will trigger it.)

That is to say, I don't see what makes this different than how most others view recursion. If you can afford to do it, then you should do so. If you can't, then you should be ready for a lot of his other tricks. (Threaded trees being my personal favorite, at the moment. DFS with no stacks? Crazy talk! :) )

<comment><USER26> Definitely a product of his times (like everyone). Let me put it this way: to my knowledge, Knuth is the only programmer from his times, still writing, programming, and writing about programming. So you get a 1960s perspective from someone who's seen (and programmed in) 2018; that's not very usual.

(BTW I'm not sure that Knuth would wholeheartedly agree with "If you can afford recursion, then you should use recursion". Perhaps he'd consider the program half-written. That's in some sense the crux of what I think is different.)

Let me put it another way: I thought I knew how to generate all permutations of a set of numbers. When I saw questions about it on Stack Overflow or Quora, I answered. When I opened Volume 4A, it disposed of what I knew in the first half-page, and proceeded to discuss the problem for over 50 more pages. I thought I knew about backtracking, having written backtracking programs hundreds of times (always implemented using recursion). Knuth's section on backtracking obliterated everything I knew (and with no recursion in sight). So I'm looking forward to when he gets around to writing about recursion, to see what I can (un)learn about something so fundamental.

<comment><USER34> His dlx algorithm makes heavy use of recursion. As do many of his cweb programs. In one, he comments it as "textbook" stuff.

Your point on him being one of the main programmers from his time still programming is fair.

<comment><USER26> Ah but see, his DLX program is not written using recursion! Look at his CWEB program dance.w from his website (or if you don't have cweave handy, download the program from here: [https://github.com/shreevatsa/knuth-literate- programs/blob/m...](https://github.com/shreevatsa/knuth-literate- programs/blob/master/programs/dance.pdf) and click around on the hyperlinks) — all the backtracking happens inside "main"; there are only two subroutines "cover" and "uncover", and neither of them is recursive.

Here is what he says in the (very early) draft of fasc16a (only 2.5 pages written):

> We've already seen hundreds of examples of recursion in previous chapters. > Early on, we encountered sequences of numbers that were de fined by relating > each member to earlier members after getting started; these "recurrence > relations" were sometimes simple formulas like […], sometimes more involved > like […], and sometimes considerably more elaborate and complex. We also > found that basic data structures for trees are inherently recursive, because > all but the simplest trees are composed of subtrees. We discussed numerous > instances where problems of sorting or searching or optimization could be > solved effectively by a "divide and conquer" approach, with which a large > problem is reduced to smaller problems of the same kind.

> Yet we didn't dwell on the recursive nature of those concepts. We > transformed them into equivalent notions that could be dealt with directly > and nonrecursively. Because "at bottom" a computer operates by means of the > physical properties of electrons, which are _not_ recursive.

> For example, in Algorithm 2.3.1T we traversed the nodes of a binary tree by > using an auxiliary stack A, not by using the recursive definition of > symmetric order to de fine that algorithm in terms of itself.

Don't want to quote the whole thing (though there isn't much), but from the sample I feel I'm going to learn from a new perspective (new to me, anyway).

<comment><USER34> This is near causing dissonance for me. I'm certain I had seen a version of his where he did use recursion. Rereading, you are definitely correct that he doesn't.

I know he has program in one of his books where he uses recursion to print the contents of a tree. Maybe I was just confusing that. (Don't have my books handy.)

That said, this is definitely going to make me study those programs more. Hilarious how off I was in my memory.

(The use of goto statements like he does in the main routine cracks me up, btw. Curious to know if these made a measured difference. With Knuth, I would assume so.)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER35> I had the pleasure to attend his 80th birthday conference ([http://knuth80.elfbrink.se](http://knuth80.elfbrink.se)) in Piteå, Sweden where he also premiered his piece Fantasia Apocalyptica for church organ.

We attended the conference as students but still got to see the conference, listen to the music and be at the birthday dinner free of charge. When I talked to Knuth I was amazed by his humility. Every presentation was about how grand he was, but he still was humble and friendly.

They say you shouldn't meet your heroes, but they're obviously not talking about Knuth!

</comment><comment><USER36> Once met Yoda himself on the 59th street platform of the Metra next to the University of Chicago. He needed to get to the airport within 45 minutes. I told him he needed to call a cab. Now I get to tell people I once helped him optimize an algorithm. ;-P

</comment><comment><USER37> "He's a maximum in the community. If you had an optimization function that was in some way a combination of warmth and depth, Don would be it."

I love that quote.

</comment><comment><USER38> The Electronic Coach video of Knuth mentioned in the article:

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

He was ready for Moneyball and sports data science decades before everyone else.

</comment><comment><USER39> >"Here at Google, sometimes we just throw stuff together," Dr. Norvig said, during a meeting of the Google Trips team, in Mountain View, Calif. "But other times, if you're serving billions of users, it's important to do that efficiently. A 10-per-cent improvement in efficiency can work out to billions of dollars, and in order to get that last level of efficiency, you have to understand what's going on all the way down."

I'm interested in this low level systems opimization. What type of jobs hire for this work? What areas in graduate school should one focus in? Is this type of skill set still employable?

<comment><USER40> There's a position like that in my company, open to new hires (only bachelor's needed). The goal is to optimize algorithms and data analysis models that run on our HPC cluster. It basically boils down to changing compiler settings and seeing what runs the fastest.

<comment><USER41> Can you post a link (if there are no anonymity concerns)? Sounds like more fun than my current job.

</comment></comment></comment><comment><USER42> Hmpf, considering that the author spent a whole day with Knuth there is disappointingly little interviewing going on. Other people (e.g. Norvig) are quoted more extensively.

<comment><USER43> At Knuth's current age-related physical state, he probably didn't say much over the course of a day.

<comment><USER44> He still looks pretty healthy and mentally sharp.

</comment></comment></comment><comment><USER45> True Jeff Dean story time (this was directly related to me): when Jeff spoke at Stanford, it was so crowded, Knuth had to sit on the floor (I think somebody eventually noticed and offered him a seat).

</comment><comment><USER46> My Uncle is a researcher and has one of those famous checks from Knuth for pointing out an error in the book. Needless to say, he never intends on cashing it in, and treats it like a little trophy.

</comment><comment><USER47> That picture with Knuth and TeX is really beautiful to me.

</comment><comment><USER48> Funny, _The NeXT Book_ by Bruce Webster referred to Knuth as the "Obi Wan of Computer Science".

I guess we can split the difference and agree on Jedi. :-)

<comment><USER49> Ah but who is the Han Solo of comp Sci?

<comment><USER50> Linus Torvald

<comment><USER51> He's definately chewbacca.

</comment></comment></comment></comment><comment><USER52> I like these two quotes of Knuth where he lets us know how hard he worked.

\--

From this small interview [1]:

"When I'm working on a research problem I generally begin by filling dozens of sheets of scratch paper with partial calculations. When I eventually get to a point where I can think about the problem while swimming, then I'm often ready to solve it."

\--

From this other interview [2]:

"So I went to Case, and the Dean of Case says to us, says, it's a all men's school, says, "Men, look at, look to the person on your left, and the person on your right. One of you isn't going to be here next year; one of you is going to fail." So I get to Case, and again I'm studying all the time, working really hard on my classes, and so for that I had to be kind of a machine.

I, the calculus book that I had, in high school we — in high school, as I said, our math program wasn't much, and I had never heard of calculus until I got to college. But the calculus book that we had was great, and in the back of the book there were supplementary problems that weren't, you know, that weren't assigned by the teacher. The teacher would assign, so this was a famous calculus text by a man named George Thomas, and I mention it especially because it was one of the first books published by Addison-Wesley, and I loved this calculus book so much that later I chose Addison-Wesley to be the publisher of my own book.

But Thomas's Calculus would have the text, then would have problems, and our teacher would assign, say, the even numbered problems, or something like that. I would also do the odd numbered problems. In the back of Thomas's book he had supplementary problems, the teacher didn't assign the supplementary problems; I worked the supplementary problems. I was, you know, I was scared I wouldn't learn calculus, so I worked hard on it, and it turned out that of course it took me longer to solve all these problems than the kids who were only working on what was assigned, at first. But after a year, I could do all of those problems in the same time as my classmates were doing the assigned problems, and after that I could just coast in mathematics, because I'd learned how to solve problems. So it was good that I was scared, in a way that I, you know, that made me start strong, and then I could coast afterwards, rather than always climbing and being on a lower part of the learning curve."

[1] [http://authenticinquirymaths.blogspot.pt/2015/11/maths-in- sc...](http://authenticinquirymaths.blogspot.pt/2015/11/maths-in-sc..).

[2] Transcript from here: [https://github.com/kragen/knuth- interview-2006](https://github.com/kragen/knuth-interview-2006)

<comment><USER53> I was also scared in the first year of college next to all these accomplished programmers and math wizards and it definitely helps!

</comment></comment><comment><USER54> For some reason on this particular article I found it amusing to realize several times that a given concept they were talking about was something I'm familiar with, but it had been translated first from "nerd language" into "layman." Pretty common practice for a general audience, so I'm not sure why it stood out this time. Examples: bytecode, assembly language, frameworks, machine learning. Counterexample: Libraries, where they used the actual word, denying me the silly little pleasure of going "Oh you mean libraries."

<comment><USER55> I actually thought this article did a really good job (certainly better than most) at explaining complex CS concepts.

</comment></comment><comment><USER56> Knuth says in the Preface to Volume 1 that "A shorter version of Volumes 1 through 5 [chapters 1-10] is planned, intended specifically to serve as a more general reference and/or text for undergraduate computer courses; its contents will be a subset of the material in these books, with the more specialized information omitted."

I realize he can't shorten what he hasn't written, but I wish he had been able to write this shorter version years ago, and then work on filling in the details in the now-ever-expanding sequence of in-depth volumes.

</comment><comment><USER57> One fine spring afternoon, I saw Don Knuth at the Golden Gate Park. I think he and his partner were out bird watching or some such thing. I decided not to approach them and let them be.

Seeing him in person is something I'd never forget and take it with me to my grave. Such is the mastery of their craft that even a glimpse of their presence from a distance leaves a lasting impression.

Don Knuth is simply too precious.

<comment><USER58> Partner? Jill is Donald's _wife_ since 1961!

</comment></comment><comment><USER59> There are a few names in CS that stand out to me as legendary. Some examples are Von Neumann and Turing. IMO, Knuth stands among them.

<comment><USER60> I always had hard time imagining how Von Neumann can be so intelligent? There were geniuses and then there was von Neumann.

</comment></comment><comment><USER61> I was unsure of what to get for christmas. Now I know, I want the full collection of "the Art of Computer Programming".

<comment><USER62> It's not a novel to read through, front to back.

Even Dr. Knuth says to skip around and read relevant chapters.

<comment><USER63> It can also be read through fine though. I've gotten the first volume and read through the beginning without too much trouble, although the whole book is so long and dense I don't think I'll be able to finish for a while...

</comment></comment></comment><comment><USER64> Can anyone ID this keyboard depicted in the article?

[https://static01.nyt.com/images/2018/12/18/science/18SCI- KNU...](https://static01.nyt.com/images/2018/12/18/science/18SCI- KNUTH3/merlin_148127301_135dcdcd-2f22-47d1-a749-1b0d997864e5-superJumbo.jpg)

<comment><USER65> Looks like a Logitech G19 to me. I wouldn't have thought Knuth would have a gaming keyboard, let alone one with a screen.

EDIT: I think the other comment is correct, a Logitech G110

<comment><USER66> I'm an old-school programmer (though not as old as Knuth) and I use a gaming keyboard. I like the "click click" and full travel and the new "buckle spring" keyboards I can get aren't as good as the cherry clicky ones.

I learned to type on a a mechanical typewriter in High School and in college punched programs on keypunch machines. A lot of us old-timers use gaming keyboards.

<comment><USER67> Gaming keyboard also have extra keys, which you can map to macro or other things you find useful.

I usually remap the control keys to act as a modifier for Unicode characters (as Caps and Enter are my "Control" keys) but that's not much. I need more keys.

I have 2 keys to switch to the next/previous tab, in browsers, consoles and programming environments- the same keys can switch virtual desktop with a modifier.

I also have a key to invert my screen (black on white vs white on black), a key to either switch to a terminal doing a ssh to a specific server or spawn a terminal and start that ssh, etc.

It takes some time but offer greater productivity. I dislike the ticking of mechanical keyboard, and I really prefer "chiclets" keyboard as they generally require less force to be applied, but I would consider a mechanical keyboard if only for the extra keys.

</comment></comment></comment></comment><comment><USER68> > "Following Dr. Knuth's doctrine helps to ward off moronry. He is known for > introducing the notion of "literate programming," emphasizing the importance > of writing code that is readable by humans as well as computers — a notion > that nowadays seems almost twee."

I liked a lot of this profile, but this came off as kind of weird.

<comment><USER69> I seem to remember older programming languages (COBOL?) being far closer to English-as-spoken as they are today, using, for example Do/END instead of today's more common c-style { and }.

<comment><USER70> Literate programming has next to nothing to do with "English like grammars" or "self documenting" tongue twister symbol table names.

It has to do with writing documentation, and embedding little bits of code to do what the documentation describes, with a special build process to create the compiled program from the snippets within the documentation.

It's kind of the inverse of Javadoc.

</comment></comment></comment><comment><USER71> > More worrisome, perhaps, are the algorithms that are not written by humans, > algorithms written by the machine, as it learns.

Can anyone show even one example of a computer writing an original and useful algorithm on it's own? Total misunderstanding of deep learning and "AI" is so common in today's PopSci.

<comment><USER72> I actually think this is a pretty literal description of automatically learned decision trees, which are used in practice (directly or as sub parts of state- of-the-art techniques like gradient boosting). It is basically learning a series of complex nested if statements.

Edit: also, there is actual work done in so-called "program synthesis", especially employing Bayesian techniques, although it's way more experimental and I haven't heard of it being used "in the wild".

<comment><USER73> Decision tree models are trained by a machine learning algorithm that a human implemented. DTrees don't create new algorithms, they are calculated/trained through the application of an algorithm on data.

You can find these DTree-generating algorithms in any decent machine learning algorithm textbook, and you can execute the steps by hand. For example, on page 56 (or pdf page 68) of [0], you can step through the ID3 decision tree algorithm. At no point is a new algorithm generated.

[0]: [https://www.cs.ubbcluj.ro/~gabis/ml/ml- books/McGrawHill%20-%...](https://www.cs.ubbcluj.ro/~gabis/ml/ml- books/McGrawHill%20-%20Machine%20Learning%20-Tom%20Mitchell.pdf)

<comment><USER72> to my understanding, a bunch of nested if-else statements is an algorithm, and if you change all the conditions in the if statements, you get a different algorithm.

so e.g. ID3 is an algorithm, designed by a human, that produces new algorithms, only indirectly designed by a human. we may be talking past each other, though. i just think it's reasonable to apply the word "algorithm" to things that are simple/stupid enough to be generated automatically, and so it's no big deal to talk about algorithms writing algorithms.

<comment><USER71> > to my understanding, a bunch of nested if-else statements is an algorithm

A bunch of nested if-else statements can be reduced to a boolean expression and a boolean expression is hardly an algorithm. If you change the conditions you simply get a different result not a new algorithm.

</comment></comment></comment></comment></comment><comment><USER70> Irony: "literate programming" means pretty much the opposite of "self documenting code" (AKA - undocumented code)

First write the documentation, then embed relevant bits of code next to the relevant discussions, then have a special compiler / build process create the binary / program.

</comment><comment><USER74> [https://blog.codinghorror.com/the-enduring-art-of- computer-p...](https://blog.codinghorror.com/the-enduring-art-of-computer- programming/) contains images from his Mad Magazine article.

</comment><comment><USER75> > Dr. Knuth has gone so far as to argue that some computer programs are, like > Elizabeth Bishop's poems and Philip Roth's "American Pastoral," works of > literature worthy of a Pulitzer.

I'd love to know which programs he's thinking of.

Any ideas?

<comment><USER76> I think this is from the back of Physically Based Rendering[0] by Pharr, Humphreys, and Jakob (3rd ed). The book is also available online[1].

[0]: [https://www.pbrt.org/](https://www.pbrt.org/) [1]: [http://www.pbr- book.org/](http://www.pbr-book.org/)

</comment></comment><comment><USER77> Donald Knuth's 24th Annual Christmas Lecture: Dancing Links [https://www.youtube.com/watch?v=_cR9zDlvP88](https://www.youtube.com/watch?v=_cR9zDlvP88)

</comment><comment><USER78> I've been at one of his Ask Me Anything-lectures. They are pretty cool, but I feel that they are limited by the audiences questions. If he doesn't get interesting questions then he can't provide interesting answers.

I wanted to ask if he had Autism because he looks, talks and walks as if he had, but I didn't get the chance. I wonder if Knuth has elaborated on the subject? Anyone knows?

<comment><USER26> It's really rude to ask someone about their medical conditions, even more so in public. Please don't do that. It is also not a good idea to attempt to diagnose psychological issues from a distance.

(But if we're playing that game, Wikipedia defines "autism" as "a developmental disorder characterized by troubles with social interaction and communication, and by restricted and repetitive behavior", and Knuth is supremely good at communication and remarkably good at social interaction for a (self-described) "geek" \-- if you go over his life history (e.g. [https://www.youtube.com/playlist?list=PLVV0r6CmEsFzeNLngr1Jq...](https://www.youtube.com/playlist?list=PLVV0r6CmEsFzeNLngr1JqyQki3wdoGrCn)) and consider all his activities -- being part of social clubs and fraternities, helping with the basketball team, dating and getting married, playing pranks on people, the affection with which he talks about his wife and children, his humorous outlook, etc -- then there does not seem to be any evidence of what you're thinking. Even the current article speaks of his warmth. But really, we shouldn't be doing this.)

</comment></comment><comment><USER79> Just out of curiousity, does anyone know what kind of notebooks and paper he's using in the photo captioned "A few notes"?

<comment><USER26> Yes the notepaper with triangular tiling was gifted at Knuth's 80th birthday celebration in Piteå, Sweden: [http://knuth80.elfbrink.se/](http://knuth80.elfbrink.se/) (Sorry I don't remember where I read/heard about this.)

<comment><USER26> Ah one place I ran across this: see 16:05 of Knuth's 2017 Christmas lecture ([https://www.youtube.com/watch?v=BxQw4CdxLr8](https://www.youtube.com/watch?v=BxQw4CdxLr8)):

> I got a nice piece of paper here to work with. They had a conference in > Poland last year [BachoTeX 2016] and they sent me this nice pad of paper and > I like it so much that I decided at my birthday party next month I gotta > give out notepaper that's... [audio drowned by laughter] But actually the > notepaper at my birthday party is going to be triangle... paper. Because I > have a feeling that all kinds of mathematics has never been invented yet > because people haven't been given triangle... [laughter].

</comment></comment></comment><comment><USER80> The world would be such a better place if there were 1000 more people like him. What a wonderful human being.

<comment><USER77> Donald Knuth, Noam Chomsky, David Attenborough. I don't see why we need more arguments to allow human cloning :p

</comment></comment><comment><USER81> DK still gives an annual lecture at Stanford at the end of the year.

Here is this years:

[http://scpd.stanford.edu/free-stuff/live-webinars- lectures/d...](http://scpd.stanford.edu/free-stuff/live-webinars- lectures/donald-knuths-annual-christmas-lecture)

</comment><comment><USER82> At some point, I loaned out Vols 1 & 3 of my 1981 edition to a co-worker then forgot about it. Adios! Same thing happened to my DVD set of "The Prisoner" series with Patrick McGoohan.

Let that be a lesson: If you loan something out, consider it a gift.

</comment><comment><USER83> I remember when I took the programming algorithm class back in college. That was the first time I saw Dr. Knuth's book the art of programming... and I was thinking "what the? Are we supposed to read this?"

</comment><comment><USER84> I just read the outline for volume one, sounds really interesting. Has anyone read V1? What sort of mathematical background is required to understand it? Is it proof heavy and really terse like CLRS?

<comment><USER85> I've read the first three, and attempted every single exercise (besides the few he marks as "suggested research problems"). It took me four years to finish, and I had a MSCS when I started. The first volume is probably the most math-intensive, but also the easiest, since a lot of the math is review. V1 is split into two parts: a pure math half, and then a programming half. All of the programming examples and exercises are done in a custom assembler that he calls MIX, but you can find emulators online to run your programs. I've read CLRS and Knuth and I definitely enjoyed Knuth a lot more - there's just something about his writing and exposition that makes the books compelling. They dare as well as entice you to understand them. It's not really as proof- heavy as CLRS IMHO, and TAOCP covers different ground that CLRS does; the only real overlap there is that volume 3 covers sorting algorithms.

<comment><USER86> If you like the math in Volume 1, or find yourself having difficulty with it, _Concrete Mathematics_ is a good companion (though also challenging). It goes into greater depth on some of the topics in Chapter 1 of _TAOCP_ and some additional directions. It started as a course aimed at providing the mathematical basis for going into _TAOCP_.

<comment><USER85> Yep, that's on my (very long) to-read list.

</comment></comment></comment></comment><comment><USER87> Good article, two things: I noticed looking at the pictures after reading the whole thing in a go...

He looks nothing like Yoda! Wondering what made the author pick that title!

He has/had a standing desk at home!

<comment><USER85> Somebody actually changed the title of the post, so now it only says Yoda and doesn't reference Knuth at all. Seems backwards to me.

<comment><USER87> yeah that's even worse: it's super click-baity now

</comment></comment></comment><comment><USER88> Golang comes to mind when I read this:

"He is known for introducing the notion of "literate programming," emphasizing the importance of writing code that is readable by humans ... "

<comment><USER69> I believe he was thinking far more of something like Jupyter Notebook.

I'm waiting for VSCode to implement a bit of API that would allow me to start on an extension turning comments into first-class citizen, with, for example, diagrams, links, or images.

<comment><USER72> But it's not really literate programming as Knuth envisioned it. A very important point was that you could write things in any order, and then use tangle to produce source code in the correct order for execution. Jupyter notebooks don't enable this, and in practice evaluating cells in the wrong order is a common mistake if you aren't careful (I've often just given up and restarted the kernel).

Imagine if they did, though. You could do something like put all your imports and preprocessing in an appendix. Or even more complicated: something like writing the inner loop of a function first, discussing it, and only afterwards writing the rest of the function and all the scaffolding.

This would be great, but I've yet to see a true literate programming tool that would actually be usable for my day to day tasks.

</comment></comment></comment><comment><USER89> These books are truly amazing and I refer to them often. What I like the best is that they are so thorough that you know they are right, vs. the first google search hit.

</comment><comment><USER90> One thing I found really fascinating in the article is, the author when trying to provide an example of an algorithm used the "Command+F" combination to suggest searching on a page. This is distinctly a mac thing. Not just that it doesn't exist on Windows. Have we moved to a point where using Mac only things is acceptable in a general article like this? I mean, even now the bulk of the machines in the world run Windows, so is that an error in proof reading or is that ok now? I couldn't have imagined someone doing that 10 or even 5 years ago.

<comment><USER91> Not sure why I'm engaging this...

I think it was allowed because that knowledge of the shortcut is ubiquitous enough that it is understood by most everyone.

I imagine the offices at the times use Macs.

I'd also argue that "the bulk of the machines in the world" run unix-like operating systems by no small margin.

It's true though that for most of the past few decades 'Ctrl+F' would make more sense, and it still remains an interesting editorial decision.

</comment></comment><comment><USER92> I love all the Knuth stories in here, shows how much of an impact this man had on us.

</comment><comment><USER93> Don't have time to look through the code right now, but it seems like a lot of these effects could be implemented as cellular automata (a la Conway's Game of Life). Obviously there are some more advanced simulations going on here though.

</comment><comment><USER94> He became bald by 25 :)

</comment><comment><USER95> What NYT thinks devs are doing in Silicon Valley: AI and machine learning hacking in VR 3D

What devs are really doing in Silicon Valley: debugging yet another "undefined is not an function"

<comment><USER96> Most of programming is just moving shit around; not interesting mathematics like knuth has done

<comment> time-domain0 \- IT: Sanitation engineers

\- Developers: Hazmat engineers

\- CS: Civil engineers

<comment><USER97> Sounds accurate to me, but I'm interested if people will downvote you because they don't like the IT line.

<comment><USER98> Looks like it gets worse down the list, so I don't think the IT folk will complain too much.

edit: Yes, whether you feel "Civil engineering" is worse than "Hazmat engineering" is a subjective matter.

</comment></comment></comment></comment></comment><comment><USER99> Except Donald Knuth is 7' tall.

<comment><USER100> Taller than life.</comment></comment>


Show HN: NN bounding box labeler GUI - <AUTHOR> https://github.com/Cartucho/yolo-boundingbox-labeler-GUI <comment><USER2> Cool, is it only using OpenCV?

</comment><comment><AUTHOR> yes! OpenCV version >= 3.0</comment>


What Makes an Entrepreneur? Four Letters: JFDI - <AUTHOR> http://www.bothsidesofthetable.com/2009/11/19/what-makes-an-entrepreneur-four-lettersjfdi/ <comment><USER2> This is a great article, truly enjoy it.

In my own experience, I have learned that there are two kinds of decisions in startups. Any CEO who is capable of trusting his/her own instinct tends to make the right life-and-death decision, which is like avoiding a car accident that never happens.

Decisions that are not life-and-death are much more difficult to make and are in fact more important to the success of startups. What I have learned is that the key is not in making the "right" decision but making any decision right.

As technologists, we prefer to make the "perfect" decision, which means that we would have to have "perfect" data. Typically, in a startup, there are two ways to compensate for the lack of perfect data. One is to wait for more data and one is to seek consensus.

CEO who procrastinates hoping to get incremental data is as deadly as a CEO who jumps to the wrong conclusion before enough data is in. Similarly, a CEO who is afraid to make tough and unpopular decision and hides behind the shield of consensus will almost always lead a startup to the proverbial cliff.

I highly recommend this article ... JFDI

</comment><comment><USER3> Sometimes I find it hard to weigh JFDIing vs the customer development methodology. I see the value in customer development, but coming from a development background, sometimes I don't get the sensation of "getting things done" if I'm not actively coding. I guess once I start seeing more sales, I'll feel better about customer development.

<comment><USER4> The two are not at odds at all. Customer development isn't about not JFDI, it's about doing the _right_ things. Also, customer development isn't something you do before product development, it's something you do alongside product development.</comment></comment>


A Practical Intro to Data Science - <AUTHOR> http://blog.zipfianacademy.com/post/46864003608/a-practical-intro-to-data-science <comment><USER2> >While R is the de facto standard for performing statistical analysis, it has quite a high learning curve

What? R has a ridiculously low learning curve. I remember literally the first time I used R I loaded up a dataset and had a histogram and qqplot within 5 minutes and 3 or 4 lines of code. Just figuring out what libraries I would need to do that in python (and installing them) would probably take me at least 30 minutes.

I think it's still highly debatable if Python is the way to go for general data science, especially if you're spending a lot of time analyzing data. R is more mature, but the tides are steadily moving in python's direction.

<comment><USER3> Some things, maybe most things that a beginner wants to do are easy, but beyond the basics, R has a cliff for a learning curve. It's a complex language with some questionable design choices.

<comment><USER2> I agree with you about questionable design choices, I really don't like developing in R. But if you have some data and you want to know more about that data (data analysis), R + a small handful of packages is the best free environment that I know of. It's not just the basics, this can extend into fairly complex operations on your data (not to mention producing very pretty visualizations).

Data analysis is one of the most important steps in data science, so I think it's worth keeping R around.

</comment></comment></comment><comment><USER4> Pretty decent list of links. However, I feel the importance of SQL has been completely downplayed...there are more hadoop-oriented links than there are SQL. Data retrieval and manipulation is where a data scientist will spend 95% of her time, and SQL is still more ubiquitous by far.

<comment><USER5> Dang, I wish I could find the link to this...an HP data scientist wrote a short essay (something like "Intro to Data Science") and said that the proper collection and cleaning of data is often seen as dirty grudge work that has to be done (by someone else, hopefully) before the real groundbreaking work can be done. However, the author said, this dirty grudge work _is_ the _real_ work.

When I think about, in my data programming related work, I'd say about 5% is doing analysis or executing statistical routines. And 95% of my time is spent on finding, cleaning, and properly normalizing data. This applies to whether you're a solo researcher or Facebook...think about it: Facebook is a pretty good website, but what it excels better at than just about anyone is being a platform to _collect_ personal data in a way that...well, causes you to quite willingly give it your personal data.

There was a presentation where Peter Norvig pointed out a data routine in which someone had implemented with a naive Bayesian classifier with a comment saying that they'd think of something better...and years later, no one realized it was still a todo. Norvig said something like "You don't have to be very smart when you have a lot of data"

<comment><USER6> _> Dang, I wish I could find the link to this...an HP data scientist wrote a short essay (something like "Intro to Data Science") and said that the proper collection and cleaning of data is often seen as dirty grudge work that has to be done (by someone else, hopefully) before the real groundbreaking work can be done. However, the author said, this dirty grudge work is the real work._

It's called data munging. Good short article on dataspora about it a while back:

<http://www.dataspora.com/2009/05/sexy-data-geeks/>

</comment></comment></comment><comment><USER7> I'm surprised no one commented on the cost: 14,400!

Assuming they don't do job placement (didn't see anything about that) then this is a total rip off and is just some people trying to cash in on the data science fad.

Besides, they just listed a bunch of free resources that invalidates the need to go through them, so unless they offer job-placement in an actual data- science-like position, why waste your money on this?

Besides, 12 weeks reminds me of Peter Norvig's "Teach Yourself programming in 21 days"

<http://norvig.com/21-days.html>

<comment><USER8> We apologize that it was not more clear on the site, but we do partner with many companies throughout the program who give guest lectures and provide perspectives from the industry. There is also a hiring day where we match candidates with prospective employers to provide assistance with job placement and prepare our students extensively for interviews.

While we have shown there are many online resources available for understanding data science, we've found that structured, in-person programs provide the best environment for a collaborative learning experience.

Scholarships are also offered for particularly promising applicants and for students in need of financial aid. Please reach out to us directly if you would like to know more about our financial assistance options: firstname.lastname@example.com

</comment></comment><comment><USER9> Happy to finally see an intro to data science article that puts statistics as the #1 skill. While software engineering is also important, all the engineering in the world won't help you extract any meaningful insight from data without a solid foundation in probability and statistical theory.

</comment><comment><USER10> Too many link to click.

It is nice to present the wealth of resources that is available to anyone looking to its skill set in this field.

However as far as course intro goes, it doesn't get me very exited, partly on the way it is worded: Python as a language choice, using libraries that other have build. Would it not be better to teach the basic from basic, and then acknowledge there is a library that can handle that?

Another grip I would have here, as well, is the page formatting: the single column layer you have on that blog does not fit the length of the text you have. I am reading: <http://www.moserware.com/2010/03/computing-your- skill.html> at the moment and apart from the nice picture to look at (who doesn't like shiny), the layout is much cleaner and the information is more readable.

Finally, and as it has been mentioned in other post, you ought to have a small sum up of what 'data science' is (in relation of other used term for describing statistical analysis of dataset) and where it is coming from.

</comment><comment><USER11> I like to know more about the mentioned scholarship. Will it able to cover the whole tuition fee? And who's sponsoring the scholarship?

</comment><comment><USER12> It is interesting idea. But course is expensive.

I hope they will realease course in online form (similar like coursera) and offer it for reasonable price (max 100usd per person).

There are plenty people outside of USA willing to take lessons on this kind of a course.

</comment><comment><USER13> As a software engineer working in the biotech industry I find your posting very interesting and insighful. I am currently pursuing an MS in Bioinformatics at the same time is very interested in Big Data. I think the $14,400 for a 12 weeks program is a great investment. However, the location is not ideal. Do you plan to expand your bootcamp to other cities besides SF?

<comment><USER14> Thanks for the kind words! Right now we are focusing only on our SF class but we may expand in the future. I would encourage you to signup for our email list to stay up to date on any news about the program, and feel free to reach out with any questions or concerns (firstname.lastname@example.com). Best of luck with your masters program and I hope you will keep in touch!

</comment></comment><comment><USER15> Useful link... but I think intro is a little ambitious based on all the content there.

<comment><USER16> Well we might as well split it into Big Data and "Little Data".

Little Data being:

Have a basic grasp of Python and Javascript/D3.js for the pretty visualizations. That and basic statistics. The latter is probably the one developers (at least here) would spend most of their effort on.

"Little Data" in itself can take you a long way.

<comment><USER17> What is D3.js?

<comment><USER18> A JavaScript data visualization library (d3js.org is linked to in the post)

A really friendly place to start understanding it is Scott Murray's tutorial: <http://alignedleft.com/tutorials/d3/>

</comment></comment></comment></comment><comment><USER19> It's time for this term to die.

If it doesn't involve data, it's not science.

<comment><USER20> Back in the good old days, Data Science used to be called Statistics.

<comment><USER21> I used to feel the same way, but (1) calling it statistics downplays the importance of data munging and grabbing/normalizing/managing data and (2) the advent of computational methods and off-the-shelf machine learning and natural language analysis has turned statistics into "one tool in our toolbox" rather than The Tool.

And frankly, even if data science is just statistics rebranded, anything that can get more people to take an interest in statistics is a good thing. If a hype-fueled new sticker is what it takes, then why not.</comment></comment></comment>


Code Commenting Patterns - <AUTHOR> https://dzone.com/articles/my-commentary-on-code-comments?oid=hn <comment><USER2> Love the implicit human narrative.</comment>