I'm beginning to wonder if they just take a handful of high-value tiles from Scrabble, put them in a dice cup to shake 'em up, and then pull out letters until they get something unique. Perhaps not, or we'd have resolutions with Js and Ks in them.;-)
Sure, those alphabet soup strings are standardized, but they're still opaque alphabet soup. At least 1080p is descriptive, and 1080p does actually mean 1920x1080. It's standardized by the ATSC.
Sure, current OSes and applications don't support high DPI very well, but that's not a good reason to shun high DPI. Higher DPI is actually easier on the eyes. It's the reason a printed page is much more readable than a PDF scaled to the exact same size onscreen.
Rumor has it the next MacBooks will have high-DPI screens. I hope this is the case and it inspires a few others in the PC world to follow. Once developers start getting high DPI monitors in greater quantities, they'll be more inspired to fix their apps and websites.
1080p is a thousand times more descriptive than UXWVGA or what have you, because it tells you both the vertical resolution and the fact that it's progressive scan (the 'p') as opposed to interlaced. TVs only come in a small number of aspect ratios (4:3 and 16:9), so the horizontal resolution is implied by the vertical.
And to boot, the "GA" part, which has alternately stood for "graphics adaptor" (eg. CGA == Color Graphics Adaptor) and "graphics array" (VGA == "Video Graphics Array"), is just stupid. That video card names somehow became a handle for resolutions is just silly, since originally, all these cards were capable of multiple resolutions. (Ok, the MDA wasn't, but then the MDA didn't end in 'GA' now did it?)
I guess this all happened around the time of the second wave of "SuperVGA" cards. The first wave did 800x600, and the newer ones could do 1024x768, and needed some way to distinguish themselves. Once XGA came along, the alphabet soup resolution plague was here to stay.
And to be clear, I'm also not saying X11 == UNIX. But, when it comes to UNIX GUI environments, it's the de facto standard and to argue otherwise is just silly. If you go Google screen shots of the "UNIX version" and "Mac OS X version" of software available on both platforms, most often you'll see an X11 screen shot for UNIX and the OS X GUI for the OS X version. (Not always--GIMP runs in X11.app.)
This is about practicalities, not technicalities. Practically, OS X is something rather different from UNIX. Practically, "GUI on UNIX" means X11.
The vast majority Mac users I know that aren't engineers never open Terminal.app and never see the UNIX. If you mentioned "tar" or "pipes" they'd have no clue what you're talking about. They don't even call directories directories. They call them folders. None of them has ever set up a.cshrc or.profile, and think "bash" is a verb, "sh" is something the librarian says to you when you're being too loud, "fork" is just something you eat with and if you have any aliases you're up to no good.
I'd say that's a pretty big separation between the OS X experience and the UNIX experience, shell, X11 or otherwise.
I'm not saying OS X is not UNIX. I'm saying it's not typical UNIX, and it's not generally marketed as UNIX. The fact that OS X has a UNIX kernel in it only gets mentioned among tech geeks. Nobody else cares that it has UNIX inside.
One neat trick I like to use with dual head is to put a bunch of "pinned" windows on one monitor, so switching desktops effectively only switches the other monitor an maybe a few incidental windows on the mostly-fixed monitor. I do the same at home with my Linux box. Seems to be a great use model for me.
I might have to experiment with turning focus-follows-mouse again. Last time I tried it (admittedly ages ago) it drove me bonkers. Does it still auto-raise on focus, or is there a way to disable that too?
IIRC, though, you can't move windows between desktops on theirs, which kinda killed it for me. I use VirtuaWin these days, which mostly works, but it has its own weirdnesses.
Look, X11 is pretty much the default UI substrate for anything branded and marketed as UNIX or Linux first. MacOS X has UNIX under the hood, but the UI and user experience is marketed as OS X. The UNIX stuff only comes up when they want to trumpet their stable underpinnings.
Go grab a Linux or Solaris or FreeBSD or OpenBSD workstation, and what do you have? An X11-based environment. Sure, your Linux-based smartphone may not run X11 (although mine does), but nobody really thinks of a smartphone as a "Linux box." If you go build or buy a UNIX or Linux box, it'll be running X11 by default.
Now, Wayland looks to unseat X11 as the default graphical substrate for the *nix UI environment, but that's a long way off. And even once they get there, they'll get there with an X11 emulation module. So, I think it's fair to say when folks say UNIX or Linux, they imply an X11-based environment.
But its default userspace environment (the Mac OS X GUI) is nothing like any of the traditional UNIX X11-based environments. So, while it may have a BSD kernel in there and a bunch of UNIX utilities available in a Terminal.app window, Omnifarious' comment about UNIX having multiple desktops before OS X is entirely valid. It had them before OS X existed.
it's the kernel developer's insistence on the lack of a stable ABI/API
Don't tar the kernel with this brush. Linus is famous for keeping the userspace ABI the kernel exposes stable, even when it has obvious problems. Now, if you're talking about the kernel-level ABI changing in ways that make NVIDIA's life hard for its kernel-level drivers, OK, but for userspace, the ABI is rock stable.
The real instability in userspace ABIs/APIs comes from all the other "flavor of the month" stuff coming in userspace libraries, such as GNOME. They're busy making the latest shiny N+1 version of GNOME or what-have-you rather than evolving version N.
What's all this about GCC being slow? It's one of the fastest (in terms of compile time) compilers I work with regularly. You need to try out some highly optimizing compilers for embedded processors sometime to reset your expectations.
Some real numbers: I just recompiled (with all the optimization bucky bits turned out) my Intellivision emulator and SDK. That's just over 100K lines of code. Took 3.75 seconds with make -j6. "But that's a parallel make!" Fine, I'll do it again tying three of my computer's CPUs behind its back: 13.54 seconds. (Only 8.6 CPU seconds.) At work, it can take 5 seconds just for RVCT (ARM's compiler) just to contact the friggin' license server. Or maybe it's our NFS servers. Hard to say.
Ok, now to be fair, that's nearly all C code. C++ is a whole 'nuther animal. But much of that is C++'s fault, or more correctly the modern C++ libraries. The template processor is a Turing complete functional programming language, if you sneak up on it sideways and catch it off guard. The STL and Boost folks have perfected that snipe hunt and made an industry out of it. That means that C++ code can compile a bit more slowly. (Fine: "a bit" is an understatement. More like a quadword.) BTW, my comment on STL and Boost is not meant to be a flame of their work. It's incredibly useful stuff. But, I consider a bunch of what they're doing something of an abuse of C++'s limited mechanisms. If C++'s metaprogramming facilities were more deliberately designed for this level of use, I think compile times would come down and we'd avoid the "thirty pages of spaghetti because you forgot a comma" error message experience.
The book "C++ Template Metaprogramming" has a rather enlightening chapter (Appendix C) on compiler-time performance for various C++ features. (Get a glimpse here. Just search for Appendix C.) Unfortunately, it's not terribly up to date--my copy says (C)2005--so it measures GCC 2.95.3 and GCC 3.3. GCC definitely was not a performance leader in that era, but most of the compilers were pretty bad. I'd love to see an updated version of it for the latest crop of compilers. I seem to recall finding a website a couple years ago with updated data that showed GCC fixed some of the quadratic algorithms in this space, but I could be dreaming it. If anyone actually has pointers to some data on this, that'd be great.
Re:It's hard work being a JavaScript Rockstar.
on
GCC Turns 25
·
· Score: 4, Funny
I think the appropriate response (at least for posters of a certain age) is:
I had originally wrote "amusing" but changed it to "mesmerizing", precisely because of the power Fox wields. That part certainly is not amusing. (The Daily Show send ups of it, though, are.) In any case, the sweeping generalizations came from Fox (the hypocritical bit in particular came from a Sean Hannity clip I saw), not me.
I too count myself as a liberal. I also personally tend to look down on societies that put religion ahead of people and reason, regardless of the religion. That's the kind of thing that leads to deadly riots as a response to someone burning a book. Sure, burning the Koran is a grave insult, but few would argue that that's a proportionate response.
Someone I work with (who, incidentally, once had Brian Kernighan as his boss!) also wrote a bi-directional simulator. I've played with the idea myself a few times. They are a kinda cool concept. Still, the reasoning process is probably the more important part than being able to rewind, because it leads to actual insight. It's sorta like the difference between treating symptoms and finding an actual cure.
It's rather mesmerizing watching the head-game Fox plays with this. Buttering up one side were all the accusations that Obama is a Muslim. Then all the Obama supports complain that it's a false accusation. So Fox butters down the other side with "Why are you liberals so hypocritical? Why is being Muslim such a bad thing?" It's really quite amazing to watch.
Ah, but that would require the US to distance itself from Israel, and that isn't going to happen any time soon. We seem all too ready to fall in line with whatever Israel wants, it seems. Sure, we make noises in other directions, but in the end...
And in either case, cancer patients in India get access to the drug at reasonable prices. Let's not forget about the cancer patients in this, shall we?
And, I think it's perhaps a little wrongheaded anyway. The area of a circle is pi*r^2. That'd become tau*r^2/2... You took the 2 out of one place and put it in another. And it does nothing for spheres: Volume = (4*pi*r^3)/3 = (2*tau*r^3)/3; Surface area = (4*pi*r^2) = (2*tau*r^2).
And besides, tau's already claimed as the "time constant" variable, so n'yah!
I'm beginning to wonder if they just take a handful of high-value tiles from Scrabble, put them in a dice cup to shake 'em up, and then pull out letters until they get something unique. Perhaps not, or we'd have resolutions with Js and Ks in them. ;-)
ATSC has standardized the resolutions for televisions. 1080p means 1920x1080, period.
Sure, those alphabet soup strings are standardized, but they're still opaque alphabet soup. At least 1080p is descriptive, and 1080p does actually mean 1920x1080. It's standardized by the ATSC.
Sure, current OSes and applications don't support high DPI very well, but that's not a good reason to shun high DPI. Higher DPI is actually easier on the eyes. It's the reason a printed page is much more readable than a PDF scaled to the exact same size onscreen.
Rumor has it the next MacBooks will have high-DPI screens. I hope this is the case and it inspires a few others in the PC world to follow. Once developers start getting high DPI monitors in greater quantities, they'll be more inspired to fix their apps and websites.
1080p is a thousand times more descriptive than UXWVGA or what have you, because it tells you both the vertical resolution and the fact that it's progressive scan (the 'p') as opposed to interlaced. TVs only come in a small number of aspect ratios (4:3 and 16:9), so the horizontal resolution is implied by the vertical.
And to boot, the "GA" part, which has alternately stood for "graphics adaptor" (eg. CGA == Color Graphics Adaptor) and "graphics array" (VGA == "Video Graphics Array"), is just stupid. That video card names somehow became a handle for resolutions is just silly, since originally, all these cards were capable of multiple resolutions. (Ok, the MDA wasn't, but then the MDA didn't end in 'GA' now did it?)
I guess this all happened around the time of the second wave of "SuperVGA" cards. The first wave did 800x600, and the newer ones could do 1024x768, and needed some way to distinguish themselves. Once XGA came along, the alphabet soup resolution plague was here to stay.
And to be clear, I'm also not saying X11 == UNIX. But, when it comes to UNIX GUI environments, it's the de facto standard and to argue otherwise is just silly. If you go Google screen shots of the "UNIX version" and "Mac OS X version" of software available on both platforms, most often you'll see an X11 screen shot for UNIX and the OS X GUI for the OS X version. (Not always--GIMP runs in X11.app.)
This is about practicalities, not technicalities. Practically, OS X is something rather different from UNIX. Practically, "GUI on UNIX" means X11.
The vast majority Mac users I know that aren't engineers never open Terminal.app and never see the UNIX. If you mentioned "tar" or "pipes" they'd have no clue what you're talking about. They don't even call directories directories. They call them folders. None of them has ever set up a .cshrc or .profile, and think "bash" is a verb, "sh" is something the librarian says to you when you're being too loud, "fork" is just something you eat with and if you have any aliases you're up to no good.
I'd say that's a pretty big separation between the OS X experience and the UNIX experience, shell, X11 or otherwise.
I'm not saying OS X is not UNIX. I'm saying it's not typical UNIX, and it's not generally marketed as UNIX. The fact that OS X has a UNIX kernel in it only gets mentioned among tech geeks. Nobody else cares that it has UNIX inside.
One neat trick I like to use with dual head is to put a bunch of "pinned" windows on one monitor, so switching desktops effectively only switches the other monitor an maybe a few incidental windows on the mostly-fixed monitor. I do the same at home with my Linux box. Seems to be a great use model for me.
I might have to experiment with turning focus-follows-mouse again. Last time I tried it (admittedly ages ago) it drove me bonkers. Does it still auto-raise on focus, or is there a way to disable that too?
IIRC, though, you can't move windows between desktops on theirs, which kinda killed it for me. I use VirtuaWin these days, which mostly works, but it has its own weirdnesses.
"It's a UNIX system! I know this!"
Look, X11 is pretty much the default UI substrate for anything branded and marketed as UNIX or Linux first. MacOS X has UNIX under the hood, but the UI and user experience is marketed as OS X. The UNIX stuff only comes up when they want to trumpet their stable underpinnings.
Go grab a Linux or Solaris or FreeBSD or OpenBSD workstation, and what do you have? An X11-based environment. Sure, your Linux-based smartphone may not run X11 (although mine does), but nobody really thinks of a smartphone as a "Linux box." If you go build or buy a UNIX or Linux box, it'll be running X11 by default.
Now, Wayland looks to unseat X11 as the default graphical substrate for the *nix UI environment, but that's a long way off. And even once they get there, they'll get there with an X11 emulation module. So, I think it's fair to say when folks say UNIX or Linux, they imply an X11-based environment.
But its default userspace environment (the Mac OS X GUI) is nothing like any of the traditional UNIX X11-based environments. So, while it may have a BSD kernel in there and a bunch of UNIX utilities available in a Terminal.app window, Omnifarious' comment about UNIX having multiple desktops before OS X is entirely valid. It had them before OS X existed.
Uh...
Don't tar the kernel with this brush. Linus is famous for keeping the userspace ABI the kernel exposes stable, even when it has obvious problems. Now, if you're talking about the kernel-level ABI changing in ways that make NVIDIA's life hard for its kernel-level drivers, OK, but for userspace, the ABI is rock stable.
The real instability in userspace ABIs/APIs comes from all the other "flavor of the month" stuff coming in userspace libraries, such as GNOME. They're busy making the latest shiny N+1 version of GNOME or what-have-you rather than evolving version N.
err, dropped a ! somewhere: if (!string || !*string) return;
No, no, no. This is a HARD PROBLEM. You MUST use RECURSION!
void print_string(char *string)
{
putchar(*string);
print_string(string + 1);
}
What's all this about GCC being slow? It's one of the fastest (in terms of compile time) compilers I work with regularly. You need to try out some highly optimizing compilers for embedded processors sometime to reset your expectations.
Some real numbers: I just recompiled (with all the optimization bucky bits turned out) my Intellivision emulator and SDK. That's just over 100K lines of code. Took 3.75 seconds with make -j6. "But that's a parallel make!" Fine, I'll do it again tying three of my computer's CPUs behind its back: 13.54 seconds. (Only 8.6 CPU seconds.) At work, it can take 5 seconds just for RVCT (ARM's compiler) just to contact the friggin' license server. Or maybe it's our NFS servers. Hard to say.
Ok, now to be fair, that's nearly all C code. C++ is a whole 'nuther animal. But much of that is C++'s fault, or more correctly the modern C++ libraries. The template processor is a Turing complete functional programming language, if you sneak up on it sideways and catch it off guard. The STL and Boost folks have perfected that snipe hunt and made an industry out of it. That means that C++ code can compile a bit more slowly. (Fine: "a bit" is an understatement. More like a quadword.) BTW, my comment on STL and Boost is not meant to be a flame of their work. It's incredibly useful stuff. But, I consider a bunch of what they're doing something of an abuse of C++'s limited mechanisms. If C++'s metaprogramming facilities were more deliberately designed for this level of use, I think compile times would come down and we'd avoid the "thirty pages of spaghetti because you forgot a comma" error message experience.
The book "C++ Template Metaprogramming" has a rather enlightening chapter (Appendix C) on compiler-time performance for various C++ features. (Get a glimpse here. Just search for Appendix C.) Unfortunately, it's not terribly up to date--my copy says (C)2005--so it measures GCC 2.95.3 and GCC 3.3. GCC definitely was not a performance leader in that era, but most of the compilers were pretty bad. I'd love to see an updated version of it for the latest crop of compilers. I seem to recall finding a website a couple years ago with updated data that showed GCC fixed some of the quadratic algorithms in this space, but I could be dreaming it. If anyone actually has pointers to some data on this, that'd be great.
I think the appropriate response (at least for posters of a certain age) is:
<madge>"You're soaking in it."</madge>
I had originally wrote "amusing" but changed it to "mesmerizing", precisely because of the power Fox wields. That part certainly is not amusing. (The Daily Show send ups of it, though, are.) In any case, the sweeping generalizations came from Fox (the hypocritical bit in particular came from a Sean Hannity clip I saw), not me.
I too count myself as a liberal. I also personally tend to look down on societies that put religion ahead of people and reason, regardless of the religion. That's the kind of thing that leads to deadly riots as a response to someone burning a book. Sure, burning the Koran is a grave insult, but few would argue that that's a proportionate response.
Someone I work with (who, incidentally, once had Brian Kernighan as his boss!) also wrote a bi-directional simulator. I've played with the idea myself a few times. They are a kinda cool concept. Still, the reasoning process is probably the more important part than being able to rewind, because it leads to actual insight. It's sorta like the difference between treating symptoms and finding an actual cure.
It's rather mesmerizing watching the head-game Fox plays with this. Buttering up one side were all the accusations that Obama is a Muslim. Then all the Obama supports complain that it's a false accusation. So Fox butters down the other side with "Why are you liberals so hypocritical? Why is being Muslim such a bad thing?" It's really quite amazing to watch.
Ah, but that would require the US to distance itself from Israel, and that isn't going to happen any time soon. We seem all too ready to fall in line with whatever Israel wants, it seems. Sure, we make noises in other directions, but in the end...
And in either case, cancer patients in India get access to the drug at reasonable prices. Let's not forget about the cancer patients in this, shall we?
And, I think it's perhaps a little wrongheaded anyway. The area of a circle is pi*r^2. That'd become tau*r^2/2... You took the 2 out of one place and put it in another. And it does nothing for spheres: Volume = (4*pi*r^3)/3 = (2*tau*r^3)/3; Surface area = (4*pi*r^2) = (2*tau*r^2).
And besides, tau's already claimed as the "time constant" variable, so n'yah!
Speaking of which, they've added lambda expressions to C++.