Author Archives: sgamon

Women in tech, Pony Express riders, and me

Back in 1999, Steve McConnell wrote After the Gold Rush which explained that tech companies want to hire “Pony Express Riders” – young, single men who like to work hard and play hard.

Sadly, I entered the profession after my Pony Express years. I was married, with a child. Sleeping under my desk was not an option. I was jealous of colleagues who could spend nights and weekends heads-down in code.

I did okay. Don’t cry for me, Argentina.

But now, many years later, we have the women-in-tech crisis.

Keep in mind, writing about women in tech is officially dangerous for a white man like me. Be gentle. As Charles Barkley says, we can’t have a conversation if one side is automatically wrong.

A (female) colleague recently pointed me to this article. Good read.

There is a famous (though I cannot find it on google at this moment) post from a male programmer who felt dis-enfranchised due to his tea-totaling.

My add:

Males in their 20s, including programmers, like to engage in what Festivus refers to as “feats of strength.” For programmers, this includes staying up all night, drinking recklessly with colleagues, and fixing more bugs than anyone could reasonably expect in a 24-hour period.

I’m guessing that some of these feats are not appealing to female programmers.

And yet, they are mostly appealing to management.

Programmers who stay up all night, intermittently working? Awesome! Heroic bug closure rate? Awesome! Alcoholism? Collateral damage.

I imagine that many female programmers do not want to be Pony Express riders. Neither do i! I want to work hard, and professionally, for my scheduled hours. And then I want to go home. Where I will sometimes do more work. And sometimes work on a side project. And sometimes chill with my family.

So… for the last 20 years, I have worked hard to carve out work environments that are convivial to me. Selfishly. The way Capitalism is supposed to work. And… they just so happen to be convivial to female programmers.

But…

Pony Express riders exist. The get hired. You can’t wish them away. If 2 or more of them team up, you’ve got a culture. Or, at least, a clique.

Management will always love love them. But the Pony Express is not sustainable. The historical Pony Express collapsed after 2 years.

If you are not a Pony Express employee, seek companies that have been alive for more than 2 years, that have well-renowned word/life balance policies.

Above all, take advantage of the market inefficiencies. There are too-few programmers for the current marketplace. Make your choice count.

 

So we bought an electic car…

To be precise, a 2013 Nissan LEAF SV. Well-appointed. Fun to drive. Woot!

TL;DR

I am very happy with the purchase. But I’d hesitate to recommend it to anyone else.

“The Space” – LEAF and Volt

We are not talking hybrids here. The LEAF is fully-electric. No gas. Ever.

The electronic vehicle (EV) space is small. BMW makes one, but it sells in really small quantities. Tesla makes some, and sells them as fast as they can build them, but they are really expensive. Smart Cars are silly looking. That leaves the Chevy Volt and Nissan LEAF as the EVs that normal people might buy. For the sake of this post, assume I am talking about a LEAF or Volt.

Range

There are two inconvenient truths about EVs. Range is the first. Early LEAFs had a range of 50 miles. Later models, including mine, can range up to 80 miles. Of course, I’d allow a 20% reserve to account for hills, air-conditioning, and turbo boost. If you can live within that range envelope, EVs are a great buy. More on that below.

Charging

The second inconvenient truth. It takes 12 hours to fully recharge my LEAF. That is using a standard home electrical outlet. I could charge 4X faster with a higher voltage/wattage outlet. It will cost not less than $2000 to install such an outlet.

Related – there are surprisingly few public charge stations in america. If you travel to the suburbs (or worse) the pickings are slim. And, no matter where, you will be fighting for charge-station access with other EV owners.

Truth be told, there are just enough EVs out there to saturate the public charge stations, and make life crummy if you need a charge.

Price

This is a good news, bad news story. Resale value is terrible. How terrible? My 2-year-old, well-appointed EV, with 13K miles, cost me just under $13,000. Original sticker price? $35k.

So, if you buy slightly used, you get a great looking/feeling/driving car for super-cheap. Just don’t expect to flip it later for anywhere near what you paid. This is a buy-and-hold car.

Look – you cannot routinely expect to buy recent, lightly-used cars for 1/3 the sticker price. We are living in crazy times. Over the next 18 months, Nissan and Chevy will reduce the supply, maybe the charging-station network will build out a bit, and re-sale values will float up. If you want a great, new-ish, cheap car – buy an EV right now!

Our Situation

We had 2 cars and 3 drivers. We needed one more car, to drive around town for shopping, errands, kids, etc. The two gas-powered cars are fine for longer-range journeys. We did not want to take on car payments, or break the bank for a 3rd car. Price was super-important.

My job is 10 miles away. So I could, in theory, commute in an electric car.

Ergo, I believe that we are the perfect target market for an EV.

The EV Market

My guesses:

  • Chevy and Nissan built too-many EVs, expecting to ride Tesla’s coattails. But Tesla’s range is 3X LEAF and VOLT.
  • Lots of people who would otherwise be happy with an affordable EV discover that they cannot live within the current range envelope.
  • Resale value: explained.
  • The next-gen of EVs, rumored to appear in 2017, will have a range of 150 miles.
  • 150 is the original range of the Tesla. and not by accident! That range gives most drivers the freedom they want.
  • Most people. I think, routinely tolerate car trips of up to 90 minutes. Allowing for traffic that equates to 60 miles. Well within 150 miles roundtrip. I think 150 is the sweet spot for EVs.

 

Epilogue

I joked with the family that, at these prices, I should buy 2 more and stash them in the side yard for later. Alas, the batteries are an expiring asset. :-)

 

Z-index does not work like you think it does

