We use CVSTrac, and it serves our purposes very well. It's not PHP/MySQL, it's SQLite-based, and is written in C, but to me, that just makes it easier to support -- there is one native process, so just one point of failure, no DB servers to monitor (yet, the data is available in a SQL DB), no web servers to configure (though you can set it up with an external webserver if you wish).
It is free, well-documented and is actively developed. It was written by the same guy who wrote SQLite.
It is also self-hosting, which means that the CVSTrac project uses CVSTrac for issue tracking, so you can go to http://www.cvstrac.org/cvstrac/ and get a good idea of how the system works without ever installing it.
I didn't say anywhere I want them to provide their service to me for free. If it makes it easier to understand, assume I'm willing to pay money to subscribe to this service in exchange to the guarantee that it would be available to me for a year. Can I do that? Or all they provide is the free version that they can discontinue at any time for any reason?
While browsing through this, I noticed the following in ther Weather RSS feed page:
The feeds are provided free of charge for use by individuals and non-profit organizations for personal, non-commercial uses.
and then
Yahoo! also reserves the right to require you to cease distributing these feeds at any time for any reason.
So, while it's cool and all, is there any value to using their weather RSS feed (and I assume it's similar with other services), beyond my ability to play with them? I mean, even I'm not making any money off it, presumably, if I put the effort in accessing those feeds, I expect them to be available to me in the future? Or do they provide a paid-for version for this?
I'm a parent of a 6-year old girl. She's been using the Web since she was old enough to use a computer (3 years old? perhaps, 2+). Her mom has often asked me to install a content filter.
I have long since learned that to come up with a solution, you have to understand the problem first. So, I just watched my kid's online behavior trying to see what she can get to that I don't want her to see. The result? I still don't have any content filters installed to this day. Why? Porn is of no interest to her whatsoever. She goes to various kids' sites. If she wants to search for something, I taught her to use google instead of typing random words into the URL bar. As a result, it is very rarely (as in, once a year) that she gets to see an image of a nude person on the Web. Her reaction so far was to navigate away from such a web site. And if she shows any interest, I feel I would be able to explain to her what was going on. I mean, she doesn't believe in tooth fairies, and she figured that Mickey Mouse was a costume when she was 3, so why wouldn't she be able to figure out the rest of the real world?
Of course, I might be missing something, but then I'm wondering what that is?
I appreciate the comments. I have never used Dice, but I will look into it.
I mentioned Dice because it has been around for a long time, and posting a resume there generates a stable flow of emails/calls from various employers and recruiters (less useful, but unavoidable) over the next couple years. When in a passive job search situation, this is very convenient.
That said, there may well be other job sites worth your attention.
Second, Is the mis-capitalization of one letter really mis-spelling? And does this really impact whether you are interested in a job? That doesnt seem fair to me.
It's probably not fair. However, when screening potential job postings, I do need to apply some filtering (just as you need to apply some filtering when screening resumes). To me, Postgres is an important word in the database world. If you miscapitalize it, I start suspecting that you may as well miscapitalize Ingres, and that would mean you haven't paid much attention to your college textbooks. I may further suspect that you are relatively new to Postgres as you didn't see this word enough times to remember the capitalization. I may well be wrong in my suspicions! There certainly is a chance that you are a respected PostgreSQL hacker who just hit the shift key at a wrong time. But, when looking at a magnitude of job postings, I need to think statistically.
To put it in perspective, if you see a poorly written resume, how much time do you spend thinking that the guy may really be a genius? Is it fair to the occasional genius with the crappy resume? No, it's not, but that's the reality of job hunting.
I am a real software developer. That I won't bother responding to a job posting like that is probably statistically insignificant, so please only take this as an opinion of one person.
So, here are my reasons for not applying for such a job:
I can, but won't do either PHP or Perl. Precisely because I have enough experience to be aware of better options.
I won't consider seriously a job posting that requires PostgreSQL skills, but misspells it as PostGreSQL (using your reasoning, why not spend 30 seconds looking at their web site).
I don't go to Monster or Craigslist to look for jobs. Jobs go to Dice to look for me.
Again, please don't read too much into this post. If it helps you understand what you can do to waste less time looking for a qualified developer, good. Otherwise, feel free to dismiss this as a random guy's opinion.
To me, this entire article reads like a plug for Sleepycat, written, not surprisingly, by a Sleepycat person.
Relational data model is just that -- a data model. It doesn't concern itself much with implementation (and therefore, performance in any particular environment) or with how applications use the data. And that's really the point -- relational databases are application-agnostic. They are designed to store the data that will be possibly accessed by applications that are not yet conceived. That's the reason they put great emphasis on internal correctness of the data. Once you have a database specialized for one application, that's not really a database in the relational sense -- that's a way to persist your application data. And that's where Berkeley DB shines. It doesn't replace relational databases, it just serves a totally different purpose.
Fortunately, in the traditional Unix world outside of Linux there really is such thing as sensible default options, even for a thing as "low-level" as the kernel.
Actually, I knew I was going to fall in love with OpenBSD the moment I read this entry in the FAQ:
5.6 - Why do I need a custom kernel?
Actually, you probably don't.
In fact after searching I realized there are a couple of gotcha's with the auto_ptr (such as copying), but they are much easier to avoid than forgetting to type something in the Java example.
auto_ptr may occasionally be useful, however, in most situations shared_ptr works better. Unfortunately, shared_ptr is not in the Standard, however, it is being standardized, and it has been offered for a while by many compiler vendors. Even if your compiler/standard library doesn't have it, there is always the Boost version, which also offers other smart pointers.
Your point about deterministically called destructors is valid, but I think you're looking at things from a C++-centric viewpoint. In C++ that's the canoncial way to manage resource lifetime, so you try to use the same mechanism in C# and discover that it's not the right thing to do because the behaviour is different. That doesn't mean that C# is broken, just that you might need to use a different approach.
I'm not saying C# (or Java) is broken. I'm arguing with the statement that programmers in general are more productive developing in Java or C# than they are developing in C++. And while I know Java, I don't know much C#, so feel free to help me look at the issue of deterministic destruction from the C# perspective. I'm thinking about something like this:
To me, the C++ version is a lot more maintainable and more likely to be correct, especially once you get into nested statements and multiple resources allocated all over the function/method. As I said though, I am not claiming to understand the C# perspective, so feel free to enlighten me.
Programmer productivity is higher in garbage-collected (MS calles them "managed") environments such as Java and.Net/C#.
Nothing prevents C++ from being used with a garbage collector as well as with any of a number of other memory-management models. (Really, between STL and shared_ptr, memory management is a non-issue in the vast majority of properly written programs, without the overhead and non-deterministic destruction of a garbage collector.)
And, by any chance, have you heard of products that detect memory leaks in Java programs?
Another thing you may want to consider is this: memory is not the only resource your program needs to properly dispose of. There are things like file descriptors, database connections, network connections, threads, mutexes and so on. With C++ deterministic destruction, these can be handled correctly and automatically. Try this with Java, in the presense of exceptions, and see where you are more productive.
I noted that C++ code can be made portable by not using extern. The problem I pointed to was that separate compilation breaks down if you can't use extern.
The separate compilation often breaks even if you can use export. See section 14.6.2 of the standard or a detailed treatment by Herb Sutter for the reason why.
For those looking for Subversion documentation, there's also an excellent Subversion book, with electronic copy available for free, at http://svnbook.red-bean.com/
If you truly want to understand this, read through the first couple chapters of the Date book
For a brief answer, your XML files (and most OO databases as an extension) might work well for your application, but try using them for a totally different application that works with the same data. That's where relational model (at least in theory) shines: it is application-agnostic.
Additionally, as your application grows and so is the number of concurrent users, you might face issues that are just not trivial/too tedious to program by hand:
Transaction support. For example, you transfer $5000 from your savings account to your checking account, and the power goes down when your savings account is debited but before your checking acount is credited. If you don't explicitly code around this problem, $5000 disappears.
Transaction isolation. Same example as above, but instead of power outage, a program that generates your paper statement is run -- $5000 is not on the statement, even though it is in your account.
Durability. Same example, power goes down. Try it enough times, and depending on which filesystem your XML file is on, you may well see it corrupted when you boot the machine after power is restored.
Consistency/integrity. Same example, your checking account balance is stored in a two-byte unsigned integer and is currently at $63,000...
Try Date's book for more detailed (and likely more clear) explanation.
Because the company I work for owns everything I think and do, according to my employment agreement
As my JD student wife reminds me from time to time, not all that is written in a contract is enforceable, and not all that is enforceable has to be written in a contract.
I highly doubt that there is a location in the U.S. where your employer can literally own "everything" you think and do, even if that's what they believe. So, if you have a potential money-generating idea but are afraid of your employer stealing it, then spending a couple hundred bucks on an hour of qualified lawyer's time may not be a bad investment.
As I said though, I am not a MySQL guru, so I am not sure if this is the only LGPL MySQL connectivity library or there are others. That said though, they can't GPL the protocol (or can they?), so technically, it should be possible for third-party developers to write their own libraries and license them however they want...which, of course, may potentially be as disruptive as migrating to another DBMS altogether.
That said, it sounds like the gist of the discussion is that people are trying to find a way to require that web applications built on GPL components must itself be GPLed. If that's correct, how would this affect LAMP applications that are built with MySQL? Would switching to PostgreSQL be the only legitimate way to keep such applications "closed"?
The same way it affects non-web applications that happen to interact with MySQL. I mean, MySQL (to the best of my knowledge, I don't use it) is a server that speaks a protocol. There are libraries that speak this protocol. You likely link against those libraries. If you license those libraries under GPL, your must make your application source code available under GPL. If you license them under LGPL, then you can keep your application closed. As far as I know, there are both GPL and LGPL versions of MySQL client libraries. Affero GPL doesn't really change much here.
Of course, it's might not be a bad idea to migrate the app from MySQL to PostgreSQL anyway:-)
I remember when my then about a year-old kid would point at something and then point at where she wants me to move it to. "Cut and paste," I figured.
Now that she can speak, she doesn't use the various variations of the sign language she developed early in her life.
The same thing happens with software: for a novice user, point-and-click, cut-and-paste and drag-and-drop are of course the only way they can interact with an unknown product. However, as the user finds out more about the product, point-and-clicking becomes too tedious. For example, when using Word, one would first go to the Format menu or to the toolbar to make text italic. However, sooner or later, people tend to switch to Ctrl-I as it is faster.
Command line (and not any command line, but something as powerful as a Unix shell with the Unix tools) is Ctrl-I equivalent for tasks more complex than making text italic.
Another way to think of that would be standard Windows calculator. It lets you punch the buttons with the mouse, which is what most users do. Those who have to do it enough times, start using keyboard. Those who do it enough times with longer expressions, start using bc, or a python interpreter, or another calculator capable of accepting complex expressions.
This leads me to a related point: one needs to know the language accepted by the command line to be able to use it. When the language has only one word ("Ctrl-I"), most people can learn it by accident. When it involves parentheses and plus/minus signs (calculator), learning the language may require some primitive thinking in addition to an accident, and fewer people bother to do that. Even fewer people bother to pick up a book on shell and learn it to be productive in command line.
What is sad here is that every day at work I see people who use Unix (Solaris) as part of their jobs. Not knowing how to edit the command line, or how to work with the history, entering every new command is a torture to them. As soon as I explain them how to edit the command line in ksh or how to run and work with bash, they instantly become more productive. What prevents most of them from learning this by themselves, is beyond me. It is even more puzzling as one of my colleagues is a lady in her fifties, who had never touched Unix until a couple years ago. Yet, she picked up a couple books, and now is as comfortable with command line as I am...
Re:Too much testing, not enough Interviewing
on
IT Literacy Test
·
· Score: 1
While I totally see your point, and for the most part agree with it, here is something to consider...
In Russia, and possibly not only in Russia, a vast majority of college exams (including entry exams) are one-on-one interviews with a professor. Sure, professors can evaluate the depth of student's knowledge better than ETS tests, but then a lot of subjective factors come into play. One, different students end up talking to different professors. Two, professor's mood may vary depending on time of year, time of day and other irrelevant factors. Three, the anonimity is lost, and if you managed to somehow inadvertently piss off the guy two years earlier, that, depending on the guy, may well affect your grade.
I could probably come up with other reasons why one-on-one interviews suck as much as standardized tests, but it all really comes down to that while humans are better than machines at evaluating subjective qualities, machines are better than humans at being consistent in their evaluations.
While looking at a NY county map, I was wondering why there is a dark blue county (Tompkins) in the middle of the state. A quick search answered my question -- Tompkins County is the home of Cornell Univeristy. I then looked at some other states, and noticed the same thing: in Michigan both Washtenaw (Univeristy of Michigan) and Ingham (Michigan State) counties are blue. In Indiana, Monroe County (Indiana University) is one of a few blue spots. Champaign County in Illinois is relatively blue compared to surrounding counties. Dane County in Wisconsin (Univeristy of Wisconsin) is bluer than its neighbors. It still worked in Colorado (Boulder), but not in Oklahoma or Texas.
While studying English (which is my second/third language), I was trying to comprehend the grammar of "must/could/should/might of done something". I encountered it so often, both online and in print, that I couldn't even think it was meant to be "must/could/should/might have done something". It wasn't until I moved to the U.S. that I realized what it was...
I am actually wondering why so many native speakers don't know that? I realize "should've" (as it is commonly pronounced here in the U.S.) and "should of" sound very similar, but it's such a common grammatical construct that I would expect any person who routinely misspells it to be corrected often enough in their 12+4 years of schooling to remember it...might it be that "must/could/should of" were once acceptable spellings?
Until about half a year ago, I had never even thought about buying a Mac. Then I broke a bezel on my laptop. Ultimately, that forced me to evaluate every laptop I could get my hands on for durability. A couple months and about $3K later I was a happy 17'' Powerbook owner. The only downside to that was that another couple months later my lady decided she can't live without a Powerbook either...
We use CVSTrac, and it serves our purposes very well. It's not PHP/MySQL, it's SQLite-based, and is written in C, but to me, that just makes it easier to support -- there is one native process, so just one point of failure, no DB servers to monitor (yet, the data is available in a SQL DB), no web servers to configure (though you can set it up with an external webserver if you wish).
It is free, well-documented and is actively developed. It was written by the same guy who wrote SQLite.
It is also self-hosting, which means that the CVSTrac project uses CVSTrac for issue tracking, so you can go to http://www.cvstrac.org/cvstrac/ and get a good idea of how the system works without ever installing it.
I didn't say anywhere I want them to provide their service to me for free. If it makes it easier to understand, assume I'm willing to pay money to subscribe to this service in exchange to the guarantee that it would be available to me for a year. Can I do that? Or all they provide is the free version that they can discontinue at any time for any reason?
While browsing through this, I noticed the following in ther Weather RSS feed page:
The feeds are provided free of charge for use by individuals and non-profit organizations for personal, non-commercial uses.
and then
Yahoo! also reserves the right to require you to cease distributing these feeds at any time for any reason.
So, while it's cool and all, is there any value to using their weather RSS feed (and I assume it's similar with other services), beyond my ability to play with them? I mean, even I'm not making any money off it, presumably, if I put the effort in accessing those feeds, I expect them to be available to me in the future? Or do they provide a paid-for version for this?
I'm a parent of a 6-year old girl. She's been using the Web since she was old enough to use a computer (3 years old? perhaps, 2+). Her mom has often asked me to install a content filter.
I have long since learned that to come up with a solution, you have to understand the problem first. So, I just watched my kid's online behavior trying to see what she can get to that I don't want her to see. The result? I still don't have any content filters installed to this day. Why? Porn is of no interest to her whatsoever. She goes to various kids' sites. If she wants to search for something, I taught her to use google instead of typing random words into the URL bar. As a result, it is very rarely (as in, once a year) that she gets to see an image of a nude person on the Web. Her reaction so far was to navigate away from such a web site. And if she shows any interest, I feel I would be able to explain to her what was going on. I mean, she doesn't believe in tooth fairies, and she figured that Mickey Mouse was a costume when she was 3, so why wouldn't she be able to figure out the rest of the real world?
Of course, I might be missing something, but then I'm wondering what that is?
I mentioned Dice because it has been around for a long time, and posting a resume there generates a stable flow of emails/calls from various employers and recruiters (less useful, but unavoidable) over the next couple years. When in a passive job search situation, this is very convenient.
That said, there may well be other job sites worth your attention.
It's probably not fair. However, when screening potential job postings, I do need to apply some filtering (just as you need to apply some filtering when screening resumes). To me, Postgres is an important word in the database world. If you miscapitalize it, I start suspecting that you may as well miscapitalize Ingres, and that would mean you haven't paid much attention to your college textbooks. I may further suspect that you are relatively new to Postgres as you didn't see this word enough times to remember the capitalization. I may well be wrong in my suspicions! There certainly is a chance that you are a respected PostgreSQL hacker who just hit the shift key at a wrong time. But, when looking at a magnitude of job postings, I need to think statistically.
To put it in perspective, if you see a poorly written resume, how much time do you spend thinking that the guy may really be a genius? Is it fair to the occasional genius with the crappy resume? No, it's not, but that's the reality of job hunting.
I am a real software developer. That I won't bother responding to a job posting like that is probably statistically insignificant, so please only take this as an opinion of one person.
So, here are my reasons for not applying for such a job:
Again, please don't read too much into this post. If it helps you understand what you can do to waste less time looking for a qualified developer, good. Otherwise, feel free to dismiss this as a random guy's opinion.
In the universe where people often don't distinguish between the ease of learning and the ease of use, i.e. ours.
To me, this entire article reads like a plug for Sleepycat, written, not surprisingly, by a Sleepycat person.
Relational data model is just that -- a data model. It doesn't concern itself much with implementation (and therefore, performance in any particular environment) or with how applications use the data. And that's really the point -- relational databases are application-agnostic. They are designed to store the data that will be possibly accessed by applications that are not yet conceived. That's the reason they put great emphasis on internal correctness of the data. Once you have a database specialized for one application, that's not really a database in the relational sense -- that's a way to persist your application data. And that's where Berkeley DB shines. It doesn't replace relational databases, it just serves a totally different purpose.
Fortunately, in the traditional Unix world outside of Linux there really is such thing as sensible default options, even for a thing as "low-level" as the kernel.
Actually, I knew I was going to fall in love with OpenBSD the moment I read this entry in the FAQ:
5.6 - Why do I need a custom kernel? Actually, you probably don't.
In fact after searching I realized there are a couple of gotcha's with the auto_ptr (such as copying), but they are much easier to avoid than forgetting to type something in the Java example.
auto_ptr may occasionally be useful, however, in most situations shared_ptr works better. Unfortunately, shared_ptr is not in the Standard, however, it is being standardized, and it has been offered for a while by many compiler vendors. Even if your compiler/standard library doesn't have it, there is always the Boost version, which also offers other smart pointers.
Your point about deterministically called destructors is valid, but I think you're looking at things from a C++-centric viewpoint. In C++ that's the canoncial way to manage resource lifetime, so you try to use the same mechanism in C# and discover that it's not the right thing to do because the behaviour is different. That doesn't mean that C# is broken, just that you might need to use a different approach.
I'm not saying C# (or Java) is broken. I'm arguing with the statement that programmers in general are more productive developing in Java or C# than they are developing in C++. And while I know Java, I don't know much C#, so feel free to help me look at the issue of deterministic destruction from the C# perspective. I'm thinking about something like this:
In Java, that becomes:To me, the C++ version is a lot more maintainable and more likely to be correct, especially once you get into nested statements and multiple resources allocated all over the function/method. As I said though, I am not claiming to understand the C# perspective, so feel free to enlighten me.
Programmer productivity is higher in garbage-collected (MS calles them "managed") environments such as Java and .Net/C#.
Nothing prevents C++ from being used with a garbage collector as well as with any of a number of other memory-management models. (Really, between STL and shared_ptr, memory management is a non-issue in the vast majority of properly written programs, without the overhead and non-deterministic destruction of a garbage collector.)
And, by any chance, have you heard of products that detect memory leaks in Java programs?
Another thing you may want to consider is this: memory is not the only resource your program needs to properly dispose of. There are things like file descriptors, database connections, network connections, threads, mutexes and so on. With C++ deterministic destruction, these can be handled correctly and automatically. Try this with Java, in the presense of exceptions, and see where you are more productive.
I noted that C++ code can be made portable by not using extern. The problem I pointed to was that separate compilation breaks down if you can't use extern.
The separate compilation often breaks even if you can use export. See section 14.6.2 of the standard or a detailed treatment by Herb Sutter for the reason why.
Clicky: Version Control with Subversion
For those looking for Subversion documentation, there's also an excellent Subversion book, with electronic copy available for free, at http://svnbook.red-bean.com/
If you truly want to understand this, read through the first couple chapters of the Date book
For a brief answer, your XML files (and most OO databases as an extension) might work well for your application, but try using them for a totally different application that works with the same data. That's where relational model (at least in theory) shines: it is application-agnostic.
Additionally, as your application grows and so is the number of concurrent users, you might face issues that are just not trivial/too tedious to program by hand:
Try Date's book for more detailed (and likely more clear) explanation.
I was about to mod you down, but then figured most people wouldn't get it, so I chose to post.
Here is the news for you: England, Wales, Scotland and Northern Ireland are FIFA members (and have been for a long time), and Taiwan isn't.
Declaring Taiwan (unlike England, Wales, Scotland or Northern Ireland) a team is thus fairly likely to be a political statement.
Because the company I work for owns everything I think and do, according to my employment agreement
As my JD student wife reminds me from time to time, not all that is written in a contract is enforceable, and not all that is enforceable has to be written in a contract.
I highly doubt that there is a location in the U.S. where your employer can literally own "everything" you think and do, even if that's what they believe. So, if you have a potential money-generating idea but are afraid of your employer stealing it, then spending a couple hundred bucks on an hour of qualified lawyer's time may not be a bad investment.
Here is what I found: MySQL Connector/ODBC 2.50, which is according to this page is LGPL.
As I said though, I am not a MySQL guru, so I am not sure if this is the only LGPL MySQL connectivity library or there are others. That said though, they can't GPL the protocol (or can they?), so technically, it should be possible for third-party developers to write their own libraries and license them however they want...which, of course, may potentially be as disruptive as migrating to another DBMS altogether.
That said, it sounds like the gist of the discussion is that people are trying to find a way to require that web applications built on GPL components must itself be GPLed. If that's correct, how would this affect LAMP applications that are built with MySQL? Would switching to PostgreSQL be the only legitimate way to keep such applications "closed"?
The same way it affects non-web applications that happen to interact with MySQL. I mean, MySQL (to the best of my knowledge, I don't use it) is a server that speaks a protocol. There are libraries that speak this protocol. You likely link against those libraries. If you license those libraries under GPL, your must make your application source code available under GPL. If you license them under LGPL, then you can keep your application closed. As far as I know, there are both GPL and LGPL versions of MySQL client libraries. Affero GPL doesn't really change much here.
Of course, it's might not be a bad idea to migrate the app from MySQL to PostgreSQL anyway :-)
Amen.
I remember when my then about a year-old kid would point at something and then point at where she wants me to move it to. "Cut and paste," I figured.
Now that she can speak, she doesn't use the various variations of the sign language she developed early in her life.
The same thing happens with software: for a novice user, point-and-click, cut-and-paste and drag-and-drop are of course the only way they can interact with an unknown product. However, as the user finds out more about the product, point-and-clicking becomes too tedious. For example, when using Word, one would first go to the Format menu or to the toolbar to make text italic. However, sooner or later, people tend to switch to Ctrl-I as it is faster.
Command line (and not any command line, but something as powerful as a Unix shell with the Unix tools) is Ctrl-I equivalent for tasks more complex than making text italic.
Another way to think of that would be standard Windows calculator. It lets you punch the buttons with the mouse, which is what most users do. Those who have to do it enough times, start using keyboard. Those who do it enough times with longer expressions, start using bc, or a python interpreter, or another calculator capable of accepting complex expressions.
This leads me to a related point: one needs to know the language accepted by the command line to be able to use it. When the language has only one word ("Ctrl-I"), most people can learn it by accident. When it involves parentheses and plus/minus signs (calculator), learning the language may require some primitive thinking in addition to an accident, and fewer people bother to do that. Even fewer people bother to pick up a book on shell and learn it to be productive in command line.
What is sad here is that every day at work I see people who use Unix (Solaris) as part of their jobs. Not knowing how to edit the command line, or how to work with the history, entering every new command is a torture to them. As soon as I explain them how to edit the command line in ksh or how to run and work with bash, they instantly become more productive. What prevents most of them from learning this by themselves, is beyond me. It is even more puzzling as one of my colleagues is a lady in her fifties, who had never touched Unix until a couple years ago. Yet, she picked up a couple books, and now is as comfortable with command line as I am...
While I totally see your point, and for the most part agree with it, here is something to consider...
In Russia, and possibly not only in Russia, a vast majority of college exams (including entry exams) are one-on-one interviews with a professor. Sure, professors can evaluate the depth of student's knowledge better than ETS tests, but then a lot of subjective factors come into play. One, different students end up talking to different professors. Two, professor's mood may vary depending on time of year, time of day and other irrelevant factors. Three, the anonimity is lost, and if you managed to somehow inadvertently piss off the guy two years earlier, that, depending on the guy, may well affect your grade.
I could probably come up with other reasons why one-on-one interviews suck as much as standardized tests, but it all really comes down to that while humans are better than machines at evaluating subjective qualities, machines are better than humans at being consistent in their evaluations.
While looking at a NY county map, I was wondering why there is a dark blue county (Tompkins) in the middle of the state. A quick search answered my question -- Tompkins County is the home of Cornell Univeristy. I then looked at some other states, and noticed the same thing: in Michigan both Washtenaw (Univeristy of Michigan) and Ingham (Michigan State) counties are blue. In Indiana, Monroe County (Indiana University) is one of a few blue spots. Champaign County in Illinois is relatively blue compared to surrounding counties. Dane County in Wisconsin (Univeristy of Wisconsin) is bluer than its neighbors. It still worked in Colorado (Boulder), but not in Oklahoma or Texas.
While studying English (which is my second/third language), I was trying to comprehend the grammar of "must/could/should/might of done something". I encountered it so often, both online and in print, that I couldn't even think it was meant to be "must/could/should/might have done something". It wasn't until I moved to the U.S. that I realized what it was...
I am actually wondering why so many native speakers don't know that? I realize "should've" (as it is commonly pronounced here in the U.S.) and "should of" sound very similar, but it's such a common grammatical construct that I would expect any person who routinely misspells it to be corrected often enough in their 12+4 years of schooling to remember it...might it be that "must/could/should of" were once acceptable spellings?
Until about half a year ago, I had never even thought about buying a Mac. Then I broke a bezel on my laptop. Ultimately, that forced me to evaluate every laptop I could get my hands on for durability. A couple months and about $3K later I was a happy 17'' Powerbook owner. The only downside to that was that another couple months later my lady decided she can't live without a Powerbook either...
And then it occurred to me: