27 July 2006

Composition Arts

In a kind of déjà vu moment, two of my favorite blogs posted about the same thing, on the same day! The topic: How writing code is similar to writing prose. Christina Wodtke of Boxes and Arrows takes E.B. White's “List of Reminders," from The Elements of Style and compares them to web design. Matt Linderman of 37 Signals compares the stages of the writing process to that of software development. I think there's a lot to be learned with these comparisons. Without a full understanding of how construction or manufacturing actually occur, it's easy to compare software projects with construction projects. I think there's probably more similarity between writing software and writing prose than manufacturing or construction.

ExCodeWarrior Schwag

I've written before about our ExCodeWarrior dev shirts we got as reward for successfully moving our code from CodeWarrior to Xcode. Well, now you too, can pay your respects to CodeWarrior, in mournful black, as well as honor the great work the Xcode team has done, and all this in time for WWDC 2006! I'll have my ExCodeWarrior shirt on, will you? ;-)

25 July 2006

My WWDC Wishlist

After reading John Siracusa's hilarious post about WWDC Buzz Word Bingo, I got to thinking about what I'd most like to see at WWDC. Here's my list:

1. Make it brain dead simple to write multi-threaded applications.

How simple? If my application runs fast on a dual core machine, I want it to run twice as fast on a quad-core, no recompile. Too difficult? I'd settle for automatically routing all AppKit method calls to the main thread only, so anything the user sees with their eyes is on the main thread, but everything else happens on other threads, no extra coding by me.

2. Widescreen iPod phone

First and foremost, make it a great phone. Second an iPod. Third, and a distant third at that, a platform I can build upon.

3. Video Airport Express

Encode TV signal to MPEG 4 and send to my Mac's disk drive in real time while I watch another channel streaming from my Mac.

That's it. I'd be happy with that.

P.S. If you are going to be at WWDC this year, drop me a line. I'll be there, and I'd love to chat!

My First QTVR: Petra, Jordan

A few years back, my sister and I went on a travel study trip to Egypt, Jordan, and Israel. It was fantastic! I had a digital camera, a wide angle lens, a Kaidan mount adjusted for the focal point of the lens on my Dad's Kodak, DC265 Digital Camera, and enough storage for about 64 "high quality" digital pictures.

Side Note: If in the future, you are going to bring a digital camera to a place where you will most likely never visit again, make sure you have enough batteries and storage to take as many pictures as you can, even if it costs a lot.

Well, I did get a few good pictures, but one of the most interesting places we visited was Petra, Jordan It is was one of the high lights of the trip. I set up the tripod and 12 or 13 portrait pictures later, I had enough to stitch together in Apple's QTVR creation software. It was super fun and I thought you might enjoy the look around. You can also check out the Google Maps images here.

15 July 2006

The General Purpose Thing

Recently John Gruber wrote about the The Mac OS X Tipping Point and finished with this sumation:

You can’t appeal to all people all the time, but Mac OS X comes remarkably close. The old Mac OS, as insanely great as it was, did not.

I think what is so quickly forgotten about the transition to Mac OS X was Apple's against-the-grain assertion that they could build an OS the did appeal to beginner users and power users alike! This was NOT the prevailing wisdom of the day. I even remember seeing previews of the OS in which there were "modes" like standard user and advanced user. Simple Finder in Mac OS 9, ultimately was an outgrowth of this kind of thinking. Additionally, Microsoft was pursuing a dual code base strategy for desktop vs. server. Apple's insistence that you could actually build an OS that did scale from the grandma turning on a computer for the first time to a seasoned UNIX developer was courageous and spunky at the very least.

Recently, I have noticed a resurgence of the idea that the general purpose tool is by definition a less effective solution as compared to something more task specific. This hits home to me personally since I work on software that is used by a very broad spectrum of Mac users. There will always be tension when trying to design software to appeal to such a large and diverse audience, but simply factoring the problem into a "pro" and "beginner" products is the easy way out. You can make software that has general appeal and scales gracefully to a user's needs as they grow, it's just very hard to do! Difficulty aside, it is this kind of "scaling up" that defines what I love about great Mac software. All the core features are apparent and easily discoverable, but as you need more functionality, you effortlessly find them, almost as if the designers read your mind. Tools like these become transparent to your workflow and are a joy to use.

OS X Software for Switchers

Thanks to Ars Technica I've been pointed to another great switcher resource. The post lists software that will make your stay on the new OS much more enjoyable.

