deirdre: (Default)

In 2004-2005, I worked for Quova as a Network Geography Analyst.

As a practical matter, given that MLB was one of our largest customers at the time, this meant that we fielded complaints for people who were locked out of viewing baseball games where they should not have been, and a good chunk of my job was investigating those complaints.

This is intended for a mixed-level audience, so I’m going to skip deep nuance and detail.

Simple Explanation

  1. When you connect to the internet, whether through cable, your cell phone, whatever, you’re assigned an IP address, where IP stands for Internet Protocol. At the point in time you connect, your IP address has a fixed location in physical space: wherever you happen to be.
  2. Your device connects to another, upstream device, and depending upon where you want to go, it connects to a series of other devices until it arrives at your intended destination (say, Google’s web server). Each of those devices has an IP address, and each of those IP addresses has a fixed location in physical space.

  3. If you ask for a traceroute from a command line, it’ll tell you what series of hops it goes through to get from point A (you) to point B (where you want to go).

    $ traceroute 8.8.8.8
    traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 52 byte packets

    1. 10.0.1.1 (10.0.1.1) 10.938 ms 1.183 ms 1.032 ms
    2. 198.144.195.185 (198.144.195.185) 51.874 ms 52.194 ms 51.948 ms
    3. ge1-8.rawbw-demarc.sfo4.reliablehosting.com (216.131.94.209) 61.865 ms 57.246 ms 64.077 ms
    4. core2-1-1-0.pao.net.google.com (198.32.176.31) 52.671 ms 51.958 ms 55.120 ms
    5. 64.233.175.169 (64.233.175.169) 56.400 ms
      64.233.175.171 (64.233.175.171) 54.772 ms
      72.14.236.114 (72.14.236.114) 54.420 ms
    6. google-public-dns-a.google.com (8.8.8.8) 54.663 ms 54.480 ms 94.454 ms

    The first is my internal IP address. The second is our gateway address. The third is our provider’s demarc with their upstream. The fourth is where it enters Google’s servers.

  4. Network administrators, to make their lives easier, often label those intermediary hops with names. This is not required. Often those names have geocoding information. These are often names of cities, airport codes, weather station codes, neighborhood names, apartment complex names—all kinds of things. In core2-1-1-0.pao.net.google.com, “pao” is Palo Alto, California, which has an airport IATA code of PAO.

  5. If you’re very lucky, you will have a traceroute that shows very little router delay (like one hop in my example above). Then you can use actual physics to tell you where it must be in relation to the adjacent hop.

    Light (and electricity) travels 300,000 km/sec, or 186,000 miles/sec. Per millisecond, 300 km or 186 miles. It’s easier to multiply by 300 than 186 in my head, so I’ve typically stayed metric at this point, but I’ll give both. Besides, it just sounds cool to drop millilightseconds in a conversation.

    See that last hop? 54.420 -> 54.480 (using minimum to minimum)? That’s 6 hundredths of a millisecond, meaning the laws of physics say the packet traveled a maximum of 18 km or 11.2 miles.

    Except traceroute measures time there and back, so the real numbers are 9 km or 5.6 miles.

    Is it in Palo Alto? The end location is 1.808 ms from the stated Palo Alto location, which means it’s at most 262.35 km or 168.25 miles from Palo Alto. So almost certainly SF Bay Metro with some lag. This is where repetitive traceroutes at different times from different locations would be helpful. (I’d expect the location to be Mountain View, California, which is the city south of Palo Alto, and also Google’s HQ.)

That’s the Basics. Really.

So the real trick to geolocation is to have as many knowns as possible. This means having server space on fast networks around the world, being able to triangulate in on locations of interest, and getting different results over time.

You can read more about using millilightseconds in this humorous story of network diagnosis.

This four-part series about traceroute is quite good, and covers some of the wrinkles.

My Own Little Experience

I mentioned this on Twitter at the time it happened.

blog-hack-attempt

There are some interesting nuances here:

  1. I don’t have a user called admin, but that’s the default super user in WordPress.
  2. If you do a whois on that IP address, you’ll note it’s assigned to T-Mobile:

    NetRange: 172.32.0.0 – 172.63.255.255
    CIDR: 172.32.0.0/11
    NetName: TMO9
    […]
    Organization: T-Mobile USA, Inc. (TMOBI)

    Real hackers trying to crack into your web site will not be using mobile as a rule. This was personal, not a doorknocker.

  3. At the time, it showed up as being in LA. Once you get a dynamically-assigned IP address, such as a mobile address, to a metro area, there’s no guarantee you’ll get closer than that.

  4. I note that this screenshot shows 1) T-Mo; 2) LA, and my breakin attempt was a couple of hours after this was posted. Obviously, no proof, yada yada. Just: correlation.

