Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming Businesses Apple IT Technology

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."
This discussion has been archived. No new comments can be posted.

Hacking Quartz

Comments Filter:
  • by SuperKendall ( 25149 ) * on Tuesday July 06, 2004 @03:46PM (#9624857)
    It was a short section in the middle - to summarize:

    "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."
  • by pyite ( 140350 ) on Tuesday July 06, 2004 @03:51PM (#9624927)
    I really have to say that Desktop Manager is amazing. It even has eye candy transforms between desktops (such as the sides of a cube representation of things). And to boot, Rich emailed me back some time ago when I had a question.
  • Not such a good app (Score:3, Informative)

    by Jeedo ( 624414 ) <(gro.si.moc.fdsa ... dsafdsafdsafdsa)> on Tuesday July 06, 2004 @03:54PM (#9624969) Homepage
    I've used this application and it was highly unstable, crashed constantly and was generally nothing like the virtual desktop one has gotten accustomed to on UNIX desktops.
  • by cjwl ( 776049 ) on Tuesday July 06, 2004 @04:15PM (#9625175)
    Perhaps he should sit down and try Cocoa out while he's using OS X. ProjectBuilder/Xcode can generate a skeletel application that runs w/ no code. Interface Builder will generate code for your view, you fill in the drawing code. It's pretty damn easy and there are a lot of tutorials.

    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)

    by endoboy ( 560088 ) on Tuesday July 06, 2004 @04:22PM (#9625265)
    VB.net standard edition-- $90

    even neglecting inflation, I don't think that that comes to "more than the entire home computer back in the 80's"

  • by Archibald Buttle ( 536586 ) <steve_sims7@yah o o .co.uk> on Tuesday July 06, 2004 @04:32PM (#9625434)
    Apple does indeed have a number of undocumented API calls in Mac OS X. Now whilst it would be nice for all of the API calls to be documented they simply aren't right now.

    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?
  • by boaworm ( 180781 ) <boaworm@gmail.com> on Tuesday July 06, 2004 @04:52PM (#9625709) Homepage Journal
    Of course this is a matter of taste, but i dont agree with you. Expose for me is pretty useless. OK, we can highlight a few applications, but that's not my problem.

    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.
  • by saddino ( 183491 ) on Tuesday July 06, 2004 @05:09PM (#9625934)
    Yeah, you're missing something, but I don't blame you, the write-up is confusing.

    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.
  • by aarku ( 151823 ) on Tuesday July 06, 2004 @05:13PM (#9625990) Journal
    The parent comment is most likely outdated knowledge. You were most likely using versions v0.1-v0.3. The latest v0.5.1, while still officially "alpha quality" has yet to crash on any of the machines I use or maintain. Try a more recent version.
  • by SandSpider ( 60727 ) on Tuesday July 06, 2004 @05:13PM (#9625993) Homepage Journal
    I'm not a parent, but I'm remembering when I was a kid, and how my parents were. They could have just gotten me a 2600, but they got me a TI-994. It had some games, but they encouraged the programming aspect as well. When they bought a macintosh, they got MS Basic, which certainly wasn't included, so I could keep up with that. So I have hope.

    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
  • by Wooky_linuxer ( 685371 ) on Tuesday July 06, 2004 @05:25PM (#9626140)
    I use my MDK desktop in much the same way. If I boot up windows, I feel claustrophobic from the lack of space... I tried Nvidia virtual desktop like solution but is slow and buggy. I use WindowMaker, so I'm not sure it's possible in Gnome, but I found that assigning the mouse wheel for changing desktops is a snap. :)
  • by Jeedo ( 624414 ) <(gro.si.moc.fdsa ... dsafdsafdsafdsa)> on Tuesday July 06, 2004 @05:59PM (#9626472) Homepage
    I'll answer this to the best of my current capability, my iBook being in Ireland and all due to display problems.

    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&#233; 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&#233;. 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.
  • 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.

    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.
  • by bnenning ( 58349 ) on Tuesday July 06, 2004 @06:15PM (#9626623)
    Aqua does have a few other unimplemented capabilities, like theoretical support for tear-off menus.

    Not theoretical [www.ocs.cz].
  • Whether or not that is the correct thing to do is something I'll have to be educated on.

    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.
  • by jbolden ( 176878 ) on Tuesday July 06, 2004 @06:28PM (#9626767) Homepage
    Just to throw in $.02 here. The project seems dead but I've been using space space.sourceforge.net for years. It does very nicely as a virtual desktop manager and it is open source (QPL).
  • by Jeremy Erwin ( 2054 ) on Tuesday July 06, 2004 @06:36PM (#9626836) Journal
    Expose is somewhat slower if you don't have a Quartz Extreme Card. Classic apps tend to slow it down even further. On my faster mac, Quartz Extreme eliminates the annoying milliseconds of latency.

    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 .info file, and one for monitoring compilations...)

  • by mcc ( 14761 ) <amcclure@purdue.edu> on Tuesday July 06, 2004 @07:22PM (#9627200) Homepage
    Well, I don't really speak for anyone else, but I don't *want* to have to memorize 11 ctrl-keys then carefully arrange everything I open into specific virtual desktops just to manage my apps. This is why I prefer the dock+expose approach of management to something like most Linux WMs offer. The computer may not do a perfect job of managing the windows for me, but at least it's the *computer's* job to manage the windows, not mine.
  • by nacturation ( 646836 ) <nacturation AT gmail DOT com> on Tuesday July 06, 2004 @07:31PM (#9627275) Journal
    Its a shame I can't mod the parent +1 astroturf...how about:

    "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?
  • by gidds ( 56397 ) <[ku.em.sddig] [ta] [todhsals]> on Tuesday July 06, 2004 @07:44PM (#9627369) Homepage
    I'm with Twirlip; italics have their place (to emphasise words, titles, &c), and parentheses have their place (to set off supplementary text). You should only italicise a parenthesis if you want to emphasise it particularly in addition to setting it off from the main text; there's very rarely reason to do so.

    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)

    by aristotle-dude ( 626586 ) on Tuesday July 06, 2004 @08:23PM (#9627618)
    Um no, considering Apple a history of releasing those Apis once they are mature enough to use. A recent example of this was Core Image and Core video which they had used in motion.

    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)

    by gidds ( 56397 ) <[ku.em.sddig] [ta] [todhsals]> on Tuesday July 06, 2004 @08:49PM (#9627803) Homepage
    They made Elitle out of it...

    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.

  • by GFLPraxis ( 745118 ) on Tuesday July 06, 2004 @09:43PM (#9628175) Homepage Journal
    Quartz Extreme card? What's that? Maybe you mean any graphics card above 16 MB, which almost all macs have.
  • by Jeremy Erwin ( 2054 ) on Tuesday July 06, 2004 @10:49PM (#9628554) Journal
    Yes. The specific extension is known as ARB_texture_non_power_of_two [nvidia.com]. This was supported by the Radeon and the GeForce cards, but not by the Rage128. This last chipset is used by my iBook. The TNT2 was not used in any Macintosh.

    By the way, Quartz Extreme can be turned off by using 8 bit colour.
  • by IamTheRealMike ( 537420 ) on Wednesday July 07, 2004 @06:28AM (#9630222)
    One, the problem in Windows is mostly that MS's hidden APIs are for (1) very important and basic things and (2) used extensively by MS's in-house apps.

    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.

  • It isn't. Italicisation is for
    • emphasis
    • foreign terms
    • titles of larger works (novels, for instance, but not songs).


    (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.))

One man's constant is another man's variable. -- A.J. Perlis

Working...