Hacking Quartz 298
Exposed writes "Meaty interview with Rich Wareham who is known to Linux users for his libdvdnav library which is used by Xine and other linux players. On OS X he created Desktop Manager, the GPL solution for VirtualDesktops on the Mac. Highlights are secret APIs in OS X for VirtualDesktops, who steals GPL source and why beginner programmers are at a disadvantage now."
Somewhere in the middle (Score:5, Informative)
"The level of effort is much harder now for a kid to get into programming - PC's used to ship with Basic manuals and you could write code to draw a spaceship in ten lines of code, but now you have to learn the Win32 API + Directx to get a black triangle on the screen."
Desktop Manager is Amazing (Score:5, Informative)
Not such a good app (Score:3, Informative)
Re:Somewhere in the middle (Score:5, Informative)
I think it is far easier for young people to get started these days and they have access to far more powerful tools and OS than the beginners of the past. I didn't get a Unix machine (NeXT) until I was 20, we have 5 year olds using it on a Mac now. The barrier to entry is far lower now than it ever was and it will continue to be.
The real problem is that there are far more people who know programming that you have to compete against for jobs...
Re:Or not... (Score:3, Informative)
even neglecting inflation, I don't think that that comes to "more than the entire home computer back in the 80's"
Re:Undocumented API calls (Score:5, Informative)
Quartz actually can do a whole load of other things using undocumented APIs besides this virtual desktop stuff. It's also possible to rotate windows, shrink them, and zoom them up - I have an application that does this. However those that have investigated the APIs that allow these wild things to happen have found that they're not exactly complete.
Apple has of course been challenged about these APIs, and they remain consistent: you shouldn't use these APIs. They are undocumented because they are likely to change in the future. When the API is complete they will be documented, but not before then.
It's quite possible that all of these APIs (handling virtual desktops, rotation, and scaling) will be documented for 10.4 (Tiger).
One example of this is the shadow effect that Mac OS X supports on windows and other graphics. It's been there since 10.0, but it wasn't publically documented (although some people discovered its API). Apple only used this API for shadowing windows and menus. An official API for shadows was introduced in 10.3 which is more fully featured and easier to use than the old unofficial API. Indeed there's two official APIs now for shadows - one for low level Quartz calls, and a high-level API for AppKit.
Of course what Apple really should do is make sure that these new experimental APIs simply aren't present in the shipping OS. Apple themselves don't use them, so why leave them around?
Re:Why it wasn't put in already (Score:5, Informative)
My PROBLEM is that i dont want to mess around finding my apps. Expose is simply too slow to use, i cannot find everything with a single click.
On my Gnome workstation i have 11 virtual desktops, one for each server i'm maintaining, plus some for mail, comms and web. I know that by pressing CTRL + i instantly move to a desktop with all my windows positioned they way I want them. Desktop Manager does the same for me on OS X
My problem with Expose is that I'm not trying to find ONE application, but a whole bunch. I dont want to find "Word" or "Netscape". I want to find everything "Mailserver-related", "Primary Nameserver-related" etc. Simply put, i want to find more than one window/application, expose cant do that, Desktop Manager does.
Re:Steals GPL source??? (Score:5, Informative)
First, the poster mentions: on OS X he created Desktop Manager, the GPL solution for VirtualDesktops
So, you see, the poster is using "VirtualDesktops" as a name for "virtual desktop technology," not as "VirtualDesktop Lite/Pro, the product from the company CodeTek."
Second, the list at the end is suppose to be read this way:
Highlights are:
- secret APIs in OS X for [virtual desktop technology]
- who [is it that] steals GPL source [?]
- why beginner programmers are at a disadvantage now
Thus, it's just a list of interesting items from the interview; it isn't supposed to be read "blah blah blah CodeTek, who steals".
Finally, the answer to the second "highlight" -- is indeed in the article posed as:
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?
So, yep, it's in there: "lifted" instead of "steals." Interesting answer from Rich, too.
Re:Not such a good app (Score:3, Informative)
Re:Wish parents posted with real-world anecdotes (Score:3, Informative)
There's also a program here in Charlottesville called Computers for Kids, which gets kids in low-income or similar situations teamed up with volunteers in the computer industries. You meet with the kids once a week, and teach them and lead them to do the things that they are interested in. If they lean towards programming, you can help them in that way. If they stick with it for the appropriate amount of time, the kids get a free computer out of the deal. So there are ways to help out even if you have no kids of your own.
I see the decline in CS majors as more the lack of Making Money Fast than in lack of initial programming interest. I think a lot of people got into CS who probably shouldn't have, or at least many of those people who did will not be ultimately satisfied by a career in programming or Comp Sci. I am hoping that the future generations of programmers and computer scientists will be a higher percentage of people who are keen on programming, and not just doing it because that's where the venture capital lies.
=Brian
Re:Why it wasn't put in already (Score:2, Informative)
Re:Not such a good app (Score:4, Informative)
I usually use GNU/Linux on my iBook, which is one of the later G3 models, or a G3 800MHz 12.1". The OS i was using at the time was Mac OS X 10.3 booted from a 1GB partition i use when i want to muck around with OSX, as for the version, i dont remember nor am in a position to check, this was about 3 months ago though, and was the latest version at that time.
Now, dont get me wrong, in it's core concept this is an okey app, however the implementation is somewhat bad.
1. When you use the windowlist-in-macbar ( the file-edit.. thing at the top of the screen ( danm my mac-jargon knowlage is outdated )) it frequently underflows under other menus when you have a small screen, such as in my iBook. Of course this it not in all applications but it happens when you open certain apps that spawn lots of these menus not to mention having the iChat menu and others up there.
2. It crashed, and often, when this happened all windows were gathered in one desktop on top of each other, nothing you couldnt solve with Exposé but still a frequent annoyance which eventually led to me uninstalling it.
3. To top it all off you got a "You are about to shut Desktop Manager off, this will gather your windows inn one desktop yadayadayada yes/no" message when the computer shut down, this in itself was not such an annoyance, just something that added to problem nr. 2.
Don't get me wrong, i just said it was unstable at the time, it is however a great concept. I use this feature on my GNU/Linux desktop every day so it's not like i'm unused to the concept, however at the time i tested it it was at least on my machine way too unstable to be of any good use, so i just went back to Exposé. However i wish the author the best of luck in future development and hope that by the next time i test it will actually work as desired, plust it had some neat ( if useless ) transition effects.
Cheers.
Re:Why it wasn't put in already (Score:4, Informative)
WHAT? THIS IS EXACTLY WHAT EXPOSE DOES -- SHOW/HIDE EVERYTHING WITH ONE CLICK.
F7: Find all windows for one app.
F8: Find all non-hidden, non minimized windows.
F9: Show desktop (Pushes all windows off to the sides).
One click for each. Hold down the button and you get mouse over selection, otherwise it's mouse click selection. You can remap the keys as is convenient (I map Expose All to the middle mouse button). And what's best -- all of your windows continue to update while Exposed. Damn useful. It means if I have Safari open full screen, and want to change the mp3 playing in iTunes in full screen, i press and hold the middle mouse button, mouse over itunes, let the button go. To get back to Safari, I do the same. This to me is the best aspects of click-to-highlight, mouse-over to highlight, virtual desktops and single desktops while utilizing existing hardware to perform new functionality.
What you're talking about -- granularly assigning arbitrary windows to a particular desktop set across applications -- is something new that expose can't do, this I'll grant you. It's also a very specific use. Most people's jobs are task oriented, not server oriented. Therefore, it makes sense for the desktop to be task oriented, to work with EVERYTHING you're doing, rather than spaces of work. And it also makes sense that a third party application which offers you a solution for your needs would be valuable.
But the default? I dunno about that. Most people don't want two desktops, let alone an arbitrary number of them. I *can* say that if Apple were to offer us a fourth programmable Expose button, one that would group arbitrary application windows visibility and placement, I'd definitely toy with it. But I imagine most of what I'd use that functionality for is already covered by the dashboard.
Re:Desktop Manager is Amazing (Score:5, Informative)
Not theoretical [www.ocs.cz].
Re:Good (not bad) article (interview) (Score:4, Informative)
It's not. Italic type is used to indicate emphasis, or to set off things like the titles of books or the names of ships. Sure, there's room for style, but just arbitrarily italicizing everything in parentheses is a great way to confuse and frustrate your readers.
So long as I'm being all rude and bitching at you for no good reason, next time it might be cool if you went through and got rid of the "ichatisms" like "IMHO" and "WTF." Expanding those acronyms would have made the interview a lot easier on the reader. If you look at a "real" interview (if you'll pardon the expression) you'll see that the author didn't transcribe every um and ah. It's part of the writer's job to take the interviewee's words and polish them into complete sentences so the prose doesn't get in the way of the ideas.
Okay, I'll quit being a pedantic little shit now. For the time being.
Space desktop manager (Score:3, Informative)
Re:Why it wasn't put in already (Score:5, Informative)
It's rather useful, I think, when switching between mail, a web browser, and a few finder windows. It's less useful when one is trying to use multiple xterms, for say, writing a fink package. (one for constructing patches, one for writing the
Re:Why it wasn't put in already (Score:3, Informative)
Re:Steals GPL source??? (Score:4, Informative)
"Interestingly CodeTek uses this exact same bit of code for their latest VirtualDesktop program."
Seems pretty clear to me.
Perhaps you should read it again, in context this time:
"To allow DM to modify windows I had to use a little bit 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."
The "exact same bit of code" referenced is obviously the Jon Rentzsch code, which you can find here [rentzsch.com]. As you'll note from the site, it's released under a BSD license which can be incorporated into closed source projects. Since the article summary referenced "who steals GPL code" this doesn't even apply, now does it?
How's that astroturf feeling?
Re: Good (not bad) article (interview) (Score:3, Informative)
Nothing personal, you understand :)
Oh, and while I'm in pedant mode, you probably meant 'sous chef' -- 'sous' being French for 'under'. A 'soup chef', if such a role exists, would be someone who only cooks soup, so would probably give you your filets mignons back uncooked, and tell you to take them to the head chef. Or the, er, sous chef...
Re:Secret APIs? (Score:4, Informative)
I believe these API's in this case are secret because they are still in flux and not ready to be used. They probably still have bugs and memory leaks in them.
Re:Big Brick Walls (Score:3, Informative)
If you mean 'Elite', then that's a bad example. The original (Beeb) version hacked the display registers to create its own hybrid screen mode, with a highish-res black-and-white main view, and a lower-res 4-colour status panel beneath. (I guess they effectively switched between MODE 4 and MODE 5 using a timer interrupt that fired 2/3 the way down the screen, and switched back in the flyback.)
In short, they didn't use the default options!
Mind you, as someone else said, it's dead easy to create windows and stuff in Java, and the sorts of graphics primitives that micros used to have are also pretty easy.
Re:Why it wasn't put in already (Score:2, Informative)
Re:Why it wasn't put in already (Score:3, Informative)
By the way, Quartz Extreme can be turned off by using 8 bit colour.
Re:This is only worrying (Score:3, Informative)
Not really. I work on Wine and most of the undocumented APIs I can think of are very boring, in fact they're mostly utility APIs implemented by various teams (especially IE and the shell). Certainly Microsoft tends to err on the side of exposing potentially dodgy APIs rather than keeping them quiet.
While there are large chunks of undocumented APIs for instance in NTDLL these really are simply internal functions that happen to cross DLL boundaries. They aren't designed to be used from apps. In the case of NTDLL they are simply the internal implementations of the kernel DLL (amongst other things).
Every OS has these, even Linux. It's just a normal part of OS development.
Re:Good (not bad) article (interview) (Score:4, Informative)
(On the subject, bolding is for keywords, headings &c. more than emphasis; whereas italicisation is only really noticeable when you're in the vicinity, bolding is visible pretty much anywhere on the page, drawing your attention to it. Avoid bold for emphasis.)
((Even more tangentially, anyone who has the capacity to use italics but still uses underlining for anything except for links will be hung, drawn and quartered when I'm ruler of the world.))