Vignettes Of Terrible Art Teachers 2

She’s standing in front a TV playing a creepy video of a gender neutral hair model with a dinosaur bone in front of it wrapped in birthday present wrapping paper.  “What do you think of this piece?”  Art is always a piece.  Artists are never “popular”, they’re always “important”.  Every piece by anyone moderately popular is important and must be taken seriously.  This piece is by a student, so I’m not sure what the rules are here.  Will I still be required to prostrate myself at the altar of artistic expression, or can I say what everyone is thinking?

I go for the latter, “It seems like the artist is just doing things at random and is making fun of video installation art.”  Immediately the teacher gets visibly upset.  I’m being cynical. I have no idea what I’m talking about.  All the other true believers attack my statement.  I have no right to be so cynical.  I don’t know why this artist made this so I could be criticizing someone who was raped and this is their expression of their past experiences.  I just stand there and take it, since I’m outnumbered 1 cynic to 12 true believers.

The teacher is looking at our paintings in a critique class and praising everyone.  She’ll ask them why they painted this road, or that building, or their face, and the experienced students know the game.  They effuse wildly about their personal connection to the subject.  How deeply the construction cranes in the Dogpatch move them to tears and impact their life in deep meaningful ways.  Before that this student was into a ceramic bird that changed her life forever.  Another had pasted some flowers onto a photo of herself, but the real meaning was her ever changing views on feminism.  Another talked for 20 minutes about how this trip to Muir woods changed her life in profound spiritual ways so her paintings of roads are an expression of her deeply moving experience.

The teacher comes to my paintings and asks me why I painted them.  I say, “I wanted to practice noses.”  She scowls at me and says, “It seems like you aren’t personally attached to your subject.”  I confusedly pause then ask, “I’m not personally attached to my face?” She completely misses the absurdity in this question and fires back, “Yes, it seems you’re just painting it because it is there, not because you truly love it.”  I look around all the other true believers are staring at me with a mixture of sadness and incredulity, except one.  She’s rolling her eyes with a look of, “Sorry dude, she’s an idiot.”

I’m in a class billed as a figure class that will make me more expressive and find my “true” artist inside.  I actually don’t care finding my true artistic expression.  I just want to get more figure classes in, and this sounded like a lot of fun.  The class would teach us to apply different techniques in a situation where a nude model would pose while different color lights are cast on them with music playing to set a mood.  The teacher was also really nice and a very good painter so I figured I’d learn something.

During the class I’m just sucking ass and can’t figure out why.  I’m trying to paint the figures but the music is distracting, the lights make no sense, and the teacher is constantly waffling between “be loose, don’t think” and “why isn’t that drawn correctly?” I try as hard as I can to satisfy both goals of not being accurate and also being accurate but it’s impossible.  On the final day I realize that, given the models are all white skinned, then the crazy color lights mean there is zero flesh tones.  Aha! Why the hell didn’t the teacher just tell me this?  “Because you have to discover that for yourself.”  Well then why am I paying you money?

About half way through the course I ask why we’re doing the lights and the sound.  She says so we can’t think about what we’re doing.  So I ask then why are we expected to be accurate in these conditions?  She says if you’re really an artist it’ll be accurate.  I ask if she does this with her paintings and she says, “Oh no, not at all.”


Killing Magic

I’m sitting with a friend who is an accomplished musician.  Record deals, multiple albums, and you’ve probably heard her songs on a TV show or commercial or two. She tells me that she doesn’t want to teach music because she’s afraid it would lose its magic.  There’s a mystical mystery about how she makes music and she’s afraid she’ll ruin that special quality if she has to figure out how she does it.  It won’t flow the same.

My response was something that I’ve believed my whole life:  “Magic just hides something’s true beauty.  It’s a con.  A trick that makes you love the magic rather than the real thing.  Once you actually learn how it really works, sure, the magic goes away, but then you get to fall in love with the beauty of the real thing. Real things are always simpler and more beautiful than the magic hiding them.”

Or something like that.  I probably actually sounded a lot less cool than that, but that was the idea.  I’ve found that magic just obfuscates and blurs what I’m really seeing.  Whether that magic is an accident of my perception of reality–or an actual sleight of hand by someone else–doesn’t matter.  What does matter is once I strip the magic away, and find the real simple principles hidden by the wizard, I see the real thing is better.

Of course sometimes I strip the magic away and find that the real thing is an ugly turd hiding in a golden box.  A lot of programming languages and technology are like this.  There’s all this bluster and flourish pushing a magical view of their benefits.  Then I dig a little and this magic simply hides a terrible design, poor implementation, and random warts.  It seems everyone in technology aspires to nothing more than creating enough of a code mannequin to hold up an invisible emperor’s gown.

One of the reasons people resent my opinions on technology is I have an ability to crush their fantastical magical views of technology.  It’s hard to be an Apple fan when there’s a guy pointing out that they frequently allow developers to invade their customer’s privacy, stole wages from employees, and make shitty  hardware that crashes and reboots if you don’t log in fast enough.  You can’t be enamored with Python if someone points out that its APIs are constantly asymmetrical and that Python 3 has a shitty UTF-8 strings implementation.

My mission in life has been to illuminate magic to expose the ugliness or beauty it hides because I believe magic enslaves people to others.  With magic you can convince them of almost anything, and even change the magic and they’ll keep following the wizard’s edicts.  Stripping the magic away gives people the freedom to choose what their reality will be, rather than rely on someone else to define it for them.