Update to this section, May 2015: It turns out, and I’m thankful for this, that there is a far more ordinary explanation for what happened. I can’t prove it’s what happened in December, but it did happen last week. In January 2014, Rick and I were traveling and would be in some of the remotest parts of the world (in fact, we spent three days out of satellite range of Internet, believe it or not). I gave admin credentials to a friend who lives in the LA area to blogsit and make sure any security updates got applied while we were gone. It turns out that, since saving that password, she’d switched her mobile device from Verizon to T-Mobile, and I’d since changed the admin username. She doesn’t use mobile data much, so it didn’t try to access my site for a long time (or frequently). And there you are.

My apologies to Jaid Black for the insinuation.

Also, a better security method for dealing with this issue is to make a second admin user. Doh.

Quick Geolocation for Mere Mortals

Use the GeoIP Tool website.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

Molly Holzschlag

Molly Holzschlag has been one of the premier people helping define the web over quite a few years. I was honored to be an attendee at a workshop she (and a few others) led at Foothill College in 2005, which led to my really learning web standards, which later led to my job on the Safari team.

So I feel like I owe her a lot.

The tl;dr version is: cancer sucks and, as a side effect of chemo, she now has another life-threatening illness, and she’s going to need a metric ton of money.

If you have any, she’s a worthy person to throw it at.

I snagged the following from her gofundme page, which has a lot more details about her situation:

Some of her numerous accomplishments include:

  • Authoring more than 35 books on web design, CSS, accessibility, and more;
  • Speaking at more than 60 different industry events for web professionals in over 15 countries; Molly is a GREAT teacher!
  • Leading the Web Standards Project (WaSP), which pioneered awareness of the W3C standards and brought browser makers into alignment on following those standards;
  • Actively participating in the W3C HTML and CSS Working Groups as an invited expert, and chairing its Accessibility Community Group.
  • Forging the way for today’s bloggers at molly.com;
  • Being voted one of the Top 25 Most Influential Women on the Web by the San Francisco Women of the Web;
  • Embracing the opportunity to be a leader, role model, and teacher to other female technology professionals;
  • Passionately advocating for a free, inclusive, and accessible Web.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

Apple Store Stairs-colorefex-700

Chuq von Rospach has an interesting post about the leaked MBA rumors. I’ll address this in a bit.

Additionally, someone (sorry, can’t find a link to it right now) suggested I try a 13″ Retina MacBook Pro and use it in the scaled mode to get my current resolution.

First, Someone Thought I Was Trolling When I Mentioned a Thunderbolt RAID Array on a MacBook Air

Nope, not trolling. Really have one.

(Note to self: dust the Dyson fan off before taking a pic.)

2015-01-16 06.01.00 copy

Think about it: It’s a great thing to back up to. I can wander around and use my MBA anywhere, then, when I’m ready to be at home base, I plug in the RAID array and back up.

I also use a separate Thunderbolt drive for graphics storage. This 2 Tb drive holds my photo library (~1/2Tb), my graphics library (~1/2 Tb), and larger items out of my iTunes library (e.g., movies and TV seasons).

When I just go out with my MBA, I can’t do heavy graphics work, but I still have Photoshop and my fonts. I keep current graphics projects in a directory on my MBA. When I’m done with those, they get shuffled off to a directory on the smaller Thunderbolt drive, and the changes get reflected in my RAID backup.

Chuq Asks an Interesting Question

By the way, are we really sure that’s a USB hub? Maybe Apple’s going to announce a new, thin format thunderbolt port standard instead that would allow for a smaller, thinner connector to allow for a smaller, thinner computer?

That would change everything for me.

Granted, I still think not having MagSafe power’s a problem. Chuq has some interesting commentary. Link again.

13″ Retina MBP Running at 1440×900

That’s a really great idea. It would allow me to keep the form factor I really like, but would also allow me to upgrade to 16Gb RAM and 1TB flash drive. That would solve some problems. In short, it’d be HUGE.

2.8/16/512 is $1999, a pleasant $250 more than the 13″ similarly-configured (save for CPU clock speed) of the MBA.

Sadly, I can’t figure out where this suggestion was made, possibly because I’m bleary-eyed at this hour.

Photo credit: © 2010 Rick Moen.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

IMG_9915

I’m selling my first gen iPod Nano, which is a white 4G model in an adorable kitty case. It’s been in the case the whole time I’ve owned it, so it should be in great shape.

But why would you want it without the case?

$50 opening bid, or $79 buy-it-now, which is (amazingly) an estimated $20 under the typical going price.

Shipping is free in the US and I’ll ship to most countries, though there’s no way to exclude only the problem ones. Sigh.

Here’s the eBay auction.

If this one’s not your cuppa, I’ll probably be listing other iPods later, but I only have this one with the kitty case.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

Apple Store Stairs-colorefex-700

First, I want to say this: though I worked at Apple to September 2013, I have no actual knowledge of Apple’s future hardware plans. So, on the off chance that I happened to sign an NDA relating to the device I’m commenting about, I honestly didn’t know that that was the case. I believe every hardware NDA I signed was for a product that’s already shipped.

9to5mac posted this mockup of a purported future 12″ MacBook Air.

In short, I hated it.

