Close

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.

 

Learn More Python Rough Draft Up

My move to Miami has pushed out the deadlines for most of my books by a month, so May is when the majority of the content for Learn Python 3 The Hard Way will drop in May.  I’m done with the editing round with my publisher so the PDF will drop later today.  I’m also toying with doing an ePub but I swear if one person using a janky Linux ePub reader complains about the meta-data being wrong before telling the project to fix their meta-data I’ll pull it down.  Life is too short to convince angry Linux ePub developers to fix their code.

I’m also going to try my future book writing process starting today.  I’ve wanted to incorporate chat into my book publishing process but haven’t really found a chat I liked.  The Gitter chat seems like it’d work pretty well so I’m going to try that on the rough draft of the Learn More Python The Hard Way book.  You just have to go to https://gitter.im/lcthw/more-python-help  from the top of the book and you’ll be able to chat with me and everyone else.

If this works out then future books will be released this way:

  1. I hack on the idea until I’ve got a rough draft going.
  2. I post the rough draft, and put a room for the book into the LCTHW Gitter.
  3. I’ll hang out in there while I work on the book, answer questions, and change the rough draft based on feedback.

My goal is to get earlier feedback from people on how my exercises work and also give people free access to early releases.

 

The End Of Coder Influence

I get an email from someone who tells me that Reddit has decided to remove my book from their list of suggested readings for Python until I update the book to Python 3.  They made this decision about two weeks prior to when I received the email, so I went to look at my traffic and sales to see if there was an impact.  Weirdly, my sales were up and my traffic was about the same.  It had no impact.

Once a year I go through my Python book and I try to convert all the code to Python 3 as a test.  I do this with the eye of a total beginner, looking for things that will trip them up and cause problems.  Bad error messages, confusing syntax, broken libraries, and inconsistencies.  Every year I run into nearly the same problems:  strings are difficult to use, error messages don’t have variable names, libraries don’t really help with strings, and there’s too many inconsistent string formatting systems.  So I decided to see again what it would take to make my book Python 3 and ran into the same issues all over again.

To put it bluntly, the reddit community responsible for teaching beginners to code censored my book as a power play to get me to force Python 3 on unsuspecting beginners.  The language does not work for them, and they were attempting to use their influence to enact change in my books, rather than use that influence to improve Python for beginners.

And it didn’t work.  I still had the same sales and the same traffic.  I actually think if all Programming Reddit rose up and demanded Python 3 have better error messages regarding strings (a minimum usability bar) they would be ignored too.  In fact, I kept seeing over and over people pointing out blog posts, reddit threads, HN threads, and tweet storms as if these were highly influential which then did nothing.

A few days ago I went through another test of Python 3 and ran into the same problems.  I get enough people emailing me about Python 3 that I decided I needed to work out a list of reasons why Python 3 is broken for beginners as of today.  Originally I was going to write it fairly simply and not worry about appeasing the coders, out of fear they would retaliate like they always do and boycott my book even more.  But, I remembered that after countless blog posts about how terrible of a person I am and how terrible my books are, I still end up helping millions of people a year and still have the same sales.

I decided to just write what I felt and fuck whatever programmers think.  I wrote it, put in a couple of jokes and trolls, and then posted it.  Fuck it, I have a cold and don’t give a fuck.

Immediately people started insulting me, telling me I’m wrong (yet not reading the post, LOL). Then the HN posts start, then Reddit.  I don’t read those so people shove them into my email and Twitter stream.  I was tired and not into defending myself so I just deleted Twitter off my phone and go sleep some more.  Enjoy the sun.  Did some painting.  Hung out with friends.  Who gives a fuck about what a bunch of angry lonely coders think about my thoughts?

Yet, here’s where everyone I know becomes deathly afraid of the coders.  These groups of programmers used to have large sway over what was successful and chosen, but at the same time were horribly uninformed about basic computer science.  They ran to Node.js because of “events are better than threads” and had no idea Hoare or coroutines existed.  They manually went to hand convert all Python 2 code to Python 3 code, rather than just asking why the Python 3 VM can’t just…run Python 2 code too.  Then they believe the mega load of bullshit that this is impossible despite all proofs and evidence stating otherwise.  For all their claims of superiority for having once bought a copy of The Art of Computer Programming the previous generation of programmers are sadly uninformed about basic shit.

We all feared them, because their incredibly uninformed opinions and complete lack of humor or human decency could sink or swim entire companies.  Get slagged on HN and you’re done for.  I’ve heard of VCs actually threatening to strip away funding over bad HN reactions like HN is on the same level as the food critic of the NYT.  So what was going to happen to me?

Honestly, I’ve been trying to get out of the technology industry since 2008.  This industry sucks, and largely because of the abusive previous generation of programmers.  My goal has been to just make their influence on my life as small as possible so I can go on doing things I love like painting.  Fuck them.  But, a man’s gotta eat so I keep doing my work so I can make enough of a living to keep helping folks and doing what I love.

What are the results of their insane hatred of my latest stance against Python 3?  Am I doomed to never have any more sales again?

Nope.  Same traffic.  Same sales.

