6 ms·
Websockets are awesome (you can see everyone's cursor)! Please donate yours
- davidvanleeuwen 16y agoPlease help me out here guys! Thanks :-) Btw: you can donate your finger as well on iOS4.2
- AndrewDucker 16y agoNot working for me. The whole page loads except for the bit inside the cursor placeholder. I'm behind a firewall in an office, but I don't know if that's the problem. (FF 3.6 on Windows)
- davidvanleeuwen 16y agoFF 3.6 (on windows) needs javascript and flash. So that could be the problem. Maybe you could try Chrome/Safari instead. And the server is having a busy day, because of all of you guys :D Sometimes it resets all connections, not sure why yet.
- mise 16y agoYup, I'm behind a proxy server and this always seems to mess with sockets examples.
- mihaifx 16y agoDoesn't work here as well. Firefox 3.6
- davidvanleeuwen 16y agoPlease use www.davidvanleeuwen.nl and not just davidvanleeuwen.nl - it's a little bug
- sid0 16y agoWorks fine in Firefox 4 (behind an HTTP proxy too).
- eftpotrm 16y agoNow, now. This poor student is just trying to get a job; it's not nice to give him the finger....
- jonafato 16y agoCan you explain what exactly "donating my cursor" does?
- davidvanleeuwen 16y agoIt's something like the 'facebook like' button, but it's more like an experiment for my graduation. I want to become an intern at Valve, that's why I've made this website. If you have any feedback, please let me now :) Thanks!
- jonafato 16y agoOk, cool, you've got my cursor. Do you have any ideas on what to add to steam stats on that site somewhere? I'm an avid steam (mostly valve) gamer myself, and I like to keep track of accuracy, headshots, etc. What would you add?
- davidvanleeuwen 16y agoI'm really not sure what kind of data I can use for all the statistics (not sure what kind of data they collect from everyone, except your status and achievements). But I'm hoping to make it somewhat more personal, so you could share it with your friends and stuff. But I sure can use some help on what kind of data is interesting.
- jonafato 16y agoOne thing I'd personally like is an analytics type of view for my stats. i.e. graphs of different stats over time to show improvement. I don't know how much social stuff there is to be done, because steam already has a decent community view. I'd definitely like to talk in depth about it if you're looking to discuss things. My contact info is in my profile if you're interested.
- davidvanleeuwen 16y agoLeaderboards, progress, achievements... it should all be there. I'll contact you if I'll be an intern at Valve! Thanks :D
- deleted 16y ago[deleted]
- davidvanleeuwen 16y agoLol, I didn't expect to have so many people on this site. I think the server is going to need a vacation soon.
- PaulJoslin 16y agoIs this using HTML 5 Web sockets? It's a very cool experience. At first I just thought it was an animation, until I managed to coax all the other users into some sort of cursor mosh pit. Could this be the potential future for social browsing, where each 'cursor' is tagged with the user name and you can actually observe users navigating through the pages of websites.
- SimonPStevens 16y ago"Could this be the potential future for social browsing, where each 'cursor' is tagged with the user name and you can actually observe users navigating through the pages of websites." Makes note in list of cool project ideas I'll probably never get round to implementing.
- pierrefar 16y agoThe server going down due to popularity might actually help your case.
- acarabott 16y agoAs this is a job application of sorts I feel I should point out a typo: "It gives you a peak at the engine of Steam." should be "It gives you a peek at the engine of Steam."
- orta 16y agoclever. I hope it works out for you
- enneff 16y agoWebsockets are indeed awesome. I made this: http://powerhouse.nf.id.au/ http://powerhouse.nf.id.au/
- chanux 16y ago`Oh, did I mentioned I'm a fanatic gamer as well?` Shouldn't that be "Oh, did I mention I'm a fanatic gamer as well?" Good Luck.
- sp4rki 16y agoThis is a billion and one times better than sending your resume and contacting a recruiter. You leverage the power of the community and showcase that you actually do have competent skills. The only negative I notice, is that among the skills you showcase, proofreading is not one of them. Hah! Anyways, if you did this to intern where I work, I'd give you an internship position in a heartbeat. Wish you all the luck to get what you want fellow hacker. Thumbs up.
- alkavan 16y agoHay! that's a great idea to get a job :) good luck! agree with PaulJoslin, this simple example really shows good what can be done with Websockets in the scope of social browsing and gaming. will read more about Websockets, already got some nice ideas i can implement in my social soccer site. now just connect this with google maps, and let users move avatars on it and yo'll have a nice start of a web MMO =]
- axod 16y agoWhatever next? Next thing you know someone will write an IRC client using websocket! Cool showcase though :)
- manish 16y agoLooks like HN effect. I am getting connection refused error.
- SimonPStevens 16y agoIf we all coordinate our efforts and position our cursors we could spell out something.
- rythie 16y agoValve will want you to do stuff that works at scale, which you seem to be having some problems with. What is the backend datastore/communications for this? redis? node.js? or just plain MySQL?
- jasonkester 16y agoI find that stuff like this works best with no database whatsoever. There's no particular reason to store cursor positions for longer than it takes to route messages, so you can keep them in memory. Try writing something like this, and you'll be surprised how easy it is. Especially with some of the new frameworks that are built specifically for it (ie., node.js). I expect this to be the "Hello World" for realtime web apps, much in the way that little chatrooms were the "Hello World" for java and sockets.
- rythie 16y agoI have written stuff like this in node.js that's why I suggested it as one of the options he would typically use for this. I figured he'd either send directly from one host to another with node.js or poll redis.
- smokinn 16y agoTrying to cover up other people's cursor is surprisingly fun. They always try to run away and lose you in the crowd. =)
- confuzatron 16y agoFor me, tangling cursors with strangers seemed somehow icky. Mind you, I also avoided chat roulette...
- beaumartinez 16y agoThis is incredible, how come I didn't think of this? This is certainly a flash job application, well done. I wouldn't mind everyone's corrections; if they don't accept you because of a few typoes, Valve are idiots. How often are you sending out cursor positions? I was trying to start a cursor ruckus but I think that all my cursor movement crashed your server. Incidentally, this could be an interesting exercise in calculating when and how often to send out cursor coordinates. I'd add something about that on the page too, as I dare say that's a good skill to have as well. All the best.
- jkreeftmeijer 16y agoThis is a really nice implementation, but here's how I did it a couple of months ago (with an explanation on how to do it yourself): http://jeffkreeftmeijer.com/2010/experimenting-with-node-js http://jeffkreeftmeijer.com/2010/experimenting-with-node-js ;)
- prat 16y agoIs this link dead- or is it just me?
- beaumartinez 16y agoIt's down for me too. I think we crashed his server... http://downforeveryoneorjustme.com/www.davidvanleeuwen.nl/ http://downforeveryoneorjustme.com/www.davidvanleeuwen.nl/
- davidvanleeuwen 16y agoHi guys. Thank you all for supporting me. I'm just reading all of this, because I've been at a meeting for a couple of hours. Server is up again, but I wasn't expecting it to be this huge. I'll make some changes, so please don't blame me if it's down. I'm just another Dutch student trying his best to graduate. And yes, I did let a few people check the site before I launched it (not only Dutch people). Still, my English isn't the best and thank you guys for pointing that out. I'll change it as soon as possible. I'll give all comments a closer look soon. Again, I didn't really expect this (otherwise I'll optimized it first and put it on a CDN and stuff). I'll also get into details (specs, technical details etc). And again, thank you all :-)
- aditya 16y agoJust curious: Have you heard of firef.ly from back in the day? :-) http://gigaom.com/2008/07/30/firefly/ http://gigaom.com/2008/07/30/firefly/ http://www.scripting.com/stories/2008/05/13/demoOfFirefly.html http://www.scripting.com/stories/2008/05/13/demoOfFirefly.ht...
- davidvanleeuwen 16y agoNever heard of it. But it actually does use the same technique (I use flash as fallback for browsers that doesn't support websockets... well actually, Socket.IO does it all <- love it).
- haydenchambers 16y agoHi David, first congrats on the success - hope it translates into the internship you're after... my question is what have you got on the other end of this site?
- gregory80 16y agopretty sure firefly is ChartBeat now.
- aditya 16y ago
- hebejebelus 16y agoThis is brilliant. If a picture speaks more than a thousand words, an awesome tech demo shouts louder than a CV, for sure.
- polynomial 16y agoI have seen the future of job placement.
- flacon 16y agoSeems like this has been done before: http://jeffkreeftmeijer.com/2010/experimenting-with-node-js/ http://jeffkreeftmeijer.com/2010/experimenting-with-node-js/ Using Node.js. The node js example even provides the code to replicate it. Is this person using node or some other websocket approach?
- davidvanleeuwen 16y agoActually, someone recommended Jeff Kreeftmeijer's work, when I was working on this (an old colleague). I liked the way he did this, so yes... his work was very inspiring. But most of my inspiration on how to do this came from the Node.JS knockout. Those guys are really awesome. I'm also working on something similar for a while now, check http://screenr.com/DDk http://screenr.com/DDk I used Node.JS, ExpressJS, Socket.IO and CouchDB (I should have used redis actually, but these things were familiar to me). I'm not trying to prove this is the newest, most greatest thing. I'm trying to get an internship at Valve.
- cookiestack 16y agoHey David, I really like what you have done, a nice twist on the ol' like button. And its a pretty cool looking site as well. One thing does, well, concern me a bit, and its that you haven't given credit where credit is due (http://jeffkreeftmeijer.com/2010/experimenting-with-node-js/ http://jeffkreeftmeijer.com/2010/experimenting-with-node-js/). There is no doubt that this is very similar to Jeffs blog post, and although it takes the idea a step further, I do think you should at least add a link to any and all code which inspired you and which you took ideas from, if it be Jeffs previous post, or a Node Knockout project. Best of luck with getting Valves attention, and you have my pointers vote :)
- antekpiechnik 16y agoCould not agree more with cookiestack. The inspiration is quite clear and not giving any credit to what influenced your work is somewhat surprising. Especially given the fact that this is supposed to be a job application.
- deleted 16y ago[deleted]
- RossM 16y agoThe new Opera beta does nicely here, just some layout problems (scrollbars) if cursors go too far to the side on large monitors - awesome example though.
- Epitaph 16y agoIt's down for the count, but when it gets back up everyone should run this piece of java (requires you to import java.awt.Robot): try{ Robot robot = new Robot(); while(true){ for(float t=0; t<1000; t++){ robot.mouseMove(200+(int)(150*Math.cos(2*Math.PI*(t/1000))), 400+(int)(50*Math.sin(2*Math.PI*(t/500)))); robot.delay(1); } } } catch (Exception e) {} We would all be infinitely tracing the infinity symbol.
- cookiestack 16y agoI noticed that when you refresh the page, you can revote, do you do any checking to make sure people can only vote once?
- davidvanleeuwen 16y agoThis has been a long and busy day. I've received a lot of comments, both positive and negative. I'm not sure what to do with all of these comments. I saw a lot of questions about where I got my inspiration. Someone built something similar at the Node.JS knockout: http://tinyurl.com/2ch3nes http://tinyurl.com/2ch3nes. I started experimenting with PusherApp and NodeJS (I've worked with ape-project.org before doing this). Later on, I attended a developer meeting (http://rotterdamphp.tumblr.com http://rotterdamphp.tumblr.com) and they talked about Node.JS and CouchDB. At that same meeting someone pointed out Jeff Kreefmeijer's work and that I'm not the first one to build something like this. But I didn't care and kept on building (because it doesn't matter to me if I'm the first to build it). If you're curious on how I've build this, then you should check out my twitter (@davidvanleeuwen) tomorrow, because I'll submit it on github and will post the link there.
- jkreeftmeijer 16y agoThe problem wasn't that you're not the first to build it, but that there was a complete guide to build something like this published somewhere, you definitely knew it existed and people thought you used it and didn't credit the author. Since that's not the case: awesome work, your implementation looks great. Have fun at Valve. :)
- luisns 16y agointeresting technology, has a lot of potential. oh, i just added another item in "to learn" list