tag:blogger.com,1999:blog-89593560836180711672024-02-24T04:33:17.357-08:00Beautiful PixelsVincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.comBlogger106125tag:blogger.com,1999:blog-8959356083618071167.post-61152498076253905482020-10-08T11:14:00.003-07:002020-10-08T11:15:24.256-07:00One-line web page tools - example: sorting text<p>Sometimes you need to quickly get a small job done, such as sorting text.</p><p>I created a few tools that are coded in just the URL alone. The whole web page app is just entered into a <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">data URL</a>. These can be saved as a bookmark and the tool is ready to go quickly any time, offline, without sending data anywhere.</p><p>Coders are likely to handle this in their favorite text editor, or command line tool. But why not in a new tab for the browser you're already in?</p><p>There are many online tools to do this type of work too, but there's always the risk that you don't know where the data is going. These one line tools give me the confidence the text stays private.</p><p><b>To use these tools: </b></p><p></p><ol style="text-align: left;"><li>Copy one of the URLs below and paste into your browser (just like you'd enter a webpage URL).</li><li>Optionally bookmark it, so that you can get to it in the future easily.</li><li>Put text into the text box.</li><li>Click off the text area, or use Tab key, to move focus away. The code runs and sorts the text.</li><li>Copy sorted text, ..., profit.</li></ol><p></p><h4 style="text-align: left;">Sort Lines</h4><blockquote><p>data:text/html,<textarea autofocus style="height:100%; width:100%" onchange="value = value.split(<b>'\n'</b>).map(x => x.trim()).filter(removeEmpty => removeEmpty).sort().join(<b>'\n'</b>)" ></p></blockquote><h4 style="text-align: left;">Sort Line by Commas</h4><blockquote><p>data:text/html,<textarea autofocus style="height:100%; width:100%" onchange="value = value.split(<b>','</b>).map(x => x.trim()).filter(removeEmpty => removeEmpty).sort().join(<b>', '</b>)" ></p></blockquote><h4 style="text-align: left;">Sort Line by Spaces</h4><blockquote><p>data:text/html,<textarea autofocus style="height:100%; width:100%" onchange="value = value.split(<b>' '</b>).map(x => x.trim()).filter(removeEmpty => removeEmpty).sort().join(<b>' '</b>)" ></p></blockquote><h4 style="text-align: left;">To Uppercase</h4><blockquote><div>data:text/html,<textarea autofocus style="height:100%; width:100%" onchange="value = value.<b>toLocaleUpperCase()</b>" ></div></blockquote><div><h4>To Lowercase</h4><blockquote><div>data:text/html,<textarea autofocus style="height:100%; width:100%" onchange="value = value.<b>toLowerCase()</b>" ></div></blockquote></div><div><p style="text-align: left;">Once you've started, it's easy to make new ones for future needs. Leave a comment if you've found a new variation helpful.</p></div>Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-81946904167245761782016-03-03T19:45:00.000-08:002016-03-03T19:45:32.535-08:00Credibility Bet Game<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-9I_crl0ACa4/UoDyrSxDMlI/AAAAAAABm-E/hAGN4vL1iVo/s1600/IMG_1886.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://4.bp.blogspot.com/-9I_crl0ACa4/UoDyrSxDMlI/AAAAAAABm-E/hAGN4vL1iVo/s320/IMG_1886.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Current state of a game around 2004 at Studio Gigante</td></tr>
</tbody></table>
The Credibility Bet Game is a lighthearted game great for a medium sized work team or large group of friends. It's a playful way to challenge folks on knowledge, skill, or random outcomes.<br />
<br />
I initially designed it to stop a lunch argument, saying something like, "stop arguing and just bet on it, and go test it."<br />
<br />
One of the engineers replied that betting for money was against their religion... and thus the fake credibility currency was born!<br />
<ol>
<li>Everyone starts with 100 credibility points.</li>
<li>At any time make a bet on anything except where people are put in danger, e.g. alcohol.</li>
<li>Bets must be whole positive numbers, the smallest bet is 1 point.</li>
<li>Bets can have odds E.G. "I bet 10 of my points for 1 of yours."</li>
<li>Multiple people can bet at once, just treat them all separately.</li>
<li>Don't disturb bets, others should stay quiet on a topic if a bet is forming up so as to not spook anyone from quitting the bet.</li>
</ol>
<div>
Keep a list somewhere of who's got how many points. For more fun, record each bet along with some trash talk.</div>
Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-70599234998080270622014-03-04T12:24:00.002-08:002014-03-07T15:11:55.267-08:00GDC 2014 Schedule HighlightsMy quick scan of the <a href="http://schedule.gdconf.com/" target="_blank">GDC 2014 Schedule</a>:<br />
<ul>
<li>The Year in Free-to-Play Games - Monday 10:00</li>
<li>Animation Bootcamp: An Indie Approach to Procedural Animation - Monday 16:00</li>
<li>Turing Tantrums: AI Devs Rant! - Monday 16:30</li>
<li>Google Developer Day (Presented by Google) - Tuesday 10:00</li>
<ul>
<li>This will be <a href="http://googledevelopers.blogspot.com/2014/02/join-us-at-game-developers-conference.html" target="_blank">live-streamed</a>.</li>
</ul>
<li>Antichamber: An Overnight Success, Seven Years in the Making - Tuesday 11:15</li>
<li>The Connection Between Boys' Social Status, Gaming and Conflict - Tuesday 12:45</li>
<li>From Indie to AAA to Indie: The Rebirth of Design - Tuesday 13:45</li>
<li>Analysis and Lessons from the Global Free-to-Play Market - Tuesday 15:00</li>
<li>Bringing Console Quality Lighting to Mobile (Presented by Imagination Technologies) - Tuesday 15:00</li>
<li>Indie Soapbox - Tuesday 16:30</li>
<li>ID@Xbox: Introduction to the Xbox One Console (Presented by Microsoft) - Wednesday 09:00</li>
<li>Flash Forward - Wednesday 09:30</li>
<li>Moving to the Next Generation: The Rendering Technology of Ryse - Wednesday 11:00</li>
<li>Porting Realm of Empires from Facebook to Mobile HTML5 - Wednesday 11:00</li>
<li>Creating Unique Interactive Experiences with the PlayStation4 (Presented by Sony Computer Entertainment America) - Wednesday 12:00</li>
<li>ID@Xbox: What's New in Live for Xbox One (Presented by Microsoft) - Wednesday 13:00</li>
<li>ID@Xbox: Faster, Better: An Overview of Tools and Performance for Xbox One (Presented by Microsoft) - Wednesday 14:00</li>
<li>Mantle - Introducing a New API for Graphics (Presented by AMD) - Wednesday 14:00</li>
<li>OpenGL ES 3.0 and Beyond: How To Deliver Desktop Graphics on Mobile Platforms (Presented by Intel Corp) - Wednesday 14:00</li>
<li>Authoring Tools Framework: Open Source from Sony's Worldwide Studios (Presented by Sony Computer Entertainment America) - Wednesday 15:30</li>
<li>Next-Generation AAA Mobile Rendering - Wednesday 15:30</li>
<li>Mobile Programmers Roundtable: iOS - Wednesday 15:30</li>
<li>Rendering Battlefield 4 with Mantle (Presented by AMD) - Wednesday 15:30</li>
<li>The Last of Us: Human Enemy AI - Wednesday 17:00</li>
<li>A Context-Aware Character Dialog System - Thursday 10:00</li>
<li>Classic Studio Postmortem: Lucasfilm Games - Thursday 10:00</li>
<li>Code Clinic: How to Write Code the Compiler Can Actually Optimize - Thursday 11:30</li>
<li>Rant Apocalypse: The 10th Anniversary Mega Session - Thursday 11:30</li>
<li>Approaching Zero Driver Overhead in OpenGL (Presented by NVIDIA) - Thursday 13:00</li>
<li>Ask the Experts: Professional Programmer's Panel - Thursday 13:45</li>
<li>Classic Game Postmortem: Robotron: 2084 - Thursday 14:30</li>
<li>Ellie: Buddy AI in The Last of Us - Thursday 16:00</li>
<li>Engine Postmortem of inFAMOUS: Second Son - Thursday 16:00</li>
<li>Classic Game Postmortem: Zork - Thursday 17:30</li>
<li>Distribution & Tools: Building your Game for the Modern Web and Finding an Audience (Presented by Mozilla) - Thursday 17:30</li>
<li>Experimental Gameplay Workshop - Friday 14:30</li>
</ul>
<div>
I'd love to hear sessions that stand out to you.</div>
<div>
<br /></div>
<div>
<span style="font-size: xx-small;">(Regular Expression used on their CSV export:</span></div>
<div>
<div>
<span style="font-size: xx-small;">^"([^"]*)","2014-03-.. ([^"]*):00","[^"]*","[^"]*","([^"]*)".*$</span></div>
<div>
<span style="font-size: xx-small;">
</span>
<br />
<br />
<br />
<li><span style="font-size: xx-small;">\1 - \3 \2</span></li>
<span style="font-size: xx-small;">
</span></div>
</div>
<div>
<span style="font-size: xx-small;">)</span></div>
Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-37238064133848218852014-02-21T10:11:00.000-08:002014-02-21T10:11:20.104-08:00Tablet and Google Hangouts Screenshare as KVM secondary monitor<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-wubprAnJttQ/UweVwF680dI/AAAAAAACT_w/QpyV1jRQdeU/s1600/IMG_20140221_095921.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-wubprAnJttQ/UweVwF680dI/AAAAAAACT_w/QpyV1jRQdeU/s1600/IMG_20140221_095921.jpg" height="245" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Main display on KVM showing Linux workstation,<br />while monitoring Mac on tablet</td></tr>
</tbody></table>
I use a single 30" monitor while working across several workstations, but I'd like to know when some long running operations (e.g. building Chrome, or running tests) complete. <a href="https://plus.google.com/+RobertGinda" target="_blank">Robert Ginda</a> suggested using a spare tablet and Google video hangouts with screenhare. Works great!<br />
<br />
- From source machine: open a hangout with yourself (I typed my own email address into the gmail hangout panel)<br />
<br />
- Start a video chat, and from there a screenshare.<br />
<br />
- Open hangouts on phone or tablet, join the existing video chat, have a second view!<br />
<br />
- Flip back to other workstation on main display while you wait.Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-18502310687281503592013-12-10T09:03:00.000-08:002013-12-10T09:03:00.181-08:00Preserving Girls' interest in Computer ScienceMy wife put together a great list of tips recently for educators asking for advice on incorporating computational thinking into their curriculum. I heartily agree with these thoughts:<br />
<br />
<ol>
<li>Appeal to a variety of interests by presenting a wide range of computer science applications. Provide lots of answers to the question "Why do I want to learn to program? What can I do with programming that I'm interested in?" Not all students may be motivated to make games. Help them find an application they are passionate about.</li>
<li>Make the point that computer science isn't just relevant for "computer people". You can be a great programmer and love it without knowing everything about computers. Also, programming skills are applicable to many careers, not just software engineer.</li>
<li>Provide encouragement. There are a lot of forces pushing girls away from computer science. Help combat this by encouraging students. You may provide the crucial support a vulnerable individual needs to persist. </li>
<li>Recognize that there can be a tendency to attribute academic shortcomings to lacking intrinsic ability. If a student believes she is "failing" in a class (keep in mind this is in her eyes, which may be a B), she may conclude that she is not smart enough for the subject as a whole. Emphasize that other factors such as study skills (and sleep!) can have a huge impact on performance.</li>
<li>Don't take lack of interest in a subject at face value. Perceived self-efficacy affects interest. A student may not be interested, in part, because the student does not feel confident. </li>
<li>When stress is too high, the ability to learn decreases. If a student is feeling insecure, incapable, or otherwise stressed, performance may decrease. Don't assume that low scores indicate lack of potential. </li>
<li>Feeling "out of place" can be very distracting. Instead of listening to the course material, a student may be focused on her minority status or how uncomfortable she feels (imagine trying to listen to a teacher with loud static in the background). The student may need a different environment, in which she feels comfortable, in order to focus. </li>
<li>Provide actual programming practice. Show that programming isn't mysterious or too complicated to comprehend. You don't need secret "computer knowledge" to succeed. Demonstrate what to do when you don't know the answer. </li>
<li>Understand the reasons that the pipeline is leaky. For one, staying in it is exhausting. If a student doesn't know why this is the case, she might be more likely to think it is just her and give up. It might take awareness of the factors involved and the deliberate decision to stay anyway.</li>
<li>Encourage students not to rule out any careers due to expectations about difficulty achieving acceptable work-life-family balance. There are a lot of options out there. </li>
<li>Don't try to "weed students out". Instead, encourage students to sign up for another class. Students don't have to commit to a life of programming; just stay in computer science a little bit longer. </li>
<li>Have female teachers and role models. Show that you don't have to be the stereotype. </li>
</ol>
<br />
<br />Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-4126123538238242232013-03-19T15:44:00.000-07:002013-03-19T15:44:57.594-07:00GDC Sessions for HTML5 games on web and mobile<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-sT1_WKG_Qpw/UUjhf7V5hJI/AAAAAAAA7nI/7yu4fzulWQw/s1600/gdc13.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="144" src="http://4.bp.blogspot.com/-sT1_WKG_Qpw/UUjhf7V5hJI/AAAAAAAA7nI/7yu4fzulWQw/s320/gdc13.png" width="320" /></a></div>
GDC sessions that caught my eye related to building games on web tech:<br />
<br />
<a href="http://schedule2013.gdconf.com/session-id/824263" target="_blank">Native Apps? With HTML5? Yes You Can! (Presented by Google)</a><br />
<i>Joe Marini | Developer Advocate, <b>Google</b></i><br />
... Chrome Packaged Apps platform allows the creation of native app experiences using HTML5 technologies that work offline by default, have access to native platform features, and can run across a variety of operating systems.<br />
<br />
<a href="http://schedule2013.gdconf.com/session-id/824220" target="_blank">Fast and Awesome HTML5 Games (Presented by Mozilla)</a><br />
<br />
<i>Vladimir Vukicevic | Engineering Director, <b>Mozilla</b> Corporation</i><br />
<i>Alon Zakai | Senior Researcher, <b>Mozilla</b> Corporation</i><br />
<br />
... JavaScript tooling and execution allow near-native-code speeds. Combined with standards such as WebGL, Web Audio, and the rest of the HTML5 stack, the modern web is emerging as a platform for high-quality games ...<br />
<br />
<a href="http://schedule2013.gdconf.com/session-id/822672" target="_blank">Multiplatform C++ on The Web with Emscripten</a><br />
<i>Chad Austin | Technical Director, <b>IMVU</b></i><br />
Emscripten is a compiler of LLVM bitcode into JavaScript. With Emscripten, programs written in C++ can run straight from your web browser, and no plug-ins are required. ... why IMVU has chosen Emscripten as part of its multi-platform engine strategy ...<br />
<i>(Tragically, a time conflict with 'Fast and Awesome HTML5 Games' by Mozilla, which overlaps content wise)!</i><br />
<br />
<a href="http://schedule2013.gdconf.com/session-id/824119" target="_blank">Nintendo Wii U Application Development with HTML and JavaScript</a><br />
<br />
<i>Ryan Lynd | Senior Software Engineer (NST), <b>Nintendo</b> Software Technology</i><br />
<i>Kevin McCullough | Software Engineer, <b>Nintendo</b> of America</i><br />
<i>Takeshi Shimada | Deputy General Manager, Software Environment Development </i><br />
... HTML and JavaScript have empowered a whole new wave of developers that have previously been excluded from Nintendo console development - until now! This session will introduce a new way of rapidly developing Wii U applications that takes full advantage of unique Wii U features while reducing development times significantly.<br />
<br />
<br />
<a href="http://schedule2013.gdconf.com/session-id/824244" target="_blank">Game Development with Google Cloud Platform (Presented by Google)</a><br />
<div>
<div>
<i>Yanick Belanger | Server Architecture Lead,<b> Electronic Arts</b></i></div>
<div>
<i>Ryan Boyd | Developer Advocate, <b>Google</b></i></div>
<div>
<i>Chris Elliott | Solutions Architect, <b>Google</b></i></div>
<div>
<i>Dan Holevoet | Developer Programs Engineer, <b>Google</b></i></div>
<div>
<i>Momchil Kyurkchiev | CEO, <b>Leanplum</b></i></div>
<div>
<i>Michael Manoochehri | Developer Programs Engineer, <b>Google</b></i></div>
<div>
<i>Luca Martinetti | Founder and CTO, <b>Staq</b> Inc.</i></div>
</div>
<div>
Google Cloud Platform provides everything you need to build, run, and scale social, mobile, and online games. Already, tens of thousands of popular applications like SongPop, Angry Birds, SnapChat, and Legend of Monsters ...</div>
<div>
<br /></div>
<br />
<a href="http://schedule2013.gdconf.com/session-id/824373" target="_blank">Supercharge Your Game With YouTube (Presented by YouTube)</a><br />
<br />
<i>Satyajeet Salgar | Product Manager, <b>YouTube</b> Live & Sports</i><br />
<i>Ibrahim Ulukaya | Developer Programs Engineer, <b>YouTube</b></i><br />
<i>Jarek Wilkiewicz | Developer Advocate, <b>YouTube</b></i><br />
... By integrating your game with YouTube, you can share rich and authentic game experiences that are more likely to convert viewers into gamers than any other medium. In this session, we will highlight integration examples and best practices with special focus on mobile. We will also give you a sneak peek at our latest live streaming platform APIs. ...<br />
<br />
<a href="http://schedule2013.gdconf.com/session-id/824374" target="_blank">HTML5 Cross-Platform Game Development: The Future is Today (Presented by Ludei)</a><br />
<i>Ibon Tolosana | CTO, <b>Ludei</b></i><br />
HTML5 is finally ready for cross-platform game development. We'll explain best practices for HTML5 game development, case studies and how to overcome issues to make HTML5 games work.<br />
<br />
<a href="http://schedule2013.gdconf.com/session-id/822458" target="_blank">Rapid Development of High Performance Games for Mobile and Web</a><br />
<i>Ricardo Quesada | Software Architect, <b>Zynga</b></i><br />
This talk will be about the cocos2d JS, a complete toolchain for developing multi-platform games for both the Web and Mobile, which goes all the way from rapid prototyping to a finished high performing game. There are three main components: a game engine (cocos2d), a physics engine (Chipmunk), and a visual editor (CocosBuilder). For the web, no plugins are required. For mobile, it uses JavaScript bindings for the C/C++ version of cocos2d and Chipmunk, and achieves a performance 10 times faster than other JS engines/JS accelerators. ...<br />
<br />
<a href="http://schedule2013.gdconf.com/session-id/823991" target="_blank">HTML5 Audio: Coming to a Mobile Game Near You!</a><br />
<i>Jory Prum | Sound Guy, studio.jory.org</i><br />
... possibilities the new Web Audio API enables audio developers when building games for the web. ... With the adoption of the new W3C's new Web Audio API (available in Chrome, Safari, and iOS 6), tremendous possibilities exist, ranging from simple audio playback to object- and event-triggered audio. There are advanced filtering and reverb capabilities built in, 3D positional panning, and all available with extremely low latency. ...<br />
<br />
Have fun at GDC!<br />
<br />
<br />
<br />
<br />
<br />
Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com2tag:blogger.com,1999:blog-8959356083618071167.post-27639476838695596372013-03-12T11:43:00.001-07:002013-03-19T15:44:28.496-07:00Chrome's FPS Histogram<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-SRNfdKrOwLo/UMJ6YhMlNPI/AAAAAAAAc3I/e3Rf4ns5A1c/s1600/fps-histogram.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="250" src="http://4.bp.blogspot.com/-SRNfdKrOwLo/UMJ6YhMlNPI/AAAAAAAAc3I/e3Rf4ns5A1c/s320/fps-histogram.png" width="320" /></a></div>
Eberhard Gräther has improved the FPS meter in Chrome. I particularly like the histogram added on the right hand side. It allows you to easily see how long your frames are taking, and if your frame rate is bouncing around between different values.<br />
<br />
You can check it out by<br />
<br />
<ol>
<li>Opening up Chrome's developer tools (3 bar menu in upper right, Tools, Developer Tools)</li>
<li>Opening up the options (gear menu in bottom right)</li>
<li>Enabling 'Show FPS Meter' in the rendering section.</li>
</ol>
<br />
Or, in about:flags you can enable it always.<br />
<br />
It's handy to see, e.g. when you are missing some frames and oscillating between 30 and 60fps:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-zgvQAY4PoK4/UT-X5NQCPMI/AAAAAAAA7dg/pi4f6DgSOUo/s1600/FPS-bouncing.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-zgvQAY4PoK4/UT-X5NQCPMI/AAAAAAAA7dg/pi4f6DgSOUo/s1600/FPS-bouncing.png" /></a></div>
<br />Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com1tag:blogger.com,1999:blog-8959356083618071167.post-76068662824625390022012-10-09T13:09:00.000-07:002012-10-09T13:09:05.728-07:00State charts<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-NR3pG9xVPak/UHSD6eLWEZI/AAAAAAAAaSw/eQO-CiPWzzs/s1600/statechart.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-NR3pG9xVPak/UHSD6eLWEZI/AAAAAAAAaSw/eQO-CiPWzzs/s1600/statechart.gif" /></a></div>
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">Thanks to Bill Budge for pointing me to <a href="http://jcsites.juniata.edu/faculty/rhodes/smui/statechart.htm" target="_blank">State Charts</a>.</span><br />
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">I've been carefully sussing out the logic of Chrome's Fullscreen controller into a finite state machine, mainly so that we can get a group to agree on exactly what we think it should be doing. Chrome can go fullscreen in numerous ways: users entering and exiting via a menu or button, web pages making the transition (e.g. when you make a video fullscreen by clicking on it in a page), extensions, a special mode on Mac, and Windows 8 Metro Snap. Most of these include asynchronous transitions, and all API initiated transitions must be serviced (even if we're 'in the middle' of another transition).</span><br />
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">Initially the diagram resembled a flying spaghetti monster, I've been winnowing it down discarding states we can design out of the naive total possibility space. But, it's also much simpler to notate using <a href="http://jcsites.juniata.edu/faculty/rhodes/smui/statechart.htm#clustering" target="_blank">clustering</a> and <a href="http://jcsites.juniata.edu/faculty/rhodes/smui/statechart.htm#history" target="_blank">history</a> offered in state charts.</span><br />
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">BTW, state charts are also included in <a href="http://en.wikipedia.org/wiki/UML_state_machine" target="_blank">UML state machines</a>.</span>Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com3tag:blogger.com,1999:blog-8959356083618071167.post-32584375466859196942012-09-25T11:02:00.000-07:002012-09-25T11:02:01.172-07:00Pointer Lock (Mouse Lock) shipped in Chrome<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-c5TP6I_i5Yc/UGEhTZwxn-I/AAAAAAAAaGo/swdOwSfisXU/s1600/pointer-lock.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://2.bp.blogspot.com/-c5TP6I_i5Yc/UGEhTZwxn-I/AAAAAAAAaGo/swdOwSfisXU/s1600/pointer-lock.png" /></a></div>
<b>Pointer lock</b> has <a href="http://blog.chromium.org/2012/09/enabling-new-classes-of-applications.html" target="_blank">shipped with Chrome 22</a>, it's out of Beta and releasing on time! Fancy demo first, check out Mozilla's <a href="https://developer.mozilla.org/en-US/demos/detail/bananabread" target="_blank"><b>First Person Shooter Demo</b></a>.<br />
<br />
Pointer lock offers the ability to hide the mouse cursor and use movement for controlling the camera without bumping into the edge of the screen or moving off the browser window. I've been working on it for some time, including writing the <a href="http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html" target="_blank">Pointer Lock specification</a>.<br />
<br />
It's been a long path. Things started with early prototypes and <a href="http://www.w3.org/Search/Mail/Public/advanced_search?hdr-1-name=subject&hdr-1-query=Mouse%20Lock&hdr-2-name=from&hdr-3-name=message-id&index-grp=Public__FULL&index-type=t&type-index=public-webevents%20public-webapps&resultsperpage=100&sortby=date-asc&page=2" target="_blank">discussions of mouse lock in standards lists</a> (and <a href="http://www.w3.org/Search/Mail/Public/advanced_search?keywords=&hdr-1-name=subject&hdr-1-query=Pointer+Lock&hdr-2-name=from&hdr-2-query=&hdr-3-name=message-id&hdr-3-query=&period_month=&period_year=&index-grp=Public__FULL&index-type=t&type-index=public-webevents+public-webapps&resultsperpage=100&sortby=date-asc" target="_blank">more, as it was renamed to pointer lock</a>). Not everyone in the browser community was ready to just jump on board. It took some explaining, and still there were the those who think "Browsers are for looking at static documents, not web applications! This API is too powerful for the web." Also, people who wanted more, to the point of impracticality.<br />
<br />
One challenge of specification was that I limited the resolution to be the same as mouse movement events without pointer lock. A direct connection to a high resolution mouse offers higher precision unaltered by an operating systems acceleration, or 'ballistic' algorithms. Sounds great, but how can this be specified, calibrated, and offered across browser vendors and operating systems? I stuck with keeping it simple and producing the exact same mouse movements received today, but without the limits of screen boarders or moving out of an application's focus area. More details in the spec <a href="http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#high-resolution-deltas---high-frequency-updates" target="_blank">FAQ</a>.<br />
<br />
I was pleased when David Humphrey jumped onto the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=633602#c12" target="_blank">Mozilla Issue</a>. He is a professor at Seneca College and <a href="http://vocamus.net/dave/?p=1354" target="_blank">implemented Pointer Lock in Mozilla as a class project</a>. They did great work, and eventually shipped to Firefox 14 a bit before Chrome.<br />
<br />
One of the differences is that Firefox only allows pointer lock when pages have made an element full screen. This provides good security shelter, as Fullscreen had already been rigorously designed, implemented, and tested due to a real security threat (tricking a user to enter data into a website pretending to be another application). It was important to me to ship Chrome with non-fullscreen support on day 1, as I believe it to be a real need and wanted to discover security issues up front. The security policy in Chrome is split between the Chromium and WebKit open source projects, adding to that complexity.<br />
<br />
On the topic of Fullscreen, there was a significant Pointer Lock API re-write in order to be as consistent as possible with the Fullscreen API. They do have many similarities, and are likely to be used at the same time by developers. However, I do lament using the Fullscreen style pointerlockchange and pointerlockerror events to notify a developer of success or failure. In my original specification I used callbacks. The advantage of callbacks is a guaranteed 1 to 1 correspondence of request and response. The events allow for cross talk between different bits code using the API, and are more fragile. On every event, code must validate if the event was due to a related request it had made (which it must keep track of).<br />
<br />
With the help of Yuzhu Shen and others, we shipped an early version of Mouse Lock to Pepper plugins much earlier, including Native Client games. There security concerns were somewhat more relaxed as content using the API had to be published in the Chrome Web Store, as opposed to the open web. Via the store, we could have more control to remove content if it were misbehaving.<br />
<br />
I'm looking forward to seeing new classes of applications implemented on the web using this API. ;)Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com3tag:blogger.com,1999:blog-8959356083618071167.post-24776495316179437132012-05-06T19:24:00.001-07:002012-05-06T19:28:15.904-07:00What!? I had kids?<div class="separator" style="clear: both; text-align: center;">
<a href="http://what-i-had-kids.blogspot.com/" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="238" src="http://1.bp.blogspot.com/-jDcriWiorWE/T6ctomhIloI/AAAAAAAATbA/Jf7D5HyqvI0/s320/what-i-had-kids.JPG" width="320" /></a></div>
I started a new blog, <a href="http://what-i-had-kids.blogspot.com/">What!? I had kids?</a>, because the world needed another blog. And though I love my job I've had less ideas and/or motivation to write them up on Beautiful Pixels recently. I've been spending more time planning on how to have fun with the kids.<br />
<br />
The current article, <a href="http://what-i-had-kids.blogspot.com/2012/05/stroller-on-steps.html">Strollers on Steps?</a> is proper geekery of a topic at the levels you've come to expect from Beautiful Pixels. If you're more into color, try <a href="http://what-i-had-kids.blogspot.com/2012/03/colored-rice.html">Colored Rice</a>, or <a href="http://what-i-had-kids.blogspot.com/2012/03/food-colors-in-bathtub.html">Food Colors in the Bathtub</a>.<br />
<br />
Perhaps some day there will be a magical post about both children and pixels.Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-939332249571620282012-03-12T14:00:00.002-07:002012-03-12T14:04:28.645-07:00Game Developers Conference 2012 presentation: The Bleeding Edge of Open Web Tech<div class="separator" style="clear: both; text-align: center;">
<object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/_adMEEAtDwE/0.jpg"><param name="movie" value="http://www.youtube.com/v/_adMEEAtDwE&fs=1&source=uds" />
<param name="bgcolor" value="#FFFFFF" />
<embed width="320" height="266" src="http://www.youtube.com/v/_adMEEAtDwE&fs=1&source=uds" type="application/x-shockwave-flash"></embed></object></div>
<br />
I presented at GDC last week, and it went well. Here is a <a href="http://www.youtube.com/watch?v=_adMEEAtDwE">pre-recorded version</a> of the talk. You can also check out the <a href="http://goo.gl/RbJOX">notes for the presentation</a>.Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-11071631667112685642012-01-29T00:23:00.000-08:002012-09-24T20:18:16.088-07:00JavaScript Pointer Lock (Mouse Lock) in Chrome Developer Preview<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Y4NUSIgNgOc/TyT5rwNDr7I/AAAAAAAAQyc/RVs4oa6SavI/s1600/q3bsp-pointer-lock-.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="211" src="http://1.bp.blogspot.com/-Y4NUSIgNgOc/TyT5rwNDr7I/AAAAAAAAQyc/RVs4oa6SavI/s320/q3bsp-pointer-lock-.png" width="320" /></a></div>
Mouse Lock is the canonical term for when a game (or other application) removes the mouse cursor from view and interprets mouse motion for something else, e.g. looking around in a 3D world. To date this has not been possible for web applications without a plugin, which makes many game genres and other applications just terrible to use. (e.g. forcing users to drag the mouse button to pan the view, while a native application would use the mouse button for something else, e.g. interacting with the world.).<br />
<br />
Good news: I've been working on a <a href="http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html">w3c specification</a> to address this. The feature is available for developers to experiment with now in Chrome (details below). And, a FireFox implementation is on it's way too, thanks primarily to <a href="http://vocamus.net/dave/?cat=28">David Humphrey using it as a class project</a>.<br />
<br />
Today the first Chrome Canary build is available to try the feature out:<br />
<br />
<ul>
<li>Get a build.</li>
<ul>
<li><a href="http://tools.google.com/dlpage/chromesxs">Chrome Canary</a> builds auto-update daily and install without interfering with your normal installation of Chrome, they're the way to go since they're so easy. Unless your on Linux, where you need to just get a <a href="http://commondatastorage.googleapis.com/chromium-browser-continuous/index.html">recent Linux Build</a>.</li>
</ul>
<li>Enable pointer lock.</li>
<ul>
<li>Navigate to <b>about:flags</b>, find <b>Enable Pointer Lock</b>, and restart (there's a button below).</li>
</ul>
<li>Try a demo.</li>
<ul>
<li><a href="http://media.tojicode.com/q3bsp/">http://media.tojicode.com/q3bsp/</a> is a nice one from <a href="http://blog.tojicode.com/">Brandon Jones</a> and what you see in the screenshot above. It's a quake 3 BSP viewer.</li>
<li>Others are sure to show up soon, minutes after landing the keystone WebKit patch I received a few IMs and emails from excited developers. </li>
</ul>
<li>Go <b>Fullscreen</b>. (more on that later)</li>
<ul>
<li>In Brandon's demo find the fullscreen button in the bottom right corner. (It has to be JavaScript initiated fullscreen, not chrome's "presentation mode".)</li>
</ul>
<li>Allow the site to <b>disable your mouse cursor</b>.</li>
<ul>
<li>This setting is remembered for each site, and can be forgotten in Chrome's preferences / content settings.</li>
</ul>
<li>Read some doc <a href="https://developer.mozilla.org/en/API/Mouse_Lock_API">https://developer.mozilla.org/en/API/Mouse_Lock_API</a>.</li>
</ul>
<div>
There's a lot that will be changing with this. First, I have several issues still to deal with in the WebKit implementation, a security review will certainly find more, and oh yeah we're going to overhaul the spec to be as <a href="http://lists.w3.org/Archives/Public/public-webapps/2012JanMar/0376.html">identical as possible to the Fullscreen spec</a>.</div>
<div>
<br /></div>
<div>
Some have asked if pointer lock will be forever restricted to fullscreen mode. No, in fact by the time the JavaScript bindings ship without developer flags I'm hoping to have removed the restriction, and if not then soon after. The only real requirement is that the user not suffer from a poorly behaving website. At the moment that means if a site spams lock requests that we require a user-gesture (e.g. clicking on the web page content, or pressing a key). Fullscreen currently requires the same, so we hide in it's shadow, but I'll implement the check even in windowed mode.</div>
<div>
<br /></div>
<div>
Chrome 19 is the earliest JavaScript pointer lock could ship without a developer flag, but it's predicated on many things coming into place. However, Native Client apps have been able to use it since Chrome 16.</div>
<div>
<br />
Developers interested in the nitty gritty implementation details can see the chromium bug <a href="http://code.google.com/p/chromium/issues/detail?id=72754">http://code.google.com/p/chromium/issues/detail?id=72754</a>. To follow along, please only star the issue (top left). If you've made awesome demos and add this feature, drop a comment here. ;)<br />
<br /></div>
<div>
Happy locking.</div>Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com2tag:blogger.com,1999:blog-8959356083618071167.post-28417945233231575592012-01-17T22:27:00.000-08:002012-07-18T12:23:03.790-07:00Automatic Screen Window Titles in Bash and Vim<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-WUAE9rJxLUI/TxZfTo424JI/AAAAAAAAQWQ/Lt8mccO4kzA/s1600/screen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-WUAE9rJxLUI/TxZfTo424JI/AAAAAAAAQWQ/Lt8mccO4kzA/s1600/screen.png" /></a></div>
<br />
I finally configured screen to display the list of windows open with useful titles. Here are the few bits I needed<br />
<br />
First, if you don't know what I'm talking about:<br />
I occasionally SSH into work, and when I do I use a program called <a href="http://en.wikipedia.org/wiki/GNU_Screen">screen</a> that can host multiple terminal shells. It can persist those shells and allow me to reconnect if I get disconnected or want to change computers I'm working on.<br />
<br />
BTW, I always start screen with <span style="font-family: 'Courier New', Courier, monospace;">screen -RaAd -S x</span><br />
<br />
<ul>
<li>-a include all capabilities ...</li>
<li>-A Adapt the sizes of all windows ...</li>
<li>-d -R Reattach a session and if necessary detach or even create it first.</li>
<li><span style="font-family: inherit;">-S <name> Name of the session</name></span></li>
</ul>
<br />
<br />
The default configuration makes it hard to keep track of how many terminals you have running, and what they are doing. I made three changes that help my personal workflow:<br />
<br />
<b>Add a persistent display at the bottom of screen</b><br />
In .screenrc I appended this line:<br />
<span style="font-family: 'Courier New', Courier, monospace;">hardstatus alwayslastline "%{=b}%{G} Screen(s): %{b}%w %=%{kG}%C%A %D, %M/%d/%Y "</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: inherit;">Source: </span>Julien Chaffraix, a coworker.<br />
<br />
<b>Set the current directory name as the window title from bash</b><br />
In .bashrc I appended these lines:<br />
<br />
<span style="font-family: 'Courier New', Courier, monospace;">if [ "$TERM" = "screen" ]; then</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> screen_set_window_title () {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> local HPWD="$PWD"</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> case $HPWD in</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> $HOME) HPWD="~";;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> ## long name option:</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> # $HOME/*) HPWD="~${HPWD#$HOME}";;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> ## short name option:</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> *) HPWD=`basename "$HPWD"`;;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> esac</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> printf '\ek%s\e\\' "$HPWD"</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> }</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">fi</span><br />
<br />
<br />
You can see that I'm using a short name for each directory, e.g. "chromium" instead of the full path or suffix path after my home directory, e.g. "~/projects/chromium". You can toggle the commented lines to try alternates.<br />
<br />
Source: <a href="http://unix.stackexchange.com/questions/6065/gnu-screen-new-window-name-change">http://unix.stackexchange.com/questions/6065/gnu-screen-new-window-name-change</a>.<br />
<br />
<b>Set the name of the buffer I'm editing in vim</b><br />
In .vimrc I appended these lines ("To create ^[, which is escape, you need to enter CTRL+V < Esc"):<br />
<br />
<span style="font-family: 'Courier New', Courier, monospace;">if &term == "screen"</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> let &titlestring=expand("%:t")</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> set t_ts=^[k</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> set t_fs=^[\</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> set title</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">endif</span><br />
<span style="font-family: inherit;"><br /></span><br />
<span style="font-family: inherit;">Source: </span><a href="http://vim.wikia.com/wiki/Automatically_set_screen_title">http://vim.wikia.com/wiki/Automatically_set_screen_title</a>.Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com2tag:blogger.com,1999:blog-8959356083618071167.post-35914501696926825082011-11-02T22:46:00.000-07:002011-11-30T09:55:15.313-08:00New Game Conference Day 2<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-HOgkn72oANw/TrDO3KL5bfI/AAAAAAAAOIo/ducigN36Rdg/s1600/newgame-logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="200" src="http://3.bp.blogspot.com/-HOgkn72oANw/TrDO3KL5bfI/AAAAAAAAOIo/ducigN36Rdg/s200/newgame-logo.png" width="193" /></a></div>
The sequel to my <a href="http://beautifulpixels.blogspot.com/2011/11/new-game-conference-day-1.html">Day 1</a> report from the New Game, HTML5 Games, conference:<br />
<br />
The quality per session has been really great, and the good news is that <a href="http://www.youtube.com/NewGameConference">Videos are on the way</a>, so if you weren't there, don't fear. Also, <a href="http://confswag.com/2011/newgame/">here are most of the slides</a>.<br />
<br />
Zynga kicked today off. They're dedicated to HTML5 games, reaching lots of people, and moving the web forward. Paul Bakaus pointed out that classic games devs get people to upgrade hardware; new web games need to get users to update to modern browsers, <i>"Please help me upgrade the web"</i>.<br />
<br />
Zynga has also open sourced some rather handy sounding tools: <a href="https://github.com/zynga">https://github.com/zynga</a> including audio fixes/hacks for ios, viewport control, custom viewport scrolling assist libraries.<br />
<br />
Grant Skinner has put out tools too: <a href="http://easeljs.com/">Easle.js</a>, flash like api primarily to draw to Canvas 2D, though he demoed swapping out rendering engines to e.g. DOM & flash too. He also demoed exporting content from Flash.<br />
<br />
Spil had a good talk about developing for and publishing in Asia; primarily challenges in hosting, distribution, and localization (beyond just text).<br />
<br />
Opera's Erik Möller showed off WebGL support in Opera, including a demo off a TV set top box hardware kit.<br />
<br />
Mozilla has a cool project taking a spin on their old question of "Are We Fast Yet?" and changing it to "Are We Fun Yet?" Their <a href="https://wiki.mozilla.org/Paladin">Palidin</a> effort is designed to improve that answer. They're building an open source web tech game engine and implementing platform features such as Mouse Lock and Game Pad. Similar in ways to the Chrome Games effort I'm part of.<br />
<br />
Rachel Blum of Chrome (ex Blizzard) did a great rundown of Chrome as a platform for games, now and in the future.<br />
<br />
Overall, there was a lot of energy, excitement, and potential shown off. Several presenters demonstrated that they are monetizing <i>now</i> using some of this tech. Others that we still have lots of potential in tech that's not quite ready for everyone.<br />
<br />
I'm psyched about fixing what needs fixing to make the web platform awesome for games. And tomorrow there's the <a href="http://www.w3.org/community/games/2011/11/02/w3c-games-community-group-summit-november-2011-agenda/">W3C Games Community Group Summit</a> which I'm hoping will be a great forum for prioritizing that work.Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-22795655913968343192011-11-01T22:17:00.000-07:002011-11-30T09:54:50.001-08:00New Game Conference Day 1<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-HOgkn72oANw/TrDO3KL5bfI/AAAAAAAAOIo/ducigN36Rdg/s1600/newgame-logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="200" src="http://3.bp.blogspot.com/-HOgkn72oANw/TrDO3KL5bfI/AAAAAAAAOIo/ducigN36Rdg/s200/newgame-logo.png" width="194" /></a></div>
<a href="http://www.newgameconf.com/">New Game's first HTML5 Game Conference</a> kicked off today. It's an intimate and comfy affair with just a few hundred devs all packed in one large room. It's easy to mingle in breaks, and we had lunch all together on the lawn at Yerba Buena park.<br />
<br />
Rich Hilleman, EA, kicked things off with a great <a href="http://www.youtube.com/watch?v=mwgsqEPC6Kc&feature=plcp&context=C2c906ADOEgsToPDskL3nK7sqVWmMiL2kJjn3WXf">keynote</a> discussion of what it takes to build out a game platform and how things are quite different doing so with open standards tech. It was inspiring, but also underscores the challenge of building a 'platform' when no one controls it. Who will champion a killer app? Who will define the capabilities and expectations for developers and customers, and do quality assurance? Who will make certain we can monetize and distribute? Well, no one, and everyone.<br />
<br />
The other business heavy presentation was from Justin Quimby of Moblyng. They've already been at this a few years, with the goal of using web tech to reach a huge number of devices, primarily mobile. His main message was that of the many challenges that await after you've build a compelling game. His recommendation was primarily technical conservatism and diversification of services (e.g. payment solutions, metrics, and distribution).<br />
<br />
But the majority of the presentations were technical. The biggest points and themes:<br />
<br />
<ul>
<li>Garbage Collection a major performance issue! Several techniques to avoid this, including careful JS coding, all memory out of array buffers.</li>
<li>Sound! Much love for <a href="https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html">Web Audio API</a>, but needs support in all browsers.</li>
<li>Many developers using high level frameworks and languages and cross compiling to HTML/JS. E.g. <a href="http://code.google.com/p/playn/">PlayN</a> in Java, <a href="http://www.mandreel.com/">Mandreel</a> in C++.</li>
<li>WebGL standard update coming, major focus on security and robustness.</li>
<li>2/3rds of attendees from Web Dev background: <a href="http://goo.gl/PSTrU">http://goo.gl/PSTrU</a></li>
</ul>
Lots of good coverage on <a href="http://twitter.com/#!/search/%23ngc11">twitter #NGC11</a><br />
<div>
And a live blog here: <a href="http://thejacklawson.com/2011/11/new-game-conf-liveblog/index.html">http://thejacklawson.com/2011/11/new-game-conf-liveblog/index.html</a></div>
<div>
<br /></div>
<div>
Slides for many presentations are already posted if you dig around, but I saw cameras so I suspect we'll see a post conference set of <a href="http://www.youtube.com/NewGameConference">links to videos</a>.<br />
<br />
[<a href="http://beautifulpixels.blogspot.com/2011/11/new-game-conference-day-2.html">day 2 post</a>]</div>
<br />Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-34228537983865088892011-10-09T22:38:00.001-07:002011-10-09T22:38:53.731-07:00Go Board Game with Google Docs<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-KBQhALRoVDg/TpJhPMNKaCI/AAAAAAAANMg/EIGWhl0pnUg/s1600/go.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="274" src="http://3.bp.blogspot.com/-KBQhALRoVDg/TpJhPMNKaCI/AAAAAAAANMg/EIGWhl0pnUg/s320/go.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Go, played on Google Docs</td></tr>
</tbody></table>
I've been satiating my asynchronous game play needs recently by playing Go via Google Docs. I figured someone else must of thought of that already, and they did: Edward Donohue had a spread sheet template available, which I modified into my <a href="http://goo.gl/482TD">Go Board Game Template</a>.<br />
<br />
The cool thing is that Google Docs comes with great features already in place:<br />
<br />
<ul>
<li>Version history</li>
<ul>
<li>Allows you to roll back time to recall what has been happening in the game.</li>
</ul>
<li>Change Notifications</li>
<ul>
<li>Allows you to make a move, and your opponent will automatically get an email notification that links to page showing what has changed.</li>
<li>(Set this up by going to |Tools| |Notification Rules|)</li>
</ul>
<li>Auto formatting</li>
<ul>
<li>Makes the board look like a bunch of black and white pieces instead of playing in text.</li>
</ul>
<li>Works anywhere, even mobile</li>
</ul>
<div>
Also, you can do odd stuff, like make this <a href="http://goo.gl/qb3Z3">tiling (toroidal) go board</a>. People have played on tiling boards before, the simplest way is to just duplicate any moves on the left and top edge to the right and bottom. But, in docs, .</div>
<div>
<br /></div>
<div>
Try out the templates by making a copy so you can edit in them. Select a square and enter a 'w' or 'b' character. Have fun!</div>
<div>
<br /></div>
Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com6tag:blogger.com,1999:blog-8959356083618071167.post-27095627742091852872011-10-09T22:38:00.000-07:002014-04-29T08:32:29.100-07:00Gmail Follow Up ScriptI have lots of email I want to follow up on later or put aside for some time. I use Gmail these days, and I miss Outlook's built in feature for this. Well, there's a solution, the apps script team posted <a href="http://gmailblog.blogspot.com/2011/07/gmail-snooze-with-apps-script.html">a script for "snoozing" email</a>. My modified take on it is this gmail <a href="http://goo.gl/Cj47u"><b>Follow Up script</b></a> doc.<br />
<br />
With follow up you can:<br />
<br />
<ul>
<li>Get emails out of your inbox, and out of sight, for a specified amount of time, and then have them return.</li>
<li>Send emails you want to make sure you get a response on, flag them for follow up and have them resurface in your inbox again after a given amount of time to ensure they were handled.</li>
</ul>
<br />
<br />
The implementation summary is: You can have javascript code run on a Google server at a regular interval that manipulates your gmail messages. You do so with <a href="http://www.google.com/script/start/" target="_blank">google apps script</a>.<br />
<br />
I modified the original in a few ways:<br />
<br />
<ul>
<li>I added "hours" to the "days" and "weeks"</li>
<ul>
<li>At first I thought it was overkill. But, no, it's mighty handy in a work day to put off an email till the afternoon when you think someone else should have replied by then. Or just to clear your inbox rapidly so you can concentrate on the top items for the next hour.</li>
</ul>
<li>I adjusted the label names to be more keyboard shortcut friendly</li>
<ul>
<li>To move an item out of my inbox and have it reappear tomorrow, I type the keys, "v1d" enter. That's |move|, and then enough to match the label "FollowUp-1days".</li>
</ul>
<li>I use the "quick links" lab in gmail to view all messages pending follow up</li>
<ul>
<li>Sadly there's no way to roll up multiple labels in gmail, else the hierarchical labeling would have solved this. Anyway, details in the doc for using quick links.</li>
</ul>
</ul>
<div>
Some notes:</div>
<div>
<ul>
<li>Draft messages can be brought back to to the inbox, to complete and or send at a later time.</li>
<li>Muted messages can be brought back too, disabling the mute at that time. So you can let a firestorm thread rage on for a few hours before reviewing it in it's entirety instead of being interrupted constantly as replies come in.</li>
<li>I sometimes leave notes to myself as to why I marked this message for follow up. One way is to start a reply draft and then blank out the To: line so it's not accidentally sent.</li>
<li>It's handy when you send a message and want to ensure you get a reply back.</li>
</ul>
<div>
Now that I have this tool, I use it a lot a lot to rapidly simplify my inbox. Check it out: <a href="http://goo.gl/Cj47u"><b>Follow Up script</b></a></div>
</div>
Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com9tag:blogger.com,1999:blog-8959356083618071167.post-91674771098588842292011-08-23T23:25:00.000-07:002011-08-23T23:25:24.796-07:00Casual Connect 2011 HTML5 Games Presentation<iframe width="400" height="255" src="http://www.youtube.com/embed/IlMkjrqTTRI" frameborder="0" allowfullscreen></iframe><br />
<br />
My <a href="http://cc-2011-html5-games.appspot.com">Casual Connect 2011 HTML5 Games Presentation</a> was recorded, and the 30 minute <a href="http://casualconnect.org/lectures/design/super-happy-modern-html5-browser-games-vincent-scheib/">video</a> is up.<br />
<br />
I discuss the current availability of some key HTML5 features, overview the browser tech being used today in games, and touch on monetization and distribution. Lots of <a href="http://cc-2011-html5-games.appspot.com/#33">resource references</a> towards the end.<br />
<br />
The next best way to learn more is to come to the <a href="http://www.newgameconf.com/">New Game Conference</a> in November.Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-2946143714630147652011-07-02T00:19:00.000-07:002011-07-02T07:36:33.823-07:00Game Jam TipsI've done a few game jams. At Google, I've done a few at work, and been asked for tips on running them internally and externally. Thanks <a href="http://blog.sethladd.com/2011/07/14-tips-for-successful-html5-game-jams.html">Seth Ladd</a> for nudging me to post. So, why not jot some thoughts down here:<br />
<br />
Prepare, and make sure participants are prepared. You want to spend the jam making awesome, not doing the boring stuff:<br />
<br />
<ul><li>Publicize frameworks in advance and encourage attendees to come with 'hello world' games already under their belt so they can hit the ground running. Possibly include a super simple template of our own that isn't a 'framework', but just a tiny simple example.</li>
<li>Publicize easy / free tools for e.g. audio & 2D drawing. (e.g. Audacity & Paint.Net)</li>
<li>Publicize source control and encourage teams to already know how to use it, set it up in advance, and have made a trivial pull, edit, push cycle.</li>
<li>Publicize game hosting tech (appengine, nodeJS) and point to relevant examples (Well, for web games)</li>
</ul><br />
Hold something back until the Jam - usually the theme. Generate a surprise theme that balances creative license and enough constraint to remove the 'blank page' effect.<br />
<br />
Decide to allow pre-formed teams or not. Most Jams I've been in discouraged pre-formed teams or game concepts. Instead, we brainstormed them up, pitched them to the wide crowd, and formed small teams to work on the top ideas. Pros and cons either way, but I've enjoyed the mixer style.<br />
<br />
Small teams tend to work out much better than large. E.g. 2 or 3 coders. Communication is a killer on a tight schedule.<br />
<br />
Have an art plan. Either set expectations that people should work with minimal art (e.g. procedural, 'retro' lo-fi-pixel-junk, or freely available stock), have artists and a plan for how to get art out quick, or pre made art. Some contests have run in two phases of 'prepare art' and then 'make games using only prepared art'.<br />
<br />
Encourage rapid prototyping development practices! Games should be functional half way through!!! They'll need the second half for polish. People always always always blow this and mis-estimate. Encourage frequent re-prioritization of what people are working on. One good technique is have a team list out the top few tasks, rank `em, and have people work on those and only those. Don't work on anything unless it's an agreed top priority.<br />
<br />
Eat, sleep, don't try to mash it all out. Taking short breaks through the day let's you get Meta, re-evaluate progress and priorities, and plan. Sleep helps you make the remaining time more effective.<br />
<br />
Don't make it a contest, but if you do, run several wildly different categories. E.g. most original, best use of new tech, most hilarious. Don't just have "the best".<br />
<br />
Plan for games to have more work done after the Jam, and how they will be publicized. Can teams update links, images, YT videos, etc?<br />
<br />
Capture the presentations at the end, e.g. video recording. Snapshot the code and art too. (Good reminder, <a href="http://mahemoff.com/">Mike Mahemoff</a>)<br />
<br />
Have fun. If it's not fun... do something fun. ;)Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-45617574989133635712011-03-09T13:36:00.000-08:002011-03-09T13:36:52.520-08:00GDC2011 Presentation: HTML5 and Other Modern Browser Game Tech<div style="width:425px" id="__ss_7208766"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/vincent_scheib/html5-and-other-modern-browser-game-tech" title="HTML5 and Other Modern Browser Game Tech">HTML5 and Other Modern Browser Game Tech</a></strong> <object id="__sse7208766" width="425" height="355"> <param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=html5forgamespost-110309152642-phpapp02&stripped_title=html5-and-other-modern-browser-game-tech&userName=vincent_scheib" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse7208766" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=html5forgamespost-110309152642-phpapp02&stripped_title=html5-and-other-modern-browser-game-tech&userName=vincent_scheib" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed> </object></div>Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com4tag:blogger.com,1999:blog-8959356083618071167.post-38668291110962170862011-03-08T20:54:00.000-08:002011-03-09T12:57:39.278-08:00GDC 2011 Report<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-x4Bhh2G5kIg/TXcH2MxAEjI/AAAAAAAAFxM/b4Auexzqd5A/s1600/gdc2011.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="180" src="http://2.bp.blogspot.com/-x4Bhh2G5kIg/TXcH2MxAEjI/AAAAAAAAFxM/b4Auexzqd5A/s400/gdc2011.PNG" width="24" /></a></div>Some of my observations from GDC 2011:<br />
<br />
I've been mispronouncing <a href="http://en.wikipedia.org/wiki/Bokeh">Bokeh</a> for years, and <a href="http://beautifulpixels.blogspot.com/2008/03/higher-fidelity-depth-of-field-effects.html">posted</a> <a href="http://beautifulpixels.blogspot.com/2008/11/motivating-depth-of-field-using-bokeh.html">before</a> about how there's a lot of room for improvement vs what's common on PS3 and Xbox 360. Well, it's all the rage these days. E.g. check out the <a href="http://www.youtube.com/watch?v=n3XeCHywNYM">Unreal demo</a> and <a href="http://www.gameinformer.com/b/news/archive/2011/03/04/epic-shows-off-impressive-unreal-tech.aspx">stills</a>. Blur alone was a topic AMD discussed on DX11 day, discussing perf and memory optimizations of the heat distribution method from Kass et al at Pixar.<br />
<br />
Tessellation and Displacement Mapping were put to good use in a variety of places too, e.g. terrain in Battlefield 3, character morph in Unreal demo.<br />
<br />
On a much different note, I spent most of the rest of my sessions in design and rant topics. Much of that is hard to summarize, but here are some bits:<br />
<br />
<a href="http://www.neogaf.com/forum/showthread.php?t=423494">Trip Hawkins quote</a> from the Social Rant: "Think more about the browser. The browser will set you free." after he described challenges Nintendo, Apple, etc have presented for game developers in the form of license agreements.<br />
<br />
In general I was disappointed by the Social Game Devs Rant back, in that no strong defense was made for social games. Much of what was discussed was the same anti slot machine techniques we've already heard.<br />
<br />
The Experimental Game Design session had two games with recursion build in. One spatially, e.g. the level had a model of the level in it, and you can manipulate objects from the different scales. The other “inside a star filled sky” with the player, enemies, and power ups all agents but also levels that can be entered and ascended out of.<br />
<br />
[update] I forgot to mention user generated content. Andy Schatz (Pocketwatch Games / Monaco) discussed it and pointed out his site: <a href="http://hellodotdotdotgoodbye.com/">http://hellodotdotdotgoodbye.com/</a> (cool, simple idea I keep being drawn back to) and others <a href="http://infiniteblank.com/">http://infiniteblank.com/</a>, <a href="http://playpen.farbs.org/">http://playpen.farbs.org</a>.<br />
<br />
I've not been keen on the 3D wave in cinema, TVs or games. So, I thought I'd better take a good look at the Nintendo 3DS which is the best option I've seen yet. Autostereoscopic works nicely in a personal device like a hand held, and I can't stand glasses. The 3DS works well if it’s close to your face, not as well at my comfortable playing distance ~1.5 ft. Was very cool to see, but I’m concerned about eye strain. I played a few demos looking for any where the stereo effect really helped them. But none really stood out, and were all just as nice to play with the effect turned off. But, the <a href="http://gizmodo.com/#!5566722/the-3dss-secret-best-upgrade-wireless">always on wireless</a> feature to exchange data between games seemed cool.<br />
<br />
Google (I work there on Chrome) had a stronger presence than previous years with 2 tutorial days, booth, and some additional appearances. I gave a talk "HTML5 and Other Modern Browser Game Tech" (slides up soon, promise) which was <a href="http://www.informationweek.com/news/internet/google/showArticle.jhtml?articleID=229219535&subSection=All+Stories">received</a> <a href="http://www.pcgamer.com/2011/02/28/google-demo-pc-gaming-in-a-browser/">well</a>.<br />
<br />
I got a chance to meet up with friends, including the guys at <a href="http://activate3d.com/">Activate 3D</a>, who had a cool demo running on Kinect. Being able to jump, swing on ropes, zip lines, monkey bars, etc, with video motion capture is pretty cool. They need to update their website's video, they had a nice rooftop race demo running.<br />
<br />
David Jaffe pointed out that Consoles are way too slow to resume playing your game -- why can my DS pop back instantly and my plugged into the wall console takes minutes.<br />
<br />
And finally, I'm inspired to do more design work and game Jams. Especially Stone Librande's talk 15 Games in 15 years, where he described creating games for himself and children was superb. Build fun in your life.Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-77690947365811943852011-02-22T20:47:00.000-08:002011-02-22T20:47:41.556-08:00Get Ready for GDC 2011!<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/--WNyippRyCM/TWSO5SFcQeI/AAAAAAAAFuM/JV_TVuQQjb8/s1600/HTML5_Logo_128.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/--WNyippRyCM/TWSO5SFcQeI/AAAAAAAAFuM/JV_TVuQQjb8/s1600/HTML5_Logo_128.png" /></a></div>Here comes GDC!<br />
<br />
I'm presenting at GDC this year on <a href="http://schedule.gdconf.com/session/12502">HTML5 and Other Modern Browser Game Tech</a>. Still busy getting slides ready, I've a lot of tech I want to cover... WebGL, canvas 2d, svg, web sockets, storage, audio, Native Client, etc. Whew. Well, it deserves a bit logo off on the right. ;)<br />
<br />
Google's going to make a good showing this year. Check out our <a href="http://www.google.com/events/gdc/2011/agenda.html">GDC Agenda</a>.<br />
<br />
Here's a <a href="https://www.google.com/calendar/b/0/embed?src=bdsmf82ejdng803qok5mlmsn4s@group.calendar.google.com&ctz=America/Los_Angeles&gsessionid=I2RHuYsUucUbVIfLttHVcg&mode=DAY&&dates=20110228/20110304">list of sessions</a> that caught my eye when I skimmed through. Did I miss any awesome session? Let me know in comments. ;)<br />
<iframe frameborder="0" height="400" scrolling="no" src="https://www.google.com/calendar/b/0/embed?showCalendars=0&mode=AGENDA&height=600&wkst=2&bgcolor=%23FFFFFF&src=bdsmf82ejdng803qok5mlmsn4s%40group.calendar.google.com&color=%232952A3&ctz=America%2FLos_Angeles&dates=20110228%2F20110304" style="border: solid 1px #777;" width="100%"></iframe><br />
(you can add it to your own calendar view by putting bdsmf82ejdng803qok5mlmsn4s@group.calendar.google.com into your "other calendars")<br />
<br />
See you there.Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com2tag:blogger.com,1999:blog-8959356083618071167.post-34239140753003032622011-02-22T20:08:00.000-08:002011-02-22T20:08:16.827-08:00Buzz and Twitter and Reader, oh my<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-JJUFazdzcBI/TWSIAi0hf4I/AAAAAAAAFuE/cJ21v-BS2B0/s1600/t.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-JJUFazdzcBI/TWSIAi0hf4I/AAAAAAAAFuE/cJ21v-BS2B0/s1600/t.png" /></a></div>I write more often on Buzz/Twitter, and not so much here these days.<br />
<br />
<a href="http://www.google.com/profiles/117022097663427079142#buzz">Follow Me on Buzz</a> for more frequent short posts. <a href="http://twitter.com/vincent_scheib">Twitter</a> and <a href="http://buzz.googleapis.com/feeds/117022097663427079142/public/posted">RSS Feed</a> available too if you don't use Buzz.<br />
<br />
<a href="http://www.google.com/reader/shared/11007145012465280398">Follow me on Reader</a> to see links and RSS posts I share.Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com1tag:blogger.com,1999:blog-8959356083618071167.post-86635471489544014722011-02-08T01:01:00.000-08:002011-02-08T01:01:00.246-08:00One Year at Google<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_EtWpnuFRcjk/S3wb9I8m31I/AAAAAAAABv4/Z5_6RTmeCto/s1600-h/ChromeLogoPixeled.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://1.bp.blogspot.com/_EtWpnuFRcjk/S3wb9I8m31I/AAAAAAAABv4/Z5_6RTmeCto/s320/ChromeLogoPixeled.PNG" /></a></div>I've been at Google one year.<br />
<br />
A lot has happened, but the vision stays the same. I and others are working on improving tech to support great applications on the web. Better performance, use of GPUs, 3D, and much more (audio, connectivity, device access, monetization, discovery, ...).<br />
<br />
Google continues to build it's engagement with game developers. We're already engaging on multiple platforms (Android, Chrome, Google TV) and offering useful services (YouTube, AppEngine, Analytics, Ads) and building out great tech.<br />
<br />
We've also continued hiring great game developers, and I'm humbled every day by the ones I'm working with. (e.g. people keep doing double takes that Bill Budge is working a few cubes down.) Ian Lewis has hit his stride and is doing a great job driving Game Developer Relations (btw: <a href="http://sites.google.com/site/googdevreljobs/">hiring</a>) (and, well, all of Google is hiring really, even back in the Research Triangle NC, drop me a line if you'd like help applying).<br />
<br />
Chrome GPU team is my home, though I'm still excited about Chrome OS where I started. There's a lot of core infrastructure for all GPU features, some of which are starting to ship, like <a href="http://www.chromeexperiments.com/webgl/?f=webgl">WebGL</a>.<br />
<br />
20% time is a great perk at Google. Not everyone uses it, but I take a lot of it to help Game Developer Relations out and also do some game experiments.<br />
<br />
Google was the hardest job I've joined yet, though. There's so much to learn, so much great tech and products, tons of fascinating things to look into, and so many rather smart folk. I love the culture, the positive "do the right thing" attitude, and that there are engineers all the way to the top. I'm excited for year 2. ;)Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com0tag:blogger.com,1999:blog-8959356083618071167.post-80606549026186674912011-01-20T21:54:00.000-08:002011-01-21T08:18:28.916-08:00Tools of a DayI use these tools daily:<br />
<ul><li><a href="http://www.google.com/chrome/intl/en/landing_chrome.html?hl=en">Chrome</a></li>
<ul><li>Profiles (I run multiple, work/personal/spouse with --user-data-dir="C:\example")</li>
<li>Themes (Easly tell profiles apart) e.g. <a href="https://tools.google.com/chrome/intl/en/themes/theme_at_hedgehoginthefog.html">A</a> <a href="https://tools.google.com/chrome/intl/en/themes/theme_at_yulia.html">B</a> <a href="https://tools.google.com/chrome/intl/en/themes/theme_at_pukpuk.html">C</a></li>
<li><a href="https://chrome.google.com/extensions/detail/oadboiipflhobonjjffjbfekfjcgkhco">Chrome to Phone</a></li>
</ul><li><a href="https://mail.google.com/">Gmail</a></li>
<ul><li>Google Chat with AIM linked</li>
<li>Buzz (Easiest for quick public posts, but much richer than Twitter, Great for private posts)</li>
<ul></ul></ul><li><a href="http://docs.google.com/">Google Docs</a> (I'm so loving the cloud - any machine, same time, always auto saved, revision history, on my phone, sharable)</li>
<li><a href="http://reader.google.com/">Google Reader</a></li>
<li><a href="http://www.google.com/latitude">Google Latitude</a> (Friend at work yet? What's the wife up to?)</li>
<li><a href="http://listen.googlelabs.com/">Google Listen</a> (podcasts)</li>
<li><a href="http://maps.google.com/">Google Maps</a></li>
<li><a href="http://www.delicious.com/">Delicious.com</a></li>
<li><a href="http://git-scm.com/">Git</a> (source control, easy local branches)</li>
<li><a href="http://www.scootersoftware.com/">Beyond Compare</a> (file and folder comparison + FTP)</li>
<li><a href="http://www.slickedit.com/">Slick Edit</a> (Linux)</li>
<li><a href="http://notepad-plus-plus.org/">Notepad++</a></li>
<li><a href="http://microsoft.com/VisualStudio">Visual Studio</a></li>
<li><a href="http://www.cygwin.com/">Cygwin</a></li>
<li><a href="http://technet.microsoft.com/en-us/sysinternals/bb896653">Process Explorer</a></li>
<li><a href="http://mixapp.com/">Mixapp.com</a> (Music, shared with friends, think Pandora you can control + others)</li>
<li>Bike ;) the commute is the only exercise I get.</li>
</ul><div>How about you, anything interesting?</div>Vincent Scheibhttp://www.blogger.com/profile/14142807255428586912noreply@blogger.com6