In 2013, I switched from a 15″ MacBook Pro—I’d had several over the years—to a 13″ MacBook Air. I did it after Rick made the same move, and for the same reason: believe it or not, it’s actually faster on day-to-day activities, despite the slower CPU.

It’s also cheaper.

So what’s in the new report that I hate so much?

  • No Thunderbolt. I rely on Thunderbolt RAID for backup. That RAID array is Thunderbolt only. I also rely in an external 2TB hard drive I use just for graphics library (and Aperture) storage.
    Look, I love Thunderbolt. I’ve invested heavily in it. If Apple’s dumping it on my preferred laptop model three years in, I’m pissed.
    I don’t use Thunderbolt for displays, and I understand USB-C can drive displays. Thunderbolt is still a better, faster technology. By all means, replace the existing USB connectors with USB-C. That makes sense.
  • No MagSafe Connector. It’s proposing to use power through a single USB connector. John Gruber talks about why that’s a mistake.

    As enumerated earlier, I have numerous questions regarding Mark Gurman’s report that the upcoming next-generation MacBook Air does away with all ports other than two: a USB Type-C and a headphone jack.
    But one that I keep thinking about is MagSafe. I can definitely see getting rid of classic USB — it’s old and thick. Thunderbolt, sort of. But MagSafe? When Apple announced MagSafe back in 2006, I knew they were solving a real problem, not an imaginary marketing problem. Tripping over power cables and yanking laptops off tables and onto floors was a real issue. I had an iBook way back when that ultimately died after one such incident too many. If anything, Apple has made MagSafe 2 even easier to pull apart, not harder. Switching to USB Type-C seems like it would take us all the way back to days when tripping over the charging cable would take your laptop along for the ride.

  • Keyboard squeeze. I don’t think I’ll like this. If anything, the 13″‘s keyboard is already too narrow.
  • Elimination of physical key feedback. That’s a big nope from me. If that’s the way Apple’s headed for all keyboards, I’m going to have to look to Microsoft as my preferred keyboard vendor. That’s a painful thing to say.

  • Elimination of the SD Card slot. I love that I don’t have to keep track of some small doodad, and I can just pack my laptop, my cameras, my iPad/Phone, a power cord and a lightning cable when I travel. It’s one more thing I have to track, and I’d really miss this.

In short, this looks like a light-use computer for people who either a) don’t use computers or b) use another computer as their primary computer. I’m one of those people who uses a MacBook Air as my sole computer, and that’s the way I’d like to keep it.

So Why Not Go to a 13″ MacBook Pro?

13″ MacBook Air tricked out with 8G (max) memory and 512G (max) Flash & 1.7 GHz CPU: $1,749 (before other things like AppleCare and any accessories).

Here’s the thing: a 13″ MacBook Pro does not have the same amount of area on the screen. So, in order to get the same effective 1440×900 resolution, I’d have to go back to a 15″ MBP. Further, I can’t go with an 8GB and have the same effective memory because retina uses more memory.

15″ MacBook Pro with 16G (only) memory, 512G (min) Flash & 2.5 GHz (min) CPU: $2,499. I could argue that, for a true replacement, it’d also have to bump up another $500 for the 1TB flash because, again, the retina machine will use more memory for things like swap, so the real price is $2,999.

Twelve hundred bucks is a lot of difference for better external drive support and a better power cable.

Update: more thoughts in this post.

Photo credit: Rick Moen.

Originally published at deirdre.net. You can comment here or there.

Geek Humor

Nov. 6th, 2014 08:25 am
deirdre: (Default)

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

A spam comment caught by Akismet:

If the previous game is too adventurous for you, simply try flapping a blanket in the air above your ferret as if you were fluttering a bed sheet over a mattress.

You don’t say.

This particular spam comment ended with:

…and ferrets love to cuddle.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

Elizabeth Spiers’s article about the magazine and its founder Shanley Kane has a great quote relevant to the art vs. artist debate of yore:

But important work gets done every day by flawed people, sometimes even by assholes. No one should be more aware of that than people who work in the tech industry, where many of the vaunted innovators and revolutionaries were not warm, fuzzy people. Ultimately, they’re judged by their work.

If you’re in tech—or interested in tech or diversity issues in tech—Model View Culture is a superb magazine that has no analog.

  1. It talks about how perks can divide people. Been there, done that. Especially when you’re at some doughnut event and they’ve forgotten to cater to the vegan and the celiac. Again.
  2. It talks about acquaintance rape by a coworker.

  3. It has great pieces like this one by Rachel Chalmers on why not to raise venture capital.

Going Beyond Assholes

When I made the Traitor to the Mens t-shirts, I got a note about American Apparel. I’d known about the sexist advertising, but not about how awful the CEO was (he’s still awful, he’s just gotten resigned). Their shirts being produced in the US was important to me for various reasons, including knowing that labor standards and business practices were, at least in theory, up to US standards.

This human slavery story comes out of Thailand’s shrimp industry.

And this story about Scientology’s drydock bill also has, at its heart, human slavery. In short, Curaçao’s drydock was using slave labor from Cuba, people Cuba sent over to do work to pay down Cuba’s drydock bill. They worked under horrific conditions. (The electrocution story reminds me of the tale of Kendrick Moxon, one of Scientology’s attorneys, and his Sea Org daughter who died of electrocution.)

