Hacking Quartz
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."
I am just curious why OS X didnt' support this out of the box with at least Panther. Is it just me or was this a no-brainer?
___ Shout Central - Crushes your nuts!
Regardless, I found the content to be very interesting, particularly the fact that Desktop Manager is the guy's first Mac application.
I thought this was going to be an article about overclocking your wristwatch.
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."
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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.
"Nature doesn't care how smart you are. You can still be wrong." - Richard Feynman
For me Expose works well enough as a virtual desktop - I have a lot of windows opened, but when I used to use a virtual desktop on UNIX most of the rooms would be pretty much one thing anyway - like a room for browsing. Now I can just hit F10 on a browser and see all the current browser Windows.
I think Apple has just not focused any energy on an "Apple Way" to manipulate virtual desktops. It's a tricky UI problem and probably the work needed to keep programs in different rooms is too "virtual" for many people. Note that he did state Apple made changes that were seemingly very favorable to the writing of DesktopManager, so it would seem the folks at Apple are at least nuturing the concept - and if they ever do include such a program I don't think you'll see any sour grapes from this guy as he is already giving it away.
I did like his idea for "Window Wells" (even though I think that was the interviewers term) a lot, so instead of virtual desktops being really virtual you have "clumps" of windows on screen (which are your virtual desktops) that you can click on like small expose'ed windows to expand the desktop. I'm still not sure of the best way to get windows in or out of these desktops.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I got all excited thinking there was going to be an article about DIY piezoelectric devices
Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
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.
Apple is of the opinion that two buttons on a mouse is overwhelming. Do you realy expect them to think that we the consuming masses can handle more then one desktop?
"Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
Apple is not really about "One Way". They are about a "Crafted Way". That is, anything that Apple includes in the OS they like to have honed to a fine sheen before users can touch it.
If Apple were about "One Way", you would not have the nice integration between the finder and Terminal. You can stick to the Finder to find documents or manipulate files - or you can just use the Terminal, or you can use a hybrid of the two and drag files into the Termainl from the finder and get a full path expanded for you in the middle of some command.
Note in the article that he mentions Apple made some API changes which were very favorible to Desktop Manager. They could have switched stuff around to crush him like a bug. But they instead made changes that helped - does that sound like a company bent on the "One Way" to do everything?
As I've said before I really think Apple and virtual desktops is not so much an issue that they do not want it, as they have not invested the mental energy to solve the UI problem of the user maintenience of virtusl desktops - moving windows between, making sure the right windows wind up in the right desktops, etc. If anything I think virtual desktops will arise in OS X through an evolution of Expose, though in the end it may not be quite virtual desktops as we know them today.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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.
Amen.
It required at least 300+ lines of Visual C++ to get a black screen and almost 150 lines of C++ to get SDL to throw up a black screen.
What the hell is going on here?!?! I know a lot of things need to be set up, resolution, sound, etc. But most people were happy with the default options they were given on those old computers. They made Elitle out of it for christs sake.
So how come I can't start a gaming project with a simple
Setup_SDL(SDL_STANDARD_OPTIONS);
Is it too much to ask?
May the Maths Be with you!
But how many computers ship with VB, and a manual which shows you how to write cool little programs in VB? I really can't think of ANY!!
Even OS X, which does at least ship with developer tools in every box really makes no mention of them.
The thing about computers before was that it was super easy to just write ten lines of code and have something happen. Now you have to hunt down an IDE or an editor, and chances are you're writing a lot more than ten lines even for Hello World! The computers now have (as he said) a much higher barrier to entry of manipulation, though of course you can do a million times more if you do break that barrier - so I'd say the only hope is that the rewards of crossing that barrier are enough to lure people over.
I agree with him that this is a real problem, far fewer people are exposed to the manipulation of computers at a young age and instead computers are treated as black boxes, not to be touched. Cars are headed the same way to some extent but there already was a much more powerful and widespread culture built up around people and engines, so it's a lot harder for that to vanish. I wish that more people would be able to think of computers as more like cars and less like toasters.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
If apple's apps then call these APIs. It is possible that these APIs are incomplete, experimental, or internal to the OS. If Apple documents these APIs, that means they're obligated to support them and keep them relatively stable between OS releases, etc...
This isn't quite like the Windows situation for two reasons.
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.
Two, Apple's been very good not just about keeping competitors on a level API playing field with Apple's apps, they've been very good about actually moving functionality OUT of Apple's inhouse apps and into public APIs. Witness searchlight services, or CoreGraphics. These were functionalities in Apple inhouse apps that Apple decided would be useful to other people, so they sucked it into the OS and made a public API for it...
...the distance between a beginning programmer and what you see commercially available is eons apart, compared with before.
I programmed my C64 with "state-of-the-art" GFX (320x240x16 color, woot), SFX/music (think PC squeaker-like), most else was limited by memory/CPU constraints. In retrospect maybe my AI and gameplay wasn't quite up to par, but I was very close at least.
One thing is to get a person started - which is hard enough, true, but it's also takes a lot more before you feel you're doing something that feels "cool". Something you could compare to everything that's out there and in some small, limited way be better than. Because once you've done that, you begin to believe you can do it in every other way as well.
Kjella
Live today, because you never know what tomorrow brings
How is this giving Apple's consumer applications an advantage? What this shows is where Apple has optimized security and performance within the WindowServer and its functionality of Expose in conjunction with the Dock.
This has nothing to do with Apple utilizing a secret API for all its consumer applications like Final Cut Pro, etc to put it one leg up on the competition.
This has everything to do with strictly improving the performance of the Operating System and core functionality that all applications may benefit from by the fact they are written for OS X. There isn't a Core Graphics for third parties and a Core Graphics for in-house. Get real folks.
but it was in my book titled "OS X: The Missing Manual" and I can't find it.
PCB$5%
free ipod and free gmail!
There's a weird Apple mentality at work here. I'm not Apple bashing, it's just that the reasons are ones that most on /. won't really identify with.
Apple likes to control their product; they don't want the interface very customizable. They'll allow little tweaks, and they'll allow people to make 3rd party products that can do... whatever. But this is the issue from the point of view of Apple: look around at linux desktops. Heck, just find some screenshots online somewhere- they all look different. Both KDE and Gnome are very customizable. Great. But a lot of users are going to find it confusing. Here's an example:
If I tell you I'm running Linux with a gui, and I want to reboot, can you tell me, without looking over my shoulder, where, spacially, on my interface, I need to go? Even if I tell you "I'm using Gnome" or "I'm using KDE", can you then tell me where the 'Log-out' or 'Reboot' button is? No- because it's very customizable, any button could be anywhere.
This means that the user's understanding of where things are and how the interface operates is not necessarily portable from one installation of Linux to another, even if you're using the same window manager on the same distribution. So what you need to understand about Apple's design philosophy is this: they don't like that. They want it so, if you're using their software, with no complicated tweaks or 3rd party hacks, everything will look pretty much the same, act pretty much the same, and be in pretty much the same place.
Virtual desktops would be fine with Apple, if they liked virtual desktops enough to use it with the standard interface, but they don't. It's not that they mind virtual desktops, but Apple doesn't want to add in extra options that will change the interface and confuse many users, unless it's necessary. They'd rather, instead, come up with another interface design feature that, they believe, will be as powerful as virtual desktops, but less confusing to users (like Expose). And if you want virtual desktops, their are 3rd party implimentations available.
So, there's your difference between the Terminal and Virtual desktops. One is an application (of sorts) than can be run within the current standard Apple interface (Terminal), and the other actually changes the behavior of and the user interaction with the interface.
I don't buy this "it's much harder these days to start programming" bullshit. It's purely a perceived problem because apps are more complex these days, and there are lots of them. But don't expect to write complex stuff when you start.
:)
Hell, the first program I 'wrote' on my Commodore PET was something that made a rocket fly up the screen over and over. It was very simple. You could accomplish the same these days on any machine by downloading gcc and writing a C program of frankly a very similar length and nature.
I don't actually remember my PET or my BBC Micro running ICQ or browsing the web, or doing any of these things that people seem to think they can just pick up a compiler and throw together in a few days.
Stuff has got more complicated, and people expect more features and UI. But to complain that it's hard to get started is just not true.
Hell, with the GUI toolkits around now, it's actually way easier to do some of these cool things. Think back to the early days of GUI programming. From my own experience, programming RISC OS GUI apps was horribly complex and difficult to get going with. On the other hand, I remember how cool I thought it was when I realised that the OS did stuff like those handy edit boxes for you - you didn't have to do anything!
Highlights are secret APIs in OS X for VirtualDesktops, who steals GPL source...
Where is this in the article? I read the whole thing, then went back and searched for every occurrence of "steal" (zero results) and "GPL". The only part that mentions Virtual Desktops is that CodeTek can't use the Desktop Manager source in their closed source app because it's GPLed. The relevant section is:
"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."
Nowhere does this claim that Virtual Desktops is using, let alone stealing, anything from his source. Unless I missed something here, I fail to see how such a statement is anything more than libel.
Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
I think over time applications themselves have to some extent replaced the need for virtual desktops. You mention managin 50 windows would be hard to use with Expose (actually I don't think it would be that bad, especially if you were mostly using the grouped Expose) but between tabbed browsing, and IDE's that really only have a few windows but easy code navigation reduce the number of windows you actually have to take care of.
For project sets, I generally tend to close open windows nad have project related Finder windows open - threating them sort of like rooms. Since it's so quick just to open a document and not have to think if the program is open or not, having an icon in Finder is almost as good as a live window.
Even when I was using virtual desktops more heavily I was using programs like Emacs (actually I still use Emacs very heavily) where having 200 files open was as easy as two.
I'm not saying your pattern of working is any better or worse than any other, evryone thinks in different ways - I'm just trying to explain how people can be OK with no virtual desktops and still using working on a lot of projects at once.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Lots of people are mentioning PHP and so forth.
You are perfectly right that Basic was really a scripting language. But try to imagine you are ten years old.
PHP is very easy to download. But how do you hear of it? How do you even know what it is to download? Even as a professional programmer I would have said to use PHP for web apps but not to learn programming with.
Also, what were you trying to program for? When I was a kid I did not really program just for the sake of programming. I perhaps wrote a small utlity that did some calculation I was interested in. My cousin did fractal generation. I might type in a game from a magazine and decide I wanted to improve on it.
So now you have a kid not knowing here to start, because there is not central starting place. Then you have the will of the kid to even figure out where to start, the barrier of having enough interest to create something he cannot just download.
Perhaps things like Mindstorms are taking the place of traditional programming. I'm not really sure. But it does seem like a kid could not be led into programming as much by accident anymore, he would definatley have to seek it out. And that will always eliminate some people from the path, that might otherwise have liked programming quite a bit. Obviously people do still learn programming now, where are the sixteen-year olds and how did they pick up programming? That's what I'd like to know.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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.
Jesus was a compassionate social conservative who called individuals to sin no more.
Now, in general, we tend to think of choice as a Good Thing(tm). But it's not always so -- e.g. when choice means incompatibility, confusion, fragmentation, duplicated effort.
For example, here in the UK we have (basically) just one mobile phone system: GSM. That terrible restriction on our liberties means that mobile phones can work on all networks, and there's coverage almost everywhere. Result: mobiles are cheap, and just about everyone has one. In the US, so I gather, there's the wonderful free choice of GSM, CDMA, and goodness knows what else. Result: expensive phones, no coverage, lots of vendor lock-in, and mobiles are less popular. Lack of choice can be a good thing.
The computing world is surprisingly close in terms of interfaces, APIs, and protocols.
It's less so in terms of GUI features, admittedly, but some of the same economies of scale apply. However, I think Apple's principle here is that if a feature is done right, then people won't need alternatives.
Far better to have one option that works right, than ten competing alternatives, none of which does the job properly. Easier to learn, easier to document, easier to code to, easier to administer, easier to support.
Now, in this particular case, I do miss virtual desktops in OS X. (Codetek's is just too slow with the number of windows I have, and I can't use Desktop Manager in my 10.2...) I don't think Apple have come up with a better solution to the problem it solves. But I'm right behind most of Apple's other decisions. Simplicity and elegance are underrated virtues.
Ceterum censeo subscriptionem esse delendam.
I just thought I'd add my 0.02$;
The close buttons on Safari's tabs are a feature I can't live without. Call me petty, but I've used Firefox's one close button on the far right, and I feel limited when I can't open up twenty tabs without looking at each of them before I can close them.
I have a huge list of people's blogs, and I open them all at the same time in countless tabs. There are some really boring people there, and I like being able to close the tab without having to view the page.
It's those little things that matter.
Also, you have to be really clumsy to accidentally click those tiny little exit buttons on the tabs.
karma: ouch!
ever heard of visual basic?
... and there's some excellent O'Reilly books for beginners.
:)
Actually, I would have said that Perl (and Perl/Tk for creating GUIs) is the equivalent BASIC these days. Simple, straightforward, free and cross-platform
YMMV, of course
Everyone here seems to be totally missing the point I am making. Yes there are a million tools around now. Yes there are 800MB of docs that ship with the Mac.
/Devloper - so you'd have to know to look there.
But think people, think like a ten year old!! You don't even know you want to program - and nowhere in the docs that come bundled with your shiny new computer (Windows or Mac) does it mention that tools to do so are bunlded with the computer (Mac) or that it is easy. On the Mac the development tools are not even in Applications, but under
And then once you're starting, you have to know about editors and compilers and IDE's and so forth to do all the things people are proposing. There's nothing truly basic to guide you through the first few steps of what is going on.
If I'm wrong then I would LOVE for all of the parents who are not programmers themselves and have kids that are picking up programming spontaeously to tell me how things are working out. But instead you have me, who has no kids, hypothizing a probem with kids being able to pick up programming easily, and a bunch of people who have obviosuly been programming for years and ALSO seem to have no kids, stating it's not the case and programming is super easy to get into. Our problem is we know to much, and have lost site of what you have to know even to get to the point where we can enter that eight line Java/C#/Applescript/PHP/Perl/Haskel/Ruby/Python program!
Yes it's all very easy once you choose a path and get started, and easy to dabble in multiple languages. But it's still harder than it used to be to go from the "I don't know what a program is" to "hey I just ran my first program" than it sused to be.
"There is more worth loving than we have strength to love." - Brian Jay Stanley