killorn:

Here is a picture of legendary comic book writer Stan Lee at the exact moment he regretted ever picking up a pen in the first place. 

Sharing files with virtual machines using NFS

In a previous post, I sang the virtues of VMWare Fusion’s shared folders feature, and the way it lets one share files from the host OS to the guest OS.

Folder sharing is a bit of a pain to install, especially because OS upgrades on the guest seem to break the guest tools installation. The solution is one of the oldest file sharing technologies there is: NFS. It’s easy to set up, works on basically everything, and is solid as a rock. It also supports symlinks, which means you can sidestep VirtualBox’s issues with shared folders and symlinks.

The best bit is that once it’s set up and works you can switch between any virtualisation technology you like (for example: I’m now using VirtualBox at work so we can make better future use of Vagrant, but I use VMWare for Windows)—this works at the OS level so it’ll just keep working.

Configuration time

This is the easy bit. First we export whichever folder we want to share from the host OS. In my case it’s ~/Projects. Edit /etc/exports as sudo (this won’t exist by default on OS X), and add the following line to it:

/Users/bradleyw/Projects -mapall=501:20 -network 192.168.56.0 -mask 255.255.255.0

The first part is obviously the directory you want to share, and the -network flag tells us which IP range to share with. In my case my VM listens on 192.168.56.101, hence 192.168.56.0. The rest of the flags you can ignore.

Now we need to run a few commands in the OS X terminal to complete this side of the configuration:

sudo nfsd checkexportsshowmount -e

If everything went well no errors should be reported and your exported directory should be printed to stdout.

Now on the guest OS, you first need to install the NFS software. On Debian and Ubuntu this is:

sudo apt-get install nfs-common

If you’re on another distribution this is an exercise for the reader.

We can now configure fstab so mount knows what to do. As a super user, edit /etc/fstab, and add the following line at the bottom:

192.168.56.1:/Users/bradleyw/Projects /mnt/nfs nfs soft,intr,rsize=8192,wsize=8192 0 0

The important bits to change are 192.168.56.1, which should be the IP your guest can see your host at (so the IP address your virtual machine uses to hit OS X), the path to your export, and the /mnt/nfs, which can be anything you want. I use /mnt/nfs as it seemed the right thing to do.

Note that you need to create /mnt/nfs before proceeding: sudo mkdir -p /mnt/nfs.

Now we can attempt to mount the shared filesystem: sudo mount /mnt/nfs. If no errors are reported, it’s all good!

You should now be able to read and write from /mnt/nfs.

My own workflow

My own workflow with this is to have a case-insensitive disc image that’s password protected automount on login (this is exported as /Volumes/Smarkets). Then the Linux machine starts in headless mode, and because of NFS it’s already mounted. So I’m up and running very quickly after logging in, and the case-insensitive disc image gets around all the issues Python has when exporting from OS X to case-sensitive file systems.

Hunter helped me a lot with some of the details here.

Now paying for GitHub

As I indicated much earlier, I stopped paying for GitHub because I have the server and know-how to host my own repos.

However, my general policy is that I’m always happy to pay a small fee to services I don’t use in a way I should to justify their value, but merely to reward them for doing good work.

So that brings me to the point of my post: with GitHub’s new image view modes, they’re doing amazing things for version control and collaboration, and I wanted to support that. So I’m now a paid up member of GitHub again.

Keep up the good work!

Posterous’s idea of customer service, and where I differ

I’ve been dabbling with Posterous as a potential way of mitigating Tumblr’s recent downtime issues.

The tl;dr version is that I didn’t like their service, and suggest some improvements.

My experience with Posterous

After importing my Tumblr blog into their system (which was all very smooth), I tried to edit a post and remove it, using one of their combo buttons:

Combo button

Unfortunately, in both Safari and Chrome (so WebKit, basically), their Javascript is broken. It fails, and then fails to clobber the event propagation, so the page reloads (as obviously, not being progressively enhanced, all their links are empty).

A cursory look in my console shows really basic errors like:

Uncaught TypeError: Cannot call method 'addClassName' of null

or:

Uncaught TypeError: Property '$' of object [object DOMWindow] is not a function

Now, being the responsible developer I am, I write into them with a bug report (this is on January 29, almost 2 months ago):

Every time I click the “Edit | [down arrow]” button (the down arrow specifically), the page goes to a blank page. I assume this is because the JS is broken so you’re not cancelling the click event on the link. I’m using Safari 5.0.3 on Snow Leopard.

Not the most gracious email, I’m sure we can all agree, but then again this also seems like the kind of basic error that shouldn’t happen in the first place.

Yesterday, on March 20th (almost 2 months after submitting the error report), I get the following response from Posterous:

Hello Brad,

Should you still be experience the issue you emailed us about, try clearing safari’s cache and cookies and trying again, or using another browser.

Sorry for the delayed response,

Theodore

I mean, what? This is a fundamentally broken part of the site, and the best they can tell is is:

  • They haven’t tried verifying that the bug still exists (or even existed in the first place);
  • They certainly haven’t tried to fix it; and
  • Their solution is to clear everything or use another browser.

And I waited two months for that? As a professional developer it’s my educated opinion that the errors I describe above are easy to notice and probably easy to fix. And they can’t even be bothered checking them.

No thanks Posterous, I’ll be sticking where I am for now.

What I would have done