I believe that the influence of the previous generation of programmers is largely gone.  I can’t exactly say why, but I think it’s because they consistently back terrible ideas over and over.   They also tend to have no idea what will be successful or not.  The reason is they base their opinion of a technology on superficial things related more to whether the tech fits their tribe than its actual merits.  When my book first came out the HN crowd and other “professionals” said it wouldn’t work.  Same for many successful startups, technology, and ideas.  Meanwhile, the things they do back end up being terrible and we all regret following their hive mind.  Can anyone say OpenSSL?

I also believe the newer generation of programmers are more well rounded and have a general distaste of this kind of tribal fascist bullshit we have in open source.  I can’t really prove that, but it’s a feeling I’ve been having for a couple years now.  This next generation is different. I just can’t quite say how other than they seem to not believe the same things as the previous generations.

About a year ago I stopped reading HN and Programming Reddit because of this.  I don’t worry about the vindictive assholes out there who feel any questioning of their tribal beliefs is an affront to their person.  I now think the actual influence of the hive mind on anything outside of the tiny little set of Silicon Valley Programmers Who Read HN bubble is nothing.  If you think their influence matters then either you’re working on something as insignificant as they are, or it really doesn’t matter and you should just ignore them and move on.

Keep making cool stuff and speaking your mind counter to the hive.  I think that’s the future generation’s take on programming, and I fully endorse that message.

Dear Paul

Dear Paul,

I’ve actually always admired you. You saved the business of technology from the useless MBAs who did nothing but drive businesses into the ground on the backs of programmers like me. You handed money to the builders and hackers instead of handing money to guys with nice teeth and fancy hair. You totally rock for proving to the world of finance that the money is where the skill is, not where the pretty is. I quite literally fucking love you for that, and will always have respect for you.

I even think we might be similar in a lot of ways. I’m an old school hacker just like you. I recently started painting like you. I’m a way better public speaker but that’s besides the point. We have similar interests and could possibly bond over many things. Who knows, you might have been a potential good friend of mine if it hadn’t been for one thing you did:

Hacker News

I hadn’t really paid attention to HN much until about 2008. Someone showed me how your site posted a talk by Thomas Ptacek where he outright slanders me. Slander which he has taken back and publicly apologized for. He had a video where he makes wildly false accusations about me and my fitness to work, as well as Dan J. Bernstein and several other noted cryptographers. At the time I didn’t really care because I was out of the startup world. I was working for a bank and I mean, c’mon, banks don’t fail. Yep, sure enough banks do fail, and the one I worked for–Bear Stearns–did that same year.

I would notice that about once every 6 months this video would get posted, and then the HN crowd would call me the worst shit ever. Things they would never say to my face were tossed into comments like I had punched their toddlers in the face. But, I still didn’t care because after Bear Stearns collapsed I took my severance and went to study Jazz guitar, something I’ve always wanted to do. I hear you did something similar. You went to study painting? Well I’m sure you know when you finally get to study something you love it’s easy to simply ignore the world.

It wasn’t until 2010 that I started to care about this video being posted every 6 months. After guitar school I decided to move to San Francisco and work for a company there. I wanted to change my life around again and start a family, see if I could get back into building something. Sure enough, first week on the job and there’s that video full of slander posted to HN filled with comments from abusive anonymous weak fucking assholes. Nobody from YCombinator did anything about it, and I had to take it into my own hands.

I threatened to sue Thomas and because of that he retracted what he said and apologized publicly. Mysteriously the video also disappeared off the internet and stopped showing up on HN. What an odd coincidence, but that’s not the point of this letter to you Paul.

The point is, seven years later and your site is still used to abuse people and YCombinator the corporation continues to support it. Currently the most popular way to slander someone on HN is to create a “throwaway” or “anon” account, say what you want, then slink off into the shadows like a weak limp dicked little loser. Do you do anything about it? Nope. Right now there’s a blog post critical of my book that’s been posted to HN 4 times so far. Apparently you will allow links to be posted repeatedly even after they’ve been voted down if it’s “gratuitously negative” of me, but take anything about one of your shitty startups down immediately.

Your news site is nothing more than a slander factory Paul, and you allow YC to back it which makes you responsible. Sure you get Sam to pay lip service to civility but you don’t mean it at all. You have no problem posting “gratuitously negative” blog posts, articles, FUD, and all through the most easily detected anonymous accounts. You have no problem with people shitting all over me, even to the point of threatening me. You let anyone post any bullshit slander they want…oh except about a YC company. That would be “gratuitously negative” for sure.

I mostly ignored it, but after 7 fucking years of YCombinator secretly backing and manipulating HN for its own gain it’s time to do something about it. I’m just one guy, but you know what, I have one thing that you don’t have Paul:

Nothing

You see Paul, I learned a long time ago that you never fight an ugly man because he’s got nothing to lose. In the world of startups I’m one ugly motherfucker. I don’t make millions, I make rent and food money. Why? Because I’m trying to help lots of people out by giving my books away for free. I’m never going to get funding from a venture capitalist because most of my ideas are infrastructure like the web server that powered most of your shitty fucking startups. If I lost everything tomorrow I’d sell off my guitar collection and move to some tiny town to be a school teacher or go back to school and get a Ph.D. in art history or some shit like that. I literally have nothing to lose.