One of my concerns is knowing that I’m doing less harm, and that means knowing more about where things come from and how they’re produced/delivered. And sometimes, there’s a bunch of crappy choices.

You might think that t-shirt made in Nicaragua or Honduras is better because it’s not made by American Apparel.

You know what? Nicaragua has an appalling lack of infrastructure. Many Nicaraguans work part of the year in Costa Rica due to lack of opportunity. As our tour guide said:

We cannot even bag plantains.

So imagine, if you will, given that they don’t have the factory capability to bag plantains, how it is that they’re able to make t-shirts for shirt.woot (among others) but can’t even bag plantains, one of their major crops.

Nicaragua’s the only country I’ve been to where the TV’s world weather pointedly excludes the US and Canada from its list of world cities. They are angry with us and, frankly, they have good reason to be.

It’s not that I don’t want to do business with Nicaragua. To the contrary. I’ve been there twice (short trips, granted). It’s just that, given what I know, I don’t inherently trust that any business has manufacturing in Nicaragua has Nicaraguan infrastructure interests as a design goal.

As Rick has pointed out more than once, “How do you know the company you’re not boycotting isn’t worse?”

Like, you know, Nestlé, and its chairman, Peter Brabeck-Letmathe, who doesn’t believe human beings have a right to water. Corporations buying up water rights in poor countries is an enormous global human rights issue.

Here, have a list of Nestlé brands for your boycott needs. I’m happy to say that none of my regular brands are on that list. \o/

Sometimes, I think we lose sight of the bigger picture because some bad things in front of us seem like the “worst thing ever.” They’re bad, but there are worse things, and I think we need to keep perspective on that.

The Response on the Delany/NAMBLA Stuff Wasn’t What I Expected

No comments on my post, and few on Will’s. None on the LJ repost. None on Tumblr.

Apart from a few people, mostly not in sf/f, being horrified, mostly on facebook.

I get this tweet:

http://twitter.com/ann_somerville/status/487739627474673664

…which leads to a long conversation ending in…

http://twitter.com/ann_somerville/status/487804050583191552

Hobby. Horse.

Let me pull a quote out from Samuel Delany’s writing about sex with children:

Finally a composite score is reached, and the “seriousness” of the infraction judged accordingly. The consent of a seven-, eight-, or nine-year old is not the same thing as the consent of a seventeen- or eighteen-year old. And the “consent” of a three, four, and five year old means much less—especially if it’s negative. But it must count for something, otherwise you are just saying the child is not human and has no feelings or agency whatsoever—which, in itself, is abusive and counter-intuitive. And, I would maintain, immoral when another possibility presents itself.

Delany’s commented on Will’s post. He stands by what he wrote.

Is that really okay with everyone?

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

I’ve had a blog for 10 years, but I’ve been irregular for periods about posting to it before WordPress had a good spam solution. These days, an average day for me is between 100 and 250 page views and between 70 and 150 unique visitors. Obviously, this excludes people who turn off tracking.

For reasons related to upcoming projects, I’d moved deirdre.net to WP Engine. I’m so glad I did, because they were able to handle the massive sudden spike.

site-stats-mzb

At the peak, in a 24-hour period from June 10-11, I had 28,000 page views, almost entirely unique visitors.

If you need a really great hosting platform for your self-hosted WordPress blog, I’ve been really impressed with WP Engine.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

Note: this is part of a much longer piece I’m writing, which I’ll announce later. I thought you’d enjoy this first draft excerpt.

I took my first programming class in the summer of 1975; I was 15 when I started. The programming lab was in the math and science building of Saddleback College. Back in those days, they had a Data General Nova 3 minicomputer with 64K of core memory (not RAM) and 64K of floating point core. Now, those of you who’ve never seen core memory, each bit is a magnet on a larger lattice framework and 64k of core took up a significant amount of space, though what we had, both floating point and regular memory, probably fit into less space than that photo I linked to.

Saddleback’s Nova did have a hard drive that was about the size of a washing machine, with one fixed platter set and one removable one. I don’t remember exactly how much drive space it had, but let’s just say it was a handful of megabytes.

I grew fascinated with the computer lab. The smell of the oil on the paper tape drives, the sound of the hard drives seeking, the gentle clicking of other switches and relays, the drama when the multiplexer melted over 4th of July weekend. I loved every bit of it.

My dad had said, “You like puzzles, you’re good at math. You’d be great at this, and you might actually enjoy it.” Back then, programming wasn’t a big industry, so he didn’t actually expect it to be a field I’d really go into. It was more one of those parental “hey, check it out” things.

At the time, I was extremely shy, and screwing up in front of other people, or where other people could watch, was my least favorite thing ever.

So, even though I considered it impersonal, that was precisely why programming worked for me. If I couldn’t figure something out right away, the computer would tell me I was wrong and I’d suffer in silence. I’d work at different approaches to the problem until I understood it well enough that I’d have the solution worked out.

