OpenStreetMaps is a classic grass-roots effort. People have sweat blood making OSM work, proving the "business" model, working out the kinks, and donating immeasurable time towards making this a success. Now that somebody has done the dirty work to prove that this method of crowd-sourcing maps can work, Google trots out its sexy service that will grab the buzz, divert the resources, advertise interest away and steal the user cycles towards improving its own closed proprietary maps. Yes, that's correct, proprietary -- there's no guarantee that what you do will remain freely available.
Has everyone forgotten the CDDB debacle? Quoting wiki: "The original software behind CDDB was released under the GNU General Public License, and many people submitted CD information thinking the service would also remain free." Those of you who remember will recognize what an understatement that is. Needless to say, those users were wrong and one day they found that all their effort was suddenly swallowed up and they were being asked to pay for access to the data they submitted.
I don't believe Google is evil and I don't work with OSM, but if Google is not evil it has to realize the negative impacts its actions can have on the kinds of grassroots open-source efforts it claims to support. Google is not stepping in to use its resources to do what the crowd cannot -- it will end up undercutting a project where the crowd was doing just fine on its own. And the ordinary Joes need to realize what is going on and channel their efforts to the project where they will own the product. OpenStreetMap.
I think the problem with that is that many mathematicians would say that arithmetic really isn't math, just like spelling isn't English or lit crit. Certainly anyone who has taken a real course in algebra (i.e. the one you take as a senior in college as a math major, as opposed to what's in 8th/9th grade) will be quick to point out that it has essentially nothing to do with what you were told algebra was.
As a CS prof at various schools, I've taught a discrete math called "Foundations of Computer Science" as a first course in the major, and I've taught a variety of programming courses with different titles as the first course. I completely agree that most of the meat of CS first out in your CS3 class (although at my current school we actually teach design patterns and real OOD in our CS2 class).
Instead of fighting over the course name that should be in HS, I think it's a lot more important to try and establish what course _content_ should be in HS, MS and Elementary school. LOGO was used by elementary school kids in the 70s and 80s, and BASIC and/or Pascal were taught in high schools in the 80s (as many have noted). Modern tools like Storytelling Alice and Scratch (an heir apparent to LOGO) are amazing tools that can teach elementary/middle school kids to write plays and learn geometry while introducing them to programming in an amazingly rich way. And they're free.
These tools are so far beyond what I learned on it's amazing. So why are we in the dark ages?
We had almost the same situation occur in a freshman class I was teaching at a top-10 CS program in 2000 or so. About 500 students in the class, blatantly clear evidence of massive cheating on a tiny assignment. So our deal was: fess up and you'll take a 0 grade on the assignment (2% of your final grade) with no other consequences; you don't and we get evidence then we'll prosecute. In the end about 30% of the class admitted to it. The sad/ironic thing was that there was only obvious evidence against about 7% of the class, and almost none of those 7% asked for the deal, so we still had to prosecute most of them.
I agree. Chuck Close is an absolutely first rate artist who has had absolutely horrible luck with his health, including at one point being reduced to holding the brush in his mouth. He's had to reinvent himself multiple times, and each time he chose a brand new style instead of trying to do things the way he did before. Changing media or style I think is a far more likely route to success than trying to do the same thing.
So when can we expect the GPU port of the nam-shub to protect us from the Cult of A5h3rah?
BTW - I do check the efficacy of your charity before I give.
I think it's a great idea for people to check out their charities carefully before donating. Unfortunately, there are a few wasteful and even corrupt charities out there. However, if you're using charity navigator, make sure you read their fine print: at present they only catalog 4500 charities, only organizations with about $500k private donations each year, only organizations with budgets of $1M+ per year. This is not meant to say anything bad about charity navigator; they are offering a tremendous service that is greatly needed. But when you search for an organization and it's not there, it could be that they're just too small to be on their map.
When I donate, I look for the organizations that seem to get the most work done with the least overhead and who can benefit the most from smaller donations from non-rich people like me. That almost always comes out being the small grassroots organizations that were formed up because individual community members decided to take things in their own hands (mostly because the nat'l orgs or nat'l gov't weren't doing their job). They have very small staff (under 20, often under 5), and budgets that are impossibly tiny to even cover their payroll.
These organizations will never make charity navigator's list. So, like with all tools, make sure you know what charity navigator does and doesn't do. And if you want to really want to change things, donate to groups that are too small to be on that list.
I don't think you're comparing apples to apples there. You're saying that the specialized skills that you learn from Contra won't help you with Quake 3, which I think is mostly true, though there clearly is some benefit to prior video game experiences help you learn new video games.
I think the real question is more like "does playing a game that requires you to keep track of lots of little jobs at the same time, help you get better at keeping track of lots of little jobs at the same time", and to me the answer would seem to be yes. That sort of these guys' philosophy http://cognitiveme.com/ but they do it with normal flash games instead of developing brain-specific games. The other thing nice about them is that they don't make outrageous claims like "we're improving your IQ" or pretend that the best way to measure the state of your brain is to give it an age in years, or anything else that's just so "out there" that you know it's not going to hold up under any scrutiny.
Certainly there are lots of "Brain Exercise" people out there who are selling snake oil, but it's just as stupid to paint the entire industry with a broad brush on the basis of a single study of people spending 30 minutes a week playing a brain game instead of surfing. Interestingly enough, if you look at the AP version who actually interviewed a scientist not involved with the study or the industry, you get a bit more nuance: http://health.yahoo.com/news/ap/eu_med_brain_games.html
"There is precious little evidence to suggest the skills used in these games transfer to the real world," said Art Kramer, a professor of psychology and neuroscience at the University of Illinois. He was not linked to the study and has no ties to any companies that make brain training games.
Kramer had several reservations about the BBC study's methodology and said some brain games had small effects in improving people's cognitive skills. "Learning is very specific," he said. "Unless the component you are trained in actually exists in the real world, any transfer will be pretty minimal."
Instead of playing brain games, Kramer said people would be better off getting some exercise. He said physical activity can spark new connections between neurons and produce new brain cells. "Fitness changes the building blocks of the brain's structure," he said.
Still, Kramer said some brain training games worked better than others. He said some games made by Posit Science had shown modest benefits, including improved memory in older people.
I've also found that a lot of university libraries will have staff and equipment in their rare books room that is appropriate to this task. Having said that, what they told me to do is what everyone else has said: snap and stitch, and what they felt they could offer was a more secure rig to hold the camera and more even lighting for the exposure.
I was researching the same thing the other day. I came across a scribd demo where they are associating comments with individual pages and bookmarks with the entire document. So when you click on a bookmark, the viewer takes you to the relevant page. Each time you scroll to a new page, it displays the relevant comment for the page.
Of course their demo has hardcoded bookmarks and comments, but their data structures are clear, the code is readable, and it takes little imagination on how to provide a dynamic PHP back end to make the situation dynamic and persistent. I was able to graft it onto wordpress+Pods without too much difficulty (though I didn't do a good enough job to release into public).
I also was able to somewhat hack a similar thing for the google PDF reader, but because their API is still closed source I chose scribd -- even though it's a bigger pain to upload to scribd, at least I know that their API is supported.
I would still love to have "on document" annotation though, similar to what Acrobat or similar would give you, and I was hoping that since Google was drawing one character at a time that I could pull this off. But again, since it was all unsupported, I walked away from it and kept the suboptimal scribd version.
Of course discreet math would mean that it's subtle and below the radar, which is an interesting concept but probably not worth university credit.
If you have to choose between the two, then discrete math is really the best one. As a long time programmer and CS professor, the basic concepts of graph theory and propositional logic are probably the most useful subfields of math to computer scientists, especially when a class like that includes stuff about functions (i.e. prove/disprove that if f is 1-1 and g is 1-1, then (f o g) is 1-1). Even if it doesn't, you need to understand deMorgan's law at a deep level, and that sometimes a complicated logic expression can be simplified down to nothing if you just think about it. The concept of a graph is incredibly useful for representing data of all kinds and even if you don't remember the relationship between the number of edges and vertices in a tree, seeing graphs once will give you a really useful abstraction that handles heaps and heaps of real problems you'll encounter as a professional.
People tend to fear and/or discount a class like your discrete math one because it involves proofs, and few programmers use proofs in their programming. But IMHO, the point of teaching proofs is not that programmers should be good at proofs. It's that writing proofs requires you to learn a system with a completely new set of rules, and apply those rules very carefully to achieve your result (aka, teaching you a new kind programming and helping you hone those skills so when your boss drops a new language manual on your desk and says you need to be programming in it in 48 hours, you stand a chance of succeeding).
Also, doing (real) proofs requires you to think really deeply about problems. I tell students mathematicians do proofs to 1) show something is always true, 2) learn something deeper about the problem itself. Both are useful in programming, but #2 is especially so, because that sort of thinking is what enables a programmer to keep track of the forest for the trees. When you're debugging annoying bug #257, you're more likely to notice that this larger solution will solve #257 plus a whole bunch of other annoyances at the same time.
As many others have said, the vector math is great for graphics and signal processing. But I think the best thing you can get out of that class is an intuitive understanding of the concept of a vector-space, because if you get that, it's useful across a far wider swath of programming than just graphics and signal processing. Unfortunately, you don't often learn that, because in a standard linear algebra class what you learn about vector spaces is proving their rank, their null space and a whole bunch of stuff that I don't think has much application even when you're doing graphics and signal processing.
Finally, since I'm already on my soap-box, I'll point out that you might actually enjoy discrete math in spite of your dislike of math. All the math you've likely seen so far is what mathematicians consider Analysis. The other two big branches of math are called Algebra (you'd see a bit of this in discrete, but it has nothing to do with what you learned in high school), and Geometry/Topology (which doesn't have much to do with what you learned in high school). I never enjoyed Analysis that much and there was some serious arm twisting to get me to try the other two branches. But I found out that Algebra used most of the same thought processes that I'd already developed with programming, and it took my programming to a whole other level, not because I often directly used that kind of math in my code, but because it helped my brain think in a more abstract way which let me tackle harder problems in code than I could before.
It's like lifting weights -- I don't think I often do things on a day to day basis that could be classified as a military press or a leg curl, but I know that if I life it just makes me a stronger and healthier person and that's good enough for me.
The tree of research must from time to time be refreshed with the blood of bean counters. -- Alan Kay