Tuesday, September 17, 2013

Technology: It's About Empathy, Dummy

In the real world, technology and software development are about empathy as much as they're about engineering chops.

Writing successful software, even if you're just writing an API or component for another coder, requires an understanding of your users' wants and needs.

The typical real world IT project goes something like this: something is going wrong, and you're asked to fix it with software. The people asking you for these solutions frequently have no idea what they want, and wouldn't have the technical vocabulary to describe it to you even if they knew. Worse, sometimes they think they know exactly what they want, and you need the finesse to tell them why their idea is wrong and suggest a better one ...all while helping them to feel as though they're playing an important role in the process, which they actually are, just not in the ways they're intending to.

And that's fine, actually, because if they know how to describe and write their own code they wouldn't need you. That's why you have a job.

There are certainly engineering jobs where empathy plays less of a direct role. If you're designing processors at Intel, or writing software to sift through telescope data to discover asteroids, you will perhaps be less concerned with others' needs.

Know, however, that those kinds of jobs represent a very small portion of the opportunities out there in this amazing field.

Also remember this: if you're just a "good coder" your job can be fairly easily outsourced. What they can't outsource so easily is your empathy and your understanding of intangibles.

Tuesday, March 26, 2013

Hey, Men! Let's Be Awesome.

There's been much talk about the role and treatment of women in the tech industry lately.

Let's step away from the cesspit of online debate and focus on some positive things we can do. There is a time and place for pointing out what others have done wrong. Since the rest of the Internet has that covered already, let's focus on awesome things we can do.

As men, let's:

  • Recognize that we have a position of privilege and power in the overwhelmingly male technology industry. "Privilege" doesn't mean you haven't worked hard and earned your achievements. I believe you when you say you've worked your butt off.
  • Recognize that, particularly if you're a white male, you may have never experienced what it's like to be in the minority. Let's not tell women or anybody else how they should feel about it. This does not mean you are bad because you are a white male! I'm a white male; I think I'm pretty alright.
  • Realize that a lot of women don't appreciate sexual jokes and conversation from men they don't know. Some enjoy it, some don't care, and many dislike it. They may even find it threatening. Even if you think this is dumb (it's not) then simply accept that a lot of women feel that way. We would not want our mothers, sisters or wives subjected to unwanted sexual conversations from strangers.
  • Realize we can still make jokes about boobs and penises. Nobody is taking that away from us. Let's save it for our friends (of any gender) who enjoy those kinds of jokes.
  • Realize that engineering is the art of creative problem-solving, and we benefit from others' perspectives. Solving problems involves understanding them. Often, this means understanding people. We need more perspectives, not less.
  • Realize that accepting women into our industry means accepting women. Not just accepting women as long as they "think like men."

This industry is important; I really believe in it. If you're reading this, I think you believe in it. We really hurt this industry when we exclude bright minds and new perspectives from our field.

So, let's be awesome.

Thursday, March 21, 2013

What Would A "Computer For Developers" Look Like?

"Workstation" computers typically seem designed for graphics/video professionals, or users who run scientific software.

Why have there been so few systems designed for software developers? The only example that really comes to mind is the Developer Edition of Dell's XPS 13 laptop. In this case, "Developer Edition" means that it comes preloaded with Ubuntu and Dell has sorted out any possible driver issues for you. (Dell, are you listening? I'll take one. Thanks.)

Software developers certainly seem like a market worth pursuing. There are over 1.25 million Americans who identify as software engineers or computer programmers. This is a well-paid profession full of people who use their computers in a demanding fashion for at least eight hours a day, nearly every day. Why aren't computer manufacturers falling over themselves to serve this market?

One reason is because it's hard to define exactly what a software developer would want out of computer hardware, other than "fast, has a nice keyboard, and is hopefully portable."

