+ marketing home page (episodes 1-32) + single-user painting on home page (episodes 33-200) + replace home page with professional design (episodes 201-321) + IE 11 support (and get rid of IE 8) (episodes 322-324) + Android support (episodes 325-327) + iOS 8 support (episode 328) + replace 404 page with professional design (episodes 329-369) * collaborative painting (episode 370+) - multiple servers - responsive design - accessibility - polish - clear button retains focus when drawing (IE8, 9, Chrome) - drawing glitches occur when exiting drawing area that is flush against side of browser - one-pixel gap on right side of drawing area (Firefox, others unknown) - favicon - 'clear' button flashes rather than depressing (iOS) - 'clear' button depresses diagonally rather than vertically (IE 9, IE 1 1) - multiple painting/erasing tools - save the pages (persistence / databases) - wiki-fy the pages - more complex painting? - more collaborative features? User Stories to finish current MMF: * see other users' mouse pointers - multi-user clear button - multi-user line drawing - other users' mouse pointers disappear when they leave the drawing area - version synchronization across client/server - offline handling - collision-handling / conflicts / race conditions - load management - server monitoring / error handling - security (handling bad data, denial of service attacks) Engineering Tasks: * Client: Receive pointer status from server - Client: Make client display "ghost" pointers for other users - Open question: how to make sure our test double matches our real code? - Use sinon.js? testdouble.js? - Revisit Martin Grandrath's client connection design question (in E399) - Address duplication of 'mouse' event name between client and server - Figure out bundling and distribution for socket.io client - Figure out how to de-dupe require paths for common files (such as "_assert.js" ) - See Scott Corgan comment, E381: http://www.letscodejavascript.com/v3/c omments/live/381#comment-2489897377 - Update smoke tests for real-time networking To Do on current task: * Clean up _network_test_harness server code - Clean up _network_test_harness client code - Implement harness.sendPointerLocation() - Finish implementing onPointerLocation() and tests
- Provide unique ID with each pointer event
- Modify client.js to prove that we get pointer events