The world's first entirely 3D-printed gun has been made - <AUTHOR> http://www.extremetech.com/extreme/154996-the-worlds-first-entirely-3d-printed-gun-has-been-made <comment><USER3> There are a couple issues with the article that I'd love to address.

 _While DD was making progress with its 3D-printed gun experiment, the company managed to get a license to become a legal manufacturer and vendor of guns, somewhat muddling the legal status of the 3D-printed gun, a weapon anyone with a 3D-printer could make at home._

There's absolutely no "muddling" here. You can do any amount of gunsmithing you want, at home, and it's legal without a manufacturer's license up to a very specific point. You can feel free to make a stock, a trigger, a pistol grip, etc., but just don't make a receiver. On some guns there's a lower and upper receiver, in which case you can make the lower without the license. Make the upper without a license and you're in trouble.

Side note: don't make a silencer either. They are easy enough to make and you don't need the license to make it, but you do need the license to own it.

 _The Liberator still has some more testing to go through_

It's probably damn close to a 1-shot gun and then replace the barrel. It also won't have rifling so it won't be accurate. The cartridge next to the gun in the picture appears to be a .22 short which is probably the maximum the plastic can handle. I wouldn't want to be anywhere near this thing when a .38 or 9mm cartridge is fired. The plastic won't contain the significant force.

 _but the lack of requiring a license — and the gun's lack of a serial number — are unsettling thoughts._

Much like you don't technically need a license to make a gun, you don't need a license to drive a car. Simple guns have been made by machinists for a long, long time. And you don't need a serial number on a gun either but if you are found with a gun sans serial number it's a felony with huge prison time. But cops see guns with serial numbers shaved off all the time.

I understand the threat of plastic guns getting on a plane or through security but you'd still need to get a bullet through as well which wouldn't be so easy.

<comment><USER4> When it comes to law and guns, don't be wrong. One oops and you're in prison for 10 years.

 _On some guns there's a lower and upper receiver, in which case you can make the lower without the license. Make the upper without a license and you're in trouble._

Not in the USA. Here, the "lower receiver" (at least for the AR15, the quintessential semiautomatic rifle most presume for this discussion and what DD is making) is the gun. Uppers you can freely make; lowers you can make in small quantities so long as there is no indication you'll sell them as a business.

 _[Silencers] are easy enough to make and you don't need the license to make_

OH YES YOU DO. It's a $200 manufacturing tax per item, background check, Chief LEO signature, and related paperwork _before_ you start making one. _This_ is one of those things that WILL get you 10 years in prison fast.

HN being an international phenomenon, your jurisdiction may vary greatly in both legality and severity of punishment for violations.

<comment><USER3> I don't have an AR but I assumed that because the cartridge flows from the lower receiver and is chambered in the upper that the upper was what was the ATF definition of a gun. My mistake, I got them backwards. The lower is what needs the background check through an FFL.

I guess I also didn't read the law correctly with respect to a silencer. I figured since it's illegal to possess without the proper paperwork you couldn't make one anyways since one you completed it you were immediately guilty. I didn't realize there is a separate law covering the process of building one but I guess I should've since guns require a manufacturing license.

<comment><USER4> Don't assume anything when it comes to gun laws. Two simple examples should make the point:

\- In New York (and many other jurisdictions) law, a rifle is not a firearm.

\- In US law, "armor piercing" as defined has nothing to do with the capability of piercing armor.

Not kidding.

<comment><USER3> But the Feds define a rifle as a firearm so does it matter what the NY law defines? Unless they are defining it as something that is much more strict, which, as draconian as the gun laws are in NY, that wouldn't surprise me.

<comment><USER4> My point was to not make statements about gun laws unless you in fact know the law, and to demonstrate how common wisdom can be very legally wrong.

Wanna make it a serious matter? A "sawed off shotgun" is legal if made one way, and 10 years prison time if made another - identical parts used either way.

</comment></comment></comment></comment></comment></comment><comment><USER5> I don't quite get the big concern about 3D printed guns, although printing the barrel is impressive. It's been possible to make a gun (as defined by US firearms law) at home for a long time with cnc equipment:

<http://cncguns.com/>

In fact, it's possible to buy an "80% lower receiver" for an AR-15 and some jigs that will let you finish it on a drill press. 80% is the magic number at which it's no longer considered a firearm. Even with advances in 3D printing I'd much rather shoot a metal firearm than a printed one. I'd also assume that they're using a fairly pricey 3D printer, or doing a lot of finishing work, and not using a stock reprap or the like.

If AK-47s are more interesting, they can be made out of sheet metal.

Also, I'm pretty sure the name is a reference to the FP-45 liberator, which was designed to be used by the resistance during WWII.

<http://en.wikipedia.org/wiki/FP-45_Liberator>

<comment><USER6> Everybody should be aware of this.

This fact makes the current debate about assault weapons seem even more convoluted.

<http://www.youtube.com/watch?v=koSSNwTpaRM>

UPDATE:: Jeez guys you are sensitive. No I'm not against guns at all. In fact I wouldn't care if you could buy machine guns at sears.

I was pointing out that with all the current "debate" over universal background checks, including mental fitness in background checks, 'assault clips' etc, can't be anything else than demagoguery if anybody can go buy a drill press and order anonymously any if the parts for an AR-15 online legally.

<comment><USER7> Why are you against banning assault weapons in principle?