Virtualization might be an answer. Software developers (and QA professionals) love to run multiple operating systems on a single computer, to test their software and take advantage of tools that only work under a particular operating system. Even the most diehard of Linux developers often needs multiple Windows installs around, if she's making web applications and needs to test them on Internet Explorer.

Existing desktop virtualization software like VMWare and Parallels works well, but can be clunky. You can't boot a guest operating system without booting the host, and guest operating systema have limited access to hardware resources like GPU acceleration. Full hypervisors like Xen or VMWare vSphere get around this issue, but are complex to configure and administrate.

I'd love to see a company take Dell's "Developer Edition" approach a step farther and sell a machine with something like Xen preinstalled, so that we could install/migrate/clone/snapshot multiple operating systems as easily as we copy around .txt files today.

Dell, are you listening?

Apple, Mac Pros, and the "Halo Effect"

John Sircacusa makes a case for Apple to re-invest in the Mac Pro line.

In the automobile industry, there’s what’s known as a “halo car.” Though you may not know the term, you surely know a few examples. The Corvette is GM’s halo car. Chrysler has the Viper. ...Let’s talk about the Lexus LFA, a halo car developed by Toyota over the course of ten years. (Lexus is Toyota’s luxury nameplate.) When the LFA was finally released in 2010, it sold for around $400,000. A year later, only 90 LFAs had been sold. At the end of 2012, production stopped, as planned, after 500 cars. Those numbers should make any bean counter weak in the knees. The LFA is a failure in nearly every objective measure—including, I might add, absolute performance, where it’s only about mid-pack among modern supercars. The explanation for the apparent insanity of this product is actually very simple. Akio Toyoda, the CEO of Toyota, loves fast cars. He fucking loves them! That’s it.

I'm a big believer in the halo effect, but I question whether it can be achieved in today's computer market. Apple, of course, is limited to using the same Intel chips that the rest of the industry uses, and just about anybody computer-savvy enough to crave a faster computer knows this.

Imagine a slightly parallel universe where the entire car industry had standardized on engines and power trains from General Motors. You'd never get excited about the new Ferrari or the new Mercedes because, at best, it'd be powered by the same Corvette engine that every other high-end car is using. It might have nicer seats and a better stereo, but those are nice-to-haves, not things you lust over.

Additionally, computers have been "fast enough" for most users for years now. I'm a software developer and I push my CPU pretty hard, and the fact is that the CPU in my 2011 MacBook Pro is almost never a limiting factor.

Are there any other ways Apple could build a "halo product" in today's computer industry? (Their crown jewel, of course, is OSX but you already get that with every Mac.)

Possibility #1: The "GPU Beast Mac Pro." Suppose Apple sells a Mac Pro that's stuffed to the gills with the biggest, best professional-grade GPUs that nVidia offers. That wouldn't be a bad idea but unlike a faster CPU, very few users would benefit from extra GPU compute power. The vast majority of applications simply can't benefit from the speedup offered by GPU acceleration. Perhaps Apple could somehow make automatic utilization of GPU compute power more pervasive in OSX 10.9, but that's doubtful - Mail.app isn't going to fetch your emails any faster with the GPUs helping it out.

Possibility #2: The "4K Retina Display iMac Pro." Apple's shown an inclination to differentiate its high-end notebook lineup by introducing displays with densities approaching 300dpi. One has to believe they're itching to be the first to accomplish this on the desktop, though of course they're limited by what the display manufacturers can currently produce. What if the next "professional Mac" is a slightly more expandable iMac with an integrated 4K resolution display? It's only a matter of time before Apple brings the high-DPI concept to the desktop, of course - it's just a question of how exactly they'll target it, and whether or not it will be part of an expandable "pro" machine that many of us are hoping for.

Tuesday, February 5, 2013

Plus / Minus

We'll start with the "plus" - keeping it somewhat positive in 2013!

Plus Of The Week: Join.me