I don’t play the game at all and that means I’m unclean by VC standards. I like to say “fuck” and stand up for the little guy so that means, no matter how good of a person I am, I will never get respect from people with money. Ever. It also means I have no reason at all to be nice to your startups. If your company is going to let a bunch of fucking assholes rip into me and many of my friends then I’m in a perfect position to start stomping on some undescended nerd testicles in revenge.

So Mature, Right?

The thing is, I don’t get why you keep running HN? It is about the most immature dumbass thing for a professional venture capital company to run. When I read the comments on HN and the constant disgusting abuse you let those weak losers write I think, “Fuck me man I’m never doing business with this company. Ever.” I even go out of my way to avoid as many YC startups as I can. In fact, I had job offers from a YC startup and a non-YC startup and am looking at the non-YC startup, just because of HN.

The best analogy I can give about the YC/HN relationship is an abortion clinic. You see Paul, YCombinator is a fine up standing abortion clinic that’s providing a useful service, but you have these disgusting protestors out front who are harassing your patrons. They throw things at them and scream and threaten but you do nothing about it. You wring your hands and plead, “Ohh I can’t stop them because of free speech. What will I ever do?!” Then when nobody’s looking you walk out front and feed all the protestors and secretly hope they stay around.

The question is why? Why the fuck do you bother keeping these idiots around? Why do you keep feeding them? Surely you make more than enough money just doing the VC thing that you can change HN to a curated news feed with no comments or heavily moderated comments? The cost of running HN and the bad name it probably gives you in many circles can’t possibly be worth the money it brings in. I mean fuck man we all know HN “hackers” flat refuse to buy anything except porn, lube, and prosthetic dildos to compensate for their teeny tiny weenies. You can’t be making any money on them compared to not running HN.

So what the hell do you gain by running one of the main cesspools of the technology world? Is it that your balls are so incredibly dirty that you periodically need to have a bunch of grown men come slob away at your scrotum every demo day? I honestly don’t know, but you keep backing them so there must be a reason I’m not aware of and it’s important to you.

It sort of doesn’t matter because I’m fed up with it. I’m just writing you this letter to sort of warn you that I’m seriously thinking hard about fighting back. You may be chuckling now, but I’d like to point out that one of the reasons most of your moronic baby penis followers hate me is because I wiped out epic amounts of Ruby on Rails with one blog post full of truth. I also have two books that bring in more traffic in a month than probably all the traffic your bottom 80% startups bring in during a whole year. I also have pretty damn good credibility with many people as a straight shooter and generally honest good guy.

What would happen if I decided to pay you back for HN Paul? What would happen if I started honestly reviewing your startups’ products? If I just picked the worst ones, and then started tearing them in half? What would happen if I went on every HN hiring post and started posting dirt about the various shit HR practices your companies have? What if I took all this writing and got my friends you’ve fucked over to help me broadcast it? What if I started posting this writing as replies to many of your comments? What if I started offering to advise new coders, the millions I teach a year (yes, millions Paul) to avoid all of your company’s startups? What would happen if I just started putting anti-YC ads on my properties? What if I started telling everyone how you take 7% and don’t give startups any real guidance? What would happen if I started talking about the crazy bullshit I know has happened at YC startups I’ve worked for and others have told me about?

What would happen Paul, if I decided to just cost you a little money? What if I cost you a little more? How much would I have to cost you before you, your investors and your startups declared HN too costly to be worth it? Would I have to cost you millions before you decided it wasn’t worth it to run a shitty 1990s forum site just to listen to a bunch of grown men complain about another grown man’s choice of hobby while they jerk their tiny puds at fake tits MILF porn?

Now, I’m notorious for getting mad, cooling down, and then deciding against something. Other people say this makes me a “pussy”, and I’m sure there’s going to be enough comments saying that. What those comments won’t tell you Paul is all the people I have stood up against and took down. I hate abusive fucks, and right now HN is so abusive and out of control that someone has to do something about it. I figure HN has been trying to destroy me and rip me down for 7 years and hasn’t done it yet, so maybe that’s a sign I have the strength to fight back.

Why would I bother though? As some folks say, it’s best to just leave them alone? Because after 7 years of abuse I’ve had to adjust my life around the raving fucking idiots on HN and the rampant abusive shit they say. I’m not physically afraid of the idiots there. I bet most of them start breathing hard when their fingers break 100WPM on their fancy “hacker” sticker coated MacBooks. I am afraid for my loved ones though. Because of HN I never mention when I’m out with a loved one. I tell anyone who’s friends with me to stay away from my twitter account. Never follow me or mention that you’re dating me. I warn people I might go work for that people hate me on HN and I might not be good for them. I keep a low profile professionally, and personally because of HN.

Nobody should have to live like that, and while I don’t mind too much, I wonder if there’s people out there who have had their lives destroyed by HN commenters and have to hide. Are there people who wrote one comment negative of a YC company and now can’t find work? Are there people who replied to an HN favorite “super poster” and are now silenced on there? Are there people who have been harassed in real life like me because of HN? What if there’s people who made something, and then HN commenters destroyed it and ruined them?

