expletive inserted Does cursing make you feel better?

Why Git Rocks

I’ve been a longtime subversion user and before that Visual SourceSafe (ew gross), but at the new jobby job, it’s all git all the time. Being very used to the pretty awesome TortoiseSVN and ZigVersion gui clients for svn, I’ve been a bit hesitant to really dive into git, not really knowing what to expect out of the experience of using shell only tools, and in general understanding why git was designed, and what the big deal was vs. svn, cvs, and other traditional source control management tools. Now that I’ve spent some time making Terminal.app my bitch (fodder for another post I’m afraid), I realize (not fully yet of course) how awesome getting into git can be.

So here’s a quick list of why git rocks, or why I think it does anyhow, and why it’ll be my tool of choice, at work and at home for quite some time.

  1. When you initially start working on a project someone else has started, already in a repo somewhere, you need to clone it. This is approximate equivalent of svn checkout, pulling the project down to your machine. The really big deal though, is that you now have, on your machine, a complete copy of the repository, not just a checked out working directory, but a full repo! Yes! The entire history of the entire project, and every file in it on your little old machine. Because most work is done locally, git is fast.
  2. It’s pretty space efficient and smart about diffs. Check this quote ripped from the Peepcode PDF on git: “The Ruby on Rails Git repository download, which includes the full history of the project – every version of every file, weighs in at around 13M, which is not even twice the size of a single checkout of the project (~9M).  The Subversion server repository for the same project is about 115M.”
  3. No muss no fuss. With svn, you end up littering your working directory with tons of .svn directories. With git, there’s just one .git directory in the root of your project.
  4. Rebasing interactively. Re-order, split, edit commits and then send them on their way. Sounds pretty odd right? Check out the interactive mode section over at the git doc page.
  5. Branching, for the win. If you’re used to svn, sourcesafe, cvs, or most other traditional systems, when you hear “branch”, you probably want to curl up into a little ball and die. Nightmares of manually resolving hundreds of conflicts, cats and dogs living together, fire and brimstone! Blah! First of all, git was designed to reduce these headaches so almost every bit of development you do ends up being done in your own little branch. You can freely commit to your own branches and switch back and forth between branches at your leisure (git checkout), pull everyone elses recent commits into master, while not at all disrupting your own branches. Files that have been modified but not committed to any particular branch will follow you around as you checkout different branches. This threw me off at first, but makes life so much easier.

I highly recommend that Peepcode PDF, and if you are looking for something a bit shorter, Git Magic by Ben Lynn is wonderful.

The Big Switch

Well, it’s been a few weeks of working fulltime with Ruby, Rails, on OS X and I must say, I know so much less than I thought I did about OS X, Ruby, and Unix-like systems than I could have imagined. I have taken for granted that in the last seven years of experience I had come to intimately know the Windows stack, and could bend it to my will and bring it back from the brink of death at a moment’s notice with the flip of a switch. I believe educators would say I had fully internalized this knowledge, and not having that foundation to rely upon is really quite scary.

Happily though, I’ve commited myself to doing the same for Linux, OS X, Ruby, Rails, MySQL and host of other great tools. The follow couple of posts will be dedicated to some of the things I’ve found most difficult about switching over from a Windows environment, and how to effectively use some powerful tools that I’ve come across on the way. I think others in the same position will find this info quite helpful. Either way, nothing quite reinforces what you learn like writing it down, so even if it doesn’t help anyone else, it’ll still be useful to me. I’m lucky enough to have the support of some extremely smart, talented, patient, and helpful people, and to everyone I work with, Afshin, and Katie, thanks for putting up with me as I get aclimated.

Where’s the Calendar?

When you are working in XP, and you need to view a calendar to see what day of the week a particular date falls on, how do you do it? Well, if you are like 95% of non-corporate windows users (not getting your time from a domain controller or time server), you probably double click on the little date/time thingamajig on the taskbar. This takes you to the computer’s date/time settings, which allows you to you know, change the system date/time. This is idiotic. Really, what you want is a calendar application to pop up. Some mystical application that lets you view upcoming dates, which is iCal on OS X and non-existent on Windows. So, if you want to see what day of the week the 30th of next month falls on, you have to actually change the system date/time to next month. Now of course, if you just hit Cancel, it won’t apply your changes, but sadly, my parents and many others aren’t that savvy and just hit OK when presented with any non-threatening looking dialogs. Additionally, there is no warning that you are making a system wide change.