03 July 2006

Following Directions

Did you ever get one of those tests on how well you could follow directions? I remember a sheet of paper with more than 20 step by step directions (not unlike some usability studies...) and when you get to the last step you realize you've gone all wrong because of a careless reading of the instructions before step one? Well, here's your chance to redeem yourself. Maybe. ;-)

P.S. I must have clicked it at least 100 times before I stopped...

The 2 Fingered Right-click

For you die hard control-clickers MacBook Pro users out there, with Mac OS X 10.4.7, Apple just updated the OS so that in order to produce a right-click you simply place two fingers on the trackpad and click. While not as addicting as two fingered scrolling, this is a welcome improvement and allows Apple to retain their iconic single button mouse without a significant loss of functionality. Could a three fingered click be next? Don't count on it.

30 June 2006

IT Collaboration

Christian Buckley is friend of mine, and not only was he recently hired on at Microsoft, but he works in the same building as I do! MacBU shares the same building with, of all groups, our Microsoft IT department! I love that when they walk into work each day or schedule meetings in the conference rooms on our floors, they get to see all our Think Different posters. ;-) Anyhow, for the IT folk in the audience, Christian just got a new shirt that you might appreciate:

29 June 2006

Curiosity and Exploration

From the beginning I've liked what's going on over at Make magazine. I love their video podcast and all the crazy projects they put on display. What they show are regular people, just like you and me, doing stuff, making things, being creative. I was just reading an article titled, Life is Not a Spectator Sport by Darla Isackson in which she makes a very interesting point:

Today’s children are following the example of many adults to become watchers instead of doers, consumers instead of creators, observers instead of active participants. ... Instead of singing, they watch others sing. Instead of making up stories, they watch or listen to stories someone else made up. Instead of figuring out how to do something and developing a new skill they watch someone else perform.

This is so true! There are many reasons for this, but one that stands out to me is the very focus on math and science, these left-brain, less active, and somewhat less creative activities. What's funny to me, is that while the whole schooling infrastructure is supposed to produce excellent employees, what the post industrial revolution market needs is "makers", people who creatively produce.

Paul Graham recently published an essay about the The Power of the Marginal. Near the end he makes this summary comment:

If I had to condense the power of the marginal into one sentence it would be: just try hacking something together. That phrase draws in most threads I've mentioned here. Hacking something together means deciding what to do as you're doing it, not a subordinate executing the vision of his boss. It implies the result won't be pretty, because it will be made quickly out of inadequate materials. It may work, but it won't be the sort of thing the eminent would want to put their name on. Something hacked together means something that barely solves the problem, or maybe doesn't solve the problem at all, but another you discovered en route. But that's ok, because the main value [of] that initial version is not the thing itself, but what it leads to. Insiders who daren't walk through the mud in their nice clothes will never make it to the solid ground on the other side.

The word "try" is an especially valuable component. I disagree here with Yoda, who said there is no try. There is try. It implies there's no punishment if you fail. You're driven by curiosity instead of duty. Which means the wind of procrastination will be in your favor: instead of avoiding this work, this will be what you do as a way of avoiding other work. And when you do it, you'll be in a better mood. The more the work depends on imagination, the more that matters, because most people have more ideas when they're happy.

If I could go back and redo my twenties, that would be one thing I'd do more of: just try hacking things together. Like many people that age, I spent a lot of time worrying about what I should do. I also spent some time trying to build stuff. I should have spent less time worrying and more time building. If you're not sure what to do, make something.

So what should you do? Don't just watch, do something! Don't be afraid to try. Fear kills creativity. Just do something, anything and you'll be surprised how much you'll learn and how well it will go. It's the doing that matters.

28 June 2006

WebKit's JavaScript debugger

Now WebKit includes a JavaScript debugger named Drosera. To use it you need to get the newest build of Safari and enter this in the Terminal:

defaults write com.apple.Safari WebKitScriptDebuggerEnabled -bool true

The best quote is this one:

One of the unique things about Drosera, like the Web Inspector, is that over 90% of it is written in HTML and JavaScript. This is a true testament of what you can do with web technologies today and the rapid development that WebKit allows.

This is cool.

Words Matter

