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 read the interview, but I couldn't find where he mentions about it becoming harder for beginner programmers.. maybe I'm just blind, but if someone could point it out for me
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
Apple isn't about choice. Apple is about the One True Way, which is whatever way Jobs likes at the moment.
In this case the Apple solution is Expose; diluting that with other solutions (even though they may work better for some workflows) just isn't in the cards.
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.
The last time I tried to use Rich Wareham's desktop manager on my PowerBook G4 (1 Ghz; 15"), it crashed in Jaguar/MacOS X 10.2.8 since it wasn't compatible with it. Only Panther.
Are there any good free virtual desktops? Codetek's nice but it is not free and a bit bloated (too many features).
I use GoScreen in Windows, and it rocks!
Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
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
Anyway, while I agree with his point about programming being a lot less attractive to new users than it was 20 years ago, I don't know if that's true when comparing to 10 years ago. GUI programming with new tools (VB, Cocoa and Interface Builder, Qt and Designer) is a much more attractive proposition for people with a little C/C++ than it was a decade ago.
What I'm listening to now on Pandora...
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
To steal. It's slang, and I don't think it carries any real crime connotatiom.
Silly Brits, and their made up English words.
--LordPixie
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.
to tell what API calls are being used by an application. Just look at what symbols the binary references.
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!
Yes he had to reverse engineer said features, but as I said that also meant Apple could have changged them on a whim - instead improving on them to give DesktopManager better support. The fact they were closed only bolsters the point I was making.
It's as close to support as you are going to see, until Apple feels the APIs are ready for prime time. There's nothing to say these will not be official API's sometime in the future.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
One side effect of a heavy message-passing style API like Cocoa is that it's super easy to see what apps are calling what libraries and methods. Indeed there are Cocoa utilies mentioned in the article that let you "sniff" such traffic and inject things into messages sent for probing.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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.
Sure you can still write command line apps in very little code. But you want things with graphics, winodws, etc. (which is the norm to have a "real program" now) and it all quickly grows beyond that.
And as he said, anything with graphics is even generally trickier. And on Windows how could they have compiled ANY of your code Christmas day without a network connection?
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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
I haven't tried Desktop Manager, but I use CodeTek Virtual Desktop Pro on my Powerbook. I have to say, looking at the screenshots on the DM website, I don't particularly want to switch. The CodeTek pager is much much nicer, and I certainly don't want a big volume control style white icon in my face every time I switch a desktop. But maybe DM is a bit faster - CVD can take a second or two to switch desktops. I also need perfect integration with X11, which CodeTek has.
The world is everything that is the case
I tried this, but frankly, even being a long-time Linux user before moving to mac, I just find this feature confusing. I am probably not in the right mind-set, but I like to switch cleanly between my applications. I do not see the need of having, say, my pdfs on one desktop, web browser on another, mail on another, programming on another. I would tend to have one or two applications per desktop, and I can already switch between these simply with cmd-tab and hide others with alt-cmd-h, etc.
Best Buy can have you arrested
Indeed, "nick" can mean anything from shoplifting to just borrowing a pen:
Highlights are secret APIs in OS X for VirtualDesktops
/.ers to start bashing Apple as hard as you do Microsoft for secret APIs, or are you guys a bunch of hypocrits?
OK... time for you
You may be right. One thing I wish is that I saw more posts from real parents with real kids - I have no kids so it's hard for me to have a feel for what kinds of vectors might lead a kid to program nowadays. My apologies if you are a parent, I just was not sure.
It seems like the decline in CS majors would have something to do with this barrier, but perhaps it's just enough programming going into other areas of study to satisfy most kids interested in programming in addition to other topics.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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'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.
Having a single button in DVD Player and iTunes for both fast forward and chapter skip while QuickTime has separate buttons is honed to a sheen? Ever try to advance just_a_little in a DVD? There's a reason that 99% of the remotes for standalone DVD players have separate buttons for them. They're two completely different functions.
Not having decent support for the concept of "home" and "end" is a fine sheen?
Having the Safari close tab button be on the tab itself so that a slight mistargetting closes the tab is a well designed UI? (Yes, I know Konq does it as well, and it's wrong there too.)
Apple does some things very well, but they leave a lot of rough edges that the fanatics don't like to see.
You have given some minor nitpicks (though you are dead wrong about tab closing, they have got that one right), but in general Apple tries to work over all the angles before they release something. I am more talking conceptually than in the actual product shipped.
Sure they miss some aspects and have bugs or bits of UI they could have improved on, but in general the software and OS they produce is a lot more polished than most things and is certainly more consistant in general.
My own pet peeve UI wise is the printer dialogue which I think is only marginally better than nothing, but that still doesn't mean I consider the OS as a whole a pretty well polished bit of work.
Frankly, I have never seen a UI for virtual desktops that I *loved* - I have used a number that I tolerated, as they were useful. But nothing that I used to the extent I use Expose because it is simply well thought out and very easy to activate.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Sure Squeak will fit the bill. As will a million other choices, indeed that's part of the issue I think - before you learned basic to learn programming. Now you could take a hundred different paths, and it's hard to know which is best when you don't even know you're interested to start with!
As for memory management increasing the hurdle - I don't buy that. Unless you got crazy with PEEK and POKE there was no goo dway to crash a Basic program either. And BASIC had no memory to free so it was much like modern languages in that regard as well. It was just more omnipresent, you knew it came with a computer, and it was more used as well since computer magazines would often print handly little utilities in BASIC that could actually perform some task of use. Imagine PC World nowadays actually printing code!
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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.)
One of the reasons why they don't want to encourage people to use hidden APIs is because they might want to change it. If they endorse their use, then they might be stuck with supporting a busted API for the lifetime of the product. Apple likes to boast good backwards compatability within OS X versions.
Any public API has been fine tuned and deemed worthy.
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
If that plasma ball line worked, there's hope for us all!
"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."
Humm, you mean 'a bit of a plagiarist', right Rich? As you 'borrowed' most of that code from those that did the work... i.e. the Ogle DVD player people.
$sed -i -e's/ogle/xine/g' *.[hc]
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
FTFA: 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)
Errr, doesn't MVC (Model-View-Controller) go back to SmallTalk? Contrary to some opinions, MFC contains no innovations that I'm aware of.
Open /Applications/AppleScript/Script Editor.app and type in:
display dialog "Hello World!"
Click run. Yeah, Windows is almost as easy to use as a Mac ;-)
Those screens are useful for graphic artists involved in HD content creation you ninny. Exposé and virtual desktops will not help those people much.
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.
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
where do i get hold of a plasma-ball?
insecurity asks the wrong question irritation gives the wrong answer
Me, I'm just pissed that not everything (games, some screensavers, etc) supports multihead. I run three displays on my workstation- you'd be surprised just how many apps don't support the real estate. :-|
:)
As an artist who hangs with geeks, I seem to have become the point man and go-to guy for several linux/solaris friends who've bought powerbooks over the past couple of years.
Inevitably, after they get over virt-shock and set the terminal back to some acceptable defaults, they want to know if they can change the focus model and if so, how. That sort of thing has always been completely counter to my workflow- don't need Illustrator or Irssi popping up when I'm rolling between a texture file and the target document.... it would drive me mad. I've disabled it on a couple of Windows machines I had to deal with awhile back (machines with some sort of extension that enabled this feature installed).
I was dead-set on hating focus-follows-mouse until I used IRIX.
Good to know that there's at least some option for the mac.
If you want to use that kind of environment, it's still there. You can run Apple II Basic in emulation (faster than ever) or run native Basic implementations. If you want something more modern, there are plenty of environments that make getting started with programming easy: Python, Matlab, PLT Scheme, etc.
But if you want to write real-world applications, you have to deal with complexities: when there are dozens of applications, windows, and GUI elements on the screen, you just have to know what that means. It's like driving on a private racetrack (where the choice of destinations is limited) and driving on public roads (where there are lots of choices, but you need to know how to live with other drivers).
Thank ya' Jesus! Thank ya' Lord!
Can be found here http://www.microsoft.com/windowsxp/downloads/power toys/xppowertoys.mspx along with other powertoys and tools all free of charge and quite small to download
It's called Fast User Switching, but realise that they are all active at the same time.
Fast User Switching is the most misnamed feature ever. It should be called flashy, really fucking slow user switching.
I find that compared to virtual desktops, Expose is much more destructive on a cognitive level.
When I'm programming in XCode and I want to get at a window that's covered by the browser or something similar, I first have to hit a key or mouse to a hot corner and watch everything change to new and unknown positions, examine the windows, and visually identify the one I want.
Or I have to click the icon on the Dock. This makes all the windows for that application come up, covering other stuff that I needed to look at. So then I have to play window janitor to see that header file that I quickly more'd or whatever.
In either case, I'm dealing with a lot of things that are not related to that function call I was looking for and subtle errors can result.
With Expose, the fact that you're visually tracking windows that are flying all over the place, changing size, and appearing in different positions most of the time doesn't help when you consider the context switching your brain has to do to process all this information. It's like randomly tossing your sheet music papers along the piano everytime you need to turn the page.
Whereas with virtual desktops, I hit Alt-3 and it takes me to my IDE and a few terms. Because I'm consistent in where I put things, this action is trained and, like mouse gestures, the physical motion is done without any thought. The nifty little transition animation is a lot less dramatic and helps to subconsciously cue your brain that your going to another set of applications.
While I'm talking about programming, I'm sure people doing "average Mac user" tasks like writing in Word, making something in Photoshop, or even just looking at more than 2 pdfs concurrently, also need to concentrate at the same level some of the time.
I'm also a programmer and still find Expose is just as useful to me as were virtual desktops.
You could set up a room and have windows appear in fixed spots, which is nice. But I was finding I ended with with windows I wanted across some rooms and not others, and moving some windows between rooms at times. Thus there was an overhead to using rooms.
That's what I like about Expose, that I can keep everything in place and have quick access to things withouth the fuss of room maintenience.
I don't find it distorting at all, rather than "thrwing your sheet music all over" I find it more like stepping back to look at a crowded shelf, so I can find what I am looking for by faster visual searches. Sometimes I would forget what room something was in and have to toggle between them, but with Expose I can do a very quick parallel procesing O(1) search of my entire workspace using visual recognition. As a programmer I would think you would appreciate that!
I'm not saying there's no place for grouping that rooms provide, just that Expose has served me well enough to not miss rooms, and I still think there are probably better ways that strict "rooms" or virtual screens that are larger than the real screen.
I will say that sometimes with a lot of text windows it can be harder to recognize what you want, but I find generally code has a distinctive shape that I can discern pretty easily. I think a good enhancement for Expose though would be to place the titlebar text across each screen in a large font, fairly translucent so you could make out the screen beneath. That might hinder the quick visual search though as your brain struggled to process the text.
"There is more worth loving than we have strength to love." - Brian Jay Stanley