This ends up, ridiculously, having a pretty terrible impact on the user’s web browsing experience. When my parents attempted to access their bank/credit card website after accidentally setting the system time to a month ahead, all of a sudden, their PC thinks that Amex’s security certificate is invalid and blocks them and warns them that the site is not secure because the system time is ahead of when the certificate expires. This is so incredibly dumb. OS X and most Linux distros gets this interface wrong too. Settings to change the system time should be buried somewhere in system preferences, and arguably, you should be required to have Admin rights to change it. When an end user clicks on that little date/time thingamajig, they should get a calendar application (non-existent in windows), not a date/time settings dialog.

UPDATE: Making this even more ridiculous, I checked out the time sync properties, and it was actually set to sync automatically wint time.windows.com or what have you, and a successful update had been performed on 9/26/08. Awesome. Syncing time from the future!

Secrets of Being a US Open Ninja

KL and I went to the US Open last night and saw some great tennis. The Williams sisters beat the crap out of each other until Serena prevailed, and M. Fish put up a great fight with Nadal for a while. We’ve been lucky enough to have a great ticket hookup over the past several years, so we’ve gotten quite adept at navigating the area, dealing with the crowds, and generally getting the most bang for our bucks while there. Here’s a few tips I think are worthy of sharing.

Prep Work

  1. Money. Use your bank’s ATM before going. I recommend $100 bucks. Should get you enough beer to drown in.
  2. Your own food. Dinner and snacks. Get some good sandwiches from somewhere. Food and drink here is an even bigger rip-off than at most events. All brought in items must be in a non-sealed container.
  3. Water.
  4. Bring this stuff in disposable plastic bags, or better yet, some sort of cloth bag that you are positive will get through their stupid bag requirements. (No med-large backpacks)
  5. Sunscreen
  6. Sweatshirt
  7. Hat
  8. Sunglasses

Getting There

The train is the only acceptable way to get there if you live in NYC. If you are driving, you are out of your mind, and I can’t give you any applicable advice besides, “Stop it!”. While living in NYC, you somehow need to get yourself to the 7 express train. Local is not a good option for getting there. We live downtown, so for us, the preferred route is the 4/5 to grand central. Here are our specifics.

  1. 4/5 Stop at Wall St.
  2. Enter at southern most entrance.
  3. Once through turnstiles, walk 15 feet to the right.
  4. Upon getting to Grand Central, you will magically be right in front of a staircase leading to the 7 train.
  5. Take it.
  6. When you get to the final set of stairs before the 7 platform, turn right.
  7. Up ahead, towards the eastern end of the platform, there is a newstand.
  8. Move about 10 feet east of that.
  9. Wait for the express train. It is incredibly faster than the local, and you are going way out there. 7 Express is denoted by a diamond on the side of the car.
  10. When you get to Shea, magically, you will be exiting the subway exactly at a staircase that leads down and off the platform. You should be able to get ahead of the rest of the train crowd, which will be important for the next part.

My father swears by not bringing bags, and zipping though the security check. I don’t agree. It has never taken more than 15 minutes, and the amount of money and indigestion you save by bringing your own food more than makes up for it. Say hi to the guy dressed as a giant doublestuffed Oreo, commiserate with the grounds staff. The bag check is cursory and quick once they start moving.

Getting Drinks

Congrats! You got there! Ahead of the crowds even. Now what? Want a drink? Pass the initial stands at the entrance and head inwards, toward Arthus Ashe stadium and you should get to the second set of drink stands. If you are lucky, there won’t be a line yet. Whose sponsoring this year? Grey Goose? Nice. The signature cocktail this year is a $13 Grey Goose Honey Deuce. Vodka, Chambord, Lemonade and a trio of melon balls on a stick. Pretty pricey, but a good way to start off the night. Step up and order yourself one. Tip the bartender before he starts making your drink and make sure he sees you do so. They don’t have the ridiculous auto-measure doohickeys that most sporting events have, they get to actually use a jigger/pony so, if they are feeling appreciative, they might dump an extra half shot in for you ;-)

Now, look to your left, tons of tables. Why is no one sitting there? Because they’re all stuck in the subway mire which you smartly avoided by being a subway ninja. Grab a table, or pop a squat anywhere in this area, settle in, eat your non-ridiculously priced food, enjoy your drink and relax until your matches start.

