Poor, Poor Child. You have no idea. - <AUTHOR> http://writing.bryanwoods4e.com/

<comment><USER2> What is math? There are many answers, so the one I pick for this post is that math consists of starting with some basic axioms, chosen to be as simple as possible, then rigorously exploring what else you can extract from your simple axioms by concrete proofs. It is staggering what you can get from simple axioms. It is staggering the subtly with which they can interact.

What is programming? It is the art of starting with very simple primitives, then rigorously building up slightly more complicated primitives, then building another layer on top of that, until eventually you get to a level where you can do actual work. It is staggering how far we get on how few primitives; it is incredibly educational to read what opcodes a processor actually implements. (Even better, make sure you read just the modern subset.) I mean, it pretty much just has "move this here", "add this", "multiply this", "divide this", and "if this thingy is 0 jump there". Yes, I know there's a few more, but the point is that it definitely doesn't have an opcode that downloads a webpage. It is staggering the subtle ways in which these things can interact.

It is absolutely possible in both the mathematical and programming cases to do "real work" without having the understanding of things that I refer to in my previous paragraphs. A web programmer does not constantly sit and do logic proofs, an accountant does not constantly refer to number theory throughout their day. Of course this is fine for the accountant, who is not expected to do original work in the field of accounting. (It is rather discouraged, in fact.) So of course it's OK for an accountant to have a very tool-like understanding of numbers. Are you, the programmer, expected to do no original work in the field of computing, such that you don't need to understand computing deeply? It may be so. Such jobs exist. But _watch out_ , that means you're one library acquisition away from not having a job anymore! (And if you can't be replaced by a library, you're doing original work of some kind. Most programmers are.)

Look back at my first two paragraphs, where I have obviously drawn parallels. The real value of mathematics for a programmer is not that the programmer is likely to be sitting there doing matrices all day long, or even worrying much about logic problems, and they certainly aren't going to be sitting around all day doing sums. What mathematics provides is a clean place to learn the relationships I talk about, how we build the large concepts from the small concepts, and provides a playground where you can have that famous all- but-100% certainty that mathematicians like to go on about (justifiably so).

This is great practice for programming anything beyond a trivial project, where, if you have a clue, you will probably be starting with building up some reliable primitives, and then trying to build bigger things out of them. Bad programmers just start slopping concepts together with glue and just pour on more glue when they get in trouble, and produce what can only be described as, well, big piles of glue with no underlying order. A programmer who has become skilled in mathematics has at least a chance of producing something that is not merely a big pile of glue, and can have characteristics in their program that are characteristics that a big pile of glue can't have.

It is possible to come to this understanding without passing through formal mathematics, but it is much harder, because the world of programming is ultimately the world of engineering, and it is much harder to see these patterns. They are there, but they are obscured by the dirtyness of the real world.

That the mathematics may have an independent use is _gravy_ ; even if they were somehow otherwise worthless but programming was somehow unchanged (not really possible, but go with me here for the sake of argument) it would _still_ be a worthwhile study. There are few better ways a programmer can spend their time than to become familiar with mathematics. Without the understanding of programming I outline above, regardless of which path you take to get there, your skillset will plateau, the maximum size or complexity of a system you can build without it coming apart will top out noticeably sooner than those who do have this understanding, and there will be things that remain forever a mystery to you. (Like how those large programs really work.)

</comment><comment><USER3> While there are clearly differences between languages, I think it is rather deterministic to put that much weight on the _first_ language? My first language was GW Basic. By your logic, there wouldn't be much hope for me I guess..

<comment><USER4> "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." - Edsger Wybe Dijkstra

<comment><USER5> It is always amazing to me how much of a mix Dijkstra was. Many of the hand- written articles of his I read are filled with valuable insights, and are absolutely worth the read. And then there's those other sets of comments (like this one) that make me want to pay no attention to anything he had to say.

Of course, this is the guy who said "Computer Science is no more about computers than astronomy is about telescopes." And while I believe I understand his point he was trying to make, I have much higher respect for a person who still likes to get their hands dirty (still actually spends significant time _programming_ computers) rather than just dealing with abstract theory, algorithms, analysis, etc. Yes, I know that Dijkstra knew how to program (and did so, extensively, especially earlier in his career). But this is the guy who never owned his own computer -- even after personal computers became commonplace. That, coupled with the above comment about BASIC (and other comments I've read from him like it) make him come across as kind of an elitist -- like programming is beneath him or something.

Perhaps my take is wrong, and it very well could be. But I will say this. If Dijkstra was still alive and well, and you put him, Guy Steele, and Don Knuth in a room and asked me to pick two of the three to spend the day with, Dijkstra would be the one left out in the cold.

<comment><USER6> _If Dijkstra was still alive and well, and you put him..._

No harm, Dijkstra never struck me as the kind of person that would want to spend a day in a room with anyone, either. Computer Science is about studying the computation which can be done in hardware - not just Python, not just on one chipset, not just on a von Neuman machine, but in general. "Programming" as I think you mean it is a very small subset of that.

<comment><USER5> I was not arguing that programming is all there is to Computer Science (which is why I said I understood the point Dijkstra was making with his astronomy quote). However, I disagree with the notion that programming is "a very small subset" of Computer Science -- even though I think Dijkstra would probably agree with you on that. I think programming is a _large_ subset of Computer Science. Yeah, there's a lot more to it than that, but in my book the practical side of things is more important than Dijkstra seemed to think it was.

He was obviously brilliant and very perceptive with regard to many things in the field. However I still think it is over the top that the guy didn't even own a computer.

There are many who would rather spend their careers just writing applications without ever analyzing the differences between two algorithms, much less ever studying or thinking about computation in general. Then there are those who would spend their careers strictly on theoretical endeavors, and do not wish to continue writing applications or software systems of significant value. It is my personal opinion that the best Computer Scientists are the ones that regularly do both.

</comment></comment></comment></comment></comment><comment><USER7> Well, I'm sorry to say I strongly disagree with the mathematics part. Basis in linera algebra are a definitive plus and helped me approach programming in a sensible way.

<comment><USER8> I think it really depends on what you want to make. How does math help you make a CRUD application, for example?

<comment><USER9> The thing is the answer is YES, but you won't even understand why unless you have the appropriate math knowledge.

There would be a lot less terrible code written out there if people had a better grasp of discrete math, knew how to make their O(n) analysis, knew how to create and implement provably correct algorithms, knew lambda calculus and e.t.c. and that's just for general programming. I would say a basic grasp of set theory and graph theory applies to almost everything too.

<comment><USER10> I have discrete under my belt. And a bunch of other stuff too (came a bit short of having a minor in math in college).

And... well, I can't say that I've ever explicitly used _any_ of it in programming. I suspect you're falling into the trap of generalizing from a field you're familiar with to all fields, and that's a generalization that doesn't hold up.

<comment><USER11> In part the key word here is "explicitly." I have a PhD in Combinatorics and Graph Theory, and I have lectured in Calculus, Group Theory, Functional Analysis and Topology. In my daily work for the past 18 years I have explicitly used that background exactly once.

But the ongoing influence, the style of thought, the ability to visualise and the ability to abstract away from the details - these things I use all the time, every day. They have been enhanced and honed by all that math.

I use my math background _implicitly_ all the time, and I don't know how I'd do what I do without it.

And this is perhaps the most important point about studying math. Often the greatest take-away is the abstract problem solving capability, not the material itself. I've never had to analyse the genus of a manifold in real life, but I have thought about objects moving in an 11 dimensional space with holes, because while everyone else was stuch in the detail, I was seeing things differently. It turned out that the combination of styles was critical to solving the problem.

<comment><USER10> _Often the greatest take-away is the abstract problem solving capability, not the material itself._

That's why I got a degree in philosophy.

OK, not the only reason, but one of them...

Meanwhile, I think my point stands. Too many people seem to have an "OMG you don't use linear algebra every day? What kind of crap programmer are you?" attitude.

</comment></comment></comment></comment></comment></comment><comment><USER12> There's not a lot of math in plugging forms into database rows, or even in plugging values into MSRs and managing interrupts, but there's enough math in general programming that I constantly regret ditching that part of my education.

I am, with surprising regularity, annoyed that I can't pull basic trig out of my head without looking things up --- to say nothing of signal processing and number theory.

</comment><comment><USER13> >As a linguistics major, you're no stranger to the idea that a person is only capable of having thoughts and ideas that can be expressed in their language

As a linguistics major, you have no excuse for not knowing that Sapir-Whorf is utterly discredited.

<comment><USER14> Replying to your post in the recent discussion, <http://news.ycombinator.com/item?id=1033741>, I don't understand your reasoning. Sure, you can extend a language introduce a concept. But the lack of that concept can still have molded speakers' thinking.

<comment><USER10> The problem is that there isn't one "Sapir-Whorf hypothesis". There's a spectrum of such hypotheses, running the gamut from the mild "language has an affect on how we think" up to the extreme "if your language uses the same word for blue and green then you'll be blue/green colorblind".

The extreme forms have been rather thoroughly debunked at this point. The milder forms verge on tautologies.

<comment><USER13> >The milder forms verge on tautologies.

Exactly. The hypothesis is clearly false in any articulation strong enough to matter.

<comment><USER14> What is the weakest articulation that you think is clearly false?

</comment></comment></comment></comment></comment><comment><USER15> "As a linguistics major, you're no stranger to the idea that a person is only capable of having thoughts and ideas that can be expressed in their language, and there is no reason to expect programming languages to differ from spoken languages in this area."

I thought this idea (the Sapir-Whorf hypothesis) had been discredited.

<comment><USER16> My hypothesis is that the Sapir-Whorf hypothesis is much more applicable to programming than natural language.

edit: after I wrote this, I realised it's just a restatement of PG's Blub paradox.

</comment></comment><comment><USER17> It's ok to suck at maths if your idea of maths is limited arithmetic, something computers are indeed very good at and your idea of programming is limited to hooking up web forms to databases.

I'm not a linguistics major but I do speak several human languages and have no trouble thinking in them and expressing ideas in them. The first computer languages I learned (6502 assembly, BASIC) don't enter my conscious thought when I think about the programming problems I encounter with the languages I use today.

</comment><comment><USER18> Look, I'm sorry to be the one to break this to you, but if you have difficulty with any programming concept, you must not be a supergenius. You're just an ordinary genius at best. I'm sorry. Life isn't always fair.

Of course, I say this as someone who hasn't yet tried to learn Haskell. On the other hand, I know someone who competes at the national level and I never saw _him_ have trouble with anything including Haskell, so...

The sad truth is that there _are_ some people for whom programming comes as naturally as thinking, with code formed as easily as thoughts; and if it takes an effort to understand any aspect of programming, you have just learned that you are not one of those people. Alas.

</comment><comment><USER19> "Programming is not always intuitive, it's inherently complex, and it's challenging. Once you start feeling like you've gotten a handle on it, you'll learn something new that will make things seem even more complex for a while."

This applies to pretty much any field - engineering, physics, chemistry, even music!

My background is in electrical engineering and it's quite daunting to realize how little I REALLY understand when it comes to the fundamentals... Sure an engineer can make things "go" but they're standing on the shoulders of giants.

Learning is a humbling en devour.

</comment><comment><USER20> Has anyone else checked out the main page of the site?

<http://bryanwoods4e.com/>

Be sure to view the HTML code to see the "hail satan" comment. This guy has some personality thats for sure....

Another of his sites linked from the main page:

<http://www.howtousetwitterformarketingandpr.com/>

<comment><USER21> I don't think <http://www.howtousetwitterformarketingandpr.com/> is his site.

<comment><USER20> Okay, perhaps not. I didn't do a domain name search to see if he owns the domain.

</comment></comment></comment><comment><USER22> What about game programming? Nobody mentioned it. It's the ultimate test. Try to hack together a simple pool game. You'll be amazed of how much maths and physics go into a simple game that millions use and enjoy.

<comment><USER23> Not much math. Some simple physics like velocity and momentum transfer that you can learn in a tutorial (in a day). I think it is important to make the distinction between game development (lots of simple math and complex "pluggable" formulas) and game engine development (yes, you need to understand linear algebra,trig, and perhaps calculus).

<comment><USER24> No, game development includes 'game engine development' - the majority of companies write their own engine or have heavily modified a licensed engine. And you often need to understand quite a bit of math to use even off the shelf engines - to debug issues and to tweak stuff.

Perhaps you're referring to what industry folk call gameplay programming? There's a lot less hardcore math there - but you still typically need to understand basic physics, trig, interpolation, etc.

<comment><USER25> Most of the time working with a game engine does not involve inventing any new mathematics, so there is an upper bound on just how hardcore it can really get :)