Because of my immersion into computers and programming, when there was an opening for a lab assistant the next term, I was offered the position, and accepted. I learned more about the Nova minicomputers and read the entire thick manual on operating it, trying to understand the relationship between assembler (which I had not yet taken, but could read through simpler bits of) and the binary it translated into.

The minicomputer took up about half a rack, and its hard drives cabinets were about the size of a modern washing machine. The entire thing needed enough power that it had to have a raised subfloor, quite common in computer rooms of the day.

When booting the Nova every morning when the lab opened, someone had to hand-check the paper tape driver in binary using the front panel switches. Now, one of the beauties of core memory is that it’s non-volatile, so that usually translated to three things: 1) checking that the sequence was still correctly in memory, fixing it if necessary; 2) going to the memory address where the driver started, then 3) start the system running from there. Eventually, I memorized it enough that I could check the entire sequence without thinking. It just became a familiar pattern of numbers.

Saddleback offered a single class in Basic programming (that everyone took first) plus one in Assembler and another in Fortran. All three were taught through the Math department. You had to do the lab work for Fortran at UC Irvine, which was about 15 miles away. The fourth class offered, Cobol, was taught through the Business department, and you had to do the lab work at Cal State Fullerton. This was the one class I never took, though.

That’s it. Four total classes, plus any independent study opportunities.
At the time, there were zero Computer Science degree programs in the United States, so far as I knew. You could get an Engineering degree with a Computer emphasis (EECS), or a Math degree, or a Business degree, but no standalone degree in Computer Science that wasn’t primarily about another discipline. That had yet to be invented.

So if this happened to be your thing, as it was mine, it was a tough field to enter back in 1975. You didn’t really learn enough at the community college level to do it full time in industry, but how else would you learn enough? The four-year programs weren’t much better.

These days, you’d buy a computer and work from home on various projects, perhaps open source ones.

Back then, a computer cost on the order of a year’s rent (at least by the time you got enough doohickeys to make it actually useful for anything) and required being soldered together. Of course, this was the kind of project that friends would help you with. In fact, four of us did exactly this for my high school physics project the following year. Having helped my father solder together the parts on a Heathkit oscilloscope, I did an awful lot of the soldering on that project.

Effectively, the price and difficulty barriers meant no one had a computer at home in that era. Computers like the original Apple I were just starting to become available.

One day, the lab got a request for a job interview from a local business, BasicFour, headquartered on the Irvine/Costa Mesa border near South Coast Plaza. They’d asked to interview a more senior lab assistant. He was 17, had a few months more experience than I did, but he’d also recently accepted a job offer.
The lab manager handed the information to me and said, “This could be a great opportunity for you.”

I called and got an in person interview. I was so excited that it wasn’t until after I’d gone home that I realized no one had asked me any programming questions. I was given a tour and offered an alternate, lesser position.
“Normally we start women out in a data entry position,” the man in the suit said. It paid less than half as much money. Since data entry positions have largely gone away—the position was for a glorified typist, still very much considered “women’s work” at that time. If nothing else good ever came of the Internet, at least women don’t have to put up with men feigning being too good to type their own crap.

I turned it down, but gave no reason.

Dejected, I almost didn’t go back to the Saddleback lab the next day. I considered calling in sick. When I did go in, I reluctantly walked over to my boss’s office.

“How’d it go?” she asked.

I told her what they’d said, then I told her that I’d turned them down.

“Good,” she said. “They shouldn’t have done that.” She asked me what I wanted to do, ensuring that I knew that I could report what they’d said.

“Find a job with a company that treats people better.”

“Good idea,” she said, then said she wouldn’t be sending anyone else to interview there. Ever.

At that time, I wasn’t willing to write off BasicFour, even though I probably should have. They were a local employer. They gave me an interview. It didn’t matter that they screwed up so badly. I figured—perhaps correctly, perhaps not—that they may change their minds later. Given limited opportunities at the time, I didn’t want to alienate them. It hadn’t occurred to me then, but would now, that some of the people in charge of that policy would later become involved in other local ventures, so that was probably a wise choice. Unfortunate that I had to even think about that, then or now.

I was sixteen years old, I hadn’t even had a programming job yet apart from some work I’d done for my father, and I was already worried about being blacklisted.

Heck of a way to start a career.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

Below is a video of a panel called “Opening the Clubhouse Doors: Creating More Inclusive Geek Communities” panel from C2E2 2014, April 25, 2014. It happened in Chicago.

At about 5 minutes in, one of the panelists tells the opening tale about an experience asking about diversity in comics:

“What is the percentage of female readers?”

And he literally said, “I don’t know, and I don’t care.”

Hat tip to Kameron Hurley.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

This “Why I Quit Programming” page is consistently one of my top ten web hits, partly because of its strong Google ranking.

This “Programming Sucks” rant has become one of my three favorite rants about software ever written.

The other two are Benji Smith’s “Why I Hate Frameworks” rant and Andrew Clover’s (bobince’s) extra special response about parsing HTML with regex.