Once inside the stadium, during the match, the only thing worth buying is the commemorative $9.50 extra novelty sized beer. Generally crap beer, but hey, you get to keep the crappy cup too. You can use the same cup for the rest of the night and get it refilled. Good for the environment and your drunkenness!

Closing Thoughts

Well, you made it. Sit back, relax, and enjoy the awesome tennis. Hopefully. Last words of advice are use the bathroom and go for refills during a game, not in the space in between sets or games. Oh, and if you are at the night session, good luck getting back! The 7 is now most likely running local, but still for $2.00 or, you know, free if you have a monthly card, you can’t beat it.

Fake Chrome is Cool

I really like these two examples of designing web UI elements that blend right into the browser’s chrome.

First we’ve got Google’s Firefox start page, which has probably been my default page for the last n years or so. The simplicity of this trick is great, basically just color matching with a little gradient, but it gives the nice illusion that the Google service links are actually part of your browser. Provides some one of the main benefits of a Firefox extension, without the extension. Sweet.

Next up, we have the little notifcation/chat controls on Facebook. Once again, they’ve disguised their controls to blend right in to an interface that users are comfortable with and have been using for quite some time. Pretty slick. I bet many users don’t even realize that this is part of Facebook.

Anyone else seen some cool examples of this type of thing? Is there a design term to describe this? I guess it’s just attempting to do the something GUI toolkits have done for years and provide a familiar, consistent interface. Neat to see the browser as the target, and maybe (but probably not) warrants some consistent definition and description. I’d like to propose a new term Chromulent Interface Design to describe interfaces built in HTML that attempt to seamlessly blend into the browser’s chrome. Yes, I’m making a Simpson’s reference that has nothing to do with the original joke, but so what. It’s a perfectly cromulent term.

UPDATE: Afshin makes the really great point that this kind of sucks because it makes it quite easy for malicious web developers to build chromulent interfaces that look trustworthy.

Super Secret Laptop Support Trick

I’m not sure why, I just sort of seem to have this knack for fixing computers when stuff goes wrong. To the person I’m helping it always seems like magic, but not really having a penchant for wearing robes, I try to assure people it’s just experience that’s built up for the last 12 years or so.

Anyhow, they should distribute this tip on the packaging for laptops. If you ever try to start up your laptop, and it basically stalls and won’t turn on (before you even get to the OS loading screen), do this first.

  1. Plug it into the wall.
  2. Remove the /batter[y|ies]/
  3. Try again.

This has worked for me the majority of the time. Some poor coworker of mine who usually works from home started commuting at 4:30am this morning to come into our NYC office only to have me fix this in 20 seconds as I was casually walking around to say hello to some people.

The River Wild With Idiots

I had an interesting experience this weekend. It served to remind me that even generally smart people can be complete idiots sometimes. And I’m talking about me and my family here, not the normal idiots I’m usually ranting about. So, KL and I go up to visit my sister and her husband, LC & DC in Quechee, VT this weekend. They moved up there a few months ago in search of a reprieve from overcrowded classrooms and 2 hour commutes and they definitely found what they were looking for in those respects.

KL and I left from New York around 12:30 on a Friday afternoon to take the A train to the GWB bus to Teaneck and pick up a car. We get there around 2:00 and hit the road by 2:30. In order to bypass the collapsed footbridge near the crossbronx/I-95, I try to be a smart-ass and take the Tappan Zee Bridge -> 287E -> 684N -> 91N. This worked, but we still got idiotically stuck in traffic near Waterbury, CT. Eventually, we land in VT around 8:30, exhausted, but fine, grab some food with the Chomkos and get our sleep on.

We wake up pretty early and get our hike on, convincing DC that we can’t possibly do a 12mi, 4K elevation hike, and instead settle on half of that, starting from the middle, round trip 6mi, 2K elevation, ending on the top of beautiful mountain. This is tough going. Besides subways, KL and I don’t get much practice on steps. The weather, which was supposed to rain all weekend, miraculously cleared up and we had an awesome sunny day. We’re all pretty zonked when we get back, but manage to make it to dinner and even catch some Olympic games on the tube afterward. Tomorrow is the real adventure, wherein we plan to get our kayak on.

