1,532 karma · joined May 21, 2008
I don't know if this was blogspam or what.
HTML works well enough for its purpose, but its SGML heritage makes it awkward to read and write; it is implemented inconsistently and sometimes clumsily, with countless edge cases where each browser pivots a different way; and it changes far too slowly to live up to our demands.
CSS is worse: it is simply unsuited for layout. Don’t believe me? Without looking anything up, design a three-column layout where all columns have equal height even when their contents are unequal. There’s a reason this layout was called “The Holy Grail”.
I used Flex for several years, before returning to Javascript at Paperless Post, and I have to say that Flex may have been huge, may have been overengineered, may have been Flash (an unforgivable sin indeed), but it was also consistent, layered, and open. Open in the sense of open source, but also in the sense this article demands: you could subclass or monkey patch everything in the system. You could make your components do anything you want, while keeping everything that was good about the superclass.
It isn't baffling that "open web" technologies lack this kind of programmer-facing openness. That's a result of the browser wars, the underlying implementation, the original design concerns, the limitations of the early internet, and umpteen other factors both human and technological.
But our systems _should_ become open and layered, or else Javascript polyfills and libraries will be the new platform, and HTML and CSS will simply be the uneven ground upon which that level platform was built. This is very nearly the case already. It's not a future that appeals, but maybe it's what we'll have to learn to expect.
When I boot into Windows and connect to my TV with an HDMI->DisplayPort adapter, the TV is recognized as a monitor instantly. In Linux, nothing. Maybe I could figure it out. But why should I have to?
When I use gpointing-device-settings to disable the touchpad, it becomes enabled again on reboot. Maybe I could figure it out. But why should I have to?
When I lose wifi connectivity, a notification window informs me of the fact. Always. Clicking "don't show this again" has no effect. Maybe I could install one of the patches someone uploaded to the months-old Launch pad bug. But why should I have to?
Sometimes the Hibernate command doesn't work. Sometimes it works, but causes the computer to reboot. Sometimes it works, but the system does not resume on restart. Maybe I could figure it out. But why should I have to?
While editing code in gvim, sometimes the screen is corrupted with tiny dots where text isn't fully redrawn. I can hit Ctrl-L to redraw. But why should I have to?
Sound playback is consistently quieter than on Windows. Sometimes I have to switch to Windows just to watch a video with a friend. Maybe I could figure it out. But why should I have to?
I love the quality of this Thinkpad, and I love the power of the Linux command line and the simplicity of the XFCE interface. But my next laptop will have to be a MacBook Pro.
Claiming humorous irony is a very thin get-out clause in this kind of situation. You can't say "we were advertising our female beer-fetchers to ironically draw attention to the male-dominated programming field, thus showing solidarity with women." It just doesn't hold water.
For your own sakes, guys, grit your teeth, bite down on a piece of leather or something, and write a real apology. This is so close! I know you can get the last 5% of the way!
http://www.alanmacdougall.com/functional-series/
I'd really like to see these techniques emerge into the spotlight, instead of just being voodoo magic hidden deep in the guts of frameworks.
That said, taxis aren't the problem. At least they're always on the move and always picking up passengers. The parking lanes on the major streets should absolutely be turned into dedicated bus lanes -- but it's not taxis that are using that parking.