When you start out in front-end development, you quickly discover z-index. Your intuitive understanding of it will be something like this:

  1. All elements have a default z-index of zero.
  2. Therefore, if I assign a higher number to a specific element, my element can “float” above the others.

This is true surprisingly often – like Newtonian physics. But it’s not the whole story.

The whole story involves stacking context. A woolly subject that you can dive into here.

Or, you can wait until you have z-index problems, then dive in. 😉

Just remember, z-index is more complex than it looks.

 

Dolph Lundgren, my hero

I loved the action movie movement of the 1980s. Long after the genre had shuffled off to direct-to-video and VOD, I continued to support it with my viewing habits and ticket dollars.

Among the Action Heros, Dolph Lundgren grew to be a favorite. Not right away, of course. Back then it was Sly and Arnold, then Van Damme and Segal. Lundgren, let’s face it, is a very limited actor.

But, as the decades passed, it became impossible to ignore the fact that Dolph Lundgren kept himself in great shape. That, in itself, became a super-power. Also, I think, a pathology.

Then, more recently, I noticed that Lundgren was making his own films. I respect that. It’s not easy.

And then, yesterday, I read this interview.

Amazing. I could pull a dozen quotes from it. But I won’t. Suffice it to say, Dolph Lundgren clarified (and simplified) a lot of stuff for me.

And please, don’t think that I am equating Lundgren to me. It’s way more complicated than that. My father, for example, never laid a glove on me.

But I have a huge respect for Dolph Lundgren now.

IE’s automatic Compatibility Mode

The other day, we had a mystery: Some javascript code that has worked on production for a while now stopped working in IE9. The error console complained that the forEach() method did not exist on an array. And yet, IE9 has always supported Array.forEach(). WTF?

We re-wrote that code with regular for loops, and moved on. But today, we saw weird layout problems in IE9. Fiddling around, by accident, I discovered that the pages were rendering in IE7 mode! Off to Google:

It seems that Microsoft “helpfully” renders pages in compatibility mode (IE7) if it thinks the site is in the intranet zone. I don’t know how it decides that a page is in the intranet zone. You can override this behavior in the settings, on an individual basis.

Luckily, there is a special meta tag that IE looks for, and changes the rendering engine accordingly:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

Alternately, you can send a header that does the same thing.

Note that this only applies to a true IE9 install. If you emulate IE9 using IE10 or 11, you will not see the automatic application of compatibility mode. As you can imagine, this only added to the mystery, because I was unable to reproduce the bugs on my laptop. It was only with a borrowed laptop that I discovered IE7 mode.

 

Car Wars as connective tissue

Review, if you will, this wonderful Car Wars retrospective. In the early 80’s it didn’t matter if you spent most weekends on the East Front or the 6th Level of Foozle’s Lair, you occasionally played Car Wars. It was the connective tissue that bound all gamers together. I recall, simultaneously:

  1. never taking this game seriously
  2. buying a bunch of supplements
  3. some great sessions!

Actually, one of the wonderful things about this game is that nobody every got mad. Losing is a high-EQ ability, not commonly found in teenage boys. But all I recall from Car Wars is laughter. No one ever took it seriously enough to get uptight.

 

 

Reduce Friction to Win

14925705107_3ac2376a63_z

Here’s another lesson from basketball, that applies to business (and life). Winning emerges from harmony. That means that high-EI people, who actually try to get along with one another, are critical to any team (or organization).

A post on Bruin Nation, reflecting on the career of coach Larry Brown, says:

I would also point to his ability to reduce the inherent friction between individuals in a team game.  Phil Jackson was a coach who had great insight into how to do this. When constructing a team he would find veterans who could fill certain roles on the team that would not conflict with the stars.  Younger players wanting to prove themselves and  playing for big contracts would– even though more talented than role-player veterans–take shots and touches from the more talented stars, hence leading to a less efficient team.

And I think Brown has those same type of friction-reducing skills.

A day earlier, Ailene Voisin published a column about internal discord in the Sacramento Kings front office. Coach George Karl said:

I think organizations are a little bit like basketball teams,” he said. “They have to play together, work together. Where the responsibilities fall, what the opinions are, behind closed doors we’re allowed to have fights, heated discussions. But Bill Walsh told me when I first started coaching that “‘organizations that aren’t together don’t win.”

And before last night’s Warriors game, coach Steve Kerr said:

I think comedy plays a huge role in sports. You have to have guys who are funny, who keep the locker room loose.

Yes, the universe is sending me a message. I get it.

The photo, “WD-40” is copyright (c) 2014 by Mike Mozart and made available under a Attribution 2.0 license.

Add swap to your Digital Ocean Droplet

I have one of the small droplets on Digital Ocean, which works fine for serving web sites. And also learning about linux.

It turns out that linux does not automatically come with swap space. That’s obviously in keeping with the unix philosophy of:

  1. doing the minimum
  2. assumes you know what you are doing

It is easy enough to set up a swapfile. Instructions vary slightly based on your linux flavor. For example, I run centos 6, so these instructions work for me. Google as needed.

After setting up a swapfile, npm installs work flawlessly. Highly recommended.

Translate placeholders with Google Translate widget

The Google Translate widget does not translate placeholder text in form fields. A regrettable oversight. This code corrects that.

Re-setting the mysql root password

DB corruption, or hacking? Either way, I’ve had my WordPress DB wedged twice in the last 3 years.The solution is to reset the root password. Instructions are here, but repeated below:

/etc/init.d/mysqld stop
mysqld_safe --skip-grant-tables &
mysql -u root
use mysql;
update user set password=PASSWORD("mynewpassword") where User='root';
flush privileges;
quit
/etc/init.d/mysql stop
/etc/init.d/mysql start