(I've been hoping for some time that someone would explain this.)

<comment><USER5> There's no clear definition of an assault weapon. Fully automatic weapons have essentially been banned since 1986 [1]. Once you take away that, the bans on assault weapons pretty much amount to bans on firearms that look scary. Perhaps an AR-15 with a polymer stock will be lighter than a hunting rifle with a wood stock, but ultimately they amount to the same thing.

My objection is that bans based on how something looks are silly.

[1] If you want to get technical, only manufacture of new fully automatic weapons is banned at a federal level. Transfer is still legal, as long as you pay the appropriate taxes and the firearm was manufactured before 1986. Given the limited supply and high prices ($10k+, easily), however, they're extremely rare. States may also have separate bans, like in California.

<comment><USER7> Why are people against banning civilian ownership of all guns in principle?

I had some very nice experiences as a child with a pellet gun my father bought me. I later had a lot of fun experiences with him at a shooting range with real guns. I don't think I got much more from the shooting range than from my pellet gun.

What's the motive of gun ownership, besides concealed carry and hunting?

<comment><USER5> Shooting guns is fun. For some people, a real rifle, even something like a 22, is going to be more fun than a pellet gun. Trap shooting and sporting clays are also going to be difficult with a pellet gun.

Hunting is also a good reason. The US is big enough that a Federal ban doesn't make sense. While it might be reasonable to ban handguns (for example) in San Francisco, it doesn't make sense to ban them in Alaska or Montana where someone might want to carry a 44 magnum while hiking for protection against bears (ignoring the bear spray/firearms debate - and the fact that a shotgun is probably a better idea).

Personal protection is also a good reason, I think, especially if someone lives in a remote area.

Essentially, the US is a big place, and what's appropriate in Silicon Valley won't work in Alaska.

<comment><USER8> >Hunting is also a good reason. The US is big enough that a Federal ban doesn't make sense. While it might be reasonable to ban handguns (for example) in San Francisco, it doesn't make sense to ban them in Alaska or Montana where someone might want to carry a 44 magnum while hiking for protection against bears (ignoring the bear spray/firearms debate - and the fact that a shotgun is probably a better idea).

Actually, a starter pistol might be just as good. Unless you've done something to actively piss off the bear, like getting in between a mother and her cubs, the noise of the gunshot is generally enough to stop the bear from charging you. Your goal as a hiker shouldn't be to kill the bear, because that's hard and will probably require a rifle or shotgun slug, but to just scare it off.

And I don't think there's that much of a bear spray/gun debate, because it's probably better to have both. At least, that's what I've been told by a friend that goes every year to Yellowstone to fly fish.

<comment><USER9> > _Your goal as a hiker shouldn't be to kill the bear, because that's hard and > will probably require a rifle or shotgun slug, but to just scare it off._

Wouldn't attempting to kill the bear generally make a noise to scare off the bear too? I could perhaps see a starter pistol being as good as a regular gun for protection against bears, but better?

Also _(in my extremely limited experience)_ starter pistols are not particularly loud compared to regular guns anyway, which makes sense since who wants to wear ear protection at a sporting event?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Based on the name Liberator and the shape, it's probably an homage to the FP-45 Liberator: <http://en.wikipedia.org/wiki/FP-45_Liberator>

The FP-45 was created to basically be good for one shot. You would use it at close range to incapacitate someone with a better weapon (e.g. an occupying soldier) and take theirs.

<comment><USER11> Exactly my thought too - surprised that wasn't mentioned.

Also funny in this is that this gun was produced by the OSS (pre CIA) for WWII resistance groups. It was dropped en masse behind enemy lines in hope that they'd find their way to the partisans.

</comment></comment><comment><USER12> Correct me if I'm wrong: But anything you make with a 3d printer, ignoring super-high-precision work, you can make out of a block of wood and time, correct?

The only real benefit to a 3d printer is it idiot-proofs the task and provides for greater precision. It'll be easier to create 10,000 cheap plastic guns but if you only need 1 because you're in the middle of a Tom Clancy novel then you may as well assemble it from pvc and other store-bought stuff.

3D printed guns will make great fodder for spy novels, but I don't really see them as a threat.

<comment><USER13> That's not actually true. 3D printers are additive manufacturing, i.e. you build up from nothing. Most hobbyist tools are generally subtractive manufacturing, i.e. you start with a block of raw material and remove sections with the tool. Additive manufacturing allows you to make some parts that are impossible with subtractive manufacturing.

That said, you can make an entire gun using subtractive manufacturing, pretty standard metal, and a CNC mill. If we had a standardized library of CNC mill instructions you could just as easily share that as a STP file for 3D printing a gun.

<comment><USER14> 3d printing also allows you to make a lost-plastic cast with far less work than it would take to whittle and chisel a gun mold out of wood.

</comment></comment></comment><comment><USER15> Scott Locklin had a weblog post giving background information on past attempts to use 3D printers to make guns. Note that this was published in August of last year.

[https://scottlocklin.wordpress.com/2012/08/11/bad- engineerin...](https://scottlocklin.wordpress.com/2012/08/11/bad-engineering- journalism-reporting-on-3-d-printing-of-guns/)

</comment><comment><USER16> I remember back in the days around columbine when zero tolerance became a thing. It was huge news when kids would bring plastic toy guns to school and get expelled.

At least now there's some credible reasons to be afraid of that gun that looks like a toy ;)

</comment><comment><USER17> Remember that a hammer and a pair of pliers is also a "gun" if you happen to have a bullet. Its dangerous to fire, hard to aim, and has a very low muzzle velocity, but it does meet the criteria.

<comment><USER18> Actually, I think you need some sort of tightly fitting metal tube as well, otherwise the cartridge case will just split.

<comment><USER19> There have been many prison guns made from a piece of wood with a slot cut in it. That's enough to keep the case from splitting enough of the time on a low powered round to be useful.

</comment></comment></comment><comment><USER20> The analogous technological situation is with color printers and counterfeiting money. The color printer did not bring about a "counterfeiting revolution" or "distributed currency" or anything like that. Simply manufacturers of the printers have software preventing printing of realistic currency.

When the 3d printing industry reaches some sort of maturity, IF it ever goes mainstream, similar measures will be instituted.

Hell, I haven't read the relevant law but quite possibly he's already in violation of the Undetectable Firearms Act. Any federal prosecutors keeping up with this story? Ortiz?

Basically all you have here is a privileged middle class kid who enjoys media attention and getting reactions from people.

<comment><USER21> The idea of software in a printer preventing you from printing counterfeit currency is ridiculous. These things (and similar nonsense in Photoshop et al) have only served to annoy graphic designers.

The only thing "protecting" real money is the many embedded, hard to replicate patterns and markers.

Of course, you can't put the genie back in the bottle with how guns work. You can't write software that will prevent anyone from printing gun parts, as if there was a way for the software to tell intentions from abstract 3D shapes.

<comment><USER22> _> The idea of software in a printer preventing you from printing counterfeit currency is ridiculous._

...but it works well enough. It is embedded in certain graphics program and in (computer-driven) printer/copiers for office use. Not sure about printer drivers, but probably just as well.

The tech behind it is quite simple, actually: <http://en.wikipedia.org/wiki/EURion_constellation>

However, I can't imagine any similar solution working for 3D print. When one tries to copy bank notes, the `EURion constellation' is there, included by the issuer.

However, when trying to print third-party designed 3D item, if the designer did not bother with including any protective markings, those simply won't be there.

</comment></comment></comment><comment><USER23> In 1822, Charles Babbage wrote about a plan to print mathematical tables using a machine. Yet not until 1979, 157 years later, did Epson's competitively priced printer hit homes, establishing a market for such trinkets. The burgeoning realm of computer printers was launched. Today, mass-produced printers flourish, present in nearly every North American home, owing to a visionary mathematician.

In 1984, Charles Hull invented stereo-lithography: the ability to print tangible 3D objects. By 2002, scientists had engineered a functioning kidney, demonstrating the idea of printable organs. In 2008, the first printer capable of printing most of its own parts was created. The year 2012 saw the first 3D-printed prosthetic implant. Printing 3D objects is a technology poised to bloom.

In 1901, Ransom Olds invented the modern assembly line, ushering an era of mass production. His idea allowed manufacturers to make everything from horseless carriages to automatic weapons on an unprecedented scale, but not with free rein. Factory owners, distributors, and stores must abide by certain regulations, including strict gun controls. In a world of mass-produced, manufactured goods, drafting laws that restrict who can buy or produce guns makes sense.

Hardly will it take 157 years for 3D printers to go from hobbyist tinker-toy to standard home appliance. The technology is advancing faster than a speeding bullet. A decade hence will dawn the age of 3D printers, wounding the mass production industry and killing certain government controls.

Once people can print plastic cups and assorted nicknacks from their couch, the proliferation of untraceable guns could be... explosive.

</comment><comment><USER24> Has anyone 3D-printed a guillotine yet?

</comment><comment><USER25> What is the cost of printing vs. CNC milling a gun?

<comment><USER9> Are you including the cost of buying/leasing the equipment, or just the cost of renting time on someone elses?

I imagine CNC mills are easier to rent time on unless you've got a local hackerspace (which quite possibly will not be keen on printing a gun for you). They would also produce a much more practical product, ...and probably be much more expensive to buy outright.

If instead of a CNC mill you just need the equipment to finish an 80% lower receiver, then you need _far_ less money than either of the other two options, and you get a very practical product for your effort.

</comment></comment><comment><USER26> Any bets on how long before they get some sort of printed plastic projectile to fire from this gun?

<comment><USER27> That already exists, basically. You could manufacture hard-resin BBs for use in shotgun shells, or even hard-plastic discs for use in something like a Taurus Judge right now.

Manufacturing bullet tips wouldn't be any strange feat either, though you'd almost certainly find them less effective than metal bullet tips.

The real trick would be in printing gunpowder, which I'm sure is a somewhat tangential field of research.

</comment></comment><comment><USER28> They couldn't believe this had happened. Not because they couldn't imagine it... even though it took some great amount of imagination to develop such a cleverly devious plot, but because it has happened ___now_ __.

The thought of this happening in 2014 was much earlier than many would have predicted. Any average team would have thought this scenario to be a reality in the much more distopian cyber-punk fantasy of 2020... but 2014.

It's still amazing that the device didn't raise red flags. The fact that she was able to get it through security is surprising and understandable at the same time.

There was no way the average security agent would have any clue what he was looking at, but even then, her demonstration would fool even the most skeptical security officer.

Witnesses and video show how her demonstration of the device marvelled all that saw it. While painted nicely, looking sleek and high tech - it's output seemed innocent enough. The device is an engineering masterpiece. Hard to believe that this much thought and innovation went into a plot so vile and base.

It's unclear if this is the only device - but given the age we live in, surely the plans are already in the hands of every major organized crime group on the planet... At least that is how we should operate.

The demonstration, using the touch screen on the side of the device to select from a vast list of printable toys and do-dads was impressive. The speed with which it output the objects was unreal. The quality unmatched.

Nobody would have suspected what was to happen next. She got into the conference, past both the physical and electronic scrutiny and quelled any suspicion of her intent.

What exactly happened next is still be investigated, but as best as we know, she was able to take the device into the storage room, complete her print and return to the conference floor to carry out the assassination. The gun printed was a marvel. A multi-shot, 100% printed mini rail-gun. The full body printed from the very machine that would then provide its power and ammunition.

At first, there was so much confusion, the rail-gun was relatively silent, and even though the PM was shot in front of nearly a thousand spectators, the deadly near-silence of the railgun prevented immediate involuntary reactions the crowed would have to any other gun.

This was different, a new era, one of those events where you know the world has changed and will never go back.

The device's ability to print out a fully working, multi-shot railgun in a matter of minutes and for that weapon to then be able to be used within minutes of being produced to assassinate one of the most prominent leaders in the world amidst the most advanced security governments can provide is truly a game changing event.

The assassin, while an unassuming, yet beautiful woman in her early 30s is believed to come from the Balkans. A region with a long history of controversial relations with Russia. While plots against Putin may have been considered in the past - it was not thought that there would actually be any credible threat coming from this region, and certainly never any threat as technologically advanced or innovative as this successful plot against him.

It's only been hours now since Putin was assassinated - but the repurcussions from this event will be massive, swift and likely extreme.

3D printing of conventional guns has been hotly debated in the last two years - but this, this is on a whole new level. There are already talks of licensure and control of designs, supplies and media. There is no way to track plastic and no way to regulate it. Governments are in a panic as to how to deal with this now.

<comment><USER4> While a dramatic presentation of the hysteria over the subject, a key point is overlooked: the problem is not the tools, but minds using them. The drama depicted could be equally depicted with a personal handshake and a pen.

We are far from on-demand instant-printing of effective railguns, and security personnel would be well aware of the possibility. Assassinations have happened for millenia with far less sophistication.

<comment>

Recalls a bit of literature...

H.ma: I cannot allow you before Theoden King so armed, Gandalf Greyhame... by order of Grima Wormtongue.

[Gandalf nods, and they hand over their weapons]

H.ma: Your staff.

Gandalf: Oh... you would not part an old man from his walking stick?

[Prolonged discussion ensues]

Gandalf: Be silent! Keep your forked tongue behind your teeth! I have not passed through fire and death to bandy crooked words with a witless worm.

[Points his staff at Grima]

Wormtongue: [Terrified] The staff! [To guards] I TOLD YOU TO TAKE THE WIZARD'S STAFF!

<comment><USER28> I know :)

It's fun to think about such scenarios though... Play Dan Brown's thoughts through your head occasionally...

</comment></comment></comment></comment><comment><USER29> This is just sad. We don't need more guns in this world.

</comment><comment><USER30> If we can make guns entirely out of plastic, why haven't we seen plastic guns before?

For decades we've been able to do everything that's possible with a 3d printer with older technology injection molds, cnc mills, ect.

<comment><USER27> The interior of a firearm with a firearm control group, firing pin, etc., is kind of detailed. On top of that, to manufacture it with more moldable soft plastic would be very hard because the resultant product wouldn't be substantial enough to withstand the pressures of a bullet's expelled energy.

You might have been able to manufacture some hard-plastic extruded gun in the past, but as with this one, it wouldn't have been great, and it would have cost a lot in the way of equipment. The only real novelty here is that it's doable from home on a relatively inexpensive device.

</comment></comment><comment><USER31> I have the feeling this will end up like the electric car.

It will be built, proven/sold, squashed, replaced by something inferior from outside the country, then slowly reappear over the next decade.

<comment><USER9> Heh, what exactly could be technically inferior to the gun pictured? I can't imagine it being good for more than one low powered round, and not even reliable for that.

Also, these people just distribute CAD files for free over the internet. I'm not sure how the country of origin or the economics of "good enough" come into this.

</comment></comment><comment><USER32> can you imagine the ramfications of this getting into the wrong hands?

</comment><comment><USER33> Metal detectors obsolete?

<comment><USER34> not unless they start printing plastic bullets and casings too.

<comment><USER35> You mean like a tround ( <http://en.wikipedia.org/wiki/Dardick_tround> ) or the delrin bullets used for indoors practice?

</comment></comment></comment><comment><USER36> Why shouldn't we be afraid of 3D printed guns? I don't like guns and I think the fewer people have them, the safer we are, but what can anyone do about this when you can simply buy a 3D printer and download a CAD file and begin mass producing an arsenal in secret?

<comment><USER37> > " _I don't like guns and I think the fewer people have them, the safer we > are_ "

The best case scenario, IMHO, is that everyone has the means to defend themselves against abuse. I value equality.

The worst case scenario, IMHO, is a single person or group with a disproportionate ability to abuse those who are defenseless against them - <USER2> they know it (your fewer-the-better scenario). IMHO, crime happens because people think they can get away with it. Good fences make good neighbors, IMHO, so I feel safer when everyone has a gun, for example, since disarmament creates an opportunity that wasn't there before.

Long story short, please don't say "we," since your ideas are strictly your own.

<comment><USER38> _"Long story short, please don't say "we," since your ideas are strictly your own."_

Did it previously say "We don't like guns and we think..."?

<comment><USER37> No, that part was OK. I just don't want to be included, by assumption, in the set of people needing protection or those who should be afraid.

Even if the comment merely describes an opinion about me (and others) without directly putting words into my mouth, that opinion still seems to say that something is for my "own good." I disagree with the prescription and I would like to be excluded from the idea.

<comment><USER38> In that case I object to your characterization. Someone can have thoughts about other people without any implication that those people share the same thoughts. Trying to grandstand about it is either confused or an attempt at bullshit rhetoric. If you disagree, describe why you disagree (as you did with the rest of your comment), don't try and tell them what they can and can't say.

<comment><USER37> What characterization?

I am simply asking to not be spoken for, not saying the commentor isn't entitled to have an opinion. I say clearly above that I _am OK_ with the comment as a mere opinion (" _No, that part was OK_ " ...).

I'm curious if you read my reply closely before responding, or if you decided in advance what you wanted to say if I replied to you, because you seemed not to have received its intended meaning.

To repeat: I am not saying the commentor isn't entitled to an opinion, only saying that that opinion is wrong from my perspective and for my case since it is an opinion about me (and I was included by the word "we"). I am also entitled to my opinion.

On top of that, I also happen to think that my opinions about what is best for me _should_ matter more in the public's view than what someone else thinks is best for me. I am not property to be managed, a sheep to be herded, or a child to be guarded. I am my own person - the horse's mouth, for my part - and I consider it offensive to be spoken for. Have you ever been told something is "for your own good"? If so, did you appreciate it?

<comment><USER38> The only bit of your post I objected to, discourse-wise, was the phrase:

 _Long story short, please don't say "we," since your ideas are strictly your own._

This sounds like you are saying the commentator is not entitled to voice _their_ opinion of the effects of a policy on a group if members of that group might hold a different opinion. You call this "speaking for you"; I say this characterization is incorrect - it is "speaking _about_ you".

<comment><USER37> Sure - while it is an opinion _about_ me (and others), it is _also_ (simultaneously, though not exclusively) a recommendation (perhaps only an implied one) about what is in my best interests, when _I_ alone can decide if I am safe, for example (it is not a lamp, or a number, it is _my own feeling_ ): therefore the commentor is speaking _for_ me. Furthermore, since I define safety for myself, my assertion that the comment does _not_ reflect my interests also _makes_ it misrepresentation (in addition to speaking _for_ me) in my case.

<comment><USER38> Hm, I wouldn't call safety a feeling at all.

I'll stipulate it and give some more thought to your position in that context. It definitely colors things a bit; I'm not sure whether it legitimately changes things.

On the flip-side, would you feel differently if the attribute being discussed was clearly not a feeling?

"I don't like guns and I think the fewer people have them, the shorter we are", or some such.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER39> How about 3d-printing something actually useful? Something which mankind actually really needs. Something which helps creating energy, making clean water, ...?

Cool, you can print guns. Next you can print bombs and all kinds of weapons.

How about using a new technology for something useful?

Sure you can make a statement by 3d printing a weapon. But with a little brain one should actually understand that there are a few other things which would be much more helpful. Just 'because you can' is fine. But this has been demonstrated already. Now it would be nice if people would demonstrate that they have a brain.

<comment><USER19> _> Now it would be nice if people would demonstrate that they have a brain._

Thanks for contributing to the bigotry that all gun owners are pernicious idiots. How is this any better than any other form of prejudgement or "othering" based on any other political stance? Answer: it's not.

"Othering" based on a political stance is slow poison to a democratic government. What Ben Franklin said about hanging together is just as true today. If you have ever complained about a media outlet like Fox News engaging in this behavior, then guess what: you just did it yourself.

<comment><USER39> > Thanks for contributing to the bigotry that all gun owners are pernicious > idiots.

Strawman. You made that up.

There are a lot of guns already and we produce even more. There are hundreds of millions of guns on this planet.

How about solving actual real problems? Clean water? Renewable energy? Food for all?

What I said is this: it is brainless to produce even more guns, instead of investing brains into more important problems.

<comment><USER19> _> Strawman. You made that up._

Oh, please!

 _> What I said is this: it is brainless to produce even more guns, instead of investing brains into more important problems._

I agree with your sentiment, but what I said about the earlier quoted line is true and is also true about the above. You may disagree with someone about public policy, but that doesn't entitle you to call them "brainless." It's called "civil discourse" for a reason, and I know you don't have to look up the word "civil."

Have you built a 3D printer? I have. (And not a RepRap derivative either!) Have you ever developed a your own plans for a device or a sellable useful object from one? I have. If you have, then you should know that this is not a "brainless" activity. Even producing a one-shot disposable pistol on one is far from "brainless."

I also agree with your priority ordering: That was never my issue. (Reread the above, and reply to my actual position, please!)</comment></comment></comment></comment>


Google Translate Easter Egg - <AUTHOR> http://translate.google.com/#auto|ja|I%20HATE%20YOU

<comment><USER2> Google translate relies on people to provide better translations if theirs is inaccurate. This is likely a result of gaming. Still funny, though.

</comment><comment><USER3> I just tried to use google translate in hebrew; giving it words in all lowercase provides a gramatically very different translation than giving it words all in uppercase. For example, typing "good morning" gives the hebrew equivalent of "it is good in the morning" (טוב בבוקר), while typing "GOOD MORNING" gives the appropriate greeting in hebrew (בוקר טוב). Not sure if that's a bug or a feature, but definitely very screwy.

</comment><comment><USER4> This seems more like a bug than an easter egg.

<comment><USER5> Quoth a friend of mine: "it's only a flaw if it's undocumented. when it becomes documented, it becomes a feature"

</comment></comment><comment><USER6> Translation Party: <http://www.translationparty.com/#8641571>

I HATE YOU >> I need to use your Facebook

<comment><USER7> Even better, type "I HATE FACEBOOK" and watch it have a meltdown :D

<http://www.translationparty.com/#8641969>

"But I have been using Facebook is to replace the benefits of using a register for use in favor, and you are there."

<comment><USER8> I like "I HATE WATER" <http://www.translationparty.com/#8642238> "If you are not used to using water that is being used to sign for you, I do not sign up for Facebook."

</comment></comment></comment><comment><USER9> It seems like "I HATE x" seems to give you some variation that includes facebook. Only seems to work english->japanese

Also seems like it needs to be all caps.

<comment><USER10> Also works for french -> japanese translation:

<http://translate.google.fr/#fr|ja|JE%22TE%20HAIS>

</comment></comment><comment><USER11> There seem to be more instances of bugs/gaming/easter eggs: [http://translate.google.com/#fr|en|Je%20m%27appelle%20Sam.%2...](http://translate.google.com/#fr|en|Je%20m%27appelle%20Sam.%20)

Translates to "ANNIE" (but only if you include the final period).

</comment><comment><USER12> It seems that it's fixed. When this was posted, it translated "I HATE YOU" to "私はあなたFacebookを利用しています".

</comment><comment><AUTHOR> There's another version :

[http://translate.google.com/#auto|ja|WE%20REALLY%20HATE%20TH...](http://translate.google.com/#auto|ja|WE%20REALLY%20HATE%20THIS%20COMPANY)

which translates back to : Our company is really using Facebook.

</comment><comment><USER13> Try "I HATE HATRED." and translate back to english.

Here's the result: <http://translate.google.com/#auto|en|私は憎しみFacebookを利用しています。>

</comment><comment><USER14> Reading all the other answers with links to translationparty.com, I decided to google "translation party wikipedia" (without the quotes) and the first result was "Ranks and insignia of the Nazi Party - Wikipedia".

</comment><comment><USER15> I happened to see meanwhile that even if I type 'goobe'(which means 'owl' in Kannada) after setting source to auto, it says "We are not yet able to translate from Kannada into English". Really, amazing!

</comment><comment><USER16> The German->German beatbox trick is much more interesting (see [http://www.geekosystem.com/how-to-make-google-translate- beat...](http://www.geekosystem.com/how-to-make-google-translate-beatbox/) )

</comment><comment><USER17> [http://translate.google.com/#en|zh- CN|I%20HATE%20YOU%0A%0AI%...](http://translate.google.com/#en|zh- CN|I%20HATE%20YOU%0A%0AI%20LOVE%20YOU)

Check out this translation, it adds emotion as well :)

</comment><comment><USER18> I don't think this is an easter egg. Googles translations gives the user the ability to help them translate things better to future use. Thinks it's a bug. :)

</comment><comment><USER19> As posted, the translation is ungrammatical.

<http://translate.google.com/#auto|ja|YOU%20%20HATE%20YOU>

gives a grammatical (mis)translation.

</comment><comment><USER20> Pretty funny result.

Makes me think if machine translation is to improve it will almost certainly require human translators to contribute. The style in which Google is doing this seems like this will happen more often.

</comment><comment><USER21> Here are some more google translator easter eggs [http://www.jackcola.org/blog/128-the-best-google- translator-...](http://www.jackcola.org/blog/128-the-best-google-translator- easter-eggs)

</comment><comment><USER22> Anyone can translate?

<comment><USER23> [http://translate.google.com/#ja|en|%E7%A7%81%E3%81%AF%E3%81%...](http://translate.google.com/#ja|en|%E7%A7%81%E3%81%AF%E3%81%82%E3%81%AA%E3%81%9FFacebook%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%0A)

Japanese to English translation

I have to use your Facebook

<comment><USER24> IMNALinguist, but it's more like "I'm using your Facebook".

\- 私 - "I"

\- は - topic particle (defines that "I" is a subject, so it can be translated as "am" here)

\- あなた - "your" [here it lacks の particle, which should indicate possession]

\- Facebook

\- を - signifies, that that word is the direct object of the following verb

\- 利用 - "to use" (verb stem, conjugated with the following part)

\- +しています - "are using" (or "will be using", as there's no grammatical distinction between present and future tenses in Japanese)

It seems that some group made a prank and suggested this as a translation to "I HATE YOU".</comment></comment></comment>


NSA reviewing deal between official, ex-spy agency head - <AUTHOR> http://www.reuters.com/article/idUSKCN0I624Y20141017 <comment><USER2> It's probably appropriate to use a throwaway when discussing this topic, not as a way of sniping via anonymity, but because the social climate surrounding this particular topic has gotten so extreme. Those not immediately in agreement with any anti-NSA sentiment seem to be ridiculed or personally attacked for their ideas. Such behavior is usually a sign that we're treading into "What You Can't Say" territory; hence, the throwaway.

As for my comment: I don't understand what's wrong with the arrangement presented in the article. Would someone please give concrete examples of (realistic) scenarios where this would be extremely detrimental to the US, or at least more harmful than the current arrangement of contracting private firms to perform government work?

Is your position that when the government brings in a whole company from the private sector to do work, then that's perfectly fine, but when they bring in an individual, it's not? Why? All of the same safeguards seem to be in play.

Also, having a risk of conflict of interest is different from having a conflict of interest.

 _He said he understood it had been approved by all the necessary government authorities, and that IronNet Cybersecurity, not the government, would pay for Dowd 's time spent with the firm.

Dowd, he said, wanted to join IronNet, and the deal was devised as a way to keep Dowd's technological expertise at least partly within the U.S. government, rather than losing him permanently to the private sector._

Seems straightforward to me. The US government needs technically competent people, and they wanted to keep this technically competent person. The arrangement was approved by all necessary authorities.

You can hold one of two viewpoints: The NSA is necessary, or the NSA is unnecessary. It seems pretty hard to argue that it's unnecessary. And if it's necessary, then surely it's also necessary for them to have highly competent people. (Would you rather an extremely powerful organization have extremely competent people, or incompetent people?) So if competent people are being lost to the private sector, then why _not_ make special arrangements to retain their talent in some capacity?

<comment><USER3> How does another company compete with IronNet?

Will there be a scramble for other highly ranked NSA employees by other companies in the same line of work?

So I'm viewing this from the implications of the effect on the market rather than the effect on NSA.

<comment><USER4> Classic capture. Would the government's decisions be biased by knowing that the financial decisions it makes will directly affect its old (and future) colleagues? The bureaucracy can buy product A from a random company, or product B from their old boss's company. And also have some assurance that in the future, the second company would offer them a job. All the while, product A is the better product.

This is not nearly to the level of 'constitutional protections' \- but is instead another indication of the inability to properly regulate an entirely secret bureaucracy. The NSA has all the failings and issues that any other large bureaucracy has - however it has difficulty utilizing the common mechanisms to regulate its less efficient behaviors.

</comment></comment></comment><comment><USER5> So every piece of paper the NSA touches is classified, and we're told that even the most innocent dripple of bits of information are vital to national security.

And here is the CTO working part-time for private companies. I wonder how discussions with clients at this security consultancy go? "Should we use TLS for our internal networks?" "Uhh.. let me think about this... uhh.. I think that's classified".

Right, that is clearly how it will go down.

</comment><comment><USER6> I think it's time to review whether the NSA has done more to harm Americans than to benefit them, and if so, to begin talks on dismantling the agency.

This isn't political extremism. There have been scores of agencies in the past that have been shut down due to abuse and mismanagement (including FEMA, which no longer exists), and what's left of the defunct agencies that still need to function have been rolled into other agencies (in FEMA's case, the DHS).

For a (completely random and poorly thought out) example, foreign surveillance could be rolled into the CIA. The Lawrence Livermore National Laboratory has done some great work on improving cryptography for everyone, and could be the group responsible for doing that. That said, the private sector seems to be doing a perfectly good job developing cryptography on it's own.

If they can't do the job correctly, let's find someone that can.

<comment><USER7> FEMA still exists. It's no longer an independent agency, but it was never dismantled.

</comment></comment><comment><USER8> So Patrick Dowd, the NSA's _CTO_ , is actually a part-time employee, and is moonlighting? Seems that this is at best a conflict of interest.

<comment><USER9> To be honest, it seems more like he was poached away by this other company, and the NSA made a deal to keep him part-time instead of leaving entirely.

<comment><USER10> How would that company's pitch go? "Hey, you can trust our services - our guy _works for the NSA_ ".

Seems insane to me. What's next? The Stingray makers hiring FBI's director Comey as an "advisor"? You don't see see this as a huge conflict of interest?

<comment><USER11> The revolving doors between government and corporate welfare businesses work that way on purpose.

</comment></comment></comment></comment><comment><USER12>
      NSA takes seriously ethics laws and regulations at all levels of the organization

I think they mean only if the public finds out

</comment><comment><USER13> _Dowd, he said, wanted to join IronNet, and the deal was devised as a way to keep Dowd 's technological expertise at least partly within the U.S. government, rather than losing him permanently to the private sector._

xkcd, as so often happens in these circumstances, has already illustrated this problem rather well. [http://xkcd.com/898/](http://xkcd.com/898/)

</comment><comment><USER14> So Keith Alexander doesn't know shit so he needed a real tech guy and ongoing access to classified info. Got it.

<comment><USER15> I doubt that many CTO types are "real tech guys." Perhaps at one point, they might have coded something up once. But CTO's are management first, with a few noteworthy exceptions.

I think this is more likely two "buddies" rubbing each other's backs.</comment></comment>


Rare Cloud Dot-Com Emoji Domain Name Tops Flippa End-Of-Year Sales - <AUTHOR> https://flippa.com/7185243-com <comment><USER2> I've called several domain resellers and never were able to get a "emoji" domain. Even less on a .com. How did they do that?

<comment><USER3> dotcom emoji domains... they were grandfathered in, before the change in ICANN policy. If you want an Emoji Domain, check out [http://heartheartheart.ws](http://heartheartheart.ws)

<comment><USER2> Its funny that the godaddy support explicitely told me that they dont support punycode emojis on any tld anymore. But yeah. Godaddy support does not such for bo reason

<comment><USER3> Sorry to hear that, Herbst. To be honest, I caught a lot of people off guard when I introduced folks at GoDaddy to emoji domains. Even the senior management of the Domain group wasn't super familiar with them...</comment></comment></comment></comment>


Charles Stross: The Golden Age of Fraud - <AUTHOR> http://www.antipope.org/charlie/blog-static/2008/06/the_golden_age_of_fraud.html <comment><USER2> Wasn't Stross the one who wrote about using Python scripts to generate mazes of shell companies? I suspect you need some pretty interesting fraud to impress him.</comment>


Aha Moments When Learning Git - <AUTHOR> http://betterexplained.com/articles/aha-moments-when-learning-git/

<comment><USER2> Hi all, thanks for attention! My passion is finding the "aha!" moments when learning. In git:

      - Git has a staging area before you commit
      - Branching is "save as..." on a directory
      - Imagine virtual directories inside your physical one
      - Show the current physical & virtual directory in your prompt
      - Visualize your branching strategy

That's what I'd explain if I had 30 seconds to tutor git in an elevator -- the rest can be looked up =).

Shameless plug: I'm making a general platform to share these "aha" moments, described here:

[http://betterexplained.com/articles/share-your-insights- aha-...](http://betterexplained.com/articles/share-your-insights-aha- betterexplained-com-beta/)

The goal is to find and filter the best insights that really helped when learning.

<comment><USER3> That's cool. Something I noticed - if you sort by 'most liked' it seems to be the most liked entries at the bottom, which probably wasn't the intention.

<comment><USER2> _forehead slap_ Thanks, I'll be fixing that.

</comment></comment></comment><comment><USER4> My Git aha! moment was when I discovered "git add -p".

I use it all the time now to break my work apart into multiple atomic commits.

<comment><USER5> The problem is that if you do a partial commit, you have to test that it works. You may have forgotten to add one line, etc.

One way to do this is to use "git stash save --keep-index", after patching. Then you can test that your program works with only that patch. After committing you can "git stash pop" to patch again or commit the rest.

Maybe it's possible to make a hook to make this easier.

<comment><USER6> I use git add -p to split apart what I intend to eventually fully get into the repo. Usually, this means separating whitespace cleanup from meaningful commits. Sometimes I use it to make my commits "distinctly describable" -- instead of a big commit saying (in effect) "I did lots and lots of stuff generally to do with BigTask", I am able to describe various steps of that work, e.g. "Refactored models.", "Added supporting .js file for foo mechanism.", "Migration for bar process.", "Controller method and view for baz form."

Generally, I reserve the "make sure it works" step for just before _pushing_ (i.e. making public), rather than just before committing.

I always use either `git commit -av` or `git add -p`, so I can preview what I'm about to do. I never use the freewheeling `git commit -m`.

<comment><USER5> Problem with not testing your "micro-commits" is that when someone is looking at old revisions to figure out where something went wrong, there is a chance that it won't compile, or will crash because you didn't test that exact commit.

<comment><USER6> I prefer smaller commits to larger ones because it isolates things (both improvements and breakage). I use git bisect when needed. You can always squash small commits into larger ones if really necessary, but teasing apart large commits into small, logical steps or components is much harder. Smaller commits are more "mobile" in that they can be cherry picked (in or out).

</comment></comment></comment></comment></comment><comment><USER7> The article describes a "parse_git_branch" shell function for use in a shell prompt. A much better function is included with git's completion script and is called "__git_ps1".

It can be found in /etc/bash_completion.d/git if you installed git using apt- get or something similar. It lives at contrib/completion/git-completion.bash in the git source tree:

[https://raw.github.com/git/git/master/contrib/completion/git...](https://raw.github.com/git/git/master/contrib/completion/git- completion.bash)

In addition to "__git_ps1", you also get amazing tab-completion for git commands when you source it. Here's how I use it in my prompt. There are simpler examples in the script itself.

        export GIT_PS1_SHOWDIRTYSTATE=yes
        export GIT_PS1_SHOWSTASHSTATE=yes
        export GIT_PS1_SHOWUNTRACKEDFILES=yes

        git_prompt='$(__git_ps1 " \[\033[0;34m\](\[\033[00m\]\[\033[01;32m\]%s\[\033[00m\]\[\033[0;34m\])\[\033[00m\]")'

        PS1="\n\[\033[0;34m\]# \[\033[1;32m\]\u\[\033[0;34m\]@\[\033[1;32m\]\h\[\033[0;34m\]:\[\033[1;32m\]\w\[\033[1;32m\]$git_prompt\n\[\033[1;36m\]%\[\033[0;39m\] "

</comment><comment><USER8> This article is using "GUID" in an unusual way (for the general concept rather than the specific format). I think that's likely to confuse people. Better to be more precise: Git uses a sha1 hash as a unique id.

<comment><USER9> Worse, "GUID" suggests that git assigns random ids to blobs and trees, which is not true at all. Two files with the same contents are intentionally given colliding object ids, not unique ones. Only commits (and tags?) get ids which are effectively unique (because they're distinguishable at least by the embedded timestamp).

</comment></comment><comment><USER10> >>Why stage? Git's flexible: if a, b and c are changed, you can commit them separately or together

This is the saver I would say. More often than not it so happens that once I am done with an implementation/issue, I get carried away (I am working on fixing this habit) and continue writing code in order to get as much out of me as possible and then suddenly realize that one of the earlier fixes should already be in the repository. Thats when git staging comes into picture.

<comment><USER11> I find git-cola an excellent tool for separating a large commit into useful parts.

<comment><USER12> You can also use "git checkout -p" for this.

</comment></comment></comment><comment><USER13> My Aha moments:

1)Discovering gitx for Mac Os. Specifically the brotherbard version. <https://github.com/brotherbard/gitx> Use this daily.

2)Learning about git rebase <branch> to make commit history more readable

<comment><USER14> v0.7.1 is from September 2009, a bit old. Is this the best Git App for Mac OS X?

<comment><USER15> Plain old `git gui' is worth looking at. Better keyboard support than GitX (though this is not saying much) and the UI for committing lines works better. If I've made a big pile of little changes and I'm trying to split them into multiple commits, I've found git gui way better than GitX.

The history view of GitX is better than `gitk --all', though, and of course having both history and day-to-day duties in the same app is useful.

There is another app called GitY, which I hated immediately. It shows your unstaged changes and your staged changes and your untracked files all in the same window, which I found very confusing, and there doesn't appear to be any way to add individual lines into the index, which is something I do all the time.

</comment></comment></comment><comment><USER16> My 'Aha' Git moment:

Discovering that '-d', '-D', 'rm', and ':' are all inconsistent UI behaviors for removing things

Consistent behavior is "distributed" across multiple commands. Variety is indeed the spice of life!

</comment><comment><USER17> Some good points in there but I think the section on branching strategy might be a throwback to the old, centralised paradigm. You can have master/dev repos, with feature branches off dev. Not sure if you need a release repo, but the main point is that access-controlled repos can replace the branching you'd use in older systems.

</comment><comment><USER18> "Easily merge changes with the original (changes tracked and never applied twice)"

Heh, guess he never tried to merge two things that was a series of commits that both contained renaming of something to something else. Lets see if I can visualize the situation:

Original branch A with file foobar.foo and contents z. branch B from A with one commit with foobar.foo renamed to foobar.foo.in and contents changed to z'. branch C from A with two commits. The first commit changes the contents of foobar.foo to z''. The second changes the name of foobar.foo to foobar.foo.in.

z' and z'' generate a merge conflict.

Have fun merging...

<comment><USER19> Can you point to a version control system that won't fall all over itself in this case?

Also, what would an "ideal" VCS do in such a situation? Btw, have you tried this with git? What happens?

<comment><USER18> No, I was replying to the claim that merging works and that stuff is never applied twice. Which it was. Specifically git suggested that I had a _deletion_ of the _new_ file unmerged.

Thinking back on it, this doesn't make sense. I think the situation involved rebase as well. That is, rebasing a rename onto a branch that already has done the rename in question turns the second one into a deletion. (Or at least adds the deletion of the second file to the list of unmerged changes).</comment></comment></comment>


Ask HN: How Sound Is the "Teach Yourself CS" Learning Resource? - <AUTHOR> I'm a SR. Dev at a big company we all know trying to rid myself of the insecurities that come from an informal education.
This is the resource in question:  https://teachyourselfcs.com/ <comment><USER2> Hi there, I'm the author. Yes this list precisely constitutes the topics in computer science on which I believe a software engineer with an informal education should focus. It's based on my experience of having taught computer science to over 1,000 junior to mid-level engineers, mostly bootcamp grads, in person in small classes over the last 5 years.

I've been meaning to update it slightly, to recommend _Computer Systems: A Programmer's Perspective_ over P&H (although P&H is still excellent) as well as Martin Kleppmann's book _Designing Data-Intensive Applications_ for distributed systems.

<comment><USER3> For anyone looking to pick up Computer Systems: A Programmer's Perspective, you should probably avoid the Global Edition. From the author's website [0]:

> Note on the Global Edition: Unfortunately, the publisher arranged for the > generation of a different set of practice and homework problems in the > global edition. The person doing this didn't do a very good job, and so > these problems and their solutions have many errors. We have not created an > errata for this edition.

If you can't afford the book, it seems like the First North American Edition is available on the Internet Archive, although I'm uncertain of its legality. Remember to support the authors, if not now then hopefully in the future after you get a high paying software engineering job.

[0] [http://csapp.cs.cmu.edu/3e/errata.html](http://csapp.cs.cmu.edu/3e/errata.html)

<comment><USER4> I got offered the 2nd Edition few month ago, still worth the read or should I buy the 3rd to get the most out of it?

<comment><USER3> I haven't read each edition in order to make a comparison. However, it's probably worth mentioning that, unlike the 3rd edition, the solution manuals for both the 1st and 2nd editions can easily be found online with a quick search. If you intend to sit down and start solving problems then the 2nd edition might be better, since you'd be able to check your answers against the solution manual.

Edit: I actually hadn't looked, but it looks like all the solutions for the 3rd edition are also available online [0].

[0] [https://dreamanddead.gitbooks.io/csapp-3e-solutions/content/](https://dreamanddead.gitbooks.io/csapp-3e-solutions/content/)

</comment></comment></comment></comment><comment><USER5> Looks great. But just to clarify: in the context of a CS program, it's not about reading and retaining the entire books cover-to-cover, retaining everything, or doing 100% of the exercises. The professor will assign specific readings and exercises that track the lectures. Some will not use the textbook's exercises at all, and instead build their own homework assignments. You can typically find a PDF describing the assignment on a course's website, along with starter code. Typically there's a test suite that does automated grading. If you're lucky, you'll be able to obtain that and run it locally without a university login.

I spent the vast majority of my time and effort on the programming assignments, and while I did the readings, I didn't pore over the books that closely except when stuck. IMO, that's the way to do it. You want to think of programming projects, not books, as primary.

The part of my CS education I loved and still cherish was the evenings in the library with project partners, triumphantly flushing out one last segfault moments before the 11:59pm submission deadline.

<comment><USER6> For math and computer science, a good rule of thumb is to treat the exercises as the primary way to learn, and to refer to the rest of the text as support to help you with the exercises.

That extends to reading academic papers; but there you have to come up with your own exercises.

(I say rule-of-thumb, because it's a good approach, but please don't take it as gospel.)

You don't need to do 100% of the exercises. A random selection is usually sufficient: the goal is to get good enough that you _could_ do any of the exercises.

<comment><USER7> The nice thing about this approach is admitting that it's _okay_ if you skip an exercise you're struggling with. It can be a little frustrating at times, and feed a little bit into that insecurity, but a key realization is that one programmer can't possibly know everything. Not in this field, it's _way_ too big. So, skip it! If it bugs you, come back to it in a month or so and you'll be surprised at how much easier it is on a second pass. Or, you'll have such a strong grasp of the language that you'll see, "Ah, there's the fundamental element I don't understand, here's what I can search for, or who I can ask to point me in the right direction."

<comment><USER8> I agree, but only if you tried really hard. I believe that the main benefit of exercises is not so much getting the right answer (who cares anyway?), but the fact that they made you go over and over again over the concepts, forcing you to really understand, to reread your notes, and to apply them, even if you fail at first. If you do this, it will stick, and, as you said, the next time you come across said concept you will be much more likely to get the subtleties and, suddenly, that mother of a problem becomes trivial.

</comment></comment></comment></comment><comment><USER9> FWIW, when I was trying to rid myself of similar insecurities, I went through a bunch of courses like this one, but none of them worked out for me.

The challenge was that the textbooks and material that is popular among University CS courses leave a lot of unanswered questions that I couldn't get over. For example, when I came to hash tables while studying data structures, I couldn't figure out how the hashing functions did their magic. Every book or online lecture I came across showed how to use a generic hashing function and moved on to dealing with hash conflicts. I couldn't move on because I kept coming back to questions like "ok, but why this hashing function? If I change my data a little bit, is this still the right hashing function to use? How can I tell?"

Somehow, people who had formal education managed to sail past these questions. I suspect that having someone to answer these questions when they came up played a crucial role in them understanding the material.

My point is, some of these materials are almost deliberately designed to be consumed with an instructor who can answer questions. Especially for the difficult courses.

In the end, when I was teaching myself the basics, I had to go hardcore and pick up TAOCP to keep up. TAOCP has a reputation for being a very dense reference book and being unsuitable for self study - but I found the opposite to be true. Prof. Knuth painstakingly covers every minor detail leaving nothing unaddressed. (His treatment on hash tables has several pages on hashing functions that gave me a clear understanding of how things work). I would recommend following that path if you are trying to study the basics without formal instruction. It's a little harder, but you are more likely to end up successfully digesting the fundamentals and move on to more advanced topics.

Today, I have fully rod myself of insecurities, and I have developed a habit of going to the most comprehensive treatment of a topic if I'm trying to teach myself something difficult. For easy subjects, textbooks popular in Universities is usually good enough. For difficult stuff, I prefer going hardcore.

Be aware of textbooks designed to work with formal instruction.

<comment><USER6> Sounds like you would make a good mathematician.

I had a very similar reaction to the much vaunted 'Algorithm Design Manual'. It was all fluff with not much substance.

I found [http://jeffe.cs.illinois.edu/teaching/algorithms/](http://jeffe.cs.illinois.edu/teaching/algorithms/) pretty good for an overview over Algorithms.

If you like something in a similar vein to TAOCP, the book 'Combinatorial Optimization' by Alexander Schrijver fits the bill. It teaches you everything you ever wanted to know and then some on the mathematics behind problems in P. Just like TAOCP it is also a detailed overview over known results. See [https://homepages.cwi.nl/~lex/files/book.pdf](https://homepages.cwi.nl/~lex/files/book.pdf) for the list of contents.

<comment><USER10> I'm taking Jeff's 473 class right now and if you like his writing style, all of his lectures for both algorithms classes he teaches are online as videos - it can be a good companion to the textbook if you want worked examples. [my video] links should be raw MP4's that are not password protected.

374 (Introduction to Algorithms Videos): [https://courses.engr.illinois.edu/cs374/fa2019/A/schedule.ht...](https://courses.engr.illinois.edu/cs374/fa2019/A/schedule.html)

473 (Algorithms Videos): [https://courses.engr.illinois.edu/cs473/sp2020/lectures.html](https://courses.engr.illinois.edu/cs473/sp2020/lectures.html)

<comment><USER6> Thanks! I don't really like videos for math-y content, but I have recommended his books to people who will definitely appreciate the videos.

Btw, I tried to reach out to Jeff for a linear time solution to an exercise in the chapter on matroids in section 8.2. It's about 'Scheduling with Deadlines', and his best solution is O(n log n).

But alas, I never got a reply.

</comment></comment></comment></comment><comment><USER11> I think the books are very sound but that doesn't mean following program will work for you. It really requires you to study well in isolation without anyone else to ask questions of or discuss ideas with. I tried to follow that same program but couldn't stick to it. After failing to stick with it, I enrolled in Georgia Tech's OMSCS. I am halfway through and I can't recommend it enough. That said it is a shit ton of work. The real value that I get from the OMSCS are my discussions with fellow students and professors, something you can't get from self-study.

I am currently taking the compiler course (CS-8803) and there is no way in the world I put this much work into a self-study project. I spend roughly 30 hours per week on it.

<comment><USER12> Searching for OMSCS on ddg, the second link, gives me a guys perspective on why he had to quit after joining OMSCS -

[https://www.jameskerti.com/omscs-georgia- tech/](https://www.jameskerti.com/omscs-georgia-tech/)

Any comment on this from your perspective?

<comment><USER11> The quality of courses varies wildly. Some courses were created by profs that have since moved on and are run by TAs who don't care. Those also happen to be the easier courses.

Some classes are very poorly run. However, you can avoid those courses. There are reviews of all courses on [https://omscentral.com/courses](https://omscentral.com/courses)

I took Machine Learning for Trading (basically intro to ML) and enjoyed it tremendously even though the prof has since moved on.

I also took High perf Computer Architecture - basically graduate computer architecture - and enjoyed it immensely even though the professor was not active. We had a great TA, exams were insanely hard but gr8 test of knowledge, and I learned a ton from classmates. One classmate was an actual hardware engineer on PowerPC. I learned so much from him.

Most classes have active Slack channels w/ active discussions at all hours. Those channels alone are worth joining the OMSCS IMO.

</comment></comment></comment><comment><USER13> CS graduate here.

Can confirm this site is legit. These are all standard recommended texts in CS curriculum.

You could probably substitute SICP with other modern language text books on programming, but you're not really starting from square one so I'd skip to data structures and algorithms.

That being said, from my limited experience with SICP, it's very good. Even the old MIT lectures are good. And it gives you exposure to a functional language.

The only thing glaringly missing is computational theory which you can acquire this by going here: [https://ocw.mit.edu/courses/mathematics/18-404j-theory- of-co...](https://ocw.mit.edu/courses/mathematics/18-404j-theory-of- computation-fall-2006/)

Or reading this book: [https://tinyurl.com/rm6bgws](https://tinyurl.com/rm6bgws). It's the one I used in my studies and it isn't that great.

This book is apparently good because it's less wordy: [https://cs.uwaterloo.ca/~shallit/second.html](https://cs.uwaterloo.ca/~shallit/second.html)

WARNING: This stuff is very difficult to learn on your own. It takes a considerable amount of time to master and it would be worth it to go to university for support. You will often find that many of this stuff is not directly applicable to the workforce unless you're entering research positions. That being said, if you're a genius, unlike me, and extremely dedicated and consistent (also not me) you probably won't have any difficulty.

I've not taken the MIT course or read the second book so I can't vouch for its quality.

</comment><comment><USER14> I'm not sure what you mean by "sound" but it does cover a number of topics broadly which is usually what you get with a CS education.

Be aware though that you will get a vastly different CS education depending on which school you go to. It's a very broad field and different approaches pick from different branches of mathematics along the way.

If _general_ ability is what you'd like to improve I'd add a bit of the more general mathematics to your repertoire: set theory, logic and predicate calculus, discrete mathematics, category theory, and type theory. Dip into calculus, linear and abstract algebra, information theory, semantics, and other specialized fields when you find a subject and specialization that tickles your fancy.

My reasoning there is that while the languages and technologies change, the foundations of math don't change as much, and it will help you reason about the problem you're looking at.

Information theory, for example, will help you understand the limits of compression and transmission. If you're working in networking or file storage this is useful stuff to know as there are lots of people who will make wild claims about a new compression algorithm that sounds way too good to me true. If you have a decent understanding of information theory there's a good chance you won't even need to see the code to debunk the claim. And it's also useful if you're working on some code and it's not performing up to your expectations: you know, because of the theory, that the transmission rate isn't what it could be and that gives a good start for debugging your algorithms points you to the design of your system.

Mathematics is your candle. It'll help light the way in a dark room where the dark room is your lack of knowledge and experience in a particular problem domain.

<comment><USER15> > I'm not sure what you mean by "sound"

The word in this context roughly means "good" or "correct".

[https://www.dictionary.com/browse/soundness](https://www.dictionary.com/browse/soundness)

</comment></comment><comment><USER16> I've followed this curriculum for the past two years and I can report back that it will rid yourself of those insecurities. But I don't recommend following it to the letter. I used it as a starting point for each topic and then found multiple text books, university curriculums and hands on projects that fit my style of learning. For example, everyone recommends SICP, but I had a hard time staying with the original text book. Both Berkley and MIT have great video lectures based on the book and updated lectures based on Python. Watching both of these gave me a good understanding of the core of what SCIP really was trying to communicate. I later went back and went through the book, but used Racket as the scheme flavor and became familiar with that world.

</comment><comment><USER17> I really like the resource but some of the courses I prefer some alternatives.

1\. Programming - IntroCS by princeton - available on coursera with videos and graded assignments. If you require a slightly easier course, then you can check out CS61A from Berkeley or MIT's Intro course in python.

2\. Algorithms and Data Structures - Princeton 2 courses in algorithms - coursera. Alongwith their book and booksite this was a very good resource for me with their graded assignments. I also would suggest CS61B from berkeley.

3\. Databases - I started learning from Stanford Widom's course, but now I actually recommend CMU's course. I have heard good reviews for berkeley's course CS186 as well.

Side Note:

[https://bradfieldcs.com/courses/](https://bradfieldcs.com/courses/) These are the makers of [https://teachyourselfcs.com/](https://teachyourselfcs.com/). I notice that there are many courses, but at the same time $1800 per course is a bit too much considering USD conversion. So, I am looking for reviews if anyone has taken it, and whether the cost is justified. On the fence of joining it because of the cost.

<comment><USER18> I'm currently close to finishing their course on computer architecture. I'm self-taught; for me, it has been absolutely worth the money. I had learned a bit of architecture on my own, but the course has given me the kind of clarity that would have been very hard to get on my own. The syllabus is really good, it's practical, classes build up on previous classes. That gives you a solid understanding of all the components in a system. When I'd studied on my own, I spent too much time in specific areas that weren't _that_ useful for a software engineer. Oz himself is extremely approachable and the other students are really smart too.

Keep in mind though that it's ~18 hours of classes with ~3 hours of post-class and pre-class work per week. With any class like this, I've found that it's really important to actually do the pre-class and post-class work, especially the practical work -- it reinforces what you've learned in a class, helps you notice the gaps in your understanding and ask better questions.

</comment></comment><comment><USER19> This is a good resource BUT nothing compared with the interactivity that having someone with decades of experience in the industry gives you.

At a University you have a constant feedback loop of your knowledge being evaluated by people with experience.

A good teacher can give you this global view of a subset of what is really important very fast, so you follow Pareto's principle, you use it,you get more interested,you get deeper. This way you become continuously engaged.

Imagine you want to read "Structure an interpretation of computer programs". It is a jewel book, but if you read it you will not understand 95% of it, or what this academic stuff has anything to do with the real world.

You need someone with experience that tells you: You spent three weeks making this project, let's make it in two hours with this technology.

Of course it has taken years for this person to do in two hours what takes you weeks of work, and it will take you also years to be able to do that on the same level.

BUT if you read the most important content of this book, study and apply it over a week, you will be able to reduce the work from three weeks to a single week with one week of effort.

With a small effort you can get great rewards. That is pareto's Principle.

But you can not study only the most important principles of a book if you don't really know what is important and what is not. That is what a master knows.

Imagine that you study English as a foreign student by a book and you study words like "persistence" or "clairvoyance" at the same time you study "make","do", "he" or "she".

Worse, imagine that you study all the words but you don't study how they sound, so you make an idea in your head of the sound of the words based on your native language. Now every new word you learn, you learn it with the wrong sound.

You need someone telling you: Stop reading the book and do this and then you will understand what the book says, then follow this other part of the book.

Having a mentor or master of course is expensive, and that is the reason Universities exist, so masters could be shared and prices go down.

If you dot have direct access to a master, I recommend that you follow lectures of masters before you read X book.

<comment><USER20> I appreciate this example. I have witnessed a situation where a monk from Thailand was learning english by reading words pronouncing them how he imagined them to be in his own dialect. Nobody could understand the lectures he was leading about inner peace and presence.

On the find masters before reading the book: It's a difficult chore to do if you're not in a university I guess - you would need to have a really skilled colleague helping you out otherwise.

Either way, by reading summaries of the books written by other people could give a great insights of what others found the best that you could apply to your own.

</comment></comment><comment><USER21> > Aim for 100-200 hours of study of each topic [...]

Well, for some of those books you might definitely need more time (for example SICP) to get through and do all the exercises plus the required thinking and post processing to understand the essence of them. For SICP 100h and even 200h might be only a quick fly through the 800 something pages, without really having done the exercises (oneself, without looking at solutions, plus perhaps writing tests, spending more time at an exercise when one does not get the solution right away ...) and really having understood the material. Sometimes, when I did not understand some part of SICP of the 40% of what I did of it, I spent a lazy day or two on one exercise, just to be able to understand better and not need to look at solutions online. Sometimes I would hunt bugs for a while too. From that point of view the list seems a bit dubious.

I don't know many of the books or lectures listed, so I cannot say much about the other books or lectures. Just hope, that the other material in the list is not that voluminous.

Something that is missing in the list: Modelling languages and their semantics and all that goes with that. At least where I learned that was a major part of CS, because it is critical in analyzing software and modelling software for development. It is also something, which is often very much lacking in software projects found in the wild, making understanding of the software way harder than it needs to be on the conceptual level. We really ought to draw more diagrams! Also I am guilty of not often putting a diagram in my repositories as well, even if I drew some for myself. Sometimes a diagram pieced together from all the parts I do understand about some program is the only way for me to finally understand the whole program. Good to take this as a personal reminder for myself.

</comment><comment><USER22> If I lacked a formal CS education and wanted to understand more, I would focus on algorithms. They are the foundation of everything at the software layer. The two basic questions you will learn to answer:

      Is a certain solution to a problem correct?
      Can we make it faster or more efficient?

Understanding algorithms doesn't really matter unless you need to scale or be very efficient, but when that is important, a good understanding of algorithms will be invaluable to you and your employers.

Also, this is the only major difference I've noticed between people with a good, theoretical CS degree and those without one. All the other skills are about the same.

</comment><comment><USER23> Posting this since I don't see it mentioned yet.

Scott Hanselman and Rob Conery created the Imposters Handbook. I believe both of these guys are self-taught, and they are incredibly good at what they do.

They put it together precisely for self taught developers with no formal CS background.

[https://bigmachine.io/products/the-imposters- handbook/](https://bigmachine.io/products/the-imposters-handbook/) [https://bigmachine.io/products/the-imposters-handbook- season...](https://bigmachine.io/products/the-imposters-handbook-season-2/)

</comment><comment><USER24> It looks OK.

But:

teachyourselfcs.com has actually quite a lot of advanced reading and practical work buried in it. For the many thousands of hours that you would have to invest to do teachyourselfcs.com justice, you could quite easily complete a CS course at university.

<comment> 52-6F-62 I think the reason for resources like this, in spite of the time commitments, is the financial constraints of returning to school at an older age when you may have: mortgage/rent, carried CC/LOC debt, kids, car payments, etc etc.

</comment></comment><comment><USER25> It's definitely a very good resource and it's been a great help to guide my learning. It's definitely still a huge commitment in time (and textbooks!).

I've been working on a single volume introduction to computer science. The first chapter (on theory of computation) is available free on [https://thecomputersciencebook.com](https://thecomputersciencebook.com). I'd be grateful for any feedback.

</comment><comment><USER26> This is very good stuff. I'd also recommend CS50x, [1] the Intro to Computer Science from Harvard for those who need an intro before diving deeper, as it gives a solid grounding in most of these topics.

[1] [https://www.edx.org/course/cs50s-introduction-to-computer- sc...](https://www.edx.org/course/cs50s-introduction-to-computer-science)

</comment><comment><USER27> It's fantastic. I loosely followed it for a few years to get better at interviewing (Note: For interviews, you generally need data structures and algorithms knowledge).

Now I'm following it pretty closely while selecting classes for my software engineering master's degree.

</comment><comment><USER28> If the goal is resolving insecurities, I don't know if the site will help. If the goal is to learn more about computer science topics that haven't been studied previously, it will help. I can say this as someone who has used many of the resources on that site.

</comment><comment><USER8> It is a great reference, but, IMHO, there are some alternatives that I prefer:

 _Programming_ : I would instead prefer the combo _" How To Program"_, don't be fooled by the name, this course is the business (which will give you a rock solid foundation in systematic program design, TDD, clean coding and recursion, but most importantly, you will understand exactly why you should design your data abstractions first, because they will structure your functions), followed by _" Software Construction in Java"_, which will give you a rock solid and principled software engineering foundation (writing industrial strength tests, specs, ADTs, mutability, grammars, concurrency, the works). Both are free in edx (also check out the latter's ocw version, 6.005). As a bonus, check out Daniel Jackson's approach to software design in ocw's 6.005 from 2008, and how he explains three approaches to software design (state machines, functional and relational/OO). The best and most systematic explanation that I know of how to properly use the much maligned Design Patterns, and a very useful in practice design technique called JSP (although the course is in Java, all the design techniques are universal, this JSP stands for "Jackson Structured Programming").

 _Computer Architecture_ : the MIT combo _" Computation Structures"_ (on edx) and _" Computer System Engineering"_ (on ocw and youtube) will teach you systems design all the way from atoms to the whole internet. Great instructors.

 _Algorithms and Data Structures_ : again from MIT, on OCW (as _6.006_ , with videos, recitations and assignments in Python), a good balance between theory and practice. The dark horse here is the TA Victor Costan, who won several European level coding competitions as a kid, and will teach you algorithm design in practice. Eric Demain's lectures on Dynamic Programming should become the reference, his "5 steps" approach is amazing.

 _Operating Systems_ : mit's _6.828_ , from 2011 (has videos for all lectures). You will have to read and understand all 10.000 lines of code of an old Unix (with support from the lectures), and write a large portion of you own OS.

 _Databases_ : I would have a look at _CMU_ 's inspiring Andy Pavlo course (on youtube), just watch his intro lecture from 2018 to get a taste. Also have a look MIT's _6.813_ from 2014 (some vids), created by Stonebraker, with substantial assignments based on SimpleDB (in Java, if you prefer it over CMU's C++).

 _Distributed Systems_ : MIT's 2015 _6.824_ , by Morris (of the worm). Great text notes, and many lectures on youtube. Assignments in Go, where you will implement your own Raft and a distributed key-value store.

Some extras:

 _Cryptography_ : _Paar_ 's explanations on youtube are crystal clear.

 _Data Science_ : Berkeley's _Data8_ (2016, may seem basic, but the instructor is amazing and you will learn how to look at data), followed by _Data100_ (summer 2019, more technical, with Python tools on Jupyter galore). Will give you good intuition if you don't know much stats, and to really worry about your data samples (bias!) ( _garbage in, garbage out_ , not sure if this cliche is ever mentioned in these courses, but you will understand exactly how or why, and how to avoid it, or, at the very least, to tune your BS detector).

etc

<comment><USER29> Many of these helped me internationalize my CS education taught in Turkish language. Highly recommend all!

</comment></comment><comment><USER30> Related question: How can I assess my level of knowledge?

I am also a Senior SWE at a large, famous company with an Electrical and Computer Engineering background, so I had a substantial amount of overlap with the typical CS curriculum with the notable exception of a compiler class.

</comment><comment><USER31> For what it's worth, I've had a decent career as a self-taught programmer. Over the years, I've absorbed most of a Cs education in the following way:

Whenever I approach a new problem that I don't understand, I take the time to read up on the principles and original work that led to the standard approach to that problem. If the papers reference something I don't understand, I look that up, and so on.

I was doing this before the internet became a useful resource (lots of Library time). it's become much easier now.

It also helps to have a mentor or two who understand the area you're interested in, and who don't mind you taking their time with endless questions.

</comment><comment><USER32> Generally the hardest part of self teaching is the ability to stick to it. CS is generally complicated and long. It takes lots of self control to finish.

You should make sure you keep that in mind and make a plan so you will finish.

Good luck.

</comment><comment><USER33> Pretty good! My CS degree focused most on math, algorithm, data structures, programming, and computer architecture.

The other topics I don't really think of as computer science, more as electives a CS student might take.

</comment><comment><USER34> Hint: Impostor syndrome is a thing (see [https://www.hanselman.com/blog/ImAPhonyAreYou.aspx](https://www.hanselman.com/blog/ImAPhonyAreYou.aspx) for more information). Taking these courses probably won't fix that.

But there is most likely nothing wrong with these courses. Just looking at the programming section: MIT and Berkeley are no slouches when it comes to CS!

</comment><comment><USER35> All the books are great recommendations, except for Computer Networking (Kurose & Ross). That was the textbook we used when I was in grad school, and it was terrible. The best book on networking I've ever read was TCP/IP illustrated - it's a bit out-of-date, but once you read it, you'll understand the core networking concepts well enough to figure out the current state of modern computer networks.

<comment><USER36> You said it's terrible but did not state why!

<comment><USER35> I found it to be too academic, too high-level - and too top down! I had already read TCP/IP illustrated before I took the class, so I had no trouble intuiting what the authors were trying to say, but I was in class with a lot of people who had no real exposure to network concepts outside of surfing the web, and they were all horribly confused by the abstraction in the book. I wouldn't even say it's worth coming back to after you've read a better networking book: I didn't learn anything from it that I didn't already know.

<comment><USER36> On the other hand I would say, I learned a lot from this book. I too had no exposure to network concepts but after finishing half the book I learned a lot.

</comment></comment></comment></comment><comment><USER36> I must say all the book suggestions are really great. Except for P&H. As mentioned in comment he now recommends CS:APP over it and I would do too.

Also, for compilers I would suggest C compiler design [1]. It provides both implementation and theory instead of just theory which the dragon book does.

[1] [https://holub.com/compiler/](https://holub.com/compiler/)

<comment><USER35> > Except for P&H. As mentioned in comment he now recommends CS:APP

P&H is "Patterson & Hennesy" (Computer Organization and Design), right? I gotta say, having read both, I think they cover different ground and I wouldn't say that once replaces the other. P&H is more hardware with a nod to software and CS:APP is more software with a nod to hardware; you won't get a really deep understanding of instruction pipelining from CS:APP, nor will you really get great coverage of linking and loading from P&H. If you're going to do it, read both.

<comment><USER36> I dearly agree with you. But, given an options between two I'll chose CSS:APP. Reason being it being more close to software.

I'll like to say that I had the same observation as you when went through both. I almost felt like I wrote the comment.

<comment><USER35> That's true - you're definitely correct that P&H is more of a "nice to have" for a developer.

</comment></comment></comment></comment><comment><USER37> I followed that curriculum and it sorted me out with regards to algorithms and networking. I recommend it very highly.

The idea is that once you have read these books you have the knowledge needed to identify what kind of problem you have in front of you, what tools are known to solve it, what are their disadvantages, and most importantly what should you search for to find out more about the problem.

</comment><comment><USER38> Looks about right. FWIW, I'm a CS student at a top CS school in US and we use all the same textbooks as the website recommends.

</comment><comment><USER39> None of the content seems to cover Turing Machines and The Halting Problem, and all the rest of the Automata and Language Hierarchy stuff in, say, Ullman's "Introduction to Automata Theory, Languages, and Computation"? Computer _Science_ , indeed!

</comment><comment><USER40> This article is well structured and I can say its one of the best resource guidance:

[https://www.afternerd.com/blog/learn-computer- science/](https://www.afternerd.com/blog/learn-computer-science/)

PS: not my own website

</comment><comment><USER41> Off topic: weird HN bug?

I see this item on front page as item #12 and on the second page as item #39. The latter was posted 14hrs ago and former 7hrs ago (10:35am PST) — both have the same item id.

</comment><comment><USER42> Looks like a fantastic resource and covers all the fundamental concepts to get you started on your CS path. Highly recommended!

</comment><comment><USER43> I am looking to read more about business; would love something similar for an MBA.</comment>


After the Google walkout, key organizers reflect on the risk to their careers - <AUTHOR> https://www.cnn.com/2019/11/01/tech/google-walkout-one-year-later-risk-takers/index.html <comment></comment>


I am still grumpy that so many people think Google built a backdoor for the NSA - <AUTHOR> https://twitter.com/LeaKissner/status/1129448241269837824 <comment><USER2> is this a silly PR attempt? nobody ever said this.

what everybody said, and happened, was the other way around. And that's why google and everyone else encrypt even in-rack traffic.

<comment><USER3> I remember this indeed being a thing in the news at the start of the Snowden leaks press coverage. Journos saw Google etc. logos in the NSA slides and thought they were on board rather than being tapped.

<comment><USER2> So, almost decade later we are fixing one bad case of small disinformation that people have to make a mental effort to even recall it? why?!?</comment></comment></comment>


The Matrix Cookbook (2012) [pdf] - <AUTHOR> https://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf <comment><USER2> "Neo's Noodle Soup"

In a large pot over medium heat, melt butter. Cook onion and celery in butter until just tender, 5 minutes.

Pour in chicken and vegetable broths and stir in chicken, noodles, carrots, basil, oregano, salt and pepper.

Bring to a boil, then reduce heat and simmer 20 minutes before serving.

There is no spoon.

<comment><USER3> You had me at "butter".

</comment></comment><comment><USER4> I'm disappointed. I was expecting a recipe for the goo that Neo was forced to eat in the first movie.

<comment><USER5> Or recipes that make everything taste like chicken

</comment></comment><comment><USER6> Got me through my first machine learning class, highly recommend!

</comment><comment><USER7> I very much like the form of this, yet I wish that the dependencies were ordered differently, such that one would not need to jump around (e.g. eigenvalues before determinants, since the latter are defined by the former).

<comment><USER8> The author's email address is in there and it sounds like they were soliciting for comments... who knows if they are still maintaining this or not.

</comment></comment><comment><USER9> I've been brushing up my Calculus and Linear Algebra, and this will help immensely. Thanks!

</comment><comment><USER10> Worth checking the Wikipedia page on matrix calculus to see which version of the notation you use! This is in numerator (iirc) and so d (vec x) / d(t) = (vec x). I was used to d (vec x) / d(t) = transpose(vec x), and so this cookbook confused me for ages :S

</comment><comment><USER11> When I learned about matrices in school it really bored me, even though math in general really captures my interest. Can anyone recommend a good source that makes matrices interesting and captivating?

<comment><USER12> 3 Blue 1 Brown has a much better introduction than any course I've seen: [http://www.3blue1brown.com/essence-of-linear-algebra- page/](http://www.3blue1brown.com/essence-of-linear-algebra-page/)

</comment></comment><comment><USER13> I am amazed that so many people honestly expected a cookbook for meals in the movie 'the matrix'...

</comment><comment><USER14> Super cool! Thanks for sharing!

</comment><comment><USER15> can't connect to the server as it doesn't have TLS 1.2

</comment><comment><USER16> TL; DR:

What is this? These pages are a collection of facts (identities, approximations, inequalities, relations, ...) about matrices and matters relating to them. It is collected in this form for the convenience of anyone who wants a quick desktop reference.

In case you were, uh, expecting to see Keanu Reeves in a kitchen apron.

<comment><USER17> Thanks. I was just now straining to remember what food was shown in the films. A bowl of snot. A juicy & delicious steak. The oracle's cookies. I actually never realized before that food is such a theme. Makes sense, it is a very non-machine activity to consume food.

<comment><USER18> > Makes sense, it is a very non-machine activity to consume food.

Dang. Now I feel like running a GAN to come up with new recipes!

<comment><USER19> [https://static.googleusercontent.com/media/research.google.c...](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46507.pdf)

</comment></comment></comment></comment><comment><USER20> Dang it! I thought this was gonna be a cookbook from the movie Matrix. Like how to bake the cookies the oracle made, or the steak Cypher ate. That looked good.

<comment><USER21> i am so disappointed when i find out it is matrix the mathematics!

<comment><USER22> The Architect approves. If only Neo was a linear algebra problem, and Smith wasn't an unforeseen variable the Oracle snuck in there!</comment></comment></comment>


The one million potato photograph - <AUTHOR> http://www.nydailynews.com/life-style/pay-1-million-photograph-potato-article-1.2510953?utm_content=buffer22c1a&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer <comment><USER2> The title should say "The one million dollar potato photograph". I was wondering if it was a photo of a million potatoes, or a mosaic made out of one million potatoes.</comment>


Ask HN: LaTeX templates for programming books? - <AUTHOR> Is there any LaTeX templates for programming books? Something you can easily start using, with code snippets and line numbers support <comment><USER2> Try:

[https://www.sharelatex.com/templates/other/programming- assig...](https://www.sharelatex.com/templates/other/programming-assignment)</comment>


Ask HN: How do I sell an iOS app to a local dentist's business? - <AUTHOR>

I recently began working as an iOS app consultant and in a few days I am meeting with the owner of a recently opened local dentist's office (someone I know referred him to me), who could potentially be my first client.
How do I convince him that an iPhone app will be worth more to his business than what I charge ($4,000/week)?
Most of the ideas for apps that I come up with for his business are neat and gimmicky, but they would not directly benefit his business by making/saving money, which would make it harder to sell to him.
What is an app idea for this local dentist's office that would save/make his business money? <comment><USER2> Email me some more information (if your interested) and maybe you can't sell him the iPhone app as a service and not a flat out product, with a bigger name behind it.

I run igniteDDS.com and I'm always looking for new things to provide students / dentists / etc... Maybe we can work together...

If you can turn 1 sale into reoccurring monthly income... you'll be better off in the long run.

</comment><comment><USER3> May I ask why you are trying to sell an App to someone who--according to the description you gave--probably doesn't need it?

If he's your first client...the thing is people might want to contact him as a reference point...and if he feels misled and disappointed, you probably wouldn't want to use him as a reference...

</comment><comment><USER4> [http://waitingroomapp.com/](http://waitingroomapp.com/)</comment>