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 don't really understand why Apple doesn't offer them. I've hears several reasons: the dock, expose, tranparent windows, or whatever makes them unnecessary, they're confusing for new users, etc, etc. But none of these addres the fact that Aqua WITH optionally selectable virtual windows (selectable for the "advanced user") is BETTER than WITHOUT. You can make all the same arguments for the presence of Terminal: it's unnecessary and confusing for the majority of users, but I bet few Mac users would want Apple to leave it out.
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"?
Note: THIS IS ON TOPIC. RTFA. KTHX. :)
:P
:( I love my cider dangit. :P
;)
The man doesn't like spirits, but he likes beer.
I've noted, most everyone either likes liquor, liqueur, or beer.
Why is there such a lack of interest in cider? I have my own batch finishing up it's first rack right now, and I'll be moving it to second racking adding honey tomorrow.
The more I've read the history of this country, it seems like the germans moved in and totally obliterated the cider makers and moved in with the beer.
Oh, and love the app, use it all the time.
Karma: Chameleon (mostly due to the fact that you come and go).
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.
ever heard of visual basic?
nicking my, now ex, girlfriend :)
someone define "nicking" for the, um... curiously imaginative.
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
If an operating system supports two different methods of organizing the desktop, then some inexperienced programmer will find some method of supporting only one.
"Yeah, our App tends to crash Expose. Use Virtual Desktops instead."
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
He mentions that it's more difficult for beginning programmers to get a start, as compared to the old days. Partially because software companies have tried to hide everything, and partially because it's so much more difficult to write a small amount of code that will do something exciting.
I disagree. Those points were more true a few years ago, but, at least with OS X, you have plenty of potential. First of all, there's Applescript and Applescript Studio. It's really easy to get a program started that does far more than in the old days, since most of your basic user interface work is done for you, and you can draw on the power of every installed application on your computer. Mind you, learning how to program Applescript is not like learning to program most languages, but it's a really good test of your problem-solving skills.
The other part is web programming. Nowadays, if you can get a computer that's visible to the internet, or an account on a web server that allows custom CGIs, you can make custom programs that will not only be cool to you, but potentially cool to the entire world. That's a lot more incentive than you had in the old days, or at least a different kind of incentive. It might even make for more solid coders in the future, since hobbyist and learning programmers nowadays get to see people trashing their programs repeatedly, so there's good reason to make them work properly.
No, it's not the same, and it's may not be particularly easy to get started in the windows world, but for the rest of us, there are plenty of good opportunities for the beginning programmers.
=Brian
There is nothing so good that someone, somewhere, will not hate it.
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
I've heard that, generally speaking, some API calls are inserted into production libraries before they're truly meant to be used. Seems like this could potentially be such a case. But I do agree that in almost all cases, APIs should be as open as possible -- plenty of good ideas have come out of independent shops as a result of having good tools (APIs) available and well documented.
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.
Sure the programming tools we have now are way more powerful than before, and you can as you say reach a much larger audience.
But, there are two problems:
1) How to know that anything is there, and
2) The widespread display of programming is not really there for the masses.
For (1), consider than before programming was like an old scooter left on the sidewalk. Anyone could see it was there, pick it up, and mess around. They might not get very far but it gave a feeling for driving.
Now the scooter is gone, and you have a sleek black porche out in the back alley with the keys in the ignition. Unless you go looking you aren't even going to know the porche is there or that you can use it - there's very little material today that tells kids how cool and easy it is to get into programming. Then of course even if people find the porche many will be too daunted by all the array of features and power to even go forward with driving it - even though the keys are right there! Open up an IDE and just imagine it's the first thing like ti you've ever seen. Even the tutorials can be overwhelming to a kid!
Now you also brought up the ability to code things that are more widley viewed and used. That is true and is a great appeal, but let's say a kid does learn some kind of server side programming (the only way to do anything really cool - you can only go so far with Javascript). Well how is he going to host it? Where are the super cheap kids hosting servers that come bundled with computers? Do schools do this nowadays (I have not heard of any supporting student CGI space [perhaps that's just as well, it would no doubt be only ASP servers]) Even though potentially a kid COULD write something that would be used far and wide, the actual ability to do so is not there for most people.
Once people break through the initial hurdles it is much easier to produce stuff now. But the hurdles are far greater than they used to be when I was a kid. Not to mention I doubt I EVER would have got into programming if I were just able to buy the plethora of games they have now instead of writing some of my own from time to time!
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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!
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.
Why doesn't Apple support multiple virtual desktops?
Because that would be confusing as there are real multiple desktops. You can have multiple desktops active at the same time. Say one for surfing and loading trojans by accident and another for online banking and you know that they are safely separated from each other.
It's called Fast User Switching, but realise that they are all active at the same time. Adding virtual desktops which are not separate would confuse the user and water down simple secure separation of tasks functionality.
Oops, I thought I did my finacnes on another desktop but I guess I've accidentally shared it with this guy who send me a funny application via mail or chat, because the separation was virtual/visual only.
You can have separate desktops on Mac OS X and they are really separate, that is a major plus!
Sure I would like multiple desktops within one user account but they should be separate and only have user permitted information exchange, nothing automatically allowed. Yes, that would be called sandboxing and I advocated sandboxes for Mac OS 10.3. I hope they will be in 10.4 as a 2005 surprise because it would stop trojan applications and even protect against a bug in the webbrowser or email applications if those would run inside their own sandbox.
Yes, you can still ask Apple for Sandboxes as they have introduced the basic technology in 10.3 and still have many months before 10.4 is ready.
Dennis SCP
But theyt could also just have changed the names of these calls as well. Do you think the Apple engineers are not cognisant of the ways various third party apps are using even undocument features? They may not support it but they are sure to be monitoring it, and probably even figureing from the ways in which people are trying to call the system how they should enhance the calls further into an API for public consumption.
The original poster sort if implied Apple was hostle to other ways of doing things - but I would say that at worst they are indifferent, and there is some evidence they are a little better than that in reality.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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
There is nothing so good that someone, somewhere, will not hate it.
I'd love to use Desktop Manager instead of Codetek Virtual Desktop which has always felt iffy and bloated to me.
Alas, multimonitor support is still pending, and Codetek gives me what I need even more than virtual desktops - Focus Follows Mouse!
I sorely miss good focus-follows-mouse support; I know it's possible to enable it for X11 and Terminal.app, but only CTVD seems to allow enabling focus-follows-mouse across the whole system.
-Isaac Salpeter
iVillage Operations
I am not a lawyer, and this is not legal advice. For Entertainment Purposes Only.
Now you're talking! Rather than bemoan the lack of virtual desktops, I think it's more useful to say "how can we make one desktop even more useful and usable?". That would be a great addition to Expose that would make it even more useful, even with a lot of windows. It would even elminiate the annoyance of having to define how a user moves windows between rooms or what rooms they show up in, as when new windows were open you could just shuffle them where you like with (as you say) some memory of where that was by app/title in case you re-opened them. You could have piles of stuff spatially related to a project, and possibly even some way to move a whole pile.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I've been using IB and Xcode so I agree it's very powerful...
However you must admit it takes a little work to get into! I don't think I could just point a ten-year-old at the thing and say "here you go!". You have to understand about message passing, how to link components, and so forth.
And as I said it would be nice if Apple made reference to such things existing in the manuals you get with the computer. Most people probably have no idea there are there.
Applescript Studio is probably a good starting point for many people, perhaps they will push that more for newcomers to the system.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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
I dont think it would be in apple's vested intrest to include virtual desktops with OSX because of these The new 30" displays..
I mean why would they include a feature that (except for expose) that would take away from the main selling point of these huge displays i.e acres and acres of display real estate?
On my powerbook, it came with php and perl. I can utilize the man pages for info. But documentation for the beginner is still scarce. I knew what to look for and where to go at least.
Programming is not introduced to students like it used to be. Now HS students are taught applications, not how to make the computer do something that someone else hasn't already installed onto it. Our youth are being deprived of the education on computers that was offered in the 80's.
I, for one, will instruct my children on the creation and use of various scripts and languages for their own personal use. (I will teach them about GPL, of course.)
Link in sig.
I'm assembling a number of tutorials on doing software rendering using JavaScript. I used to think it wasn't good for much but after doing textured polygons with a color key my opinion has changed. Since it's all software the concepts can be transfered to any language that can plot a pixel, do math and store an array.
I've also written a graphical adventure game in TI BASIC as well as some pretty basic 2D and 3D demos. Most of my graphics stuff is now done in OpenGL. I've worked with DirectX quite a bit in the past.
Programming is no harder to get into now that it was X years ago. It's just that kids think they can do anything so they try to start out making the next Quake or MMO instead of starting with the basics and working their way up.
You can also find QBasic and QuickBASIC on-line and Libraries still have books on programming in the language.
The problem isn't that these languages aren't available. It's that they aren't "cool" and everyone tells them they absolutly must start with a C style language or they'll forever be corrupted. So they go to C and find out they can't do anything interesting so they just quit. If I had been forced to start with C, I wouldn't be a programmer.
Ben
Work Safe Porn
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).
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!
Let's see, if Apple released them earlier, you would be bitching about how buggy they were or that Apple kept on changing the API interface on you.
Why don't you be a man instead of an anonymous coward and sign up for an account?
Jesus was a compassionate social conservative who called individuals to sin no more.
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