At Smarkets customer service is a part of our business that we take very seriously. I would have responded roughly as follows:

  • Reply within a day, telling the customer we’ll look into it, and apologise for the inconvenience they’re experiencing (note that this is mostly a form letter, and thus is very easy to reply with);
  • Work out if there’s actually a bug:
    • If there is, file it, and schedule a fix; or
    • If not, work out why the user is experiencing it anyway.
  • Reply to the user with either your explanation for what they might be doing wrong, and find out if they can give you more information; or
  • Tell them when they can expect a fix, as you’ve found the bug. Give them some kudos in the email for finding the bug for them.

At a startup, every customer is valuable and should be treated like they’re important and that their opinion matters. These are trivial things to get right, and prevent long-winded disgruntled blog posts like this.

czottmann:

Astronaut Tracy Caldwell Dyson enjoying the view: APOD: 2010 November 15 - Home from Above

It’s like something from a sci-fi movie. Absolutely amazing.

Issues mounting shared folders in VMWare Fusion 3

I recently took advantage of the VMWare 3 upgrade for only $9.99 USD, which has all gone well, except for one issue with /etc/fstab: it turns out that VMWare Fusion 3 tools doesn’t actually respect your mount settings, which means you lose all the permissions information contained therein.

There’s a solution to the mount problem here, which works perfectly after a reboot. I hope VMWare fixes this soon, though: it’s a pretty nasty bug.

Follow up to previous UX and Ryan Carson post

My previous post seems to have gotten the attention of Ryan himself. As Ryan mentions, I’m on Tumblr, which means no comments.

I invite Ryan to email me at brad at this domain with his comments (I also did on Twitter, but last time I checked he had blocked me) and I will publish them.

I’d also like to note that at the time of writing he has additionally blocked Tom Muller and Ben Darlow on Think Vitamin, so I wonder if he’s genuinely interested in dialogue at all.

See below for what I currently see when visiting Ryan’s most recent Tweet (or should I say “dialogue”?):

Blocked!

UX professional is a real role, and an important one

Over at ThinkVitamin, Ryan Carson has boldly declared that ‘UX Professional’ isn’t a Real Job. He lists a (relatively small) number of reasons for this, the primary being:

A web site or app should be the product of a Web Designer and a Web Developer…(a)nyone else who is added into this equation is a waste of money and time.

This seems a fairly limiting argument on the face of it, as his argument is clearly confined to small (perhaps 2 person, if we take his example literally) teams. He further clarifies his position in the comments:

Why would someone hire web designers [who are awesome at making a site look good…but horrible at making an interface usable]? That’s the point of the post. UX shouldn’t be an optional skill for web designers.

which would probably confirm to most people that this article is merely a linkbait article with a controversial title.

Now, I could leave it at that, but someone is wrong on the Internet, so I am compelled by duty to continue.

As someone who has certainly worked with many good user experience designers (my fiancée being one of them), I feel the need to weigh in with my own opinion. Be warned that this response may be condescending.

Much like the recent flame war over SEO specialists being “snake oil salesmen” etc., I can see how a small team, like Ryan’s, would not feel the need to hire in specialists. After all, when you’re building “web apps” (most of us professionals still call them “websites”, since that’s what they are) with the size and audience Carsonified’s sites usually get, you don’t really need to specialise, as a small team can, on the surface of things, achieve all that’s required for a four day buildout.

However, this is the same boneheaded planning that leads developers who have installed Rails for a personal blog to believe they won’t need a sysadmin, or the same developers to believe they won’t need a backend specialist to actually make their system scale (Twitter circa 2008 being a fantastic example of the latter). At some point and level of success, you’ll want people who are the best at their individual piece of the puzzle, be it: administering servers; optimising your site for discoverability (a nice way of saying SEO); keeping your RAM usage low; or designing a complex multi-form flow in a way that doesn’t haemorrage users through sheer boredom and depression. The latter is just one way a good user experience designer can help (for the others you want people of the beards and sandal variety).

Again, when working on simple sites, like a conference site, or an agency site (basically just structured content), you probably don’t need to get in a specialist. And whilst most of the UX professionals I know have come from a design background (the “web designer” Ryan mentions in his post), and they certainly fit his mould of “do-it-all designers”, I don’t think there’s room in a single person’s head to stay on top of all current research on user experience, much like there’s not really enough room in my head to understand 7 browsers with their quirks, and also understand how to optimise a message queue for high throughput. This is a simple human limitation, and I’m okay with that. I’d rather have a team of 7 specialists doing their piece than 5 generalists doing an 80% job.

Why? Because user experience is simply too important to not take into account, and to not have the best people working on it. Being a methodical, precise person who is happy to dig through reams of research and multi-variate testing doesn’t necessarily make for a good creative, so I’m perfectly happy to see them as separate people and roles. Yes, it’s nice to have people who are superstars at everything, but in real life this just doesn’t happen. As managers of teams we need to be realistic about this. And utimately that’s my problem—his idea simply isn’t realistic (leaving aside the fact that it’s an incredibly rude post to begin with).

Writing a post like this has simply shown up Ryan to be vastly less experienced in sizable and cutting edge web teams than he pretends, and should be a valuable lesson for any aspirants reading his blog: successful teams are made up of many people, and the bigger the team, the more specialised they need to be.

Update: Ben Darlow has also written up his opinion of the matter.

Update 2: Ryan has responded to me on Twitter, and I followed up.

Update 3 (yay, more): Andy Budd has written an excellent rebuttal to Ryan which includes a brief foray into the history of job titles on the web, and how UX fits into that scheme. I agree with pretty much everything he’s said.