Once upon a time, a former coworker had left software engineering entirely and was having money problems. I asked why not go back into programming? It had paid former coworker well.

Former coworker replied, “It’s not what I do after hours.” No interest in writing software outside the scope of a job.

I didn’t understand the idea. At all.

One of my life sayings is: “You don’t get to choose what you do (or don’t) care about. What you do get to choose is what you do about it.”

I vowed that if I ever felt the same way my former coworker felt about software, I’d give up writing it for a living.

I’ve been there for some time. For a while I thought maybe it was burnout, but it’s not. It’s a fundamental change.

Programming Sucks: The Web Edition

One day, I walked into the break room and heard a coworker say, “The Web is an error condition,” referring to the deplorable state of code out on the Web. I think that was the end of the end for me, because it just depressed me. It depressed me not because it was untrue, but because it was so perfectly true.

Honestly, I miss the days when Netscape Navigator would just halt rendering in the middle of your page, saying, “No, I will not parse any more of your shit until you fix it.”

Then IE came out for free. Suddenly, the game of web browsers changed from paid apps to supported by advertising and search revenues. The only way to get users to use your browser (and thus get more money to develop with) was to parse all the shit you used to reject.

The web became a co-evolution of crap and trying to render crap. (It’s gotten more complicated since then, but because there’s been a habit of rendering crap, no one suddenly wants to stop.)

Don’t believe me?

Copy the URL to some web site who should be able to afford first-class web developers into http://validator.w3.org.

CNN.com’s home page just resulted in this crap:

Errors found while checking this document as HTML5!
Result: 349 Errors, 104 warning(s)

NYTimes.com’s home page just resulted in this crap:

Errors found while checking this document as HTML5!
Result: 605 Errors, 32 warning(s)

You don’t get that bad by accident. You get that bad by deeply not giving a fuck.

But, hey, it’s HTML5, right? No, they just dressed up the pig that was HTML 4.01 Transitional and still have crap that hasn’t been valid on any newer spec than the one published in 1999. Last Millenium. (No, I’m not counting XHTML, why do you ask? Okay, even if you grant that XTHML is a good thing, the reasons the above two pages don’t meet the HTML5 spec are also why they’d fail the XHTML spec.)

I’ve had code that flew into space that didn’t have 605 errors in its entire fucking lifecycle. Yeah, okay, it was a digital tape driver I had to squeeze onto a smaller PROM, but still. Can’t just send that sucker into space with that many errors.

I’ve been paid to program in twenty-six different languages. I’ve written code to reduce power plant emissions. Space and power plants I did before I was twenty, and continued the latter for several more years. I’ve written code to help manage whole blood inventory for anti-D injections (so Rh- mothers can safely have Rh+ babies).

I’ve done a lot of other things, too, from writing database apps for mailing list companies to writing commercial Mac software for calendaring to working on the Safari team at Apple to writing an App to help the Omidyar Foundation invest its money. I’ve worked on a Jabber client for Be, I’ve worked on the TiVo service, I’ve worked on software for companies big and small.

I’ve worked hard and had my vested shares undergo a million-to-one reverse split. Rounded up. At that point, it’s not worth sending me the damn paper that’s required. As Rachel Chalmers says in her excellent piece for Model View Culture, “No face-saving exits for them.”

The Biggest Reason Why I Quit Programming?

Quite a few years ago, I realized that I knew how to approach essentially any programming problem I cared about. It may not be the best approach or the one some other person would pick, but I could write a working implementation of anything I chose to.

The catch is, I kept choosing to do other things.

It’s not to say that I have no interest in software. Of course I do. I’m an introvert and a numbers geek, and it’s served me very well as a career for thirty-eight years.

What I mean is that I can’t do it for someone else the way I used to.

Instead, I need to pick projects that I care about and not spend long stretches of time on things I don’t.

I have some ideas of what I want to do software-wise, but I’m not ready to announce them yet. It’s got to fit in between my other plans.

Part of it will mean needing to do some real design work using stuff like Illustrator. In amongst all this software writing I’ve done, I’ve been putting off learning Illustrator since I opened the Illustrator ’88 box in, uh, 1988.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

As someone who’s spent my whole life working mostly on one large project after another, you’d think novels wouldn’t be as hard for me to write as they actually are.

I had this glimpse into why: I generally had a sense, at all times, whether something was on the critical path—or not. There were desired features and planned expansions, but building them wasn’t part of my initial task. So there were clearly things on the critical path—and not. Generally, there was at least something of an order: I need to get pretty far along in X before I can test Y, so let’s write X first. I can work on Y if I’m stumped on X.

In a novel, generally all of the planned scenes need to be written because they’re interwoven. It’s all on the critical path.

Non-fiction’s different: some items may be optional. If they’re not written for the book itself, they can be re-used in other ways, like website content or newsletter content.

So I don’t necessarily have a sense of what I should work on next. The list is too large. Since I write out of order frequently that makes the problem set too large.

I’m going to have to think about this.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