We wake up, eat and and get ready to go pick up kayaks. DC works at an EMS in Concord, NH (about 15 minutes away from Quechee) where he has the awesome perk of being able to borrow kayaks for free. We get to the store which isn’t open yet, schmooze with his co-workers, who all seem pretty cool, and I pick up a pair of Reef flip-flops because I’m a moron and didn’t bring anything waterproof to wear on my feet. It’s at this point I should probably mention that EMS has a pretty awesome return policy. If you have your receipt, you can basically get a new whatever, or get your money back. Yeah it’s insane. I don’t know how they can offer that, but they do. This will become a point of hilarity later in the story.

Anyway, after about an hour of canoodling the kayaks onto the two cars with roof racks, we were ready to roll. Now important decisions. Do we want to paddle around a lake like nincompoops, or do we want to be badasses and hit up the river? We decide to go check out the river. The thing is, when kayaking down a river, you basically have to have n/2 + 1 cars where n is the number of kayaks you have. And, the real trick is getting all these cars and equipment into the right places, as you’ll soon find out.

We pull up to the portage trail near Wilder Dam on the Connecticut River. This is where we’ll start our journey downriver. We get the kayaks off the cars, and down to the river. We look around, and they are currently letting water through the dam, it looks a bit rough and rushing, but if you look downriver it looks pretty calm and non-threatening. We decide to go for it, but before we do, we have to move the two previously kayak carrying cars to the landing where we are supposed to end our kayaking so we can easily load up the kayaks when we are done and head back to the store. We get to the landing, lock up the two roof rack cars, containing towels, and warm clothes, and head back to the damn dam in the third car to start our journey.

A we’re driving back to the dam, DC regales us with stories about his co-worker E, who it is rumored goes kayaking 4 or 5 times a month. E told DC that inevitably, 1/5 times, someone screws something up and leaves some vital piece of equipment, whether it was a car, a life jacket, a paddle, whatever, in a completely idiotic place. We all laugh and call E an moron, we’re way too smart for that. We get back to the dam, everyone hands DC their keys, and he puts them in his glove compartment, we all agree this is a great idea. Everyone knows where the keys are and they won’t get lost, or fall out in the river. We lock up the car, and head down to the kayaks to get started. 1, 2, 3, 4 all in the river and doing fine. The sun is shining, the clouds are white and puffy, the river is calm, even with the downriver current I need to paddle hard to keep up with the group. LC and I have these slightly longer, skinnier kayaks. That will also be important later. Anyhow, we’re having a grand olde time, even going through some tiny rapids under bridges and overpasses. And then the real fun(?) begins.

About an hour and a half in, we get to the point where we should have gotten out. The portage trail where we parked the two roof-racked cars is coming up on the right, but wait – there are some bigger rapids up ahead – Sumner Falls – ooh. sounds dangerous. Does anyone want to try them? DC has been on this route before and didn’t have too much of an issue with it. A few bumps and that was it. First, just DC wants to do it. I say I’ll go with him and the ladies can head off to the right and get out. DC says I should definitely not take the long skinny kayak in, and instead should take KL’s shorter, wider kayak, as it will be less likely to flip. But then, KL kind of wants to do it. And so does LC. So we all seem to conveniently (including DC) forget the advice DC just gave me about the skinny kayak and go for it.

DC heads in first. He gets through without incident in a shorter kayak. LC goes next, and gets over the first two humongous waves, but a third sideways moving wave takes her out and flips her. I can’t see any of the carnage, I’m hanging back as KL heads in. KL freaks out a little because she can see LC’s flipped boat, but not LC (she was fine, just on the other side of it) In her shorter kayak, KL loses the skirt that’s meant to keep water out and while she doesn’t get flipped, she ends up in a kayak full of water and needs to pull over to drain it. I head into the rapids. Whoa. They are much bigger than we thought. I survive maybe 1.5 waves and get flipped over. I’m out of the kayak, the skirt is around my legs and preventing me from kicking. My new sandals are definitely not on my feet and I see one float by, while the other one is somewhere in my kayak, which is now full of water. Somehow, I still have my hat and glasses on and I’m holding the paddle with one hand and my arm around a half capsized kayak. I kick the skirt off and take stock of the situation. I’m still in rapids, but luckily the water level was so high (it had been raining all week before we got there), I’m nowhere near rocks. Everyone else is on the left bank and so I try to swim myself and this huge ass, water filled kayak over to where they are.

