<?xml version="1.0"?>
<News hasArchived="true" page="8467" pageCount="10726" pageSize="10" timestamp="Fri, 17 Jul 2026 04:15:49 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8467">
<NewsItem contentIssues="true" id="33427" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33427">
<Title>Integrating a JS Build Process Into MSBuild in Visual Studio 2012 Express</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=33539&amp;c=1174944125" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=33539&amp;c=1174944125" alt="" style="max-width: 100%; height: auto;"></a><p> I’ve been working with ASP and ASP.NET for about ten years now, starting with ASP classic and settling on .NET 2.0 as my favorite. My new year resolution this year (2013) was to upgrade my .NET work to .NET 4.0 using Visual Studio 2012 Express and really get to grips with MSBuild, so that I can concatenate and minify my JavaScript files as part of the normal build process of a .NET project, in Visual Studio.</p>
    <p>My first love is to use Ant in NetBeans with a PHP or JSP platform for this kind of work, but my company’s main website runs on a .NET platform and it’s time to update it, so I decided to bite the bullet and dive back in to some serious study of creating a fully integrated build process using MSBuild.</p>
    <p>This tutorial will show you how to edit your Visual Studio 2012 Express project file to include your own separate build file which will perform the now widely familiar process of concatenating and minifying a set of JavaScript modules into one file ready for deployment.</p>
    <p></p>
    <hr>
    <h2>Software Requirements</h2>
    <p>I wanted a non-trivial project to demonstrate this process, because I find the devil is in the details. I have often faithfully followed an overly-simple tutorial or introduction to an unfamiliar subject, then discovered that the tutorial did not prepare me for when you want to do something even slightly difficult. So, in this tutorial we’ll be attempting to marry Knockout.js and jQuery UI.  We will also be using a <a href="http://json.org/" rel="nofollow external" class="bo">JSON</a> file with a hierarchy of data to define a menu. We will use a <a href="http://knockoutjs.com" rel="nofollow external" class="bo">Knockout.js</a> template with a <code>foreach</code> binding which loops through the JSON data to emit a hierarchy of <code>ul</code> elements to act as the HTML markup for a menubar compatible with <a href="http://jqueryui.com" rel="nofollow external" class="bo">jQuery UI</a>.</p>
    <p>Sadly, the menubar is not yet available (versions 1.9 or 1.10) bundled with jQuery UI, so you need to download the menubar files from the <a href="https://github.com/jquery/jquery-ui/tree/menubar" rel="nofollow external" class="bo">Menubar</a> branch of jQuery UI.  You also need the <a href="https://github.com/yui/yuicompressor/downloads" rel="nofollow external" class="bo">YUI Compressor</a> for minifying your JavaScript source files. For this tutorial, you will need <a href="http://www.microsoft.com/visualstudio/eng/downloads" rel="nofollow external" class="bo">Visual Studio 2012 Express for Web</a> installed. You will also need to download:</p>
    <ul>
    <li>
    <a href="http://knockoutjs.com/downloads/index.html" rel="nofollow external" class="bo">Knockout.js</a>.</li>
    <li>
    <a href="http://jquery.com/download/" rel="nofollow external" class="bo">jQuery</a>.</li>
    <li>
    <a href="http://jqueryui.com" rel="nofollow external" class="bo">jQuery UI</a>.</li>
    <li>The <a href="https://github.com/jquery/jquery-ui/tree/menubar" rel="nofollow external" class="bo">Menubar</a> branch of the jQuery UI project.</li>
    <li>The <a href="https://github.com/yui/yuicompressor/downloads" rel="nofollow external" class="bo">YUI Compressor.</a> I’m using version 2.4.7.</li>
    </ul>
    <p> If you’re not used to JSON, it’s a good idea to visit the <a href="http://json.org/" rel="nofollow external" class="bo">JSON</a> website.</p>
    <hr>
    <h2>Why MSBuild and Not NAnt?</h2>
    <p> If you read my last tutorial <a href="http://net.tutsplus.com/tutorials/javascript-ajax/using-ant-to-build-a-javascript-library/" rel="nofollow external" class="bo">Using Ant to Build a JavaScript Library</a>, you might be wondering why this tutorial is not about NAnt. Well, with my shiny new installation of Visual Studio 2012 Express, I would like to try to bring my development under one roof. My absolute favorite IDE for C# Assembly development, for many years, was <a href="http://www.icsharpcode.net/" rel="nofollow external" class="bo">SharpDevelop</a>. They moved some years ago from NAnt to MSBuild for SharpDevelop version three. It’s finally time for me to follow suit.</p>
    <blockquote><p> We are no longer using NAnt in our build process, we switched entirely to MSBuild / CruiseControl.NET. And we don’t view the ability to depend on the dominant operating system as a step back: it helps reduce the number of moving parts, the different configurations, different user setups.<br> <br> <a href="http://community.sharpdevelop.net/forums/p/4925/16264.aspx" rel="nofollow external" class="bo">#D 3.0 – Dropping NAnt Support: Why?<br> </a></p></blockquote>
    <h2>
    <span>Rationale:</span> Why Integrate the JavaScript Build Into the .NET Build?</h2>
    <p> For years, for my .NET development, I’ve worked with three different IDEs simultaneously:</p>
    <ol>
    <li>Sharp Develop for my C# assembly development, but I also shoe-horned the JavaScript and CSS concatenate and minify build process into that environment with a specially installed copy of NAnt.</li>
    <li>Visual Studio (2005 etc) for the master pages, content pages.</li>
    <li>An external editor like Aptana to handle JavaScript development.</li>
    </ol>
    <p> Using three IDEs like this was exhausting (and surprisingly taxing for my CPU and RAM), so another new year’s resolution is to bring everything together into Visual Studio. Hence the need to understand how to integrate my JavaScript build process into the overall project build.</p>
    <blockquote><p> One of the major draws of MSBuild for me (on Windows platforms) is that it comes as part of .NET itself. That means that any Windows machine that is up-to-date with Windows Update will have MSBuild available.<br> <br> <a href="http://stackoverflow.com/questions/476163/nant-or-msbuild-which-one-to-choose-and-when" rel="nofollow external" class="bo">Comparison of NAnt and MSBuild on StackOverflow.<br> </a></p></blockquote>
    <h2>Setting Up Your Environment</h2>
    <p> Open a new project in Visual Studio 2012 Express.  I’ve called it <code>NetTutsMSBuildJs</code> and I’ve created it inside my <code>NetTuts</code> folder here: <code>C:\NetTuts\MSBuildJs</code>.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/New-Project-Dialog-Box.gif" alt="New Project Dialog Box" width="556" height="354" style="max-width: 100%; height: auto;"><br> <p> As you can see in the screenshot, I have created a number of folders as follows:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/js_folders.png" alt="js_folders" width="294" height="390" style="max-width: 100%; height: auto;"><br> <table><tbody>
    <tr>
    <td> <strong>Folder</strong>
    </td>
    <td> <strong>Contents</strong>
    </td>
    </tr>
    <tr>
    <td> css</td>
    <td> Production release versions of jQuery UI CSS files. For this tutorial, we’re using the smoothness theme.</td>
    </tr>
    <tr>
    <td> debug</td>
    <td> Various versions of the <code>Default.aspx</code> web form page for debugging purposes.</td>
    </tr>
    <tr>
    <td> debug-js</td>
    <td> Three folders: <code>concat</code>, <code>min</code> and <code>src</code>.</td>
    </tr>
    <tr>
    <td> js</td>
    <td> Production release versions of jQuery, jQuery UI and Knockout.</td>
    </tr>
    <tr>
    <td> jsbuild</td>
    <td> An XML build file with all the tasks needed for the JavaScript build and a copy of the YUI compressor.</td>
    </tr>
    <tr>
    <td> json</td>
    <td> The key JSON file <code>menubar-data.json</code> which has the data needed to build the menubar. Also the JSON files used to populate the page according to the user’s menu choices.</td>
    </tr>
    </tbody></table>
    <p> Notice some of the folders are greyed out. This is because I’ve excluded them from the project. You can toggle this setting from the context menu:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/exclude_from_project.png" alt="exclude_from_project" width="368" height="370" style="max-width: 100%; height: auto;"><br> <p> It’s easy to delete and create directories during the build process, but there’s no way to include or exclude items programmatically from the project.  The concat and min folders in <code>debug-js</code> are disposable, generated automatically by the build process from whatever you’ve created in the <code>src</code> folder, so it’s appropriate to exclude them from the project. Note, you can’t exclude the <code>debug</code> folder from the project because it contains .NET web form pages that have code-behind files. If you exclude the folder, the  web form pages throw errors saying that the classes defined in the code-behind files can’t be found.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/show_all_files.png" alt="show_all_files" width="285" height="168" style="max-width: 100%; height: auto;"><br> <p> You can toggle whether these excluded objects should be shown by going to the <strong>Show All Files</strong> icon at the top of the Solution Explorer and clicking. I always want to be able to see them.</p>
    <p> There’s one more key piece of configuration we need for this project. IIS and the built-in IIS Express don’t include a JSON mime type by default, and we will be using JSON files extensively to deliver content, so we have to add that to the <code>Web.config</code> file. Within the <code>configuration</code> element add a <code>system.webServer</code> element like this:</p>
    <pre>    &lt;system.webServer&gt;&#x000A;            &lt;staticContent&gt;&#x000A;                &lt;mimeMap fileExtension=".json" mimeType="application/json" /&gt;&#x000A;            &lt;/staticContent&gt;&#x000A;        &lt;/system.webServer&gt;&#x000A;    </pre>
    <hr>
    <h2>
    <span>The JavaScript Project: </span>Building a Menubar Using JSON, Knockout and jQuery UI</h2>
    <p> The focus of this tutorial is on how to build a JavaScript project within a .NET project, but we can’t go any further until we have something to build, so now let me explain the slightly ambitious project I have in mind.</p>
    <p> Here’s a UML component diagram showing all the pieces that the project will need. Please note this is a comprehensive component diagram from a developer’s point of view showing all sorts of disposable artifacts that are only important, for instance, for debugging. It’s not a component diagram of only the key artifacts needed for the target system.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/Component-Diagram.png" alt="Component Diagram" width="500" height="435" style="max-width: 100%; height: auto;"><br> <blockquote><p> A component diagram defines the composition of components and artifacts in the system.<br> <a href="http://publib.boulder.ibm.com/infocenter/rsdvhelp/v6r0m1/index.jsp?topic=%2Fcom.ibm.xtools.modeler.doc%2Ftopics%2Fccompd.html" rel="nofollow external" class="bo">IBM: Component Diagrams</a></p></blockquote>
    <p> In UML 2.0, “component” is used to describe a more abstract idea: autonomous, encapsulated units; “artifact” is used to describe what I’m showing in this diagram: files and libraries. It’s an ideal diagram to show how the various files depend on each other. For instance, all the web form pages depend on the Main master page.  The <code>js.build</code> file won’t work if the compressor jar file is not present. The project file and the <code>js.build</code> file are, annoyingly, mutually dependent. If the <code>js.build</code> file is not present, the project will not load; <code>js.build</code> can’t run alone, the tasks defined there are triggered  by the AfterBuild event in the overall  project build.</p>
    <p> For this tutorial, I want to display a horizontal menubar using the menubar branch of jQuery UI. To do that, I have a JSON file with the hierarchical data for the menu and a Knockout.js template looping through this data to render the<br> HTML markup needed by jQuery menubar. I’ve added a callback function <code>renderMenu</code> which is fired by the <code>afterRender</code> event in the Knockout template. <code>renderMenu</code> then simply makes a call to <code>menubar</code> to finally render the menubar with all the lovely jQuery UI shiny features.</p>
    <hr>
    <h2>
    <span>Step 1: </span>The Production Release Files</h2>
    <h3>CSS</h3>
    <p> Download the full bundle from <a href="http://jqueryui.com/download/" rel="nofollow external" class="bo">jQuery UI</a> including a theme of your choice. After unzipping your download, drill down to the folder called <code>css</code> where you’ll find a folder with the name of your chosen theme. In my case, I’ve chosen smoothness. Open that folder and you should see the files you need:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/jquery_ui_css.png" alt="jquery_ui_css" width="499" height="453" style="max-width: 100%; height: auto;"><br> <p> Copy the whole theme folder (smoothness) and paste it into your <code>css</code> folder in the project. Come back to Visual Studio, click the <strong>refresh icon</strong> at the top of the Solution Explorer and the smoothness folder should appear in the <code>css</code> folder. You should include the folder in the project as well.</p>
    <p> In addition to jQuery UI and a specific theme, you also need the small CSS file specifically for the menubar. After downloading the <a href="https://github.com/jquery/jquery-ui/tree/menubar" rel="nofollow external" class="bo">menubar project from github</a>, drill down to the <code>jquery.ui.menubar.css</code> file following this path: <code>\jquery-ui-menubar\themes\base\jquery.ui.menubar.css</code>. Copy that to the <code>css</code> folder of your project.</p>
    <h3> JavaScript<br>
    </h3>
    <p> Download up-to-date versions of production releases of jQuery, jQuery UI and Knockout. I’m using 1.8.2 for jQuery, 1.9.2 for jQuery UI and 2.1.0 for Knockout. Copy them to the <code>js</code> folder in your project.</p>
    <p> You’ll also need the latest, uncompressed release of <code>jquery.ui.menubar.js</code>, downloaded from the <a href="https://github.com/jquery/jquery-ui/tree/menubar" rel="nofollow external" class="bo">Menubar</a> branch of the jQuery UI project. Copy that to the <code>debug-js\src</code> folder in your project.</p>
    <h3> The Main Master Page<br>
    </h3>
    <p> We’re creating several versions of the same page to help debug and test our JavaScript. The master page can of course help to prevent duplication of code.  Call this master page <code>Main.Master</code>.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/add_new_master_page.png" alt="add_new_master_page" width="500" height="318" style="max-width: 100%; height: auto;"><br> <p> Leave the title element blank (we’ll define the title for each page that uses this master) and link to all the stylesheets we need for jQuery UI and the menubar:</p>
    <pre>&lt;title&gt;&lt;/title&gt;&#x000A;    &lt;link rel="stylesheet" type="text/css" href="/css/smoothness/jquery-ui-1.9.2.custom.css"&gt;&#x000A;    &lt;link rel="stylesheet" type="text/css" href="/css/smoothness/jquery-ui-1.9.2.custom.min.css"&gt;&#x000A;    &lt;link rel="stylesheet" type="text/css" href="/css/jquery.ui.menubar.css"&gt;&#x000A;    </pre>
    <p> Add a <code>ContentPlaceHolder</code> just before the end of the body where each page will link to the relevant JavaScript files</p>
    <pre>    &lt;asp:ContentPlaceHolder ID="JsScripts" runat="server"/&gt;&#x000A;    </pre>
    <hr>
    <h2>
    <span>Step 2: </span>The JSON Definition of the Data Needed for the Menubar</h2>
    <p> Here is the JSON object defining a menubar that we might use for an English Instructors’ website. Create a JSON file called <code>menubar-data.json</code> in the <code>json</code> folder and populate it with the following JSON.</p>
    <pre>{&#x000A;        "nodes":[{&#x000A;            "text": "For Students", &#x000A;            "nodes": [&#x000A;    &#x000A;            {&#x000A;                "text": "Listening Practice", &#x000A;                "url":"listening-practice.json"&#x000A;            },&#x000A;            {&#x000A;                "text": "Grammar", &#x000A;                "url":"grammar.json",&#x000A;                "nodes": [&#x000A;    &#x000A;                {&#x000A;                    "text": "Verb Forms", &#x000A;                    "url":"verb-forms.json",&#x000A;                    "nodes": [&#x000A;    &#x000A;                    {&#x000A;                        "text": "Verb Tense and Aspect",&#x000A;                        "url":"verb-tense-and-aspect.json"&#x000A;                    },&#x000A;                    {&#x000A;                        "text": "Modal Auxiliary Verbs",&#x000A;                        "url":"modal-auxiliary-verbs.json"&#x000A;                    }&#x000A;                    ]&#x000A;                },&#x000A;                {&#x000A;                    "text": "Verb Patterns",&#x000A;                    "url":"verb-patterns.json"&#x000A;                },&#x000A;                {&#x000A;                    "text": "Noun phrases",&#x000A;                    "url":"noun-phrases.json"&#x000A;                },&#x000A;                {&#x000A;                    "text": "Complex sentences",&#x000A;                    "url":"complex-sentences.json"&#x000A;                }&#x000A;                ]&#x000A;            }&#x000A;            ]&#x000A;        },&#x000A;        {&#x000A;            "text": "For Teachers", &#x000A;            "nodes": [&#x000A;            {&#x000A;                "text": "Teaching Materials",&#x000A;                "url":"teaching-materials.json"&#x000A;            },&#x000A;            {&#x000A;                "text": "Tests and evaluation grids",&#x000A;                "url":"tests-and-evaluation.json"&#x000A;            },&#x000A;            {&#x000A;                "text": "Media",&#x000A;                "url":"media.json"&#x000A;            }&#x000A;            ]&#x000A;        }&#x000A;        ]&#x000A;    }&#x000A;    </pre>
    <p> Top-level nodes have no URL property defined, so when clicked, they will just display sub-menu items. The sub-menus contain nodes with the URL property defined. When you click one of these nodes, the system will retrieve the JSON data from the file at that URL.</p>
    <p> Each JSON file linked to, in the menubar, contains some content in a simple structure defining a header and some text:</p>
    <pre>{&#x000A;        "header": "Grammar", &#x000A;        "text": "A series of exercises helping you to improve your grammar."&#x000A;    }&#x000A;    </pre>
    <hr>
    <h2>
    <span>Step 3: </span>The Knockout Template for the Menubar</h2>
    <p> We define this in <code>Main.Master</code>.  There is no obvious way of minifying or improving on it for deployment so I want to re-use it with every version of the pages that link to the master page.</p>
    <p> I wanted to have just one Knockout template to render the HTML markup (a set of nested <code>ul</code> elements) for the menubar, but not surprisingly the <code>afterRender</code> event associated with the <code>foreach</code> binding fires with every loop, not at the end of the whole rendering process. So, I needed to create an <code>observableArray</code> with only one <code>ul</code> element, bind that to a Menu template which renders the outermost <code>ul</code> element, and nest the menubar template inside it. I can then handle that single <code>foreach</code> event with my function <code>renderMenu</code>, which calls the jQuery menubar constructor and renders the menubar in all its glory. I got a lot of help on this from this thread: <a href="http://stackoverflow.com/questions/7313554/nested-templates-with-knockoutjs-and-mvc-3-0" rel="nofollow external" class="bo">nested-templates-with-knockoutjs-and-mvc-3-0</a>.</p>
    <p>Here is the menu template:</p>
    <pre>        &lt;script type="text/html" id="MenuTemplate"&gt;&#x000A;                &lt;ul class="ui-widget-header" id="menu" data-bind="template: { name: 'MenuNodeTemplate', foreach: $data.root.nodes}"&gt;&lt;/ul&gt;&#x000A;            &lt;/script&gt;&#x000A;    &#x000A;    </pre>
    <p> And here’s the node template for each node of the menubar:</p>
    <pre>        &lt;script id="MenuNodeTemplate" type="text/html"&gt;&#x000A;                &lt;li data-bind="addData: $data.url"&gt;&#x000A;                    &lt;a data-bind="attr: {href: ('#' + $data.url)}"&gt;&lt;span data-bind="text: $data.text"&gt;&lt;/span&gt;&lt;/a&gt;&#x000A;                    &lt;!-- ko if: $data.nodes --&gt;&#x000A;                    &lt;ul data-bind="template: { name: 'MenuNodeTemplate', foreach: $data.nodes}"&gt;&lt;/ul&gt;&#x000A;                    &lt;!-- /ko --&gt;&#x000A;                &lt;/li&gt;&#x000A;            &lt;/script&gt;&#x000A;    </pre>
    <p> You then need a <code>div</code> element which you bind to MenuTemplate:</p>
    <pre>            &lt;div data-bind="template: {name: 'MenuTemplate' , foreach: masters, afterRender: renderMenu}"&gt;&lt;/div&gt;&#x000A;    </pre>
    <p> Notice that the node template uses <a href="http://knockoutjs.com/documentation/foreach-binding.html" rel="nofollow external" class="bo"> containerless control flow syntax</a>, which is based on comment tags.  There are a few things going on here, so let me explain</p>
    <p>In the fully rendered jQuery menubar, I want to attach a handler to the <code>select</code> event. The handler has the signature <code>event, ui</code>. When you click a menubar item, the handler is passed the event object and a jQuery object representing the item.  To get the text from the <code>ui</code> object, we can call the text method ( <code>ui.item.text()</code> ). But how do we get the <code>url</code> property from the underlying JSON? That is a little bit trickier and I explain it later when we look at the select function triggered by the click event on each sub-menu item and the custom binding <code>addData</code> attached to the <code>li</code> element in the Knockout template.</p>
    <p> Finally you just need a <code>div</code> element where we can display the content retrieved from the JSON data files:</p>
    <pre>        &lt;div id="show-result" class="ui-widget"&gt;&#x000A;                &lt;h1 data-bind="text: header" class="ui-widget-header ui-corner-all"&gt;&lt;/h1&gt;&#x000A;                &lt;div data-bind="html: text" class="ui-widget-content ui-corner-all"&gt;&lt;/div&gt;&#x000A;            &lt;/div&gt;&#x000A;    </pre>
    <hr>
    <h2>
    <span>Step 4: </span>Creating the Web Form Pages That Depend on the Main.Master File</h2>
    <h3> Default-src.aspx<br>
    </h3>
    <p> Create a Web Form using Master Page in the debug folder called <code>Default-src.aspx</code>.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/add_page_using_master_page.png" alt="add_page_using_master_page" width="500" height="318" style="max-width: 100%; height: auto;"><br> <p> This turns out to be a mercifully short file. This is one of the great advantages of the .NET approach to Master pages. There are only two ContentPlaceHolders in the master page. Add the links to your JavaScript files as follows to the Content element linked to the JsScripts ContentPlaceHolder:</p>
    <pre>&lt;%@ Page Title="Default src" Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true" CodeBehind="Default-src.aspx.cs" Inherits="NetTutsMsBuildJs.debug.Default_src" %&gt;&#x000A;    &lt;asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"&gt;&#x000A;    &lt;/asp:Content&gt;&#x000A;    &lt;asp:Content ID="Content2" ContentPlaceHolderID="JsScripts" runat="server"&gt;&#x000A;        &lt;script src="/js/jquery-1.8.2.min.js"&gt;&lt;/script&gt;&#x000A;        &lt;script src="/js/jquery-ui-1.9.2.custom.min.js"&gt;&lt;/script&gt;&#x000A;        &lt;script src="/debug-js/src/jquery.ui.menubar.js"&gt;&lt;/script&gt;&#x000A;        &lt;script src="/js/knockout-2.1.0.js"&gt;&lt;/script&gt;&#x000A;        &lt;script src="/debug-js/src/default-src.js"&gt;&lt;/script&gt;&#x000A;    &lt;/asp:Content&gt;&#x000A;    </pre>
    <p> Create a new JavaScript file called <code>default-src.js</code> in the <code>debug-js\src folder</code>.</p>
    <p>We enclose everything in a call to the usual jQuery <code>$</code> function that makes sure the page is fully loaded, before running anything.</p>
    <pre>        $(function () {&#x000A;            &#x000A;            });&#x000A;    </pre>
    <blockquote><p> As of jQuery 1.4, if the JSON file contains a syntax error, the request will usually fail silently. See: <a href="http://api.jquery.com/jQuery.getJSON/" rel="nofollow external" class="bo">jQuery.getJSON()</a>.</p></blockquote>
    <p> We need three main pieces of functionality here:</p>
    <ol>
    <li> A call to the jQuery <code>getJSON</code> method to retrieve the JSON data for the menubar. If that succeeds, we create a Knockout view model and call <code>ko.applyBindings(viewModel) </code> to activate it.</li>
    <li> A <code>renderMenu</code> function which will be called by the afterRender event of the MenuTemplate. This function calls the <code>menubar</code> constructor to render the menubar.</li>
    <li> A <code>select</code> function which is called when the user clicks a menubar item. This function retrieves the JSON data from the relevant content file and displays it on the page.</li>
    </ol>
    <p> Notice that the select function needs to be able to retrieve the URL from the underlying JSON data. This is the trickiest part of marrying the jQuery menubar functionality with the Knockout template. jQuery allows you to add data to and retrieve data from an HTML element.  To add data from within our Knockout template, we need to use a custom binding, which has access to the HTML element it is bound to. The binding I have created is called <code>addData</code> and is simply attached to <code>ko.bindingHandlers</code> in the <a href="http://knockoutjs.com/documentation/custom-bindings.html" rel="nofollow external" class="bo">usual Knockout way</a> with an <code>init</code> method and an <code>update</code> method.</p>
    <pre>    ko.bindingHandlers.addData = {&#x000A;            init: function (element, valueAccessor) {&#x000A;                var value = ko.utils.unwrapObservable(valueAccessor());&#x000A;                if (value) {&#x000A;                    $.data(element, "url", value);&#x000A;                }&#x000A;            },&#x000A;            update: function (element, valueAccessor) {&#x000A;                var value = ko.utils.unwrapObservable(valueAccessor());&#x000A;                if (value) {&#x000A;                    $.data(element, "url", value);&#x000A;                }&#x000A;            }&#x000A;        };&#x000A;    </pre>
    <p> Perhaps the node template makes more sense now.  The jQuery object passed as ui in the <code>select</code> handler represents the topmost <code>li</code> element of each menubar item, so we add the custom binding to that list item element: <code>data-bind="addData: $data.url"</code>. Now that each element has some data attached to it, we can retrieve it from the <code>select</code> handler with this syntax: <code>ui.item.data("url")</code>, using the jQuery <code>data</code> method.</p>
    <p> The link element is more straightforward and just uses the standard <code>attr</code> and <code>text</code> bindings:</p>
    <pre>        &lt;a data-bind="attr: {href: ('#' + $data.url)}"&gt;&#x000A;                &lt;span data-bind="text: $data.text"&gt;&lt;/span&gt;&#x000A;            &lt;/a&gt;&#x000A;    </pre>
    <p> Just note that I’ve prefixed the href with a hash symbol. That way when you click on the menubar item, you don’t follow a link to another page. Instead, the <code>select</code> event is fired and the handler, sorry, handles it.</p>
    <p> Here’s the full select function using this approach to retrieve the data from the jQuery object representing the element rendered by Knockout:</p>
    <pre>    function select(event, ui) {&#x000A;            var url = "/json/" + ui.item.data("url");&#x000A;            $.getJSON(url, function (data) {&#x000A;                viewModel.header(data.header);&#x000A;                viewModel.text(data.text);&#x000A;            })&#x000A;            .error(function (errorData) {&#x000A;                viewModel.header("Error");&#x000A;                if (errorData.status === 404) {&#x000A;                    viewModel.text("Could not find " + ui.item.text() + " at " + url);&#x000A;                } else {&#x000A;                    viewModel.text("There has been an error, probably a JSON syntax error. Check the JSON syntax in the file &lt;code&gt;" + url + "&lt;/code&gt;");&#x000A;                    console.log(errorData);&#x000A;                }&#x000A;            });&#x000A;        }&#x000A;    </pre>
    <p> I added the extra error trap because jQuery now remains silent about JSON syntax errors. I don’t want the user to be burdened with the details of JSON syntax errors, but I want to give some clue about what might have gone wrong.</p>
    <p> Here’s the Knockout view model defined in the function attached to the <code>getJSON()</code> method:</p>
    <pre>    $.getJSON('/json/menubar-data.json', function (data) {&#x000A;            viewModel = {&#x000A;                header: ko.observable(),&#x000A;                text: ko.observable(),&#x000A;                masters: ko.observableArray([&#x000A;                {&#x000A;                    name: "Master1",&#x000A;                    root: data&#x000A;                }&#x000A;                ]),&#x000A;                renderMenu: function () {&#x000A;                    $("#menu").menubar({&#x000A;                        autoExpand: true,&#x000A;                        menuIcon: true,&#x000A;                        buttons: true,&#x000A;                        select: select&#x000A;                    });&#x000A;                }&#x000A;            };&#x000A;            ko.applyBindings(viewModel);&#x000A;            viewModel.header("Welcome");&#x000A;            viewModel.text("The English Resource Page");&#x000A;    &#x000A;        })&#x000A;        .error(function (errorData) {&#x000A;            console.log({ "errorData": errorData });&#x000A;            console.log(errorData.error());&#x000A;        });&#x000A;    </pre>
    <hr>
    <h2>
    <span>Step 5: </span>Run the Project in Debug Mode.</h2>
    <p> With <code>Default-src.aspx</code> open in the IDE window, click run (the green arrow just under the menu of the IDE) in Debug mode.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/debug.png" alt="debug" width="554" height="111" style="max-width: 100%; height: auto;"><br> <p> After the build process, the <code>Default-src.aspx</code> should appear in your browser’s window. The IDE runs an Express version of the IIS web server in the background. In my case, the project uses port 54713 on localhost to run the page: </p>
    <p><code><a href="http://localhost:54713/debug/Default-src.aspx">http://localhost:54713/debug/Default-src.aspx</a></code></p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/Default-src.png" alt="Default-src" width="500" height="260" style="max-width: 100%; height: auto;"><br> <p> We’re now ready to work on the JavaScript build process.</p>
    <hr>
    <h2>Integrating the JavaScript Build Process Into MSBuild</h2>
    <p> This project will automate the two key steps we need to build a complex JavaScript project:</p>
    <ul>
    <li> <strong>Concatenate: </strong>Collect all the source files you need for a particular page and concatenate them together into one file. MSBuild doesn’t have a built-in Concat task like Ant or NAnt so we’ll have to roll our own based on this excellent blog <a href="http://blogs.msdn.com/b/msbuild/archive/2005/09/29/475046.aspx" rel="nofollow external" class="bo">How To: Concatenate files using MSBuild tasks</a>.</li>
    <li> <strong>Minify: </strong>Minify our own source files and concatenate them with production release files, like the jQuery file, into one compressed file.</li>
    </ul>
    <hr>
    <h2>
    <span>Step 1:</span> Toggle Between the Project and Editing the Project Build File</h2>
    <p> The folder where you created your .NET project will include files that look like these:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/project_file.png" alt="project_file" width="600" height="359" style="max-width: 100%; height: auto;"><br> <p> The <code>NetTutsMSBuildJs.csproj</code> file is just an XML file specially configured to handle the MSBuild process for this project. It is perfectly legitimate to create one of these manually or edit it to suit your project. Obviously, for purely .NET purposes it’s much better to use the Visual Studio GUI to configure this file automatically for you, but the point of this tutorial is to show you how to add in a JavaScript build, which is not part of the standard .NET build.</p>
    <p>In Visual Studio, you can’t edit this project file unless you unload the project, and you can’t load the project if there is a syntax error in the file!  So, practice unloading and loading the project so that you can edit this key file. To unload the project, <strong>right-click</strong> the project and click the <strong>Unload Project</strong> item.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/unload_project.png" alt="unload_project" width="422" height="594" style="max-width: 100%; height: auto;"><br> <p> After unloading the project, all the folders and files disappear and you’re left with just the solutions and projects in the Solution Explorer. <strong>Right-click</strong> the project and this time the context menu is very short. Choose <strong>Edit NetTutsMSBuildJs.csproj</strong> and the project configuration file opens.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/edit_proj_file.png" alt="edit_proj_file" width="490" height="244" style="max-width: 100%; height: auto;"><br> <p> Now, just to build your confidence and get used to dealing with those times when you can’t load the project because of a syntax error in the project files, type a deliberate mistake near the beginning of the project file: just type a letter before the first tag outside the XML document structure. Save and close the file.  Try to load the project from the context menu and you will get an error message saying the project can’t be loaded. Yes, Visual Studio is very strict like this.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/project_load_error.png" alt="project_load_error" width="476" height="184" style="max-width: 100%; height: auto;"><br> <p> Re-open the project file, correct the error, save and close again. When you re-load the project, it should load smoothly. Now it’s time to edit for real. We will only manually change one thing in the project file, and that will be to add an Import element which will import a file to perform the JavaScript build.</p>
    <hr>
    <h2>
    <span>Step 2:</span> Create a Build File for the JavaScript Build and Import It Into the Project File.</h2>
    <p> If you add an Import element to the project file for a file which doesn’t exist, you won’t be able to load the project, so create a new text file called <code>js.build</code> in the jsbuild folder.  After you enter the necessary XML code, the IDE will recognise this file as an XML file. There will be no need to actually associate the <code>.build</code> extension with the XML editor. Enter this starting code into <code>jsbuild\js.build</code>, save and close.</p>
    <pre>&lt;Project ToolsVersion="4.0" xmlns="<a href="http://schemas.microsoft.com/developer/msbuild/2003%22&amp;gt">http://schemas.microsoft.com/developer/msbuild/2003"&amp;gt</a>;&#x000A;    &lt;/Project&gt;&#x000A;    </pre>
    <p> Now, unload the project and edit the project file by adding this line to the end of the file just before the closing tag.</p>
    <pre>&lt;Import Project="jsbuild\js.build" /&gt;&#x000A;    </pre>
    <p>You should now be able to re-load the project.</p>
    <hr>
    <h2>
    <span>Step 3: </span>Hello Discworld!!!!!</h2>
    <blockquote><p> Five exclamation marks, the sure sign of an insane mind. – Terry Pratchett, Reaper Man</p></blockquote>
    <p> I am a bit bored with saying “Hello World” at the beginning of every new IT tutorial. So this time, I’m going to say hello to Terry Pratchett’s amazing Discworld.</p>
    <p> Open <code>js.build</code>. The IDE should automatically notice that it is an XML file. If not, perhaps you have invalid XML.  After adding the following code to set up a Hello Discworld message, the IDE should finally realise this is XML. Make sure the <code>js.build</code> file now contains the following XML.  Don’t forget the five exclamation marks to get the right flavour of insanity for the Discworld!!!!!</p>
    <pre>&lt;Project ToolsVersion="4.0" xmlns="<a href="http://schemas.microsoft.com/developer/msbuild/2003%22&amp;gt">http://schemas.microsoft.com/developer/msbuild/2003"&amp;gt</a>;&#x000A;      &lt;Target Name="HelloDiscworld"&gt;&#x000A;        &lt;Message Text="Hello Discworld!!!!!" Importance="high"&gt;&lt;/Message&gt;&#x000A;      &lt;/&lt;Target&gt;&#x000A;      &lt;Target Name="AfterBuild"&gt;&#x000A;        &lt;CallTarget Targets="HelloDiscworld"&gt;&lt;/CallTarget&gt;&#x000A;      &lt;Target&gt;&#x000A;    &lt;/Project&gt;&#x000A;    </pre>
    <p> When you <strong>right click</strong> on the project and run build, you should see the message in the output window.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/hello_discworld.png" alt="hello_discworld" width="560" height="238" style="max-width: 100%; height: auto;"><br> <p> Like Ant, MSBuild uses the idea of targets to perform groups of tasks.  The AfterBuild target is run automatically by MSBuild after everything else has been successfully built. I’m tacking the JavaScript build onto the end of the .NET build so the AfterBuild extension point seems the best place to put this. Notice how AfterBuild is run automatically and within AfterBuild we call our Target HelloDiscworld. I’ve set the Importance of the message to high because otherwise it might not appear in the output window.</p>
    <hr>
    <h2>
    <span>Step 4: </span>Sort Out Paths</h2>
    <p> Right.  We went a little bit mad in the Discworld with too many exclamation marks, but at least our JavaScript build file seems to be working! OK. Joking aside, we now have to get the most crucial thing in a build routine right: paths.</p>
    <p> As with Ant, I have always had trouble understanding absolute and relative paths in these configuration files, so I want to tread carefully. Add a PropertyGroup element to the top of the <code>js.build</code> file, just below the Project tag and add two properties like this.</p>
    <pre>  &lt;PropertyGroup&gt;&#x000A;        &lt;ConcatDir&gt;debug-js\concat&lt;/ConcatDir&gt;&#x000A;        &lt;MinDir&gt;debug-js\min&lt;/MinDir&gt;&#x000A;      &lt;/PropertyGroup&gt;&#x000A;    </pre>
    <p> Now, alter the message so we can see what these properties contain:</p>
    <pre>&lt;Message Text="Hello Discworld!!!!! from $(ConcatDir)" Importance="high"&gt;&lt;/Message&gt;&#x000A;    </pre>
    <p> Now clean and build the project again or just choose rebuild. The message appears in the output like this:</p>
    <p> <code>Hello Discworld!!!!! from debug-js\concat</code></p>
    <hr>
    <h2>
    <span>Step 5: </span>Create Clean and Init Targets</h2>
    <p> Lovely.  We’ve got our environment, our source files and we’ve got properties in the build file containing relative paths pointing to the directories we need to work with. Now we can add a CleanJs Target and an InitJs Target to Remove and Make the concat and min directories. I have a habit of putting little “hello” messages in to these targets when developing these files just to re-assure myself they’re actually running or checking property values. I find increasing the output verbosity in MSBuild tends to give me a flood of information that I don’t need, though it’s great when I can’t figure out where I’ve made a mistake.</p>
    <blockquote><p> MSBuild uses simple relative paths from the root folder of the whole project. If you have a folder called js in your project, you can use the value <code>js</code> in a named Property within a PropertyGroup without further complication.</p></blockquote>
    <pre>  &lt;Target Name="CleanJs"&gt;&#x000A;        &lt;Message Text="Hello from CleanJs" Importance="high"&gt;&lt;/Message&gt;&#x000A;        &lt;RemoveDir Directories="$(ConcatDir)" Condition="Exists('$(ConcatDir)')"&gt;&#x000A;          &lt;Output PropertyName="ConcatDirRemoved" TaskParameter="RemovedDirectories"/&gt;&#x000A;        &lt;/RemoveDir&gt;&#x000A;        &lt;RemoveDir Directories="$(MinDir)" Condition="Exists('$(MinDir)')"&gt;&lt;/RemoveDir&gt;&#x000A;        &lt;Message Text="Hello from removed dirs $(ConcatDirRemoved)" Importance="high"&gt;&lt;/Message&gt;&#x000A;      &lt;/Target&gt;&#x000A;      &lt;Target Name="InitJs"&gt;&#x000A;        &lt;MakeDir Directories="$(ConcatDir)" Condition="!Exists('$(ConcatDir)')"&gt;&lt;/MakeDir&gt;&#x000A;        &lt;MakeDir Directories="$(MinDir)" Condition="!Exists('$(MinDir)')"&gt;&lt;/MakeDir&gt;&#x000A;      &lt;/Target&gt;&#x000A;    </pre>
    <p> To run these targets add <code>CallTarget</code> elements to the <code>AfterBuild</code> target.</p>
    <pre>    &lt;CallTarget Targets="CleanJs"&gt;&lt;/CallTarget&gt;&#x000A;        &lt;CallTarget Targets="InitJs"&gt;&lt;/CallTarget&gt;&#x000A;    </pre>
    <hr>
    <h2>
    <span>Step 6:</span> Concatenating the Files</h2>
    <p> You’re probably getting used to editing the <code>js.build</code> file by now.  You may have noticed an annoying error message linked to text underlined with wiggly blue lines, like this:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/invalid_child_element.png" alt="invalid_child_element" width="310" height="82" style="max-width: 100%; height: auto;"><br> <p> This is an annoying bug in Visual Studio which has been there for quite a while. PropertyGroup elements and ItemGroup elements can be populated with any value you like. The problem is Visual Studio wrongly reports an error for the first Property or Item you define in one of these groups. As you’ve seen, ConcatDir works when you build the project, and there is no problem loading the project. Just ignore these distracting invalid child element errors.</p>
    <p> At last, some real build work.  We add a new target to concatenate the files we want. Unlike Ant and NAnt, there is no built-in Concat task, so we have to roll our own with the ReadLinesFromFile task</p>
    <pre>  &lt;Target Name="ConcatenateJsFiles"&gt;&#x000A;        &lt;ItemGroup&gt;&#x000A;        &lt;ConcatFiles Include="&#x000A;                     js\jquery-1.8.2.min.js;&#x000A;                     js\jquery-ui-1.9.2.custom.min.js;&#x000A;                     debug-js\src\jquery.ui.menubar.js;&#x000A;                     js\knockout-2.1.0.js;&#x000A;                     debug-js\src\default-src.js&#x000A;                     "/&gt;&#x000A;        &lt;/ItemGroup&gt;&#x000A;        &lt;ReadLinesFromFile File="%(ConcatFiles.Identity)"&gt;&#x000A;          &lt;Output TaskParameter="Lines" ItemName="ConcatLines"/&gt;&#x000A;        &lt;/ReadLinesFromFile&gt;&#x000A;        &lt;WriteLinesToFile File="debug-js\concat\default-concat.js" Lines="@(ConcatLines)" Overwrite="true" /&gt;&#x000A;      &lt;/Target&gt;&#x000A;    </pre>
    <p> Add a new <code>CallTarget</code> element to the <code>AfterBuild</code> target in <code>js.build</code> calling <code>ConcatenateJsFiles</code>. Rebuild the project as usual and lo and behold, a file called <code>default-concat.js</code> magically gets created in the <code>debug-js\concat</code> directory. You will probably have to refresh the Solution Explorer to see it.</p>
    <p> Now add a new Web form page called <code>Default-concat.aspx</code> to the <code>debug</code> folder, linking it to the <code>Main.Master</code> page. This is very short and slightly different from the <code>Default-src.aspx</code> page. This time, all the JavaScript we need has been concatenated into one file, so you only need one script tag link to <code>default-concat.js</code>.</p>
    <pre>&lt;%@ Page Title="Default concat" Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true" CodeBehind="Default-src.aspx.cs" Inherits="NetTutsMsBuildJs.debug.Default_src" %&gt;&#x000A;    &lt;asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"&gt;&#x000A;    &lt;/asp:Content&gt;&#x000A;    &lt;asp:Content ID="Content2" ContentPlaceHolderID="JsScripts" runat="server"&gt;&#x000A;        &lt;script src="/debug-js/concat/default-concat.js"&gt;&lt;/script&gt;&#x000A;    &lt;/asp:Content&gt;&#x000A;    </pre>
    <p> To try this out, open the <code>Default-concat.aspx</code> page in the IDE window and run the project again in Debug mode. You should see the fully functioning menubar in your browser with the title Debug concat appearing in the title bar of the browser.</p>
    <hr>
    <h2>
    <span>Step 7:</span> Final Stage – Minifying</h2>
    <blockquote><p> The final target, target!!!!!</p></blockquote>
    <p> Our menubar seems to be working and when we concatenate the files we seem to have got the right order and everything’s going smoothly in the <code>Debug-concat.aspx</code> page.  It’s now finally time to minify the source files <code>default-src.js</code> and <code>jquery.ui.menubar.js</code> and concatenate them with the professional release files in the correct order. This is slightly more complicated because now we need to bring in an external dependency which, so far, we haven’t needed: the YUI compressor.  There is a <a href="http://yuicompressor.codeplex.com/" rel="nofollow external" class="bo">.NET port</a> of this being developed but I’m so used to the Java version, I prefer to use my old favorite. Create a new target called MinifyJsFiles like this:</p>
    <pre>  &lt;Target Name="MinifyJsFiles"&gt;&#x000A;        &lt;ItemGroup&gt;&#x000A;          &lt;MinFiles Include="&#x000A;                     debug-js\src\jquery.ui.menubar.js;&#x000A;                     debug-js\src\default-src.js&#x000A;               "/&gt;&#x000A;          &lt;Compressor Include="jsbuild\yuicompressor-2.4.7.jar"&gt;&lt;/Compressor&gt;&#x000A;        &lt;/ItemGroup&gt;&#x000A;        &lt;Message Text="Hello Compressor.Fullpath: %(Compressor.Fullpath)" Importance="high"&gt;&lt;/Message&gt;&#x000A;        &lt;Exec Command="java -jar %(Compressor.Fullpath) debug-js\src\default-src.js --type js -o debug-js\min\default-min.js"/&gt;&#x000A;        &lt;Exec Command="java -jar %(Compressor.Fullpath) debug-js\src\jquery.ui.menubar.js --type js -o debug-js\min\jquery.ui.menubar-min.js"/&gt;&#x000A;    &#x000A;      &lt;/Target&gt;&#x000A;    </pre>
    <p> Notice the property Compressor.  Here you just have to define the relative path from the <code>project</code> folder, but the jar file, run by the Java process, will need the full path.  Luckily, MSBuild provides an easy way to convert a relative path into a full path.  You use the <code>%</code> syntax and invoke the Fullpath property.  This is an example of <a href="http://msdn.microsoft.com/en-us/library/ms164313.aspx" rel="nofollow external" class="bo">MSBuild Well-known Item Metadata</a>.</p>
    <p> Add yet another <code>CallTarget</code> element to the <code>AfterBuild</code> element to call the <code>MinifyJsFiles</code> target.</p>
    <p> Now our final target, target. We have to take all the professional release files and concatenate them with the minified version of our sources and concatenate them into one file.</p>
    <pre>  &lt;Target Name="ConcatenateMinFiles"&gt;&#x000A;        &lt;ItemGroup&gt;&#x000A;        &lt;ConcatMinFiles Include="&#x000A;                          js\jquery-1.8.2.min.js;&#x000A;                          js\jquery-ui-1.9.0.custom.min.js;&#x000A;                          debug-js\min\jquery.ui.menubar-min.js;&#x000A;                          js\knockout-2.1.0.js;  &#x000A;                          debug-js\min\default-min.js&#x000A;                          "/&gt;              &#x000A;        &lt;/ItemGroup&gt;&#x000A;        &lt;ReadLinesFromFile File="%(ConcatMinFiles.Identity)" &gt;&#x000A;          &lt;Output TaskParameter="Lines" ItemName="ConcatMinFilesLines"/&gt;&#x000A;        &lt;/ReadLinesFromFile&gt;&#x000A;        &lt;Message Text="We are concatenating these minified files %(ConcatMinFiles.Identity)" Importance="high"&gt;&lt;/Message&gt;&#x000A;        &lt;WriteLinesToFile File="debug-js\min\default.js" Lines="@(ConcatMinFilesLines)" Overwrite="true" /&gt;&#x000A;       &lt;/Target&gt;&#x000A;    </pre>
    <p> You have to be careful with this ItemName property in the build files.  Property and item instances are stored in a global context in MSBuild. If you use the same name for <code>ItemName</code> in two different concatenated targets, you end up concatenating all the files from both targets.</p>
    <p> Rebuild the project and you should now see two new files in the <code>debug-js\min</code> folder: <code>default-min.js</code> and <code>jquery.ui.menubar-min.js</code>. The <code>debug-js</code> folder should now look like this after re-building and refreshing the Solution Explorer:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/debug-js.png" alt="debug-js" width="284" height="224" style="max-width: 100%; height: auto;"><br> <p> Create a new Web form page called <code>Default-min.aspx</code> linked to the <code>Main.Master</code> page and put it into the <code>debug</code> folder.</p>
    <pre>&lt;%@ Page Title="Default min" Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true" CodeBehind="Default-src.aspx.cs" Inherits="NetTutsMsBuildJs.debug.Default_src" %&gt;&#x000A;    &lt;asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"&gt;&#x000A;    &lt;/asp:Content&gt;&#x000A;    &lt;asp:Content ID="Content2" ContentPlaceHolderID="JsScripts" runat="server"&gt;&#x000A;        &lt;script src="/debug-js/min/default-min.js"&gt;&lt;/script&gt;&#x000A;    &lt;/asp:Content&gt;&#x000A;    </pre>
    <hr>
    <h2>Conclusion</h2>
    <blockquote><p> We walked through the steps required in Visual Studio Express 2012 for Web, to create a JavaScript project that marries Knockout with jQuery UI to create a menubar and then integrate a JavaScript build into the overall project build in Visual Studio.</p></blockquote>
    <p> In this tutorial we walked through the steps required in Visual Studio Express 2012 for Web, to create a JavaScript project that marries Knockout with jQuery UI to create a menubar from a JSON definition file and then integrate a JavaScript build of the source files into the .NET MSBuild process. The final result was that we had a web page with only one script tag containing all the complex JavaScript needed to run the page.</p>
    <p>I think you can see how easy it would be to adapt this example to a very large, complex JavaScript library running in a .NET project. It should also be reasonably straightforward to develop these ideas to include tasks suitable for a release version. The obvious next step is to copy the fully minified and concatenated <code>default.js</code> file to the <code>js</code> folder, then include that in a definitive <code>Default.aspx</code> file in the root directory. With this example as a starting point, you should be able to explore the MSBuild documentation and develop a fully working build file to automate every part of your build process.</p>
    <p>I also use this kind of approach for CSS files. In this particular case, the jQuery UI CSS files are so well optimized it hardly seemed worth minifying them, but in other projects it might be important for performance. A more sophisticated next step for you <a href="http://gruntjs.com/" rel="nofollow external" class="bo">grunt</a>ers out there would be to create a <code>js.build</code> file that runs a grunt file with an MSBuild Exec task. That way, you could easily include linting and testing to the build process.</p>
    <h3>Further reading</h3>
    <p> For further reading about Visual Studio, this excellent Nettuts+ <a href="http://net.tutsplus.com/articles/general/visual-studio-web-dev-bliss/" rel="nofollow external" class="bo">Visual Studio: Web Dev Bliss</a> will guide you on how to integrate Web Essentials and add code checking to your build process, but unfortunately, Web Essentials is not available for the Express edition. See Mads Kristensen’s answer <a href="http://madskristensen.net/post/The-road-to-Web-Essentials-2012.aspx" rel="nofollow external" class="bo">here</a>:  “…unfortunately Express doesn’t allow third party extensions to be installed”. This tutorial is aimed at users of the Express edition and I hope it has given you a starting point for creating your own integrated JavaScript build, all within the Visual Studio Express environment.</p>
    </div>
]]>
</Body>
<Summary>I’ve been working with ASP and ASP.NET for about ten years now, starting with ASP classic and settling on .NET 2.0 as my favorite. My new year resolution this year (2013) was to upgrade my .NET...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/uTLxLuhOLg4/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33427/guest@my.umbc.edu/ad3294d595bc14222a9c2c3cd34da396/api/pixel</TrackingUrl>
<Tag>asp-net</Tag>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>javascript-and-ajax</Tag>
<Tag>javascript-build-process</Tag>
<Tag>msbuild</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>tutorials</Tag>
<Tag>visual-studio</Tag>
<Tag>wed</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 31 Jul 2013 19:07:03 -0400</PostedAt>
<EditAt>Wed, 31 Jul 2013 19:07:03 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="33425" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33425">
<Title>20 Things Twenty Year Olds Don't Get</Title>
<Tagline>Lessons to learn before you get into "the real world"</Tagline>
<Body>
<![CDATA[
    <div class="html-content">Great read: One man's list of 20 Things Twenty Year Olds Don't Get about business. <div><br></div>
    <div><span>As a 33 year old myself, I have to say I agree with many of these, but I wonder what your thoughts are, comment below. </span></div>
    </div>
]]>
</Body>
<Summary>Great read: One man's list of 20 Things Twenty Year Olds Don't Get about business.     As a 33 year old myself, I have to say I agree with many of these, but I wonder what your thoughts are,...</Summary>
<Website>http://www.forbes.com/sites/jasonnazar/2013/07/23/20-things-20-year-olds-dont-get/?utm_campaign=forbesfbsf&amp;utm_source=facebook&amp;utm_medium=social</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33425/guest@my.umbc.edu/0b44931e008e2b1014838950ef0b6415/api/pixel</TrackingUrl>
<Group token="entrepreneurship">Alex. Brown Center for Entrepreneurship</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/entrepreneurship</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/original.jpg?1771000363</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/large.png?1771000363</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/medium.png?1771000363</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/small.png?1771000363</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxsmall.png?1771000363</AvatarUrl>
<Sponsor>The Alex. Brown Center for Entrepreneurship</Sponsor>
<PawCount>1</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 31 Jul 2013 18:50:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="123163" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123163">
<Title>Production by Susan McCully, Theatre, at Fringe NYC</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><em><img alt="Susan" src="/wp-content/uploads/2013/07/susan.jpg?w=120" width="120" height="150" style="max-width: 100%; height: auto;">Inexcusable Fantasies</em>, written by Susan McCully, theatre, and directed by Eve Muson, theatre, will be part of this year’s New York City International Fringe Festival, <a href="http://www.fringenyc.org/index.php" rel="nofollow external" class="bo">Fringe NYC</a>, program. Performances will take place Sunday, August 18 through Saturday, August 24.</p>
    <p>About <em>Inexcusable Fantasies</em> (GrrlParts.com):</p>
    <blockquote><p>“Martha Stewart, motorcycles, and Grandma’s Oil of Olay jar. What do they have in common? They are just a few of the often hilarious obsessions Susan McCully visits in <em>Inexcusable Fantasies</em> a show about sexual politics, lust ‘over forty, cloning, eye replacement surgery, and the unmistakably erotic powers of Martha Stewart’s marzipan.”</p></blockquote>
    <p>The production, starring Susan McCully and Rachel Hirshorn ’04, theatre, has been performed at a number of venues, including the Prague Film Festival in 2012, the Strand Theatre Company this year and various other international festivals since 2004. It’s been considered by critics as a comedy with incredible “subtlety”, “intelligence” and “verve,” and that <a href="http://baltimore.broadwayworld.com/article/BWW-Reviews-The-Strands-INEXCUSABLE-FANTASIES-Delivers-Outrageous-Hilarity-With-No-Excuses-20121111" rel="nofollow external" class="bo">“what makes the script so poignantly hysterical is the idea that the obsessions, the irrational emotions, the painful awkwardness—while hugely hyperbolic—speak to experiences we’ve all shared.”</a></p>
    <p>Learn more about the production at <a href="http://grrlparts.com/home.html" rel="nofollow external" class="bo">GrrlParts.com</a>; find time and ticketing information at <a href="http://www.fringenyc.org/basic_page.php?ltr=I" rel="nofollow external" class="bo">Fringe NYC’s website</a>.</p>
    </div>
]]>
</Body>
<Summary>Inexcusable Fantasies, written by Susan McCully, theatre, and directed by Eve Muson, theatre, will be part of this year’s New York City International Fringe Festival, Fringe NYC, program....</Summary>
<Website>https://umbc.edu/stories/production-by-susan-mccully-theatre-to-perform-at-fringe-nyc/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123163/guest@my.umbc.edu/b328583cdb88aee34edf6715aef25ab1/api/pixel</TrackingUrl>
<Tag>arts-and-culture</Tag>
<Tag>cahss</Tag>
<Tag>theatre</Tag>
<Tag>visualarts</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Wed, 31 Jul 2013 18:41:49 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="33426" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33426">
<Title>Narrowing Second Quarter Loss, Yelp Raises Sales Forecast for Year</Title>
<Body>
<![CDATA[
    <div class="html-content">Yelp is getting clicks, helping it increase its ad sales. It drew 108 million unique visitors per month in the second quarter, a 38 percent increase from a year earlier.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2Faponline%2F2013%2F07%2F31%2Fbusiness%2Fap-us-earns-yelp.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Narrowing+Second+Quarter+Loss%2C+Yelp+Raises+Sales+Forecast+for+Year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.nytimes.com%2Faponline%2F2013%2F07%2F31%2Fbusiness%2Fap-us-earns-yelp.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Narrowing+Second+Quarter+Loss%2C+Yelp+Raises+Sales+Forecast+for+Year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.nytimes.com%2Faponline%2F2013%2F07%2F31%2Fbusiness%2Fap-us-earns-yelp.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Narrowing+Second+Quarter+Loss%2C+Yelp+Raises+Sales+Forecast+for+Year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.nytimes.com%2Faponline%2F2013%2F07%2F31%2Fbusiness%2Fap-us-earns-yelp.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Narrowing+Second+Quarter+Loss%2C+Yelp+Raises+Sales+Forecast+for+Year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.nytimes.com%2Faponline%2F2013%2F07%2F31%2Fbusiness%2Fap-us-earns-yelp.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Narrowing+Second+Quarter+Loss%2C+Yelp+Raises+Sales+Forecast+for+Year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/172487600607/u/0/f/640387/c/34625/s/2f67417e/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/172487600607/u/0/f/640387/c/34625/s/2f67417e/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Yelp is getting clicks, helping it increase its ad sales. It drew 108 million unique visitors per month in the second quarter, a 38 percent increase from a year earlier.     </Summary>
<Website>http://www.nytimes.com/aponline/2013/07/31/business/ap-us-earns-yelp.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33426/guest@my.umbc.edu/989a6114d59b5bed11c56bdd834e667d/api/pixel</TrackingUrl>
<Tag>new</Tag>
<Tag>technology</Tag>
<Tag>yelp-yelp-nyse</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 31 Jul 2013 18:10:30 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="33422" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33422">
<Title>PAID Sustainability Outreach Internship Opportunity @ OCSS</Title>
<Tagline>Fall 2013 semester</Tagline>
<Body>
<![CDATA[
    <div class="html-content"><div>
    <div><div><div>
    <p><span>Off-Campus Student Services is looking for an intern to promote, support, and raise awareness about sustainability as it relates to commuter students. The intern will assist in the design and delivery of social and educational events related to alternative transportation (e.g., UMBC Transit Shuttles, MTA public transportation, carpooling, zipcar, etc.) and other "green" options.  <br></span></p>
    <p>QUALIFICATIONS:</p>
    <ul>
    <li>Majors: Geography, Environmental Science, Public Policy, Political Science, <br>Environmental Engineering and Sustainability, STEM Education, or a <br>related field</li>
    <li>2.5 GPA</li>
    <li>Sophomore, Junior, or Senior standing</li>
    <li>Passion for sustainability</li>
    <li>Knowledge of advertising through social media</li>
    <li>Experience planning and promoting social and/or educational events is preferred.</li>
    </ul>
    <p>BENEFITS:</p>
    <ul>
    <li>$900 Stipend</li>
    <li>Transcript notation and academic credit</li>
    <li>Participation in social events hosted by OCSS</li>
    <li>Attendance at professional development seminars and events related to sustainability</li>
    <li>Experience creating and facilitating instructional programs in a professional environment</li>
    <li>Professional networking opportunities through coordinating with various UMBC departments, campus members, and student leaders</li>
    <li>Learn professional skills useful for future employment</li>
    <li>A flexible work schedule that compliments your class schedule</li>
    </ul>
    <p>To apply, you need to have your resume reviewed and approved by a Coordinator at The Shriver Center. Please call their front desk at <a rel="nofollow external" class="bo">410-455-2493</a> for an appointment or contact <a href="mailto:shrivercenter@umbc.edu" rel="nofollow external" class="bo">shrivercenter@umbc.edu</a>,<a href="mailto:umbcworks@umbc.edu" rel="nofollow external" class="bo"> umbcwor</a><a href="mailto:ks@umbc.edu" rel="nofollow external" class="bo">ks@umbc.edu</a>
     for more information. The internship listing can be found at UMBCworks (ID#: 9259655). The deadline to submit your resume, cover letter, and unofficial transcript(s) is August 20, 2013.<br><br>If you have any questions, please email Jessica Sadler, OCSS graduate assistant @ <a href="mailto:jsadler1@umbc.edu" rel="nofollow external" class="bo">jsadler1@umbc.edu</a>.</p>
    </div></div></div>
    </div></div>
]]>
</Body>
<Summary>Off-Campus Student Services is looking for an intern to promote, support, and raise awareness about sustainability as it relates to commuter students. The intern will assist in the design and...</Summary>
<Website>http://www.careers.umbc.edu/umbcworks/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33422/guest@my.umbc.edu/5b736edbc215ee6d8954bfc373e39c42/api/pixel</TrackingUrl>
<Group token="retired-401">ReSET- Retriever Recycling team </Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-401</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/401/cd50a6640d6284992905dc447fd7701d/xsmall.png?1337614255</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/401/cd50a6640d6284992905dc447fd7701d/original.jpg?1337614255</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/401/cd50a6640d6284992905dc447fd7701d/xxlarge.png?1337614255</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/401/cd50a6640d6284992905dc447fd7701d/xlarge.png?1337614255</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/401/cd50a6640d6284992905dc447fd7701d/large.png?1337614255</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/401/cd50a6640d6284992905dc447fd7701d/medium.png?1337614255</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/401/cd50a6640d6284992905dc447fd7701d/small.png?1337614255</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/401/cd50a6640d6284992905dc447fd7701d/xsmall.png?1337614255</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/401/cd50a6640d6284992905dc447fd7701d/xxsmall.png?1337614255</AvatarUrl>
<Sponsor>Off-Campus Student Services</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/033/422/7b85a96c455fa59d4d2780f095b9abd3/xxlarge.jpg?1375306280</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/033/422/7b85a96c455fa59d4d2780f095b9abd3/xlarge.jpg?1375306280</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/033/422/7b85a96c455fa59d4d2780f095b9abd3/large.jpg?1375306280</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/033/422/7b85a96c455fa59d4d2780f095b9abd3/medium.jpg?1375306280</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/033/422/7b85a96c455fa59d4d2780f095b9abd3/small.jpg?1375306280</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/033/422/7b85a96c455fa59d4d2780f095b9abd3/xsmall.jpg?1375306280</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/033/422/7b85a96c455fa59d4d2780f095b9abd3/xxsmall.jpg?1375306280</ThumbnailUrl>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 31 Jul 2013 17:31:38 -0400</PostedAt>
<EditAt>Wed, 31 Jul 2013 17:33:19 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="33423" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33423">
<Title>Tool Kit: Virtual Currency Gains Ground in Actual World</Title>
<Body>
<![CDATA[
    <div class="html-content">Bitcoins trade like a commodity, but more businesses are accepting them as money.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F01%2Ftechnology%2Fpersonaltech%2Fvirtual-currency-gains-ground-in-actual-world.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Tool+Kit%3A+Virtual+Currency+Gains+Ground+in+Actual+World" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F01%2Ftechnology%2Fpersonaltech%2Fvirtual-currency-gains-ground-in-actual-world.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Tool+Kit%3A+Virtual+Currency+Gains+Ground+in+Actual+World" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F01%2Ftechnology%2Fpersonaltech%2Fvirtual-currency-gains-ground-in-actual-world.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Tool+Kit%3A+Virtual+Currency+Gains+Ground+in+Actual+World" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F01%2Ftechnology%2Fpersonaltech%2Fvirtual-currency-gains-ground-in-actual-world.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Tool+Kit%3A+Virtual+Currency+Gains+Ground+in+Actual+World" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F01%2Ftechnology%2Fpersonaltech%2Fvirtual-currency-gains-ground-in-actual-world.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Tool+Kit%3A+Virtual+Currency+Gains+Ground+in+Actual+World" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/172487583756/u/0/f/640387/c/34625/s/2f676eaf/kg/342/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/172487583756/u/0/f/640387/c/34625/s/2f676eaf/kg/342/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Bitcoins trade like a commodity, but more businesses are accepting them as money.     </Summary>
<Website>http://www.nytimes.com/2013/08/01/technology/personaltech/virtual-currency-gains-ground-in-actual-world.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33423/guest@my.umbc.edu/82d6476fe0542430ea07eb58bf31a14c/api/pixel</TrackingUrl>
<Tag>amazon-com-inc-amzn-nasdaq</Tag>
<Tag>apple-inc-aapl-nasdaq</Tag>
<Tag>bitcoin</Tag>
<Tag>currency</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>gamestop-corporation-gme-nyse</Tag>
<Tag>gap-inc-gps-nyse</Tag>
<Tag>new</Tag>
<Tag>nike-inc-nke-nyse</Tag>
<Tag>prices-fares-fees-and-rates</Tag>
<Tag>regulation-and-deregulation-of-industry</Tag>
<Tag>technology</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 31 Jul 2013 17:25:31 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="123164" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123164">
<Title>Kimberly Moffitt, American Studies, guest hosts The Marc Steiner Show</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>Dr. Kimberly Moffitt, Professor of American Studies, was the guest host for <em>The Marc Steiner Show’s</em> “Weekly News Roundup,” which aired on Friday, July 26.</p>
    <p>Dr. Moffitt was joined by panelists E.R. Shipp, Pulitzer Prize-winning columnist and Journo-in-Residence at Morgan State University, and Dr. Avis A. Jones-DeWeever, President and CEO of Incite Unlimited, LLC., to discuss the decline in the latest Maryland State Assessment scores and the existing achievement gaps based on race. Panelists and callers also commented on the repercussions of the Supreme Court’s recent ruling on voting rights and the Justice Department’s role in pursuing legal action against voting rights cases throughout the nation.</p>
    <p><a title="The Marc Steiner Show Weekly News Roundup" href="http://www.steinershow.org/podcasts/racism/weekly-news-roundup-marylands-msa-test-results-doj-challenges-states-voting-laws-nypd-on-racial-profiling/" rel="nofollow external" class="bo">Listen to the full segment »</a></p>
    </div>
]]>
</Body>
<Summary>Dr. Kimberly Moffitt, Professor of American Studies, was the guest host for The Marc Steiner Show’s “Weekly News Roundup,” which aired on Friday, July 26.   Dr. Moffitt was joined by panelists...</Summary>
<Website>https://umbc.edu/stories/kimberly-moffitt-american-studies-guest-hosts-marc-steiner-show/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123164/guest@my.umbc.edu/527742cbfed658df70aa96c483e5ddbf/api/pixel</TrackingUrl>
<Tag>americanstudies</Tag>
<Tag>cahss</Tag>
<Tag>policy-and-society</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Wed, 31 Jul 2013 17:03:56 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="123165" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123165">
<Title>Ed Orser, American Studies, in The Baltimore Sun</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>Catonsville is seeing a change in its demographics – and this is nothing new, according to UMBC American Studies professor, Ed Orser. In recent years, the 21228 zip code has seen a noticeable influx of younger single families looking to plant their roots in the quaint Baltimore suburb, leading to a revival in the housing market and increased enrollment in local schools, the article cites.</p>
    <p>This isn’t the first time Catonsville has seen a demographic shift that brings a surge of school-age children to the area. The current boost is similar to the one from a century ago, Orser said. “Catonsville has this sort of unique blend. There is sort of an old character, it’s a historic community and people come and they stay.”</p>
    <p><a title="As Catonsville skews younger, housing market heats up, schools overflow " href="http://www.baltimoresun.com/news/maryland/baltimore-county/catonsville/ph-ca-population-shift-0724-20130725,0,7305871.story" rel="nofollow external" class="bo">Read the full article »</a></p>
    </div>
]]>
</Body>
<Summary>Catonsville is seeing a change in its demographics – and this is nothing new, according to UMBC American Studies professor, Ed Orser. In recent years, the 21228 zip code has seen a noticeable...</Summary>
<Website>https://umbc.edu/stories/ed-orser-american-studies-in-the-baltimore-sun/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123165/guest@my.umbc.edu/c8b5b967a73420a5bf890339ca43c2d8/api/pixel</TrackingUrl>
<Tag>americanstudies</Tag>
<Tag>cahss</Tag>
<Tag>policy-and-society</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Wed, 31 Jul 2013 16:32:43 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="33418" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33418">
<Title>App Smart: Using the Masses to Improve Apps</Title>
<Body>
<![CDATA[
    <div class="html-content">Crowdsourced mobile apps can provide new perspectives, but how much may depend on the size of the crowd weighing in.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F01%2Ftechnology%2Fpersonaltech%2Fusing-the-masses-to-improve-apps.html%3Fpartner%3Drss%26emc%3Drss&amp;t=App+Smart%3A+Using+the+Masses+to+Improve+Apps" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F01%2Ftechnology%2Fpersonaltech%2Fusing-the-masses-to-improve-apps.html%3Fpartner%3Drss%26emc%3Drss&amp;t=App+Smart%3A+Using+the+Masses+to+Improve+Apps" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F01%2Ftechnology%2Fpersonaltech%2Fusing-the-masses-to-improve-apps.html%3Fpartner%3Drss%26emc%3Drss&amp;t=App+Smart%3A+Using+the+Masses+to+Improve+Apps" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F01%2Ftechnology%2Fpersonaltech%2Fusing-the-masses-to-improve-apps.html%3Fpartner%3Drss%26emc%3Drss&amp;t=App+Smart%3A+Using+the+Masses+to+Improve+Apps" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F01%2Ftechnology%2Fpersonaltech%2Fusing-the-masses-to-improve-apps.html%3Fpartner%3Drss%26emc%3Drss&amp;t=App+Smart%3A+Using+the+Masses+to+Improve+Apps" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/172487582059/u/0/f/640387/c/34625/s/2f669cba/kg/342/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/172487582059/u/0/f/640387/c/34625/s/2f669cba/kg/342/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Crowdsourced mobile apps can provide new perspectives, but how much may depend on the size of the crowd weighing in.     </Summary>
<Website>http://www.nytimes.com/2013/08/01/technology/personaltech/using-the-masses-to-improve-apps.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33418/guest@my.umbc.edu/9eb4f5787dc1e8064513059aa9942f87/api/pixel</TrackingUrl>
<Tag>crowdsourcing-internet</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>mobile-applications</Tag>
<Tag>new</Tag>
<Tag>technology</Tag>
<Tag>yahoo-inc-yhoo-nasdaq</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 31 Jul 2013 16:17:18 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="33417" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33417">
<Title>Lax Alumni Invited to U.S. National Team Tryouts</Title>
<Body>
<![CDATA[
    <div class="html-content">Four UMBC alumni are among the 98 invitees for the 2014 Federation of International Lacrosse (FIL) World Championships, where the U.S. men seek to defend their title in Denver, Colorado on July 10-19, 2014. Attackmen Brendan Mundorf ’07 and Drew … <a href="http://umbcalumni.wordpress.com/2013/07/31/lax-alumni-invited-to-u-s-national-team-tryouts/" rel="nofollow external" class="bo">Continue reading <span>→</span></a>
    </div>
]]>
</Body>
<Summary>Four UMBC alumni are among the 98 invitees for the 2014 Federation of International Lacrosse (FIL) World Championships, where the U.S. men seek to defend their title in Denver, Colorado on July...</Summary>
<Website>http://umbcalumni.wordpress.com/2013/07/31/lax-alumni-invited-to-u-s-national-team-tryouts/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33417/guest@my.umbc.edu/44b662442e0ee28fce91bd3b41dcc45f/api/pixel</TrackingUrl>
<Tag>uncategorized</Tag>
<Group token="retired-20">UMBC Alumni</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-20</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/original.png?1280681147</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/large.png?1280681147</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/medium.png?1280681147</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/small.png?1280681147</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxsmall.png?1280681147</AvatarUrl>
<Sponsor>UMBC Alumni</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Wed, 31 Jul 2013 16:17:06 -0400</PostedAt>
</NewsItem>

</News>
