Rich Wareham of Desktop Manager
For DrunkenBlogs' 300th post I have a special treat for my 12 loyal readers: a chat with Rich Wareham, the creator of Desktop Manager for OSX. I also couldn't resist the gentle irony of putting this up on the 4th of July. Remember kids, cultural differences are meant to be bridged, and the sharing of alcohol and pejorative phrases are generally a good start.
As a quick primer, virtual desktops are a way of organizing open windows on your screen instead of constantly hiding or minimizing windows or applications. You might have one virtual screen for emailing, one for web browsing, and another for your design application. Switching between them usually involves either a key combination or a graphical pager which holds icons representing open windows. That's a really lousy way of explaining something that will become obvious once you've downloaded it and tried it, so I'd encourage you to do so.
Just about every *nix desktop comes with them, so switchers from that side of the fence often lament on their absence in Apples' OSX. There are other virtual desktop solutions for OSX, but Desktop Manager has garnered much praise for being high-quality, free, and open source. It hasn't won any awards that I'm aware of, but it sure as hell gets the coveted DrunkenBlog Seal of Approval™.
Rich was gracious enough to sit down for another lengthy chat covering a whole slew of topics, everything from iBooks to the GPL to hacking Quartz. Keep your eye on this guy.
What's your coding background, how'd you end up using macs, and what led to your deciding to to start development of Desktop Manager?
I started coding very young. In the January sales of 1986 (when I was five) my parents bought me a Commodore Plus/4 plus a few games. Most home computers in those days came with some variant of BASIC installed on them along with a book which told you how to program. It just so happened that the programming book was the first one I got my hands on. I was a really fast learner then and devoured the book. Indeed I mainly learnt to read via computer books.
Luckily my parents realized then the advantage of having a computer-literate son and helped me all they could. Encouraging me to experiment with programming techniques, saving the results to tape and being suitably impressed at my emerging skills. My father had worked for Dragon Computers (a Welsh computer manufacturer) and was somewhat skilled himself so he could help me.
I slowly became hooked and, usefully for me, it was right at the height of the home-computer programming era in England with plenty of magazines and books (some even intended for children like the Usbourne series) to help me out. I soon progressed further than the Plus/4 would allow and moved onto Acorn machines.
I stayed with Acorns until I started University in 1998. They were wonderful machines to program with good documentation and developer support. They also broadened my mind when it came to 'alternate' Operating Systems.
In the year prior to University I found Linux and again felt that initial thrill of excitement that digesting that programming book gave me. Here was a totally new OS (for me) to play with.
During my undergraduate degree I became more proficient with Unix-like OSes until now it is actually really hard for me to work a Windows machine. It is so alien to me.
Unfortunately one of Linux's flaws, IMHO, is that its not terribly laptop-friendly. I was thus, when I started my PhD, on the look out for a nice laptop without Windows. I had previously had a Linux laptop but found it annoying to set up when, for laptops, you want them to Just Damn Work™. I had heard good things about OS X and how it is Unix-like underneath. Finally after half a year of indecision I gave in and bought my iBook to take to SIGGRAPH and as part of my PhD.OS X almost lived up to all the hype. Indeed here was Unix, with X, on a laptop that Just Worked. Unfortunately little things niggled at me. Chiefly amongst these was the lack of virtual desktops.
There appears to be a culture in the Mac world that you 'micro-pay', $10 or $15 for small useful utilities. In the Linux world they either already exist, are part of the OS or you Just Damn Write Them. Coming from this background I was unwilling (and after the purchase of the laptop, unable) to pay for CodeTek's version. Also the demo appeared somehow 'clunky' to me in a way I couldn't quite define.
Perhaps lead into a false-sense of security by the Unix-like nature of OS X I thought 'It can't be that difficult to create my own' so I started hacking about during some of the less interesting talks at SIGGRAPH. Indeed the prototype version of Desktop Manager switched its first desktop half-way through the Finding Nemo talk (for any trivia-loving geeks amongst you :)). I doubt anyone else in that room was more excited to be browsing the net and checking mail on different Desktops than at the particle-modeling around Bruce the shark.
You mentioned an iBook was your first foray into the mac-world... what hardware are you using to develop Desktop Manager?
A 800MHz G3 iBook with CD (no DVD) and 512Mb RAM. Pretty puny. Any donated G5s would be much appreciated :).
Ah, yes, I'm very, very familiar with the dual-USB iBooks. Whenever I see someone with one, I ask them how many times theirs has gone in for repair in order to bond. How many for yours? :)
Once :). The famous mainboard problem bit me in the arse and it was off at Apple for a few weeks recently (luckily I had backed up the Desktop Manager arch-tree just that very day). Hopefully thats my quota of problems now...
There's been a ton of work going into the problem areas you've mentioned for Linux, but often people either have mindsets of where it was in 1994, or where it'll be in 2014 (sure this is true of many platforms). As an avid user of both platforms, do you see Linux making headway in terms of the desktop?
Ah... Linux on the desktop :). To my mind its pretty much there for power users who are willing to do some research into what they actually want from a desktop machine. I don't think that one can ever truly have a machine that is suitable for all users the moment they sit down in front of it.
All interfaces must do some 'impedance matching' between the way the machine works and the way computer operators think. No one interface captures how all people think. The advantage of Linux in this regard is there are a number of interfaces available so you can choose the one that matches your model best. KDE gives you a Windows-y feel with some nifty desktop integration features, GNOME gives you a mac-ish feel but possibly without some of the tight integration in KDE and there are a continuum of others spanning the interface spectrum. One project I have my eye on at the moment is WMI, one of the emerging 'tiled' window managers whereby everything is arranged for you (almost like Exposé) aside from a few bugs (which I might if fix they annoy me enough) its getting pretty stable.
I think one of the major design decisions in Unix and X, the 'Mechanism not Policy' will ultimately prove to give Linux an advantage since new UI metaphors and paradigms can be fitted onto the X subsystem much as was originally intended in its design. Take for example Sun's Looking Glass or Metisse.
To get back to the here and now (and your question) I think that Linux desktops are at least on a par with Windows and Mac ab initio. Of course the thing that differentiates those platforms is vendor support. There is the classic chicken and egg situation that Linux desktops would be better with vendors making software/hardware for them but vendors will only make the effort with Linux once the desktops improve.
The recent announcements of Linux desktops being deployed in government institutions is probably helping in this regard. Linux desktops can be almost indistinguishable from Windows to a computer-naive user simply browsing the web and checking e-mail so for simple 'utility' roles in the civil service, for example, Linux could be a very attractive option.
Overall the power of Linux is in the choice it offers you with regards interface. For example the German government customizing a KDE desktop to fit with their own needs is something that can only easily be done with an Open Source desktop.
What's your Linux distro of choice, and have you tried Yellow Dog Linux or Gentoo for PowerPC?
Gentoo by leaps and bounds. I've tried most of them, starting with Slackware '96 and progressing through Red Hat, Mandrake, Debian, SuSE, SourceMage and Gentoo. I was enamored with Debian for a while but left it for the sunnier climate of source-based distros when I started to personally find it clunky and inelegant (along with one Debian developer who shall remain nameless nicking my, now ex, girlfriend :)).
I like the Gentoo way of doing things. It seems to fit better with the original 'small, well-defined, orthogonal' methodology of Unix to my mind.
I have tried installing YDL or Gentoo on my laptop but each time I seem to manage to knacker the Mac equivalent of the Master Boot Record (MBR) although the Gentoo livecd works wonderfully and even supports AirPort. I think I should try again but possibly on an external hard drive or learn more about the Mac boot process (learning Forth in OpenFirmware was fun however :)).
Of course this was around the time the mainboard failed so perhaps it wasn't totally Linux's fault.
For most things, however, the ever wonderful fink project fulfills all my needs for Unix tools on OS X. A proper port of xine would be nice though. Perhaps I should add it to my TODO list :).
There's a rumor going around that Desktop Manager is your first ever mac app. WTF, is this true? Most people would try their hand at a CLI-wrapper or a tic-tac-toe game... are you a masochist, or just enjoy a challenge?
It was indeed. In fact I had only had my mac for a month or so when I started to write it. This lack of experience is obvious in looking at the early code and mostly accounts for the need to do a re-write for version 0.4 :). Initially my first prototype was a classic Unix command line app called 'sdsk' (switch desktop) which took a desktop number as input. I thought I'd just wrap this thing in a little GUI to learn about Cocoa. It sort of snowballed from there.
There was also the challenge aspect. I would have this idea of how, in a perfect world, the app would integrate into the OS and I tried to find out how to do it. Along with that there was the fun of reverse-engineering out the bits of Quartz required to do the magic. I've always been a bit of a reverse-engineer (c.f. for example 'libdvdnav', a library I wrote to allow Linux media players to play DVDs which is now used in xine and other similar players).
You've been using Cocoa for about a year now, doing some pretty funky stuff. What impressions (both positive and negative) have you garnered of it and developing for OSX in general?
The documentation could do with improvement. The API docs themselves are fine but the way Apple organize them into sub-topics is a little forced for my way of thinking. OTOH I'm sure some other people like it. Xcode is a lovely little app although I must admit to using it only as a build tool. I still edit all my code in vi. I think Apple made a smart decision to build upon GCC + Unix tool-chain for their developer software. There are a lot of clever people writing GCC and Apple immediately benefitted from the years of development of the compiler. Similarly the community benefitted from Apple's improvements to Objective-C support in the compiler. I think its this mutual benefit aspect that is an important indication of the use of GPL-style software for companies in that it enables everyone to get to, and extend, the state of the art together.
Cocoa itself is lovely and I am a great fan of Objective-C. It wasn't totally new to me, I had played with GNUStep before and one of my friends from secondary school had a NEXT cube to play with. I see some similarity between it and Microsoft's .NET infrastructure so I suspect the paradigm it uses may well come to dominate commercial coding sooner or later.
By similarities between Cocoa and .NET, are you talking about the Model-View-Controller (MVC) paradigm, or something deeper?
MVC in some ways (although that goes back to MFC as well) but somehow they 'feel' similar. I have a quite holistic approach to programming, especially APIs, where I find it better to attempt to get inside the mind of the designer. If I can get an idea of how the API designer views programming I find I can often just predict the API since it would be how I would implement it. I guess this is why I like reverse-engineering so much, it gives me a chance to see if I'm right :).
To attempt to put it into words is hard but I'd say the biggest similarity is that .NET's communication with objects appears similar to the message passing idea in Objective-C. Instead of direct manipulation os object both APIs seem to take the approach that parts of the program should indicate to other parts about what they would like the state of the world to be and then leave it to individual objects to do its best to make this happen. Its hard to find specific examples of this in either API but its 'just a feeling I get in my water' as my mother used to say.
Being an iBook user, I can imagine any improvements to GCC for PowerPC would be a big deal to you. Are you excited about the move to GCC 3.5 for OSX Tiger? There seems to be some neat stuff in there, such as auto-vectorization...
Indeed I am. GCC 3.5 looks pretty exciting from an optimization PoV. Hopefully big things such as moving from RTL to tree-SSA will make it even better.
You've recently finished a big rewrite of Desktop Managers' code to "clean up the nastiness". Knowing what you now know, what would you have done differently when you first set out?
I would have made the core app only a desktop switcher with the ability for other apps to request desktop change and obtain window location information. This would allow people to easily implement whichever feature they want (be it desktop pagers, etc) as separate apps.
As it is, as part of the re-write, the internals were re-structured so that most functionality is performed via 'plugins'. This allows me to keep a clear separation between the UI logic and core desktop switching logic.
Most of all I wish I had documented the APIs I found and found someone competent to code them up :).
Could you give us an idea of what you're having to do behind the scenes to get a virtual desktop scheme working under a window manager that really isn't setup for it? This isn't trivial stuff...
Sure. OS X has a couple of undocumented API calls 'CGSSetWorkspace' and 'CGSGetWorkspace' which allow you to split the window trees into different desktops and move between them. This is the core magic which allows DM to support virtual desktops. That is the easy bit.
The hard bit, it turns out, is retrieving information about windows on screen and modifying them. As, perhaps, a 'security' feature Apple engineered it so that although modification of windows was possible it could only be done by the Dock. It is, in fact, the Dock which provides the Exposé function in Panther. To allow DM to modify windows I had to use a little but of code by Jon Rentzsch which allowed me to stick a bit of DM inside the Dock process (see later question). This bit of code communicates with the main app and performs much of the magic you see.
Interestingly CodeTek uses this exact same bit of code for their latest VirtualDesktop program.
This might be the white russians talking... but your app feels faster than any of the competing apps out there by an order of magnitude, even though you arguably throw a hell of a lot more eye candy in there and you've recently made it even faster. Where is this speed coming from?
Apple :). The actual 'switching' is performed by calling the secret API functions above. This is actually implemented in the Window Manager and hence is as fast as if I could delve in there myself and manipulate them 'by hand'. The transitions eye-candy in later releases is actually using Apple's own code.
Believe me there is a lot in OS X that is undocumented and suggests interesting things. For example, the fact that the Set/GetWorkspace functions were upgraded to work with Exposé suggests to me that either someone at Apple really likes Desktop Manager or that they are keeping Virtual Desktops around as a possible killer-feature for later releases.
If one was digging around through your source, one might notice that your app, as well as two other virtual desktop apps for OSX, make use of BSD-licensed mach_inject and mach_override libraries from Rentzsch. This is obviously kernel-level stuff used in more than one app, but rarely mentioned... could you give an idea of what these are, why they're necessary, and what led you to them?
See the above chat for why I use them. Mostly I found them through googling. I was wanting to find some way of sniffing the communication between the Dock and the Window Manager to see if I could spoof it in some way. Mach_inject just happened to come up on Google and was just what I was looking for.
Interestingly its not-quite kernel level stuff (Mach-releated things rarely are) but it certainly dances around the edges. Having the Darwin sources available to check what was going on was also useful.
Ah, so if I'm following, you just have to go through Mach to have access to the Docks' process, which is really all you're endangering in case something goes wrong?
Yup. I'm in fact using standard Mach API calls to inject some code into the Dock's address space. Nothing underhand is happening from Mach's PoV and so the worst that happens is the Dock crashes. Nicely, from a certain standpoint, when this happens the Dock just quietly re-starts without worrying you so if you have it on auto-hide you won't even notice a crash. Unfortunately this will stop Desktop Manager working though :).
Most *nix users switching to OSX are used to having virtual desktop support built in, and have long clamored for Apple to add them. With the advent of 10.3, and with it Expose, many claim there's now no need for virtual desktops in OSX. You haven't stopped development of Desktop Manager, so I'm assuming this isn't a view you hold?
Exposé is great but I like Virtual Desktops. Certainly its a novel way of solving a similar problem but my mental model is based on Virtual Desktops. People should really choose whichever is better for them. Choice, after all, is often a reason people come to Macs in the first place.
Besides that I don't like my desktop to be cluttered. My ideal 'wish-list' item in that regard is to have a set of 'boxes' on the desktop I can minimize groups of windows into. Perhaps the opposite to Exposé, 'Couvert' if you will :) (in fact there is some developmental stuff hidden in Desktop Manager to that end).
That sounds like an interesting paradigm, sort of a multi-paned 'window-well'? So one could have 'sets' of windows based on a task? Could you elaborate on how you envision actually grouping the windows (modifier key + mouse?) and getting them in and out of the well?
The idea would be like virtual desktops except that instead of one desktop completely disappearing when it gets switched for another, the collection of windows shrinks itself to a set location on the screen and the next desktop zooms from where it has been lurking. You can switch to any desktop at any time by clicking on the bundle of windows on the desktop background and also, like Exposé, you can see immediately if one of the windows on another desktop changes.
You could trigger the switch by, say, exposing the desktop with Exposé and clicking on the window bundle or you could have per-bundle and switch next/previous hotkeys like Desktop Manager.
Alternatively the windows could be animated sliding into a box on the desktop if you don't want to have a bundle of windows cluttering the desktop, or they could arrange themselves into 'piles'.
There was some... fallout... between Codetek and the users of its VirtualDesktop product over several versions. Did you notice an influx of users for your app during this time?
No idea. I didn't know of the fallout when I was developing my app. It was mostly for my own use and I was just happy to get users. I suppose it could have happened like that. I still don't know much of what happened. I'm not really very interested either, not being a CodeTek user.
What does annoy me is the way that some people assume that I wrote Desktop Manager to in some way force CodeTek out of business or get back at them in some way. I never considered CodeTek for a moment, I just wanted a program that provided virtual desktops the way I wanted them so I wrote one. I still get some emails accusing me of being petty and small minded for GPL-ing Desktop Manager since CodeTek can't easily use my code. That is silly since they are quite capable of re-implementing Desktop Manager in a far better way using my techniques. I haven't tried (nor could I probably) claim control over how people use the APIs I discovered.
I'm not anti-closed-source particularly either. In fact I've helped quite a few people who write closed-source programs about how Desktop Manager hides some windows from Exposé. Code is an expression of an idea and as such I am touchy about how people use my code. The ideas themselves have to be public-property to allow people to progress. Oh damn -- there goes the Academic in me spouting off.
Of course if CodeTek suddenly take leave of their senses and want to get a license to use Desktop Manager themselves for a stupidly large amount of money I wont be complaining :).
They're basically upset that you didn't release your code under the BSD license, so they mistakenly think you've somehow locked Codetek out from creating their own implementation? You're across the pond, but the american term for those giving you a hard time over this would be "Asshats".
Pretty much. They seem to view the choice of the GPL as a weapon against CodeTek rather than a gift to the community. Personally I'm not overly attached to the GPL for its own sake but I feel that BSD style licenses don't encourage users to give back quite like the GPL.
As I said I viewed CodeTek as, at most, 'prior art'. If everyone were tomorrow to suddenly switch to VirtualDesktop I'd not really care too much since I still find Desktop Manager useful and, ultimately, it was written to scratch my itch.
I think the best term we have for 'Asshats' is 'Smeg Head' :).
You've taken the step of adding native support for their VirtualDesktops' pager skins. Have you taken any flack for this?
Initially yes when the developer of the CodeTek skin thought (incorrectly) I had shipped it with Desktop Manager too. Aside from that not really. I don't particularly like the skin format currently used but then I was too lazy to create my own and the CodeTek one is quite-literally just a collection of images stored in an XML file. It can be read using Cocoa with 6 or 7 lines. I just wanted to get a desktop pager out of the door quickly and it seemed like the natural thing to do.
What led you to decide to distribute Desktop Manager as open source, rather than Shareware or Freeware?
All my code (not just mac-related) has not only been Open Source but also Free (as in GPL-free). I view it as giving something back. All my desktop machines run some form of Linux as do all the servers I maintain in my house and lab so giving what software I can back to the community only seems fair. I learnt to program due to the massive amount of information and code available out there to look at and learn from. Closing it up and hiding it away seems counter productive. Certainly I don't think anyone can learn programming like I did these days.
Could you elaborate on why you don't think someone coming up could learn to code in the same way, as some would say that the amount of information and code out there has never been greater as a whole?
Because there isn't the encouragement there once was. Nowadays software makers have tried as hard as possible to hide the workings away from you and discourage fiddling. Although you can learn television maintenance by reading books on how television works generally and learning electronics, its no substitute for the amount of learning gained by getting the back off and almost killing yourself by grabbing hold of the high-tension wire :).
This is, of course, the natural progression as computers have become more appliance-like and less machines of wonder. When cars first came out, the owners had to learn how they worked sufficiently to prime pumps, turn cranks, oil, turns, strip and otherwise maintain their machines. Now they are more reliable but you can't learn how a car works by taking it to bits any more.
Also, although there is a lot of material, modern computers are too sophisticated when it comes to getting you hooked. With the old home computers one could get instant gratification by writing a program which drew a space-ship on the screen in 10 lines of BASIC. Nowadays you'd have to learn COM + Win32 + DirectX just to get a black rectangle. The 'activation energy' required for kids to get exciting things on the screen has increased exponentially over the past decade. The lack of home-programming magazines is also a problem although some the the Linux magazines here in the UK are starting to carry beginner's programming articles again.
Finally no machines come with BASIC + a programming manual in the box any more. When I was a kid programming was Just What You Did™ with a computer since commercial software was thin on the ground. I guess what I mean to say is that today's computer landscape doesn't encourage hackers like it once did.
You mentioned all of your code being released as GPL, and much of it isn't throw-away stuff. Do you ever worry or wonder about it being 'lifted' and incorporated into proprietary software?
Not especially. For my mind application software vendors tend to be quite good with that sort of thing. Its often fairly trivial to detect after a bit of poking if stuff has been lifted wholesale.
Where such things occur more is in the embedded and device-driver spaces. Its a (almost) universally accepted fact amongst software developers that hardware people can't write software for love nor money. People also consider they can't write suitable documentation for software writers to write drivers to. This isn't a reflection on the skills of the hardware people, more a comment on their specialism. I, for example, could in no way design a 802.11 card.
I think that the embedded guys have yet to fully wake up to the vicissitudes of the software world and realize that grass-roots people are now looking to see if their stuff gets taken and that, just because you can download it, it can't be stolen.
Many don't realize what kind of time commitment a project can be, especially one with a user base that has grown in leaps & bounds like yours. Does working on Desktop Manager sucks up a large chunk of your time?
Yes. But not as much as it should do recently. I'm also working full time on my PhD (unrelated to DM) and also, in the past few months, being an improvised comic and find that making time for DM development is hard. Generally when I find time it is in month-long blocks and three or four releases can come out.
I've just finished writing and submitting a paper so, hopefully, I should have some more free time coming up soon. On the other hand if I'm suddenly discovered and go on to be a part of a brave-new comedy TV show on BBC3 then Desktop Manager development might slow still more :).
Woa. Improv? Social setting, in front of unknown groups, where you don't fully know the parameters that are going to be fed to you. And you have a girlfriend. Are you sure you're cut out to be a coder? :)
LOL. I was in fact discussing this last night. My girlfriend (also a geek, yay!) was bemoaning that most people she knew either spoke 'geek' or 'normal' and she was happy I was a geek but could speak 'normal', albeit with an accent :).
I like challenges in my life and I find that coding is one way I can exercise my longing for intellectual challenge. The improv is a way I could face the challenge of speaking in public (it has helped my presentation skills no end) and the girlfriend just comes about because of my incredible sexiness :). She'll kill me for writing this but the magic chat-up line was "want to come back to mine and see my plasma-ball?".
Coding for me is one aspect of my intellectual side, I also sometimes pretend to be a mathematician when doing my PhD. I think that I'm a typical geek in that I thirst for knowledge on how things work but I'm not restricted to just computers. I find just as many things to be interested in when regarding a social group or person's behavior as when I'm looking at the workings of a piece of code. I love the way, in certain systems, simple interactions lead to complex, unpredictable outcomes.
I guess the apparent social-side of me is just me hacking my friends :).
Comedy is a bit like that. Strange, small impulses can lead to an audience suddenly falling off their chairs with laughter and there is no easy way to predict or define it. I guess I'm just looking for an answer to how humour works.
Goodness, this self-analysis thing is fun isn't it :).
You've got yourself a Keeper™ if that "plasma-ball" line worked. :) Moving along... there's a link on your website for donations via PayPal, and I always wonder if and how these things are working for the developer. Do you ever feel like a cow in a river full of leeches, or have you seen appreciable support?
Quite a lot of support actually. I only put it on there because my girlfriend pestered me to do it (and even now, I'm still using her PayPal account) and I expected nothing, monetarily, back. As I explained I view what software I can write as a way of giving back myself and consequently all the authors of the software I use day-to-day have paid me back in some small way for developing Desktop Manager.
That being said after every release there is a steady trickle of $15/$20 donations that come in. Its currently going towards a possible hardware upgrade or perhaps buying Tiger when it comes out to make sure Desktop Manager keeps functioning. Certainly the donations add up and I think Mac users are, through their culture, more inclined to donate a little to projects they find worthwhile.
Lets say a user loved your product and wanted to help, but either was short on dough, or hadn't been part of the mac base long enough for them to become conditioned to carrying their wallet at the ready... how could they contribute?
Ancillary support is great too. Glenn Gear has designed some nice icons for the 0.5.2 release and some people have sent me translations too. If you still have nothing to offer a ego-fueling gushing email is always appreciated. Finally, you could always offer to interview me for your website :).
If you could push a feature request or perhaps a bug on your wish-list to the top of Apples' radar for OSX, what would it be?
Aside from the desktop window boxing (see above) I have an old, boring wish and one where I fully understand why its not going to happen but I'd love to see OSX on x86, perhaps even x86_64. OS X is a wonderful OS IMHO and Apple hardware is also wonderful but that doesn't help me with the fact I'd like to have a nice Apple desktop machine without mortgaging one of my limbs. I'm a poor student after all.
My other big wish(es) would be iTunes related:
- iTunes for Linux (pretty please!). I don't want to be stuck using the afternoon's hack I threw together.
- Open (like Darwin) the sources for the DAAP (iTunes music sharing) server. I use my Linux server to serve music to iTunes but the server is based on a reverse engineered protocol and breaks with each iTunes release.
- Alternatively, open the protocol. Perhaps put it over UDP to discourage people sharing their music on the Internet (UDP inside your own LAN is fine for sharing but I wouldn't want to stream MP3s from China using it :)).
Being across the pond, you also have to contend with things like VAT which push the prices up even more... Do you think Apple's current pricing might be a little out of touch with the market, and what the vast majority of users are willing to pay or able to afford?
Being a student almost cancels the VAT out luckily.
Its not out of touch with their base-market. Those users who want a machine to Just Damn Work™, have good after-sales support, be easy to use yet powerful and be pretty are willing to pay a premium to get it.
On the other hand its pretty out of touch with the growing market, since OSX, for Unix geeks who want a nice laptop. I think there would definitely be room for a geek-laptop from Apple which is a wee bit cheaper which concentrated more on a geek's need (keep Airport in, lesser graphics card, can get away with a slower G4).
The new iBooks are getting there but we really need an iBook in a PowerBook-style case. Make it black, shiny, put a little red demon where the Apple is and call it the GeekBook. Apple's sales would probably double overnight.
In the spirit of the site, what's your spirit of choice?
I don't really drink spirits and if I do I tend to have them in cocktails. Instead I am a real fan of beer. Specifically what has been termed 'real ale'. I find that properly brewed beer can have a subtlety and character that often surpasses even the best wine I've drank (and being in Cambridge, thats been some quite good stuff). I'm happy to see that in England more and more pubs are seeing that serving tasteless, characterless nitrokegs and Stella-bergs are actually turning away the more sophisticated drinkers. Possibly my favourite beer at the moment is 'Old Growler' from Nethergate breweries.
The pub opposite my house is having a beer festival at the moment and I'm hoping to find some more beers to enjoy. I'm sure any Desktop Manager users in the Cambridge area wanting to buy me a pint will help me find a new favourite :).
Comments (45)
Posted by: James Coburn at July 5, 2004 03:25 AM
Great interview. Desktop Manager came at the perfect time for me, I used Codeteks program early, paying my $10 and was satisfied. But then it got buggier and crashier with every release and never worked right with X11 or drawers, there was always problems with something. And then they doubled the price twice and its now really more than I can pay and filled it full of bloated features I could care less about.
Then Desktop Manager was released and its super fast and getting better with every release.
Posted by: Rich W at July 5, 2004 05:21 AM
I have had a bit of problems wrt sticky windows. I have some code which does it but its buggy as hell. It involves changing the window layer whic messes up draws, panels and Exposé something chronic.
Posted by: patrick at July 5, 2004 07:11 PM
Just a slightly off topic question: what's the "gentle irony" with this article and July 4th? After reading the article I concluded that Rich Wareham is not American (not that there's anything wrong with that). Is that the connection, or am I just dense (or both)?
Posted by: Rich W at July 5, 2004 07:27 PM
I'm not American. I am English. I /think/ the 'irony' is that on 4th July 1776 the USA declared independence from England although I'm not sure.
Interestingly when I was in Boston a while back they seemed to have the idea I would get really offended if they mentioned the Boston tea party. Indeed I did, what a waste of tea! :)
Posted by: at July 6, 2004 12:36 AM
Let me just say I am 10 times more productive with my iBook with virtual desktops. Thank you. Expose is nice but it is slow on my computer and things are still messy, and I am much faster switching applications because I can just hit a key combination.
I wish he had followed up on other things that were hidden in OSX. Great read. Makes me want to dive in and look for myself. :^)
Posted by: doug mccayhill at July 6, 2004 08:06 AM
Treat indeed. You brought back many fond memories. I have never seen an Acorn, but I started with the AppleII which also came with its own BASIC and was accessible.
Things haven't been the same since the days of the AppleII. We got one for Christmas and it came with its own BASIC setup. I spent all Christmas break trying to learn as much as I could and throughout the rest of high school moved onto other languages. But BASIC and being able to do anything I wanted to my system was what got me hooked. I kept coming back after school to it after spending all day thinking about a problem. It was puzzling and new but learnable. The entrance fee is so much higher now and what information that is out there is obsolete within a year at best.
It is too bewildering. Even the web, which was HTML is now HTML 1.0/2.0/3.0/4.0/XHTML, CSS, DOM, Javascript, Jscript, ASP, PHP. If I were starting now I believe I would not bother.
Posted by: Halz at July 6, 2004 04:04 PM
Funny I would read this (came from www.Maclash.com) right after sending my iBook in for the logic board repair where they told me it would be 14 to 20 days!!! But great interview, I just had to get that off my chest.
For the secret APIS mentioned, could these be used by Apple in ways we dont realize for Quartz? I mean are they not real virtual desktop support but how Apple does Expose?
Keep up the great work.
Posted by: Anonymous Coward at July 6, 2004 04:15 PM
Dude... You own us all. Keep up that kickass work!
Posted by: CamTarn at July 6, 2004 04:40 PM
It's not *quite* as simple, but 'cat > file.c (codecodecodecode) gcc file.c; ./a.out' is easy enough. Give a kid a P133 with 32Mb RAM running Linux, GCC and utils installed, and a C manual, and they could be off to a decent start...
Admittedly, running Linux is nowhere near as simple as, for instance, BBC DFS with BASIC - when everything is in ROM, it's so much harder to screw stuff up in weird ways.
Sigh. This article, and many others, make me wish I had a programming manual for my BBC Model B. I had manuals for the printer, disk drive, monitor - everything *but* the BBC itself. Never got round to doing much with it, because I didn't know any syntax apart from commands to load programs from disk (which were covered in the disk drive manual.)
Posted by: CamTarn at July 6, 2004 04:45 PM
To clarify, when I say 'easy enough' I mean that it's easy compared to trying to code for a GUI. It's possible to get instant gratification with just a console or terminal - Hello World is the perfect example - whereas coding for a graphical environment requires much more to get started. It's still possible to code for a GUI using basic command-line tools, of course, but the code required is a world apart from the stuff you'd find in an introductory programming manual.
Posted by: at July 6, 2004 04:56 PM
Smile, you are on SlashDot:
http://apple.slashdot.org/apple/04/07/06/1814202.shtml?tid=126&tid=156
Posted by: Jon Harrell at July 6, 2004 04:57 PM
"It hasn't one any awards" - I believe you mean won?
Posted by: I hate kikes at July 6, 2004 05:09 PM
Drunken batman is such a fucking faggot. This piss-poor interview reeks of homoeroticism and faggotry. Do us all a favor and kill yourself now.
// url edited by drunkenbatman for the safety of the browsing public
Posted by: girlie at July 6, 2004 05:15 PM
Desktop Manager rocks so hard. I want to have the author's babies.
Posted by: Nathan Gray at July 6, 2004 05:28 PM
Desktop Manager is ultrafantasticalicious. It saved me from some *serious* buyers remorse after switching from Linux to OS X and realizing how few of my hacker comforts were available. Boy do I know what you mean about little things niggling at you -- one of the first things I did on OS X was hack the keyboard driver to allow remapping modifiers on USB keyboards.
As for DM, one feature I'm hoping will arrive at some point is integration with X11. In other words, it would be awesome if X11 apps that know about virtual desktops (i.e. are ICCCM-aware) were aware of DM virtual desktops when running under Apple's X11. I suspect this might require a "mini-window-manager" that runs under X11 and communicates with DM, but I think it could be done.
Posted by: Des at July 6, 2004 05:42 PM
THANK YOU!
While I love my powerbook, I was SOOOO upset about the virtual desktop issue.
After looking around quite a bit I found desktop manager to TOTALLY AND COMPLETELY ROCK.
Thank you so very very much for your time and good code. I am very grateful.
Des
Posted by: Wout Mertens at July 6, 2004 05:44 PM
Any chance of the arch repository reviving so we can break our systems with the bleding edge code? :-D
I'm getting timeouts for http://charon.ucam.org/arch/...
Posted by: Rich at July 6, 2004 05:58 PM
Try http://lotsofnakedwomen.com/arch/
Posted by: fluffy at July 6, 2004 06:21 PM
Damn you. I was trying to get into that Finding Nemo session but couldn't because it was so jam-packed, and then you were in there and even got a seat and you weren't even paying attention to it?!
I kill you with a spoon.
Posted by: Dave Clarke at July 6, 2004 06:39 PM
Personally I haven't used DM but I'm encouraged to take a look. Apropos the price of entry for young coders, I think it is a much richer and less expensive environment than when I started out. Every consumer computer ships with a browser and a browser is a rich development environment; javascript is a great language and html is easy. Plus documentation is everywhere.
Posted by: drunkenbatman at July 6, 2004 06:40 PM
Jon >> "It hasn't one any awards" - I believe you mean won?
Corrected. Thanks for the heads up.
Posted by: dmm at July 6, 2004 07:16 PM
#def Smalltalk_Bigot TRUE
Concerning the “similarities between Cocoa [Obj-C] and .NET” you can look up the ancestry tree to Smalltalk (also the source of MVC) for a lot of the gut feel. For instance, Brad Cox designed Obj-C to "contain all of C language plus major parts of Smalltalk-80." He did it with a C preprocessor around 1985.
Along the reinventing history line, give a look at some new/old ideas on virtual screens/workspaces still useful in Squeak (which is Free -as in beer- and -being Smalltallk- inherently open source.) Using the 'CGSSetWorkspace' and 'CGSGetWorkspace' calls with the windows tree should make implementing nested workspaces quite doable in OSX.
Smalltalk (esp. in the form of Squeak) also makes a wonderful place for begining programmers to start out. Simple command line coding with direct ability to draw on the screen is supported. There is also a simple tile programming interface for small children. While there are plenty of examples in the environment, www.squeakland.org is a great place for getting kids started in programming. Older ones might appreciate "Squeak: Object-Oriented Design with Multimedia Applications" which takes the reader from the history of objects to one line programs to coding with MIDI, 3D animation, a wiki in a pluggable web server,... (all in under 300 pages.)
NOTE: While MVC is still available as legacy code in Squeak, the Squeak community has moved on to adopting Morphic (ala Dave Unger's Self) as its current/modern paradigm.
#udef Smalltalk_Bigot
Posted by: dmm at July 6, 2004 07:17 PM
P.S. Nice hack Rich.
Posted by: Diordna at July 6, 2004 07:52 PM
Is there a chance you could make it AppleScriptable? That way, I could write a script to launch X11 and then place it in its own desktop so I wouldn't have to do it manually all the time.
Posted by: majorsl at July 6, 2004 08:17 PM
I can't like without Desktop Manager. Expose is, well, okay... but Desktop Manager is just PERFECT - or will be closer to it once a new release is out and the author has his iBook back from Apple. ;)
Posted by: mike at July 6, 2004 08:46 PM
Great read! Thanks so much was very refreshing not to be talked down to and entertained at once. This application is new to me and I am downloading it right now and looking forward to it.
Some things:
- Some of these are so long, have you considered breaking them up into more than one page? On dialup they can be daunting to click on.
- I like reading your articles, but trying to explain to someone else what they are about to link to them is really hard. Perhaps a more central theme in small doses?
Nitpicks. :)
Posted by: mekong at July 6, 2004 08:57 PM
Holy shit db, you can make some noise. You're everywhere again. Enjoyed the hell out of it, but hope the server hasn't melted.
Posted by: Cristopher at July 6, 2004 09:38 PM
What an odd interview. Enjoyable, but odd. Can't put my finger on it. Reminds me of the fireside chats at conferences.
Posted by: Pete at July 6, 2004 10:10 PM
Great stuff. One nit, DM seems to not use the selected keyboard layout so in Dovark I need to remeber that opt apple 'r' instead of 'o' bring up the move window menu. Not a big deal, but would mess with foriegn language keyboards too, I would think.
Posted by: Mark Tomczak at July 7, 2004 12:19 AM
"Exposé is great but I like Virtual Desktops. Certainly its a novel way of solving a similar problem but my mental model is based on Virtual Desktops. People should really choose whichever is better for them."
Truly well-said. I use Desktop Manager to split up my workspace so that I can find things with Éxposé... since I usually have two projects (one programming), e-mail, chat, and web browsing at once, Desktop Manager lets me divide my workspace into chunks of four or five windows instead of a bag of twenty-four (a dozen of which are code windows, which all look identical at postcard-size). It also interoperates very cleanly with Konfabulator... I have widgets on specific desktops that correspond to specific tasks, allowing me to have the "Admin Desktop," "Info Desktop," etc.
Keep up the great work!
Posted by: Timothy C. Quinn at July 7, 2004 12:27 AM
I would love to see a scriptable feature where I can have the DM launch an app with arguments and have it load in a specified desktop.
I have used this feature on my Windoze :[ corporate machine quite successfully and makes those frequent re-boots much less painful.
Great work!
Posted by: Mindflayer at July 7, 2004 12:53 AM
"Drunken batman is such a fucking faggot. This piss-poor interview reeks of homoeroticism and faggotry. Do us all a favor and kill yourself now."
Posted by I hate kikes at July 6, 2004 05:09 PM
---
Dude, WTF? Why do you always seem to attract the fucked up men and women? It's like some psychotic magnetism.
Posted by: Neil at July 7, 2004 01:16 AM
Desktop Manager is just amazing stuff. I've passed it on to all of my students and teachers at the college I teach at, and they're hooked, too.
I'm really happy to see this interview, because I was starting to worry that the application was no longer being updated. One thing I wish for (which I'm sure Rich gets a lot) is support for multiple monitors... but even without this, it's just leagues beyond the competition. Great work!
Posted by: Brian at July 7, 2004 02:26 AM
Rich! Would you like assistance? I'm an interactive designer. I build web sites (UI/graphics/layou/XHTML/CSS). I'd be happy to build a web site for the product or help with app icons etc. Let me know if you're interested and I'd be happy to send you some work examples...
Love your app! It's the first time i've felt "at home" using virtual desktops. All other apps felt like a kludge.
Posted by: Ash at July 7, 2004 08:50 AM
DM and Quicksilver are tools I simply can't work without now. I'd have to seriously train myself to stop using them, they've become so second nature :)
I'm using DM on multiple monitors, and it works fine (Panther, TiG4)...
Posted by: Ocelot Wreak at July 7, 2004 10:23 AM
Wow - a very nice read - better than most "technical interviews" I've glanced at recently. Nice to read clearly communicated ideas from someone who has a flair for writing as well as programming. Many thanks!
I'm from the era of toggle switches, paper tape and punch card languages, so I can relate to your comment about 'steep entry learning curve' with introductory programming today. I was very sad when Apple killed HyperCard, as it was such a fun 'erector set' programming tool that not only introduced people to OO programming concepts, but made it all fun in bit-sized, reusable chunks. Yes, I did write 68000 asm code in 1985, and no it was not a joyous experience dropping 'Hello World' into a window with scroll bars [SmallTalk was more joyous...]
All of my windows are belong to DM!
Posted by: GoGetEmTiger at July 7, 2004 01:38 PM
He's spot on about the micro-payment culture in AppleLand. I love my iBook (except for the screen) but was shocked when I switched from Linux at what people will try to charge for. They will wrap two commands from a CLI application in Applescript and charge $15. Crazy.
Posted by: sympathetic at July 7, 2004 02:20 PM
Yet those Applescripted two-lline CLI's can be really useful to people who have no clue about a command line interface... it's kind of cool if you ask me. Something for everybody, grandma, geeks, and rocket scientists...
Posted by: Riznix at July 7, 2004 04:29 PM
Interesting Article, if only i had been given a Commodore Plus/4 with a Book on Basic, it might very well have been me sat there right now! Nice Article, great presence, keep it coming.
Regards Riznix
Posted by: GoGetEmTiger at July 8, 2004 05:09 AM
sympathetic I know some people will have use for the apps, but charging $10 for something any decent coder could do in 10 hours (10 minutes of coding and 9 hours and 50 minutes to make an icon that looks ok) is beyond reason. A lot of this is so trivial so no one pays and it just sits on versiontracker.
If someone writes something kick ass I've paid for it. But wrapping grep with 2 lines of code they saw from a tutorial and one switch and charging $10 for it is stupid.
Oh and go see Spider-Man 2! I saw it tonight and its fantastic.
Posted by: Boh at July 8, 2004 06:15 AM
Wow, good interview, good read - Rich is a amazing coder, makes me feel inadequate.
DM is great, I tried CoeTek's but found it a bit buggy, and not worth current price, perhaps would have paid if was less.
If there is a feature I would like, its to be able to drag & drop a Window into a desktop, on the pager or menu if possible. Probably the most intuitive way to do this...
Concur with Rich's view on getting onboard as a 'hacker' now is more difficult, if anything its more cultural than technical, we have been conditioned to be 'consumers' of technology. 'Use it but dont touch it, leave it to the experts...' When you dirve a car nowadays, just start it and press the gas pedal, there's no need for gears, clutch etc..
But technically, it is much richer, and a larger choice.... JavaScript & Squeak (as mentioned before) Python, PHP... & you have the commercial pressures of VB and Java etc... can be quite bewidering for someone just coming onboard...
Posted by: Mission of Burna at July 9, 2004 11:23 AM
Uh. Oh. Micro-payment. *knock-kock* We must overcome that culture asap, to my experience most of theese shareware apps have a fancy design but are far from being bug-free, sure this is generalization but i'm so much fed up with it.
Let's take audio software as an example: The best alternative to itunes (i strongly detest the way it handles the audio files) is mpplus (the *only* Musepack player for os x?!) and mpg123 [mpg321] via Fink... That "inexpensive" (panic.com) shareware that *should* have an easy play filling that gap is bug-ridden and has features that were maybe state of the art in 2001 (1999, rather) and you got for free on Windows even back then (k-Jofol, Apollo).
Or that MP3Rage thingy -- Ever heared of "intuitivity" and "modelessness"? Sound familar to you? Well, look at that application. ... Bollocks! I tell you.
What a flamebait.
Something constructive: What about Python as beginners' language (Too bad Apple doesn't ship useful docs)? Ain't Applescript a good starting point? At least it's more powerful than anything what was shipped with DOS of 1994 (except debug, maybe) - not to speak of anything that ever shipped with Windows.
Posted by: Steve at July 10, 2004 04:56 AM
DM is a great app, and I encourage all of you gratified users to send in your donations to Rich as I have done (see PayPal link at wsmanager.sourceforge.net).
Here's my main feature request: Allow cmd-tab application switching to change to the desktop on which the switched to application is currently on (if all windows for the app are on a single desktop). Cmd-tab is such an efficient way to see what apps are running and to hop between them.
BTW, I prefer Proteron's LiteSwitchX to Apple's switcher that comes with Panther. Ideally, support both of these if possible.
A pint of Old Growler to you the next time I'm in Cambridge. Promise. ;-)
Posted by: Pete Orzech at July 10, 2004 11:05 AM
I like DM but the Pager on the Desk Top gets in the way but I want it to display thern application that open in that window.
Would it be possible for the Pager on the Desk Top to disappear to the side (left or right) till mouse hits that edge? Something similar to what XShelf does!
Thanks,
Pete










I love your program. Thank you so much for your hard work. Are sticky windows coming?