On Learning to Code. Or Not.

Alert! Jeff Atwood wrote an excellent post about the “learn to code” movement.

He starts with a tirade full of incredulity about Mayor Bloomberg’s New Years resolution to learn to code with Codeacademy.

“Fortunately, the odds of this technological flight of fancy happening – even in jest – are zero, and for good reason: the mayor of New York City will hopefully spend his time doing the job taxpayers paid him to do instead.”

Let’s put aside the princely sum of $1 that His Honor collects from the job. Let’s even put aside that Mayor Bloomberg is doing exactly what he’s supposed to be doing – promoting New York’s bustling tech industry. More to put aside: our Mayor happens to be a technology pioneer with a ridiculous IQ.

This all comes down to a very difficult question: should people learn nerdy things when they have little use for them, just for the sake of learning.

I remember a Livejournal discussion that was hashed over and over in the Russian-speaking community. A math teacher was stumped by a question from his student: why was she supposed to learn about trigonometry when she wanted to become a beautician. The teacher did not come up with a good answer, but the livejournalers did dig up some awesome reasons. One well meaning pro-education-for-the-sake-of-education zelot said something to this effect: well, if you work with nail polish, tangents and cotangents figure prominently in formulas that deal with reflectiveness of thin films. That will lead to a greater understanding of how and why nail polish looks the way it does.

On the surface it may seem that Mayor Bloomberg has about as much need to know how to code as much as a beautician needs to know about sines and cosines.

There’s more: executives who learned a little bit about writing code at some point tend to say the following phrase “oh, I don’t know much about writing code, just enough to be dangerous”. They say it with this look on their faces:

Jeff takes this further with the plumbing analogy: since almost everyone has a toilet, should everyone take a course at toiletacademy.com and spend several weeks learning plumbing?

Normally I’m against education for the sake of education. I once argued for a whole hour with a co-worker who felt that _any_ education is worth _any_ amount of money. I did not know at the time that he held degrees in Psychology of Human Sexuality, Biology, Sociology and Communications. He must have been on to something: he made an amazing career while mine took a nosedive soon after that discussion.

Here’s where Jeff is wrong (I know, this is shocking, Jeff being all wrong and such): it is better to push people to learn incongruous things then to tell them that this is a bad idea. Steve Jobs learned calligraphy in college and it turned out to be super useful. He might not have become a master calligrapher, but man, did that piece of esoteric knowledge change the world.

When I was in college I badly wanted to take a scientific glass blowing class, but did not. I deeply regret that.

Are there people who learned plumbing from This Old House annoying contractors? Yes. Are self-install refrigerator ice maker lines causing millions in water damage? Yes. Is the world better off because Richard Trethewey taught it some plumbing? Absolutely.

If anything, attempting to learn to code will make people more compassionate towards coders. I do believe that people who are not already drawn to programming are not likely to become programmers, more than that, they are not likely to sit through a whole RoR bootcamp or worse. Learn to code movement is not likely to lure in bad programmers, but it might give people some understanding of what coders go through and maybe be more hesitant to have loud yelling-on-the-phone sessions near their cubes. Mayor Bloomberg, who enforces open workspace policies everywhere he works, might understand why programmers need offices. Jeff, let His Honor code a bit.

Varnished WordPress

As this blog comes closer to the 10th year anniversary, my blogging software choices continue to change. So far the path has been: Livejournal -> Movable Type -> WordPress -> Drupal 5 -> Pressflow Drupal 6. Since I had some time on my hands lately, as an exercise, I decided to upgrade to Drupal 7, but after a few hours gave up in complete disgust. Drupal community is very proud for keeping its technical debt very low, but they rarely talk about who pays it.

It turned out to be quicker to export everything to the latest version of WordPress. I still like Drupal, but latest WordPress has some really nice features. I also took the time to install Varnish and trick out my sites with reasonably advanced caching via Memcached and APC. I also switched to Percona MySQL just for kicks.

Webmaster Tools Crawl stats

I’m still working on theming the blog, and tweaking, so things will break from time to time.

Catching the Vintage Train

New York Transit Museum operates a special subway train made out of a ragtag selection of vintage trains.  Normally these trains are used as a stationary exhibit, sometimes as a vehicle for special events (like the Old City Hall station tour), but sometimes all straphangers are in for a treat: the train operates on normal subway lines.

