Using bluetooth proximity detection, automatically forward calls to the *right* place rather than just guessing. When you're at your desk, your computer detects your bluetooth phone and routes calls to your desk. When you leave, your computer detects the lack of your phone and forwards calls to your cell. When you get home, your computer there picks up your cell and routes calls to your home phone. Yes, with asterisk.
Personal experience - it took me about 6 weeks to switch. I increased my typing speed about 30% (from 60WPM to 80WPM) from the switch. I switched after touch typing for 10 years, and can switch back and forth. I find the most common error I have when typing qwerty is when I have to type words I don't think about like 'the'. It seems to me that when the full word is considered an object and just sent to my fingers whole (I never think about hitting 't', 'h', and 'e', it's just 'the', whereas I do think about the w, h, e, r, e, a, and s of 'whereas'), it comes out subconsciously and entirely in dvorak (so my works are peppeerd with kjd) rather than qwerty.
I'll never go back. I feel the same soreness come back every time I go back to qwerty - the tension from streaching to reach such a higher percentage of the keys.
The link to the article on business2 is broken. There is a space in the string passed into the php (just before a comma).
http://www.business2.com/articles/mag/0,1640,44531,FF.html should be
The thing I hated most about my first CS class was trying to figure out all those annoying and useless parts before I could get on to the fun programming. I understand that the annoying problems must be solved in order to be a competent programmer. However, I see an AP class as a time to get the new group hooked, not teach them to churn out flawless code the first time. To that end, I would recommend the approach that the first 2 or 3 classes at UC Berkeley take. Have not one, but several projects, but write the hard parts for them. This lets you take on much more complex and interesting projects, while still controlling the difficulty. Let me give you a few examples. When we were being taught search algorithms, the instructors wrote a graphical engine with little bars. We wrote the search algorithms themselves (several different ones, bubble, insertion, selection, quick, merge, etc.) and plugged them into this graphical engine. This let us watch the sorting actually happen, which both lent interest and increased understanding. The third project in CS61a (http://www-inst.eecs.berkeley.edu/~cs61a) was an adventure game. The project is to write a world in which you walk around, pick up stuff, see different people, and so on. A good portion of the code is already written for you so you can concentrate on the more creative sections of programming. This sort of setup allows the students access to code written by a skilled coder (you, the teacher). It also allows for the more ambitious students to take the project to any level they want (my partner and I implimented a time-based turn system instead of leaving the world static), while still giving the less advanced students a feeling of accomplishment at completing a rather complex program.
Finally, echoing a previous post, Scheme is an incredible language in which to learn programming concepts. It removes you from memory managment, and a couple of other nasties, so as to let you focus on the higher level of abstraction and deal with the concepts of program design more easily. Unfortunately, I realize that the students will be taking the AP exam at the end of the year, and not teaching them C++ or whatever language it is in will be a severe handicap. You can still create an environment that focuses on concept and design by writing an API of some sort that the students can use as an interface. (For example, several people I know and code with have written their own versions of malloc and free that never fail, exiting instead of returning bad values.) The glib(http://developer.gnome.org/doc/GGAD/cha-glib. html) might be usefull to this end.
Now that I have given positive suggestions, a few negative. Every "Teach Yourself C" book I ran across tried to get me to write a CD database library thing. Ok, I know, it's the easiest way to introduce you to structs and so on, but GOD, how I hated those things. They're boring as all hell! There are a bunch of posts here that say Do stuff with databases, or hack the kernel, or simulate a store. Those are BORING!!! Sure, they convey usefull concepts, but there are better ways of doing it. The casino games post souds cool to me, when I was given the task of writing blackjack, the professor provided the deck shuffling code and definition so that we could concentrate on writing the strategy engine. (incidentally, we had to write several different strategys, and then had a playoff. Lots of fun!) But please, for the students sake, stay away from organizers!
Using bluetooth proximity detection, automatically forward calls to the *right* place rather than just guessing. When you're at your desk, your computer detects your bluetooth phone and routes calls to your desk. When you leave, your computer detects the lack of your phone and forwards calls to your cell. When you get home, your computer there picks up your cell and routes calls to your home phone. Yes, with asterisk.
http://nerdvittles.com/index.php?p=78
-ben
The poster neglected to link to the sites involved.
Here's a fully linked version:
"BusinessWeek reports that Facebook has just raised another $25M from Venture Capital. Along the same lines, Rupert Murdoch has bought a minority stake in SimplyHired and just two days ago the social networking site, Visible Path said it raised $17M from Venture Capitals."
Check out the Dvorak Zine!
Personal experience - it took me about 6 weeks to switch. I increased my typing speed about 30% (from 60WPM to 80WPM) from the switch. I switched after touch typing for 10 years, and can switch back and forth. I find the most common error I have when typing qwerty is when I have to type words I don't think about like 'the'. It seems to me that when the full word is considered an object and just sent to my fingers whole (I never think about hitting 't', 'h', and 'e', it's just 'the', whereas I do think about the w, h, e, r, e, a, and s of 'whereas'), it comes out subconsciously and entirely in dvorak (so my works are peppeerd with kjd) rather than qwerty.
I'll never go back. I feel the same soreness come back every time I go back to qwerty - the tension from streaching to reach such a higher percentage of the keys.
The thing I hated most about my first CS class was trying to figure out all those annoying and useless parts before I could get on to the fun programming. I understand that the annoying problems must be solved in order to be a competent programmer. However, I see an AP class as a time to get the new group hooked, not teach them to churn out flawless code the first time.
. html) might be usefull to this end.
To that end, I would recommend the approach that the first 2 or 3 classes at UC Berkeley take. Have not one, but several projects, but write the hard parts for them. This lets you take on much more complex and interesting projects, while still controlling the difficulty.
Let me give you a few examples.
When we were being taught search algorithms, the instructors wrote a graphical engine with little bars. We wrote the search algorithms themselves (several different ones, bubble, insertion, selection, quick, merge, etc.) and plugged them into this graphical engine. This let us watch the sorting actually happen, which both lent interest and increased understanding.
The third project in CS61a (http://www-inst.eecs.berkeley.edu/~cs61a) was an adventure game. The project is to write a world in which you walk around, pick up stuff, see different people, and so on. A good portion of the code is already written for you so you can concentrate on the more creative sections of programming.
This sort of setup allows the students access to code written by a skilled coder (you, the teacher). It also allows for the more ambitious students to take the project to any level they want (my partner and I implimented a time-based turn system instead of leaving the world static), while still giving the less advanced students a feeling of accomplishment at completing a rather complex program.
Finally, echoing a previous post, Scheme is an incredible language in which to learn programming concepts. It removes you from memory managment, and a couple of other nasties, so as to let you focus on the higher level of abstraction and deal with the concepts of program design more easily. Unfortunately, I realize that the students will be taking the AP exam at the end of the year, and not teaching them C++ or whatever language it is in will be a severe handicap. You can still create an environment that focuses on concept and design by writing an API of some sort that the students can use as an interface. (For example, several people I know and code with have written their own versions of malloc and free that never fail, exiting instead of returning bad values.) The glib(http://developer.gnome.org/doc/GGAD/cha-glib
Now that I have given positive suggestions, a few negative. Every "Teach Yourself C" book I ran across tried to get me to write a CD database library thing. Ok, I know, it's the easiest way to introduce you to structs and so on, but GOD, how I hated those things. They're boring as all hell! There are a bunch of posts here that say Do stuff with databases, or hack the kernel, or simulate a store. Those are BORING!!! Sure, they convey usefull concepts, but there are better ways of doing it. The casino games post souds cool to me, when I was given the task of writing blackjack, the professor provided the deck shuffling code and definition so that we could concentrate on writing the strategy engine. (incidentally, we had to write several different strategys, and then had a playoff. Lots of fun!) But please, for the students sake, stay away from organizers!
Best of luck!
-ben