Logo

Friday, February 10, 2012

Where did the time go?

Alright, you’ve been wondering where I’ve been, why this site has gathered cobwebs and why on earth have I woken it up now..

After over a dozen years working with speech on the Mac, I now find myself looking forward, looking at options and opportunities. Having weathered all the ups and downs in a small company, broken the trail to bring real speech recognition to the Mac and created a very successful (and award winning!) product line, ridden it out through the acquisition by a rather large corporation. And then working to adapt a team into that much larger picture, well.. Nuance and I have parted ways.

What I find most interesting was my initial ‘morning after’ reaction, I woke up thinking about various UX items on upcoming features that need my attention, how to balance the value of sandboxing with the needs and value of interapp communication. And continuing to ponder what new directions Apple is going to go with Siri. Old habits die hard, don’t they?

And now it’s time to set aside some of those more specific habits and consider what’s next..

Requisite Documentation

posted by ganyard at 11:57 am  

Friday, February 3, 2012

Where does the time go?

Looks like I’ve got a bit more time on my hands all of a sudden. So what to do.. I’d tried the blog thing a while back, maybe I could revive it. Oh… while I wasn’t looking it got hacked. Drag.

Ok, nasty unwanted stuff has been removed, maybe this is something I can spend some time on for a while again.

I think so.

posted by ganyard at 6:43 pm  

Wednesday, October 10, 2007

The most stylish are often running a little late…

I finally opened this back up and added some things and fixed some things. Thanks in part to some contributions by Mark Hill over at MachineCodex and it really was long overdue.

I expect that 10.5 might change some things with windows *wink, wink* but this is probably still a useful class. Once 10.5 has shipped I’ll try to find some time to revisit this and make sure it behaves correctly.

Until then here it is – 2 significant changes:
1 – toolbars are maybe really actually finally at last working correctly, possibly
2 – separate gradients for top and bottom borders
3 – thanks to Mark Hill’s example, gradients are drawn directly into the bg image
4 – the files have been cleaned up
(the astute will note that I don’t really feel 2 of the items above are significant, that might as well be left as activity for the reader)

Note: In order to avoid extra work from adding a second gradient, I chose to break the old API (just a little bit). So this is not a drop in replacement but you will know that right away.

Latest StyledWindow

posted by ganyard at 5:36 pm  

Tuesday, July 17, 2007

When confused, run away!

This is just too much fun to keep to myself.

Xcode Bails!

Might be an interesting approach to life. When overwhelmed by something, just bail.

posted by ganyard at 10:14 am  

Thursday, January 18, 2007

Those stinkin’ NewApplication menu items.

I feel pretty bad.. it’s been a long time since I’ve posted. I had such good intentions about doing this regularly, didn’t quite keep that up. To allay my guilt, here’s something (I think is) useful.

Why can’t I just have some kind of substitution token for my App name in my menus? It would be so nice if this was just handled for you. Or even just use preprocessor macros. Or something so I don’t have to build things programmatically.

I’m working on a project which produces various targets, why would I want a separate MainMenu.nib for each target, when except for the App name they are the same (or at least nearly so).

So here’s what I did in my AppController’s AwakeFromNib:

NSEnumerator *menuEnumerator = [[[NSApp mainMenu] itemArray] objectEnumerator];
id menuItem;
  while (menuItem = [menuEnumerator nextObject]) {
    if ([menuItem hasSubmenu]) {
      NSEnumerator *subMenuEnumerator = [[[menuItem submenu] itemArray] objectEnumerator];
      id subMenuItem;
      while (subMenuItem = [subMenuEnumerator nextObject]) {
        NSString *menuTitle = [subMenuItem title];
        [subMenuItem setTitle:[[menuTitle
            componentsSeparatedByString:@"NewApplication"]
            componentsJoinedByString:[[NSProcessInfo processInfo] processName]]];
      }
    }
  }

Maybe you’ll find a use for it somewhere.

posted by ganyard at 10:30 pm  

Copyright © Bithaus