Most people view subway trains as uniform utilitarian objects, stainless steel worms that swallow them in point A and if everything goes well spit them out in point B. But in reality the modern NYCTA system is made out of a hodgepodge of different train models, a legacy of three different subway systems. Many old train models have been retired, like the beloved “Redbird” trains. And by retired I mean dumped into the ocean to become artificial reefs in NJ. I remember riding redbirds, and sometimes used to encounter other old trains before they have been scrapped in favor of the more technologically advanced, but poorly designed R160-style trains. The museum train is a special case of this.

The rivets and a mishmash of large windows and steel panels give the old R1 cars look of living prehistoric creatures. Graffiti writers of the 70s hated these cars because they did not have a lot of flat surface to cover in paint and called them “ridgys”. Modern train cars mostly do away with the front windows, cutting off the whole front for a spacious machinist’s cab.

This unfortunate design decision leaves less space for passenger and does not allow kids of all ages to get “machinist’s view”.

 

These trains don’t sound like the new ones: they don’t make the “ding-dong” sound when the doors are closing, but produce a pleasant “ksssht-pfft” noise of a pneumatic actuator. Instead of whining a few melodic notes like the R160s, R1s roar like propeller planes.


One unique feature is the lack of large plastic American flag stickers that were added to all trains after 9-11.

Helvetica was not dominating the typography of the subways yet. In fact, it was not yet created.

The alternate reality feeling permeates the cars. Dangerous looking ceiling fans, exposed incandescent lightbulbs and vinyl seats were from an era less concerned with vandalism.

State of the art pre-war climate control: rider-accessible vents

and futuristic fans

 

The tiny little rattan seat behind the machinist’s cab and the completely different design of the hand strap.

One of the biggest difference with the modern trains is how the conductor works. He operates the train with the two hand grips while standing precariously between the cars.

 

Here’s a video that shows this a little better