I’m sure you’re a reasonable guy Paul, so I’m hoping maybe you read this and realize that your HN experiment has run its course. It’s now causing more damage than good, and a simple curated news site without comments or with only YC companies commenting is a better option. Otherwise all your news site ends up being is a place for men with tiny little mosquito penises to come and pretend they have huge dicks the size of their HN karma count.

Signed,

Zed

And Then You Have No Taste

There’s a presentation a while back by Randy Nelson, Dean of Pixar University, where he says that Pixar is all about, “How can I plus this?” He goes on at great length to say that if you’re collaborating on something with someone else you can’t say that what they made isn’t very good, but instead you have to say how can you “plus it” and make it better (which is basically a passive aggressive way to say it sucks).

This all comes from the Improv Comedy crowd where you are trained to go with whatever your improv partners come up with and try to roll with it. It’s a seductive idea that you can work with people who will never tell you, “That’s fucking stupid.” Even if you are being a total idiot, nobody will ever say it, and so, you can safely throw out ideas and everyone will be happy and the world will improve because everything is just oh so positive and awesome and pretty soon we’re all riding around in flying cars like we were promised! It was negativity that killed flying cars! NEG A TIVIT EE!!

No, sorry people. Negativity and criticism are an important part of creating anything of quality. You have to be critical of what you make or else you end up making total crap and never improve. That’s just the way it is, but it’s curious to wonder what kind of an arrogant asshole thinks that nobody should criticize their work? Who are these people who want to make things and never have it criticized? I mean, my output gets ridiculed all the time, with rampant numbers of totally brutal commenters tossing around their opinions to the point of slander. I actually mine it for potential fixes to what I’m making. It’s difficult, but it’s possible for me to wade through the vitriol and either find something that needs fixing, or find a catch phrase to use as a defense against the critics.

Taking criticism in stride is just part of quality, and trying to eliminate any criticism of your ideas is a sign of both immaturity and abuse of power. If nobody can criticize what you make then you are elevated to the realm of kings and despots. Fuck, even the Pope is down with criticism now. Are you more important than the damn Pope? Nope. So get off your damn Throne of Impeachable Perfection and learn to recognize when your work sucks. If you do this often enough you’ll be able to fix it yourself before anyone else can see it. You’ll…GASP…learn.

I think the real problem is that a person who gets all butt sore from being told their output is crap is someone who isn’t being honest with the real quality of their work and isn’t working on it personally before presenting it to their peers as legitimately developed. When I post my paintings I give an honest assessment of them. The vast majority of them suck, and will continue to suck because I’m still learning, and I’ll be learning for the rest of my life. The word we use for an artist who believes everything they make is fantastic is “delusional”. You want to see what “and then” does to art? Go to Craigslist arts and crafts and set the price to >$500. Watch all the people who believe the art they purchased or made is fantastic.

I see this all the time with code as well. Programmers are notorious for building crystal palaces crafted of finely tuned deeply complex structures that follow all the rules, binding together every meta-pattern possible, following all the best TDD, pair programmed perfectly, and they end up with a total shit show of a project. They never think to ask, “Does this really improve my project?” Others keep piling code on top of code on top of code endlessly never realizing that they need to look at what they’ve written and ask, “Alright, what do I have to trim down? What should I remove? Rewrite? What’s crap?”

It gets even worse when you criticize personal projects. The worst habit of all people who make stuff is to use the personal as a defense against criticism. Artists do it by claiming their art is about some personal tragedy protecting them from criticism of their work. Programmers do it by claiming their project is a labor of love and open source, protecting them from anger about bugs they’ve made that ruin people’s day or life. It’s almost as if they work on something, “and then” it into existence with no critical eye, and when challenged on the quality, invent insult to avoid having to admit what they made sucked and needs to improve.

However, the very main reason that “and then” culture is wrong is it’s nothing more than a passive aggressive power play. Did you know that Pixar STARTED the wage theft scandal that robbed illustrators, programmers, janitors, marketing specialists, writers, and every Pixar employee of potentially hundreds of millions in wages? Ed Catmull, President of Pixar, is even entirely unapologetic about doing this. How much you want to bet when someone questioned Ed on the legality of this brilliant idea Ed fired them for not being a team player who plussed his ideas? Someone probably brought up the morality of this question to Ed and he simply went, “Well I don’t know Frank, looks like you aren’t real Pixar material. At Pixar we PLUS ideas, not shoot them down or criticize them. Maybe you should go work at Dreamworks with the other assholes?”

Of course, you’ll say, “But Pixar produces hits doing this!” First off, they follow a formula laid out by Save The Cat, which doesn’t take much creativity to produce a hit. Save The Cat produces their hits. Second, I’m betting cash money that their claims of plussing all day long are bullshit. I’m willing to put down $1000 right now that they have a hidden back catalog of total shit ideas for movies that never went anywhere and weren’t ever produced, which means they definitely don’t plus everything and are definitely using criticism. The above video is nothing more than the lies companies tell prospective employees to recruit them, not any real depiction of how they work.