When I wrote the title for this post, it seemed almost trite. I don't mean it to be. The words we have at our disposal define the thoughts we are able to think. If you've learned another language and become fluent enough to think in that language, you know what I mean. I spent two years in Brazil as a missionary and grew to love the Portuguese language. While I took my required 2 years of German in High School, there's nothing like living the language to teach you subtleties of the words. There are some ideas that simply can not be described in another language. The Portuguese word saudade, I think, falls into this category. Further, there are the synthetic languages, like Arabic, where I understand that one symbol can take a whole English paragraph to explain! Simply put, the words you use matter, and more than you might think.

My coworkers often chide me, because when I have a new idea, I'll spend hours trying to come up with the name for the thing. Why? Because it frames the way you think about the idea and code names simply don't switch well. You've got to get the name first. I've never really been able to explain this, but I just heard a speech given by Bruce Sterling that I think finally explains the idea really well and introduces several new ideas along the way. The Internet of Things, check it out.

27 June 2006

Glue That Doesn't Set

Dave Thomas posts about how Perl and Ruby are like glue that connect things together on the internet. The problem with Perl, he conjectures, is that it "sets". When you read Perl, especially if you didn't write the code, it's difficult to discover what is going on and therefore difficult to modify. Now, you can write obfuscated code in any language, but I'd have to agree that Perl has a propensity toward poor readability. What's interesting to me is that Ruby is described as the "Glue That Doesn't Set" or the code that is always easy to read and understand the intent of the author and on top of all that easy to modify. That's pretty high praise if you ask me. I wonder if it's more the conventions and included libraries (Rails, in this case) that make this so, and less the language itself. It's an interesting metaphor anyway.

Small (relatively speaking)

This has got to be my all time favorite comment from the press:

"The autonomy of this relatively small division allows Microsoft programmers to cut loose and design the best software they can imagine… Microsoft's Mac offerings are routinely credited as being more innovative, elegant and robust than its mainline PC products" – Terril Yue Jones, Los Angeles Times, September 2005

There's a lot of energy out there in defense of the small, the startup, the two or three in a garage, and I don't want to take anything away from that, I am a romantic at heart. There are wonderful times to be had by all and room for everyone, but to perhaps add some balance to the discussion, there are some very good reasons for "big". Consider Six Apart the makers of some very successful blogging software. Two founders with a company that has been on the blogging wave from the beginning, the perfect poster child for small and agile. And yet Mena Trott president and a co-founder of Six Apart, writes a post entitled: In Defense of Big (relatively speaking) She writes:

An underlying theme over at Signal vs. Noise is the concept that smaller is better -- smaller in terms of start-up capital, company size, development teams and even hardware. As part of a two-person team that created the initial versions of Movable Type and TypePad, I certainly understand the logic in encouraging small and nimble teams. The eighteen months that Ben and I spent in our spare bedroom coding was probably our most productive for bare-bones software development. Of course, during this same time, we were afforded the luxury of not having to do anything much more than coding and designing -- our project management was done via (what felt like) telepathy.

A long time ago (well, maybe not that long ago -- it just feels like it), Ben and I were at a fork in the road where we had to decide whether we wanted a small, niche company that would serve as a nice lifestyle business or try to be something bigger and take a gamble that Six Apart could make a serious impact on blogging. (A "lifestyle business" is one of those terms that money/funding people use to describe someone who can make a nice lifestyle for themselves with their company, but doesn't really make jobs or opportunities for a lot of other people.)

So here we are -- a big, small company or a small, big company. I've been on both sides of the table and have to say that it's pretty nice where we are. And since the "small is better" argument is very often offered in both elegant (Signal vs. Noise) and ignorant (Generic "Being Corporate Sux!!") ways, I thought I might contribute my reasons to why bigger can be better.

She then lists her reasons:

1. More people, different view points.

2. Accountability.

3a. Creating jobs for many people.

3b. It's nice not to always have to bootstrap.

4. The ability to shift roles.

5. Sticking to what we're good at.

6. It isn't just an American thing.

7. Creating products that really make an impact.

I'm a bit biased in talking about this whole thing, but I can say that the small startup resonates with me, like with others. That said, there are great things you can do for others as more people use your product and with the scale comes the blessings and challenges of software in the large. Check out her full post. It's a great read.

Enterprise Feedback for MacBU

A while back I posted about our new release of the Office Resource Kit for enterprise admins. We have setup two methods for you to give feedback on what you'd like to see in the next version:

1. An online survey - It will be active until the end of July 2006

2. An email address - Mac IT Pro Feedback - macitfb@microsoft.com

Note: We had the online survey setup earlier, but inadvertently set it up so after one response, the survey closed. It took us a while to figure out there was a reason only one person responded. ;-)