</comment></comment></comment></comment><comment><USER26> I like the layout of the page, nice fonts etc.

The bit about being constrained by your first language is demonstrably not true (read pg's own account!). It can be a burden, but what stops people from progressing isn't this, it's the usual suspects: arrogance and ignorance. Once you stop judging a language purely on its merits and, thinking you've found the best, begin evangelizing it you will have problems seeing more powerful ones (because the language has become part of your id).

You have to treat a programming language like a great chess player treats possible moves: when you find a great one, sit on your hands and look for a better one.

As far as math: in my experience it isn't required. It will make you better and make your work easier. I've had good math people replace whole algorithms of mine with a couple of math statements. But if you really devote yourself to getting better at programming, learning a lot of diverse languages and so on, your math will get better. I've found it easier to learn certain math concepts from related programming concepts that I had already learned.

</comment><comment><USER27> Programming isn't hard, programming is fun! Ok, it is hardish sometimes, but hard in a fun way not hard in the non-fun way this article seems to imply.

And I really don't think your first language is all that important, programming is still fun usually, whatever the language. It's only later that we learn the fine art of language snobbery ;)

<comment><USER17> Hard and fun are not mutually exclusive.

<comment><USER27> Absolutely, but there is fun-hard and there is hard-work-discouraging-hard and this article seemed to me to be talking more about the latter. In fact I'd say that non-hard programming usually gets not-so-fun (although it still has it's charms)

<comment><USER28> No, really, sometimes it's "hard-work-discouraging-hard". I don't know anyone who thinks it's fun to pour through strace or tcpdump output trying to figure out obscure bugs at the OS or network layers. I've known a couple people who liked looking at generated assembly to debug compiler issues, but they are a rare breed. Race conditions or 1 in a million bugs really suck. Trying to debug any of these things while your company hemorrhages money or the phones are ringing off the hook with pissed-off customers; any "fun" you're having is just the adrenalin trying to keep you from being eaten by a tiger.

Working on hard problems, of your choosing, on your own schedule, can be fun and rewarding. But the reality is, you're not always going to get that.

</comment></comment></comment></comment><comment><USER29> I didn't need any advanced math to program until I started tackling computer vision problems.

Estimating 3D surface normals and depth from multiple photos of an object? Break out the matrix solvers. Computing homographies between images? Better know what an eigenvector is.

<comment><USER23> For me it was "want to make a fish swim realistically with inverse kinematics"? Break out the Jacobian Matrices.

Although, to be intellectually honest, I went only went as far as to research this, and no further. I just didn't see it as worth the time.

</comment></comment><comment><USER30> My first experiences with programming must have been very different than his, with respect to the first section in particular. I always knew that programming was supposed to be hard - I grew up knowing no programmers, teaching myself the esoteric art of C++ from a copy of "Sams Teach Yourself Visual C++ 6 in 21 Days". So when I understood it reasonably well, I felt I must be above average. Indeed, I've never felt the feelings of "frustration and discomfort" he references. Instead, I have always had to battle with my hubris in thinking that I'm that much better than the programmers around me.

<comment><USER31> Seriously dude....

<comment><USER30> Yes? My point was simply that where he struggled with frustration, I struggled with my ego. Considering he is probably a better programmer than me, I thought this was an interesting contrast to bring up. What is the problem?

<comment><USER31> Maybe you should clarify your posting. It reads as

"Well I never had any problems learning to program. I am pretty much the smartest person in the world I guess. My "problem" is that I am so great I have too big of a head."

<comment><USER30> Hmm, I see. Thanks for pointing that out - I'm still working on getting my intent across properly for this kind of thing.

Since it is too late to edit it and add a disclaimer, I guess this thread will do.

</comment></comment></comment></comment></comment><comment><USER32> In the beginning of Hillegass's book, Cocoa Programming for Mac OS X, he has a great quote of someone from Caltech being asked about the real world usefulness of a degree in astrophysics. His response was "Not much, but if I run into a hard problem and start thinking I must be stupid because I can't figure this out, then I remember I have a degree in astrophysics so I am not stupid and this must be hard. So in that way it is useful." I'm paraphrasing (the book is buried somewhere) but that always stuck and your post reminded me how important it is to keep at it because coding is not easy, but it is worth it.

<comment><AUTHOR> Thanks for mentioning this. I've actually been working through that book over the past few days and think that anecdote really got under my skin. For some reason it didn't dawn on me when writing the article. I'll make note of it.