The truth of every company that claims they have this super collaborative never critical creative type utopia is this utopia ends up breeding guys like Ed Catmull who take advantage of all the doe eyed Andtheners. It’s a culture that is right up there with meritocracies in their ability to turn a potentially good idea into a way to simply abuse people for not fitting in.

Another Way

The straw man reply to this will obviously be:

“Oh! So you think everyone should run around setting people on fire with insane vitriol based on every flaw in their ideas? You want to make a hostile work environment! You hate delicate little creative souls who work all day to pour their hearts into what they make and just want to shit on their precious little lives! Fuck you!”

Really? What happened to “and then…”? Hmm? If you think it’s awesome working in an environment where everything you do is applauded like you’re in kindergarten then think again. The truth is, if you actually give a shit about being good at something then you’ll know that people are blowing smoke up your ass and find it incredibly annoying. Not to mention the fact that these supposed creative utopias are never anything like they seem. Given all of these supposed utopias are powered by people I guarantee you find back stabbing, back room dealing, social manipulation, favoritism and power plays just like you do with meritocracies. Any time you see unrealistic claims of utopia you can just bet its hiding something sinister, and Pixar’s wage theft scandal is proof positive I’m right. Their work environment is not better than an honest collaborative work environment. It’s nothing more than a way to convince employees to go with any idea handed them while management avoids any accountability.

No, I do not think the inverse of ruthless constant abusive criticism for some kind of weird darwinian environment works either. Nobody against “and then” is for abuse. This claim that all criticism is abuse is just another straw man tactic to avoid dealing with honest criticism, but also calling criticism “abuse” is the belief of a child. Adults understand the difference between “I don’t think this will work” and “I think you’re a fucking piece of shit.” Nobody has the right to insult you, but you also don’t have the right to shut down their thoughts on your ideas with claims of abuse. More importantly, an actual functioning criticism proposes alternatives, which is something that’s an entire other blog post about the failure of critical theory in engineering.

In fact, I advocate a mixture of both modes of thinking to produce honestly good ideas and to kill off seriously bad ones early. Here’s how I work on all of the many, many, many creative projects I do and succeed at:

  1. Start with your idea on your own and look to improve it and mold it without a critical eye. Criticism will kill the beginning of a thought or idea, so just get it down and express it.
  2. After you’ve gone through a creative phase and you’re feeling good, it’s time to get real. Be realistic and objective about the idea. If it helps, come up with a rubric of things to look for. I do this with painting, code, and writing. I have a list of things I go through and check for that I try to avoid, but I don’t apply this rubric until I’ve got the idea out and can step back. Sometimes days later.
  3. Repeat this cycle in a kind of random walk of creating and criticizing until you’ve refined the idea. The key is to throw shit out. Not every damn idea out of your head is good. You have to kill things off and toss them out to make room for other good ideas. If you’re keeping a good log of what you’ve done you can always add it back in or turn your castoffs into other ideas. But refining means refining.

Notice in step #1 I said “on your own”? I believe the flaw of teams is that they try to come up with ideas as a team. What I believe works better is if individuals come up with ideas and create in the beginning, and then teams produce the good ideas. If you think of writing that’s how it works. I write a first draft, creating the idea and getting it about 60-80% of the way there. Then a team works on the draft to take it through a production process that makes it high quality and professional. How to do this in a team environment is the subject of an entire industry of books, so I won’t go into it in a stupid blog post, but the gist of it is that without a team to produce ideas it’s too hard to make a final professional product in many of today’s disciplines.

In the end a policy of banning criticism will only lead to everyone “plussing” every stupid ass idea, no matter how vile it is. Despite what Pixar claims, I’m damn sure they don’t operate in this utopia of perfect plussing everything that’s around. I know there’s brutal criticism from the people in charge, and the fact that Ed Catmull screwed all of his employees for years is the proof you need. However, if you’re thinking of instituting an “and then” policy then keep this last fact in mind:

Nobody buying your shit is an Andthener. Maybe in Silicon Valley you’re surrounded by a bunch of Andtheners, but the rest of the world can look at stuff and decide it fucking sucks.

Dear Slack

Dear Slack,

You’re clearly making a ton of money so I’m sure nothing I say here will have any bearing on your goals. I know, I’m just some dude who writes books and doesn’t know anything about how real companies make money. You can totally take my feature request and laugh all day about how I don’t know anything about startups, valuations, or websites. That’s cool. Your loss. I’ll just work around this one tiny glaringly obvious feature that’d make me some money, and you gobs of money.

All I want is a checkbox when I create my “team” that reads:

“Members pay $_____ to join.”

What? Why would I want that? You see, I want to use Slack to teach people all over the world how to code. Right now I’m going to charge them myself and send them invites and deal with all the bullshit of membership. I’d rather just hang out in the Slack and answer questions and have them pay you so you pay me. I’m sure you have all the gear necessary to do this so I don’t need to. Just need the ability to invert who pays and it’s nearly perfect.

I promote it, I do the hard work of being in there, and you get to skim your $6.67 or however much the plan costs off the top of the signups. You give me a place to send them, and when my students join they punch in the required credit card and then they’re done. You then give me the difference and we’re good.