A friend of mine who’s a geek and I were talking about Heartbleed a couple of days ago. Said friend has never been a coder, and thus never really spent a significant time looking at memory dumps, unlike us old school programmers who have (especially back when we were, um, trying to argue with copy protection on games we owned back in the 80s when apps were traditionally copy protected).

So my friend said, “I don’t get why SSL certs have to be reissued.”

This friend doesn’t run SSL (nor do I). But I see exactly the gap that some technical people have.

Also, I haven’t heard a lot of people talking about the problem of non-obviously SSL security complications of the heartbleed attack, like password and cookie salts.
Read the rest of this entry  )

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

Four months ago, I posted this commentary and critique of Box’s “Working at Box” page.

It got back to me that it created quite a stir, but I hadn’t checked back on the page recently. I have noticed incoming links to that blog post, so I wondered what was up.

Credit where due, Box has revised the underlying page.

Thank you! Nice improvement.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

I’m sometimes horrible about marking some kinds of items as read or deleting them.

Things like:

  1. People favoriting my tweets.
  2. LiveJournal comment notifications.
  3. Newsletters I don’t have time to read right away.
  4. New product notices from my very favorite vendors.

Unfortunately, I sometimes skip important messages by mistake.

At the moment, I have (gulp) 182 of these kinds of unread messages.

I don’t like the default way Apple Mail handles unread messages, as I feel they get lost.

Here’s how to create a new smart mailbox that contains only your unread messages:

  1. Mailbox menu -> New Smart Mailbox.
  2. Name your smart mailbox. Mine is cleverly named: Unread.
  3. Select “all” in the “Contains messages that match” popup.
  4. It’ll be pre-filled with “Any recipient” and “contains” and hopefully your email address. Keep that, or fix it if it’s not that already.
  5. Click the + sign on the right.
  6. Select “Message is Unread” from the second pop-up row.
  7. Click OK.

And you’re done.

Then you just need to go through and see if any of those things are things you can do without longer term.

Which is what I’m now doing.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

I’ve officially joined the cult of Scrivener. Which, btw, it’s on sale right now for $20 instead of the usual $45.

Like other people coming from Markdown, you can use Markdown syntax in Scrivener, export your project to text files, and use Markdown syntax on iOS apps (like my much-loved Byword) ’cause there is no RTF (Scrivener’s native format) on iOS, really.

But, you say, then what?

Beholdify. You can wait to convert your Markdown until the very last second by checking it in the Compile options when you generate your final output.

scrivener-compile-markdown
So for those of us with books and books written in Markdown syntax, we can have it all. Finally.

So?

You’re not one of the Markdown people, I can tell.

# This is an h1 heading
## This is an h2 heading
## This is an h2 too (sorry, couldn’t resist)
This is a paragraph with _italics_, **bold text**, and ***italic bold text***. You can also do *italics* with single asterisks if you swing that way.

And this is another paragraph.

…becomes…

This is an h1 heading

This is an h2 heading

This is an h2 too (sorry, couldn’t resist)

This is a paragraph with italics, bold text, and italic bold text. You can also do italics with single asterisks if you swing that way.

And this is another paragraph.

Therefore….

  • No fussing with menu bars or character formats.
  • No having to remember shortcuts for italics, bold, whatever.

Just. Write.

Which is one reason I’ve liked Markdown all along. It gets out of your way when you’re putting the words on the page.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

I’m going to go out on what seems to be a wildly unpopular limb here and say this: asking a developer to write an implementation of a sort algorithm is almost certainly a bad job interview question.

Why? Because you’re likely not hiring someone to write implementations of sort algorithms. Even if you were, they probably would not be writing optimized code in a job interview situation, so what’s it really testing?

Problem solving skills aren’t universal, nor does the ability/inability or inclination/disinclination to solve one kind of problem necessarily reflect one’s overall skills. Or lack thereof.

Remember that the person being interviewed is also interviewing you and deciding whether they want to work with you or not. If you ask a coding question that’s more directly relevant to the job at hand, then they will have a better sense of what it is you do every day—and whether that’s something they want to do, too. You’re engaging them in your problem space, not asking something they may or may not warm to even if they’d love the job you’re interviewing for.

For example, in an interview I went on once upon a time, the interviewer said, “We have this problem, and I’d like to see how you approach it.” So it was a supportive, shared, coding question. I had questions about some aspects of the requirements, which the interviewer then answered. That was a great interview approach.

I’ve come to dread the sort interview questions. Frankly, it’s not a part of programming I enjoy. I like the fact that other people think about sort implementations. Yay, diversity.

I remember once, I think it was 2005, having re-reviewed all the common sort algorithms, then flown to a job interview. The question: “How would you write a shuffle algorithm?”

I remember that instant of total frustration far more than anything else from the interview.

My answer was something like: create a hash of something like a random seed from the current time plus some aspect of the information you had about the song (since it was about shuffling songs) like the title, and then sort the hashes. I have no idea if that’s a good answer, but it’s what I came up with at the time.

