Chris Bowen's Blog

Development Practices, Tools, Technology, and Community

Posts
  • Chris Bowen's Blog

    September Roadshow - Summary and Content

    • 2 Comments

    RoadshowBanner

    Thanks to everyone who came out for the various stops on our September Roadshow!  We had a blast as always touring through New England and upstate New York.

    Roadshow Content

    As promised, we've assembled the "visually stunning" slides, "world-class" code, and other resources from the sessions and have made them available for download. 

    This time, we're putting the beta of Windows Live SkyDrive through its paces.  SkyDrive is a new Live service where you can post your own content (currently up to 500 MB) to private, shared, or public folders accessible over the web.

    You can access the September Roadshow content at:

    http://cid-7e4046472a1cd934.skydrive.live.com/browse.aspx/Bob%20|0%20Chris%20Roadshow%20-%20Sep%202007

    Roadshow Facebook Group

    As we mentioned during the events, we're experimenting with Facebook to see how well it could be leveraged for professional community support.  So, we've create a "Bob & Chris MSDN Roadshow" group and welcome all northeast Roadshow attendees to join!

    The group is growing well, with the idea that attendees can interact with other attendees across the northeast, have access to shared content and discussions, and post ideas for future Roadshows and other events in the region.

    Have a look and feel free to throw a friend invitation to us as well!

    Chris Bowen's Facebook profile

    The Next Roadshow...

    We're looking toward the first two weeks of December to return to our road warrior ways.  Keep an eye on our blogs for details as we determine dates and locations.

     

    -Chris

  • Chris Bowen's Blog

    New User Group in Maine!

    • 2 Comments

    BAND I'm happy to say that Maine will be getting a brand new user group in Bangor! 

    The well-named BAND (Bangor Area .Net Developers) will meet (for "gigs") monthly to talk about current developer topics with a focus on current technology that's ready for practical use.

    Check out their website at http://www.bangordevelopers.com

    This month's gig:

    Tuesday, Jan 22, 6:00-8:00 pm

    Hampton Inn, Bangor (directions)

    Summary of the Bob and Chris Roadshow from December - Jeff Hall

    Did you miss the "Bob & Chris' MSDN Roadshow" event held in Westbrook on December 11?  Jeff Hall, a fellow Bangor-area .NET developer, will be giving a summary of the event that talked about:

    • "Visual Studio 2008: The Accelerated AP/Honors Class"
    • "The Multi-Tenant Data Architecture"
    • "'You Are The Strongest LINQ!': Effective Language Integrated Query"
    • "Expression Studio for the Designer-Wannabe"

    Jeff is a developer for Occupational Health Research in Skowhegan, with experience including ASP.NET, WinForms, unit testing and deployment.  Come meet other area .NET developers and check out the latest .NET development concepts and tools.  Plus enter the random drawing for your own copy of Microsoft Expression Web, among other cool door prizes!

    6:00-6:30 Warm-ups - Pizza, soda and casual discussion

    6:30-6:45 MC Introduction - User group update

    6:45-7:45 Main Event - Summary of the Bob and Chris Roadshow from December

    7:45-8:00 Last Call - Q&A, Prize Drawing, Closing, Cleanup

    Register Online

    I'm planning to speak with the group in the March/April timeframe.  Maybe I can swing by Steven King's house for some author-to-author talk?  ;)

    -Chris

  • Chris Bowen's Blog

    The December Roadshow Concludes

    • 2 Comments

    RoadshowBanner

    Bob and I have put the wraps on the December Roadshow, having spent the last two weeks traveling many miles (over 1,400 total) to bring a technical bounty to five northeastern cities. 

    We'd like to extend a large "Thank You!" to everyone who attended and made this in many ways our best series to date!

    Update - Read Bob's Roadshow summary, too!

    I was also pleased with the Visual Studio 2008 InstallFests.  They worked well attached to the Roadshow series as ways to cap of a day of learning with some fun and networking.  Many thanks to Bob for stepping up to help, though he did take undue advantage of hapless noobs in Halo 3.  ;)

    I'll post a separate follow-up for the InstallFests soon.

    Presentations and Content Available

    We're leveraging SkyDrive to store our slides and code from the sessions.  Bob and I have posted our content to our respective SkyDrives:

    Chris' Content:
    "Visual Studio 2008" and "The Strongest LINQ"

    Bob's Content:
    "Multi-Tenant Data Architecture" and "Expression Studio"

    BTW, it's easy to get your own SkyDrive with free online space to store your files privately and/or share them with others (named or anonymous.)

    Rochester, NY - 12/4

    Rochester, NYFor our first stop, we packed tons of stuff and drove our huge black "government-issue" Suburban through the white-out conditions in the Utica area to make it to Rochester.  Our Rochesterian (I'm making up words now) attendees were seemingly unfazed by all the snow, and drifted in for the show.

    As with Burlington and Hartford, we had a new venue in Rochester - the RIT campus itself!  Thanks to the very helpful Cheryl McLean, everything went smoothly (though Bob and I had to ask a few students where to go.)

    Burlington, VT - 12/6

    From Rochester, we traveled to less-snowy Burlington, VT (never thought I'd say that.)  Our new venue, Vermont Technical College in Williston, was also great.  Special thanks to Julie Lerman for introducing us and to Mike Soulia at VTC who took things from there.

    Conveniently just down the street from Starbucks (whom we surprised with our morning "5 boxes of coffee" order), we'll be back!

    Hartford, CT - 12/10

    Hartford, CT The following Monday saw ice in Massachusetts, but Bob and myself in Hartford, Connecticut.  We had strong attendance at UConn's Hartford-based Financial Accelerator facility. 

    An interesting L-shaped space, overlooking a simulated trading floor (you can see the top of it in the picture at left,) we had a great show with an engaged audience asking insightful questions and ducking errant orange ball throws in exchange.

    Portland, ME - 12/11

    On Tuesday we returned to our trusty location at techMAINE (formerly MESDA) in Westbrook.  As always, the room was packed with an attentive crowd, more than happy to help exhaust our supply of orange balls. 

    Great questions and a good day!

    Waltham, MA - 12/13

    A good (3/4) day of content followed by a not-so-good drive home.

    Though we worked through lunch and had planned a 3:00 finish, we still had to cut the day one session short since the snow arrived earlier than originally expected by the weather folks.

    THANK YOU to everyone who braved the weather to join us. 

    Bob and I especially hope that those of you who chose to stay through the last session arrived home safely and with as little hassle as possible.  If you had a long drive home, I'll commiserate with you.  Things got so bad on Route 20 that I ended up waiting it out halfway home and finally drove in late that night.

    Bob plans to record his session on Expression Studio that we had to cut and will post that when it's ready.

    I don't have the numbers handy, but I was definitely impressed by how many people came out for the show, knowing snow would join us at day's end.  Again, thanks for coming.

    Homework (for Me, not You)

    I have some questions that I collected from the Roadshow and will post answers as a FAQ later on.  If you have any other questions from the sessions, please feel free to ask!

    The Next Time...

    Look for us to return in March with a brand new name and a few format changes too (but don't worry, our senses of humor will remain intact (well, we think that's a good thing.))

    Enjoy the holidays and have a great new year!

    -Chris

  • Chris Bowen's Blog

    World of Warcraft Meets Visual Studio 2008

    • 2 Comments

    AoSWow In an bit of good timing for some holiday season downtime, Dan Fernandez has announced the first release of AddOn Studio for World of Warcraft on CodePlex.

    World of Wacraft supports user-generated utilities and interfaces, called AddOns.  Now we can use Visual Studio to help create our own:

    AddOn Studio for World of Warcraft is an open-source development tool aimed to bring the Visual Studio experience to building World of Warcraft addons. This is the first release of the project and we have lots more ideas around how we can better improve addon development in the future.

    VS_shell_logo AddOn Studio is a good example of what can be done with the Visual Studio 2008 Shell to create customized editing environments based on Visual Studio.  It offers the VS2008 design surface and has editor and IntelliSense support for both LUA and FrameXML, used by World of Warcraft add ons.

    Full Shell for describing it parts Check out Dan's post for more details and a link to an interesting demo video.  I also recommend running through the helpful tutorial that's included with the install.

    I haven't played World of Warcraft since about Tech*Ed 07, when my "friends" Patrick Hynds and Duane Laflotte evilly tempted me back in, but something like this (and seeing what new AddOns the community can produce) might pull me in yet again.

    Well, if only for a month...

    -Chris

  • Chris Bowen's Blog

    Congratulations to SB Chatterjee!

    • 2 Comments

    SBCSome great news to welcome in the new year!  Long-time community leader SB Chatterjee has just been awarded Microsoft MVP (Most Valuable Professional) for Groove

    For years, SB has been doing great work both in Connecticut with the CT .NET User Group and online with his support of Office Groove via discussion groups and more.

    Check out his MVP profile page and keep an eye on his blog for his own announcement.

    Well-deserved congratulations to you, SB!

    -Chris

  • Chris Bowen's Blog

    GameDev Day '07 Agenda and Additions

    • 2 Comments

    GameDev Day '07 is this Saturday at Harvard and I'm very pleased with how well the agenda has come together.  We have an incredibly strong group of presenters from the gaming industry with interesting sessions throughout the day.

    emersonmap First, a change in logistics.  We are now in Emerson Hall (room 105), which is right next door to our original Sever Hall.

    Second LifeIn exciting news, we're going to be joined by Kent Quirk and John Lester from Linden Lab (makers of Second Life) to speak about virtual worlds and technology!

    Add to Kent and John our lineup of Dan Scherlis, Mark Mullin, Michael Cummings, Darius Kazemi and Derek Horton, and it's going to be a great day!

    Full details are here:

    http://blogs.msdn.com/cbowen/archive/2007/11/18/gamedev-day-07-boston-xna-gaming-and-game-development.aspx

    There's a cool flyer that Edwin put together as well.

    Session agenda:

    XNA_310:15 - Welcome and Announcements (Edwin Guarin and Chris Bowen)
    10:25 - Introduction to XNA (Edwin and Chris)
    10:50 - Creating Your First XNA Game (Michael Cummings)
    12:00 - Pizza & Open Gaming
    12:50 - Creating Games - What *Really* Goes on Under the Covers (Mark Mullin and Dan Scherlis)
    2:00 - Blurring the Boundaries: CSI, Second Life and You (Kent Quirk and John Lester, Linden Lab)
    3:00 - Gaming Industry Q&A Panel (Dan Scherlis, Mark Mullin, Michael Cummings, Kent Quirk, Darius Kazemi).

    See you on Saturday!

    -Chris

  • Chris Bowen's Blog

    Want Multiple Monitor Support in Visual Studio 10? Speak Up!

    • 2 Comments

    My friend and Team System coauthor Noah Coad has just posted a great article about the issues and opportunities around supporting multiple monitors with the version of Visual Studio after 2008. 

    Noah's on the VS team and is asking for your feedback, so this is a prime opportunity to help shape the functionality of Visual Studio:

    • How should the windows be controlled?
    • How should dragging and docking work?
    • What is the default solution/project behavior when multiple monitors are present?
    • Options for zooming/panning?
    • Helpful keyboard bindings?
    • Helpful mouse options (like right-click -> Send pane/window to monitor X?)
    • More?

    I've been getting a lot of questions about multiple monitor support when speaking about VS2008 recently, so I know there's a bunch of you who have definite interest and opinions on this. 

    Head over there and let your voice be heard!

    -Chris

    Share this post :

    Technorati tags:
  • Chris Bowen's Blog

    New England Code Camp 12 Update

    • 2 Comments

    CC12 Image Thanks to Grey Wolf Design! Things are rolling along well toward Saturday, October 17th, when New England Code Camp will descend for a twelfth time upon Waltham, MA!  An update on sessions, the Call for Speakers, and contributing companies:

    Camp is now up to 39 sessions by 25 different speakers, with more coming, all packed into one free day! 

    The schedule is coming next week, but here’s the current list of sessions.

    All are welcome, and it’s free, so register soon at:

           http://TheDevCommunity.org

           New England Code Camp 12
           Saturday, October 17th
           Times TBD, but likely 8:30 AM to ~6:30 PM
           Microsoft, 201 Jones Road (6th Floor), Waltham, MA

    Join hundreds of fellow developers for this semiannual favorite!

     Code Camp AwesomenessMore Code Camp AwesomenessEven More Code Camp Awesomeness

    Call for Speakers Closing 10/7

    We will assemble the final schedule soon, so if you’d like to deliver a session, please submit it by Wednesday, October 7th

    To join in the fun as a speaker, just follow these steps:

    1. Sign in to an existing account or create a new one at TheDevCommunity.org site.
    2. Complete a Speaker Registry profile (if you don't already have one.)
    3. Go to the Code Camps home page.
    4. Next to the CC12 entry, you should see a "Submit a Session" link.
    5. Submit as many sessions as you'd like.
    6. Please ensure that you also register as an attendee 

    Contributor Update

    Sincere thanks to the contributors who have stepped up to make this Code Camp possible via financial support and/or supplying swag & giveaways:

    Please join me in thanking these companies for their community support!

    See you at Camp!

    -Chris

    P.S.  As always, thanks to Bryan Phillips of Grey Wolf Design for the Code Camp logo!

  • Chris Bowen's Blog

    Announcing the Architect Factory 2 – Cambridge, January 27

    • 2 Comments

    Architect Factory

    The first Architect Factory was held in June and was a great success, helping experienced developers learn the skills to transition into a variety of architect roles.

    I’m glad to announce that the Architect Factory 2 is coming to Cambridge, MA on January 27th from 1-8PM.

    From the event page:

    This, the second Architect Factory event, focuses on you, senior technologists interested in becoming software, solutions, enterprise, or design architects. This event helps bridge the knowledge gap between senior technical, design, enterprise, information, and solutions roles and real-world architecture roles, putting you on the path to becoming an architect in your field.

    The event is free and features three tracks of content along with time for interaction and networking.

      009003005

    Thanks to Bryan Tuttle (he’s the speaker in the first picture above) and the team of volunteers for making this possible!

    Registration is Now Open

    Register for free at http://thearchitectfactory.eventbrite.com today! 

    The event will be held  at the Microsoft NERD (New England Research & Development) facility in Cambridge, MA.

    ArcFact7 006 ArcFact9

    Call for Speakers

    015This is a volunteer-driven event, and speakers of any technology background are welcome and encouraged to submit sessions that will help experienced developers to assume architect roles.

    The Call for Speakers will close on January 21st.

    See the event page for details on the tracks, type of content being sought, and how to submit your ideas.

    -Chris

  • Chris Bowen's Blog

    New England Code Camp 14 – The Schedule!

    • 2 Comments

    code camp 14 v 002 (5)This Saturday, October 2nd, will be New England Code Camp 14 (what is Code Camp?), a free day filled with with (48!) sessions given by and for the area developer community.

           New England Code Camp 14  
           Saturday, October 2nd   
           8:30 AM to 6:40 PM (Doors at 8:00)
           Microsoft 
           201 Jones Road (6th Floor), Waltham, MA

    Register at http://TheDevCommunity.org

    It’s a Saturday very well spent!

    Thanks to the Contributors

    First, we’d like to thank the contributing companies who have really stepped up to make this event possible:

     

    Thanks to these companies for their support of our developer community!

    The Schedule

    CC14 will feature an amazing 48 sessions by 32 speakers in 6 rooms, all for free!  The session grid is below, and session descriptions are online.  We’ll have printouts of the grid and descriptions waiting for you at registration.

     image
    (Click to expand)

    Note, this schedule will change (late-breaking changes are a regular Camp occurrence) but hopefully not terribly much.

    Special Features

    Entrepreneurial Track

    New with this Code Camp is the Entrepreneurial Track (or the “E Track”).  Organized by Patrick Hynds, the E Track (highlighted in blue in the schedule), is an opportunity to learn about the business side of technology, including a chance to hear from four area startups as they share their experiences. The E Track will run from 1 – 6:40 in MPR C.

    Speed Networking Seminar

    Returning from Code Camp 13, Kim Coffin and colleagues will be running a speed networking seminar from 12 to 12:30 in MPR C.  Drop by during lunch to make new connections with fellow attendees!

    Social Media

    Finally, if you’re a fan of social media tools, we’ll be tagging everything for Code Camp 14 as #NECC14.

    See you at Camp!

    -Chris

  • Chris Bowen's Blog

    Directory of Audio Podcasts for .NET Developers

    • 2 Comments

    On the Joys of Travel

    At least you can be learning something...If you’re anything like me, you might enjoy driving (or flying, riding the train, etc.), but hate that it’s generally “lost” time. 

    For years now, I’ve made a habit of taking whatever MP3 player I’ve had (currently my trusty Zune HD) whenever I hit the highway, listening to podcasts so I feel at least partially productive. 

    And so here’s a listing of audio podcasts (I may add a post for video podcasts later) that you may find useful as a .NET developer. I’ve focused on podcasts that have recent activity, but if you have others that should be added to this index, please let me know.

    The Audio Podcast List   [Updated 7/13/2012]

     

    .NET Rocks!Carl Franklin, Richard Campbell 
    http://dotnetrocks.com

    Bytes by MSDN (also in video format) – Various Hosts
    http://msdn.microsoft.com/en-us/bytes.aspx

    CodeCast Ken Levy, Markus Egger
    http://www.code-magazine.com/codecast

    Coding QA Podcast – Federico Silva Armas, Matthew Osborn 
    http://codingqa.com

    Community Megaphone Podcast Dane Morgridge, G. Andrew Duthie 
    http://www.communitymegaphonepodcast.com

    The Connected ShowDmitry Lyalin, Peter Laudati 
    http://www.connectedshow.com

    Deep Fried Bytes Keith Elder, Chris Woodruff
    http://deepfriedbytes.com

    Developer Smackdown Clark Sell, Mark Nichols
    http://DeveloperSmackdown.com

    Hanselminutes Scott Hanselman
    http://www.hanselminutes.com

    Herding CodeK. Scott Allen, Kevin Dente, Scott Koon, Jon Galloway
    http://herdingcode.com

    Microsoft DevRadio Various Hosts
    http://channel9.msdn.com/Blogs/DevRadio

    Misfit Geek Podcast Joe Stagner
    http://misfitgeek.com/podcast

    NextGen User Group Podcast Richard Costall
    http://www.nxtgenug.net/podcasts.aspx

    The Official jQuery Podcast Ralph Whitbeck & Elijah Manor
    http://twitter.com/jQueryPodcast

    Pluralcast David Starr
    http://www.pluralsight.com/community/blogs/pluralcast

    Polymorphic Podcast Craig Shoemaker
    http://www.polymorphicpodcast.com

    Radio TFS – Paul Hacker, Mickey Gousset 
    http://www.radiotfs.com

    Software Engineering RadioBernd Kolb, Martin Lippert, Markus Volter, Michael Kircher, Robert Blumen
    http://www.se-radio.net

    Spaghetti Code Podcast Jeff Brand
    http://feeds2.feedburner.com/SpaghettiCodePodcasts

    Sparkling Client Silverlight Podcast Erik Mork, Monica Mork 
    http://www.sparklingclient.com

    The Thirsty Developer Dave Bost, Clark Sell 
    http://www.thirstydeveloper.com

    The Web Ahead – Jen Simmons
    http://5by5.tv/webahead

    Windows Phone Radio – Windows Phone Team
    http://windowsteamblog.com/windows_phone/b/windowsphone/

    Windows Weekly (also in video format) – Paul Thurrott
    http://www.twit.tv/ww

    Yet Another Podcast Jesse Liberty
    http://feeds.feedburner.com/JesseLibertyYapcast

    Any Others?

    Again, if you know of other related podcasts out there, contact me or sound off in the comments!

    -Chris

  • Chris Bowen's Blog

    Take the Rock Paper Azure Challenge

    • 2 Comments

    RockPaperAzure Challenge

    The Rock Paper Azure Challenge gets underway today!  It’s a chance to prove your coding skills as bots you develop battle it out in a cloud-based game of “Rock, Paper, Scissors” (with added twists – dynamite and water balloons).

    Though topping the leaderboard will earn you bragging rights, there are prizes for the weekly tournaments (run each Friday) as well.

    RockPaperAzure ChallengeHow do you get started?

    1. Get the (free) tools, game code, and trial Windows Azure account
    2. Build your bot – the strategy is up to you (some helpful tips)
    3. Test and deploy your bot
    4. Enter your bot in the Challenge

    There are weekly webcasts to help - “Getting Started” on Tuesdays, and “Tips and Tricks” on Fridays.

    Details are on the Rock Paper Azure Challenge site.

    Good luck!

    -Chris

  • Chris Bowen's Blog

    Tech & Developer Events in the Northeast – May 2012 Edition

    • 2 Comments

    Here’s the latest roundup of tech- and developer-focused events here in the northeast. Most are free, but the exceptions are noted with [$].

    As always, if you know of other free or nearly free developer-focused events, please let me know.

    -Chris

    [Last updated 5/4/2012]

    Connecticut

    May 1
    Agile Connecticut - Farmington, CT

    May 3
    Fairfield/Westchester .NET User Group – Stamford, CT
    “MoCloud: Useful Cloud Patterns for Mobile Developers” – Dani Diaz

    May 8
    Connecticut .NET Developers Group – Farmington, CT
    “Windows 8 Development” – Chris Bowen

    May 9
    Connecticut Access Users Group – Farmington, CT

    May 14
    Hartford Area Build Guild – Farmington, CT
    “Web People + Adult Beverages + High Fives”

    Windows9May 23
    Windows 8 Developer Camp – Farmington, CT
    A free, full day for developers to learn about Windows 8, including sessions and hands-on labs
    Chris Bowen & Rachel Appel

    June 7
    Hartford Tech Meetup – Hartford, CT

    CodeCampJune 23
    Fifth Annual Hartford Code Camp – Farmington, CT

    Schedule TBA
    Connecticut DotNetNuke User Group - Bethany, CT
    Connecticut SharePoint User Group – Farmington, CT
    Connecticut Web Innovators – Hartford, CT
    Fairfield County SharePoint User Group – Fairfield, CT
    Fairfield/Westchester SQL Server UG - Stamford, CT

    Maine

    May 10
    Maine Bytes User Group - Portland, ME
    “Advanced JavaScript Techniques” – Fritz Onion

    May 22 
    Bangor Area .Net Developers (BAND) - Bangor, ME

    June 26
    Bangor Area .Net Developers (BAND) - Bangor, ME

    Schedule TBA
    Agile User Group – Portland, ME
    Maine Developer Network - Augusta, ME
    SharePoint Maine User Group – Portland, ME
    Usability / User Experience User Group – Portland, ME
    Web Designers User Group – Portland, ME

    Massachusetts

    May 1
    Boston Business Intelligence – Waltham, MA
    “Introduction to BI Semantic Model” – Slava Kokaev

    May 1
    Boston Predictive Analytics – Cambridge, MA

    May 2
    Code Mastery – Waltham, MA
    A free, full-day tech event by Magenic. Features two tracks: “Future of Development” and “Developing a BI System Using SQL Server 2012”.

    May 2
    The Road to Windows 8! – Waltham, MA
    “A free, unbiased look at the current and future development with Windows 8 and .NET.” - Markus Egger

    May 2
    Boston Tech Meetup - Cambridge, MA
    “Did WordPress Do That?” – Jon Bishop

    May 2
    Boston PHP Meetup – Cambridge, MA
    “Show ‘n Tell Night”

    May 3
    New England Visual Basic Professionals - Waltham, MA
    “An Introduction to Windows 8” – Chris Bowen

    May 3 (first of 4 classes)
    [$] Web Start Women Boston – Cambridge, MA
    ”Wrangling HTML/CSS”

    NEGiveCamp25May 4-6
    New England GiveCamp – Cambridge, MA
    A weekend for tech professionals to donate time and talent to support local charities and non-profit organizations.

    May 5
    Boston Innovation Challenge – Allston, MA

    May 7
    New England F# User Group – Cambridge, MA
    TBD – Keith Battocchi

    May 7
    New England Artificial Intelligence – TBD
    “AI, Pizza, & Beer”

    May 8
    DotNetNuke Boston Meetup – Cambridge, MA

    May 8
    Build Guild – Salem and Cape Cod
    “Web People + Adult Beverages + High Fives”

    May 9
    Drinks on Tap – Allston, MA
    ”Demos, drinks and discussions about mobile development'”

    May 9
    Emerging Business Tech – Cambridge, MA
    “NoSQL in the Real World”

    May 9
    Breakfast at Telerik: Agile – Waltham, MA

    May 9
    HTML5 Game Development Meetup – Boston, MA

    May 9 (first of 2 classes)
    [$] Web Start Women Boston – Cambridge, MA
    ”Photoshop: Designing for the Web”

    imageMay 10
    Microsoft Web Camp – Waltham, MA
    A free, full-day event focused on web development topics including HTML5, ASP.NET 4.5, WebMatrix, jQuery, Internet Explorer 9 & 10, and more.

    May 10
    Microsoft DevBoston – Cambridge, MA
    “Developing Software for Windows 8” – Chris Bowen

    May 10
    Worcester Web Technology – Worcester, MA
    “Agile Testing”

    May 10
    Boston Software Engineering Meetup – Boston, MA
    “Nanotechnology | Small Scale Software Engineering”

    May 10
    New England SQL Server User Group - Waltham, MA
    “How Not to Be a Cranky DBA” – Mike Hillwig

    May 14
    Boston Software Craftsmanship – Cambridge, MA
    Lightning Talks

    May 14
    [$] Tech Cocktail Sessions Boston – Cambridge, MA
    ”Startup Inspiration: Turning Ideas Into Action”

    May 14
    Boston WordPress – Cambridge, MA

    May 15
    Hacks / Hackers Boston – Boston, MA
    ”Using mapping to inform the world”

    May 16
    Boston New Technology Meetup – Cambridge, MA
    Tech products and startup community

    May 16
    Boston Accessibility Roundtable – Cambridge, MA

    May 16
    Boston .NET Architecture Study Group - Waltham, MA

    May 17
    Refresh Boston – Cambridge, MA
    “Taking the Plunge” – Mike Kivikoski

    May 19
    SQL Saturday Boston – Waltham, MA
    A free full day of sessions for anyone looking to learn more about SQL Server.

    Windows4May 22
    Windows 8 Developer Camp – Waltham, MA
    A free, full day for developers to learn about Windows 8, including sessions and hands-on labs
    Chris Bowen & Rachel Appel

    May 23
    Boston Orchard CMS User Group – Cambridge, MA
    “Orchard CMS Boston Feature Development for v1.4”

    May 23
    jQuery Boston Meetup – Boston, MA
    “Five minute lightning talks!”

    May 23
    Boston XNA Developers Group - Waltham, MA

    May 23
    Agile Boston User Group - Waltham, MA

    May 24
    Western Mass Microsoft Technology Users Group - Agawam, MA
    “Windows 8” – Chris Bowen

    May 24
    Lean Startup Circle Meetup – Cambridge, MA

    May 29
    Boston Software Engineering Meetup – Cambridge, MA
    “Robotics | AI | Big Data”

    May 30
    Boston Azure Cloud User Group – Cambridge, MA
    “Hands-On with the Windows Azure SDK (Bring Your Own Laptop!)” – Jason Haley

    May 30
    Boston Tech Meetup - Cambridge, MA
    “Jobspring and Workbridge Career Fair” & ”Start-up Panel Discussion”

    May 30
    HPC & GPU Supercomputing Group of Boston – Cambridge, MA

    June 4
    Cloudy Mondays – Cambridge, MA
    “Control in the Cloud”

    June 6
    Boston Accessibility Roundtable – Cambridge, MA

    June 7
    Microsoft DevBoston – Cambridge, MA

    June 7
    New England Visual Basic Professionals - Waltham, MA
    “RavenDB” – Igor Moochnick

    June 7
    Boston Web Performance Group – Boston, MA

    June 11
    Boston Software Craftsmanship – Cambridge, MA

    June 14
    New England SQL Server User Group - Waltham, MA
    “Reducing Data Integration TCO – Best Practices for SQL Server 2012” – Larry Barnes

    June 14
    Boston Software Engineering Meetup – TBD
    “3D Printing Hackday and Party”

    June 18
    New England F# User Group – Cambridge, MA
    ”Bumblebee” - Mathias Brandewinder

    June 20
    Boston Orchard CMS User Group – Cambridge, MA
    “Orchard CMS Themes Styling and Design Walk Through” – Rebecca Pleshaw

    June 20
    HTML5 Game Development Meetup – Boston, MA

    June 20
    Boston .NET Architecture Study Group - Waltham, MA

    June 21
    Western Mass Microsoft Technology Users Group - Agawam, MA
    “Infragistics Presentation”

    June 21
    [$] Tech Cocktail Sessions Boston – Cambridge, MA

    June 22-23
    Boston Azure Cloud User Group – Cambridge, MA
    “Boston Azure Bootcamp (hands-on)”

    June 25
    Boston WordPress – Cambridge, MA

    June 27
    HPC & GPU Supercomputing Group of Boston – Cambridge, MA

    June 27
    Boston XNA Developers Group - Waltham, MA

    June 28
    Boston Azure Cloud User Group – Cambridge, MA
    TBD – Michael S. Collier

    July 5
    New England Visual Basic Professionals - Waltham, MA
    “The Other Stack: HTML5 and CSS” – Doug Domeny

    July 10
    Boston Accessibility Roundtable – Cambridge, MA

    July 17
    [$] Tech Cocktail Sessions Boston – Cambridge, MA

    July 18
    Boston Orchard CMS User Group – Cambridge, MA
    “Deploying Orchard to Windows Azure”

    July 26
    Worcester Web Technology – Worcester, MA
    “Build a Python/Django/jQuery web app within an hour” – Marc Hughes

    July 26
    Lean Startup Circle Meetup – Cambridge, MA

    Schedule TBA

    Beantown ALT.NET Group – Cambridge, MA
    Boston Arduino Users Group – Cambridge, MA
    Boston Area SharePoint Users Group – Cambridge, MA
    Boston Artists + Coders – Boston, MA
    Boston BizSpark Meetup – Cambridge, MA
    Boston Cloud Services – Waltham, MA
    Boston Front End Developers – Cambridge, MA
    Boston JavaScript Meetup – Boston, MA 
    Boston Node.js Meetup – Boston, MA
    Boston Web Design Meetup – Cambridge, MA
    Boston WebsiteSpark Group – Cambridge, MA
    HTML5 Boston – Boston, MA
    Kinect Boston Users Group – Cambridge, MA
    Mobile Monday Boston – Boston, MA
    New England Mobile .NET Developers’ Group – Cambridge, MA
    New England Windows Phone User and Developer Group - Waltham, MA
    North Shore .NET User Group - Ipswich, MA
    North Shore Web Geeks – Newburyport, MA
    OWASP (Open Web Application Security Project) – Waltham, MA 
    UX Book Club, Boston – Cambridge, MA
    Western Mass Developers’ Group – Hadley, MA

    New Hampshire

    May 3
    eBrew – Portsmouth, NH

    May 8
    NH Database Meetup – Manchester, NH
    First meeting. Topic: MongoDB

    May 9
    Portsmouth Startup Meetup – Portsmouth, NH
    Jeffrey Vocell

    May 10
    Granite State SharePoint User Group – Nashua, NH
    Derek Cash-Peterson

    May 10
    Joomla NH User Group – Durham, NH

    May 11
    [$] eCoast Cloud Summit – Portsmouth, NH

    May 17
    Digital Portsmouth – Portsmouth, NH
    “The Art of Code”

    May 17
    Seacoast SQL Server Users Group – Portsmouth, NH
    “Hadoop, Big Data & SQL – TripAdvisor’s Story” – Don O’Neill

    June 14
    Granite State SharePoint User Group – Nashua, NH
    Glenn Gnabasik

    July 12
    Granite State SharePoint User Group – Nashua, NH
    “SharePoint Maturity” - Sadalit Van Buren

    Schedule TBA
    Nashua Scrum Club – Nashua, NH
    NH .NET User Group, Concord – Concord, NH
    NH .NET User Group, Nashua – Nashua, NH
    NH .NET User Group, Seacoast – Portsmouth, NH
    Systems Engineering and Administration Technical User Group – Portsmouth, NH
    Web Dev Meetup – Portsmouth, NH

    New York (Upstate)

    May 1
    AppRochester – Rochester, NY

    May 2
    Rochester JavaScript Meetup (Coworking Rochester) – Rochester, NY

    May 3
    OWASP (Open Web Application Security Project) – Rochester, NY

    May 8
    Tech Valley .NET Users Group – Albany, NY
    Open Q&A Session

    May 12
    SQL Saturday Rochester – Rochester, NY
    A free full day of sessions for anyone looking to learn more about SQL Server.

    May 15
    Upstate NY PowerShell Users Group – Rochester, NY
    “PowerShell Basics: Pipeline Tactics”

    May 21
    Capital Area SQL Server Users Group – Albany, NY
    ”Star and Snowflake Schema, SSAS and Multidimensional Tables”

    May 29
    Microsoft Developers of Western NY – Buffalo, NY
    ”Windows Phone Development” – Dani Diaz

    May 30
    AppRochester – Rochester, NY
    “Windows Phone” - Dani Diaz

    May 31
    Central New York .NET Developer Group - East Syracuse, NY
    “Windows Phone” – Dani Diaz

    June 6
    Rochester JavaScript Meetup (Coworking Rochester) – Rochester, NY

    July 11
    Rochester JavaScript Meetup (Coworking Rochester) – Rochester, NY

    Schedule TBA
    Build Guild – Troy, NY
    Microsoft Developers of Western NY – Buffalo, NY
    Refresh Rochester – Rochester, NY
    Rochester SharePoint User Group – Rochester, NY
    VDUNY - Visual Developers of Upstate NY - Rochester, NY
    Western New York Back Office Technology User Group – Blasdell, NY
    Western NY SQL Server PASS – Amherst, NY

    Rhode Island

    May 9 
    Southern New England SQL Server Users Group – East Greenwich, RI
    “On beyond Zebra AdventureWorks OR where did I go wrong?” – Steve Simon

    May 10
    Providence Web Development Lunch Hour – Providence, RI

    June 14
    Providence Web Development Lunch Hour – Providence, RI

    July 12
    Providence Web Development Lunch Hour – Providence, RI

    August 1
    Rhode Island SharePoint User Group – Providence, RI
    ”Inaugural Meeting!”

    Schedule TBA
    MoDevRI (Mobile Developers & Entrepreneurs) – Providence, RI
    Providence Geeks – Providence, RI
    Rhode Island .NET User Group - Bristol, RI
    WordPress Providence Meetup – Providence, RI

    Vermont

    May 2
    Vermont SQL Server User Group - Burlington, VT
    ”What’s New in SSIS Denali” – Christian Cote

    May 14
    Vermont .NET User Group – S. Burlington, VT
    Chris Fradenberg

    June 11
    Vermont .NET User Group – S. Burlington, VT

    July 16
    Vermont .NET User Group – S. Burlington, VT
    Ward Bell

    Schedule TBA
    Burlington PHP Users Group – Burlington, VT
    Northern Vermont SharePoint Users Group – Essex Junction, VT

  • Chris Bowen's Blog

    Game Development with Construct 2 – Templates for Windows 8

    • 2 Comments

    Construct 2As you consider your Windows 8 game development options, have a look at Construct 2 by Scirra.  It helps you create games quickly, providing a visual, no-coding-required experience supporting a number of platforms, including the Windows Store and Windows Phone.  (And behind the scenes, games are based on JavaScript and HTML5!)

    Getting Started with Construct 2

    There’s a free version of Construct 2 available (just read the terms so you know what’s supported) and plenty of resources to help you learn:

     

    Game Templates

    When you create a new project, you’ll see many helpful options, from simple examples to full games with walkthroughs.  Nine of these (named “Template: …”) are game starters, including platformer, driving, turret defense, and other types of games.  You should try each of them and look through them to see how they work.

    Windows 8 Game TemplatesConstruct 2 supports publishing Windows Store games, but you need to support a few things, so I’ve extended the nine included game templates with features like the Windows 8 object, a “Pause" layer, snapped view support (with game pause), touch support, and some project property updates.

    Game Templates for Windows 8

    With thanks to Scirra, here are the 9 templates, available on GitHub:

     

    Download all templates as a ZIP, or get individual templates below, just click the link and choose “View Raw”, which will let you save the template.

    Game Description Screenshot
    Auto-Runner 
    (click “View Raw” and save)
    Side-scroller with player constantly running, having to jump between platforms. Auto-Runner
    Driving Game
    (click “View Raw” and save)
    Top-down driving around a track with bordering objects. Driving Game
    Infinite Jumping
    (click “View Raw” and save)
    Vertical game where player automatically jumps and must reach new platforms. Infinite Jumping
    Physics Catapult
    (click “View Raw” and save)
    Fire catapult at structures with physics behaviors for impact/gravity. Physics Catapult
    Physics Puzzle
    (click “View Raw” and save)
    Click/touch objects to remove to clear puzzle. Physics Catapult
    Platformer
    (click “View Raw” and save)
    Jump between a variety of platforms (static, moving, one-way). Platformer
    Top-Down Shooter
    (click “View Raw” and save)
    Top-down view, move player and fire at targets. Top-Down Shooter
    Turret Defense
    (click “View Raw” and save)
    Add turrets to maze to fire on targets as they pathfind to their goal. Turret Defense
    Vertical Shooter
    (click “View Raw” and save)
    Vertically-scrolling game player and targets both moving and firing. Vertical Shooter

    Publishing Your Game

    After you select a template, you’ll want to customize the game to your liking with new images, mechanics, sounds… whatever you can imagine!  When you’re ready to publish to the Windows Store, just follow these steps.

    Keep the Cash OfferAnd with each game you publish, you can earn money with the Keep the Cash offer through June 30, 2013!

    Enjoy!  And drop me a line if you find these useful or have any recommendations to make them more helpful.

    -Chris

  • Chris Bowen's Blog

    Using CreateJS in your JavaScript-Based Windows 8 Game

    • 2 Comments

    So, you’re making a Windows Store game using JavaScript and HTML5?  Excellent!

    The good news is many others have created games with web-based technologies and, with many common features that games need, some great libraries have emerged to make things easier.

    imageCreateJS is a set of JavaScript libraries and tools for games and other kinds of apps:

    • EaselJS – The HTML5 canvas element is a great way to create games, but displaying, managing, and moving things can be tricky.  EaselJS makes this (and more) easier.
    • TweenJSTweening is about showing transitions from one state/value to another.  TweenJS offers ways to change, animate, and ease transitions of values and properties.  Move something across the screen, make something pulse when clicked, cycle through colors, whatever you’d like.
    • SoundJS – You want to play sounds.  Sounds aren’t always easy in JavaScript.  This helps change that.
    • PreloadJS – Helps manage the loading of sounds, images, data, etc. to help with efficiency and consistency.
    • Zoë – A tool that exports SWF animations to sprite sheets used with EaselJS

     

    imageimageI’ve used CreateJS in my “Catapult Wars” WinJS tutorial series and, certainly far more impressively, the Atari arcade game experience was developed using CreateJS as well (and there are many other examples.)

    We’ll focus on EaselJS for now, but more on the other parts of CreateJS at the end of the article.

    Getting Started

    First, you’ll need a Windows Store game into which you’ll plug CreateJS.  In Visual Studio 2012, create a new project and choose JavaScript –> Windows Store –> Blank App:

    image

    If this is your first look at JavaScript Windows Store apps, read Getting started with Windows Store apps and Part 1: Create a "Hello, world" app for a good background.  Also, read “JavaScript templates for Windows Store apps” to learn about the moving parts in the “Blank App” template.

    The key places to put your own content are default.html, /js/default.js, and /css/default.css.

    Go ahead and run it (just press F5).  Now, aren’t you glad you did?  We’ll make things less boring more game-like soon.

    Plugging in CreateJS

    imageLet’s get started.  We’ll focus on EaselJS here, but every part of CreateJS can be added the same way.

    1. Download EaselJS.  Grab as a ZIP, or clone with Github for Windows.
    2. Save/extract to a reusable place (like “C:\Code\CreateJS\EaselJS”).
    3. Find the “lib” folder and easeljs-<version>.min.js.  This has everything you’ll need, compacted and ready to go.  Keep this ready for step 5.
    4. Back in Visual Studio, in Solution Explorer, find the “js” folder.  Right-click and add a new folder named “createjs”.
    5. Drag and drop easeljs-<version>.min.js file from step 3 into that new “createjs” folder:

     

    image

    EaselJS is ready to use, but our game still doesn’t “know” about it.  Open default.html and simply drag the EaselJS file you added right into the source.  Visual Studio will wire up the reference for you:

    image

    Okay, let’s play!

    How EaselJS Works

    EaselJS focuses on making it easier to work with the HTML5 canvas element.  A few of the key classes:

    • Stage – The Stage is essentially your ambassador to the canvas, coordinating everything to be drawn and redrawing based on the “tick” (a kind of heartbeat), that’s very much aligned with game loop concepts.
    • Ticker – Keeper of the “tick”, this class lets you manage and get details about the timing of the game.
    • DisplayObject – Base class for things you’ll display and move:  Bitmap, Text, Shape, et al.
    • SpriteSheet – A set/series of images that are viewed one at a time to create an animation effect.  See the SpriteSheet demo for an example.
    • Filter – You don’t use Filter directly, but its subclasses (ColorFilter, ColorMatrixFilter, BoxBlurFilter, AlphaMapFilter, AlphaMaskFilter) are great for applying effects.  See the Filters demo to see them in action. 

    There’s more of course (see the online EaselJS docs, and examples like the API Demo for more), but these will get things started.  Speaking of which…

    Getting Started

    First, we’ll need a canvas to draw on, so in default.html, replace the default <p> element with a new <canvas>:

    <body>
        <canvas id="gameCanvas" width="800" height="600"></canvas>
    </body>

    (For simplicity, the canvas is fixed size, but a real game would use JavaScript to scale it automatically based on screen size.)

    Now, some JavaScript to get things started.  We’ll add an init() function and have it called when everything is ready.  In default.js, find the app.onactivated handler.  Change this line:

    args.setPromise(WinJS.UI.processAll());

    to this:

    args.setPromise(WinJS.UI.processAll().then(init));

    Then, just add the init() function after.  Something like this:

    image

    Setting the Stage

    Init needs to:

    • Create a Stage and point to our canvas
    • Create some Shapes to draw – You could also add anything else derived from DisplayObjectBitmap, Text, etc.
    • Add the Shapes to the Stage – The Stage will then be able to manage them as “children”
    • Update the Stage – This refreshes the canvas, putting things into action

    Let’s add that to init(), along with a few variables:

    image

    [Note that with recent versions of EaselJS, classes are namespaced so you’ll need “createjs.” before any uses.  Keep this in mind if you’re looking at older examples.]

    Run the game and you’ll have something like this:

    image

    Yes, it’s your game equivalent of “Hello, world”, but at least there’s something game-like on the screen!

    Getting the Ball Rolling

    We won’t create the full game here, but here’s a taste of how to add a game loop with some basic motion.

    Add the following to the end of init() and a new gameLoop() function:

    image

    We’re asking the Ticker class to start the game’s heartbeat.  30 frames per second, it will call the gameLoop() function, where you would place code to read input, move things about, check for collisions, end the game, etc.  [Note you need the stage.update() call to have EaselJS refresh the canvas based on what you’ve changed.]

    image

    For now, the ball simply moves slowly, sadly fated to move in one direction… forever.  Now’s your chance to step in to move the paddles, bounce the ball, score points, etc.

    For deeper use of EaselJS, including input, collisions, and scoring, see my Catapult Wars tutorial series.  There are also some helpful demos on the CreateJS site, and more as part of the EaselJS download.

    Other CreateJS Family Members

    Congratulations!  You’re ready to put EaselJS to good use in your game, saving you time and trouble.  The other libraries in the CreateJS family can save you time as well, so a quick introduction is in order.

    imageSoundJS

    Sound can be very tricky in JavaScript-based games, and SoundJS handles detecting playback capabilities, and give you ways to play, pause, loop, and overlap sounds that would take a bunch of manual code to get working consistently.

    You can get an idea of the supported features in this test suite:

    image

    imageTweenJS

    Tweening is about adjusting values from a start to an end.  It could be animating the position of a ball, the size or rotation of a paddle, or even other attributes like something’s color.  TweenJS supports tweening, including chained calls and delays.  Here’s an example:

    image

    TweenJS also offers a set of easing functions.  Easing is a function that controls the rate of change. 

    For example, you could simply move from A to B at constant rate, but for a more polished effect, you could start motion from A slowly, move quickly across the screen, then slow down to settle into position B.  (This is called ease in/out.)  Here’s an example that shows various easing functions:

    image

    imagePreloadJS

    PreloadJS can be useful to load and instantiate your graphics, sounds, and other assets so they’re ready to go in your game.

    You can load individual files, or specify a manifest of multiple assets to load and indicate how you’d like to process them.

    I hope you find this guide and these libraries useful.  Good luck with your Windows Store game!

    -Chris

  • Chris Bowen's Blog

    Windows 8 MSDN Webcast Series – Building Metro Style Apps

    • 2 Comments

    Some colleagues and I have just started a new series of one-hour MSDN webcasts focused on many aspects of developing Metro style apps for Windows 8.

    The series launched yesterday, but all sessions will be made available as on-demand recordings.  (I’ll update this post as they are.)  Thanks to Jaime Rodriguez for the original post.

    Update – The webcasts have been recorded and there is a series home page on Channel 9.

    Click on the session titles below to watch.  You can also download Windows 8 and Visual Studio 2012 Express Beta to help follow along.

    Enjoy the series!

    -Chris

    [Last Update: 7/6/2012]

    Introduction to the Windows 8 platform and the Windows Store       
    Jennifer Marsman
    Windows 8 is Windows re-imagined! Join this session to learn about the new platform for building Metro-style applications. Get an understanding of the platform design tenets, the programming language choices, and the integration points with the operating system and across Metro-style apps. We will also discuss the enormous opportunity for developers to make crazy money with the Windows Store. You will walk away with the resources to begin writing Metro applications for Windows 8.

    Designing apps with Metro style principles and the Windows personality    
    Chris Bernard
    Metro style design has a set of five guiding principles to help you make the best choices when designing your app. These principles are the foundation for building great Metro style apps. Consider these principles as you plan your app, and always ensure your design and development choices live up to these principles.

    Building Metro style apps with XAML: What .NET developers need to know       
    John Wiese
    If you are experienced with .NET or Silverlight and are already familiar with XAML, this session will teach you everything you need to know to create a Metro style app for Windows 8. This session will cover updates to familiar features and explore concepts that are new for Windows 8. We’ll talk about building reusable Windows Runtime Components in C#, Async programming in Windows 8 and both the Visual Studio and Expression designers. This session will show you how to turn your XAML skills into money-making Metro style apps.

    What HTML developers need to know about coding Windows 8 Metro style apps    
    Michael Palermo
    This session is perfect for any web developer wanting to leverage his/her skillset to develop Windows 8 Metro style apps. The session begins by proving how much web developers already know about building apps for Windows 8. The focus then turns to how to write JavaScript code with WinJS. Key points for Metro style app development will be highlighted by implementing popular feature requests using HTML5, CSS3, and JavaScript.

    Win as One: How Contracts in Windows 8 Help You Build a Killer Metro App    
    G. Andrew Duthie
    Contracts are agreements between Windows and your Metro style app that allow you to integrate Windows 8 features into your app. For example, Windows 8 lets users share content from one application to another by using the Share contract. In this session, you'll learn how contracts work and how to implement the built-in contracts such as Search, Share, Settings, and More. With Contracts, you can help users get more out of your app, and in a way that is consistent and intuitive, and they will reward you by coming back to your app again and again.

    Bring Your Windows 8 Metro Style Apps to Life with Tiles and Notifications     
    Chris Bowen
    Tiles and Notifications are important ways to draw attention to your app and improve your users' experiences. Tiles can draw users back into your app when your tile comes to life on Start screen. They can also let users personalize their Start screen by creating deep links to specific places within your app. Notifications, delivered through the Windows Push Notification Service, can inform and draw your users back into your app even when it's not running. In this session, you will learn how to effectively implement Tiles and Notifications to help your apps shine.

    Building Windows 8 Metro style casual games using HTML 5
    David Isbitski
    The intent of this session is to help HTML5/JavaScript developers with writing their first Metro Style App in a fun, immersive way. We will cover the basics of HTML5 Canvas gaming and how we can easily bring it to Windows 8. We will then add additional game functionality as we introduce HTML5 Audio, CSS3 styling and web fonts, implementing a game loop with JavaScript, 3rd party frameworks, touch, camera, accelerometer, and WinJS controls.

  • Chris Bowen's Blog

    New England Code Camp 16 – October 29th – Save the Date!

    • 1 Comments

    Code CampI’m happy to pass along word that the date is set and venue reserved for the 16th New England Code Camp, a free, full day of knowledge sharing and networking, driven by developer community volunteers.

    New England Code Camp 16
    Saturday, October 29th, 2011
    Microsoft
    201 Jones Road, 6th floor
    Waltham, MA

    Never been to a Code Camp? To get an idea of what to expect, take a look at the schedule for Code Camp 15, held earlier this year.

    Food...Code Camp SessionCode Camp Session

    Registration and the Calls for Speakers and Sponsors will be coming later, but in the meantime, mark your calendar and get ready to join hundreds of your fellow developers for this great community event!

    -Chris

  • Chris Bowen's Blog

    JavaScript Physics Engines and Windows 8 Games

    • 1 Comments

    Driven by opportunity and visions of success in the Windows Store, you set to work, turning your gaming idea into code.

    “It Was My Understanding There’d Be No Math”

    Maybe you wanted to move something across the screen.  Maybe check if it hit a target.  Oh, and there’s wind, and friction, and maybe things should bounce when they collide…

    Forgotten Math...The specter of forgotten math begins to loom.

    Thankfully, there are physics engines.  Simply put, they take care of some of the math and work involved in games and simulations.  Of course they don’t eliminate math and complexity, but they can make many scenarios easier:

    • Physics-related math – Matrices, vectors, velocity, rotation, momentum, etc.
    • Rigid body dynamics – Sounds unfriendly, but focuses on the motion and interactions of things whose shapes don’t change (save when deformed by say a collision or damage.)  This also includes joints to connect multiple objects together to create more complex objects like a ragdoll of a person, a truck with parts/wheels/cargo, etc.
    • Soft body dynamics – Less frequently-used, this is simulation of objects whose shape can change.  Cloth is a pretty common example of this.
    • Collision detection – Need to know when something hits or overlaps another?  There are may ways to do this, from relatively simple bounding shapes, to often more accurate (and more complex) per-pixel approaches, and on to the vast world of 3D.

    Why write such things yourself when others have taken the time to create great libraries?

    That said, you may not need a physics engine at all.  For the simplest games, it’s pretty easy to roll your own logic for basic bounding-box collision checking and basic motion.  However, games become complex quickly, so even if you don’t imagine you’ll need one, the up-front investment in learning & using physics engines can pay off sooner than you’d think.

    JavaScript Physics Engines

    Here’s a list of some key JavaScript-based physics engines that you might consider in your Windows Store game or simulation.   

    imagebox2dweb

    Home - http://code.google.com/p/box2dweb/
    Download - http://code.google.com/p/box2dweb/downloads/list

    A JavaScript port of Box2DFlash (aka Box2DFlashAS3), itself a port of the Box2D engine, box2dweb offers a single-file implementation, which makes it easy to add to your app.

    The box2dweb site has an interactive demo and directs you to Box2DFlash for documentation (since it’s a direct port).  According to the box2dweb download site, it was last updated in June, 2011

    imageBox2DJS

    Home - http://box2d-js.sourceforge.net/
    Download - http://sourceforge.net/projects/box2d-js/

    Like box2dweb, Box2DJS is also port of Box2DFlash/Box2DFlashAS3. It’s somewhat older (at least at time of writing) and does require more files to be added to your project than box2dweb.

    The Box2DJS home page has instructions, sample code, and demos.  Here are a few of them:

    imageimageimage

    According to the Box2DJS download page, the last update was in April, 2010.

    imagePixel Lab Box2d-JS

    Home - http://box2d.thinkpixellab.com/
    Download - https://github.com/thinkpixellab/box2d

    This version of Box2d by Pixel Lab is a clone of Box2DJS, updated to have better compression and to resolve bugs in the original version.

    The Pixel Lab Box2d-JS site has some live demos, mirroring the ones featured on the Box2DJS site.  Interestingly, this engine was used in the Agent 8 Ball game:

    image

    According to the download page on Github, the compiled version was last updated in April, 2012.

    imageAmmo.js

    Home - https://github.com/kripken/ammo.js
    Download - https://github.com/kripken/ammo.js

    Ammo.js is a 3D physics engine, and an automated port of the Bullet Physics Library (written in C++).  Like box2dweb, it is built into a single file (“ammo.js”), making it simple to import.

    The lastest version of Ammo.js (built as “/builds/ammo.js”) was updated in September, 2012.  Again, with this post being primarily an index, see the last section for links to more detailed analysis of Ammo.js.

    imageJigLibJS2

    Home - http://brokstuk.com/jiglibjs2/
    Download - https://github.com/bartdeboer/JigLibJS2

    JigLibJS2 is an automated port of the JigLibFlash physics engine.  It’s a 3D physics engine, and on the JibLibJS2 home (and in the download source) there’s an interesting canvas demo (using three.js for 3D rendering) with multiple objects, including a car you can drive:

    image

    The download page on Github shows the latest updates in September, 2012

    imageCannon.js

    Home - http://schteppe.github.com/cannon.js/
    Download - https://github.com/schteppe/cannon.js

    Cannon.js is a 3D physics engine, based on… well, nothing.  Unlike many physics engines, cannon.js is “100% open source JavaScript, written from scratch”.  Cannon.js cites inspiration from three.js and ammo.js, yet claims to be lighter and smaller than ported engines such as ammo.js and JigLibJS.

    Though the home page samples use WebGL, Chandler Prall’s Javascript Physics Engine Comparison has a nice example of using cannon.js with the three.js CanvasRenderer.

    According to the cannon.js download page, the latest updates were made in September, 2012.

    Another Option: Windows Runtime Components

    Another interesting option for Windows Store apps is to use Windows Runtime Components, components written in other languages such as C++, C#, and VB, and call them from your JavaScript-based game.

    imageFor example, the Farseer Physics Engine is based on .NET, but could be wrapped and exposed to a JavaScript-based Windows Store app.

    Keep in mind that while this can work, it also adds new levels of complexity to your app.  For example, which side “owns” the various pieces of game state?  But, if you’re already familiar with another non-JavaScript physics engine, this may be worth considering.

    What Next?

    Here are some other helpful articles to get you started:

    As I mentioned, this post lists only a subset of what’s out there.  If you know of other helpful engines, please post in the comments!

    -Chris  

  • Chris Bowen's Blog

    Introduction to JavaScript Animation and Windows 8 Games

    • 1 Comments

    Unless you’re aiming for the next great text-only game, chances are something’s going to move in your game. From ships and planets to fireballs and monsters, what are some ways to get them going?

    How Will You Start the Show?JavaScript-based games in Windows 8 can take advantage of many different options.  Here are some of them:

    • Animate DOM elements with JavaScript and CSS
    • Animate DOM elements with new CSS3 features
    • Animate what’s drawn in SVG
    • Animate what’s drawn to a <canvas> element
    • Use the WinJS.UI.Animations library
    • Use one of many animation frameworks

    We’ll take a look at each of these, but first it’s important to know game loop options.

    The Game Loop

    To get things going, you need code that handles input, updates game state, and draws/moves things. 

    You might think to start with a for loop, and move something across the screen.  E.g.:

        for (i = 0; i<10; i++){
            smiley.x += 20;
        }
     

    What happens logically:
    image
     

    What the user actually sees:
    image

    You’ll probably just see the item popping instantaneously to the final location.  Why?  The interim positions will change more quickly than the screen will update.  Not the best animation, is it?

    Later, we’ll get to CSS features and animation frameworks that offer ways to chain animations with logical delays (“move this here, wait a bit, then move it there”), but in the meantime, let’s leave the for loop behind…

    SetInterval & SetTimeout

    Generally, game loops work by calling a function repeatedly, but with a delay between each call.  You can use setTimeout to do something like this:

        function gameLoop() {
            // Update stuff… 
            // Draw stuff…     
          
            setTimeout(gameLoop, 1000/60);  // Target 60 frames per second       
        }

    Just point setTimeout to the function to call and how long (in milliseconds) to wait.  Closely related, setInterval also waits then calls a function, but automatically keeps calling the function until canceled. 

    Using requestAnimationFrame

    But there’s some trouble in setTimeout/setInterval paradise. 

    They work by setting a fixed amount of time between loops, but what if the system isn’t ready to draw an updated frame?  Any drawing code executed is wasted because nobody will see the update.

    There’s now a more efficient way - requestAnimationFrame.  Instead of specifying how long until the next iteration, requestAnimationFrame asks the browser to call back when it’s ready to display the next frame.  For a demonstration, see the requestAnimationFrame example (and the Windows SDK sample):

    image

    Important: to benefit from requestAnimationFrame, you should separate your state-updating code from your visual rendering/drawing code.  Update can continue use setTimeout to run consistently to keep the game going - process input, update state, communicate, etc. - but rendering will run only when necessary via requestAnimationFrame.

    Like setTimeout, requestAnimationFrame needs to be used once per callback.  With a separate render loop, you might have something like this:

        function renderLoop() {       
            requestAnimationFrame(gameLoop);

            // Draw stuff…      
        }

    [Here, I’m using a tip from Martin Wells’ Sprite Animation article that putting requestAnimationFrame before drawing code can improve consistency.]

    Note that if you’re creating a browser-based (vs. Windows Store) game, you’ll want to check for vendor-specific prefixed requestAnimationFrame implementations (e.g. window.msRequestAnimationFrame).

    That’s a basic introduction, but there’s more to game loops that you should look into: loop coordination techniques, integrating event-driven updates, and different ways to compute how much to change in each iteration of the game loop.

    Basic DOM Element Animation

    One way to create HTML games that generally work well across browsers and without plugins, is to use a bunch of DOM elements (<div>, <img>, etc.) and move them around. Through some combination of JavaScript and CSS, you could animate and move things around the browser.

    Let’s take a look at how this applies to a Windows Store game. 

    Start Visual Studio 2012 and under JavaScript Windows Store templates, create a game with the “Blank App” template.  Add any image to the game’s images folder, then and add it via an <img> tag to default.html:

        <body>
            <img id="smile" src="images/Smile.png"
    />
        </body>

    Set some starting CSS in /css/default.css:

        #smile {
            position:absolute;
            background:#ffd800;
            border:4px solid #000;
            border-radius:20px;
        }

    Now we can write some basic animation in /js/default.js.  First add the highlighted to the existing args.setPromise line:

         args.setPromise(WinJS.UI.processAll().then(init()));

    Now, add a variable, init function to start things, and gameLoop to animate things:

    image

    Give it a run, and prepare to be amazed!

    imageimage

    DOM element animation is time-tested and still a perfectly viable option for many situations.  However, more options have emerged since then, so, onward!

    Animation with CSS3

    The latest features in CSS3 (aka “CSS Module Level 3”) offer 2D and 3D ways to change and animate presentation styles defined for DOM elements.  These approaches can be both concise and easy to maintain.

    CSS3 Transitions

    Transforms (both 2D and now in CSS3, 3D) can change appearance of an item – Transforms to rotate, scale, move (called “translate”), and skew (think stretch or italics and you won’t be far off), but they simply change from one state to another.

    Transitions can help you animate the presentation changes from state A to B, simply using CSS.  See the Hands On: transitions sample:

    image

    Our above DOM element example could be modified to apply a style with a transition over 4 seconds.  Something like this:

        left: 500px;
        top: 500px;
        transition:4s linear;

    CSS3 Animations

    Transitions are very useful, but support only a single timing function.  Animations introduce keyframes, which allow multiple timing functions to control animations.  Also, Animations are explicitly called (vs. Transitions, which trigger implicitly.) 

    See the Hands On: animations sample:

    image

    See Also:

    Animation with SVG

    SVG (Scalable Vector Graphics) support using markup and/or code to define shapes that retain clarity/definition as they are scaled.  SVG can even utilize styles defined in CSS, making them even more flexible.

    Because the individual components of an SVG composition are themselves DOM elements, this is technically a special case of the DOM elements approach, so many of the same techniques apply. 

    Some examples (don’t forget, View Source is your friend): SVG-oids, SVG Dice, and SVG Helicopter.

    imageimageimage

    SVG is a powerful option, but when should you use it, and how does it compare with using canvas? See How To Choose Between SVG and Canvas.

    See also:

    Animation on a Canvas

    Support for <canvas> across many browsers has made it a great option games.  Though you can add a canvas via HTML (or dynamically with JavaScript), canvas is driven entirely by JavaScript, so creating animations is a matter of knowing what you’re drawing and where, and modifying over time with JavaScript.

    New to canvas?  Try the ”drawing to a canvas” Quickstart.

    Let’s use canvas in a new example.  Create a new Blank App project and add a <canvas> element to default.html:

        <body>
            <canvas id="gameCanvas" height="800" width="800"></canvas>
        </body>

    Because JavaScript is the only way to “talk” to the canvas, we’ll focus on /js/default.js for the rest.  Add a pointer to init() like above, then the function:

    image

    Because canvas uses immediate mode graphics, it’s not as simple as creating an object and moving by setting location properties (like you can with DOM and SVG animation.)  So, canvas-based games will typically create JavaScript classes for things to be tracked and displayed, then update logic simply sets properties (x, y, etc.) on those instances, which the render loop dutifully draws to the canvas. 

    Here’s what you should see when you run the “game”:

    imageimage

    Of course, there’s a lot more to canvas and canvas animation than that.  Canvas can work with images, video, animations, gradients and much more.  For details, see the Quickstart and ”How to animate canvas graphics", and for demos see Canvas Pad and Canvas Pinball:

    imageimage

      

    Also, there are a number of libraries available to make working with canvas easier, for example EaselJS, which we’ll get to a little later.

    Animating Windows Store Games with WinJS

    The Windows Library for JavaScript (WinJS) contains helpful namespaces and classes to create animations in an efficient and reliable way.

    For example, you can use WinJS.UI.executeTransition to activate one or more CSS transitions.  Our earlier DOM element example could become:

    image

    Even more useful, there’s a full library of animations available in WinJS.UI.Animation, including animations for:

    • Adding/Removing content
    • Transitioning & navigating
    • Dragging & dropping
    • Selecting content
    • et al.

    These are most frequently helpful with Windows Store apps, but games can benefit as well.  To see some in action, try the HTML animation library sample from the Windows SDK:

    image

    See Animating your UI to learn more.

    Using Animation Frameworks

    Just as we saw with JavaScript physics engines in an earlier post, there are many frameworks out there that can make many of common scenarios easier.  Anything that can save time and effort is worth some research. 

    There are many out there, but here are a couple to get you thinking.

    jQuery & jQuery.animate()

    imagejQuery is an JavaScript library that helps make common tasks easier (and reliably cross-browser). 

    Among the many things you’ll find in jQuery, the jQuery .animate() method has many features that can apply to game animation.

    With jQuery.animate, our “smile” example could be written as:

    $('#smile').animate({
        left: '+=500',
        top: '+=500',
        }, 4000);

    A jQuery selector is used to find the smile element, then the animate method will adjust the left and top CSS properties, increasing each by 500 pixels over 4 seconds.

    For some interesting examples/tutorials, see "13 Excellent jQuery Animation Techniques" on WDL.

    CreateJS: Animation with EaselJS & TweenJS

    imageCreateJS is a family of JavaScript libraries and tools to help make things from canvas, sound, loading, to animations easier.

    I introduced using CreateJS for Windows Store Games in an earlier post.  If you’re new to CreateJS, have a look.  As the post details, EaselJS can make using canvas for games much easier.  It also supports features like SpriteSheet, which uses multiple pictures of the same object to create animations, such as a character running:

    imageimage

    However, another CreateJS library, TweenJS, is especially relevant to any discussion of animations. 

    You can use TweenJS to animate objects’ values and CSS properties.  It also offers a chained syntax, where you can specify animations as steps with delays and other connections to relate them.

    imageimage

    Like CSS Transitions and Animations, TweenJS also supports easing functions to control the rate of change of each animation.

    Game Engines

    Not only are there more animation frameworks out there, but there are game-related frameworks as well.  I’ll probably dedicate a post to this later, but some examples are Crafty, melonJS, Akihabara and more.

    A great directory of what’s out there is the Game Engines list on GitHub.

    Also see Bob Familiar’s “Windows 8 Game Development for the Win” list of various game tools and frameworks (free and commercial) that can lead to Windows Store games.

    Let’s Get Moving!

    Ready to dive in?  Here are a few more references to get you started.

    Enjoy, and good luck!

    -Chris

  • Chris Bowen's Blog

    Office Hours for Boston Area Windows 8 App Developers

    • 1 Comments

    Generation AppAre you working on a Windows 8 app or game, or want to get started but have some questions?

    Drop by to chat/code/test with us at our new One Cambridge Center offices where we’ll have open time to answer your questions and discuss your apps.

    We’ll be there each Wednesday starting tomorrow, 9/26, and for at least the next couple of weeks:

    • September 26 – 1-5 PM
    • October 3 – 1-5 PM
    • October 10 – 1-5 PM
    • October 17 – 1-5 PM
    • October 24 – 1-5 PM     
    • December 5 – 1-5 PM *new*
    • December 12 – 1-5 PM *new*

    Drop by 1 Cambridge Center whenever you’d like – no appointment needed.

    Microsoft at One Cambridge Center

    You may already be familiar with our New England Research & Development (aka “NERD”) center at 1 Memorial Drive in Cambridge, MA. 

    We very recently opened more offices nearby (I’d call it a “stone’s throw” away, but you’d need a really good arm) at One Cambridge Center.  The office has space for sales, marketing, and services, meeting rooms, and a Microsoft Technology Center.

    Area Map

    Here’s the view of the building if you’re facing west (though it now has a shiny new “Microsoft” sign at the top):

    Westward View  The Entrance

    If you’re looking at the building from this view, there’s a large, glassed-in entrance near one of the the MBTA Kendall (red line) stairways.  Just head in and take the elevator to the 2nd floor (the only option) and check in at the reception.  They’ll guide you from there.

    There are some directions and parking details here. 

    See these announcements for some background on the new offices:

     

    See you there!
    -Chris

Page 7 of 23 (458 items) «56789»