Chris Bowen's Blog

Development Practices, Tools, Technology, and Community

  • Chris Bowen's Blog

    Using CreateJS in your JavaScript-Based Windows 8 Game


    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:


    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:



    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:


    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>:

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

    (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:


    to this:


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


    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:


    [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:


    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:


    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.]


    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.


    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:



    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:


    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:



    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 Bowen's Blog

    Publishers Offering Support for User Groups


    High pile of hardcover books Run a user group?  With funding and sponsors a constant challenge, you’re probably always on the lookout for things to give away at meetings.

    Fortunately, many publishers have great relationships with the user group community and have established programs through which you can receive promotional copies of books and other items to use as giveaways or for book review programs.

    Here’s a list to get you started:

    (Know of any others?  Please comment below or contact me.  Thanks!)

    It’s a symbiotic relationship - you get stuff to help the group, and they get visibility in your community.  Be certain to take advantage of the opportunity.


  • Chris Bowen's Blog



    [Perhaps old news for some, but I've found there's enough people I've bumped into who haven't heard of this to make it worth mentioning.]

    In ADO.NET 2.0, there is a new class, SqlConnectionStringBuilder that can both create a connection string from strongly-typed properties or parse properties from an existing connection string.  It inherits from the base DBConnectionStringBuilder and there are other classes for different systems as well (e.g. ODBC and Oracle.)

    Here's a simple console-based sample:

    using System.Data.SqlClient;


      static void Main(string[] args)


        //Compose and use a connection string

        SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();

        csb.DataSource = @"LOCALHOST\SQLEXPRESS";

        csb.InitialCatalog = "SomeDatabase";

        csb.IntegratedSecurity = true;

        Console.WriteLine("Generated Connection String = " + csb.ConnectionString);

        using (SqlConnection cn = new SqlConnection(csb.ConnectionString))



            Console.WriteLine("Connection is " + cn.State);



        //Parse an existing connection string

        const string CONNECTION = "Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;Packet Size=4096;";

        SqlConnectionStringBuilder csb2 = new SqlConnectionStringBuilder(CONNECTION);

        Console.WriteLine("Server = " + csb2.DataSource);

        Console.WriteLine("Database = " + csb2.InitialCatalog);

        Console.WriteLine("User = " + csb2.UserID);

        Console.WriteLine("Password = " + csb2.Password);

        Console.WriteLine("Packet Size = " + csb2.PacketSize);



    Also note that if you need assistance with connection string formats, is a good reference site with plenty of examples.


  • Chris Bowen's Blog

    Submit and Vote for TechEd 2007 Birds-of-a-Feather Sessions


    This year's TechEd in June will continue the practice/tradition of hosting community-driven Birds-of-a-Feather (BoF) sessions. 

    Never been to a BoF session?  BoFs are not the normal "eyes forward" sessions, rather, they are "eyes everywhere".  They're open discussions on a selected topic that foster interaction among the participants.  A moderator acts as emcee and guide, but never reads from a script or presentation, encouraging the group to provide their collective insights and experiences. 

    Chances are there are plenty of people at TechEd who share your interests or face similar challenges and opportunities.  Here's your chance to find and interact with them.

    BoF sessions are coordinated by INETA and Culminis, but driven by you, the community.  How can you help?

    Don't wait, submissions and voting for BoF sessions will close April 6th.


  • Chris Bowen's Blog

    Call for Speakers: The Architect Factory 3 - Cambridge, MA on June 9


    Architect Factory

    After successful events in 2009 and 2010, the Architect Factory 3 will be held at Microsoft NERD in Cambridge, MA on June 9th from 1-8PM. 

    This free event helps experienced developers (regardless of technology) learn the skills to transition into a variety of architect roles.

    From the Architect Factory site:

    Many experienced developers look to become software architects instead of managers as the next step in their careers, but it can be difficult to find opportunities to learn about the skills needed to make the transition. Aspiring architects need a way to learn what to learn to become effective architects. The Architect Factory is designed to fill this need.

    The Call for Speakers (see below) is open now, and registration will be opening soon is now open at:

    Bryan TuttleAttendees NetworkingMore NetworkingKeynote

    Thanks to event organizer Bryan Tuttle and the team of volunteers for making this possible!

    View from NERDCall for Speakers Now Open

    This is a volunteer-driven event, and speakers from all technology backgrounds are welcome and encouraged to submit sessions that will help experienced developers to assume roles as architects. 

    Sessions should familiarize senior developers with the areas that all architects should understand to succeed.  Some examples:

    • At the EventThe Role of the Architect
    • Principles of Software Design
    • Methodology Comparisons (TOGAF, Zachman)
    • Design Patterns
    • Testing and Validation
    • Establishing Development Practices
    • Model Driven Architecture
    • Service Oriented Architecture
    • Performance
    • Interoperability
    • Patterns for Cloud Computing
    • Refactoring
    • Breakout SessionArchitecting for the User Experience
    • Working with Business Stakeholders and Development Teams

    Interested in helping the New England developer community by sharing your perspective and experiences?  Please complete the speaker registration formThank you!


    [Update 5/10 – Registration now open!]

  • Chris Bowen's Blog

    Windows 8 Developer Camps – Coming Soon!


    WindowsReady to dive in and learn more about Windows 8 and the developer opportunity it represents?  Then get ready for the upcoming series of Windows Developer Camps!  These are free, full-day, developer-focused events featuring a combination of sessions and hands-on labs, and we’ll have 10 of them right here in the east:

    Windows 8 changes everything.

    Combining the broad reach of Windows, best-in-class developer tools, a reimagined user experience, support for new chipsets, and a built-in Store with industry-leading business terms — Windows 8 is the largest developer opportunity, ever.

    Join us for this free, full-day event designed to share all the knowledge you need to start building Metro-style applications for Windows 8 – today. We’ll begin by showing you how to use Visual Studio to code fast, fluid, immersive and beautiful Metro-style applications in HTML5/JavaScript, XAML/C# and C/C++. Your existing investments in these languages carry forward, making Windows a no-compromise platform for developers.

    Whatever language you choose, your app gets deep integration with the Windows shell, including notifications, live tiles, deep links, and contracts with other apps. And now you can build once and support all Windows customers, no matter what type of PC they have – from tablets to laptops to convertibles to desktops.

    We’ll cap the day off with an open, hands-on lab session. It’s the perfect opportunity to get your dream application underway, or finish that app you’ve already started – with Windows 8 experts available to guide you through every step. Bring your laptop to join in the fun and show off your killer app.

    Get started now!

    The Schedule

    Join us in one of these cities:

    Windows Developer Camps

    Date City More
    March 27, 2012 Reston, VA Details & Registration
    March 29, 2012 Chevy Chase, MD Details & Registration
    April 11, 2012 Orlando, FL Details & Registration
    April 17, 2012 Tampa, FL Details & Registration
    April 19, 2012 Ft. Lauderdale, FL Details & Registration
    May 1, 2012 Charlotte, NC Details & Registration
    May 22, 2012 Waltham, MA Details & Registration
    May 23, 2012 Atlanta, GA Details & Registration
    May 23, 2012 Farmington, CT Details & Registration
    May 24, 2012 Malvern, PA Details & Registration

    Register today and start thinking about the possibilities and what you’ll create!


  • Chris Bowen's Blog

    HTML5 Game Camp Series Coming Soon


    Update:  Slides and links from the events are now available.

    HTML5 Logo by the World Wide Web Consortium ( to learn HTML5?  Enjoy games, too? 

    Join in the HTML5 Game Camps, free events offering a chance to learn about the next wave of web standards including HTML5, CSS3, Canvas, SVG, and more.  And while you gain practical knowledge about HTML5 and JavaScript techniques, it’s all joined together by the fun of creating games!

    Web CampsThese are part of the Microsoft Web Camps series and feature a half day of sessions followed by hands-on game creation time.  Get up to speed with HTML5 and game dev concepts in the sessions, then turn your ideas into reality as we leave the slides behind.  Design and develop creations of your own, with plenty of guidance and help for your questions.

    The Schedule

    Here’s where the HTML5 Game Camps are heading, with links to details and registration:

    • Atlanta, GA – November 10 – Georgia Tech – Registration
    • Cambridge, MA – November 17 – Microsoft NERD – Registration
    • New York, NY – December 9 – Columbia University – Registration
    • University Park, PA – December 14 – Penn State – Registration

    (Note some of these events are morning through afternoon, and others are afternoon to evening.)

    Don’t forget to read the prep steps at the bottom of the event pages.  To get ready for coding, consider installing WebMatrix (it’s free) and other tools via the Web Platform Installer.  Also, consider attending with a friend and tackling the game creation as a team!

    Bonus Points for Rochester, NY

    For those of you in the Rochester, NY area, there’s a special RIT Game Camp the weekend of December 2nd-4th.  It’s all about game development, and features multiple ways to learn about and create games:

    • RIT Game JamHTML5 Camp (Saturday, 12/3)
    • Game Jam (all weekend)
    • XNA in a Day (Saturday)
    • Windows Phone Camp (Saturday)

    It’s free, hosted on the campus of RIT, and open to everyone.  So, choose what you’d like to participate in, and enjoy!


  • Chris Bowen's Blog

    Presentation Tip - Randomizing Giveaways


    MPj03853160000[1]A simple tip for those times when you have things to give away randomly to your audience and forgot your bag of dice...


    This site features a Random Sequence Generator which is simple, but effective. 

    Just have your audience count off, enter the count, then call out the first X numbers based on how many giveaways you have.  Because it's a full sequence, you won't get duplicates and you'll have extra numbers if someone leaves or doesn't want a prize.


    P.S.  Here's an earlier post with five other presentation tips.

  • Chris Bowen's Blog

    Beantown .NET Moves to NERD on April 2nd



    Some breaking news for .NET developers in the greater Boston area - the Beantown .NET User Group, organized by MVP Ben Day, is moving across the Charles to Microsoft’s New England Research & Development Center (NERD) in Cambridge!

    This will give NERD it’s first .NET-focused user group and gives Beantown .NET plenty of room to grow.

    OMD AerialThe first meeting at NERD is on April 2nd from 6:00-8:00 (directions) and should be a fun chance to hear plenty of views and practices:

    The Unit Testing Throwdown


    Oddly, there seems to be almost no consensus about unit testing.  Lots of developers think that unit testing is dumb.  Plenty are ambivalent.  Some love it.  Even among those devs who are already sold on unit testing, there’s no consensus.  Sure, we might agree about some of the helpful things to do like using the Repository pattern, interface-driven design, and mocking frameworks but ask 10 developers how they’d unit test something and you’ll get 30 different answers.


    Well, enough with the armchair quarterbacking.  It’s on!  You don’t like how I write my tests?  I want to know why.  Come show me how you do it.  Don’t like unit tests at all?  Come tell us why.  Got some killer technique?  Got an opinion about how much logic you put in each test method?  Tonight’s the night to bring out The Awesome.


    The plan is to show code samples, gather around the whiteboard, and by the end (hopefully) sort out some Real-Life Best Practices for unit testing.


    BTW, if you have unit testing topics that you think we should put on the agenda, email them to

    See you there!


  • Chris Bowen's Blog

    Tech & Developer Events in the Northeast – May 2012 Edition


    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.


    [Last updated 5/4/2012]


    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


    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


    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


    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

    Office 2007 Document Inspector


    I have a new favorite feature in Office 2007.  I often need to send documents to contacts, but I want to ensure there's no extra information tagging along for the ride (revision history, document properties, speaker notes in PowerPoint, etc.) 

    You used to have to resort to macros or manual removal, but in Office 2007, there's a built-in tool called the Office System Document Inspector that will cleanse Word, Excel and PowerPoint documents of comments, annotations, history, etc.

    To launch the Inspector, click the "big office button" in Word, Excel, or PowerPoint, choose "Prepare", then Inspect Document:


    The Document Inspector will then display, with options that vary based on the type of document you've opened.  For example, in PowerPoint you'll see:


    Choose which information you'd like to find and remove, then click Inspect.  The Office Developer Center has more information on this tool.

    Hope you find this useful!


    Technorati tags: ,
  • Chris Bowen's Blog

    Mix07 Session Recordings Available


    If, like me, you couldn't swing out to Las Vegas for Mix07 this time around, you can now access and download recordings of the keynotes, sessions, and panels.  (Actually, even if you did attend Mix you'll want these since you can't attend every session while you're there!)

    Head to

    Not all of the content has been processed and posted yet, so you can subscribe to an RSS notification feed to see when new sessions are made available.

  • Chris Bowen's Blog

    Building Community at the Northeast User Group Leader Summit


    Reception in the 10/11 Floor Atrium On Saturday, May 2nd, O’Reilly Media and Microsoft partnered to host the first Northeast User Group Leader Summit (NEUGLS) at the Microsoft NERD campus in Cambridge, MA.

    The event brought together about 100 community leaders, representing over 70 user groups (listed here) in the northeast, for a day to network and discuss community.  A wide variety of tech areas were represented (.NET, PHP, Linux, Hacking, Ruby, and others), and leaders came from as far away as northern Vermont, Maine, New York City, and Philadelphia.

    The Concept

    Tech community groups face many of the same challenges – “Where can we meet?” “Who will speak?” “Are there legal concerns?” “How do we pay for this?”  With so many shared concerns, it seemed there was a chance to strengthen the northeast community by getting together to talk about community (yes, very “meta”.)

    Hallway Conversations and Book Giveaway BrowsingBy leaving behind the specific tools and technologies our groups represented, everyone found there was a great deal in common to discuss. 

    The diversity of groups was key, helping leaders forge new connections and exchange many new ideas. 

    David Christian (leader of the NYC Python group) captured the essence in his blog post:

    I'd like to see these same connections form around the country. This type of event benefits particularly from having many local meetings as opposed to one national one, due to the benefits of simply getting tech leaders in the area to meet and exchange information in ways they might not do if when siloed into their particular communities.

    The Event

    The Session Grid The goals for the day were to share ideas and to make connections.  The content was facilitated with an “unconference” approach, where the schedule had no fixed sessions and attendees created and scheduled sessions as conceived throughout the day.  Ideas were posted off the schedule/grid, discussed, and popular ideas were moved to open slots.

    All told, there were 24 sessions ranging from converting members to leaders, to finding venues, to dealing with finances. 

    Like many, I was sad not to have a clone who could attend every session, but “scribes” volunteered for each session to record notes to the event Wiki so people could benefit from the ideas in sessions they couldn’t attend (up to seven sessions were run concurrently).  You can view the full list of sessions and notes.

    Jeff Potter Cools Things DownThere were three primarily social parts of the schedule.  After some initial networking, everyone introduced themselves (name, group, and three descriptive words) in the opening session then adjourned for lunch and to create the schedule.

    The afternoon break was a relaxed chance to break into smaller groups to make meeting others easier.  The break featured technologist and “food hacker” Jeff Potter hosting an extreme ice cream making social, where teams made different flavors using liquid nitrogen to quickly freeze the mixtures.  The event closed with an evening social with drinks and appetizers to relax, share a few more ideas, and make some final connections.

    Discussing How to Find/Grow Speakers

    Buzz and Feedback

    The hashtag for the event was #NEUGLS, and it was good to see the general buzz on Twitter.

    Thanks to these attendees for their summary posts:


    Sincere thanks to the team who made this event possible:

    • O’ReillyMarsee Henon, Laurel Ruma, Laurel Ackerman
    • MicrosoftChris Bowen, Gus Weber, Jim O’Neil
    • CommunityJeff Potter, John Ross, Ron Thibeau, Jon Pierce, Shimon Rura 

    First, thanks to our fantastic event partner O’Reilly Media for their monumental efforts in making this event a success.  They did a huge amount of work to help bring this together, and I can’t wait to work with them again on another event!

    Shimon Rura and Darius Kazemi on Running Large GroupsSpecial thanks to Jeff Potter for hosting the incredibly fun (and tasty) afternoon ice cream social break!

    Thanks to Jon Pierce and Shimon Rura for sharing ideas on the event and for a great job reaching out to community leaders, and to John Ross and Ron Thibeau (of for helping with planning and registration.

    Thanks to O’Reilly’s own Rachel James for taking and sharing a wonderful set of pictures from the event.

    Thanks to O'Reilly, Pragmatic Programmers, Sams, Que, Peachpit, Addison Wesley, Make, and APress for donating the many books used as giveaways.

    And finally, thanks to everyone who took precious weekend time to attend and participate in the event!

    Next Time?

    Based on feedback from attendees, it’s clear there’s a need for this kind of event and an interest in holding another one of these next year, if not sooner. 

    Reception on the 10th Floor at the Northeast User Group Leader SummitIt would be great to hear your feedback.  When should this be done again?  Would you change anything about the logistics?  What would you like to see next time?

    For more on the event, including participating groups and notes from each of the sessions, see the NEGULS wiki.

    If you live elsewhere and are interested in hosting something like this in your area, feel free to contact me and I’ll share details on how the team organized this event.


  • Chris Bowen's Blog

    New User Group! New England ASP.NET Professionals


    A new user group has been formed to focus on practices for building web applications using ASP.NET and related technologies.  Led by community veteran Dean Serrentino, the New England ASP.NET Professionals Group will have its first meeting on March 16th and the first speaker is the well respected technologist, speaker, and author Fritz Onion:

    Fritz Onion      New England ASP.NET Professionals
          March 16th, 6:15-8:30 PM
          Microsoft, 201 Jones Road, Waltham, MA
          Fritz Onion, Pluralsight
          "The Changing Face of ASP.NET Development:
          Ajax, MVC, jQuery, DynamicData: Things you
          should know before you start your next ASP.NET project"

    Note that this March 16th meeting isn’t on the group’s normal cycle, which will be the 4th Tuesday of each month, starting in April.

    Thanks to Dean for taking the initiative to create this new group, and to Fritz for helping to kick things off!


  • Chris Bowen's Blog

    ASP.NET MVC Resource Guide


    MVCThis post is inspired by the presentation that Patrick Hynds and I gave on ASP.NET MVC at StackOverflow’s DevDays conference in Boston.  Whether you attended DevDays or  happen on this from the web, I hope this is useful for you to learn more about ASP.NET MVC. (Let me know if you have additions or questions.)

    Getting Started

    ASP.NET MVC is an implementation of the Model-View-Controller pattern on ASP.NET and is freely available via:

    ASP.NET MVC 2 Preview 2 is also available, providing a look at the next version.  Note that ASP.NET MVC 2 will also ship with Visual Studio 2010 (itself available as Beta 2).

    Learning ASP.NET MVC

    So, why is this useful? There’s a 3 minute overview "Why ASP.NET MVC?" for decision makers, and a 10 minute technical “ASP.NET MVC How?” video for developers.

    ASP.MVC Learn To start learning ASP.NET MVC, go to  There’s tutorials, videos, sample applications, etc. to get you underway.

    Then, grab a cup of coffee and sit down to study the Nerd Dinner sample application.  It has plenty of intermediate concepts like testing, repository, validation, and more.

    Here are some other places you can turn for more:

    Going Deeper

    These are intermediate topics we touched on in the Boston session, and pointers for learning more.


    Learning the M-V-C of ASP.NET MVC is only part of the story.  Routing is what takes an inbound web request and maps it to a controller action (and arguments).  There are routing tutorials on the ASP.NET site and on MSDN.

    You can also define custom routes, route constraints (a route that is satisfied only when constraints are met), and custom route constraints.

    T4 Templates

    Code generation in Visual Studio is customizable via T4 templates, and ASP.NET MVC uses these as well.  Need a different view or controller created in your projects?  Change them or add new ones.  They can change for all projects, or you can add/override them in specific projects.

    Learn more at T4 Templates: A Quick-Start Guide for ASP.NET MVC Developers.

    MVC Contrib

    One of the key features of ASP.NET MVC is flexibility in implementation.  Head to MVC Contrib to find additional options for extending and modifying how ASP.NET MVC functions, including:

    • Filters
    • View engines
    • Controller factories
    • Model binders
    • Routing
    • Controllers
    • and more

    Key Bloggers Covering ASP.NET MVC

    Attendee Questions

    We had good questions during and after the DevDays session and I wanted to share details for some of the key ones:

    Model Binding

    There were a few questions about taking data from a submitted page and getting it to arguments in an action method.  This is well supported via model binders, which let you map posted form data to classes passed as arguments to action methods.

    Learn more about model binding at:

    ViewModel Pattern

    Using the ViewData dictionary is one way to get data to a view, but you can also create classes to contain that data. Called the ViewModel pattern, these classes help to structure and identify the data needed.

    You can learn about ViewModel here:

    ASP.NET WebForms vs. ASP.NET MVC?

    If you’re wondering whether/when to use ASP.NET WebForms or ASP.NET MVC, Rachel Appel has a good blog post and a session recording from Mix ‘09 on the topic.

    It’s important to keep in mind that you can mix ASP.NET MVC and ASP.NET WebForms in an application, so this isn’t necessarily an either-or proposition.


    Let me know if you’ve found something else particularly helpful in learning about ASP.NET MVC.  I’ll be happy to add it.


  • Chris Bowen's Blog

    IronPython and Silverlight Resources


    This is a long-overdue follow-up to my visit with the Cambridge Python Meetup Group.  I had a great time speaking with the group about Silverlight, IronPython and dynamic languages. 

    Here are the resources I showed or that we discussed during the session:


    IronPython and the DLR



    Thanks to the group for being an excellent audience and to Peter Marquez for being a great host!


    P.S.  For those of you interested in IronPython and dynamic languages, attend our next Roadshow (from 9/10-9/20) where I'll be spending one of the sessions covering those very topcs!


  • Chris Bowen's Blog

    New England Code Camp 14 – The Schedule!


    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)
           201 Jones Road (6th Floor), Waltham, MA

    Register at

    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.

    (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 Bowen's Blog

    Beta Certification Exams for Silverlight and Windows Azure



    The Microsoft Certifications blog has announced availability of two beta exams:

    Space permitting, you can take these beta exams for no charge. 

    Beta exams are longer, but count for the same credit as the exam in released form and you’ll be helping Microsoft improve the exams for final release.

    imageBeta Exams at PDC10

    Going to PDC10?  You can take these exams at the PDC testing lab in building 40 from 10/27 through 10/29.

    Logistics are described here.


  • Chris Bowen's Blog

    New Deitel Resource Centers: ASP.NET 3.5, LINQ, Popfly, WPF, and SharePoint


    Deitel recently released more topics of interest to .NET developers in their excellent Resource Center series

    Created to help you find articles, tutorials, blogs, downloads, FAQs, and more, here are the new centers:

    I find these valuable since they're not simply lists of links.  Most resources have brief descriptions of each item written by someone who has taken the time to review the resource. 

    Worth a look!


    Technorati tags: , , , ,
  • Chris Bowen's Blog

    A Guide to the Internet Explorer 8 Developer Tools


    IE8 This is a follow up post for a talk I recently gave at the The Ajax Experience conference in Boston about using the developer tools included with Internet Explorer 8.

    Want to see the tools in action?  I have a screencast on Internet Explorer 8 from a dev perspective on Channel 9. I also cover new features and compatibility, but skip to 24:30 for just the developer tools:

    IE8 Screencast

    Getting Started with the Developer Tools

    Simple enough! In IE8, hit F12 or choose Tools-> Developer Tools to start.


    Window Options You can either run the tools in browser or press the double window icon at top right to detach for a second monitor or to use side by side with the browser.

    The tools offer a full menu and four tabbed sections of features: HTML, CSS, Script, and Profiler.

    Working with HTML and CSS

    The first tab (HTML) gives access to inspecting the structure of the page, selecting and searching elements and HTML, modifying values, saving locally-made changes, and more.  Tip: click the button that looks like a mouse pointer to quickly select a page element (or press CTRL+B).

    The right-hand pane shows a per-element CSS summary (Style) and hierarchy/trace (Trace Styles), offers a visual layout tool, and a way to set custom attributes.  Tip: Trace Styles is particularly effective way to diagnose style inheritance issues (e.g. “why is that text red!?”).

    Layout Mode

    The second tab (CSS), displays current CSS classes and styles, allowing you to view specific CSS files in use by the page, make changes, and search.


    For details, see Debugging HTML and CSS with the Developer Tools on MSDN.

    Debugging Script

    The Script tab lets you work with script, setting breakpoints, debugging through code and breaking on errors. 

    To debug, just set any breakpoints you need (you can choose other files using the drop-down list) then press “Start Debugging”.  You can also enable Break on Error mode (CTRL + Shift + E).  Once at a breakpoint, step into/through with the buttons or F10, F11, and Shift+F11.


    There’s a console in the right-hand pane which supports Console.Log/Warn/Info/Error output from your script.  The console also supports direct script execution.  Tip: this is a great place to learn/test commands from various Ajax and Javascript libraries. 

    The pane also lets you view breakpoints, local and watch variables, and the call stack.

    See Debugging Script with the Developer Tools for more.

    Profiling Script

    One of the most useful features is the ability to analyze code to measure it’s performance.  Just select the fourth tab (Profiler) and click “Start Profiling”.  Use the part(s) of the application you’d like to analyze, then click “Stop Profiling”.


    You’ll see a summary report showing functions, how many times they were called (Count), timing.  Inclusive time is the function plus any called functions, and exclusive time is that function only.  Tip: there are other columns as well (% time, min/max time, etc.), but by default they’re collapsed, so click between column headers to expand them.

    Use the Current View drop-down to switch between a list of functions or a call tree view.

    You can also click the “Export Data” button to save the profiling report externally (e.g. to load into Excel).

    See Profiling Script with the Developer Tools for more.

    Menu Options

    On the right side of the menu, you’ll see options to change the Browser Mode and Document Mode.  This lets you modify the browser behavior and page settings to test under different rendering and display conditions.  See this MSDN article for more.


    Don’t forget to look through the many options in the various menus.  For example:

    • Color PickerImage and Link reports
    • Element outlining (tables, divs, etc.)
    • Cache management
    • Pop-up blocker, script, and CSS disabling
    • ValidationTools to resize the browser, measure items, and select colors
    • Options to send a page for validation
    • Clear/view cookies


    Some details for questions asked during and after the session:

    • The Search bar supports the W3C Selectors API, but you need to type an “@” symbol before your expression, otherwise it’s treated as a literal text search.
    • The script profiler works on a usage basis, profiling all code executed between using the “start profiling” and “stop profiling” commands. I have not seen a way to affect which scripts code is profiled during that time (like you can with using the Profiler APIs to affect Team System’s instrumentation profiling).

    Internet Explorer Resources

    Finally, a summary of resources to get you underway:

    I hope you enjoy using the developer tools!


Page 3 of 23 (458 items) 12345»