ThreatMetrix has been working on a way to identify people's browser without the use of cookies. They have some proprietary solution which probably does a combination of magical browser hashing and incorporating with their existent fraud database. Thus they built a service that allows companies to better track fraudsters without the user of cookies. Me being a bit paranoid, it creeps me out.
I wish I knew more, but as the technology is proprietary and highly secretive you get stuff with marketing speak. However if they are doing browser stuff, they have to do something with JavaScript which could be investigated, but will probably be well hidden and obfuscated.
A couple of years ago Carnegie Mellon used to have a student led course on DOTA, although I am not sure intense and mathematical that was. My friends an I only joked about the course's existence.
I am curious, is anybody aware of any other video game related courses at other universities?
Despite being a software developer who spends a lot of time in form of the computer screen, I think the world today is pushing the internet and computers onto kids that are too young. It would be increasingly disappointing if kids keep becoming more socially awkward in person by living on the internet. The internet has done marvels in destroying my focus and I have not been using only since the end of high school, not from 4 or 5 years of age.
Although this digital social movement is convenient it also scares me. I'll finish of with a quote from Russian a kids cartoon, "Instant messaging, allows you to communicate with others while at the same time be completely alone."
As some others below mentioned, I suggest getting in some exercise. Sitting in front of a computer and coding/debugging/yelling at the computer all day gets a bit stressful and its probably wears you out. Even a short 15 minute morning routine worked great to to get me going to a have a good productive day.
I am somewhat in a similar "lack or energy situation". I used to be very good about having consistent exercise schedule, I felt great and productive during coding. Then about a month ans a half ago I have significantly increased the amount of free time I spend on my side project which resulted in the sacrifice of exercise, a more destabilized sleep cycle, and more stress.
The first 3 weeks after a change of schedule were ok, but then I was starting to feel more tiered and a bit unfocused even after stabilizing my sleep. As the only thing that changed about what I did was the exercises, I think that played an important role.
As I have no knowledge in the magic of supplements and nutrition, but only have my experience, I would suggest throwing in some regular exercises and see if that help.
I do know that suggestion is a bit hard to start on, as I myself have so far failed at dragging myself back to the gym after not being there in 1.5 months.
Although documentation is great, too often I have seen it get out of date, especially the big block comments above the functions. It also becomes to understand a big block comment, especially if the comment is too detailed, since you have to keep jumping between parts of the code and parts of the comment.
I like shorter high level block comments and a lot more short comments that are directly next to the complicated parts of code it tries to explain. This way the block comments will stay up to date, and it is easier to update a short comment next to the specific lines of code. Since writing a short sentence about what you have just worked on is easier than adding to a large intimidating paragraph.
But the from my experiences, the beast practice is to write clean understandable code that does not need comments; updating code is mandatory to fix bugs but updating comments is an annoyance. Code reviews do marvels at reinforcing this, especially if the reviews are done through some tool that allows your coworkers to attach comments to specific lines of your code. This way the people can see specific problems and learn from each other. Also the social pressure of having your code definitely seen by others makes you write much cleaner code, as making the same mistakes over again will make you seem stupid.
Having JavaScript on the server side makes me a bit weary, because of the difficulties of developing with it on the user side well mainly the no compilation/type checking and lack of concurrency. With the push to multi-processor systems concurrency is becoming much more important to take advantage of which makes me curious how does a non concurrent loop scale well (I don't know much about this node.js library).
On the user side however I have learned to like it. The lack of type checking does bug me since I tend to make cludgy spelling errors which compilers pick up, but its tolerable. I do wish js had a built in type checker for development.
Another driver of hype, more negative hype is GWT. But it is a bit disappointment and is a wrong approach to the whole browser independence issues. My brother and I have been working on a project for over 4 months, which initially started with using GWT and after two month of struggling with it, we threw it out, and switched to JQuerry. Our productivity instantly shot up.
More language support would certainly interesting, but I agree JS standardization across browsers is a more important issue to have resolved.
Concurrency is not much of an issue, you write concurrent JS apps like you write them in other languages.
There are three types of applications, and two are easy in JavaScript.
The first is something that is well within the capabilities of one modern CPU core. This class of applications includes every program that's currently running on your machine. Servers that only do IO (message queues? memcache? SMTP?) can also be included, in many cases.
This is easy to handle because there is no concurrency. For IO, you use an event loop, of course.
The second class of application is something like Facebook. One machine will never be enough to handle it, so you design for it to be as distributed as possible. Each app is "shared nothing" and passes messages to communicate with other components.
Obviously, JavaScript will do fine here. Each tiny component runs on one CPU core, and then you run a million copies of the app on 250,000 4-core servers. Easy. Need to double capacity? Just buy more servers. Wonderful.
The third case is the Enterprise Application. This is something like your company's HR portal or your online bank. It's an application that's the swiss-army-knife of applications. It slices, dices, and reads email too. Just compiling it is a week-long process involving 10 engineers and 4 consultants. For maximum SPEEEEED, everything happens in its own threads, which share 100% of everything with the other threads. (How could you read email and RSS feeds and check your paycheck if there weren't threads!?)
This type of app can only ever run on a single machine; if it's too slow, IBM and Oracle would be happy to help you out with a marginally-faster box for a few million more dollars. Since everything is shared, once you hit the most expensive hardware, that's the best you can ever do. If you wonder why it takes 120 seconds to load your bank account balance... this kind of app is why.
And no, you can't write one of these in JavaScript. Shared-state threads are not implemented. What a loss...
Taking advantage of multi-core platforms is easy. Just start multiple node processes and have the kernel take care of the rest. If you want the processes to communicate, there's a host of tried and tested IPC methods available.
The advantage of this approach is that when you write a function in Javascript, it is guaranteed that no other program other than the very function you are writing will modify your data in any way.
I've used GWT on a big project for about half a year. It's not over-hyped. It definitely has it's space. If you're working on a project with two people, you're just not in the market for it. GWT is all about stability, optimization and structured development. I don't want to get into too much detail here, but some optimizations that GWT gives you are impossible to achieve by writing JS code manually.
I wish I knew more, but as the technology is proprietary and highly secretive you get stuff with marketing speak. However if they are doing browser stuff, they have to do something with JavaScript which could be investigated, but will probably be well hidden and obfuscated.