Easy right? You literally have every single feature I want to make this work. I just don’t want to deal with the bullshit of payments and invites and booting people who don’t pay and all that crap. You already do that. Me doing it is just stupid.

I have the clout and the skills. You have the platform. If anyone at Slack wants me to come down and talk to them about this I’d be glad to do it. There’s a few other features that could help in this kind of use case, but really this is all I need to get started.

Zed

Solving The #1 Flaw In TLS

UPDATE: Edited because I’m a dumbass who doesn’t know what a CSR is.

There is a distinct chance I’m very wrong about my recent realization regarding TLS. It’s TLS, so apparently everyone gets it wrong, even the folks who wrote TLS. So if this is possible then tell me how. Just pick a web server and tell me how to do this. I can’t figure it out, so I’m going to ask this one simple question:

Why can’t I use a private certificate I purchased from a Certificate Authority (CA) to sign a secondary private key that I put on the server?

It’s not self-signed, as I’m proving I did purchase a certificate and funneled more money into the “Random Bits For Cash” industry. Instead this would be me basically adding one more link between me and the CA so that I don’t have to put my real key on any servers. The reason I ask is because the #1 flaw of TLS is that someone who’s not you (the CA) has your private key, can give it to anyone they want, and you have to put this key on your servers making them valuable and vulnerable targets.

This is totally off the top of my head, but I think it might work like this:

  1. I buy my certificate from RandomBits Corp by sending my signing request and all the things necessary.
  2. They do nothing to confirm my identity, and then give me a certificate that’s totally secure and works because the browsers have given them a monopoly.
  3. I take my tools and generate a secondary key pair that’s exactly the same information as the original, and the tools would just read my real private key to do that for me.
  4. I use my real private key to sign this new certificate proving I do actually own both, and put this new secondary key set on my server, plus my real public key, and all the usual CA information.

I probably got the signing sequence wrong and such. Too much painting going on, but the gist of it is then a browser can confirm this secondary key like this:

  1. Server presents the secondary key just like normal, but includes the real public key.
  2. Browser uses the real public key to check the signature on the secondary key, confirms it’s all in the CA certificate chain, that the information (server, identity, etc) are the same in both, and then uses TACK to ensure forward secrecy.
  3. After that, if the secondary key changes, but if everything checks out, then the user can be warned about it, or just go with TACK. This part is debatable since being able to change the key might be important to allow for changing keys if they’re compromised, so probably allow this as an option.

The reason this might be a good thing is that one of the primary attack vectors that TLS proponents seem to gloss over is accessing the private key.
You have the problem of an attacker compromising a server and then gaining decryption access for all traffic to a domain. If you have hundreds of machines that manage your https traffic then they all need the private keys, so that’s a huge attack vector. You can mitigate some of this, but ultimately the best solution is for each of those servers to get their own key to reduce your potential damage. You also have difficulty in giving your key to a 3rd party to handle your https traffic for you.

By allowing people to sign their own secondary key, you solve the following problems:

  1. The NSA can’t get the private key even if they get on the server or somehow get it like they seem to be able to right now. They could sign Man In The Middle (MITM) keys, but if browsers are using TACK and warning about secondary key changes, then that’s blocked. To get at the traffic on millions of connections to large sites they would need the secondary keys of every server, not just the one big key.
  2. Attackers can’t destroy your certificate investment by compromising one server, and can’t get access to all traffic by getting at one server. One server means only that one server’s traffic is compromised, and then you just rotate the key.
  3. It solves problem of allowing a 3rd party handle my https traffic. Rather than give Amazon or Cloudfront my private key, I give them my secondary key setup and then I don’t worry about them having rogue employees stealing my keys or leaking them to others without my permission.

It also doesn’t seem to have any technical reasons to block it. It’s a one time thing that is done on first connect and should only add a small amount of overhead to that connection, where then TACK would take over from then on. Also, it seems any time someone wants to make TLS more secure there’s a small faction of detractors who trot out the “performance” criticism and it ends up being bullshit anyway. Maybe this time we can just admit that it’s not too bad to make clients do some more work to secure things better.

Of course, I could be a total idiot and this is something that browsers and web servers support, but I have honestly never ran into it. Looking at the TLS standard I think it’s not supported, and I don’t remember this being in any protocols. All the docs for setting up a web server say put a real private key on your server, so if it’s supported then I’m not the only idiot.

However, what if I’m right and we could secure up a major flaw in the internet by changing how keys are stored on servers? Don’t even take my back-of-the-napkin design here (please don’t). Just set a future design goal to be this:

No TLS server will ever store the real private key.

As long as we have PKI that can sign keys, then this should be feasible and realistic. I’m also baffled why I didn’t think of this before, and wondering why I can’t find anyone else who has. Feel free to comment and tell me if someone else already thought of this and if it got shot down for some reason. I’m very curious.

The Failure Of Voyeur Marketing

Do you remember Facebook Beacon? When I think of “Voyeur Marketing” I think of Beacon. For whatever reason, Facebook thought people would be totally in love with random “partner” companies knowing everything they did on Facebook, but also that all of your friends would like to know you bought a dildo last night. A big one. Voyeur Marketing is the idea that being able to watch someone live their private lives gives corporations an ability to sell them things they don’t even know they need, or just whatever crap you want before some other corporation gets to them. In effect, Voyeur Marketing is an attempt to subvert the market by being the first one to offer a consumer some products so they don’t see your competitors’.