One of the coolest parts is the fact that you can ride between the cars (something that is against the modern MTA rules. “<a href=”http://www.deadprogrammer.com/looking-at-the-things-flashing-by/”>Looking at the things flashing by</a>” normally gets you a ticket, even if it’s an amazing experience.

 

Here’s a video:

Gold and pinstripe “CITY OF NEW YORK” signs are gorgeous, but the ad reproductions are more entertaining than authentic.

A friend of mine who remembered these trains from his youth told me that the part that he hated the most about them were the rattan seats: they tended to fray and fragment into pin-sharp pieces of fiber. Rattan seats look beautiful and are extremely comfortable when new, but I indeed sat down on one seat that had a broken section that was uncomfortably sharp. On the other hand all of these trains feature “conversation-style seats” turned 90 degrees to each other instead of the horisontal rows of benches that are the standard today.

Some dubious advice, although I’ve seen this happen.

I’m pretty sure this patent ran out by now.

Currently this train operates every Saturday through January 19th. This page lists the schedule of departures. A round trip to Queens takes about an hour. The best way to catch the train is to arrive on 2nd Avenue stop of the F line in Manhattan. The train spends about 10-20 minutes standing in the station there, so it’s easier to catch. In Queens it does not stand on the platform, but the departure times are pretty accurate. If it’s more convenient, you can just spend a 15 mintues to half an hour waiting along the weekday M train stops, like 47-50th Street/Rockefeller Center.

Apple Store at Night

The Apple store is eerily empty at night. It’s only populated by reflections from the other side of the street.

apple-store-reflections

A typical Mac user is camping out even though there is no special event tomorrow.

typical-mac-user

How To Speed Up the Web (And Gain A little Privacy)

Let’s face it: Facebook “like buttons” are dragging the pageload speeds down. They are just the pits, and they are slow mostly because the Great Zuck want to know what you are up to. Screw that – install WidgetBlock for Chrome, your pages will load faster, your browser will crash less, and Zuck will know less about you.

This has been a public service announcement. Also, don’t forget to back up – hard drives only live for a few years.

[update] I seem to be singling out Facebook buttons. And I do – they are the worst offenders in terms of performance. On the other hand Widgetblock works for all kinds of widgets.

Love,
Deadprogrammer

On the Importance of Lube

As a response to meaningless discussions about microformats, standards, widgets and other unimportant web gunk I wrote an article Deadprogrammer’s Hierarchy of Web Needs. The gist of that post is that what matters the most is text and images, and that the importance of everything else above it falls in geometric progression. Things high on the pyramid get too much consideration.

There is one modifier that does not fit on the pyramid: lubrication. You see, there’s a lot of friction associated with putting content online. It’s a major limiting factor to the growth of the internet. Those who focus on the base of the pyramid and apply enough lube succeed.

Twitter succeeded because it is the ultimate lube, the equivalent of a major dose of oil-based laxative. It lets you put little pooplets of thought at the speed of diarrhea. Text alone is enough – it’s the very base of the pyramid. Because of that people forgive Twitter the url shortening pandemic – the very thing that is poisoning the exchange of links, the terrible handling of images, and the procrustean shortening of the information that you can share.

My ideal twitter feed is kind of like now defunct memepool.com, but with inline images. I want good copy, I want good images and I want good links (and not the terrible shortened crap – this is not what hypertext is about).

Besides lube, there is stuff that seems like a good idea, but is actually adding friction. The days of black backgrounds and blinking text are behind us, but the new enemies of eyeballs are more subtle. Hashmarks in Twitter are terrible. I can’t read shit like “ugh, bad #weather in #hoboken #today #firstworldproblems”. Another thing that acts as sand in my eyes is “winerlinks“. They are little hashmarks that let you link to every paragraph in the story (which is a great idea), but at the same time they look like a bunch of bedbugs and scrape your eye with every saccade.

The year is 2011 and we are walking with supercomputers attached to digital cameras more powerful than the ones that went into space probes. Yet sharing an image is still a huge pain in the ass. It just takes too many steps. Iphone apps do it relatively well, even if too many people mangle their perfectly good pictures with a totally un-fun “a fun & quirky way to share your life with friends through a series of pictures” (whatever that means).

Here’s Vannevar Bush talking about “memex trails” in “As We May Think“:

“The owner of the memex, let us say, is interested in the origin and properties of the bow and arrow. Specifically he is studying why the short Turkish bow was apparently superior to the English long bow in the skirmishes of the Crusades. He has dozens of possibly pertinent books and articles in his memex. First he runs through an encyclopedia, finds an interesting but sketchy article, leaves it projected. Next, in a history, he finds another pertinent item, and ties the two together. Thus he goes, building a trail of many items. Occasionally he inserts a comment of his own, either linking it into the main trail or joining it by a side trail to a particular item. When it becomes evident that the elastic properties of available materials had a great deal to do with the bow, he branches off on a side trail which takes him through textbooks on elasticity and tables of physical constants. He inserts a page of longhand analysis of his own. Thus he builds a trail of his interest through the maze of materials available to him.

And his trails do not fade. Several years later, his talk with a friend turns to the queer ways in which a people resist innovations, even of vital interest. He has an example, in the fact that the outraged Europeans still failed to adopt the Turkish bow. In fact he has a trail on it. A touch brings up the code book. Tapping a few keys projects the head of the trail. A lever runs through it at will, stopping at interesting items, going off on side excursions. It is an interesting trail, pertinent to the discussion. So he sets a reproducer in action, photographs the whole trail out, and passes it to his friend for insertion in his own memex, there to be linked into the more general trail.”

Stinging together these trails is still too cumbersome. Have you ever tried to post a picture of two items (what JWZ calls “ exhibit A, exibit B” (this particular link leads to a collection that is totally worth your time)? What if there are no pictures of these items on the internet and you have to scan or photograph it, upload it, crop it, post it? And what if like Vannevar Bush’s bow and arrow researcher you’d like to add a comment in longhand, your own handwriting. Or how about a little hand-drawn diagram? This simple task will likely take at least half an hour.

But enough bellyaching. It’s 2011, and the flying cars are almost here. There’s Skitch and Evernote (Phil Libin seems to be making the dream of Memex a reality in a less lame way than anyone else). And as an alternative to Twitter there is Google+ – I can drag an image from Skitch into a text area and it automatically uploads! When they’ll open up the API doing A/B posts will become finally possible there. Please, please leave the suffocating, hashtag strewn stinkhole that Twitter became. Join Google+. I’ll be hanging out there.