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.
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.
It was really eye opening to me (being a web programmer) to see how you can actually build a real computer with a C-like programming language and compiler just by starting out with simple logic gates. I mean, the damn thing eventually ends up running Tetris! All by essentially combining logic gates for computation and flip-flops for memory. How amazing is that, really?
One of them taught me both computer science and statistics, and did an amazing job at both. He went way above and beyond the minimum required curriculum for AP CS, so I basically picked up everything I needed to know to get a job just in that class.
And for stats, this guy did something I'd never actually seen a teacher do before. Over the course of one semester he'd managed to get the entire class of mostly average students to go from having a typical negative attitude towards math to being genuinely interested and capable of critical thinking that most adults I have met never do.
The other teacher taught a variety of math classes, but I had him for pre-calculus. He was really passionate about what he was doing and that rubbed off on everyone. He did an excellent job of relating everything back to real world topics and really seemed to make things click with people in a way that was highly unusual from my perspective.
The difference those two were able to make impressed me so much I almost decided to go into teaching, but I didn't have any means of paying for college. Fortunately I was able to get into software without a degree, in part because of the great work those two did.
There will always be some magic in programming. Unnecessary magic, imho, is just another form of obfuscation.
I don't believe in "magic", but I believe there is magic everywhere.
TIL I won a math award in grade 6 and almost failed grade 8. I remembered that the first time I took calculus I scored 39% and the second time I scored 93%.
I learnt a lot from school, but more on my own.
I'm terrible at math and programming, but better at it than most everyone I know. The only people I know who do it better do it professionally, but do it so narrowly they barely know anything at all.
I understand very little in detail, but quite a bit in principle.
I'm uneducated and probably unemployable, but make more than most people I know who are employed, in a field that's been made obsolete (while working less than they do).
I believe strongly in the dignity and simplicty of living that comes from reflection and self-awareness. And that empathy and understanding are the cornerstones of a just society.
I believe we should all know more and do less. That our experiments and play should be confined to safe spaces and have as few repercussions as possible. That the public acts we willingly make should be considered and measured.
I am hungry now, I will eat.
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.
If you like that kind of thing and you enjoy/don't mind anime, there's also the serie Knight’s & Magic. It is about a programmer being reborn in a world where people wield big "golem" armors. The protagonist then proceed to make his own version, completly disregarding the philosophy of that world. Thinking of those golems as nothing more than machines and using magic as nothing more than "inputs/outputs" for those machines and the world.
http://www.crunchyroll.com/knights-magic
"A genius programmer and hardcore robot otaku is reborn into a world of knights and magic, where huge robots called Silhouette Knights roar across the land! Now reborn as Ernesti Echevalier, he uses his vast knowledge of machines and programming talents to begin to make his ultimate robot. But his actions have unexpected results...?! The dreams of a robot otaku will change the world!"
From an unofficial (and somewhat grammatically atrocious) English translation of the original novel [0]:
> Normally, Eru would have given up at this stage and would have chosen a more practical spell. But he knew how to solve the problem because of his unique skills ― programming concept. He had experience in designing and coding software to handle multiple variables. That's why he skipped the beginner magic phase and jumped straight into the 'modified magic' phase. Reviewing the structure of the physical boost script, Eru compressed the structure to minimise the number of variables, creating subscripts that would automatically extract the status of the body. After compiling it, he just needed to design the user interface to make it easier to control, so as to lessen the burden.
> Complicated projects like the improvement of scripts was not something that could be done easily by anyone. Eru, however, was not aware of this, completing the improvement shortly, and the patch was a big enhancement. But even so, it was still difficult to control magic that strained the mind heavily. But with his extraordinary processing ability, it was not much. No one realised that a historical revolution had occurred, but for Eru, this was just a small step in his journey.
[0] http://webcache.googleusercontent.com/search?q=cache:http://...
Thanks for the recommendation!
There is a section that muses about the future of humanity and how in the near future, these would literally seem like magic to anyone who doens't have technical know how, and for all intents and purposes, it was.
As soon as we get some sort of grey goo with an API like in Big Hero 6 or wrist mounted fireball/lightning generators we're in business.
"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.
When I see people design systems where, when they break, the only way to diagnose the problem is to do a code review, (not read the logs, or fire up a debugger), I wonder how they got along in their education without understanding the importance of debuggers, or why they hate their fellow programmers so much.
Spring comes out of a book that tried to reject the arcane nature of J2EE. I wonder sometimes if Mr Johnson recognizes hay the Beast he created is just as bad as the one he slayed. And how well he sleeps at night.
It got so bad they made a mini version of Spring, and even that is very declarative, and nearly impossible to explore.
It's interesting you took the time to post this. As the sibling to this comment indicate, there's a lot of 'magic' in many languages and frameworks. not just Spring. You don't off an example of a tech stack you do favor so one can only guess.
I will say that when I have encountered developers and teams who also disdain otherwise popular frameworks, they sometimes choose to roll their own instead of buckling down and learning said framework. Invariably they end up with a partial implementation of what they didn't understand, that is bug ridden, ill performing, and just plain bad.
There's a lot of good stuff in Spring (and EJB, and rails, and ...) the onus is on us, as professionals to learn it and use it where and when it's appropriate.
A magic Apple II makes an appearance, if I'm remembering correctly...
https://www.amazon.com/dp/B00EF8Z32I/ref=dp-kindle-redirect?...
Sounds a lot like the "Magic 2.0" series by Scott Meyer.
https://www.goodreads.com/series/131379-magic-2-0
In that world, "magic" is very much a direct result of programming. I've read the first two books in the series and enjoyed them a lot. For anybody whose into that sor of thing, I recommend this series highly.
They definitely focus more on the programming nuance. It's also cool how they introduce technology and interfaces from different periods of computing due to the time traveling aspect.
>At the start of the story he has a legitimate positive agenda--he wants to use science to uncover the secrets of magic. As the story develops, however, he completely loses sight of that goal, and he instead becomes just a passenger in the plot--he competes in Quirrell’s games and goes through school like any other student. When Voldemort starts including Hariezer in his plot, Hariezer floats along in a completely reactive way,etc.
>Not until spoiler dies, near the end of the story, does Hariezer pick up a positive goal again (ending death) and he does absolutely nothing to achieve it
I assume I am not the only one who destroyed at least some amount of his personal data doing computer magic [1]. This would be analogous to a spell going wrong, burning the witches' hand or something similar.
[1] Be it an incorrect incantation of rm, or just a poorly aimed flick with the pixie pointer.
https://www.reddit.com/r/HFY/comments/250m73/oc_no_graves_fo...
https://www.reddit.com/r/HFY/comments/249hj7/oc_invitation/
https://www.reddit.com/r/HFY/comments/25qa83/oc_the_gods_sle...
https://www.reddit.com/r/HFY/comments/2b1vqr/oc_humanitys_de...
https://www.reddit.com/r/HFY/comments/3baheq/a_kingdom_of_as...
https://www.reddit.com/r/HFY/comments/3m704i/oc_cultural_exc...
https://www.reddit.com/r/HFY/comments/3jfu5t/oc_assimilation...
https://www.reddit.com/r/HFY/comments/4868zu/oc_janitor/
https://www.reddit.com/r/HFY/comments/45tsrn/the_hunt_inspir...
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
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.
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.
Actually this is true of most bureaucracies: banks, governments, large companies, academia, etc.
Ha, interesting. I've read a few novels in which they say that people of some tribes think that is so. And (just guessing here) that may be why in some tribes, a person can have more than one name. I don't mean name as in First_name Last_name (which are treated as a single composite name), but as in Name1, Name2, ..., i.e. multiple different separate names. Also, the approach taken to giving names to people, in certain tribes or communities, is interesting, and varies by tribe.
> True Names is a 1981 science fiction novella by Vernor Vinge, considered a seminal work of the cyberpunk genre. It is one of the earliest stories to present a fully fleshed-out concept of cyberspace, which would later be central to cyberpunk. The story also contains elements of transhumanism, anarchism, and even hints about The Singularity.
"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."
http://www.critical-hits.com/blog/2017/02/22/the-wizards-and...
Djinns are the BOFH of the magic world.
I do like thinking of myself as a wizard, though.
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.
For example, soon after I got my degree I was making browser based games, and the artist I was working with was really impressed with the particle effect fireworks I’d added to the highscores table out of boredom and was expecting to be told to remove.
And, on the other hand, a real time perlin noise warp tunnel I added to a later game was described as an embarrassing glitch that the boss thought looked like a bug rather than a deliberate effect. (And, unlike the fireworks, had actually been a requested feature).
The feedback was all negative. The boss and the designers basically said, "Just make it blue."
A couple episodes like that help make you sufficiently jaded and cynical, but also teach you pay attention to the requirements and not to go overboard.
1: https://www.cs.utah.edu/~shirley/papers/sunsky/sunsky.pdf
This doesn't address your first paragraph, but I wanted to comment on this.
I identify as a hacker. The terms "wizard", "incantation", etc are fairly ingrained in our culture. But if I do something and someone refers to it as "magic", it actually makes me uncomfortable; it means that they don't understand what I did or how I did it, and rather than trying to understand it, they dismiss it as something magical. This might sometimes be because they have better things to do at that moment than consider what I did---which is fine. But comparing it as magic still rubs me the wrong way. I don't do magic: everything I do is explainable, and I can explain it to you if you ask.
I used to practice magic when I was much younger---I was an illusionist for a couple years. I was pretty good at it. I did street magic, mentalism, and various other things that seemed impossible or even supernatural/metaphysical. Magic. I still do some tricks I remember for my kids. But whenever they think that it's real---whenever _anyone_ thinks that it might be real---I make sure that they understand that it is an illusion. A trick. A hack, if you will. With my kids, I show them how it's done. And they still love it.
The article shows a regular expression and calls it a "magical incantation". It looks opaque, but it can be understood. The language can be learned. You can format it in a sane manner and dissect it. (Displaying a regex that complicated on one line is a disservice to others, with the intent of making it look opaque. It's like removing all whitespace and newlines from your code or writing complicated one-liners and saying "look, it's magic".) It isn't a magical incantation.
It occurs to me that the first steps I take in most new-to-me established projects are basically magic - I'm looking for specific shell commands that the other dev(s) use to perform certain actions: build, run, test, deploy, etc. What's more, there are often undocumented environment dependencies - env vars that need to be set, certain executables that must be installed on the dev's system and in the path, etc.
> It looks opaque, but it can be understood.
I don't think "magic" in this sense means "cannot be understood" - only that it's incomprehensible at some point, and it's performed without understanding to achieve the desired result.
When an engineer makes something, they are making a _physical_ object by essentially designing and putting _physical_ parts together. Obviously, there's a LOT of math, simulations and design principles that they do as well, but the layman doesn't need to know that - they just see someone who creates parts to build bigger things. A doctor uses his tools and knowledge to _physically_ manipulate the body and fixes physical problems in the body. No layman will ever perform a heart transplant, but they can understand the concept of taking another heart, moving it and connecting the blood vessels and nerve. What does a programmer do? We put together a line of text that somehow represent electricity that is somehow filtered through microscopic parts, resulting in a machine capable of emulating human speech? What?
And now we're getting into quantum computing and cryptocurrency - things that require a massive wealth of knowledge across many fields to fully grasp, and also neural networks and machine learning - things that programmers understand the intended behavior of, but is impossible to perfectly understand their oftentimes random-seeming behavior. It's not a stretch to say that we're reaching a point in time where technology has essentially become like magic.
There is a large difference between competence and ignorance. They're qualitatively different, and different in each field.
e.g. programmers do magic things like read the error messages on the screen. Non-programmers not only don't do that, they can't comprehend why it's necessary. (Without exaggerating too much)
The same applies for mechanics, carpenters, etc. I've seen good people work, and they do things that I just don't get. I'm not sure any amount of training will result in the same intuitive understanding.
It's why I went into programming, and not anything else...
More than once it has crossed my mind that it would be worthwhile to build custom error message dialogs that can't be closed for at least 30 seconds (maybe with a secret override) for some areas of our products. The number of times I've been on a support screenshare with customers where they try to connect to some external service, and it fails, and they instantly dismiss the prompt that would tell them exactly why it failed, if they would just read it, is maddening. At least that kind of a built-in delay would give me time to fire up the snipping tool and grab a screenshot from my end...
I wrote code for 8 years before encountering another programmer. During that time, I could barely believe that more than a handful of people in the world could possibly be navigating this rabbit hole effectively. It’s too complex and abstract - how would two people even communicate about it?
Turns out I was wrong about the first part, but a little too right about the second part. Even mathematicians find more agreement about what is true than programmers do.
[1] https://hackaday.com/2017/11/09/stop-motion-with-the-time-gl...
Maybe if you had seen some of the eldritch devious monstrosities I've seen people create in Excel (even without VBA) you might reconsider that statement.
Be very worried if someone says "we have this Excel spreadsheet that needs to be turned into an app"....
Excel functionality is on part with some programming languages.
https://www.youtube.com/watch?v=INa41RSwiCc
But eh, I suspect a good programmer in most fields wouldn't be seen as 'magical'.
For a layman who's curious about computers, he can just go to a computer and try stuff. Worst outcome from there is loss of some data.
If you're curious about chemical engineering, you're restrained a bit, because you're not really going to go near equipment that can easily blow you up, burn you, freeze you, or poison you.
So without the tantalizing hints that IT drops near you all the time, you're not going to wonder whether chemical engineers are wizards.
From personal experience, that is more than scary enough for some to never attempt anything at all.
That would include people like psychologists, hypnotists, marketers, politicians etc. Once you know all the tricks it stops being magical, but it takes a lot of time and effort to know all the tricks.
(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.
I'm embarassed to say that I wrote Postfix when I meant Sendmail! I might just go ninja-edit that now :)
Ha! When I jumped into Linux during the summer of 95, I spent many many days and nights writing directly sendmail.cf rules, because I could not understand and use any of those damn M4 scripts... Handwriting sendmail.cf parts was more straightforward for me (for some value of 'straightforward').
20 years later, I have yet to get around to grasping M4.
Sendmail.cf deserves its reputation.
https://aphyr.com/posts/340-reversing-the-technical-intervie...
https://aphyr.com/posts/341-hexing-the-technical-interview
https://aphyr.com/posts/342-typing-the-technical-interview
I think there are wizards but I'm not one of them.
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.
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.
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.
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).
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...
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.
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.
> 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 - but predicting the future is hard. What I do know is that when you see pitchforks and torches... it's too late.
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!"
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.
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.
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.
Also check out this website for a funny parable about computers, DNS, wizards and the NSA: http://grimoire.computer/
https://www.reddit.com/r/Games/comments/7c1y9q/im_hugh_hanco...
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.
But there are people working towards creating things that no one will be able to control once they're out.
http://russell.ballestrini.net/programming-is-like-alchemy/
Programming is like Alchemy