A few years ago, it seems like there was no drop-dead easy way to share your screen with a friend or coworker unless both of you were on a Mac and could use iChat's excellent screen-sharing feature. Services like LogMeIn required the installation of software; alternatives like VNC or Windows Remote Assistance were firewall-unfriendly.

Today, though, there are quite a few drop-dead easy alternatives that run inside a browser. Join.me, from LogMeIn, is one of them. About the only downside is that the person on the other end needs to have Flash enabled in their browser. There has to be something out there that functions in "HTML5-only" mode if Flash isn't installed, right?

Minus Of The Week: No SFTP in Windows Server 2012

It's kind of hard to believe that it's 2012 and Microsoft still ships a server version of Windows without SFTP, or some kind of substitute for it. (And no, FTP isn't a substitute)

There are third-party implementations, but they tend to be spendy and/or bereft of any user community, which makes me awfully wary of them.

You can allow SSH/SFTP access via Cygwin - which is free, free, free - but in my experience there's no way to selectively chroot accounts on an account-by-account basis. Which means that you can either lock all users in a single home directory, but you can't do it for some accounts and not others, so you're kind of out of luck if you want to give full access to admins and restricted access to other users. It's entirely possible, of course, that I'm mistaken on this. Drop me a line and correct me.

Sunday, February 3, 2013

I Know It's 2013 But Seriously: Office 2011 For OSX

I like Office 2010 on Windows. I like the Ribbon interface. Really, I do. As much as I'm a Mac guy for many things, I think that the Ribbon interface, when done well, is a great use of space and is far preferable to lots of tiny menus, nested three or four deep.

I certainly like it better than the iWork (Pages, Numbers, and Keynote) interface on OSX, with its tons of floating toolbars. You can't just drag a Pages window around, nooooo - you must also drag three or four separate windows at times. I assume that OSX will eventually get a version of iWork that carries over many of the lessons learned from creating iWork for iOS, but who knows?

Anyway. Here's what spawned this post.

What was Microsoft's OSX team thinking when they designed Office 2011 for OSX? Seriously, this is just horrible. It looks like somebody from 1995 traveled forward in time to 2010, had sixty seconds to memorize what OSX looked like, and then was transported back to 1995 whereupon he feverishly worked to recreate that look in an early version of Visual Basic.

There are extra bevels, some kind of bizarro tabbed interface, and the whole thing is a jumbled mix of flat icons and pseudo-3d-gradiant-having buttons. Why? Why? Dear God.

Office2011 OSX

Tuesday, January 22, 2013

What Working With Steve Jobs Was Actually Like

In the words of Glenn Reid, who worked on iMovie and iPhoto with Jobs:

“…when I worked with Steve on product design, there was kind of an approach we took, unconsciously, which I characterize in my mind as a ‘cauldron’. There might be 3 or 4 or even 10 of us in the room, looking at, say, an iteration of iPhoto. Ideas would come forth, suggestions, observations, whatever. We would ‘throw them into the cauldron’, and stir it, and soon nobody remembered exactly whose ideas were which. This let us make a great soup, a great potion, without worrying about who had what idea. This was critically important, in retrospect, to decouple the CEO from the ideas. If an idea was good, we'd all eventually agree on it, and if it was bad, it just kind of sank to the bottom of the pot. We didn't really remember whose ideas were which -- it just didn't matter. Until, of course, the patent attorneys came around and asked, but that's a whole ‘nother story.”

Even an with his famously vast ego, there were times when Steve knew when to set his ego aside for the good of the product.

Also, perhaps a more subtle point. Let’s think about this sentence:

“If an idea was good, we'd all eventually agree on it, and if it was bad, it just kind of sank to the bottom of the pot.

My favorite part, actually. I believe that in, order to come up with good ideas, you need permission – from yourself and others – to come up with bad ideas along the way. Nobody produces brilliant ideas 100% of the time and if you try, you’ll be mediocre at best and wrapped in “analysis paralysis” at worst.