Between Fall 2014 and Spring 2016 I was blessed with the opportunity to attend and present proposals to TC39, the committee that writes the JavaScript programming language specification. As a side-benefit of this involvement I was introduced to a variety of logical fallacies that I believe should be added to that austere cannon which includes the venerable ad hominem, the lauded argumentum verbosium, and that favorite standby, the ad naseum. I offer the following list to you, good reader, in the hopes it will help you to navigate the choppy waters of programming language politics.

The Babel: It’s completely safe to unleash this (cough, terrible, cough) feature on developers because it’s only bundled with the “stage 1” Babel plugins! Oh, yeah, developers definitely know they shouldn’t write production code using stage 1 plugins. It’s totally not future-hostile I swear! Also known as “The Decorator”.

It’s completely safe to unleash this (cough, terrible, cough) feature on developers because it’s only bundled with the “stage 1” Babel plugins! Oh, yeah, developers definitely know they shouldn’t write production code using stage 1 plugins. It’s totally not future-hostile I swear! Also known as “The Decorator”. Argument from Committee: Feature X achieved consensus at the July Tc39 meeting in <pick one of the three most expensive cities in America> by a room full of people who work for <insert three or four massive tech companies here>. Yeah, the discussion was overwhelmingly dominated by aggressive white males, but everyone agreed on it! So get over it, ya crybaby!

Feature X achieved consensus at the July Tc39 meeting in <pick one of the three most expensive cities in America> by a room full of people who work for <insert three or four massive tech companies here>. Yeah, the discussion was overwhelmingly dominated by aggressive white males, but everyone agreed on it! So get over it, ya crybaby! TISU (This is so unfair): I know I didn’t have the spec text ready before the meeting and I know that lots of details have changed, but we spent all night getting it shaped up so I don’t understand how you can prevent it from going to stage 2! This is so unfair!

I know I didn’t have the spec text ready before the meeting and I know that lots of details have changed, but we spent all night getting it shaped up so I don’t understand how you can prevent it from going to stage 2! This is so unfair! The Objection Squash: Your objection to my proposal is valid, so I’ll just go ahead and put this bizarre little wart in to make your specific objection go away. Also known as “The Exponentiator”.

Your objection to my proposal is valid, so I’ll just go ahead and put this bizarre little wart in to make your specific objection go away. Also known as “The Exponentiator”. The Vague Objection: I’m not comfortable moving this to stage 1 because… (Hmmm… I have no idea what the hell he’s talking about. I wonder if anyone else does? I’ll just look around the room. Damnit! Everyone’s checking their email, except those Facebook guys who are on some weird Facebook messenger thing. Will I look dumb if I tell him he’s making no sense? God I want to get out of here. I hope I don’t have to spend any money at tonight’s TC39 dinner. And I really hope I don’t have to sit next to anyone talking about functional programming! Geez, they never shut up about it! Oh wait, is he asking me a question? What the hell is he talking about, anyway?) …so I don’t think this is ready for stage 1.

I’m not comfortable moving this to stage 1 because… (Hmmm… I have no idea what the hell he’s talking about. I wonder if anyone else does? I’ll just look around the room. Damnit! Everyone’s checking their email, except those Facebook guys who are on some weird Facebook messenger thing. Will I look dumb if I tell him he’s making no sense? God I want to get out of here. I hope I don’t have to spend any money at tonight’s TC39 dinner. And I really hope I don’t have to sit next to anyone talking about functional programming! Geez, they never shut up about it! Oh wait, is he asking me a question? What the hell is he talking about, anyway?) …so I don’t think this is ready for stage 1. The Tail Calling the Dog, and Killing It: I’m having a little trouble implementing this feature in my browser, and also, THIS FEATURE IS GOING TO BE TERRIBLE FOR EVERYONE AND NO ONE WILL BE ABLE TO DEBUG ANYTHING EVER AGAIN! Oh, you’ve already implemented it in your browser without any trouble? Well, does anyone actually use your browser and d’yamind if we just talk about this all day anyway?

I’m having a little trouble implementing this feature in my browser, and also, THIS FEATURE IS GOING TO BE TERRIBLE FOR EVERYONE AND NO ONE WILL BE ABLE TO DEBUG ANYTHING EVER AGAIN! Oh, you’ve already implemented it in your browser without any trouble? Well, does anyone actually use your browser and d’yamind if we just talk about this all day anyway? The Blink: This feature you’re proposing, it’s completely misleading because you’re creating something that looks declarative but in actuality it takes a nice declarative language form and butchers it into a completely imperative, runtime monster.” Blink. Blink. Next Slide. Also known as “The Decorator”.

This feature you’re proposing, it’s completely misleading because you’re creating something that looks declarative but in actuality it takes a nice declarative language form and butchers it into a completely imperative, runtime monster.” Blink. Blink. Next Slide. Also known as “The Decorator”. @Tit for #Tat: You objected to my proposal getting to stage 2 on technical grounds and now you want to advance your proposal that’s basically fucking done and perfect to stage 2? Oh, hell no! BAZOOKA TIME, BABY! Also known as “The Munich”.

You objected to my proposal getting to stage 2 on technical grounds and now you want to advance your proposal that’s basically fucking done and perfect to stage 2? Oh, hell no! BAZOOKA TIME, BABY! Also known as “The Munich”. The Sloppery Slope: It’s totally worthwhile discussing sloppy mode function-in-block semantics, for the eighteenth time. Like, why would you even question that? Also known as, “Polishing the Turd, Over and Over and Over and Over and…”.

It’s totally worthwhile discussing sloppy mode function-in-block semantics, for the eighteenth time. Like, why would you even question that? Also known as, “Polishing the Turd, Over and Over and Over and Over and…”. The TypeScript Pt. 1: When all your motivating examples are written in TypeScript. Hmmm… Also known as “The Decorator”.

When all your motivating examples are written in TypeScript. Hmmm… Also known as “The Decorator”. The TypeScript Pt. 2: We can’t use this syntax because it’s already used in TypeScript for something else and everyone knows that TypeScript is just JavaScript with types, right? Right? RIGHT? Also known as “Angular FTWWTF”

We can’t use this syntax because it’s already used in TypeScript for something else and everyone knows that TypeScript is just JavaScript with types, right? Right? RIGHT? Also known as “Angular FTWWTF” Over My Dead Promise: You dare to propose something that would challenge the absolute supremacy of the One, True, Righteous and Holy Modal of Async Computation?!? BLASPHEMERS WILL BE FED TO THE DOGS!!!

You dare to propose something that would challenge the absolute supremacy of the One, True, Righteous and Holy Modal of Async Computation?!? BLASPHEMERS WILL BE FED TO THE DOGS!!! The What Could Go Wrong? This’ll be great! We’ll have these different stages that champions have to pass through as they race to the finish line. Oh, look, one champion just elbowed the other into the alligator pit. Didn’t see that coming! Look at them climb the tower wall now. This is so exciting! Oh no! Champion X just got kicked in the face with spiked boots and now he’s falling to the jagged rocks below! Now THIS is a committee, folks!