I predict that this kind of online advertising will fail horribly, and depending on who you talk to it’s already on the way out. It seems that marketers are finding out that ad effectiveness on voyeur platforms like Facebook and Twitter simply don’t work. The question though is why? To many people it seems intuitive that knowing how many children I have, their ages, whether I’m secretly gay, how big my porn collection is, who I’m having an affair with, and whether I have a drug problem are great ways of selling me diapers, leather suits, more porn, hotel discounts, and heroin. This is at least how the information is pitched to firms. “You will know the deepest darkest secrets of our users, and you can sell them anything.”

It’s almost a kind of first cousin, twice removed, blackmail scheme. “Heyyyyy, I saw that your daughter bought a pregnancy test. You should go to Target and buy some diapers.” It’s not direct blackmail, but it definitely hits all the key points of exploiting people’s private information to make money.

However, I believe that there’s a very specific quantifiable reason why this kind of marketing simply doesn’t work. It’ll be difficult to get any real numbers on this as the people in control of the data (Facebook, Google, Twitter, 23AndMe) have a vested interest in never letting any of their customers see real success information. Given that, I have a guess at why this kind of marketing doesn’t work which is summarized as:

The only statistically valid indicator of future purchases is past purchases.

I believe that knowing personal information does not predict future purchases because, even if they may eventually lead to a purchase, the distance between life event and purchase is separated by research or brand loyalty. This means that private life events end up being statistically invalid as predictors of future purchases because of confounding. The only consumer behavior that works as a predictor of what you will buy is what you bought in the past.

When I look at the emails Amazon sends me vs. the ads I see on Twitter this is fairly obvious. I buy art books, so Amazon shows me new art books, as well as new strings for my guitar, paint, and replacement vitamins. How can Amazon do this? Because I’ve bought art books, a guitar, strings, and paint from them before. Compare that to Twitter, where the ads I see in my tweet stream are completely ignored most of the time. Twitter is so desperate to make their ads effective they’re force following celebrities like William Shatner onto Mastercard. That’s a very good sign their ads are ineffective and they’re grabbing at straws.

Google is an odd case where half of what it does follows this, and half doesn’t. They are very effective at placing ads that match search queries, but that’s only because they use arbitrage to get marketers to figure out the placement for different keywords. The correlation is strong because matching key words of products I’m searching for to products is combined with information on past searches for those keywords. It’s again a case of knowing my past searching behavior will predict my future behavior. Then we have the ads on GMail which hilariously scan my email and offer me totally useless ads. My behavior with my friends is not an indicator of whether I want to buy more lube today. Sorry Google.

I also believe there’s another effect going on here that explains why Amazon and Google Adwords is more successful than other companies. If all anyone had was behavior information then behavior information would win out in the marketplace as the best information. The problem is Facebook is selling an inferior product in the market because voyeur marketing has to compete with information that’s based on real things I bought in the past. Voyeur marketing will be inferior as long as there’s companies who have access to the things I really bought.

This leads me to another prediction about social networks:

Most social networks will start offering marketplace options for direct sales to their users.

I’m actually baffled why this hasn’t happened on platforms like Instagram, Flickr, and Facebook. These platforms have many brands, many creative types, and many consumers. All they need is a “Buy This Art” button and handle all the sales details and they’d be minting money. Additionally it’d alleviate the creepiness of advertising if there was an actual marketplace someone could go to review products and buy. These companies would switch from the model of “We sell lots of users to advertisers who then…uh…” to the model of “We have the largest marketplace of users and the simplest path for them to buy your product.”

To be clear, since people can’t read, I am not saying merely putting a buy button on everything, although that’d be a great first step. I am saying these companies will create full on marketplaces to compete directly with Amazon. In a radical version of this I can see Amazon merging with a social network or inventing their own to gain this combination.

The idea in this is that the fallacy of building a large user base just to sell ads to marketers doesn’t work because the behavior of purchases is too far removed from the products on most social networks. Instead, the social networks need to close the gap and simply offer the products right there with the easiest possible path to purchase. Until then their information on who I’m having sex with can’t compete with Amazon’s information about how many condoms I bought last week.

Artists And Entrepreneurs Oh My

The Atlantic has this incredibly long winded and very one-sided view of art history that makes the claim that entrepreneurs are the new artists. At first I thought this was a huge load of bullshit, but then I realized they may be on to something. I thought about it for, like, 5 minutes more and realized that The Atlantic is brilliant! They have nailed it. The entrepreneur and the artist have so much in common.

Sexy

I have this new theory on accomplishment that you can say you are good at a thing once you either get paid or laid doing it. Since most artists never get paid for their work, all they have is getting laid to prove that they’re actually accomplished at making colorful wall decorations for incredibly rich assholes to hide in their mansions. This is why artists strive so hard to be sexy, but they don’t have to try very hard because our society has placed them near the top of the boning scale. When you read about artists you find out that they’re simply banging everything. Men, women, cans of paint, animals, everything. They’re so desirable for their ability to apply pigment in ways that makes wealthy people wealthier that they can simply walk down the street and get some hot BDSM action.