A key element of this mission is education.  I proved with my books that there really is no magic to learning to code.  The people who could do it weren’t special geniuses. Almost anyone could learn to do it given enough time and the right learning material.  Once it was clear that programmers aren’t special, it freed others from the magical aura surrounding programming and opened the practice up to a much wider range of people.

Education then becomes the practice of breaking magic to expose reality.  I study a topic and figure out how people are really doing it.  I find all the tricks they use, strip away the things that are just bluster and showmanship, find the lies they use to puff up their personas, and then teach the simplest real version of the topic.  This then opens the topic to a much wider range of people who can now enjoy it and improve their own lives.

Many times the practitioners aren’t purposefully trying to hide what they do because they don’t even know how they do it.  Most practitioners simply cargo cult a set of random practices they’re sure are the secret sauce.  Usually these secret practices are nothing more than extraneous rituals getting in the way of the real task at hand.  This educational acetone sometimes embarrasses these practitioners since nobody wants to be seen as believing in pointless rituals and magic.  That’s fine, but really they should be happy to find another path to what they love.  One that’s not full of obfuscation and rituals that only serve to enslave them to a limited palette of skills.


Admitting Defeat On K&R in LCTHW

I have lost. I am giving up after years of trying to figure out how I can get the message out that the way C has been written since its invention is flawed. Originally I had a section of my book called Deconstructing K&R C. The purpose of the section is to teach people to never assume that their code is correct, or that the code of anyone, no matter how famous, is free of defects. This doesn’t seem to be a revolutionary idea, and to me is just part of how you analyze code for defects and get better at making your own work solid.

Over the years, this one piece of writing has tanked the book and received more criticism and more insults than any other thing I’ve written. Not only that, but the criticisms of this part of the book end up being along the lines of, “You’re right, but you’re wrong that their code is bad.” I cannot fathom how a group of people who are supposedly so intelligent and geared toward rational thought can hold in their head the idea that I can be wrong, and also right at the same time. I’ve had to battle pedants on ##c IRC channels, email chains, comments, and in every case they come up with minor tiny weird little pedantic jabs that require ever more logical modifications to my prose to convince them.

The interesting data point is that before I wrote that part of the book I received positive comments about the book. It was a work in progress so I felt it’d need to be improved for sure. I even setup a bounty at one point to get people to help with that. Sadly, once they were blinded by their own hero worship the tone changed dramatically. I became actually hated. For doing nothing more than trying to teach people how to use an error prone shitty language like C safely. Something I’m pretty good at.

It didn’t matter that most of these detractors admitted to me that they don’t code C anymore, that they don’t teach it, and that they just memorized the standard so they could “help” people. It didn’t matter that I was entirely open to trying to fix things and even offered to pay people bounties to help fix it. It didn’t matter that this could get more people to love C and help others get into programming. All that mattered was I “insulted” their heroes and that means everything I said is permanently broken, never to be deemed worthy ever again.

Frankly, this is the deep dark ugly evil side of programming culture. They talk all day long of how, “We’re all in this together” but if you don’t bow to the great altar of their vast knowledge and beg them for permission to question what they believe you are suddenly the enemy. Programmers consistently go out of their way to set themselves up in positions of power that require others to pay homage to their brilliant ability to memorize standards or know obscure trivia, and will do their very best to destroy anyone who dares question that.

It’s disgusting, and there’s nothing I can do about it. I cannot help old programmers. They are all doomed. Destined to have all the knowledge they accumulated through standards memorization evaporate at the next turn of the worm. They have no interest in questioning the way things are and potentially improving things, or helping teach their craft to others unless that education involves a metric ton of ass kissing to make them feel good. Old programmers are just screwed.

I can’t do anything about their current power over younger new programmers. I can’t prevent the slander by incompetent people who haven’t worked as professional C coders…ever. And I’d rather make the book useful for people who can learn C and how to make it solid than fight a bunch of closed minded conservatives who’s only joy in life is feeling like they know more about a pedantic pathetically small topic like C undefined behavior.

With that in mind, I’m removing the K&R C part of the book and I finally have my new theme. I’ve wanted to rewrite the book but couldn’t figure out how to do it. I was held in limbo because I was personally too attached to something I felt was important, but that I couldn’t advance forward. I now realize this was wrong because it prevented me from teaching many new programmers important skills unrelated to C. Skills in rigor, code analysis, defects, security flaws, and how to learn any programming language.

Now I know that I will make the book a course in writing the best secure C code possible and breaking C code as a way to learn both C and also rigorous programming. I will fill it with pandering to the pedants saying that my humble book is merely a gateway to C and that all should go read K&R C and worship at the feet of the great golden codes held within. I will make it clear that my version of C is limited and odd on purpose because it makes my code safe. I will be sure to mention all of the pedantic things that every pedant demands about NULL pointers on a PDP-11 computer from the 1960s.

And then I will also tell people to never write another C program again. It won’t be obvious. It won’t be outright, but my goal will be to move people right off C onto other languages that are doing it better. Go, Rust, and Swift, come to mind as recent entrants that can handle the majority of tasks that C does now, so I will push people there. I will tell them that their skills at finding defects, and rigorous analysis of C code will pay massive dividends in every language and make learning any other language possible.

But C? C’s dead. It’s the language for old programmers who want to debate section A.6.2 paragraph 4 of the undefined behavior of pointers. Good riddance. I’m going to go learn Go.

UPDATE: I’m going to learn Go, Rust, and Swift. Holy crap. Stop being so religious about who learns what. I learn languages now to teach them to people, not because I plan on using them for anything. Don’t listen to me as a barometer of what’s cool now. Peace.