Eventually I make it over to the bank, not really near any of the others, but I have the boat. the paddle, and one flip flop. Goddammit. I just bought those. As we collect ourselves and dump the water out of our boats, we look across the river and for the first time, get a bit freaked. In order to get back to the landing, we basically will have to paddle across some pretty choppy water, to the right bank, and then upstream about 0.25 miles to the landing. We get set. We go. We get halfway across the river, and seriously, out of fraking nowhere, a giant ass bolt of lightning flashes through the sky. DC is pretty much already at the landing, but the rest of us are still making our way across the river, and haven’t attempted to go upstream. KL freaks out rightfully so and we all pull over and get the crap out the water.

And it rains. and thunders. And it gets worse. And we’re sitting there like morons, in the middle of the woods on a riverbank, with basically nowhere to go until the weather lets up. As this is happening, the river is getting faster and rougher, and it’s looking less likely that any of us will be able to paddle upstream against the current, even if it stops thundering and lightning. Oh. I have no shoes and KL is wearing flip flops.

Eventually DC hikes back from the landing to find us, through some pretty sketchy, very steep terrain. As he’s talking about how bad this is, and how we need to get those boats back, it dawns on him. We are even more screwed than we previously thought because like the complete idiots we are, we had locked the keys to the roof-rack cars, in the other car’s glove compartment BACK AT THE DAMN DAM AT THE START. What the hell is wrong with us! We start cracking up. We can’t think. It all seems like a bad movie. It’s getting colder. Raining harder. The ladies and I want to wait a bit for it to clear up, or at least stop thundering, but it looks less and less likely that it will happen anytime soon.

At this point, we’re all pretty tired. And hungry. We have lunch, but it’s back at DC’s kayak so we hike through the really sketchy terrain, KL and me without shoes on because it’s actually easier on the really steep dirt. We feel like hobbits. Then bugs. We’re filthy, wet and tired. We eventually get there and eat. And then we find our saviors – sort of. Two dudes out on the riverbank fishing let us borrow a cell phone (my crappy phone got pretty much 0 bars all weekend up there) and call a “cab”. It’s going to take them an hour to get there (even though they are only 6mi away), and meanwhile, we’ve got two locked cars full of warm clothing and no way to get into them, three kayaks out in the woods on the side of the river and we’re freezing our asses off, standing in the rain, like idiots.

Eventually the “cab” comes. It’s some dude in a car with a light on top. DC goes with him to retrieve the third car with all the keys back at the damn dam, and the cab driver is freaking him out, asking how many girls were left back there and other such inquisitive weirdness. I stayed with the LC and KL. We were supposed to go back for the kayaks if it let up. Ha! Fat chance of that happening. We should have all just gone in the cab. Anyhow, an hour passes. We start worrying. We started maybe 20mi away by car, so it shouldn’t have taken him more than 40 minutes to get there and get back. And just as we’re ready to flag down a car on the side of the road and call the police, DC gets back. The cab dropped him off on the wrong side of the dam, and the only way for him to get back was to walk 3.5 miles to a road that went around it. After deciding not to cross the damn at risk of electrocution, DC decided to run. At first in his wet sandals, and then when those gave him blisters, barefoot. He had some of the worst burns on his feet I have ever seen. He thinks he ran it in about 20 minutes. He knew we’d be freaking out.

Anyhow, he eventually gets back. the girls get warm in the car, we get some dry clothes. And what now? Go home? Ha. DC and I head off into the woods to try to deal with the kayaks. Continuing to be idiots, we don’t bring the nylon lashes that we used to hold the kayaks onto the cars. The thinking, after we got back to the kayaks anyhow, was that we could tie the third kayak up to DC’s and he would be able to tow it back to the landing behind him. We attempt to lash two kayaks together with a spare life jacket, and fail miserably. We contemplate trying to drag the smaller of the three kayaks up the incline where there was a shady dirt road, but determine after trying, that this is probably the most dangerous thing, the pitch of the hill is just way too much. So finally, after it’s been not thundering or lightning for a while, probably an hour at that point, we decide to leave one kayak overnight (it’s starting to get dark) and paddle two back. At this point, the river is rushing. The outlet from the dam combined with all the rain had fully caught up to us. DC goes first and gets pulled a bit downriver, but eventually makes it back up to where I am standing, and has much less of a problem after that. I hop in and try to take a left into the oncoming current, but instead am immediately facing and traveling downriver. I manage to grab a bush on the side of the river and hang on. I must have sat there for 5 minutes clinging to this bush, contemplating how I was going to turn the boat around and in a moment of inspiration (deperation too) I push off the river bank at the back of my kayak, sending me spinning clockwise, and landing me facing upriver. And then I paddled. Like crazy. My arms were going to fall off, but I’ll be damned if I was going to not get back to that landing.