23 June 2006

Net Neutrality

There is talk all over the internet and on capital hill about this "net neutrality" and what it is, and why it's important. I've heard several people try to define it, but Tim Berners-Lee, arguably the inventor of the Web, I think has said it best:

Net neutrality is this:

If I pay to connect to the Net with a certain quality of service, and you pay to connect with that or greater quality of service, then we can communicate at that level.

That's all. Its up to the ISPs to make sure they interoperate so that that happens.

Net Neutrality is NOT asking for the internet for free.

Net Neutrality is NOT saying that one shouldn't pay more money for high quality of service. We always have, and we always will.

When I pay my ISP for connecting to the Internet, I pay for the bandwidth for ALL traffic I choose to send an receive. If it is phone traffic (VOIP), web (HTTP) or video (RTSP), I want my bandwidth and quality of service to be the same across all protocols independent of the payload source or destination. The idea that my ISP (currently Verizon) could give priority to their VOIP services, their movie services and their web sites, while slowing or retarding the quality of other competing services seems repugnant to me and simply unfair. Net neutrality is important because it keeps the Internet a level playing field where competition can thrive.

20 June 2006

Adobe and Microsoft on PDF

Brian Jones has a follow up post about the whole no default PDF support in Office debacle. It's an interesting read that also points to the official statements of both Microsoft and Adobe regarding the issue.

It seems like Adobe isn't as concerned about financial implications of PDF creation loss as it is about losing the control over the openness of the PDF format. Does that last sentence strike as a bit of a strange oxymoron? Welcome to the ironies of success.

Switching

This has got to be the best one page guide to the details of switching from a Windows PC to a Mac I've seen so far. I've got a bunch of friends that have recently made the switch and this is what I'm going to have them read.

19 June 2006

Interface Guidelines

Here's a fun comparison:

Java Look and Feel Design Guidelines

Windows XP - Guidelines for Applications

Windows Vista User Experience Guidelines

Apple Human Interface Guidelines

Read them if you'd like, but for now, just consider the main page of each guide. Who do you think will be most successful at getting their developers to really follow the guidelines and make their applications "full citizens" on the platform?

Design matters.

On every page.

It's All About the Experience

For Father's Day we decided to take a road trip down to visit my folks in Vancouver, WA. It was a great weekend and spur of the moment we decided to let the kids and Mom stay with the family for a few more days while I took the train back to Seattle. I've never taken the train anywhere. Purchasing the ticket online was a breeze and the Vancouver depot is old and just darling. Right after I got on the train and we started pulling away, I looked back to see the bridge the train just came over rotating on its center to allow boats through, and that was just the beginning of the picturesque trip I am now experiencing. I'm in Business Class which means I paid the extra $13 for an electric outlet I can use to power my laptop during the 3 hour trip. It's quiet, and pretty smooth once you get used to the rocking from side to side. There's a sign, in the front of each car that says, "Using a cell phone? Please be considerate of others." And if someone has a long, loud conversation they take it to the enclosed vestibule in-between each cabin car. It's quiet and comfortable. There are wide isles! I'd have to really reach in order to touch my neighbor across the isle. Also, I didn't have to be at the station 2 hours early like for an airplane trip, and there are no lines! (Incidentally, there was no security check of my bags at all! I guess trains are not as big a security risk as airplanes? I don't know...)

I'm half way through the ride as I type this and all I can say is if AmTrack is not growing, it's simply because they haven't figured out how to improve and sell the experience of classic train travel. I could easily envision luxurious lunch appointments, private booths, full Wi-Fi internet access and large windows. They could have family cars for longer trips, where children don't have to be strapped to a car seat, or confined to coach class seats on an airplane. No more road trip bathroom stops. There would be constant access to excellent food, time and access to movies, board games and always a dynamic and beautiful view. This is to say nothing of having your young child gently rocked to sleep. (As I look around right now, there are already 5 adults asleep.) If I were in-charge of AmTrack I'd remake it into a posh, elite experience that people could look forward to and remember as the calm, peaceful way to travel, a level above cars and planes. It's not the destination, it's the journey when you are on a train. When you are paying for a commodity, you are destination driven, but when you are paying for an experience, then you can charge a premium, and this is exactly what Apple sells, but Amtrack hasn't figured out yet. It's all about the experience. On top of all that, who wouldn't pay more to have every kid, in every car, at every intersection or passing park wave at you?