Love-Hate Web Dev Toolchain
Web application development has the potential to mercilessly drown all of your creative spark and inundate you in so much of tooling that you’ll be wishing for pointers in C.
Developing for the web has its perks but a sane development environment is certainly not one of them. I just spent about 3 hours setting up my environment for TypeScript with RxJS. Three goddamn hours of life wasted configuring Vim, the TypeScript compiler, and the SystemJS module loader. You could argue that I learned various module options provided by the compiler or that I invented a nifty trick to navigate the plugin scripts, but I didn’t want to do that. I wanted to relish the functional beauty of RxJS and instead I am ranting about the mess that my dev environment is in. Let me tell you what feats of acrobatics one has to perform to get their dev environment in order.
How I Fumbled Around
- Started by investigating why YouCompleteMe wasn’t kind enough to complete
properties on my
Observableobject which I had just imported.
- Turns out that YouCompleteMe had nothing against me. My import statement was wrong. But Syntastic is supposed to watch my back right?
tslintworks with Syntastic but not
- Why are you being so cruel to me oh Syntastic?
- Fuck. The support for
tscis dropped! What the hell! I just saw people posting their debug info with working
tscon the GitHub issues.
- Anyway, let’s get on with RxJS.
- Compile and load the built script on
definenot defined error in the browser. What the heck?!
- Oh, you need a darn module loader. Okay. Let’s use SystemJS.
- Unlike RequireJS, SystemJS isn’t considerate enough to apply the
.jsextension. Use the
- No errors in the browser! Yay! But no
Hello Worldin the console.
- Import the
You see too many fucking steps.
I love Vim. I can record a macro which calculates an arithmetic operation using the expression register, save that macro, and apply to it all the lines containing vim is awesome, but I sometimes hate Vim from the bottom of my heart. It has no support for projects: a functionality you simply can’t live without in the modern age of software development. Sure there are plugins to do that shit, but you have to download that plugin, set it up, configure it, and somehow get it running. Couple this with the abysmal support for semantic completion and you start wondering whether all the saved mental effort of text editing is really worth it. For me it is (I have a dysfunctional relationship with my editor). The fact that all of your editing environment can be programmed so seamlessly is the biggest win for me and trumps everything else. I’ve spent a lot of time getting syntax highlighting, file navigation, autocompletion, and git integration right (what a shame that Fugitive doesn’t work properly on windows) for Vim. Things that any other modern code editor gets right without having to install any goddamn plugin.
I understand that this de-centralized development in the wild is what has allowed for some of the best plugins and code editing innovation (I bow to thee Tim Pope), but configuring it can be a huge pain. I could live with this requirement of knowing your platform before consuming it, but these days I am expected to dispose of the old languages and my carefully crafted editor set up with it like it was tissue paper. Everybody wants to wipe their asses with some new programming language and framework out there. Is this modicum of stability too much to ask for?
Fucking Build Systems of Web
If there is one thing capable of turning me into a fire-spitting dragon gone mad with rage, then it has to be the range of build systems in web application development. It is a big motherfucking nuisance. Grunt, Gulp, Broccoli, Brunch, etc. Don’t people get tired of writing this shit? I am all lost for words on this one.