I've been living with this for the last few years in an Boston, and it's utterly retarded. I happen to live at the very edge of where three area codes intersect, and it's a MAJOR annoyance. The only solution is to use speed dial.
Actually, I lied. It's actually much simpler than before. A few years ago, there was some magic set of rules that required you to sometimes dial an area code, except you could never figure out what it was. If you dialed the area code when you weren't supposed to, a recorded voice would chastise you. If you didn't dial the area code when you needed to, the same voice would so. The only way to find out was to dial every single stinking phone nuumber twice, every time.
One might think that the rule is something like if your number is in the same area code, you don't need to dial it. Of course, that's not the case. I tried to look it up in the phone book but failed. It has something to do about which is a "local exchange", in which "local exchange" is defined by the cross product of all the prefixes in the area code graphed out onto a 2D grid and then sprayed with monkey feces. (Whether a human or monkey sprayed the feces is left to an exercise for the reader.)
But I digress. Even worse, the message would come on and say: "you dialed the area code but you shouldn't. Please hang up and do it again, stupid" (paraphrase). WHAT? You mean the system can detect that I made some trivial mistake, and then refuses to correct it for me? How hard would it be for the computer to truncate those digits and just put the damn call through?
Saldy, there used to be a day when phone numbers fit in your short-term memory. That day is long gone. Too bad the phone companies can't figure out how to make proper "relative" phone numbers like a hierarchical file system. People usually know what phone number they are dialing from. It must be possible to build a system that lets the user always: 1) dial relatively to their own number, and 2) let them explicitly qualify it if they're unsure (rather than posting an obtuse "you messed up!" error message). The user would only need to know one rule then: "any digits that match yours, you can drop". How hard would that be? I'd be glad to toss out fixed-length phone numbers and use a "terminate number" button to make it work. Heck, everyone is used to it already with cell phones.
It's almost like the phone company is taking usability lessons from Microsoft.
Right on. I used to write software for ATC, and I remember at first thinking "why are these guys using paper strips"? Then I watched them in action.
The strips sit in little colored plastic containers that give them rigidity, and there is a rack that holds these containers in place. The controllers arrange the strips physically in meatspace in whatever order they like- sorted by time, alphabetical, altitude, airline, whatever. Scalablilty? Sorry, a controller cannot handle 5000 airplanes, so having a computer sort them usually is not a win: it takes more time for the user to specify how they want to sort it than for them to do it themselves. The controllers would quickly annotate the strips with small indecipherable (to me) marks; of which there would be no corresponding key on a keyboard. They'd toss the strips back and forth to each other.
So what did the our system do? Well, what we could automate is printing of the strips right from the flight plan data, and we could spit them out at a printer closest to the person who needs it. The hardware designers designed the rack and a little chute that they could chuck the plastic holders into, which would empty into a bucket, where someone could toss all the strips and reuse the holders.
Anyway, the point being is that the software is just part of the whole user's workflow. Trying to make everything electronic is just ridiculous, as would be requiring the user to go through 4 nested menus to change the radio volume.
You have to watch the users use your product. This car control system, of which I heard scathing review on NPR, smacks of over-design and no real-world, testing by non-techies: Could you imagine futzing with inaccurate voice menus when driving 75 mph in the rain, and a screaming toddler in the back seat?
That's very funny. Have you every taken out a mortage or signed any other sort of nontrivial contract?
Or about all that legalese at the end of radio car commercials, where nobody possibly can humanly talk that fast, you just know it's sped up by computer but keeping the pitch the same? Lawyers love blocks of illegible text; their profession relies on the fact that you can't read or understand what the hell they are saying. Witness the constant use of riduculously rococo and meaningless terms like "forthwith" and "whereas".
Absolutely correct. Right now, it's a nightmare to develop a proprietary application for Linux because you have to examine every single library to see what the license is, and not all of them are as neat and tidy as "GPL no, LGPL/BSD ok". So then that mean start poring through pages of legalese, which may or may not be intelligible.
Which means you really have to send it to a lawyer if you really want to be sure. Who will gladly charge you $500/hour to look at it, and then weeks later say: "No, you can't use it. Gimme $10,000."
At that point, you just say "screw it" and write it yourself. The result? Who loses? The apolitical Linux users who just need the goddammned app and are willing to pay for it. Then they have to wait a few years while wheels are reimplemented. That time spent reimplementing it translates to a higher cost to users, and longer time getting the stuff they want.
And this is why I'll never see potentionally useful stuff like Quicken or Finale for Linux. Sigh...
Personally, I think the LGPL is the right thing to do if you want to write any library code, or otherwise intend your app to be a building block for other apps.
(Disclaimer: I write proprietary software to put food on the table, and free software for fun.)
I find that most sites that have $CALL$ as a price have integrated shopping. So you put the item in your shopping cart, and bang, there's your price. They can't charge you without telling you what it is, right? Then you just never check out...
(The sites that I see this are usually high-end musical instruments. It makes me laugh-- there's a QUANTITY next to it: Yes, I'd like 10 baritone saxophones shipped to my door, please, at $6,000 a piece.)
I thought this was BS Big Ideas That Changed The World. Bullshit ideas that the world fell for and worked anyway in spite of it. I think this would have been more interesting, then.
Maybe it's time to increase the font on the web browser...
Alban Berg and Anton Webern did a much better job of writing listenable music with the system, mostly because they allowed some human influence in the model.
Berg, yes. But Webern? His serial stuff is the most mathematically precise and boring stuff I've ever studied. Maybe I've just looked at the wrong stuff. Schoenberg's serial and even free atonal stuff is far more interesting. And as a music geek, I love contemporary music.
I think you misunderstand me. I am not saying open source sucks. I'm saying very many OSS developers give little heed to usability, and that damages the way "ordinary" people see us. Yes, I said "us".
In my original reply, I said I am an open source developer. However, I also believe in usability for non-experts, which means that keyboard navigation has the be there by default.
That means keyboard navigation has to work for people who don't know how to recode and recompile applications, learn XUL, or manually edit config files to make things do what they want.
My point is that if it's done inside the toolkit, then things will Just Work even if the developer doesn't forget.
User-hostile attitudes like yours ("bend the newbies back in shape") will do nothing to get open-source more widely accepted by a larger, nontechnical audience.
Further, a proper set of default keyboard mnemonics will not override any shortcuts you have setup in your window manager. Window managers rule the roost in X programming, and if it binds a key, then it simply doesn't deliver the key to the underlying application.
It would save developer time manually doing it, not effect power users who manually need to override things (quite easily done via X resources, wm configuration, etc) and help people who are used to Windows where you have better keyboard navigation.
What if the item I want to access with the keyboard isn't on a menu, oh, like the Yes/No dialog in Mozilla? What if it's a toggle button inside a dialog? Did you even read my message?
You are confusing accelerators with keyboard navigation:
Keyboard navigation (things like Alt-F to post a "File" menu) are completely different beasts than accelerators. Mnemonics are visible, modal keyboard navgiation items, are not customizable, are complete, so that you don't have to go out of your way to create them. Accelerators (like Ctrl-S to "Save") are hidden modeless shortcuts into common features of the application, are almost always incomplete, and must be user-definable.
A completely nonobvious and invisible way of assigning your own keyboard accelerators is not the same as having a visible and complete set of keyboard navigation.
You are also taking the classic open-source argument that Makes UIs Suck: well, just go fix it yourself if you don't like it! Just press Ctrl Alt Meta Shift CokeBottle, then edit >~/.foobarrc, add "MakeMyAppLessStupid=True" restart X, and you're good to go!
Consider an older, disabled person (or even myself with a hangover) with shaky hands, who doesn't have the fine motor control to do pixel-perfect placement with a mouse. Accessability is another reason for good keyboard navigation. Are you saying that they have to assign every interface element to a shortcut? (How many hours would that take? Dunno about you, but I'd run out of keys and wouldn't be able to remember them all.)
It's small, boring things like that that really piss me off about all almost open-source UIs. The reason why is this: keyboard navigation is hard to get right. Most developers seem to want to spend all their time play with time-wasting, usability-destroying "themes" than actually improve the usability of their app.
It's hard, typically, because the second you change the wording of a menu or dialog dox, all the keyboard navigation letters have to change.
The single best way to fix this stupid problem is for keyboard shortcuts to be automated but overrideable in GUI toolkits. When I write a menu item, it should scan the entire list of menu items, and generate keyboard mnemonics for everything. It's not a terribly complicated algorithm, but it is tedious to do by hand. Sometimes, it will come up with lousy results, and some menmonics can't be deduced from the text, but it would solve the problem of developers completely forgetting about them.
We've put a ton of work on making nedit keyboard accessible. Almost everything you can do with the mouse, you can do with the keyboard. It's a huge amount of work, but we wouldn't have it any other way. Alomst every GUI item can be hit with the keyboard, and vice-versa.
Want to know why I won't use Mozilla on Windows? When a yes/no dialog pops up, I can't type 'Y' or 'N' to dismiss it. Stupid things like this, problems that were solved 15 years ago, still plague us.
It's ironic how MDI gets trashed and praised, often by the same people.
Tabbed browsing in Mozilla? Quicken's tabbed windows? That's MDI, too. And lots of people like it. It's MDI done right.
The problem with old-style MDI apps (e.g., icons in a big empty window) that it was a one-size-fits-none policy that all apps could use. The in-app window management was usually horrible: icons that could be overlapped.
The only different is that apps are using MDI nowadays and are customizing the in-app window management to the application. Most people love it; other control freaks don't (e.g., if you have a custom 9000-line.fvwmrc file).
Stephen King's Rita Hayworth and The Shawshank Redemption is one of my all-time favorite stories. If you're not a King fan, don't let him scare you off: there's not a single monster or bogeyman in there. Pure human emotion.
The movie version, directed by Frank Darabont, is, in my opinion, the only movie ever made from a book that is better than the book. And considering it's a darn good book to begin with, that's saying a lot. (Okay, yeah, so it's my favorite movie of all time. I'm just a sucker for triumph-over-adversity movies.)
It sure detected my oh-so-uncommon TNT card... but refused to show the mouse cursor. The mouse worked, you just couldn't see where it was. Even Linux could get this right. So, BeOS got the immediate uninstall.
Oh geez, haven't we been here before? This time it's math instead of CS. Let me envision the responses:
Poster #1: "I'm a Ph.D. in Math at the University of Zimbabwe. Applied math is a waste time. You should learn nothing but theory and proofs. If you try and do anything useful with math, then you're a fuckin' sellout. PS: I love Goedel."
49%: Right on!
Poster #2: "You don't need any college at all! I make $600,000 a year coding VB, and all I did was get a pirated copy of VB and bought a book of Teach Yourself Visual Basic ASP.NET.COM+.ActiveX In 42 Days For Dummies. PS. Math is for weenies.
Another 49%: Right on!
Me: Theory and practice are both important in the world. Ignore one at your peril. Learn both, and you will be better off. Tilt the mix to either end according to your interest.
Sure. You have no idea how labor works, Mr Coward.
You're confusing early labor (the part where you sit around for hours doing nothing, and no doctors or nurses are around) with active labor (the part where you push hard for a few minutes and you are surrounded by doctors and nurses).
You've been watching too much TV. Most labors are not complete suprises and require driving to the hospital at 90mph while the woman is in painful active labor.
I fully understand that the singing was part of plot. Unfortunately, that's not the case for musicals. Except for spots where there's a "show within a show", characters do not realize they are singing. They sing because the creator is trying to get across a point that can't be done with dialogue. They don't realize this any more than television characters are aware of other artistic devices, like camera angles of fade-outs to commerical.
That the characters can't sing asserts my point: it was a good Buffy episode for people who like Buffy, and not necessarily musicals. It was not a good musical for those who like musicals, and not necessarily Buffy.
Ok, I'm being slightly hyperbolic, but when you compare "Once More With Feeling" to other musicals in it's genre (comedy/horror) you have Little Shop of Horrors and The Rocky Horror Picture Show.
Oh my, not even close. The musical episode of Buffy is only interesting to severe Buffy fans, like my wife. Whereas Little Shop and Rocky Horror stand alone as great musicals. To be "best in it's genre", it has to be a little more than an in-joke for Buffy fans.
(Disclaimer: I was forced to watch it because my wife was in the hospital having a baby, so I wasn't allowed to leave the room as I normally do when Buffy comes on.)
The lyrics were terrible. Most of the cast had terrible voices, except for "The Adult" (Giles?) and one other chicky-poo. Certainly not Gellar, certainly not Hannigan, certainly not Buffy's sister, the worst of the bunch.
Even my wife, who is a rabid Buffy fan, admitted that it was terrible. (That's because she's also is a musician, and likes musicals.)
I'll admit that I've never given Buffy a serious chance, so I can't properly pass judgement on the show itself. (The few episodes I have seen seemed silly squared.) It might have been a good Buffy episode in the context of other Buffy episodes, but it certainly was not a good musical in context of other musicals.
Seriously. Manual tests are waste of time. The only test worthy of running is an automated test. If it's not automated, then somebody can forget to run it. If somebody can forget to run it, then you're not really testing it, are you?
If you have to have X people run tests at cost Y, then adding more tests makes it more expensive! What kind of screwed-up logic is that, when a computer can do better at 4am while you sleep?
Any tester worth his salt is not a button-pusher/bug-report-writer. A real QA person writes automated tests and checks them into the code base so that it runs automatically when building. Flame to death anyone who checks in code that breaks a test. The optimum situation is that all developers are testers: they write tests and code and check them both in simultaneously.
If you're finding that tests are showing up lots of bugs, you're finding the symptom. It might be you're finding bugs and fixing them will reduce the amount. However, if you find that your development team creates bugs faster than it can fix them, then it means your organization doesn't know to code it's way out of a paper bag and shouldn't be programming. No amount of tests will fix it. The only thing that will work is refactoring, and most managers in such places erroneously think refactoring is the devil.
Not all software is equally testable. You have to write to so that is testable.
If you want to read a great book on how to test your software, I recommend John Lakos' Large Scale C++ Software Design. Testing techniques apply to most other languages, not just C++.
Personally, I've unscientifically found that every hour writing automated tests pays back at least 10 in saved future effort. YMMV will vary on the complexity of your project.
I say to you that the VCR is to the American film producer and the American public as the Boston strangler is to the woman home alone.
In the true spirit of useless analogies (maybe JV writes some of them on the SAT), let's finish it up for modern times.
Surely, if the above is true, then DeCSS are the equivalent to Osama Bin Laden. As is the internet to Adolf Hitler.
Oops, Godwin's law. I concede. You're right, Jack.
Jeez, man, spend the $20...
on
Disconnecting
·
· Score: 2
...and get a speakerphone already. Surf the web, read, or cook dinner [Due To Unusually High Call Volume, You May Experience Delays!] while waiting for the [Your Call Is Important To Us! Please Continue To Hold!] cogs of bureaucracy to crank.
Heck, I sometimes do this at work. For the 30 minutes I'm on the phone, I can get 29 minutes of real work done.
It's also fun when some service droid says "Please take me off speakerphone". I always say: "If I have to be on hold, you get the speakerphone. Too bad."
While I'm on the subject, here's a typical exchange between me and a voice menu system, to keep my sanity:
1) Dial number. "Welcome to FooCoo! Please listen careful--"
2) Press 0: "Thank you for calling! Enter your nine digi--"
3) Press 0: "You've reached the Customer Serv--"
4) Press 0: "That response was not undersood. Please try--"
5) Press 0: (o/~ Raindrops Keep Falling on My Head o/~)
6) Wait.
7) Human answers.
Most places take 3 or 4 zeros. Really huge bureaucracies might take 10 to 15.
Time spent: 4 seconds reciting your account number. Time saved: 13 minutes listening to five different ten-option voice menus.
Also note that anyone trying to do complex construction semantics (e.g., virtual initialization) or interaction with objects (e.g., registering this with another object registry and throwing multiple, possibly virtual inheritance into the mix, and trying to deal with the brokenness of various complilers there is only one workable solution: two-phase construction.
For example:
Make your constructors private, and only do minimal intitialization (set values to zero, no subobject initialization or sending this off to another).
Write a separate initialization function called that can be called to really init the object.
Write a public static method that creates the object with the constructor and runs the init routine.
This causes the entire virtual table to be done before you attempt to call any virtual functions, or hand this off to other objects that might try to call virtual functions before it's done cooking. That sidesteps the problem of compilers screwing it up.
If someone who is a CS prof at MIT doesn't understand what a window manager is, I fear for the future of CS research.
This is a bit overstated.
Actual CS research has very little to do with window managers (a particular piece of software that's useful at a some point on time on some machine) and more with mathematics and proofs (things ideally that are true and remain true forever). Especially at a top-level school at MIT, which (rightly) tends to lean more on the theortical side than the practical.
If I was going to MIT, and my professor didn't know about the latest skinnable cool Linux waste-my-time whatjamajig, I would hardly hold it against him. Chances are he's got deeper things inside his head that I want to learn.
Actually, I lied. It's actually much simpler than before. A few years ago, there was some magic set of rules that required you to sometimes dial an area code, except you could never figure out what it was. If you dialed the area code when you weren't supposed to, a recorded voice would chastise you. If you didn't dial the area code when you needed to, the same voice would so. The only way to find out was to dial every single stinking phone nuumber twice, every time.
One might think that the rule is something like if your number is in the same area code, you don't need to dial it. Of course, that's not the case. I tried to look it up in the phone book but failed. It has something to do about which is a "local exchange", in which "local exchange" is defined by the cross product of all the prefixes in the area code graphed out onto a 2D grid and then sprayed with monkey feces. (Whether a human or monkey sprayed the feces is left to an exercise for the reader.)
But I digress. Even worse, the message would come on and say: "you dialed the area code but you shouldn't. Please hang up and do it again, stupid" (paraphrase). WHAT? You mean the system can detect that I made some trivial mistake, and then refuses to correct it for me? How hard would it be for the computer to truncate those digits and just put the damn call through?
Saldy, there used to be a day when phone numbers fit in your short-term memory. That day is long gone. Too bad the phone companies can't figure out how to make proper "relative" phone numbers like a hierarchical file system. People usually know what phone number they are dialing from. It must be possible to build a system that lets the user always: 1) dial relatively to their own number, and 2) let them explicitly qualify it if they're unsure (rather than posting an obtuse "you messed up!" error message). The user would only need to know one rule then: "any digits that match yours, you can drop". How hard would that be? I'd be glad to toss out fixed-length phone numbers and use a "terminate number" button to make it work. Heck, everyone is used to it already with cell phones.
It's almost like the phone company is taking usability lessons from Microsoft.
The strips sit in little colored plastic containers that give them rigidity, and there is a rack that holds these containers in place. The controllers arrange the strips physically in meatspace in whatever order they like- sorted by time, alphabetical, altitude, airline, whatever. Scalablilty? Sorry, a controller cannot handle 5000 airplanes, so having a computer sort them usually is not a win: it takes more time for the user to specify how they want to sort it than for them to do it themselves. The controllers would quickly annotate the strips with small indecipherable (to me) marks; of which there would be no corresponding key on a keyboard. They'd toss the strips back and forth to each other.
So what did the our system do? Well, what we could automate is printing of the strips right from the flight plan data, and we could spit them out at a printer closest to the person who needs it. The hardware designers designed the rack and a little chute that they could chuck the plastic holders into, which would empty into a bucket, where someone could toss all the strips and reuse the holders.
Anyway, the point being is that the software is just part of the whole user's workflow. Trying to make everything electronic is just ridiculous, as would be requiring the user to go through 4 nested menus to change the radio volume.
You have to watch the users use your product. This car control system, of which I heard scathing review on NPR, smacks of over-design and no real-world, testing by non-techies: Could you imagine futzing with inaccurate voice menus when driving 75 mph in the rain, and a screaming toddler in the back seat?
Or about all that legalese at the end of radio car commercials, where nobody possibly can humanly talk that fast, you just know it's sped up by computer but keeping the pitch the same? Lawyers love blocks of illegible text; their profession relies on the fact that you can't read or understand what the hell they are saying. Witness the constant use of riduculously rococo and meaningless terms like "forthwith" and "whereas".
Which means you really have to send it to a lawyer if you really want to be sure. Who will gladly charge you $500/hour to look at it, and then weeks later say: "No, you can't use it. Gimme $10,000."
At that point, you just say "screw it" and write it yourself. The result? Who loses? The apolitical Linux users who just need the goddammned app and are willing to pay for it. Then they have to wait a few years while wheels are reimplemented. That time spent reimplementing it translates to a higher cost to users, and longer time getting the stuff they want. And this is why I'll never see potentionally useful stuff like Quicken or Finale for Linux. Sigh...
Personally, I think the LGPL is the right thing to do if you want to write any library code, or otherwise intend your app to be a building block for other apps.
(Disclaimer: I write proprietary software to put food on the table, and free software for fun.)
(The sites that I see this are usually high-end musical instruments. It makes me laugh-- there's a QUANTITY next to it: Yes, I'd like 10 baritone saxophones shipped to my door, please, at $6,000 a piece.)
Maybe it's time to increase the font on the web browser...
Oh, did you mean installations?
Alban Berg and Anton Webern did a much better job of writing listenable music with the system, mostly because they allowed some human influence in the model. Berg, yes. But Webern? His serial stuff is the most mathematically precise and boring stuff I've ever studied. Maybe I've just looked at the wrong stuff. Schoenberg's serial and even free atonal stuff is far more interesting. And as a music geek, I love contemporary music.
A noun: art.
Noun turned into an adjective: if something has the quality of art, it is artistic.
Adjective turned into a redundant adjective to add more syllables so the author sounds smarter: artistical.
Hey, let's turn it back into a noun by adding more syllables! How about artisticalness?
Same thing with symmetrical. If something has symmetry (noun) it is symmetric (adjective). WTF does "symmetrical" mean that "symmetric" doesn't?
In my original reply, I said I am an open source developer. However, I also believe in usability for non-experts, which means that keyboard navigation has the be there by default. That means keyboard navigation has to work for people who don't know how to recode and recompile applications, learn XUL, or manually edit config files to make things do what they want.
My point is that if it's done inside the toolkit, then things will Just Work even if the developer doesn't forget.
User-hostile attitudes like yours ("bend the newbies back in shape") will do nothing to get open-source more widely accepted by a larger, nontechnical audience.
Further, a proper set of default keyboard mnemonics will not override any shortcuts you have setup in your window manager. Window managers rule the roost in X programming, and if it binds a key, then it simply doesn't deliver the key to the underlying application.
It would save developer time manually doing it, not effect power users who manually need to override things (quite easily done via X resources, wm configuration, etc) and help people who are used to Windows where you have better keyboard navigation.
You are confusing accelerators with keyboard navigation:
Keyboard navigation (things like Alt-F to post a "File" menu) are completely different beasts than accelerators. Mnemonics are visible, modal keyboard navgiation items, are not customizable, are complete, so that you don't have to go out of your way to create them. Accelerators (like Ctrl-S to "Save") are hidden modeless shortcuts into common features of the application, are almost always incomplete, and must be user-definable.
A completely nonobvious and invisible way of assigning your own keyboard accelerators is not the same as having a visible and complete set of keyboard navigation.
You are also taking the classic open-source argument that Makes UIs Suck: well, just go fix it yourself if you don't like it! Just press Ctrl Alt Meta Shift CokeBottle, then edit >~/.foobarrc, add "MakeMyAppLessStupid=True" restart X, and you're good to go!
Consider an older, disabled person (or even myself with a hangover) with shaky hands, who doesn't have the fine motor control to do pixel-perfect placement with a mouse. Accessability is another reason for good keyboard navigation. Are you saying that they have to assign every interface element to a shortcut? (How many hours would that take? Dunno about you, but I'd run out of keys and wouldn't be able to remember them all.)
It's hard, typically, because the second you change the wording of a menu or dialog dox, all the keyboard navigation letters have to change.
The single best way to fix this stupid problem is for keyboard shortcuts to be automated but overrideable in GUI toolkits. When I write a menu item, it should scan the entire list of menu items, and generate keyboard mnemonics for everything. It's not a terribly complicated algorithm, but it is tedious to do by hand. Sometimes, it will come up with lousy results, and some menmonics can't be deduced from the text, but it would solve the problem of developers completely forgetting about them.
We've put a ton of work on making nedit keyboard accessible. Almost everything you can do with the mouse, you can do with the keyboard. It's a huge amount of work, but we wouldn't have it any other way. Alomst every GUI item can be hit with the keyboard, and vice-versa.
Want to know why I won't use Mozilla on Windows? When a yes/no dialog pops up, I can't type 'Y' or 'N' to dismiss it. Stupid things like this, problems that were solved 15 years ago, still plague us.
It's ironic how MDI gets trashed and praised, often by the same people.
.fvwmrc file).
Tabbed browsing in Mozilla? Quicken's tabbed windows? That's MDI, too. And lots of people like it. It's MDI done right.
The problem with old-style MDI apps (e.g., icons in a big empty window) that it was a one-size-fits-none policy that all apps could use. The in-app window management was usually horrible: icons that could be overlapped.
The only different is that apps are using MDI nowadays and are customizing the in-app window management to the application. Most people love it; other control freaks don't (e.g., if you have a custom 9000-line
The movie version, directed by Frank Darabont, is, in my opinion, the only movie ever made from a book that is better than the book. And considering it's a darn good book to begin with, that's saying a lot. (Okay, yeah, so it's my favorite movie of all time. I'm just a sucker for triumph-over-adversity movies.)
Everything else was autodetected.
It sure detected my oh-so-uncommon TNT card... but refused to show the mouse cursor. The mouse worked, you just couldn't see where it was. Even Linux could get this right. So, BeOS got the immediate uninstall.
Jeez, folks, stop hiring such morons who can only answer trivia questions. All interviewees are worthless unless they can pass the Final Exam.
Poster #1: "I'm a Ph.D. in Math at the University of Zimbabwe. Applied math is a waste time. You should learn nothing but theory and proofs. If you try and do anything useful with math, then you're a fuckin' sellout. PS: I love Goedel."
49%: Right on!
Poster #2: "You don't need any college at all! I make $600,000 a year coding VB, and all I did was get a pirated copy of VB and bought a book of Teach Yourself Visual Basic ASP.NET.COM+.ActiveX In 42 Days For Dummies. PS. Math is for weenies.
Another 49%: Right on!
Me: Theory and practice are both important in the world. Ignore one at your peril. Learn both, and you will be better off. Tilt the mix to either end according to your interest.
The remaining 2%: -1, Flamebait
Sure. You have no idea how labor works, Mr Coward.
You're confusing early labor (the part where you sit around for hours doing nothing, and no doctors or nurses are around) with active labor (the part where you push hard for a few minutes and you are surrounded by doctors and nurses).
You've been watching too much TV. Most labors are not complete suprises and require driving to the hospital at 90mph while the woman is in painful active labor.
I fully understand that the singing was part of plot. Unfortunately, that's not the case for musicals. Except for spots where there's a "show within a show", characters do not realize they are singing. They sing because the creator is trying to get across a point that can't be done with dialogue. They don't realize this any more than television characters are aware of other artistic devices, like camera angles of fade-outs to commerical.
That the characters can't sing asserts my point: it was a good Buffy episode for people who like Buffy, and not necessarily musicals. It was not a good musical for those who like musicals, and not necessarily Buffy.
Oh my, not even close. The musical episode of Buffy is only interesting to severe Buffy fans, like my wife. Whereas Little Shop and Rocky Horror stand alone as great musicals. To be "best in it's genre", it has to be a little more than an in-joke for Buffy fans.
(Disclaimer: I was forced to watch it because my wife was in the hospital having a baby, so I wasn't allowed to leave the room as I normally do when Buffy comes on.)
The lyrics were terrible. Most of the cast had terrible voices, except for "The Adult" (Giles?) and one other chicky-poo. Certainly not Gellar, certainly not Hannigan, certainly not Buffy's sister, the worst of the bunch.
Even my wife, who is a rabid Buffy fan, admitted that it was terrible. (That's because she's also is a musician, and likes musicals.)
I'll admit that I've never given Buffy a serious chance, so I can't properly pass judgement on the show itself. (The few episodes I have seen seemed silly squared.) It might have been a good Buffy episode in the context of other Buffy episodes, but it certainly was not a good musical in context of other musicals.
If you have to have X people run tests at cost Y, then adding more tests makes it more expensive! What kind of screwed-up logic is that, when a computer can do better at 4am while you sleep?
Any tester worth his salt is not a button-pusher/bug-report-writer. A real QA person writes automated tests and checks them into the code base so that it runs automatically when building. Flame to death anyone who checks in code that breaks a test. The optimum situation is that all developers are testers: they write tests and code and check them both in simultaneously.
If you're finding that tests are showing up lots of bugs, you're finding the symptom. It might be you're finding bugs and fixing them will reduce the amount. However, if you find that your development team creates bugs faster than it can fix them, then it means your organization doesn't know to code it's way out of a paper bag and shouldn't be programming. No amount of tests will fix it. The only thing that will work is refactoring, and most managers in such places erroneously think refactoring is the devil.
Not all software is equally testable. You have to write to so that is testable. If you want to read a great book on how to test your software, I recommend John Lakos' Large Scale C++ Software Design. Testing techniques apply to most other languages, not just C++. Personally, I've unscientifically found that every hour writing automated tests pays back at least 10 in saved future effort. YMMV will vary on the complexity of your project.
In the true spirit of useless analogies (maybe JV writes some of them on the SAT), let's finish it up for modern times.
Surely, if the above is true, then DeCSS are the equivalent to Osama Bin Laden. As is the internet to Adolf Hitler.
Oops, Godwin's law. I concede. You're right, Jack.
Heck, I sometimes do this at work. For the 30 minutes I'm on the phone, I can get 29 minutes of real work done.
It's also fun when some service droid says "Please take me off speakerphone". I always say: "If I have to be on hold, you get the speakerphone. Too bad."
While I'm on the subject, here's a typical exchange between me and a voice menu system, to keep my sanity:
1) Dial number. "Welcome to FooCoo! Please listen careful--"
2) Press 0: "Thank you for calling! Enter your nine digi--"
3) Press 0: "You've reached the Customer Serv--"
4) Press 0: "That response was not undersood. Please try--"
5) Press 0: (o/~ Raindrops Keep Falling on My Head o/~)
6) Wait.
7) Human answers.
Most places take 3 or 4 zeros. Really huge bureaucracies might take 10 to 15.
Time spent: 4 seconds reciting your account number. Time saved: 13 minutes listening to five different ten-option voice menus.
Also note that anyone trying to do complex construction semantics (e.g., virtual initialization) or interaction with objects (e.g., registering this with another object registry and throwing multiple, possibly virtual inheritance into the mix, and trying to deal with the brokenness of various complilers there is only one workable solution: two-phase construction.
For example:
- Make your constructors private, and only do minimal intitialization (set values to zero, no subobject initialization or sending this off to another).
- Write a separate initialization function called that can be called to really init the object.
- Write a public static method that creates the object with the constructor and runs the init routine.
This causes the entire virtual table to be done before you attempt to call any virtual functions, or hand this off to other objects that might try to call virtual functions before it's done cooking. That sidesteps the problem of compilers screwing it up.This is a bit overstated.
Actual CS research has very little to do with window managers (a particular piece of software that's useful at a some point on time on some machine) and more with mathematics and proofs (things ideally that are true and remain true forever). Especially at a top-level school at MIT, which (rightly) tends to lean more on the theortical side than the practical.
If I was going to MIT, and my professor didn't know about the latest skinnable cool Linux waste-my-time whatjamajig, I would hardly hold it against him. Chances are he's got deeper things inside his head that I want to learn.