Both of us get back to the landing. And if you can fraking believe the insanity of this guy, DC wants to go back and get the last kayak! As a manager there, I guess he didn’t want to have to deal with the emarassment of coming back to the store without all four boats. Not that it matters at this point, the store had closed hours ago, and didn’t open until 10:00am, so we finally convince him that we can come back in the morning and grab it. We leave, exhausted, drop the kayaks off quickly, get about 5 pizzas, shower, and stuff ourselves stupid. I rummaged through my soaked shorts and found the soaked, squashed, EMS receipt for the flip-flops, tossed it to DC, and told him I wanted my money back because they didn’t stay on my feet.

There’s a lot going on here, but mostly I think our misfortune was a certain product of our own stupidity.

  1. Hubris. Calling E and his friends morons instead of heeding his advice and thinking a bit more about what we were doing was really our ultimate failure here. If we had the keys, things wouldn’t have been nearly so bad.
  2. Not taking into account the dam outlet, the fact that it had been raining all week, and that none of us really knew the river. We should not have gone over those rapids. They were huge and we were in the wrong kind of boats. KL had never been on a river before. In fact, given all the things we did know about what the weather was like that past week, we should have really just gone to the lake. Underestimating nature seems to generally get people hurt or killed. I think we probably need to be a bit more careful next time.
  3. The impending storm. Well, you can’t really do anything about this. The local guy/fisherman suggested to us if we had stayed in our kayaks in the lightning, we would have been fine. At that point we were all soaking wet and had taken on some water. I seriously doubt that would have been the correct thing to do. Maybe if we were in a larger boat and not wet though. Still pending some research on that topic.
  4. Wear shoes or teva-like sandals when kayaking. Things that can’t fall off your feet. You never know when you’ll end up in the middle of the woods and need to hike.

In the end, it’s something we’ll laugh about for the rest of our lives. We did have a great time, I think DC still feels bad about it though, but he shouldn’t. Everyone made ending up being OK, and I think we learned a lot too. I’m kind of curious what they have in store for us next time though…

Some Things You Will Only Learn By Screwing Up

  1. Don’t use an UPDATE or DELETE statement on a live, critical database from a query browser. Inevitably, you will forget to highlight the WHERE clause. The more time passes that you haven’t screwed this up, the more likely and damaging it will be when you do.
  2. Don’t use email addresses in test data that resolve to a domain you don’t control. Yes, someone owns balls.com. And they probably have a catch all set up so they are getting those test orders ass@balls.com seems to keep placing.
  3. Don’t use personally identifiable data for testing. That goes for your info and your customers’.
  4. Delete nothing. Archive everything. Version control is a necessity, not a luxury.
  5. When writing email replies, especially serious replies about serious stuff, first remove everyone from the To:, CC:, and BCC: lists. Write your message. Save it. Spell check it. Proof it. Then, once you are satisfied with your reply, fill in the recipient lists. This is great to prevent premature-emailculation, a serious problem that affects up to 70% of email users.
  6. Junk food and cigarettes don’t actually make you feel better. Water, cursing, and walking do. Having a seat near the free soda and cookies is not a boon.
  7. If you can’t do it without a mouse, it’s probably not worth doing (unless you are a designer, artist, or talking about games). Your hands will thank you too.
  8. Your users might be idiots, but you are an asshole for not providing them with an interface so easy to use that even an idiot could figure it out.
  9. A fish bowl does not a good drainage system make.
  10. There was something else, but I forget. I guess ‘Write good ideas down somewhere’ will have to sit in the tenth slot for the time being.

Changing My Name

Zac([kh]|hary)$

As Afshin says, it’s pronounced “Zack Dollar”.

Disable/Hide Menu Items?

Joel writes about disabled/hidden menu items. I don’t completely agree. I think it’s very useful to quickly visually identify what actions are not allowed in any given context. One compromise might be to make the menu item look disabled, but when clicked it gives an explanation of why the selected action cannot be taken. Of course the messages presented to the user need to be made meaninful, instead of just “This action cannot be performed at the current time”, but that seems like a whole can of worms.

← Before After →