Seven Insights into Queueing Theory [pdf] - <AUTHOR> http://www.treewhimsy.com/TECPB/Articles/SevenInsights.pdf <comment><USER2> To anyone who finds these models interesting and wants to learn a lot more - I'd highly recommend Mor Harchol-Balter's textbook: [https://www.amazon.com/Performance-Modeling-Design- Computer-...](https://www.amazon.com/Performance-Modeling-Design-Computer-..). (She is currently a professor at Carnegie Mellon).

(Self-repost from an earlier queuing theory thread).

<comment><USER3> Performance Modeling and Design of Computer Systems: Queueing Theory in Action [https://www.amazon.com/dp/1107027500](https://www.amazon.com/dp/1107027500)

<comment><USER4> I'm sorry to say that this is not a good book on Performance... The organisation is horrid, the examples are terrible - I hope I don't get downvoted for my opinion.

<comment><USER3> Negative opinions go over much better when your argument can convince others with more than saying something sucks. Detailed reasoning and experience etc. It also helps to not mention votes.

<comment><USER4> Yes, however, the interest on this subject is minimal, so I won't bother anybody with my analysis. I bought this book and I sent it back right away, unfortunately.

</comment></comment></comment></comment></comment><comment><USER5> Adding these insights to this intro to queueing theory for developers: [https://github.com/joelparkerhenderson/queueing_theory](https://github.com/joelparkerhenderson/queueing_theory)

</comment><comment><USER6> Despite having a math background, I got stuck on page 1, which is supposed to be definitions, where "Utilization" is used without being defined. With some googling, it turns out this is the ratio of a Poisson parameter to an exponential parameter, under the assumption that arrivals are Poisson distributed and service times are exponentially distributed. Basically, utilization = (average rate of arrivals)*(average service time).

<comment><USER7> As it's used on the first page, "utilization" is just the fraction of time that the "service center" is in use. So if it's not doing any work at all, it would be 0, fully utilized would be 1. I don't think you need to connect it to Poisson distributions or go into much more depth to use it to understand the gist of the rest of the paper. I assume that since this is an excerpt from a book, it would've been defined elsewhere.

<comment><USER8> This throws me though. Because if a service center can process one unit per minute, and the average arrival rate is also one unit per minute, I'd assume the utilization was 1 (or 100%). In that scenario I wouldn't expect the queue to be infinitely long. What insight am I missing?

<comment><USER9> One way to look at is that the utilization is capped at 1, while arrival rate is not.

Assume the processing center can process one unit per minute.

Let's start with a simple case--constant arrival rate at 1 per minute and constant processing rate at 1 per minute.

If the arrival is constant (ie no variation), then indeed the queue size would be 0, because the arrival coincides with completion of processing of previous arrival by the service center. The expected queue wait time is 0.

Now let's look at what happens if arrival rate is variable but average to 1 per minute.

We know the steady state utilization is 1. Because if the utilization is less than 1, the processing center is processing at less than 1 per minute, which means new arrivals would start to fill the queue until the utilization approaches and reaches 1. In other words, the processing center is always busy processing at steady state.

Now, how do we estimate the queue size? Intuitively, we can think about the inter-arrival time. If the next unit arrives at less than 1 minute after the previous, this means the queue grows (since the processing center needs 1 minute to process each unit). Conversely, if the unit arrives more than 1 minute after the previous, the queue shrinks. The number of units in the system (queue + processing center) = queue size + 1. The processing center is always busy, i.e. = 1, and the queue size is lower-bounded at 0 but not upper- bounded. Let p(i) be the probability that the system has i units, at steady state we can express it as,

if i == 0, p(i) = 0

if i > 0, p(i) = p(i-1) * p(inter-arrival time < 0.5) + p(i+1) * p(inter- arrival time > 0.5)

Basically, this says the system will always have at least 1 unit (processing center is always busy), and probability of having i in the system is dependent on probability of previous states i-1 and i+1, and the inter-arrival probability. If the queue size is not bounded, it turns out the p(i) is close to uniform (transition probability from i to i+1 or i-1 is the same at each i, each i feeds into adjacent states, and only boundary condition on i=0), especially for larger i because the boundary condition at i=0 has less effect. And the expected value of a (roughly) uniform distribution that spans (0, inf) is, well, infinite!

Feel free to correct me if I am wrong. I haven't touched probability and queueing theory in a long time.

</comment></comment></comment></comment><comment><USER10> I was surprised to see no mention of Little's law[1]. It's a simple and powerful little theorem with practical implications.

[1] [https://en.wikipedia.org/wiki/Little%27s_law](https://en.wikipedia.org/wiki/Little%27s_law)

</comment><comment><USER11> I've seen a few interesting things pop up on HN recently about queueing theory --this post was also neat: [https://kottke.org/19/01/its-time-for-some- queueing-theory](https://kottke.org/19/01/its-time-for-some-queueing-theory)

</comment><comment><USER12> Is this not basically [https://en.wikipedia.org/wiki/Amdahl%27s_law](https://en.wikipedia.org/wiki/Amdahl%27s_law)</comment>


Beware: Most Mobile VPNs Aren't as Safe as They Seem - <AUTHOR> https://www.wired.com/2017/02/beware-mobile-vpns-arent-safe-seem/ <comment><USER2> The overwhelming message here is nothing is free and if you aren't paying money for your VPN you are paying with your privacy. I'm currently using TunnelBear for phone and computer. It's a little slow to connect but after that is pretty solid. As far as I know, they have strict policy on logging. F-secure is mentioned in the article and I have a good 10 year history with a few of their services. Over all a great company.</comment>


Stealth NYC Startup Kohort Raises $3 Million - <AUTHOR> http://techcrunch.com/2011/04/18/kohort-3-million-seed/

<comment><USER2> > Davis won't say what kind of product Kohort will be, other than it will be > related to social media. The Kohort site is just a landing page which lets > you reserve your Kohort name. You can also follow Kohort on Twitter.

This sucks... why allow people to register without explaining the product?

<comment><USER3> Sounds like a good marketing ploy to me. I reserved my username already. You probably should too. :-)

<comment><USER4> Whatever for? Mark's a good guy, but I have no idea what the app is or whether it's going to interest me.

</comment></comment></comment><comment><USER5> Couldn't find an email address on the site and you guys Tweeted about being on HN so I figure this is the fastest way to get to you:

Always validate/escape user input!

[http://www.kohort.com/thanks.php?myId=%22%3E%3Cscript%3Ealer...](http://www.kohort.com/thanks.php?myId=%22%3E%3Cscript%3Ealert\(%22CMON%20GUYS%20FIX%20THIS%22\);%3C/script%3E)

<comment><USER6> clicked that link, it's just their thank you page?

<comment><USER5> They fixed it.

</comment></comment></comment><comment><USER7> $3 million seed? I've never heard of that before...

<comment><USER8> Does not seem so bad when after hearing $41m seed

</comment></comment><comment><USER9> I think people who raise money and do not want to talk about their products should not be covered while other companies are dying to get attention.

<comment><USER10> Agree completely. How much more proof could you possibly have that TechCrunch only cares about who's raised money?</comment></comment>


TiDB, a MySQL drop-in replacement written in Go, able to run Wordpress - <AUTHOR> https://github.com/pingcap/tidb#run-as-mysql-protocol-server <comment><USER2> How fast is it? SQL on top of KV is tough to make zippy due to metadata and scanning issues.

</comment><comment><USER3> you guys are doing amazing wonderful job, that's really great:) I thought it should be got more eyes on it.

<comment><USER4> Thanks. swingbach.</comment></comment>


Search for $1B Stolen from Moldova Leads to Ex-Council Flat in Scotland - <AUTHOR> http://www.bbc.com/news/magazine-34445201 <comment><USER2>
      Prime Minister David Cameron told a conference in
      Singapore in July: "We are one of the most open and
      welcoming economies anywhere in the world and I want
      Britain to be that country. But I want to ensure that all
      this money is clean money. There is no place for dirty
      money in Britain."

Based on this and other reports, it sounds like Cameron has a lot of work to do.

With motoring offences in the UK, if a car is fined the owner identifies the driver so the driver can be fined - and if the owner claims they "don't know who was driving", the owner gets the fine. So you can't dodge a fine or get a lesser fine by "forgetting".

We should apply the same logic to white collar crimes. If lawyers or corporate service providers are setting up companies with fake details, acting as directors then claiming they "don't know who controls the company", whatever punishments are due to the company's owners should transfer to whoever touched it last.

<comment><USER3> "There is no place for dirty money in Britain."

Quite right - that's what the Channel Islands and the Isle of Man are for.

<comment><USER4> And the City of London Corporation [1][2][3]

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

[2] [http://www.theguardian.com/commentisfree/2011/oct/31/corpora...](http://www.theguardian.com/commentisfree/2011/oct/31/corporation- london-city-medieval)

[3] [http://www.newstatesman.com/economy/2011/02/london- corporati...](http://www.newstatesman.com/economy/2011/02/london-corporation- city)

</comment></comment></comment><comment><USER5> If you're interested in this sort of thing I can highly recommend a subscription to Private Eye magazine, which has been investigating dodgy shell companies and who they are really connected to for years.

(If you've never heard of Private Eye, it combines irreverent humour and hard- hitting investigative journalism, and has been the first to break many of the biggest stories in the British press)

</comment><comment><USER6> I'm a little concerned to see company registration services demonized. I used one for my own company.

Like a domain registration they also usually provide anonymity by declaring themselves as your office address. That's legitimate too as many contractors don't have an office and don't want thier home address published publicly on the uk companies register. That isn't a fraud.

The BBC makes much of the weird ownership structure, but it is not that crazy. The structure described, 2 companies that basically represent people owning a company that basically does work is a tax efficiency. If the co owners own it directly and take thier money as pay not dividend, they pay more tax. If they take it as dividend not pay, it is split by ownership not hours worked. Better for both directors to be companies that charge the main company per hour for work done and then extract the dividend from those personal company seperately. I wouldn't do it as it has some problems like disguised employment but if compliant it is a tax efficiency not an evasion, and not a criminal activity.

I dunno, it's like saying a secure document destruction company is suspicious. It's just a company that provides a service that most users need to do normal productive business.

<comment><USER7> I think you've misunderstood. An IT contractor is generally the director of their company, and there aren't generally any nominee directors. In this case the two people providing the company registration services are actually nominee directors of the company (the same company that received the billion dollar stolen wire transfer!)

<comment><USER6> Literally the same? Well shit they are probably criminals then

<comment><USER7> Yes, read the article.

</comment></comment></comment></comment><comment><USER8> In Delaware, 1209 North Orange Street is the address of over 200,000 businesses including Silicon Valley giants like Google and Apple.

[https://en.wikipedia.org/wiki/Corporation_Trust_Center_(CT_C...](https://en.wikipedia.org/wiki/Corporation_Trust_Center_\(CT_Corporation\))

[http://www.nytimes.com/2012/07/01/business/how-delaware- thri...](http://www.nytimes.com/2012/07/01/business/how-delaware-thrives-as-a- corporate-tax-haven.html)

</comment><comment><USER9> > But they have never been to the Seychelles, and official Seychelles ink > stamps used to register Fortuna United at Companies House in the UK were not > sent from the islands.

> Zirnelyte says suitable stamps can be bought on the online auction site > eBay.

How is a stamp from eBay an "official Seychelles stamp"? Does it just mean the stamps officially used by the Seychellois shell companies to "sign" things, rather than by the government of Seychelles? The way it was said sounds very fraudulent to me (even for a shell company mill), as if they forged the Seychelles registration docs. The image shown appears to be two bland stamps with the same design, each with a company name and a shared address in Seychelles (and from Googling the address, it looks like that's another company registration agent.)

<comment><USER10> The stamps in questions are corporate stamps, not government's: [http://ichef-1.bbci.co.uk/news/624/cpsprodpb/2390/production...](http://ichef-1.bbci.co.uk/news/624/cpsprodpb/2390/production/_85940190_scan.jpg) You can have those made anywhere.

</comment></comment><comment><USER11> Here is a short video introduction, if you were not aware of the scheme: [https://youtu.be/KxsylnDO15w](https://youtu.be/KxsylnDO15w)

<comment><USER12> So the $1 billion is actually just a small portion...this video says the total is $20 billion. Amazing.

</comment></comment><comment><USER13> Scottish companies law is devolved. I should hope the Scottish Parliament could tighten up the rules on SLPs.

Interestingly "money laundering" is reserved, though.

<comment><USER3> Actual creation of company law legislation still seems to mainly be done at Westminster but company registrations are done separately in Scotland and there appear to be some differences like these SLPs:

[http://www.gov.scot/Topics/Justice/law/damages/company](http://www.gov.scot/Topics/Justice/law/damages/company)

</comment></comment><comment><USER14> In search for a cool pilfered billion, they haven't even made it past the first thin veil of LLPs?

What does it even mean to say that Fortuna Limited "has the rights to the billion dollars which disappeared last year"?

<comment><USER3> It says that Fortuna is "owed" that money, presumably in exchange for some goods or services, that would be an interesting invoice to see!

</comment></comment><comment><USER3> Interesting that a "Scottish Limited Partnership" doesn't appear to be the same thing as a Scottish LLP:

[http://www.brodies.com/node/1614](http://www.brodies.com/node/1614)</comment>


Create your own SaaS in 20 minutes: Simple PoC - <AUTHOR> http://github.com/keeb/any-saas

<comment><AUTHOR> This project is based on Docker and runs the same code thats on [http://tryrethink.info](http://tryrethink.info)

<comment><AUTHOR> I'll be presenting this at the Docker Meetup San Mateo hosted by the awesome folks at Edmodo tomorrow night! The event is full, but we will be streaming live!

</comment></comment><comment><USER2> I love it :)

</comment><comment><USER3> awesome work!</comment>


"We're Apple. We don't wear suits. We don't even own suits." - <AUTHOR> http://daringfireball.net/linked/2010/07/19/vogelstein-apple-att?

<comment><USER2> The notion that they don't compromise is a bit flawed. FaceTime was (is?) WiFi only, for no particular reason except that video streaming is demanding.

<comment><USER3> The only reason Apple did that is because Apple would get the blame if the call stuttered.

On the other hand, if YouTube was choppy, you'd blame the network, not the app.

<comment><USER4> I don't follow what logic you used to come to that conclusion.

</comment></comment></comment><comment><USER5> That's one of my favourite Steve jobs stories.</comment>


[Ask HN] What happens to your Internet assets when you die? - <AUTHOR>

Question is : what happens to you Twitter, Facebook and all your internet social assets when you die ? Is there any way to make them "disappear" ?! Shouldn't we start thinking about this now ? In a 100-years period, we'll have a Zombie FB. Don't you think ? <comment><USER2> "In a 100-years period, we'll have a Zombie FB."

And if they're still around in 100 years, FB will probably be selling those dead eyeballs to advertisers. They'll _certainly_ retain the data for analytical purposes, regardless of what you'd like them to do.

But seriously, unless you own the hardware, you don't have _any_ assets on the internet, social or otherwise.

If you own the machines that are presenting your "assets" to the internet, then you own what's on the machine, notwithstanding any third party agreements you have with respect to that data.

Everything else is owned by the providers: domain names, email, web pages, blogs, tweets, FB posts, pictures, everything. The only access you or your heirs have after your death is subject to a service's terms of service, any arrangements you may have explicitly made with the service (assuming they'll even make such an arrangement), and your legal will (assuming).

You may cry a mighty Internet "harumph!", but services don't care, or they don't have to. You may think you or your heirs or estate can win a lawsuit, and maybe you can, but why leave it to chance, and why put your heirs through that?

Find out what the policies are with every provider you have, including domain registrars, and then write your will in a way that the provider will accept and can work with. If you can't come to an agreement with a provider, and the assets are important to you, then think of alternatives. Backup at least, possibly up to not using a particular provider.

In particular, if you don't want to live on as a publicly viewable ghost account, that in Facebook's case might even continue to Like things after death, then explicitly determine how to prevent that (if it's possible) and make arrangements that conform with the provider's requirements.

</comment><comment><USER3> Wow that is really a nice discussion. A very new and innovation way to look into your social assets.</comment>


Why Education Startups Do Not Succeed - <AUTHOR> http://avichal.wordpress.com/2011/10/07/why-education-startups-do-not-succeed/

<comment><USER2> A big part of education startup failure is conflict of interest among all the parties. For an individual teacher to adopt a new technology is not super difficult; you just have to solve a real pain point, or show that your tool can help them actually teach students. The problem here is that teachers have no money. Not only are they rarely given discretionary money to use for the classroom, but they're severely underpaid professionals who are notorious for already spending lots of personal money on their students. No way to monetize this group effectively.

The second layer is District/State boards of education. The problem here is educating (ironic) these former educators on what the classroom needs. Often, these people believe that the technologies available the last time they were in the classroom are sufficient for teachers to do their work. Additionally, teachers have very little pull in this group, as most are elected/appointed officials. This group actually has considerable influence money-wise, as there is a lot of money earmarked for technological purposes. But by and large they are not aware of technologies that are not prefaced by Microsoft, Dell, or IBM.

The ancillary of the second layer is the district/state IT department. Let's just say that the best people in IT don't wind up here, because the pay and work environment are horrible. To save costs, you're constantly looking into open source solutions. Likely, these people will believe your excellent product can be easily replaced by a Wordpress install with a bunch of plugins. Maybe it's really because they just want to prove they can program like any professional (hint, they cannot). So, no support from IT for you.

The final layer is at the federal level, people who make policies. Your best bet here is to have a 20-year Senator who will vouch for your product, lobby for you with all the other old people involved in setting educational policy. Here's a hint though - people think Common Core is a radical change but it's half a century in the making and really doesn't change what anybody was already doing except for adding more testing. Long story short, if your product isn't another way to test students in a standardized manner, you'll get no traction at this level.

So, good luck!

<comment><USER3> Please google: teacher underpaid myth

<comment><USER2> I'm related to 7 teachers, across 3 different states. They have much more education than I do (Masters degrees with lots of continuing graduate education hours), and make less than half the salary. It's not a myth. Keep in mind these are not hourly plant workers or night managers at a grocery store, they are highly educated professionals who work the equivalent time of a salaried year in my profession.

<comment><USER3> 7 teachers cannot beat statistics.

</comment></comment></comment></comment><comment><USER4> Education startups do not appear to succeed because it takes too long to measure their success. You can't just look at graduation rates and senior test scores: you're producing people who will be building and maintaining things for some 30 years, then managing and planning for some 30 more, and you need data points from this entire time span.

We're only really just starting to get big pictures from the changes implemented in the 1960s. It's too early to say very much about the things implemented later on, and we essentially have no data at all on today's startups. That's why they don't seem to succeed: we can't even really know if they're succeeding or not.

</comment><comment><USER5> Great article. Thanks for sharing. I think that the change in time horizons is very important. It can take a long time to see the benefits of education. It can also take a long time for companies to realize the benefits of what they're doing. Outside of Khan Academy, there's not a lot of hockey stick growth.

</comment><comment><USER6> I think organizations may reach education better than companies:

[http://codeforamerica.org/](http://codeforamerica.org/) for instance</comment>


Google's AutoML: Cutting Through the Hype - <AUTHOR> http://www.fast.ai/2018/07/23/auto-ml-3/ <comment><USER2> At Google Next (which happened after this post was published), Google explicitly positions their AutoML product as a _beginner_ approach to model building to get companies up-and-running with machine learning at low time/cost, and not an end-all-be-all approach.

Here's a recording from a session titled "How to Get Started Injecting AI Into Your Applications" which illustrates case studies for AutoML: [https://www.youtube.com/watch?v=O7iT1INWrqo](https://www.youtube.com/watch?v=O7iT1INWrqo)

<comment><USER3> Yeah, the last thing a beginner should be trying to do is come up with a NN from scratch to solve their problem.

If you have a problem that's not amenable to existing architectures then please try to tune that, but it's an advanced problem.

</comment></comment><comment><USER4> His comments about the "dangers" of academic research and PhDs is incredibly strange. The very examples he uses as possibly superior alternatives to the neural search approach are also by PhDs and academia. Possibly the fact that he runs an machine learning trade school is leading to this out of place criticism.

<comment><USER5> Also, it cherry picks examples of failed startups or ideas, but ignores all of the ML that Google did turn into viable end user experiences: Smart Reply, WaveNet, Translate, Speech Recognition, RankBrain, Photo/Image Search, Retinal diagnosis, Waymo (soon), and numerous other components that are used in Android and the Assistant.

The whole point of venture capital or R&D is that you don't know what will work, and expect 40 failures for 1 success. She seems to think that the way science progresses is that you iterate on a Phd thesis until it's "Done" and verified and then it becomes applied. But most Phd theses, even though that survive peer review, end up inapplicable, unused, or forgotten. Not everyone publishes a General Relativity paper. A ton of Phd papers are junk, a good number don't even have reproducible results.

The only way to know if someone will be successful is to try it and let it succeed or fail in the marketplace.

<comment><USER6> > _Smart Reply, WaveNet, Translate, Speech Recognition, RankBrain, Photo > /Image Search, Retinal diagnosis, Waymo (soon), and numerous other > components that are used in Android and the Assistant._

These aren't examples of just productionizing a PhD thesis - they're thoughtfully designed products that solve a real problem.

Unfortunately we've watched as many ML PhD graduates launch startups which are little more than an API wrapped around the key algorithm from their thesis. These startups nearly always fail, because they don't actually address a market need.

> _The only way to know if someone will be successful is to try it and let it > succeed or fail in the marketplace._

There are many ways to estimate potential market size, product-market fit, etc ahead of time. They're not perfect, but they're a lot better than nothing.

<comment><USER7> > These aren't examples of just productionizing a PhD thesis

His point is that sometimes research bears fruit, and sometimes it doesn't. All universities (in my country) now have metrics for how much research _must_ successfully bear commercial-fruit or else they lose funding from the government and the EU. As such, they have commercialisation pipelines that funnel viable commercial research into products. However, even these funding bodies don't expect that anything more than a fraction of research will be commercialisable. That isn't the point of research.

> we've watched as many ML PhD graduates launch startups which are little more > than an API wrapped around the key algorithm from their thesis. These > startups nearly always fail, because they don't actually address a market > need.

Why do you care what someone does with their PhD research anyway?

</comment></comment></comment></comment><comment><USER8> Many of Google's advances in machine learning really do owe their existence to just throwing computers at the problem. Jeff Dean et al realized several years back that there were techniques in the literature that didn't seem to work all that well in the small, but they might work better with a crapton of parameters, if you trained the model with unprecedented amounts of CPU time. They were right: throwing megawatts at the problem is effective.

The line on this forum is that Google's product is its customers' data, but that's never been right. Google's product is, and has always been, dirt-cheap computing. They have a really large amount of computers, they are building more right now, and they want you to use them. The surplus of computer power within Google is what makes Googlers sit around thinking "sure, that was more CPU time than anyone has ever used for anything before, but what if we used 100x that much?"

<comment><USER9> The paper titled "The Unreasonable Effectiveness of Data" (2009) by Halevy, Norvig and Pereira from Google mentions this.

[https://static.googleusercontent.com/media/research.google.c...](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/35179.pdf)

</comment></comment><comment><USER10> So, what should we do instead? The author gives some recommendations:

"Research to make deep learning easier to use has a huge impact, making it faster and simpler to train better networks. Examples of exciting discoveries that have now become standard practice are:

* Dropout allows training on smaller datasets without over-fitting.

* Batch normalization allows for faster training.

* Rectified linear units help avoid gradient explosions.

Newer research to improve ease of use includes:

* The learning rate finder makes the training process more robust.

* Super convergence speeds up training, requiring fewer computational resources.

* "Custom heads" for existing architectures (e.g. modifying ResNet, which was initially designed for classification, so that it can be used to find bounding boxes or perform style transfer) allow for easier architecture reuse across a range of problems.

None of the above discoveries involve bare-metal power; instead, all of them were creative ideas of ways to do things differently."

These seem quite fundamental (except for the last one which sounds like a favorite domain adaptation strategy from the author).

I'm in industry myself, but it's quite hard to come up with fundamental strategies. In particular I'm trying to merge nonparametric Bayesian models with deep networks. By enriching the latent variables in autoencoders to richer priors we might see improvements. Subsequently, we simultaneously need better control variates to do inference in more complex models. See my blog post on the overlooked topic of control variates: [https://www.annevanrossum.com/blog/2018/05/26/random- gradien...](https://www.annevanrossum.com/blog/2018/05/26/random-gradients/). If we really want to be creative we need people from academia on board.

</comment><comment><USER11> We're not going to get very far letting machines guess what we want by making models we can't interpret.

Explainability is important, and critical in applications where lives are on the line.

Explainability where we're guessing what's happening in a black box model won't do either. Nothing but complete transparency of the model and why it's doing what it's doing. Its source code, that makes sense to humans, is needed. Full on model audit. No guessing.

I can think of only one company that's attempting to do this, and it's not anyone you hear working on explainability, including DARPA.

<comment><USER4> If the visual cortex were a machine model, people would be complaining about how we can't explain it and how it's a dangerous black box. They'd probably tout the many optical illusions as demonstrations of this danger.

Yet we don't demand that other humans explain how their visual cortex work. There is a double standard here.

<comment><USER12> I do not approve of the red herring. Either it is visual cortex, or the intelligence and decision making/planning. One works very differently from the other.

</comment></comment></comment><comment><USER13> This has to be one of the worst comment threads I've seen here.

First of all: Fast.ai are a non-profit. There's no ulterior motive here. I think a lot of the commenters here are feeling clever "looking for an angle", when there honestly is none.

Secondly, I really can't think who should have accrued more benefit-of-the- doubt than Rachel Thomas. It's just silly to take the point of view expressed here as insincere or motivated reasoning. None of this means you have to agree with the points raised, the predictions made, or the conclusions drawn. Of course. But the snide tone of many of the comments here is really discordant.

Finally, it's a little...revealing, that there's so much discussion of Jeremy here, including comments that seem to assume he wrote the article. I don't even know what to say about that.

</comment><comment><USER7> 1) "Google's AutoML highlights some of the dangers of having an academic research lab embedded in a for-profit corporation"

2) "We can remove the biggest obstacles to using deep learning ... by making deep learning easier to use"

3) "Research to make deep learning easier to use has a huge impact"

Because this article rants against academics, but is written by an academic, it reads as inconsistent and disingenuous. Wild guess...AutoML and Google are worrying competitors to whatever their business is?

</comment><comment><USER14> I know I sound like a fanboy, but fast.ai and Jeremy Howard are just so level- headed and "practical". I highly recommend anybody that wants to get into ML/DL to try out the 2 coursers they offer. Really fantastic way of teaching, and to apply these problems to real. life. In particular, the emphasis on tabular data (often ignored in academic, but very much used in industry) was very helpful.

<comment><USER15> They're also doing some great research. If all you're familiar with is their (truly stellar) didactic work, give them a little more attention.

</comment></comment><comment><USER16> I have been doing general AI and machine learning since the 1980s. I now manage a team that specializes in deep learning.

My bet is that most of data engineering/data science/designing neural network architectures will be commoditized in 5 to 10 years. Maybe sooner.

</comment><comment><USER17> Isn't the argument between transfer learning and neural architecture search the same problem posed by the "no free lunch" theorem, which essentially states specialized algorithms will always beat generalized algorithms in specific tasks and vice versa?

<comment><USER18> Very few people write assembler code today, because compilers are good enough most of the time. The same can happen if we get generic and robust enough ML tool.

<comment><USER17> Could you expand on that analogy? I'm not sure if a one-model fits-all is comparable to a one-optimizer-fits-all. Wouldn't that be an argument against transfer learning, since we don't have a universal programming language and thus there does exist multiple compilers?

</comment></comment></comment><comment><USER19> "In evaluating Google's claims, it's valuable to keep in mind Google has a vested financial interest in convincing us that the key to effective use of deep learning is more computational power, because this is an area where they clearly beat the rest of us. If true, we may all need to purchase Google products. On its own, this doesn't mean that Google's claims are false, but it's good be aware of what financial motivations could underlie their statements."

Excuse the snark, but:

"In evaluating FastAI's claims, it's valuable to keep in mind FastAI has a vested financial interest in convincing us that the key to effective use of deep learning is more machine learning experts, because ML education is their business model. If true, we may all need to purchase FastAI courses. On its own, this doesn't mean that FastAI's claims are false, but it's good be aware of what financial motivations could underlie their statements."

I can think of thousands of ways that Google could increase the computational power required that would be much easier than the AutoML effort (for ex. simply recommending ridiculously deep models that take 100x to train without giving higher performance). They are putting _so_ much effort into AutoML because it just works. A lot of the things included in later parts of this series are very useful (learning rate search, etc.) and decrease the computational power required, but most people just want to drop a dataset and pick the type of model (say, multiclass image classification) and leave the rest for machines to optimize.

<comment><USER20> > most people just want to drop a dataset and pick the type of model (say, > multiclass image classification) and leave the rest for machines to > optimize.

I think the disconnect here is that you can reuse existing architectures and get state-of-the-art performance without running something like AutoML. It's not clear that creating a bespoke architecture for your specific problem is always better, let alone always a good use of your resources.

<comment><USER19> Frankly, I don't think this is obvious. Case in point: sequential models (granted, probably not yet included in the first batch of AutoML). There are so many ways to model the problem that tweaking each of these ways, in a way that makes sense for your dataset, takes a lot of work.

I've built models that worked fairly OK, only to have a colleague build a separate model that had +10% prAUC by virtue of adding some additional mechanism (say, attention, a different RNN cell, more units, etc.).

I'll also say that this is aimed towards people that are unfamiliar with ML and would have trouble finding and re-implementing the state-of-the-art in their specific field.

</comment></comment></comment><comment><USER21> Meh. As far as I'm concerned, it does _exactly_ what it says on the tin -- democratizes access to custom ML. Will you get a state of the art model out of it? Probably not. Will you be able to train a decent model and deploy it at scale fairly easily? Probably yes. That's the problem they're solving: getting people to use ML/AI without hiring a $400K/yr research scientist.

<comment><USER22> I'm not a businessperson and I try to avoid talking as if I were one, but I don't see what is the, well, business incentive for Google to "democratize access to custom ML". Accordingly, I don't see them even trying to do that.

Rather, it seems to me that their policy so far amounts to an attempt at platform lock-in. If you want to do Deep Learning like Google does, you basically have to use their tools (yes, that's tensorflow I'm talking about) and their data (in the form of pre-trained models) and eventually pay them for CPU or GPU time (you can also pay their competitors, of course).

In fact, I'd take this a step further and say that the whole Deep Learning hype is starting to sound like a total marketing trick, just to get more people to use Google's stuff, in the vain hopes of achieving their performance. However, to beat Google at their own game, with their own tools and their own data, running their models on their own computers... that does not sound like a winning proposition.

<comment><USER21> Well, the tools are free and open source, and other pretrained models are available for download. All that's missing is an expensive PhD or two to make sense of it all, so that option is also available. You can do ML/DL on Google Cloud too in a completely portable way, using, for instance, Facebook's PyTorch and pretrained models for it. You will discover, however, that it's much harder and much more expensive to get anything usable that way, without Google doing most of the yak shaving for you, even though PyTorch is much easier to use than TF.

</comment></comment></comment><comment><USER23> ML = Machine Learning = Markup Language = confusion

<comment> IGI-111 Have some empathy for the loyal afficionados of the ML programming language.

Poor folks must live a constant emotional rollercoaster reading this site.</comment></comment>


Burnout is in the Mind - <AUTHOR> http://geoff.greer.fm/2015/01/07/burnout-is-in-the-mind/

<comment><USER2> This is... this... wow, this guy has no idea what he's talking about.

"I don't consider myself very devoted to my work, but I've been writing code every day for two years."

Yeah, come back when you've been doing it for a decade, kid. Come back when you've been doing it as part of a team, after you've spent days solving a bug that's been preventing your stuff from working, and came from someone else who was in the same hurry you are. Come back when...

I'm going to stop. This is a fluff opinion piece from someone with little experience and wrong facts (33h work-week? lol). I wish I could downvote it.

<comment><USER3> I have done all that. Been coding for 15 years. Worked with the shittiest Enterprise IT dinosaurs. Burnout is definitely all in your head. The longer I do this, they less it bothers me. Sometimes work makes me unhappy, so I'll check out mentally and/or find a new gig. It's never affected me personally.

</comment></comment><comment><USER4> Burnout doesn't come from daily git commits, it comes from frustration and a desire to prove yourself.

It's not just in your head, and jogging isn't going to fix it.

[http://en.wikipedia.org/wiki/Burnout_(psychology)](http://en.wikipedia.org/wiki/Burnout_\(psychology\))

</comment><comment><USER5> I don't understand his argument. I don't think it's a stretch to suggest that burnout is a form of depression and thus burnout exists in the mind. I think the issue is that burnout is a form of depression that is _caused_ by overwork. Overwork is not just about the number of hours worked. The causes of burnout vary drastically.

[http://www.mayoclinic.org/healthy-living/adult-health/in- dep...](http://www.mayoclinic.org/healthy-living/adult-health/in- depth/burnout/art-20046642)

</comment><comment><USER6> yeah, sure burnout is in your mind. but so is depression and other mental illnesses. Doesn't make it any less real.

</comment><comment><USER7> Biased and poorly researched piece. Not sure why it was posted to HN.</comment>


How Atlanta Is Turning Ex-Cons into Urban Farmers - <AUTHOR> https://www.politico.com/magazine/story/2018/12/06/food-policy-incarceration-young-people-atlanta-222758 <comment><USER2> disclosure: I am a former inmate at a regional detention center in the midwest. I work as an engine mechanic now.

Prison quality varies dramatically around the country. Some prisons are only interested in turning a profit or keeping the lights running, so youll be scrubbing dishes and floors for "shit tickets" and soap. These places are miserable. the _people_ who work at these places are equally miserable. they barely earn more than you. These places serve no purpose but to make shareholders rich. they only make money so long as you are there.

Good, state run prisons, have every incentive in the world to offer competent education in farming, machining, or trade (part of what I learned.) A good prison can help heal your soul, and learn about yourself.

The real challenge isnt getting ex-convicts to work, its getting employers to hire them. Since in the US youre legally required to disclose your former convictions and felonies, most ex-convicts are barred from ever rejoining the workforce (or society for that matter.) Its biblical retribution.

convicts arent evil demons. Most of the circumstances that landed them in prison would really surprise you. Entrepreneurship might just be the only way to break out of the sorry cycle of unemployment, and I for one really hope Atlanta turns this into something sustained.

<comment><USER3> This isn't biblical retribution. In the Bible, there are consequences for crime, for sure… but there are also the concepts of restitution and restoration.

You weren't punished forever. Forgiveness existed.

You weren't in debt forever. There was an end in sight.

Look up "Jubilee".

IF ONLY we had that today.

I think the only thing coming close to this concept has to do with your credit history, and things falling off after 7 years.

<comment><USER4> > _The possible redemption from the predicament of irreversibility - of being > unable to undo what one has done - is the faculty of forgiving. The remedy > for unpredictability, for the chaotic uncertainty of the future, is > contained in the faculty to make and keep promises. Both faculties depend > upon plurality, on the presence and acting of others, for no man can forgive > himself and no one can be bound by a promise made only to himself._

\-- Hannah Arendt

</comment></comment></comment><comment><USER5> > _"I was so used to seeing death that I didn't know how it'd feel to see > something grow," Trent said. "To see plants grow full of life, from > something I control, it's probably the best feeling in the world._

This made my whole day, maybe my whole week. I can also say I agree wholeheartedly. There's something magical and healing about plants, and getting your hands in the dirt. I highly recommend it.

</comment><comment><AUTHOR> What I really liked about this article is that this idea looks like it could be applied just about anywhere. What I think the folks in Atlanta need to do next is to produce a manual that shares what they've learned, what works and what doesn't.

Then you could realistically launch in other cities like Detroit that appears to be tailor made for this type of program.

<comment><USER6> Similar program in Oakland, California [http://plantingjustice.org/](http://plantingjustice.org/)

<comment><USER7> Yet another. West coast I think. [http://www.daveskillerbread.com/secondchances/](http://www.daveskillerbread.com/secondchances/)

<comment><USER8> So that's what they mean by "killer" bread. On a more serious note, of the 12 ex-felons on their website, 2 are black males and 5 are women. This is highly nonrepresentative of prison demographics.

<comment><USER9> It seems likely that, for the same reasons normal companies prefer not to hire ex-felons at all, Dave's Killer Bread might prefer to hire ex-felons who are slanted toward the nonviolent end of the ex-felon pool.

</comment></comment></comment></comment></comment><comment><USER10> This is one of the most positive articles I've read all year. This program looks so powerful as a community driver. I can't wait to see what will change in the next 20 years if this keeps growing. The picture of people doing yoga was great. I'm not interested in churches as a community event, but if my town had a movement like this I'd definitely volunteer if it was accessible.

</comment><comment><USER11> Such an awesome program and a great way to tackle multiple tough problems (how to reduce recidivism rates; how to solve the food desert problem in urban areas; how to improve the health & nutrition of the black community) with one solution.

Programs like this really give me hope, I wish there were more incentives from the government to spark innovations like this; monolithic solutions like food stamps and medicaid are strong programs that I support, but on the other end I'd like to see more funding for "micro-service" programs like this that solve issues on a census tract scale.

</comment><comment><USER12> Atlantan here. I got a bottle of their hot sauce with my CSA and it's really good. I'm not normally a big vinegar-sauce guy, but their recipe has lavender in it and it's pleasantly funky. Recommended!

<comment><USER13> Ooh, I love the smell of lavender, but I've only had it in desert foods, which didn't work for me (lavender and lemon cake really rubbed me the wrong way.) I've never even thought of lavender in more savory food.

</comment></comment><comment><USER14> I'm surprised this is understood so positively. The article is revealing how much discrimination is happening. It is obviously being economically rooted, also if you look at the history.

That being said, farming is the least economically interesting thing to do.

<comment><USER15> What would be more interesting, in your view?

<comment><USER14> I'm not saying this is not interesting but this is picked up surprisingly positively. But if you ask in terms of solutions, it seems to make more sense to tackle the socio-economic root causes instead of creating another vicious circle.

<comment><USER15> And those root causes are?

<comment><USER14> I think you should try to think for yourself. It's kind of unfair that you answer with only are fourth of the words. ;-)

<comment><USER15> Sometimes I absorb, sometimes I deliver, e.g., [https://news.ycombinator.com/item?id=18380654](https://news.ycombinator.com/item?id=18380654)

You made an assertion, I'm curious how you will back it up, if at all.

The stage is yours.

<comment><USER14> Alright ;) My argument is purely based on observing the past and the present. Georgia has a history of slavery, one might argue the state has his wealth build on that, the peach being the symbol of it. Virtually all of the slaves had African American heritage and self-speaking low income.

Of course slavery has become illegal, segregation rules as well. But obviously you cannot make the past disappear instantly. Nowadays there are areas in which there are only black people living, those areas are unfortunately poor and large. Presumably a lot of crime happens there, which should also be no surprise because the area is so poor. People get imprisoned, even worse, sometimes the police has a negative bias towards black people.

So yes, and nowadays the state endorses putting the people back on the field? These seems almost insulting to me. Probably it's easy for me to think like this, I don't live in the U.S. but on the other hand probably all developed nations have a archaic past. It's one thing to deal with it and another thing to pretend it didn't happen.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> It's amazing what a living wage job will do for people.

</comment><comment><USER17> I am by no means a TED fan but this one by Ron Finley is amazing / inspiring.

"It's like printing money."

[https://m.youtube.com/watch?v=EzZzZ_qpZ4w](https://m.youtube.com/watch?v=EzZzZ_qpZ4w)

</comment><comment><USER18> Reminded me of this: [https://www.benjerry.com/whats-new/2017/03/reforming- crimina...](https://www.benjerry.com/whats-new/2017/03/reforming-criminal- injustice)

</comment><comment><USER19> I'm curious as to how they manage rival gang factions. In the first picture alone I noticed three gang signs. Perhaps they stick to their own groups? Not sure but would be interesting to know how that works.

<comment><USER20> That stood out to me as well. Palm inward on the peace sign is considered offensive to some and the looks on the faces of the guys with the gang signs do not look happy at all.</comment></comment>


Knuth: Computer Programming as an Art (1974) - <AUTHOR> http://www.paulgraham.com/knuth.html <comment><USER2> On the subject of art and programming, I really like how Fred Brooks described it in "The Mythical Man-Month":

 _The delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of imagination. Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself._

I wrote more on this subject in "Why I Love Coding" [http://henrikwarne.com/2012/06/02/why-i-love- coding/](http://henrikwarne.com/2012/06/02/why-i-love-coding/)

<comment><USER3> Bertrand Russell also had this to say: _Mathematics, rightly viewed, possesses not only truth, but supreme beauty—a beauty cold and austere, like that of sculpture, without appeal to any part of our weaker nature, without the gorgeous trappings of painting or music, yet sublimely pure, and capable of a stern perfection such as only the greatest art can show._

I think this could equally be said for computer programming, except it is given life. We can see theory animated.

</comment></comment><comment> jim-greer Programming is much more of a craft than it is either an art or a science. Good craftsmanship combines beauty with utility, as does good coding.

Programmers work with abstractions, rather than with wood or clay. And their craft is as cerebral and intellectually demanding as an art or a science. But it's still a craft.

<comment><USER4> I agree, craft is much more appropriate.

I think this is a confusing essay, because in everyday speech "art" is employed to mean something very different from "an art" and we get lost in semantics. The continued references to obsolete definitions confuse things further.

In practice, the phrase "an art" is usually used in the same way as "an artform", as it is not meant to be taken literally; a commentator may say "there's a real art to mastering the offside trap" in football, but he does not mean that the defender should be put in a glass case in a contemporary art gallery.

The whole art/science classification of programming appears to me to be people defending their philosophy or encampment. If you're working in formal methods, you're likely to say "it's about the science", but if you're hacking the last cycle out of a console processor in the games industry you might say "wow, that was really clever, it's really an art this isn't it?"

I'd say both of these views are daft. "Science" is usually synonymous with Physics/Chemistry/Biology, which are inescapably different from programming or Computer Science. Similarly, fine arts is not isomorphic to programming.

What we usually do is much more like a craft. Sure, it has elements of engineering and maths, and in CS research we borrow some of the scientific method some of the time, but you could probably say the same about any craft, e.g. making jewellery, pottery, etc.

All crafts can strive for both beauty and utility, and can borrow from scientific methods and engineering when appropriate, but "pure" science or "pure" art they ain't. There's no ground truth in craft, and there's a strong degree of utility, which precludes it from being science or art respectively.

I've heard this discussion dozens of times. Always the mathematicians want CS to be a science, and the hackers want it to be an art or maybe engineering, but I think the argument is counter-productive. Programming is quite unique, but if you really want a relative description, it's kinda like a craft that uses certain maths and engineering in places.

I think dropping "science" from "Computer Science" would help immeasurably. Simply renaming a university department to "Computing" might stop students and staff worrying what they are.

<comment><USER5> I agree, but I'll go further than you - I don't think this essay is confusing at all. It's simply nonsense - the kind of thing someone clever writes when they're discussing a subject completely outside their area of competence.

CS can be a craft. It's not one of the arts, not even if it's beautifully put together, because the arts are not primarily about technique - they're about capturing and distilling human experiences using allusions and associations to (re)create those experiences. Fluent technique is a useful tool that help with that, but it's not the point.

(Modern art is a bit more limited than that, but that's more or less what art meant for most of Western history.)

The experiences created by the most timeless art are focused, but also ambiguous and complicated. You can get lost in them, and although there's often a clear theme, you can't define the rest of what's happening with absolute final precision.

That's almost exactly the opposite of what good code does. Which is why "That's a clever, clean solution" is an experience that exists in the craftsman's world, and is either peripheral or completely absent from an artist's view.

>I think dropping "science" from "Computer Science" would help immeasurably.

At my university the joke was always that it should be called "Computer Studies." Only a nugget of algorithmic research is genuinely scientific, and that lives in a tiny corner of the rest of the Pure Math. There could be a lot more formal provability, but going down that route would put a lot of programmers out of work, because the level of difficulty is much higher than that needed to crank out some JavaScript.

What's left is usually neither rigorous nor beautiful.

<comment><USER6> > I agree, but I'll go further than you - I don't think this essay is > confusing at all. It's simply nonsense - the kind of thing someone clever > writes when they're discussing a subject completely outside their area of > competence.

I'm not sure what you're implying here, but Knuth does know what art is, as he almost majored in Music. See this for some recent work: [https://www.youtube.com/watch?v=e_1a6bHGQGo](https://www.youtube.com/watch?v=e_1a6bHGQGo)

<comment><USER4> > I'm not sure what you're implying here, but Knuth does know what art is, as > he almost majored in Music.

What are you implying? That studying some Music makes you an artist?

</comment></comment></comment></comment></comment><comment><USER7> Great read. Indeed programming is not a 'gentle art', I would say it's a 'brutal art'.

There was an article outlining a continuum between art and science, where engineering was somewhere in the middle. Art is the least rigorous of them, while science has the most rigor.

Being a science enthusiast, reading on quantum physics, evolutionary biology, etc., I've learned more/less how scientists think. It has a lot to do with coming up with not only good explanations, but explanations that are extremely hard to vary. Explanations that risk falling apart if you try to change any aspect of it. This together with a mountain of evidence supporting said explanation, makes for good science.

Art on the other hand, is arguably vague by definition. Art that is doesn't leave room for interpretation is often bland. Art also has a huge human component, whereas science tries to do away with it.

In my opinion, programming can easily be both an art and a science. There's no need to constrain it to either one. On one hand, you have the mathematical theory of information, describing a hard-to-vary explanation that is backed up with great math(s). On the other, you have an infinite set of tools from which you can craft whatever your imagination is capable of coming up with. Programming, having its foundations in mathematics, leverages its infinite potential, and with it the possibility of creating both works of art, and scientific facts. It is this universe of possibility that takes only the toughest of minds to venture and explore.

</comment><comment><USER8> Art can occur when the same person is both the source of the requirements for the program, and the implementor of the program. Much of the art is in the coming up with the specification: that is the concept in the art. The concept can be skillfully rendered into code. Concept + skillful rendering = art.

<comment><USER9> What about algorithm problems for with the most efficient Big-O solution is known? How can you "skillfully" render code when there is only one best possible way to do it?

I would argue that in those cases, programming is not an art because the arriving at the solution is very mechanical and there is literally zero room for creativity. Thus imo this answer isn't broad enough to fully define "Art"

<comment><USER10> Change the constant.

Change the x that the big O is about, for example by using vector instructions.

Implement a theoretically less efficient algorithm that is faster (examples: switch to a O(n^2) sort for small data set, or to a linear search for smallish arrays)

<comment><USER8> Use data with a smaller size N, and do something more interesting with it.

</comment></comment></comment></comment><comment><USER11> " The moral of this story, it seems to me, is that we should make use of the idea of limited resources in our own education. We can all benefit by doing occasional "toy" programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit. We shouldn't live in the lap of luxury all the time, since that tends to make us lethargic."

I love the way Knuth expresses himself.

</comment><comment><USER12> I take for Science the natural and social sciences (see Wikipedia article on Science). In other words, Physics and all its sub divisions. In this respect, programming is not a science. CS is mostly a sub division of Math (also, not a science). Programming is a mix of engineering (that is finding an optimal solution given a set of known tools to a non-universal problem) and art - anything that allows for creativity in the forming of a finalized product. Most engineering disciplines have an aspect of art in them, but programming is perhaps the most artful thanks to the incredibly wide range of close-to- optimal solutions. But programming is also one more thing: a social process, the process of organising people and their work (which is neither science, nor math, nor art).

</comment><comment><USER13> I'm only 3 months into coding but I've already heard about Knuth's books. This is a great intro to his writing, I'd like to read more.

</comment><comment><USER14> Why is it that "it's more art than science" gets so much use, whereas "it's more science than art" is never used? We use the former to explain why a given process is not deterministic -- for example, appraising artwork, drafting a business plan. Why is it never necessary to explain that a process is deterministic?

<comment><USER15> Because deterministic processes are easy to predict and therefore boring? :)

</comment></comment><comment><USER16> Love this part, "In fact, when I first picked up a dictionary in order to study the words "art" and "science," I happened to glance at the editor's preface, which began by saying, "The making of a dictionary is both a science and an art.""

<comment><USER17> Also

      "The science without the art is likely to be ineffective;
      the art without the science is certain to be inaccurate."

</comment></comment><comment><USER15> Paul Cronin: Are you an artist?

Herzog: Never. All I've ever wanted to be is a foot soldier of cinema.

</comment><comment><USER9> Knuth has a very abstract and fuzzy definition of "Art." Personally I feel "art" possesses a more concrete definition.

When the most efficient solution to a problem isn't known we rely on art and design to fill the void. When the path to the most efficient solution of a problem is known we rely on "science" or technical procedures to deduce the best possible answer.

For many problems in programming we know the best possible solution. However, for most of the apps we build to solve problems in the name of entrepreneurship or business, no efficient solution is known. In fact, in these situations, the problem isn't even clearly defined. When we don't know the "best" solution we use intuition and creativity to come up with a solution that we only intuitively know to be somewhat efficient.

Programming isn't the only area where this occurs. All of engineering relies on art and design to solve problems where the most efficient solution isn't known.

For example, what is the shortest distance between point A and point B? The answer is a straight line. There is no design or art as part of this solution because a straight line is mathematically proven to be the most efficient possible answer. The answer, in essence, was calculated and thus no "art" or design was involved. Utilizing art in this case would be as pointless as drawing an artsy squiggly line between point a and point b.

Now, allow me to modify the problem to make it a little more complex. Instead of calculating the shortest path between two points, how do I find the most efficient way to transport a person from point A to point B?

The most efficient answer is mind boggling complex, you have to account for the personalities and definitions of "efficient" for every possible person you can transport, energy, speed, obstacles etc etc. There probably is a most efficient solution but know one knows it.

Here, where it is very hard for us to deduce the most efficient solution we rely on Art.

With "art" we can come up with multitudes of solutions to the problem on how to transport a person from point a to point b. Cars (thousands of different models), flying vehicles (thousands of different innovations as well) are two possible examples out of many forms of locomotion. The reason why there are so many models/solutions is because we can never concretely determine which "solution" was the most efficient.

This is what we mean when we use the word "Art" in the context of "The Art of Programming" or "The Art of combat." We are essentially describing a problem domain space that is so complex our pathetic human minds our reduced to a sort of aimless wandering (aka creativity) to come up with a solution that isn't even the most efficient one.

I use the word aimless because we iterate over our solutions endlessly in an endless quest to arrive at the best solution. The "quest" is essentially endless because our "path" is aimless. We will never ever create the most efficient OS or iphone app of all time because we don't even know what the hell that even means. Instead we are cursed to iterate endlessly over our programs creating version after version for all eternity.

The majority of problems in the real world rely on a bit of "art" to arrive at a solution. In fact, most of the problems where an "efficient" solution is known are just theoretical conjectures that only exist in an idealized virtual universe.

I see this as a good thing. Art is fun.

</comment><comment><USER18> I've always felt writing working software was like creating art. I am pleased when something works and does something interesting after a long effort.

</comment><comment><USER19> > Meanwhile we have actually succeeded in making our discipline a science, and > in a remarkably simple way: merely by deciding to call it "computer > science."

Well not only that but we actually stuffed two misnomers in there. It is not really a science, and it is not really about computers. Chip design, graphics, storage, input devices is more about computers as such.

<comment><USER20> Peter Naur (who unfortunately passed away recently) suggested the term "datalogy", to indicate that computer science doesn't necessarily have anything to do with computers, but instead is about the treatment of data[0]. The term "datalogi" is actually used in Denmark instead of "computer science".

0: [https://en.wikipedia.org/wiki/Computer_science#Name_of_the_f...](https://en.wikipedia.org/wiki/Computer_science#Name_of_the_field)

<comment><USER4> How does this fit with, say, designing an ergonomic phone interface? Or constructing quantum computers using optics? I think this is another example of one person calling Computer Science what they would like it to be, because of their background.

<comment><USER21> Designing an ergonomic phone interface can be grouped under communication design, thus art. Constructing a quantum computer using optics clearly falls into the physics department, at least until physics spins off an engineering department for quantum stuff, like it spun off mechanics and electronics in earlier centuries.

I consider the term "computer science" historically motivated and anachronistic. Similar to how old people would stereotypically describe their child's job as "something with computers", we muddled subtopics of various sciences together just because they're doing "something with computers".

With computing technology and methodology now permeating nearly all areas of science, art, and engineering, maybe it's time to tear down the computer science departments and reintegrate their pieces back into the appropriate departments.

Or maybe we shouldn't, for we would lose the extremely diverse curriculum that a CS degree includes.

</comment></comment></comment></comment><comment><USER22> Practically anything can be performed at the level that it would be considered an art.

</comment><comment><USER23> I start having a real tough time with this "code as art" argument when "code" becomes little more than gluing some Rails bullshit together.

<comment><USER21> This fits in well with the "code as craft" argument presented in the comments here. Most craftsmen need to make a living by producing rather boring, functional pieces in a large volume, while occasionally taking the time to manufacture an intricate masterpiece.

In this sense, your run-of-the-mill Rails app is the IKEA table of coding.

</comment></comment><comment><USER11> "A knowledge of the Science of Number is of minor importance; skill in the Art of Reckoning is absolutely indispensible."

I laughed out loud at that.

</comment><comment><USER24> I believe the title should be "Knuth: Computer Programming as an Art"...

<comment><USER25> Yes. We changed the title from "Paul Graham: Programming as Art".

Submitters: please use the original title except when it is misleading or linkbait. This is in the HN guidelines: [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

</comment></comment><comment><USER26> I lived the day to see YC giving credit to PG for an article written by Knuth.

What's next? Symphony No. 9 by Paul Graham? Theory of Relativity by Paul Graham? The Bible? :-)

<comment><USER27> Title now changed from "Paul Graham: Programming as Art" to Knuth:

<comment> ezequiel-garzon OK, but why does PG host this? It's freely available: [http://dl.acm.org/citation.cfm?id=361612](http://dl.acm.org/citation.cfm?id=361612)

<comment><USER28> That one is a scanned PDF; its contents don't appear to be indexed by, e.g., Google; its availability is dependent on the continued goodwill of the ACM.

Paul Graham's copy is plain HTML, sitting on the open web where anyone can see it and index it, and while for the rest of us its availability is dependent on PG's continued goodwill presumably _he_ likes being able to rely on it staying there as long as he wants unless he's explicitly forced to take it down somehow.

<comment><USER29> What a bunch of lame BS excuses.

Searching for "Computer Programming as an Art" the PDF comes up as the second link (below PG's rip off). Not that it's even relevant because it's given as a direct link.

A scanned PDF is a closer reproduction to the original presentation, and easier to save for later to read.

I trust the ACM's "goodwill" to continue hosting it more than I trust it to remain on PG's website.

<comment><USER28> > the PDF comes up as the second link

Sure, if you search for _its title_. But if you search for text within it, you'll find it doesn't come up at all.

> I trust the ACM's "goodwill" [...]

Sure. My suggestion is that _Paul Graham_ trusts his own goodwill more than the ACM's and that that's one reason why he's put a copy on his website.

</comment></comment></comment></comment></comment></comment><comment><USER30> "How did they develop their skill? The best film makers through the years usually seem to have learned their art in comparatively primitive circumstances, often in other countries with a limited movie industry. And in recent years the most important things we have been learning about programming seem to have originated with people who did not have access to very large computers. The moral of this story, it seems to me, is that we should make use of the idea of limited resources in our own education. We can all benefit by doing occasional "toy" programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit. We shouldn't live in the lap of luxury all the time, since that tends to make us lethargic. The art of tackling miniproblems with all our energy will sharpen our talents for the real problems, and the experience will help us to get more pleasure from our accomplishments on less restricted equipment."

So true. Robert Rodriguez filmed El Mariachi with almost no resources. It's why the demoscene produced - and still produces - such amazing creations within its self-imposed strict limits. It's one of the reasons why the Raspberry Pi is so popular and why you see the most beautiful ARM assembly on the Gameboy.

And conversely I think it's why Web development is collapsing under the weight of too many shiny things. It's lethargic and living in the lap of luxury. I watched a video the other day of AirBNB talking about the evolution of its Web site. The 2008 version was fine: Rails, a database and dynamic page output. The 2015 version was insane: Rails, React, Node, all sorts of dependencies, some stuff I'd never heard of but that the speaker assured was good, complex mobile optimization when you could instead, you know, just write lean and mean mobile-friendly HTML.

Limit yourself instead and see what happens - the results might just be awesome.

<comment><USER31> I think you're mixing up the intended use of the "toy project," i.e. skill development, with the complexity of a real world project with a growing number of use cases, including a proliferating number of mobile devices and features –– just something to keep in mind.

<comment><USER30> I was stirring :) I think that it's not coincidental that Web development frameworks are collapsing under their own weight and programmers are going mad because there's just too many shiny things.

</comment></comment></comment><comment><USER32> If we define an art as strive to reach an aesthetic global optimum, by balancing form and meaning (syntax and semantics, if you wish, design and implementation) with attention to every single detail, then [some] programming is an art without a slightest doubt.

<comment><USER9> Aesthetic global optimum can never be reached as it changes with time and differs among people. We are cursed to eternally iterate over our programs in attempt to reach this lofty goal.

Let me know if you've seen any program that can be described as aesthetically optimal.

<comment><USER32> > Aesthetic global optimum can never be reached

Do you honestly think that writers, painters or composers doesn't know it, or it stopped them from striving?

Millions of little pieces - Data modules from GHC, especially logic, lists, big chunks from Erlang stdlib, lib9, libbio, libutf from Inferno, parts of various Lisps, tons of code from carefully written books (PoFAD, PAIP/ALMA, OnLisp, etc) well-crafted projects like nginx, or even something like this:

[http://karma-engineering.com/lab/wiki/Bootstrapping8](http://karma- engineering.com/lab/wiki/Bootstrapping8)

[shit removed]

<comment><USER9> Dude, I wasn't even arguing with you. It's a true statement.

My response was not meant to be in opposition to yours, it's just a remark. There was no need to say that. Don't start shit. Your comment needs to be flagged.

<comment><USER32> OK. Sorry. Flag it if you wish. It seems that I should stop reading Russian political forums.

</comment></comment></comment></comment></comment><comment><USER33> Paul Graham is no Knuth

</comment><comment><USER34> "According to most dictionaries "science" means knowledge that has been logically arranged and systematized in the form of general "laws.""

Ahh yes, the logical arrangement.

      Programming Law #1: Thou shalt tab to indent.
      Programming Law #2: Nested loops shall indent deeper to the right.

How about the six laws of depth in art?

      1. Perspective - 2-point, 3-point...
      2. Lower on canvas is closer, higher is further away
      3. Atmosphere - clearer is closer, blur is further
      3b. Color intensity - higher saturation is closer
      4. Chiaroscuro - the next alternation is further (combination of #2 and #5)
      5. Overlap - this behind that
      6. Scale - bigger is closer

Art has plenty of laws, some very complex, but you won't find them in Google. You have to find the artists' artist and mix her color 5000 times, like roll- on-your-head Shaolin Temple skull-hardening. Return to the 36th Chamber and draw with charcoal attached to the end of a long stick of bamboo, then ring the bell, for another style has died.

<comment><USER35> > You have to find the artists' artist and mix her color 5000 times, like > roll-on-your-head Shaolin Temple skull-hardening. Return to the 36th Chamber > and draw with charcoal attached to the end of a long stick of bamboo, then > ring the bell, for another style has died.

Or, you know, go to art school.

<comment><USER35> Why the downvote aggro for a tounge-in-cheek quip?

<comment><USER34> It wasn't me. I think art school should help, but you never know what you're going to get there. A lot of info slips through the cracks.</comment></comment></comment></comment>


After my PhD how much salary should I expect as a professor of computer science? - <AUTHOR> http://academia.stackexchange.com/questions/2346/after-my-phd-how-much-salary-should-i-expect-as-a-professor-of-computer-science

<comment><USER2> I think geting tenure as a professor is harder than doing a PHD.</comment>


Ask YC: Concurrent/multithreading programming books? - <AUTHOR>

I would like to start getting much deeper into multithreading and concurrency issues in programming and would like to know what are good books out there?  I'm not necessarily looking for OS books, but rather, generic software-engineering oriented books on multithreaded programming.<p>Thanks for the feedback! <comment><USER2> Concurrent Programming in Java by Doug Lea.

(Though do your actual programming in a more powerful language such as MzScheme if you have any choice).

</comment><comment><USER3> The Erlang one:-) It's all about concurrency, but doesn't do threads.</comment>


Ask Joel Spolsky: Pricing – what changed? - <AUTHOR> In 2004 you stated "I have certain competitors that [...] charge small customers per-user but then there's a "unlimited" license at a fixed price. This is nutty, because you're giving the biggest price break precisely to the largest customers, the ones who would be willing to pay you the most money."[1]
Today fogbugz has a "unlimited" license as well as substantially lower per user pricing if buying 150+ licenses.[2]
What changed?
[1] http://www.joelonsoftware.com/articles/CamelsandRubberDuckies.html [2] https://shop.fogcreek.com/FogBugz/default.asp?sCategory=HOSTEDFB&sStep=stepEnterEmailAddress&fccmp=_buyfb (click the prepay radio button) <comment><USER2> It's always felt to me that 'unlimited' over a certain amount makes it easier for large companies to purchase/subscribe because it means they don't have the overhead of tracking usage.

"Whoops, we're only licensed for 172 users, but we just hired Bob and we now need to get a new license key for him!" causing hours or days of delays just isn't appealing. Saying "unlimited" to the companies that have hundreds of users might be leaving some money on the table, but also might be netting some extra sales you might have otherwise lost due to fear of complex licensing.

<comment><USER3> If it is installed software, you also have to do license audits, which usually require going on-site. Much easier just to slap an unlimited license on a product.

</comment></comment><comment><USER4> It could also be the lessening influence of Microsoft on the software industry. A decade ago, big companies were used to paying per seat because the bedrock apps like Word and Visual Studio were always licensed per seat or per server. With the rise of smaller competitors offering online tools and software either for free or with site-wide licenses, big businesses might try to avoid the hassle of tracking every user added and subtracted.

(It's also possible that Microsoft's pricing model has less influence on Joel since he's been away from the company for a long time, but that's just speculation.)

<comment><USER5> Now that's why I come to HN - simple, straightforward insight that looks obvious but everyone missed it.

Thank you. I will now quote you as if I had though of it myself in future conversations.

<comment> mh- _I will now quote you as if I had though of it myself in future conversations._

..and _that_ is why I come to HN.

</comment></comment></comment><comment><USER6> He was wrong; Atlassian's pricing cut the floor out from the market, so Fog Creek changed our pricing to stay competitive. I've watched some SCMs change their pricing in response to Kiln's downward force, too, and I expect that Trello's competitors are doing the same. Welcome to responsive pricing.

<comment><USER7> It's complicated, but the sentiment that charging your most price insensitive people a fixed price is nutty is still true - I don't think that's wrong. Although Jira has a fixed price ceiling, Confluence is not priced that way: [http://www.atlassian.com/software/confluence/pricing/?tab=do...](http://www.atlassian.com/software/confluence/pricing/?tab=download)

As for FogBugz, as another poster wrote "if your competitor is an order of magnitude cheaper, and not significantly worse" you have to respond to that (even if you think they are nutty, and a bit more than significantly worse).

<comment><USER6> Sorry; the "he was wrong" applied purely to FogBugz' situation due to the Jira price cap, which is really not clear in my comment. That'll teach me to bang out a response on my iPhone in answer to a tweet when I ought to be reading a book.

</comment></comment></comment><comment><USER8> I think it's most likely that large institutions (who are most able to pay) are willing to pay a premium to avoid the hassle of adding and removing seats from their license with every change in staff.

It was probably also starting to be incur noticeable administrative overhead for fog creek

</comment><comment><USER9> Joel has no obligation to be consistent over 9 years or to keep to the same pricing philosophy as his company has grown and evolved significantly.

Bear in mind that "Unlimited" usually is not so. Even if his customer has 100k employees, the likelihood is that only a few thousand at most will use it. Why nickel-and-dime them - make the sales process as simple as possible and make everyone happier.

<comment><USER10> I don't think the OP is demanding consistency, merely asking what changed his opinion.

(it might indeed be the realization that there aren't companies with Unlimited employees, but maybe it's some other interesting reason)

</comment></comment><comment><USER11> I don't understand the quote. Economies of scale always give price breaks to the big buyers. I don't understand why that's nutty?

<comment><USER12> I think what the OP is trying to say with the quote with traditional volume discounts, you're always getting some additional money per additional unit. With an "unlimited" license, you don't add any additional revenue while the customer adds people. After a certain point with a site license, everything is "free" and that could be bad for the person selling (no additional revenue, increased support costs, etc)

</comment></comment><comment><USER13> Unlimited pricing is about fairness. You can't charge a small team the same as you would a gargantuan organization. They don't want to count their users and the supplier can't. The real dividing factor however is the fact that large organizations want different levels of service and different software (Active Directory integration etc).

</comment><comment><USER5> jira does site licenses?

<comment><USER14> I think this is probably a large reason. If your competitor is an order of magnitude cheaper, and not significantly worse, then it gets very hard to compete.

</comment></comment><comment><USER15> Larger companies tend to be in a position to 'roll-their-own' so you sometimes have to discount.

They may not be able to execute their plans well, but it gives them negotiation power.

</comment><comment><USER16> Once you get to a certain size, you hire people specifically to cut costs.

Site licenses are in recognition of those people IMO.

</comment><comment><USER17> It might just be easier to have that option than to negotiate individually with each large company.

</comment><comment><USER18> It's not the first time he's inconsistent.

One of his recent articles: <http://www.joelonsoftware.com/items/2012/07/09.html> also reads a little bit like bashing his own product FogBugz and advocating that it's a bit useless:

"Do not allow more than two weeks (in fix time) of bugs to get into the bug database." "Then close as "won't fix" everything left in the bug database. Don't worry, the severe bugs will come back."

Maybe they discontinue FogBugz soon and only concentrate on the more hip Trello?

<comment><USER18> Am I not the only FogBugz user who read his old articels advocating the use of bug trackers, and then read this recent piece which advertises Trello and thinks that he kind of sees or advertises Trello as an alternative to FogBugz? And that the snarky comments against full bug databases are a bit inconsistent?

Also, I'm still disappointed that they discontinued Kiln for self hosted servers. They did that silently.

<comment><USER7> Trello is not and will never be designed for software developers. Can software developers use it? Sure. You could track your bugs in Excel if you wanted to. That's not Trello's audience.

Regarding Kiln for self hosted: At Fog Creek, we've always said we don't want your money if you're not amazingly happy. We're not taking your money right now because we're not certain we can make you amazingly happy... yet.

We found that the installed Kiln customer experience was not up to our standards as a company, so we've deferred taking on new installed customers until we're satisfied that they'll be amazingly happy with our product.

We prioritized on our On Demand environment because that's where the bulk of our customers and revenue are. We still want to find a solution for our self hosted customers as well, but it wasn't our immediate priority and we weren't going to hold up shipping Kiln Harmony until we figured out what we were doing with self hosted installs.</comment></comment></comment>


Ask HN: paperless receipts - <AUTHOR> After paying up on a coffee shop yesterday, i was wondering how much paper is wasted on receipts all around the world.
I don't know if are there any solutions out there (i live in Portugal), but what i've thought of was that a service could be implemented that would setup a device at the venues that would generate a bar/qr code for the bill, which could be scanned by the customer using a mobile app.
the mobile app could even integrate with an on-line personal finance management app.
what do you think? <comment><USER3> The Apple stores (in Canada, at least) have the ability to email receipts to the email address associated with your credit card instead of printing one. By the time I walk out the door my phone buzzes with a copy of my receipt coming into my inbox. I absolutely love this - it also helps that I don't have to save my receipts for warranties since I can instead just run a search for them.

I hope more stores catch onto this model.

<comment><AUTHOR> that would be great.

Apple can do that because you can register an account online with Apple and they get your info (e-mail) by looking up your credit card?

A general solution would have to work with small businesses that don't have online services, which i assume being the majority out there.

<comment><USER3> Actually, I'm not sure if they cross-reference credit card numbers with itunes accounts or if its done through the credit card company; but I think this should be a service that credit card companies offer merchants... perhaps to help justify their massive merchant fees.

<comment><USER4> This is an interesting approach. Right now, credit cards don't get itemized receipts (afaik), just totals to charge to the customer's account.

For a service like this to be really useful to me, I would want itemized receipts.

</comment></comment></comment></comment><comment><USER5> It wouldn't be hard for eg the Nectar card in the UK to be extended to support this. The principal use case I see is for expense submission rather than personal accounting; rather than having to photocopy each receipt and send them all to finance, log on to the loyalty card website and tick the transactions that need to be shared with one's employer.

<comment><USER6> Do Nectar currently provide this information to customers? If they did then you could put together a quick hack that scraped their web site for the data.

<comment><USER5> The information available goes down to transaction level. I get the store name and location, date and amount spent for every purchase.

What is missing is a description of the line items, which would be required for expense reports. It's all very well me saying I spent £20 at Sainsbury's, but my company would want to know what on...

<comment><USER6> Right: I'd imagine that in order to persuade companies (i.e. corporate expenses departments) to accept these receipts, they'd have to be convinced that they were the same as the paper originals.

<comment><USER5> Indeed - and more importantly, HMRC (the tax office) would need to accept their integrity. But, Nectar is a sufficiently large organisation as to be able to offer such assurances and for corporates to accept their word - <USER2> up by contractuals, I'm sure!

</comment></comment></comment></comment></comment><comment><USER6> I like the idea of electronic receipts. If you weren't bothered about wasting paper you could print the code on the paper receipt; otherwise, you'd need a dedicated device to transmit the QR code.

I wonder how big the QR code needs to be in order to encode all the information on the receipt; those thermal receipt printers aren't that great. How about an app that uses the phone camera to scan the entire receipt, then reads the text? That way you don't need any dedicated equipment at all.

I've always liked how the Apple store sends me a receipt to my email address. However, I'm not sure I'd like to give my email address to every coffee shop just so they could mail me a PDF.

<comment><USER4> Perhaps this is an intance where a central service could aggregate e-receipts for customers. I could see this being linked to loyalty programs from major grocers, gas stations, etc.

You could then manage your preferences with the central service who could email you receipts or just store them for you indefinitely.

<comment><USER6> I'd find this useful if I'm travelling on business. Right now I have to keep a week of receipts safe somewhere and bring them back - coffee, restaurants, taxis etc. Then I go back and type the details into the corporate expense system, and put the paper receipts into an envelope.

I'd be happier if somebody looked after the receipts for me (in the cloud?) and saved me the effort of typing them in when I got back.

</comment></comment></comment><comment><USER7> The guy who won Entrepreneur magazine's Student Entrepreneur of the Year in 2009 did so with the idea of paperless/digital receipts. You can see his service here:

<http://www.3secondreceipts.com/>

</comment><comment><USER8> <http://paperphobic.com/>

I thought something like exists. Just searched a bit on searchyc and got it. This idea does not exactly match your thoughts, but somewhat close.

</comment><comment><USER9> I think that a problem this large would (perhaps) be best solved by the credit card companies themselves (unless folks don't mind giving out their email address to every cashier). They already know who I am, what I'm buying, and when, so it'd make sense if they were to handle the digital receipt as well.

But I highly doubt they'd implement this b/c its not their core business.

</comment><comment><USER10> Delicious idea. hard implementation, mostly because (in)compatibility with existing hardware/software already in stores.

One way to minimize the compatibility issue with existing software, is create a (hardware) printer (generic), that print on screen, and generate the barcode so the user may scan.

i love the part of "integrate with an on-line personal finance". there are also some legal issues.

bring it on!

<comment><USER4> I think the key would be to find a company to partner with (say Krogers?) that would, with the customer's approval share the data from their loyalty programs that, in theory, store it.

This way the customer only needs to take one action, opt-in when signing up for the loyalty program, as opposed to scanning a barcode or QR code for every purchase.

</comment></comment><comment><USER11> I would love to have this kind of solution. Not only to save trees but also avoid having a wallet full of small papers. My wallet looks like a fat monster most of the time.

</comment><comment><USER12> yReceipts offers this service for any retailers already. We are live in the UK and Australia, soon to be live in the US and other European countries. You can send receipts via email from any POS, the customer receives an email with an attached PDF. We have a website where you can login and see your receipts etc.

New features currently being developed include exporting directly to accounting programs. www.yreceipts.com

</comment><comment><USER13> ( _Shameless Plug_ ) We are working on a service that might interest you: <http://costjar.com></comment>


Ask HN: Books about database implementation (relational algebra, etc.)? - <AUTHOR> I'm looking for a book on the computer science involved in implementing a database:
* Relational algebra
* Logical vs. physical planning stages
* Optimization (cost-based, etc.)
* Indexing algorithms
* Physical layouts
* Concurrency control
* Parsing
* Distribution
* OLTP vs. OLAP
* etc.
I'm not looking for books about how to write database apps or to manage them, nor books about modeling data or explaining SQL.
Thanks! <comment><USER2> The Carnegie Mellon University (CMU) Database Group with Andy Pavlo [1] puts out a ton of content, including lectures on architecture, and interviews and presentations with various database companies. Check out the seminar playlists for video series and notes. [2] They also have research projects like Peloton. [3]

[1] [https://db.cs.cmu.edu/](https://db.cs.cmu.edu/)

[2] [https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA/fea...](https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA/featured)

[3] [https://github.com/cmu-db](https://github.com/cmu-db)

</comment><comment><USER3> [https://www.amazon.com/Transaction-Processing-Concepts- Techn...](https://www.amazon.com/Transaction-Processing-Concepts-Techniques- Management-ebook/dp/B016W7HLX8) is pretty solid.

<comment><AUTHOR> That looks great, though it seems to be focused on the transaction processing part, and misses the big chunk that concerns querying (e.g. planning).

<comment><USER3> Very true. It touches a bit on the retrieval side with some discussion of keys, hashing, B-trees, etc in the "Access Paths" chapter, but primarily from the perspective of making the system robust and consistent. Definitely does not cover the full space of database design (no mention of query planning at all).

</comment></comment></comment><comment><USER4> [https://www.amazon.com/Database-Management-Systems-Raghu- Ram...](https://www.amazon.com/Database-Management-Systems-Raghu- Ramakrishnan/dp/0072465638)

<comment><USER5> I used this in a grad class. It was a progression from intuition to theory to implementation. I already had DB exp, and it aligned with the operators and index types that we found in PG 9 for the class project including batch and streaming implementations as discussed. No point of comparison to other works.

</comment></comment><comment><USER6> [https://www.amazon.com/Database-Systems-Complete- Book-2nd/dp...](https://www.amazon.com/Database-Systems-Complete- Book-2nd/dp/0131873253)

</comment><comment><USER7> Fundamentals of Database Systems by Ramez Elmasri and Shamkant B. Navathe [1] is what I used in my undergraduate course in computer science. I would take a look at the table of contents to see if it has most of what you want. I know it at least has relational algebra and indexing data structures and algorithms.

[1]: Fundamentals of Database Systems (7th Edition) [https://www.amazon.com/dp/0133970779/ref=cm_sw_r_cp_api_i1r5...](https://www.amazon.com/dp/0133970779/ref=cm_sw_r_cp_api_i1r5BbQ04NDKG)

</comment><comment><USER8> Building Query Compilers: [http://pi3.informatik.uni- mannheim.de/~moer/querycompiler.pd...](http://pi3.informatik.uni- mannheim.de/~moer/querycompiler.pdf)

Is the closest to what you actually want that I've ever been able to find, but it is unfinished.

</comment><comment><USER9> Some helpful information here, I would think: [http://www.redbook.io/](http://www.redbook.io/)</comment>