Meanwhile, I’d much rather focus on whether we need this column or not, whether that schema is better suited for the project than this other one (and why), can we produce the desired page with less HTML/CSS markup? And how much can/should we shunt off to JavaScript? How much jQuery do we need? Does this page degrade gracefully without JavaScript? What pieces of this should go in the controller vs. the model or the view (and why)?

Using a different field, asking someone who’s applying for a general application programmer to write a sort implementation is like interviewing for a job as a Cosmo article writer and being asked to produce a sonnet in the job interview. (With the added bonus of live critique questioning your choices.)

Now that’s not to say that knowing how to write sonnets isn’t a cool skill. It is.

But let’s look at what an article writer needs skill at that a sonnet writer doesn’t:

  • Ability to write whole sentences
  • On time
  • Correct length (sonnets have a lines/syllable count, but what an article writer needs is correct amount of space on the page, which is an entirely different form of length requirement)
  • On correct subject
  • Supports advertisers
  • Current and relevant
  • Literal language

What skills a sonnet writer needs that an article writer doesn’t:

  • A feel for syllables
  • Exhaustive vocabulary (because poetry readers will look up words but Cosmo readers almost certainly won’t)
  • How to write something timeless
  • The ability to fiddle until it’s “just so”
  • Metaphorical language

99.9% of all people making their living as writers aren’t writing poetry. 99.9% of the rest write greeting cards for money. The other two are poetry professors. Random aside: did you know Cupertino has a poet laureate?

99.9% of all software engineers making a living as such aren’t writing implementations of sort algorithms or developing new sort algorithms as their job.

Ask more relevant questions.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

“Premature optimization is the root of all evil.” — Donald Knuth

Case in point.

  1. An ex-SFWAn and some colleagues put up a petition about feared changes in editorial policy of the SFWA Bulletin. Link.
  2. The Internet reacts. Including me.
  3. Some of the people sympathetic to the petition signers, but not to those in step 2, counter-respond. Link.
  4. One person in particular says a bunch of stuff that, frankly, can’t be unsaid. This person happens to work at the publisher where the person (who happens to be a woman) he’s saying something about is being published.

People have lost their jobs over about as much. Case in point.

And—to what purpose? Really?

I get that, as science fiction and fantasy writers, “if this goes on” is one of our primary memes. It’s the launching point for many book ideas. We’ve all got more than a little Philip K. Dick in us. Institutional paranoia isn’t a bad thing to have, up to a point.

I understand the very real sexism of aiming that fear at the highest woman on the SFWA board at one point—and not at her male peers. Mary’s post is worth reading. As is Scalzi’s. I get the sexism, especially after as long as I’ve spent in the computer industry.

No one is obligated to like anyone, but Mary is a colleague of ours, and I expect Mary to be treated with the same professional courtesy that (most of) you would treat your favorite of the genre’s masters if they were suddenly to walk into your living room.

Premature Optimization

I can’t help but think, though, that if premature optimization weren’t such a human tendency, none of this would have happened.

Knuth’s point about premature optimization is about wasted effort. Many engineering projects fail because a lot of effort is spent optimizing in area A when area B is a substantially more significant problem in the actual use case. It’s just that area A’s problems were seen earlier.

In the current SFWA thing, the premature petition put a drag on all of our time and energy due to the very real problems that surfaced as a result of the initial premature optimization. I’m being kind here: the petition itself was ill-conceived, and quite a few people spent time working on it that they undoubtedly could have better spent doing other things.

Look, I know it’s a Myers-Briggs J vs. P approach to problems thing. Truly I do. Even as someone who is very, very P, I sometimes have to tell myself “Wait.” Still.

When it comes to events here in reality, respond to reality.

But…Lobbying

You can spend a lot of effort heading off potential problems that would never become actual problems.

There is a long tradition of lobbying against laws being passed, and that’s arguably not premature optimization when we have the text of the proposed bill. But there’s also the fact that every single progressive mailing list I’m on has asked me to rail against certain proposed bills that had no chance of passing. Unfortunately, some bills we thought had no chance of passing occasionally do anyway.

It’s a different thing when a law passes than when a relatively small organization makes a structural change, though. I’m not going to say that SFWA is agile, but it’s at least arguably more agile than a government.

And Yet

Worth reading: Mark Tiedemann, “On The Extraction of Feet From Mouths”. I’m glad something good came out of all this. (Note: post is from last June, so is about the issue that the current controversy is responding to, not the current controversy per se).

Popehat writer Ken White gives an awesome legal analysis of the defamation lawsuit threat.

Originally published at deirdre.net. You can comment here or there.

deirdre: (Default)

Seth Miller (also known as Wandering Aramean) has released a WordPress plugin for Great Circle Mapper.

Example:

Deep Pacific map!
Map generated by the Great Circle Mapper - copyright © Karl L. Swartz.

Originally published at deirdre.net. You can comment here or there.

Profile

deirdre: (Default)
deirdre

February 2017

S M T W T F S
   1234
56789 1011
12131415161718
19202122232425
262728    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 26th, 2019 10:54 am
Powered by Dreamwidth Studios