But who’s at the top of this scale of getting laid? That’s right, the wealthy. There are people so wealthy they can throw Nazi themed sex parties with super models and artists in attendance without any problems. The entrepreneur just has to pretend he’s on track to be wealthy and he can viagra his way right to the tippy top boning ranks on the promise that one day he might invent Uber and stop being an ugly lumpy looking trollkin looking thing just like Travis Kalanick.

World Changing

Entrepreneurs and artists are both about changing the world. For the artist it’s by selling piles of garbage, paintings of incomprehensible color patterns, sculptures of dildos, or literally nothing to incredibly wealthy patrons who then hide the art in their mansions so nobody can see it. By selling art to the crazy wealthy, artists are being socially conscious participants in the world and making sure that poor kids in Detroit can see art every day. That’s how you change the world when you’re an artist. You soften the hearts of the wealthy while they’re banging a stripper at their Nazi themed sex parties.

Entrepreneurs are also trying to change the world with their glorious startups. For them it’s all about selling the startup to the same wealthy patrons either through investments or just getting bought out after they’ve driven their business into the ground. They’ll change the world with their “uber for diapers” for sure, and everyone in the company will benefit from their stock options and make like $5000 whole dollars after the investors make their millions or billions. ‘Cause that’s how you change the world my friends. By fattening the pockets of the wealthy while they’re filling a warehouse with meth to give to the strippers they keep in their dungeon.

Entitled

Artists love to say that there needs to be more artists and that means they shouldn’t have to work a shitty day job like the rest of us “non-creatives” to be able to do what we love. As Molly Crabapple said over at Boing Boing:

“The number one thing that would let more independent artists exists in America is a universal basic income.”

Molly sells her art to really super wealthy people, so she knows that in order to have more art end up in the hands of crazy wealthy assholes, you need more artists. I mean, how else can they speculate on the art market if there’s not more people producing art to speculate on? It’s like when banks were hiring crackheads to help fill out loan applications in 2008. If you have wild speculation on something, you will find just about anyone to make it for you.

But read that quote again. Apparently artists are so entitled and so special (and also mostly white) that they feel they deserve totally free money with no strings attached for simply existing. Notice she didn’t say, “The country would a better place if there was a universal basic income.” She didn’t even say, “We could help the poor with a universal basic income.” She said, “The way you take all those rich kids who can afford $180k in tuition and turn them into ‘artists’ is to give them money to blow on heroin rather than working like the rest of us.” I still don’t know why artists think they shouldn’t have to work like everyone else to gain the freedom to do what they love, but apparently it’s super important. Probably involves giving children and the poor things that will actually just benefit someone wealthy.

Artists are so entitled now that they don’t even want to suffer for their art, but if you want even more entitlement then you need to look no further than entrepreneurs. Entrepreneurs are so special, and so unique, that we debate whether they’re born or made. They are special breeds of humans who are real men taking risks that nobody else will by taking money from incredibly wealthy people in loans that have zero risk to them. Entrepreneurs are the good looking, strong willed, powerful future despots of the Kingdom of Corporate and everyone else is just a worthless nobody who needs to work for them.

And just like artists, entrepreneurs feel they should be given free money just because they exist and can sling together two words around a preposition. Once they get that money their entire life’s goal is to then avoid working at all costs. It’s the entrepreneur dream to make his bank then go steal a public access beach like the Ocean Grinch.

Important

Artists are very important. Why? Pfft. How dare you ask that! Because art is important! No, not everyone can make art silly. Only true artists can make art, and you better not question their socially conscious washing machine scupltures because that’s just an affront to all that is art. How dare you have an opinion on what you like, commoner. You commoners are so lacking in social consciousness it disgusts me. Art feeds the souls of the poor wealthy men who can afford to buy it. Art helps children who’s parents are rich enough to live near schools with art programs. Art is everything, and by extension so is everyone who calls anything they do “art”. Artists are vastly important, and even though everything anyone produces is valid art, not everyone can make just anything like an artist can make just anything and call it art.

Entrepreneurs are just as important. Everything they make is clearly going to change the world. Whether that’s helping Starbucks open more Starbucks, making the cold fusion of batteries, or automating AirBNB, they are definitely changing the world. They’re going to make those poor wealthy investors so much more money that they’ll have no choice but to give their employees another, like, thousand dollars in bonuses once they get sold to Google as a pity deal. Entrepreneurs are the life blood of the world and when they gain power, wow, do they do great things with their money.

Entreprenuers are so important that they are mythological beings who are the sacred guardians of bitcoin (who apparently told a judge he should be released so he can change the world).

Similarities

It’s true. I now see it. Entrepreneurs and artists now share that incredible sweet spot in our society of being given positions of great status for doing so little. They are allowed to produce anything and declare it a sign that they are somehow more special than the rest of us. More important. More deserving of favor than us common idiots who work boring day jobs. No longer should they have to struggle to do their important work of making things for the ultra wealthy. No my dear readers, they are everything in our society and champions of our plight.

Artists and Entrepreneurs belong together.

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.