I've been at my new job for a couple of days now. Unfortunately, I can't really talk about specifics on what I am doing, but it is related to computers, programming and Mac OSX.
To be honest, I had never touched OSX before setting foot in the office monday. Hell, I didn't even know I was about to work on OSX. My first reaction was probably the same as a small child thrown in a pool with the ever so helpful instructions "swim or drown!" After a couple of hours, though, it became not so foreign and somewhat familiar.
OSX is built on BSD, which gives it a decent API for things such as threads and sockets, although the GUI uses some proprietary Apple API. One can use X11, but seeing as X11 UI toolkits usually have the visual elegance of Windows 3.1, there is no compelling reason to use it besides producing a quick port. The UI is cute, with colored and animated buttons, windows morphing into a minimized state, icons bouncing and such.
Unfortunately, there is one catch. The window management is rather crummy compared to Gnome, KDE or Windows. Windows don't spawn in a maximized state, which leaves the user with a cluttered display of many windows, each shining their pretty widgets in the hope that the user clicks on them. Seeing as I prefer to only have one task taking the whole screen at once, resizing every window quickly becomes an annoyance. Also, the dock at the bottom only shows one icon per application, even when the application has several windows open.
The problem of poor window management is exacerbated by applications which use a lot of windows, such as Metrowerks CodeWarrior. For an example of this tediousness, the opensource application GIMP suffers from the same kind of problem, vomiting windows everywhere on the desktop. Ever noticed the menu called Window in most Windows applications? Well, you pretty much have to use it in OSX to navigate within an application's windows.
Of course, OSX has Exposé but this seems more like a half-baked afterthought solution(it is somewhat hard to explain what it does, so head to Apple's demonstration) rather than solving the real problem, which would really be solved with using MDI and TDI. IntelliJ IDEA is a great example of how the minutiae of window management can be avoided by using only one window(this is the same approach used by VS.net).
Windowing issues aside, most of OSX is pretty slick(from a user's perspective, not a programmer's). The sheer number of OSX lookalike themes is a reminder of how neat it looks, unlike the ugly and gargantuan blue Luna theme that comes with Windows XP. The only odd thing I can find about the OSX theme is the color of the focused button, which becomes blue. As blue is the primary color perceived as the least luminescent by the human eye, this seems like an odd choice, as it seems to convey at first sight that the button is less important.
One of the nifty things about OSX is their handling of applications. Applications are internally a directory, although to the user, they appear as one icon. To install an application, simply drag and drop the icon somewhere and double click it. Seeing as they are self-contained, they Just Work™. No DLL hell, no ActiveX control registration, no nonsense.
iTunes is pretty neat, featuring a playlist-oriented display like foobar2000 instead of visualisations and mini-browsers and other junk. It can also share tracks on the local LAN, which is useful to snoop on other's playlists and stream their MP3s. I have no idea if you can copy them locally, though, as I haven't tried.
If OSX managed to convince every developer out there that develops for it to use something else than SDI and stop spawning tons of windows, the window problem would be almost resolved. Considering the number of Mac developers, this might not be such an impossible task as it first seems.
[MoonJihad's Page of Nothingness] (Permanent link to this entry) (Comment on this)