<comment><USER33> pg made a similar comment in Undergraduation (<http://www.paulgraham.com/college.html>):

> My mother, who has the same [thermostat], diligently spent a day reading the > user's manual to learn how to operate hers. She assumed the problem was with > her. But I can think to myself "If someone with a PhD in computer science > can't understand this thermostat, it must be badly designed."</comment></comment></comment>


Cryptic Crossword: Amateur Crypto and Reverse Engineering - <AUTHOR> http://www.muppetlabs.com/~breadbox/txt/acre.html <comment><USER2> The punchline to this story is that a few years ago the Times stopped scrambling their .puz files, making all this reverse-engineering work largely irrelevant.

(At the time I was using a modified version of the "xword" program in Debian's repo, which didn't detect whether the file was scrambled. In other words, it treated every letter as wrong because it didn't match the enciphered grid. I ended up hacking in some code to detect these files and disable the check/reveal features when playing them.)

<comment><AUTHOR> Very true! I mentioned that fact the first time I gave this presentation, but it wound up being an anticlimactic ending, so I chose to omit it from the written essay. (And at this point, the focus is more about the process of reverse-engineering anyway.)

EDIT: To be precise, there were still a few other crossword publishers using the scrambling feature. None as important as the New York Times, though, of course.

<comment><USER3> Problem solving is its own reward!

</comment></comment></comment><comment><USER4> This is a great and entertaining read about reverse engineering.

It's such a good read that this is almost beside the point... but, as it happens, I worked on and reverse-engineered this same "encryption" scheme (I hesitate to use the word) for an iOS app that never shipped. I just dumped the code (which seems to have been written in late 2008) up on github... it's old, and messy, but hey, maybe it's fun for someone:

[https://github.com/davepeck/puzfile](https://github.com/davepeck/puzfile)

</comment><comment><USER5> Very cool rundown of the approach to trying to decode this. FWIW there is also a significant archive of information about the format here, including information about the scrambling: [https://code.google.com/p/puz/wiki/FileFormat](https://code.google.com/p/puz/wiki/FileFormat)

<comment><USER6> Indeed, staggering how patient and determined some people can be. I love this line when asked by his friend if he would be able to reverse-engineer this scrambling algorithm:

 _" My response was: maybe. Hard to say, but I'm willing to try. Privately, though, my reaction was THIS IS MY DREAM PROJECT AND THERE IS NO WAY I'M NOT SPENDING ALL AVAILABLE FREE TIME ON THIS."_

</comment></comment><comment><USER7> Extremely methodical and determined approach. Especially analysis of the errors that partially successful approaches encountered. Well done.

</comment><comment><USER8> >In a way this is just a restatement of Occam's Razor, but I like it because it clarifies why Occam's Razor is a good idea. It's not because simpler solutions are actually more likely to be true; they usually aren't. It's because it's almost always easier to improve a simple solution by adding complexity, than it is to improve a complicated solution by digging out a simple solution buried within it.

While the second part of that is an interesting observation, the first part is simply false. It basically comes down to prior probabilities and conjunctions. Every bit of new information implied by a hypothesis is another "and". It is a simple fact that P(X) ≥ P(X and Y), so the more conjunctions your hypothesis implies (the more complex it is) the lower its prior probability.

</comment><comment><USER9> Wouldn't it have been easier to disassemble the program that works with these files, and analyze the code?

<comment><USER10> Maybe, but the author mentioned that he wanted to reverse engineer it as a black box, out of legal concerns. It makes a more interesting challenge this way too.

<comment><USER11> I particularly liked the approach to automation of the application, even through WINE. Setting the time with LD_PRELOAD is a really neat trick.

</comment></comment></comment><comment><USER8> Man, reading little-endian binary formats makes my head hurt. I get why it's done that way, but what a nightmare for comprehending what you're reading.

<comment><USER12> After enough time spent reading hexdumps you get used to it, and then all of a sudden big-endian feels _really_ backwards.

<comment><USER8> Well, assuming you're reading little-endian hexdumps. I cut my teeth on OS X back in the PPC days, so to me it is just the opposite.</comment></comment></comment>


Court Returns Seized Laptops to Accused GTA V Cheat Developer - <AUTHOR> https://torrentfreak.com/court-returns-seized-laptops-to-accused-gta-v-cheat-developer-181222/ <comment><USER2> One thing that neither this nor the previous HN discussion linked below seem to clarify is whether the defendant sold the cheats for use in cheating in GTA online or whether it was provided for free, presumably for use in single player. If it's the former I think this case isn't particularly controversial. The dev that sold Glider (WoW botting software) was persecuted for it and I didn't see much controversy surrounding it. It makese sense to me, too. Cheats in an online game degrade the experience for other players.

If it was provided for single player use, though, and especially if the developer didn't monetize it, I think it's an overreach. Altering one's experience in a single player game does not affect anyone else's experience. I can forsee this becoming more of an issue as more and more single player games introduce loot boxes and microtransactions. For example, Assassin's Creed Origins sells lootboxes for crafting materials and EXP boosters. I felt that my progression was slower than ideal for my enjoyment, so I whipped out CheatEngine and modified my EXP and crafting resource values. Did I defraud or steal from Ubisoft? I don't think the answer should be yes. It seems disturbing that publishers could persecute someone for merely using the software they paid for _in a manner different than what was intended_ , even if no other customers are negatively impacted.

But of course, it is worth restating that is the cheat developer sold the cheats for use in GTA online I see no issue here.

<comment><USER3> Your unhappiness that the quality of the game's experience was degraded does not make the actions of this person illegal nor does it provide any basis to the idea that what this person did was in any way shape or form copyright infringement, and whether the person made money off of these activities does not in any way affect such evaluation.

<comment><USER2> Copyright infringement laws, at least in the US (I assume Australia has analogous laws) prohibit reverse engineering in many circumstances. Profiting by creating tools to bypass anti-cheat mechanisms in games is one of them. I don't know exactly if profiting off cheats puts this in a different category of violation, but it does signal that the developer is aware of the fact that these cheats are giving players an advantage significant enough for people to want to pay. It also gives the publisher grounds to sue in civil court for lost sales.

Even in Assassin's Creed Origins' case, the EULA prohibits development or use of cheats or trainers. Companies generally do not pursue people who violate this in single player games, as it would be seen as heavy handed, but ostensibly Ubisoft could go after me in civil court for using a memory editor to give myself EXP and mats.

You and I may not agree with these laws, but that does not change the fact that these laws and EULA provisions exist.

</comment></comment></comment><comment><USER4> Previous post on the topic: [https://news.ycombinator.com/item?id=18224625](https://news.ycombinator.com/item?id=18224625)

</comment><comment><USER5> I found the bit about PayPal particularly interesting. It sounds a lot like "PayPal is under no obligation to freeze his money but they decided to keep it anyways, so not our problem".

<comment><USER6> That sounds pretty close to what happened. Though it might be fairer to say that a giant law firm scared the crap out of them, demanding they implement they simply aren't equipped to do, and they said: "Sorry, we can't actually do that."

Ironically, I told said same giant law firm exactly the same thing.

I honest fail to believe that a law firm of that size weren't perfectly aware that serving a Mareva Injunction on Paypal would result in them instantly freezing the whole thing.</comment></comment>


The Missing Amazon Glacier Cost-Estimator Calculator - <AUTHOR> https://github.com/brandt/amazon-glacier-calc <comment><USER2> Very handy. What I really want to see next is a side-by-side comparison of how much Glacier and S3 Classic cost for given usage pattern(s). It's deceptively simple how Glacier is hands-down cheaper than S3 if you write only for backup, but could be more expensive depending on when you need to access that backup. :/</comment>


DSM-V – Mental Illness vs Normal Behavior - <AUTHOR> http://www.skepticblog.org/2013/02/04/dsm-v-mental-illness-vs-normal-behavior/ <comment><USER2> A link to the original article: <http://www.bbc.co.uk/news/health-20986796>

Author: Peter Kinderman, Professor of Clinical Psychology -- "Prof Peter Kinderman is head of the Institute of Psychology, Health and Society at the University of Liverpool."

A quote: "Psychiatric diagnoses are not only scientifically invalid, they are harmful too."

I'm perpetually amazed at the speed with which any discussion of psychology's current problems is voted down, without any dialogue or reflection.</comment>


How We Prepare a Demo - <AUTHOR> http://particletree.com/features/how-we-prepare-a-demo/

<comment><USER2> Interesting tips.

Here's another way to give a really good presentation, but with lots of movement/action happening on the screen: [http://vimeo.com/1925542?pg=embed&sec=1925542&hd=1](http://vimeo.com/1925542?pg=embed&sec=1925542&hd=1)

</comment><comment><USER3> Some good tips. I learned early on that sticking to a script doesn't work for me though. If I memorize it too well and then make even a 1-word error -> I think "oh crap..." and get more nervous -> more mistakes -> positive-feedback loop repeats.

Now I just make sure I remember the points in all the bullets (and the hidden bullets in notes) well. Many presentations (with the notable exception of conferences) are interactive too -i.e. the audience asks questions even before you get to "Questions?"- so you may not be able to stick to a script anyway.</comment>


Ryzen CPU HyperThreads break if 100% busy and interrupted to top of Memory - <AUTHOR> https://svnweb.freebsd.org/base?view=revision&revision=321899 <comment><USER2> Its like we have all collectively forgotten that the first release of a hardware or software project is just an expensive beta. I don't buy 1st gen microarches because i'm not interested in paying top dollar to be a tester. What I find odd, is that apparently both intel and AMD have also forgotten this, as Intel seems to be moving toward making their enterprise customers the beta testers, while AMD seems so desperate for marketshare as to have released zen as a volume product before releasing it as a high end one. Meaning that if they have to do a recall, they are both losing their entire margin, as well as having to replace a large number of devices.

<comment><USER3> AMD's not doing a recall, it works decently enough for most applications. Their response is going to be "if it crashes your application, turn SMT off".

Consider they didn't even do a recall when Phenom had a showstopping TLB bug, they shipped a BIOS patch that disabled TLB entirely.

And remember, Epyc is on a new stepping of the silicon, it's possible this is already fixed on it. (Threadripper is not, however)

<comment><USER4> > Their response is going to be "if it crashes your application, turn SMT > off".

it happens when SMT is disabled

>Epyc is on a new stepping of the silicon, it's possible this is already fixed on it. (Threadripper is not, however)

that's assuming they caught this bug, which i doubt is the case because it's only discovered now rather than being documented in the errata.

<comment><USER5> I dunno, there were several issues in the SMT implementation publicized earlier, it is entirely possible that the root cause is the same or related.

</comment></comment></comment></comment><comment><USER6> I had a similar scenario occur on my Ryzen 1700 w/ Gigabyte B350 Motherboard. Nothing in the BIOS seemed to help, and updating to the latest version of the firmware didn't seem to help much.

Eventually I just looked into some kernel docs decided that setting the IOMMU mode to pt during bootup might work. Specifically, I added the following to my grub config.

GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt"

Not sure if this will help any of you, but it did completely eliminate the problems I had.

Shameless plug, wrote a blog about my investigations into it:

[https://ibiscybernetics.com/blog/2017-05-24.html](https://ibiscybernetics.com/blog/2017-05-24.html)

</comment><comment><USER7> I bought a custom-built Rzyen-based PC around Easter, and I have experienced some issues with it; I am not sure, though, were to put the blame (CPU, motherboard/firmware, operating system (which is openSUSE Tumbleweed)).

Under heavy load, the machine has performed most gracefully. However, the machine does freeze (almost) completely when left idle for a while (usually > 1 hour). When it happens, it _sometimes_ still responds to pings, but nothing more; if I try to ssh into it from my laptop, I do not even receive a TCP ACK.

Unfortunately, I guess, there is no Kernel Panic, so no memory dump I could inspect or send to somebody who actually knows how to make sense of it.

On the upside, I have gotten into the habit of putting the machine into standby when I leave it alone for more than a couple of minutes, and I was pleasantly surprised that Suspend-to-Disk is a very acceptable option with an M.2 SSD. ;-P

Asus (who built my mainboard) releases firmware updates (which include microcode updates) on a fairly regular basis, so I hope this problem will be fixed eventually. I knew there was a risk of something like this happening when I got this machine, and overall, I am not disappointed. Otherwise, I am _ _very_ _ happy with the machine.

<comment><USER8> > However, the machine does freeze (almost) completely when left idle for a > while (usually > 1 hour).

Try disabling the C6 power state from BIOS: [https://www.reddit.com/r/hardware/comments/6rklcf/ryzen_segf...](https://www.reddit.com/r/hardware/comments/6rklcf/ryzen_segfaulting_under_heavy_load/dl66o4b/)

<comment><USER9> I'll definitely try this. I downgraded my latest BIOS because I couldn't stand the random crashes that had no rhyme or reason (crashed during gaming, youtube, encrypting my drives, emailing, browsing, among other activities).

</comment></comment></comment><comment><USER10> I hoped this just affected Ryzen CPUs, but this Reddit post indicates that it affects Epyc also: [https://www.reddit.com/r/Amd/comments/6rmq6q/epyc_7551_minin...](https://www.reddit.com/r/Amd/comments/6rmq6q/epyc_7551_mining_performance/)

The first post on on AMD's community forum ([https://community.amd.com/thread/215773?start=0&tstart=0](https://community.amd.com/thread/215773?start=0&tstart=0)) is almost three months old, so AMD have known about this for a long time. If it's not something that can be fixed in a UEFI update, then it's bad news for everyone: a weakened AMD means more stagnation in amd64

<comment> old-gregg So he's got a segfault every couple of minutes, wow... I've been running the same test for over 4 hours now on my Ryzen 1700 (and I've had several uneventful 30-40 minute runs before). To date, I only got one "internal compiler error: Illegal instruction" but no segfaults.

Whatever it is, it doesn't affect every chip the same way.

<comment><USER11> _Whatever it is, it doesn 't affect every chip the same way_

If it is marginal timing in some part of the chip, that combined with statistical process and environment variations, and the increasingly _tiny_ geometries (which serve to amplify the variation) mean the problem could really occur quite randomly. Modern CPUs are pushing the limits in more ways than one, and IMHO this is what happens when they go too far.

</comment></comment></comment><comment><USER12> Not the first bug reported for Ryzen. Wasn't there a couple of others too, one with linux locking up and another triggered by the ocaml compiler emitting opcodes refering AH/BH/CH/DH registers in a tight loop?

Edit: Sorry, the ocaml bug was Intel Skylake. It's interesting how so many new CPUs have breaking bugs. Feels like it's been quiet since the original pentium F00F bug and then all of a sudden everyone's new CPUs break.

<comment><USER13> The ocaml compiler found a bug in Intel's Skylake/Kaby Lake. If they found one for Ryzen too, I haven't heard about it.

[https://lists.debian.org/debian- devel/2017/06/msg00308.html](https://lists.debian.org/debian- devel/2017/06/msg00308.html)

<comment><USER12> You are right, of course.

</comment></comment></comment><comment><USER14> > When a cpu-thread stalls in this manner it appears to stall INSIDE the > microcode for IRETQ. It doesn't make it to the return pc, and the cpu thread > cannot take any IPIs or other hardware interrupts while in this state.

So maybe fixable with a microcode update?

<comment><USER15> Most cpu errata are. (Most of the rest are ignorable).

<comment><USER16> Aren't microcode updates usually "disable some feature" updates?

<comment><USER17> No. That's exceptionally rare and the worst case scenario. See Intel and TSX (transactional memory).

</comment></comment></comment></comment><comment><USER18> Phoronix: "Ryzen-Test & Stress-Run Make It Easy To Cause Segmentation Faults On Zen CPUs"

[https://www.phoronix.com/scan.php?page=news_item&px=Ryzen- Te...](https://www.phoronix.com/scan.php?page=news_item&px=Ryzen-Test-Stress- Run)

<comment><USER18> newer "50+ Segmentation Faults Per Hour: Continuing To Stress Ryzen" ( 5 August 2017. )

[http://www.phoronix.com/scan.php?page=article&item=ryzen- seg...](http://www.phoronix.com/scan.php?page=article&item=ryzen-segv- continues)

</comment></comment><comment><USER19> Does this affect only BSDs then?

I have a Ryzen machine I bought and put into a Jenkins cluster. It does builds on a bunch of VMs occasionally and pegs the CPUs. I have had no issue so far.

<comment><USER20> It probably affects Windows and every other OS as well. It's just less likely to be seen by their typical user workloads, or more likely to be written off as some other issue when it does happen.

</comment></comment><comment><USER21> See this thread: [https://community.amd.com/message/2815893](https://community.amd.com/message/2815893)

</comment><comment><USER22> For some reason my boss was super gung-ho about Ryzen and so now I have a work PC that randomly freezes at unknown intervals. Sometimes twice in a day, but usually more like once a week or week and a half. They're hard freezes, and typically nothing gets logged - you see a normal entry in syslog for a normal system event at a random time and then the next entry will be from when you got in to work and had to hard reset. Pretty sure at this point it's either CPU or Mobo related (thought we don't have the tools to verify the power supply under load), but no real means of diagnosing the problem.

<comment><USER23> I wish motherboards had built in PSU testers. It would be super simple to have a cheap ADC measuring the voltage on every power line all the time, and then have some way that software could access the current voltage and minimum and maximum seen in the last few seconds.

That could then be paired with a bios which displays a boot time resettable warning if the PSU has been misbehaving.

</comment></comment><comment><USER24> I wonder if the Ryzen bugs can really be fixed with a microcode update..

<comment><USER25> They will probably just issue an update to turn off hyperthreading.

<comment><USER26> Even with SMT disabled it causes the faults

<comment><USER27> I don't think that is the case for this particular issue. There may be other reported SMT bugs (still some instability) but here it has to be a pair of HTs:

        if one hyperthread is in a cpu-bound loop of any kind
        (can be in user mode), and the other hyperthread is
        returning from an interrupt via IRETQ ...

</comment></comment></comment></comment><comment><USER28> I'm thinking of building a new PC this autumn or spring but news like this about the new AMD processors are making me a bit uneasy committing to them. I don't think bugs like this and the one with GCC crashing (might be the same) might affect me but it's a risk I'm not sure if I want to take.

</comment><comment><USER29> Note that we still don't really know what's going on; just that this change seems to alleviate the symptoms.

</comment><comment><USER30> Potentially related to this issue over 5 years ago? [https://it.slashdot.org/story/12/03/06/0136243/amd- confirms-...](https://it.slashdot.org/story/12/03/06/0136243/amd-confirms-cpu- bug-found-by-dragonfly-bsds-matt-dillon)

<comment><USER29> Seems awfully unlikely.

</comment></comment><comment><USER31> Dang, I guess I'm going to wait for the B stepping of the Ryzen :-)

<comment><USER32> Original Ryzen is B1 stepping. EPYC should be already a newer one, with ThreadRipper some say it's the old B1. So you might be looking for B3/C stepping instead ;-)

</comment></comment><comment><USER33> Uh oh, this might be it for AMD this year</comment>


Twitter labels Trump tweet as manipulated media - <AUTHOR> https://www.axios.com/trump-twitter-misinformation-feb5176d-d3ac-4da9-a8ec-f339a45f1a69.html <comment><USER2> > edited with a fake chyron

Not only fake, but fake-looking. They even misspelt "toddler". Worrying times, when it's hard to tell if the original (fake) video was made as a joke or was trying to pass itself off as real. These days it's not hard to believe some people will take it as being true, and a lot of damage will have been done by the time the obvious flaws are pointed out.</comment>


U.S. Cyberattacks Target ISIS in a New Line of Combat - <AUTHOR> http://www.nytimes.com/2016/04/25/us/politics/us-directs-cyberweapons-at-isis-for-first-time.html?_r=2 <comment><USER2> > the United States may complement operations to bomb warehouses full of cash > by using cyberattacks to interrupt electronic transfers and misdirect > payments.

I've heard about these "warehouses full of cash" and I'm really curious as to a number of things...

1) What kind of cash?! Are we talking about US Dollar? If so, where is it coming from, and wouldn't it be better to seize it instead of burn it?

2) Electronic transfers? Does this mean bitcoin, paypal, webmoney, western union...?

3) Misdirect payments? How exactly does that work, without simultaneously hacking into the payment processor? Or does this assume the payment processor is complacent?</comment>


Maillard Reaction - <AUTHOR> https://en.wikipedia.org/wiki/Maillard_reaction <comment><AUTHOR> Excerpt:

"The Maillard reaction is responsible for many colors and flavors in foods, such as the browning of various meats when seared or grilled, the browning and umami taste in fried onions, and coffee roasting. It is similarly responsible for the darkened crust of baked goods, the golden-brown color of French fries and other crisps, of malted barley as found in malt whiskey and beer, and the color and taste of dried and condensed milk, dulce de leche, the Sri Lankan confection milk toffee, black garlic, chocolate, and roasted peanuts."

My thoughts:

The above also includes the flavor imbued in toasted marshmallows... <g></comment>


Clinton's Tech Policy Targets Young Entrepreneurs - <AUTHOR> http://www.nytimes.com/2016/06/29/business/clintons-tech-policy-targets-young-entrepreneurs.html <comment><USER2> It's linked in the article, but i'll also link the summary document via the HRC website here:

[https://www.hillaryclinton.com/briefing/factsheets/2016/06/2...](https://www.hillaryclinton.com/briefing/factsheets/2016/06/28/hillary- clintons-initiative-on-technology-innovation-2/)

Take a second to read through some of it. At first glance it sounds good, but there really isn't a lot of meat there (for those lawyering, there is definitely substance but most of the release is just jargon). Here is what i consider the real actionable items (rather than saying blanket statements that sound good on a podium):

>> give innovators who start social enterprises or new businesses in distressed communities the opportunity to apply for forgiveness of up to $17,500 of their student loans after 5 years

>> would "staple" a green card to STEM masters and PhDs from accredited institutions, and support visas that allow top entrepreneurs from abroad to come to the U.S.

>> will grow the research and development budgets of entities like the National Science Foundation, the Department of Energy, and DARPA

>> create a competitive grant program to give cities, regions, and states incentives to create a "model digital community"

>> strongly supports the FCC decision under the Obama Administration to adopt strong network neutrality rules.

Note, I only skimmed the full fact sheet, so there may be more that i missed.</comment>


Here's How to Tell People You Can't Create Free Artwork - <AUTHOR> http://www.cartoonbrew.com/artist-rights/heres-tell-people-cant-create-free-artwork-132852.html <comment><USER2> Or you could just tell them, which is the same thing, only lacking the passive agressive step of using the aforementioned creativity to make a pretty 'fuck off' drawing to explain how low on the priority list the soliciting party's project is.

This article might feel good to some but it doesn't actually accomplish much else: it doesn't provide a solution that will result in an improved outcome to the situation for anyone; it won't make people who want free work suddenly have the money to pay for it.

It's really just an excuse for people to dwell on their indignation that >someone< out there has the gall to try and lowball them.</comment>


Ask HN: Don't understand vesting/ownership offer, how do I make money off it? - <AUTHOR> Brief: If I am offered vested ownership of a company, how do I eventually make money off of that?
I am being offered a job where I start out with .25% ownership to increase to 2% in 3 years. Salary will shoot up along with that and I'm confident I can get both of those things in writing.
My question is, when I'm at the point where I own 2%, how do I make money off of that? The company wants right of first refusal (which is a concept I understand), but what if nobody wants to buy the stock? I don't know that they will go public, so who do I even sell it to at that point? Does that make it essentially worthless?
Are there any good blogs or websites that can help me get a handle of these things better? <comment><USER2> Long story short... you will likely need a liquidity event for your shares to be sold for cash.

This could be though an acquisition, IPO, or the board deciding to let you sell your shares (usually back to the company via the right of first refusal).

Your shares are sort of "worthless" until one of these events, that is the risk you take by allowing some of your compensation to be delivered in private stock.

The good news is they are offering you a .25% vested stake and a shorter-than- normal vesting period of 3 years. Once those shares vest they are yours forever, or until you sell. If you decide to leave the company there is a chance they will offer to buy you out of your vested shares, that is where you can make some cash.

<comment><USER3> Yup. So basically value your ownership as 0 to at most $10k. If the salary and job title make sense, do it. If the pay is 50% of market rate, don't do it.

</comment></comment><comment><USER4> jacksondeane has a great answer if you're at a traditional startup who's goal is acquisition or IPO.

Not all small businesses are startups though. If you are working for a lifestyle business, or even a larger company that has relatively slow but steady growth, then the board may decide to issue dividends.

It's important to remember: your equity is worthless, but so is everyone else's. If you trust the company leadership and they aren't just using this as a way to get cheap labor (i.e. they will pay dividends, buy back your stock later, get acquired, or IPO) then it could be a good deal.

My recommendation: if the company isn't a traditional startup and offers fair pay (or will increase compensation down the road if they are early stage now), then add some terms that require the company to buy back your vested shares when you leave. You can set a predetermined price (like 2x the current value), or base it on milestones (time you spent there, revenue milestones, etc). Just make sure that you don't have to sell at that value if they are worth more- you can always hang on to them, negotiate a higher price with the company, or sell them to someone else.

<comment><AUTHOR> Thank you very much, that makes a lot of sense. It seems like I would want to angle for dividends or the terms that would require the company to buy back the vested shares. It sounds like that might be something I need a lawyer for, but just in case, do you think there are common terms or templates for that?

I also really liked the framework of "your shares are worthless, but so is everyone else's." So aligning my interests with the founder seems like a good way to go.

<comment><USER4> Yup, always make sure the incentives are aligned. Unfortunately this is a pretty unique situation. For startups the usual is to angle for an IPO, or failing that go for an acquisition. This shared goal and payoff event naturally aligns the interests of employees and management.

For your situation, you'd definitely need your own lawyer to review the documents. Perhaps you can get the company's lawyer to add those terms in though, to save some initial cash? I'd go for one of the following:

* Required stock buyback when you leave at 2-4x the current value, or based on the last 409A valuation if that is higher. They should be doing that once a year for legal reasons, if they do any equity or stock option grants.

* Minimum yearly dividend to be paid to all shareholders based on a % of revenue (not profit). This one is nice because it's egalitarian. Building it into revenue protects you, and they can just consider it a cost-of-doing-business overhead.

* [in addition to the above] Have them come up with a set compensation plan that applies equally to everyone (including them) based on role, years with the company, and level of expertise (junior, normal, senior). This should be public internally, and there should be no bonuses or additional compensation beyond what it specifies. The plan can be re-evaluated wholistically based on runway left and revenue milestones, but it'd be good to note down what those milestones are ahead of time. Unfortunately you probably can't get that in a contract, but it'd show a lot of trust and goodwill on management's part if they implement it as part of company policy.

Honestly this situation sounds a bit tricky if you don't have a strong history with these guys, or they don't have a track record of building a small business that pays dividends or otherwise compensates equity holding employees. A worse case for you is no liquidity event or dividends, but management pulls money out of the company for bonuses for themselves.

That being said, this could be a great opportunity for you. Forget the SV big or bust mentality, there's a lot of pluses to working at a stable slower growing business. Less pressure, more flexibility with your time, a closer knit team that won't double every year or two.

Best of luck mate!

</comment></comment></comment><comment><USER5> Ask the owners: "Can you tell me how I make money off this equity?"

Possible answers (not exhaustive):

1\. We plan to exit

2\. We plan to pay dividends

3\. We plan to build and support a private market

4\. We plan to institute a buy-back program with the valuation based on some objective criteria (FMV / x revenue multiple / x profit multiple)

In all cases, the thing you want is that the owners make money off of the stock in the same way you do and that they have the same class as you.

<comment><AUTHOR> I just wrote all of those down to ask when we get back to the table. Thank you very much - sometimes the forward question is the best question.</comment></comment>


The Front Page Effect – Why I'd Rather Be on Techmeme than Digg - <AUTHOR> http://ryanspoon.com/blog/2008/05/11/the-front-page-effect-%e2%80%93-why-i%e2%80%99d-rather-be-on-techmeme-than-digg-mixx-etc/ <comment><USER2> sure the site might give you more qualified audience, who might be more likely to register, but that doesn't mean they'll stick around.

Chances are the users are technology geeks who'll just play around with your site once and then will never return. Why? Because some other website caught their attention.

Personally I'd rather get featured on a blog for my niche than on techcrunch. Sure you'll get less hits, but the hits will be people who might actually be interested in your product, and not the technology behind it.

</comment><comment><USER3> My list: big blog mention (TechCrunch, FakeSteveJobs, etc.), digg, TechMeme, others...

<comment><AUTHOR> You are right - a great blog mention (like TechCrunch) is the most valuable... the value of a blog link quickly diminishes though as there aren't too many massively trafficked blogs.

<comment><USER4> Someone featured on GigaOm a few months back put together some data around the "Digg effect" and stickiness/surge in traffic a post on the front page. (Can't get the link now since I'm on my bberry, but it's around).

Also, I agree with Ryan regarding the type of audience one wants to reach. For me, TM is my first source for news in the morning because whatever is listed there is important, and therefore valuable.

Up and coming tech bloggers like Louis Gray or Corvida can gain targeted audiences because of TM.

</comment></comment></comment><comment><AUTHOR> I rank: Techmeme, Hacker News, Digg, Blog Mention, Aggregators, 2nd tier.

You?

</comment><comment><USER5> wsj.com, nytimes.com, ft.com, etc.

</comment><comment><USER6> berecruited(orig poster) == Ryan Spoon(article's author)

The proof is in the article's last picture.

:-)

</comment><comment><USER7> Great article. Awesome insight.</comment>


Show HN: Generate Lorem Ipsum text from your terminal - <AUTHOR> https://github.com/lukehaas/getlorem <comment><USER2> Thanks! This will help us to save time while we are developing website. Do you plan to add other features?

<comment><AUTHOR> No new features planned at the moment but I'd be open to suggestions or pull requests.</comment></comment>


Show HN: surrounded – Simple, challenging HTML5 game - <AUTHOR> http://www.dyeje.com/surrounded <comment><USER2> That's pretty tough! I sort of wish there was a way to measure progress more than "I _think_ I'm bigger this time..." I haven't been able to win yet.

Edit: Perhaps you could add a favicon so this game doesn't get lost in a sea of bookmarks.</comment>


Pensions may be cut to 'virtually nothing' for 407,000 people - <AUTHOR> http://money.cnn.com/2016/05/20/retirement/central-states-pension-fund/ <comment><USER2> Simple solution - make the retiring age 80 or 90 y.o. and you can pay everyone. </sarcasm>

That's why I don't trust pension funds. They are a prime target to being exploited by the people tasked to maintain them.</comment>


Thor – A minimalistic operating system in assembly and C++ - <AUTHOR> https://github.com/wichtounet/thor-os#thor-os <comment><USER2> Last week I read the very good 'How to build an operating system from scratch' [1], and I'm glad I did. It meant that I could burrow into the files on this github project and understand exactly what was going on.

One day, when I finally have some free time, I am totally going to do this myself.

\---

[1] [https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures...](https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os- dev.pdf)

<comment><USER3> Check out the broken thorn tutorials on the subject. They are far more complete.

<comment><USER2> I will!

I'm guessing you mean these..?

[http://www.brokenthorn.com/Resources/OSDevIndex.html](http://www.brokenthorn.com/Resources/OSDevIndex.html)

<comment><USER4> They are pretty good indeed to begin with. However, the best resource there is is clearly osdev.org, both the forums and the wiki are full of information!

<comment><USER3> The OSDev wiki is the best think to hit the internet since sliced bread (with cats faces pushed through them?) but it's far from a tutorial. It's a wiki.

While it is one of the best repositories of knowledge on the subject of low level development, it's not a step by step guide.

In the same way I don't recommend that people read Wikipedia to learn about human history I'd also not recommend reading osdev to learn about low level development.

It at it's heart is organized as a reference, not a text book.

I wish that someone would go through and accumulate all the knowledge, put it into a series based textbook with chapters, throw in some example code and VMs for many architectures, and sell it to me because I'd pay. I'd also push for those at my university to construct a class around the book as it would be one of the most fascinating and knowledge packed classes I'd think you could take. (Hint hint, nudge nudge writers and professors!)

But yes to date NOTHING beats osdev.

<comment><USER5> What would be a good step-by-step tutorial in your opinion?

<comment><USER3> If you'd like the links that really helped me, check out this:

[http://www.osdever.net/bkerndev/Docs/title.htm](http://www.osdever.net/bkerndev/Docs/title.htm)

[http://www.brokenthorn.com/Resources/OSDevIndex.html](http://www.brokenthorn.com/Resources/OSDevIndex.html)

[https://github.com/stephenfewer/NoNameOS](https://github.com/stephenfewer/NoNameOS)

[https://anastas.io/osdev/memory/2016/08/08/page-frame- alloca...](https://anastas.io/osdev/memory/2016/08/08/page-frame- allocator.html)

[https://github.com/kjiwa/x86-boot- sector-c](https://github.com/kjiwa/x86-boot-sector-c)

These are all useful. If you're more of a book worm check out Minix as said in other parts of this tree. Very very easy to read, interesting bits of history about OS development, and source code included! Nothing's useful without source code.

If you'd like to look up some general software books check out Programming the IBM PC, or something to that effect. It's commonly called The Pink Shirt Book. Has interesting stuff on IBM interrupts, coding standards, and bits on filesystems!

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> +1 for being able to run on Bochs.

There's nothing minimalistic about Qemu. It's an enormous resource intensive program to build. And it's not even easy to run in text mode (no x11). "Qemu- lite" is sorely needed.

<comment><USER7> It's actually quite easy to run in text mode, just add -nographic. It automatically hooks the serial port up to your terminal, too.

<comment><USER6> What OS are you using?

Is it working for you in VGA text mode (no x11)?

Is this now working on other UNIX-like OS besides Linux?

I have had problems with -nographic in the past and I know others who have as well, but maybe it works reliably now?

<comment><USER7> You mean can I run it without having X11 running? Yes, of course, with -nographic. How do you think most major VPS providers run qemu? They certainly don't run their hosts with X11 going.

And yes, it runs on not-Linux, but obviously the main selling point of qemu is the access it provides to KVM, which is an interface provided by the Linux kernel. You can do software emulation of a number of architectures on a number of operating systems with qemu.

<comment><USER6> Are you saying you yourself do this? You're using BSD, running in VGA textmode, from which you run qemu with -nographic to load an image of another OS? You yourself are doing this?

Most of "major VPS providers" I know use Linux, not BSD. (Yes, there are some exceptions but the reliance on Linux is almost universal.)

I would love it if you were right and I am wrong, but I seriously doubt you have _tested this_ recently. I will happily give Qemu another go if you have tested this recently and it worked.

<comment><USER7> Do your research, don't ask me to do it for you.

[https://wiki.freebsd.org/qemu](https://wiki.freebsd.org/qemu)

qemu runs on Linux, OSX, Windows, and various smaller Unicies.

<comment><USER6> So you are admitting you have not tested this and you are just going by what you read.

When was the last time you used any "smaller Unices"?

Anyway, even if the problems with -nographic on x86 have been fixed on other non-FreeBSD BSD's (and I have my doubts), my comment that compiling qemu has become a substantial undertaking still stands. I suspect you've probably never even tried compiling it yourself but that will not stop you from commenting.

I compile Bochs statically on low powered computers with no problems. Cannot say the same for Qemu. Even you're not using x11 they expect you to have x11 libraries at compile time. As with most programs that grow so large, there are more than a few dependencies one can do without.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> The hobbyist OSes pop up a lot on Hackernews. Some are more full featured than others. What would say is the minimum feature set to be called a real OS?

<comment><USER9> At least for my operating systems class, the requirement was to be able to boot and run a text editor, usually Vi. Didn't stop some people from building one that could run Doom though.

<comment><USER8> Ah. I was thinking something more like process isolation and device drivers.

<comment><USER4> It's probably highly subjective to make a description of what needs an OS to be an OS. For me, it would be to be able to boot on hardware, to be able to execute applications and to give these applications an abstract layer to the hardware.

</comment></comment></comment></comment><comment><USER10> Should have called it ant-man.

</comment><comment><USER11> And the latest commit message is "Prepare ICMP message type decoding"

It seems we have not learned from the mistakes of prior operating systems and instead of a "Windows NT ping of death" we'll have a "Thor ping of death", which is a curious image, Thor brought down by a puny ping.

<comment><USER4> That would be impossible, Thor cannot be brought down by any other than Jörmungandr. More seriously, I'll try to avoid reproducing the ping of death issue :)

</comment></comment><comment><USER12> Can an operating system be developed from scratch using a safe language such as Rust?

If yes, why people still even think about doing it with unsafe languages?

<comment><USER13> > If yes, why people still even think about doing it with unsafe languages?

What you need for OS or embedded development is a language that doesn't get in your way. C doesn't get in your way. C is the first language that both stayed out of your way and also provided reasonable productivity features (over BCPL, B, and assembly).

It was only recently that people have figured out how to come close to a "safe" language that doesn't get in your way.

Here is a test case: grab an ARM Cortex-Mx processor. Boot, configure the I/O matrix, and set up, oh say, the counter/timer peripherals for PWM motor control and quadrature decode. If you can do that without a trip to an "unsafe" language, that is a worthy accomplishment for your safe language.

Another test case might be doing page swapping and page-table updates on a virtual memory subsystem on a multi-core CPU without a trip to an unsafe language.

I guess a more direct answer to your question is that when you get down to the hardware, you have to deal with weirdo bit fields, volatile hardware registers, strange read/write ordering requirements, interlocks, and even some totally non-interlockable volatile stuff. C can do it (although I admit it uses language features not everyone sees every day).

<comment><USER14> Funny you should mention the Cortex-M :) [https://github.com/helena- project/tock/](https://github.com/helena-project/tock/) (written in Rust, just linked to it down thread as well)

<comment><USER15> $ grep -r unsafe | wc -l

292

<comment><USER14> Sure. Hardware is inherently not safe; the key is to build up safe abstractions around it by using the type system.

</comment></comment></comment></comment></comment><comment><USER16> An OS in C++?

But Linus said...

[http://harmful.cat-v.org/software/c++/linus](http://harmful.cat-v.org/software/c++/linus)

<comment><USER17> That's Linus's opinion, yes. Not everyone has to share it.

<comment><USER16> It's a really annoying widespread opinion. I've been looking for people who really do write OSes in modern C++.

<comment><USER18> BeOS, Symbian, L4, Genode, Mac OS X drivers, and big parts of Windows are all examples of C++ use in OS development.

<comment><USER19> BeOS is the reason I learned C++. I don't recall exactly, but either I didn't understand how or there was no other option but C++ if one wanted to hit the BeOS API. Pity Be Inc. got shafted so bad by MS monopoly abuse.

They had zero vendors willing to put their OS on a box and resell it because MS threatened the vendors with pulling their right to sell Windows if they did. This wasn't particular to Be, but to any other OS.

<comment><USER18> Yeah, still have my Be CDs stored somewhere.

However regarding Microsoft, I actually think that vendors were as guilty as Microsoft.

They could have chosen not to take Microsoft's discount and try to sell alternative OSes, even if it meant having to face a few challenges.

The one that takes is as guilty as the one that gives.

<comment><USER19> I would have to really dig for the emails the company sent out (I should have them archived someplace), but I _thought_ the issue wasn't discounts, but a revoking of the license to sell Windows if the OEMs didn't comply.

I did a quick search and came up with Quora answer given here: [https://www.quora.com/Why-was-the-BeOS-dropped](https://www.quora.com/Why- was-the-BeOS-dropped)

but this doesn't jive with my memory. I will have to see if I can find an old email or maybe dig further on the net. I certainly don't want to be rewriting history.

<comment><USER18> Even if it was revoking the license, vendors had an option, and they have chosen the easy one out.

I remember quite a few small shops trying to put a fight selling other kinds of computers, they might have lost in the end, but they tried to walk a different path.</comment></comment></comment></comment></comment></comment></comment></comment>


Burn the Programmer - <AUTHOR> http://www.antipope.org/charlie/blog-static/2017/11/burn-the-programmer.html <comment><USER4> I teach high school math and science, and I fully recognize that most of my students will not end up in math and science-focused careers. So I think pretty carefully about my goals for these students.

One clear purpose in everything I ask students to do: take away the sense of "magic" in technological things.

I just finished teaching a math class, where the final project was a 3d modeling exercise. Students didn't always enjoy the process, but they were deeply satisfied with their work in the end. Most of them will never model anything again in their lives. But we've removed the idea that when they see an amazingly detailed 3d-printed prosthetic limb, that the designer was doing some kind of magic. They know that the designer worked from the same principles they learned, the only real difference is that the designer enjoyed this work enough to stay with it and become highly proficient at it.

These are all students who will not want to burn programmers, but who will instead understand the hard work that goes into well-designed apps and products. They will also know that people who design crappy or harmful products can do much better and much different work.

<comment><USER5> Someone whose name I no longer remember was a teacher of mine in highschool. Even though I knew how to program and had a nights / summers / weekends job programming I treated the CPU / motherboard as "magic". As if there was this dividing wall between the pure mathematical construct of a software program and the physicality of the bits moving through the motherboard.

The teacher taught us how to use NPN and PNP transistors to create very simple calculators.

Though I never went into hardware, that small demonstration was enough for me to see through the illusion and made it clear to me that the world was generally understandable if you just put in the time.

Even scary magical things like CPUs.

<comment><USER6> I used to think the same way about the CPU, even after getting a masters in Computer Science! About a year ago I read the book Code by Charles Petzold and watched some lectures about Computer Science by Robert Sedgewick which really opened up my mind.

<comment><USER7> Are those lectures in the public domain? If so, could you pls link to them? Thx.

<comment><USER6> In the case of the Computer Science course from Sedgwick, I have only been able to find it on Safari Books and InformIT (30$) [http://www.informit.com/title/9780134493831](http://www.informit.com/title/9780134493831)

If you happen to be a member of ACM, you actually get free access to Safari Books through [http://learning.acm.org](http://learning.acm.org)

</comment></comment></comment></comment></comment><comment><USER8> Considering how many programming abstractions most programmers work above now, I'd say it's more like magic now then ever before. Draw the circle (add the boiler plate code), recite the words (dig up the proper API method), perform the gestures (compile with certain flags) and your spell (desktop app) will work. If you don't, it'll do nothing or worse, blow up in your face.

As a side note, if anyone's interested in looking a bit more into "programming as magic" there's a great book series called The Wizardry series about programmers being transported into a fantasy realm where magic works similarly to a programming language. The main character ends up writing a compiler based off (IIRC) APL and revolutionizes magic. The first book is called Wizard's Bane and it's light and fun reading.

<comment><USER9> This is exactly the reason I despise Spring with a deep and abiding passion.

"Just add this dependency, and add these annotations to your class, and it will all Just Work."

"But...what do those annotations actually _do_?"

"Stop asking so many questions!"

I mean, I know the answers are out there, it's open source after all. But so much of it seems deliberately designed to obfuscate the flow of execution and make reasoning about the code as difficult as possible.

<comment><USER10> That's exactly how I felt about Ruby on Rails.

<comment><USER11> It's also why I prefer more "straightforward" libraries such as Tornado or CherryPy.

<comment><USER10> Wait, that's contrasting to other Python libraries that use the Rails/Spring magic? Which ones?

<comment><USER12> Django for example has a lot of magic.

A lot of the development process consists of adding fields with particular names to classes that have a long inheritance chain of their own, and it's not trivial at all to understand what all of your options are and how they work behind the scenes.

<comment><USER10> Hm I figured Django may be guilty of that. FWIW I learned web apps on RoR but my first job was Django. Django (or at least, apps in practice) was _definitely_ less magic than Rails, although I see what you mean about a lot of the config being less transparent than one might like. I always have to eg hit SO to figure out how to add something to the admin since the model for how it works is not transparent.

I'll definitely check out Tornado and the others for how they compare.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> Another analogy that I can't shake off is True Name and search engines.

Since the dawn of time folk tales placed emphasis on true name of people and objects. Knowing the true name grants one power over something or someone. [https://en.wikipedia.org/wiki/True_name](https://en.wikipedia.org/wiki/True_name)

Knowing the true name of someone lets you put it in a search engine and find out about him/her. There are some sleazy smartphone apps which let you do even more. Knowing the name of the problem lets you search for the algorithm. Certain problems become trivial if you can name them and find an already known solution.

<comment><USER14> "True Name" is what I'm reminded of most when I try to invoke tech support. Recently my ISP upgraded me to fiber and gave me a ... router. I would put some adjectives there, but I want to keep this post civil. Needless to say, I want to do some more advanced things with this device like enable restricted UPnP, maybe run some DNS-level ad blockers, port forward, etc. After some arguing with tech support I couldn't get them to divulge the password and other administration details, so I gave up and set up my own router right after it to do at least some of the things I want.

Recently however, I saw an offhand comment in a thread about this ISP, where the person mentioned the words "please bridge port 1 on my router". Well that sounds like exactly the thing I would want, but didn't think to ask for and the tech support person didn't think to offer me. Sure enough, as soon as I spoke the magic words to tech support, the router became a bridge and my own device is acting as the gateway.

The big difference between tech support and programming is that programming usually comes with a manual, while with tech support, you have to learn the True Names of the actions you want performed from some wise master who heard them from some other wise master, who... and so on.

<comment><USER15> _The big difference between tech support and programming is that programming usually comes with a manual, while with tech support, you have to learn the True Names of the actions you want performed from some wise master who heard them from some other wise master, who... and so on._

Actually this is true of most bureaucracies: banks, governments, large companies, academia, etc.

</comment></comment></comment><comment><USER16> It makes me wonder if there are any realms of wizardry where the highest ranking wizards spend all their time on management skills and never get to practice their magic.

"Oh, these days I just review a lot of spell-design scrolls and mentor junior acolytes. Magic is more of a people business, you know."

<comment><USER17> The senior staff at Unseen University in Pratchett's Discworld series are a lot like this.

<comment> crooked-v Well, it depends on if you're talking early series or late series. Early series, the wizards were college academia taken to absurdist violent extremes, to the point of assassinating each other to try and get tenure slots. Most of that got quietly dropped over time to make them more likeable.

<comment><USER18> ...that's an option?

(Ex-academic here.)

<comment><USER19> Trust me, you don't want to go down that path. Spend all that time memorizing some complicated spell, use it once, and _poof_ , you've completely forgotten it.

</comment></comment></comment></comment></comment><comment><USER20> You know, us programmers like to refer to ourselves as wizards but I really wonder if non-programmers think the same or is it just like any other profession they're not knowledgeable of? I don't know anything about chemical engineering but I've never considered chemical engineers to be magical.

I do like thinking of myself as a wizard, though.

<comment><USER21> I felt that wizard thing when I was just starting out, for most of my career though, i've thought an apt analogy is tradesman. eg. carpenter or metalworker.

We get commissioned to build something that does X. Then we design and build it. With experience we develop our own tools / practices and a familiarity with our materials. Experienced masters might experiment and develop completely novel things or masterworks. Sometimes many of us will be commissioned together to build something really big or challenging.

<comment><USER22> I think the craft aspect is somewhat romanticized and that much of programming work is more like a kind of accounting or some other clerical bureaucratic trade.

<comment><USER23> In my experience, that depends entirely on your role.

I've found that my place is within a team of 5<x<20 - it's large enough that I can work on "meta" stuff like workflow improvements and refactoring existing functionality to make it generically applicable where appropriate, but small enough that my contributions are not lost in the noise and I can see the impact I'm having on the team's overall velocity.

If all I were doing every day was implementing yet another CRUD form, then I would feel the same way you've described.

<comment><USER24> You've just reminded me of a line from one of the Wicca books I read as a teen. The whole coven size <= 13 thing was down to how big teams can get before people tread on each other's metaphorical feet.

<comment><USER23> Covens of >13 are dealt with a great deal in Sterling's "Emberverse" series...

</comment></comment></comment></comment></comment></comment><comment><USER25> "...Ever tried to set up a Postfix server?" is the new "...Ever tried to set up a Sendmail server?".

(When I was younger, I was told by a veteran sysadmin that only 5 persons in the world knew how to configure Sendmail directly, everyone else was relying on preprocessing scripts written by the aforementioned wizards).

Edit: my point is that Postfix is actually quite easy to configure, compared to Sendmail which was the standard in the 90s.

<comment> yjftsjthsd-h Is it? I've only modified existing configurations, but Postfix doesn't seem bad.

<comment><USER26> Postfix is quite simple, provided you already know how MTAs work and can google the right terms.

Sendmail.cf deserves its reputation.

<comment> yjftsjthsd-h > Sendmail.cf deserves its reputation.

Hah; I had to look at a sendmail config a while back for a legacy server. It's line noise.

</comment></comment></comment></comment><comment><USER27> This is a really well-written article. It's clear, concise and sticks to the point, not drowning the reader in anecdotes and unrelated analogies. I've thought these same thoughts myself when explaining automation and how it would affect their lives to my parents, and was met with mostly indifference not because they were stubborn but because they simply couldn't wrap their heads around the idea that a computer (which, when they were growing up as teens, weren't even capable of doing things like e-mails) could ever fully replace them, people who studied for years to master and certify their respective jobs. This article describes that experience in a truly creative and interesting way.

</comment><comment><USER28> This puts me in mind of Aphyr's series on a powerful wizard interviewing in the valley:

[https://aphyr.com/posts/340-reversing-the-technical- intervie...](https://aphyr.com/posts/340-reversing-the-technical-interview)

[https://aphyr.com/posts/341-hexing-the-technical- interview](https://aphyr.com/posts/341-hexing-the-technical-interview)

[https://aphyr.com/posts/342-typing-the-technical- interview](https://aphyr.com/posts/342-typing-the-technical-interview)

I think there are wizards but I'm not one of them.

</comment><comment><USER29> It's definitely an old metaphor. SICP is the "Wizard Book" after all, and IIRC they even used the term "incantations" to describe commands and programming constructs at some points, though it's been well over a decade since I've leafed through it.

<comment><USER30> We conjure the spirits of the computer with our spells.

</comment></comment><comment><USER31> I've never seen wizards in fantasy novels have to deal with myriads of JIRA tickets, attend interminable mind-numbing meetings and solve impossible dependency hells. I guess that's why they call it fantasy.

<comment><USER32> Bob Howard in the Laundry series by Charles Stross is a wizard who has started out in IT and who does have to go to interminable powerpoint meetings and work through lots of hideous beaurocracy.

</comment></comment><comment><USER33> I find it at the very least a little ironic that the author used consumer technology to simulate magic abilities (to such an immersive state that he had to put a low-horror mode) and uses his success in this department as an argument that consumer technology doesn't very closely convey the feeling of magic.

I appreciate the argument being made, but I can't say that I accept the premise that (sufficiently advanced) consumer technology is often unlike magic.

Hell, just sending out an invisible beam of light towards a magic black box so that it can remotely open up a window to a lands that may or may not exist is an awfully cool reality to hide behind the rather normal sounding acronym "TV", and that's hardly cutting edge technology.

<comment><USER34> He was talking specifically about the feeling of _doing_ magic, not the feeling of _experiencing_ magic being done. He's interpreting "X feels like magic" as "X feels like being a wizard." Playing a VR game doesn't feel like being a wizard; it just feels like having a spell cast on you.

</comment></comment><comment><USER35> Getting hit pretty hard. To very briefly summarize, the article reviews an occasional trope in writing about our field, namely that it has some interesting correspondences with old-style conceptions of magic - <USER2> hermitical study of certain esoterica granting access to powers and principalities beyond the ordinary ken, through potentially hostile reaction to same among those lacking such secret knowledge and frightened by the prospect of a world increasingly founded on it, to "do not call up what you cannot put down" in the context of modern AI and ML research and the applications thereof.

<comment><USER36> My server (where this guest article is hosted) is fielding some 20 HTTP GET requests/second and is holding up fine (load avg. is still under 1.0). I'm guessing there may be some routing problems — antipope.org is hosted in the UK.

<comment><USER35> It did seem a little atypical to see your blog struggling under HN traffic. Now I guess I know why!

</comment></comment></comment><comment><USER37> And this is why I program in Go.

Hardware OS Program (no libc, no dynamic libs, no external runtime)

Go specializes in "it runs like you read it". I hate magic in my program and I distrust programmers who program like a magician.

<comment><USER38> Go is still a pile of abstractions built on top of another pile of abstractions that almost no one fully groks. It doesn't seem significantly less "magical" than any other commonly-used language, especially from the perspective of non-wizards, even if it _might_ be a better tool for casting certain spells.

</comment></comment><comment><USER39> When I was a preteen, I'd watch Notch's ld48 programming streams, and I'd just be confused. I had read the basics of if-statements, for-loops, and functions, but he was using them in a way beyond my comprehension.

Later I discovered MIT's Scratch, and it let me figure things out on my own: games, physics, genetic algorithms.

I think programming is portrayed to be more difficult than it is. It's a mixture between programmers trying to find the most efficient system, and the public's half-uncertainty of computers being magnified.

<comment> yjftsjthsd-h Wait, you can do genetic algorithms in Scratch?

<comment><USER40> [https://scratch.mit.edu/projects/30924542/](https://scratch.mit.edu/projects/30924542/)

<comment><USER39> I'm not sure if that was intentional, but yeah that's mine!

</comment></comment></comment></comment><comment><USER41> Looks like it's starting to buckle, mirror just in case: [http://archive.is/Vx9u7](http://archive.is/Vx9u7)

</comment><comment><USER42> I think of magic as the fantasy of relating to the world around you in the same way as to your own subconscious. This has obvious appeal -- by System 2 standards, your System 1 is a super-powered genie -- and lots of story potential from the familiar difficulty and cross-purposes of that interface. But we need more of the Alan Kay-ish notion of augmenting your System 2 abilities instead (if I have his philosophy roughly right) -- 'magic' in the service of clear thinking instead of mysticism. Environments that invite you to dig into any part that puzzles or frustrates you, figure out the problem, change it. We shouldn't accept the black box so readily.

</comment><comment><USER43> This metaphor is really stretched thin and doesn't help much with explaining anti-tech sentiments.

I really don't see why complicated wizardry is required for something to be magical. That seems to be an assumption coming from the author's genre. There are plenty of brands of magic which include extensive creation of magical artifacts which anyone can use (akin to consumer electronics).

As for anti-tech sentiments, I don't think any complicated allegory to burning witches is required. It really just feels like the natural result of technologists gaining wealth—almost every high-earning profession has significant critics (cf. lawyers, investment bankers).

</comment><comment><USER44> There was a magical crystal that blessed the land with bountiful harvest every year, until civil war broke out in the country. Mysteriously the crystal shattered into a thousand pieces and parts of it fell all over the continent. Some parts were irrevocably lost.

After the civil war was settled, and the country split in two, famine ravaged both sides. It is up to you, my courageous wizard, to recover the parts that still exists, and to rediscover how to recreate the parts that were destroyed, and reassemble the crystal into a whole again.

Hostility from former enemies, unexpected allies, and dark conspiracy abounds.

... Yep, that totally describes my current gig with an MNC right now...

</comment><comment><USER45> This whole mystifying programming may be good for the ego but its not real.

Anyone sufficiently interested can learn programming, and even work as a programmer without a degree and the 3-4 years of education and training other professions require.

And programming is not particularly difficult, people learn for more than 16-20 years of their life. Those interested will pick it up.

There is something seriously wrong in the tech community when many are quick and even eager to think of others as stupid. This is not only immature but its disconnected from reality. I think many should spend compulsory time with kids to understand how truly wonderful the human brain is.

<comment><USER46> > many are quick and even eager to think of others as stupid

There is no hard data I could find but I would guess* that the average programmer probably has a higher IQ than 100. So if we define "stupid" as "not as smart as oneself" then this belief is probably somewhat true.

*Having worked with a lot of different kinds of programmers and having also worked with the general public.

</comment></comment><comment><USER47> From the first comment:

> I don't think we're looking at a Butlerian Jihad any time soon

I personally know _many_ people that see something Butlerian Jihad-like as inevitable. Most say they would regret the loss of some technology, but the appeal of being free of complex _wizardry_ trying to manipulate them in ways seem forever outside their understanding has increased a _lot_ over the last few years.

A small-ish subset of that group are actively trying to start a Buterian Jihad. Don't write off the possibility of blowback from the growing group of people that feel technology (and the people that make it) are "disrupting" their income wht remains of their agency over their own lives. There are many ways that could play out - most are not full revolts against technology - <USER3> predicting the future is hard. What I do know is that when you see pitchforks and torches... _it 's too late_.

</comment><comment><USER48> Only wizards in some kind of coastal ego bubble

More like " _Burn the programmer! Adobe has crashed for the third time today!_ ", or " _Burn the programmer! YouTube has 100k+ likes on my copyrighted video (that someone else uploaded), and all I got was this lousy t-shirt!_ "

</comment><comment><USER49> From what I've heard, "Any sufficiently advanced technology is indistinguishable from magic" seems unsupported by available historical evidence:

[https://worldbuilding.stackexchange.com/a/32371/38995](https://worldbuilding.stackexchange.com/a/32371/38995)

>Among others. I searched and read a lot, looking for anything along the lines of "the long-isolated tribesmen were amazed at seeing a cell phone for the first time, and asked 'what kind of magic is this?'" But I have not found anything that relates a story of confusing technology with magic.

>The additional point about the tendency of visitors to THINK they've been perceived as superior divinities is extremely valuable.

</comment><comment><USER50> This reminds me of the hostility towards the Tinkers in Vernor Vinge's _The Peace War_.

</comment><comment><USER51> _(Fun fact: horror games are more intense in VR, by some margin. So terrifying, in fact, that I added a "Low Terror Mode" recently, after reading a significant number of people saying "I'd love to play your game, but I absolutely won't, because it sounds way too scary.")_

While I would love to play the full terror mode, the low terror mode made me think of a game that replaced the undead horrors you summon with giant puppies that lick your foes until they lose all feelings of anger. A silly idea, to be sure, but it would be fun to play if the theme was expanded on just to see the insanity, and that's the stuff cult (in the media sense...) followings talk about decades later.

<comment><AUTHOR> Hah! That's an interesting idea. I might just think about doing that for an April Fools' or similar...

</comment></comment><comment><USER52> I think it's less of an issue of programmers in general in danger of being seen as witches and more of a _certain_ breed of programmer. You know the type. Not even the obviously "bad guys" and "hackers" induce that much of a visceral reaction.

The sort of kid so detached from their community that yes, they might as well live in a haughty ivory tower with a handful of their peers and bring their arcane gizmos wherever they go and look down upon muggles in disdain. Those are I'm worried about giving the rest of us spellweavers a bad rap.

</comment><comment><USER53> Haha yes, many have laid the link between magic and computers/programming. I remember as a child being very interested in magic and that fascination naturally refocussed to computers in my adult life.

Also check out this website for a funny parable about computers, DNS, wizards and the NSA: [http://grimoire.computer/](http://grimoire.computer/)

</comment><comment><AUTHOR> If people enjoyed this post, you might be interested to hear that the author (me) is currently doing an AMA over on Reddit, too -

[https://www.reddit.com/r/Games/comments/7c1y9q/im_hugh_hanco...](https://www.reddit.com/r/Games/comments/7c1y9q/im_hugh_hancock_i_founded_machinima_and_made/)

</comment><comment><USER54> No. The only people that seem to get upset about this is the media, because their power is being usurped by Facebook, and Silicon Valley itself. Go 30 mins outside of the Bay Area and everyone thinks Silicon Valley is great, and programmers work magic. Living in this tech bubble gives a skewed view of the world, but really no one cares.

<comment><USER34> Even the people whose jobs are being displaced by automation?

<comment><USER24> I get the impression that right now they're too busy blaming offshoring and immigrants to realise that their jobs have been automated and _nobody_ is doing them.

<comment><USER55> Or figuring they'll just get another job, or their job will have them do something else instead of whatever it is that got automated.

</comment></comment></comment></comment><comment><USER56> 'But I can't help but feel, looking at a lot of the media pushback at the moment, that a lot of it is straight-up fantasy novel 101 "Reactions To Wizardry".'

If the last US recession is any indication, the elite (in this case, the quants), can ruin a national economy and not get burned.

I wish the author gave less vague examples to his claims.

</comment><comment><USER57> I'm suspicious of the idea people are afraid of wizards versus wising up to the fact that wizards aren't as wise and just as society presumed they were. They've found out that wizards are just people with a particular skill set.

</comment><comment><USER58> The notion of a terribly powerful yet unintelligible wizard really isn't that novel a situation. Lawyers have long suffered that role, and among several communities (e.g. anti-vax, alternative med.), medical doctors too.

</comment><comment><USER59> Most of us would just be full of ourselves to call ourselves magicians or imagine that anyone else sees us that way.

But there are people working towards creating things that no one will be able to control once they're out.

<comment><USER60> That horse has bolted

</comment></comment><comment><USER61> I wrote about this in 2011 -

[http://russell.ballestrini.net/programming-is-like- alchemy/](http://russell.ballestrini.net/programming-is-like-alchemy/)

Programming is like Alchemy

</comment><comment><USER62> If anyone's burning the programmers is the AI, Block chain programmers. Very soon, the industry will need/have a very small fraction of programmers than what we have today.

</comment><comment><USER63> I won't call it magic, for me programming is like alchemy.

</comment><comment><USER64> I think about this a lot. To control atoms and construct new systems using language and thoughtforms alone seems as close to magic as you can get.

</comment><comment><USER65> So if programmers are wizards, who is our Voldemort that wants us to rule the world? ;)

<comment><USER66> He who controls the book of faces.

<comment><AUTHOR> Goddamn, that really does sound sinister as hell.

</comment></comment></comment><comment><USER67> interesting premise in the article but masked by horrible writing. i had to reread this multiple times to understand the point of it. the transition from talking about VR to programming was incredibly vague.

<comment><USER68> I disagree. I thought it was very clear and concise.

</comment></comment><comment><USER69> relevant xkcd flowchart to wizardry:

[https://xkcd.com/627/](https://xkcd.com/627/)

</comment><comment><USER70> To me, many forms of artistry like singing and dance are so much more magical than anything we do. We just type a bunch of shit into computers until they do stuff, poorly.</comment>