<?xml version="1.0"?>
<News hasArchived="true" page="8124" pageCount="10739" pageSize="10" timestamp="Mon, 03 Aug 2026 20:02:50 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8124">
<NewsItem contentIssues="false" id="37736" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37736">
<Title>Bandura Partners with UNICOM Engineering</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><strong><span>Bandura, a TechGuard Company, Partners with UNICOM
    Engineering</span></strong><strong><span> to Develop New Product for Overseas Market <span>  </span></span></strong><strong><em></em></strong></p>
    
    <p><em><span>UNICOM Engineering’s Manufacturing, Regulatory Certification and Global Logistics Enable Security Company to Accelerate International Rollout of New Appliance </span></em></p>
    
    
    
    <p><strong><span>Canton, MA – October 29, 2013</span></strong><span>
    — </span><a href="http://www.nei.com/" rel="nofollow external" class="bo"><span>UNICOM</span></a><span><span> Engineering (formerly NEI)</span></span><span>, a leading provider of </span><a href="http://www.nei.com/PLATFORMSBYTECHNOLOGY" rel="nofollow external" class="bo"><span>application platforms</span></a><span>, </span><a href="http://www.nei.com/default.asp?LINKNAME=DEPLOYMENT_MODELS" rel="nofollow external" class="bo"><span>deployment solutions</span></a><span> and </span><a href="http://www.nei.com/default.asp?LINKNAME=SERVICES" rel="nofollow external" class="bo"><span>lifecycle support services</span></a><span> for software technology developers and OEMs worldwide, today announced that it is providing global expansion and manufacturing services to Bandura, a TechGuard company <span>that provides technologies and services to protect critical networks from cyber attack</span>. UNICOM Engineering is working with Bandura to manufacture and certify a new generation of the company’s award-winning </span><a href="http://www.techguard.com/products/poliwall-ip-country-blocker/" rel="nofollow external" class="bo"><span>PoliWall®</span></a><span> appliance for the international market.</span></p>
    
    
    
    <p><span>Bandura’s PoliWall is a network security device that sits between firewalls and edge routers to stop threats at the network perimeter by blocking malicious traffic. The PoliWall rapidly determines the country of origin and IP reputation for all incoming packets using HIPPIE® (High-speed Internet Protocol Packet Inspection Engine) and DCEL™ (Dynamically Compiled Exception Lists) technology. Packets are filtered according to customer-defined policies and unique exceptions that are bound to resource groups for specific network addresses and protocols.<span>   </span></span></p>
    
    
    
    <p><span>Having already achieved success in the U.S. market, Bandura decided to expand internationally with a next-generation version of the PoliWall product.<span>  </span>This required a faster appliance with higher throughput, greater availability, and a smaller footprint. Given their past connection with UNICOM Engineering, Bandura knew that the company’s proven experience with appliance manufacturing and expertise in international regulation certification could help them achieve their goal. UNICOM Engineering delivered with a pre-integrated solution with global certifications, further accelerating time to market for the product.</span></p>
    
    
    
    <p><span>“UNICOM Engineering had the platforms we needed to be able to support our new high-throughput product up to 20G per second,” said David Maestas, chief technology officer at Bandura.<strong></strong>“The fact that the platforms were already pre-certified for export and for sale in the U.S. was a huge bonus for us.”</span></p>
    
    
    
    <p><span>UNICOM Engineering provides a broad range of products backed by value-add services to deliver solutions to companies like Bandura. With a comprehensive approach to solution design and application deployment, UNICOM Engineering uses standard technologies to build appliances that meet specific application requirements,accelerate time to market, and reduce total cost of ownership. Throughout the design process, the company considers all aspects of the solution lifecycle, including component life, energy efficiency, and regulatory requirements, among other factors.</span></p>
    
    
    
    <p><span>“We have partnered with very small companies and very large companies in the past, and feel like UNICOM Engineering offers the best of both worlds,” said Bandura CEO Suzanne Magee. “They are big enough that we know we are getting the support we need in the U.S. and global markets, and yet they’re small enough that we get personal attention. It feels like we really matter to UNICOM Engineering.” </span></p>
    
    
    
    <p><strong><span>About Bandura, LLC</span></strong></p>
    
    <p><span>Bandura® is a wholly owned subsidiary of TechGuard Security, founded in February 2000 in direct response to Presidential Decision Directive 63, provides trusted and innovative Critical Infrastructure Protection to the Department of Defense, Homeland Security, Federal agencies, and the US Critical Infrastructure. The TechGuardians® research, develop, and rapidly prototype, cutting-edge security technologies, including the patent and patent-pending PoliWall® with HIPPIE® and PCELs® technologies; and provide expert consulting services.  PoliWall is marketed under Bandura, LLC. </span><strong></strong></p>
    
    
    
    <p><strong><span>About UNICOM Engineering, Inc. </span></strong></p>
    
    <p><span>UNICOM Engineering is a leading provider of server-based application platforms and lifecycle support services for software developers and OEMs worldwide. Through its expertise and comprehensive suite of solution design, system integration, application management, global logistics, support and maintenance services, UNICOM Engineering is redefining application deployment solutions to provide customers with a sustainable competitive advantage. More than a decade of appliance innovation with the ability to provide physical, virtual, and cloud-ready solutions makes UNICOM Engineering one of the most trusted software deployment partners in the industry. Founded in 1997, UNICOM Engineering has facilities in Canton, Massachusetts, Plano, Texas, and Galway, Ireland. For more information, visit </span><a href="http://www.unicomengineering.com" rel="nofollow external" class="bo"><span>www.unicomengineering.com</span></a><span>. <br></span></p>
    
    <p><strong><span>For additional information, contact:</span></strong></p>
    
    
    
    <p><span>Jill Colna or Laura Nelson<br>
    SVM Public Relations<br>
    401-490-9700<br>
    </span><a href="mailto:jill.colna@svmpr.com" rel="nofollow external" class="bo"><span>jill.colna@svmpr.com</span></a><span><br>
    </span><a href="mailto:laura.nelson@svmpr.com" rel="nofollow external" class="bo"><span>laura.nelson@svmpr.com</span></a></p>
    
    </div>
]]>
</Body>
<Summary>Bandura, a TechGuard Company, Partners with UNICOM Engineering to Develop New Product for Overseas Market       UNICOM Engineering’s Manufacturing, Regulatory Certification and Global Logistics...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37736/guest@my.umbc.edu/efec9d47dd83ab5ea3fdfbbc01fd89aa/api/pixel</TrackingUrl>
<Group token="bwtech">bwtech@UMBC Research and Technology Park</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/bwtech</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xsmall.png?1760034935</AvatarUrl>
<AvatarUrl size="original">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/original.png?1760034935</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xxlarge.png?1760034935</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xlarge.png?1760034935</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/large.png?1760034935</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/medium.png?1760034935</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/small.png?1760034935</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xsmall.png?1760034935</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xxsmall.png?1760034935</AvatarUrl>
<Sponsor>bwtech@UMBC</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 30 Oct 2013 15:22:06 -0400</PostedAt>
<EditAt>Wed, 30 Oct 2013 15:32:48 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="37739" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37739">
<Title>Code a Simple Github API Webapp using jQuery &amp; Ajax</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>The online development tool Github has been around for a few years now. It provides online Git repository hosting for projects written in any common programming language. Over time their <a href="http://developer.github.com/v3/" rel="nofollow external" class="bo">online API</a> has gone through a few changes with the most current release at version 3. I have lots of fun toying around with different APIs, and Github is no exception.</p>
    <p>In this tutorial I want to demonstrate how we can build a remote Github webapp using jQuery and Ajax. You enter a username and using the API we pull out some information about the user and their profile stats. Since this requires a remote connection through Ajax you’ll need to host this on some type of web server, or a local server environment if you have one. I’ve also hosted a live demo that you can check out below.</p>
    <p></p>
    <p><a href="http://byjakewithlove.com/treehouse/github-api/" rel="nofollow external" class="bo"><img src="http://blog.teamtreehouse.com/wp-content/uploads/2013/10/github-api-jquery-tutorial-preview.jpg" alt="github api jquery webapp tutorial demo screenshot" style="max-width: 100%; height: auto;"></a></p>
    <p><strong><a href="http://byjakewithlove.com/treehouse/github-api/" rel="nofollow external" class="bo">Live Demo</a></strong> – <strong><a href="http://blog.teamtreehouse.com/wp-content/uploads/2013/10/github-jquery-api-codes.zip" rel="nofollow external" class="bo">Download Source Code</a></strong></p>
    <h2>Getting Started</h2>
    <p>So far I’ve downloaded a local copy of <a href="http://jquery.com/download/" rel="nofollow external" class="bo">jQuery</a> and created another css directory for my stylesheet. The page design itself isn’t super important, but it does help to understand my whole process when building the webapp.</p>
    <pre>  &lt;div id="w"&gt;&#x000A;        &lt;h1&gt;Simple Github API Webapp&lt;/h1&gt;&#x000A;        &lt;p&gt;Enter a single Github username below and click the button to display profile info via JSON.&lt;/p&gt;&#x000A;        &#x000A;        &lt;input type="text" name="ghusername" id="ghusername" placeholder="Github username..."&gt;&#x000A;        &#x000A;        &lt;a href="#" id="ghsubmitbtn"&gt;Pull User Data&lt;/a&gt;&#x000A;        &#x000A;        &lt;div id="ghapidata" class="clearfix"&gt;&lt;/div&gt;&#x000A;      &lt;/div&gt;&#x000A;    </pre>
    <p>This is all you will find in the HTML body since most of the code is appended using jQuery. <strong>#ghusername</strong> is the input field to hold the username and <strong>#ghsubmitbtn</strong> is the element we use for triggering the API call. Once the user clicks on this link we can pull out all the info we need and create one long string variable holding all the HTML. This gets applied into <strong>#ghapidata</strong> using the jQuery <a href="http://api.jquery.com/html/" rel="nofollow external" class="bo">.html()</a> method.</p>
    <p>Since the majority of the content here is written in jQuery I’d like to focus solely on the scripting. But if you want to learn about my CSS styles check out the <strong>styles.css</strong> file along with my source code. All of the classes we use in jQuery have already been styled beforehand. The easiest method is to construct your interface using HTML and CSS with dummy data, and then go back to replace it with jQuery.</p>
    <h2>Different Ajax Calls</h2>
    <p>I wrote two separate ways of pulling JSON data from the server, but I want to clarify that either one can work fine. A newer solution <a href="http://api.jquery.com/jQuery.getJSON/" rel="nofollow external" class="bo">$.getJSON()</a> is a shorthand Ajax function where you know the response will be in JSON format. I also put together a different function which allows for a callback method using <a href="http://api.jquery.com/jQuery.ajax/" rel="nofollow external" class="bo">$.ajax()</a>.</p>
    <pre>  function requestJSON(url, callback) {&#x000A;        $.ajax({&#x000A;          url: url,&#x000A;          complete: function(xhr) {&#x000A;            callback.call(null, xhr.responseJSON);&#x000A;          }&#x000A;        });&#x000A;      }&#x000A;    </pre>
    <p>This block is found at the very bottom of the script, defined as a reusable function. It helps if you want to call different Ajax requests based on which button is pressed – that way you can pass in different variables for the request URL and callback method. There are reasons to use both of these methods but for newcomers I’d recommend using getJSON() to make problem solving a bit quicker.</p>
    <h2>Handling User Input</h2>
    <p>I’ve setup a click event listener tied onto the button which calls a new function whenever it gets clicked. My first line uses <a href="http://api.jquery.com/event.preventDefault/" rel="nofollow external" class="bo">event.preventDefault()</a> so the HREF value doesn’t get loaded into the address bar. I also put together a small loading GIF which appears while we are waiting on the Ajax request.</p>
    <pre>$(function(){&#x000A;      $('#ghsubmitbtn').on('click', function(e){&#x000A;        e.preventDefault();&#x000A;        $('#ghapidata').html('&lt;div id="loader"&gt;&lt;img src="css/loader.gif" alt="loading..."&gt;&lt;/div&gt;');&#x000A;        &#x000A;        var username = $('#ghusername').val();&#x000A;        var requri   = '<a href="https://api.github.com/users/'+username">https://api.github.com/users/'+username</a>;&#x000A;        var repouri  = '<a href="https://api.github.com/users/'+username+'/repos">https://api.github.com/users/'+username+'/repos</a>';&#x000A;        &#x000A;        requestJSON(requri, function(json) {&#x000A;    </pre>
    <p>Each variable is used to obtain information about the API request. Each URI is based on the username provided in the text field. It’s important that you recognize we are calling the function I wrote earlier <strong>requestJSON()</strong> and using the sample user URI to get profile info from Github.</p>
    <p>Notice the second parameter writes in a callback function. We aren’t defining this callback elsewhere in the document, it gets initialized right away. So inside this new function we have access to the JSON data so that we can start organizing a return value. Keep this in mind as we go over the rest of the code.</p>
    <h2>Organizing API Data</h2>
    <p>Our simple JSON object is returned to a variable with the name <strong>json</strong>. First we need to check out the response and see how we are configuring the page output.</p>
    <pre>      if(json.message == "Not Found" || username == '') {&#x000A;            $('#ghapidata').html("&lt;h2&gt;No User Info Found&lt;/h2&gt;");&#x000A;          }&#x000A;          &#x000A;          else {&#x000A;            // else we have a user and we display their info&#x000A;            var fullname   = json.name;&#x000A;            var username   = json.login;&#x000A;            var aviurl     = json.avatar_url;&#x000A;            var profileurl = json.html_url;&#x000A;            var location   = json.location;&#x000A;            var followersnum = json.followers;&#x000A;            var followingnum = json.following;&#x000A;            var reposnum     = json.public_repos;&#x000A;            &#x000A;            if(fullname == undefined) { fullname = username; }&#x000A;    </pre>
    <p>If the user does not exist we don’t get any JSON response, just a string “Not Found”. If that’s the case we end the script immediately by appending some basic HTML onto the page. Otherwise we do have a real user and we can start creating variables to hold their profile information. At the end I put together an <strong>if{}</strong> statement checking if the user has no set Full Name, then we just replace it with their account username instead.</p>
    <pre>        var outhtml = '&lt;h2&gt;'+fullname+' &lt;span class="smallname"&gt;(@&lt;a href="'+profileurl+'" target="_blank"&gt;'+username+'&lt;/a&gt;)&lt;/span&gt;&lt;/h2&gt;';&#x000A;            outhtml = outhtml + '&lt;div class="ghcontent"&gt;&lt;div class="avi"&gt;&lt;a href="'+profileurl+'" target="_blank"&gt;&lt;img src="'+aviurl+'" width="80" height="80" alt="'+username+'"&gt;&lt;/a&gt;&lt;/div&gt;';&#x000A;            outhtml = outhtml + '&lt;p&gt;Followers: '+followersnum+' - Following: '+followingnum+'&lt;br&gt;Repos: '+reposnum+'&lt;/p&gt;&lt;/div&gt;';&#x000A;            outhtml = outhtml + '&lt;div class="repolist clearfix"&gt;';&#x000A;    </pre>
    <p>Now we follow-up by creating a single variable <strong>outhtml</strong> to hold all the HTML output. This is why you may find it easier to have already written the HTML so you know what will look good on the page. Once all the static information is written into HTML my last feature is to pull out a list of the user’s Github repos(including forks).</p>
    <p>To do this we need another Ajax request. I’m going to use <strong>$.getJSON()</strong> and write another function to handle the HTML output onto the page.</p>
    <pre>        var repositories;&#x000A;            $.getJSON(repouri, function(json){&#x000A;              repositories = json;   &#x000A;              outputPageContent();                &#x000A;            });          &#x000A;            &#x000A;            function outputPageContent() {&#x000A;              if(repositories.length == 0) { outhtml = outhtml + '&lt;p&gt;No repos!&lt;/p&gt;&lt;/div&gt;'; }&#x000A;              else {&#x000A;                outhtml = outhtml + '&lt;p&gt;&lt;strong&gt;Repos List:&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt;';&#x000A;                $.each(repositories, function(index) {&#x000A;                  outhtml = outhtml + '&lt;li&gt;&lt;a href="'+repositories[index].html_url+'" target="_blank"&gt;'+repositories[index].name + '&lt;/a&gt;&lt;/li&gt;';&#x000A;                });&#x000A;                outhtml = outhtml + '&lt;/ul&gt;&lt;/div&gt;'; &#x000A;              }&#x000A;              $('#ghapidata').html(outhtml);&#x000A;            } // end outputPageContent()&#x000A;          } // end else statement&#x000A;        }); // end requestJSON Ajax call&#x000A;      }); // end click event handler&#x000A;    </pre>
    <p>The repositories variable now contains a full JSON response of the user’s entire repo collection. The new function I wrote <strong>outputPageContent()</strong> will have access to this variable because it is defined at the same scope. First I check if the JSON response is empty because the user has no repositories, otherwise we output some HTML using a jQuery loop.</p>
    <p>The simplest way is using <a href="http://api.jquery.com/jQuery.each/" rel="nofollow external" class="bo">.each()</a> on the repositories JSON object. The callback function allows 2 parameters but we only need the index value. In basic English, this loop will append one more <strong>&lt;li&gt;</strong> element into the output HTML for each repo in the JSON object. I can open+close the unordered list by writing this code outside of the loop.</p>
    <p>Finally the output function ends with <strong>$(‘#ghapidata’).html(outhtml)</strong> to render this whole HTML string right into the empty div element. This will automatically replace the small GIF loader I added before, and it’ll do the same thing if you enter a different username into the text field.</p>
    <p><a href="http://byjakewithlove.com/treehouse/github-api/" rel="nofollow external" class="bo"><img src="http://blog.teamtreehouse.com/wp-content/uploads/2013/10/github-api-jquery-tutorial-preview.jpg" alt="github api jquery webapp tutorial demo screenshot" style="max-width: 100%; height: auto;"></a></p>
    <p><strong><a href="http://byjakewithlove.com/treehouse/github-api/" rel="nofollow external" class="bo">Live Demo</a></strong> – <strong><a href="http://blog.teamtreehouse.com/wp-content/uploads/2013/10/github-jquery-api-codes.zip" rel="nofollow external" class="bo">Download Source Code</a></strong></p>
    <h2>Closing</h2>
    <p>Once you start learning the basics of API development the whole process becomes very educational. Pulling data from 3rd party services can offer many new ideas for widgets or content areas in your layout. I do hope that my example can provide a way for developers to understand the process of using an online API. Also feel free to download a sample copy of my source codes and see what else you can learn.</p>
    <p>The post <a href="http://blog.teamtreehouse.com/admin" rel="nofollow external" class="bo">Code a Simple Github API Webapp using jQuery &amp; Ajax</a> appeared first on <a href="http://blog.teamtreehouse.com" rel="nofollow external" class="bo">Treehouse Blog</a>.</p>
    </div>
]]>
</Body>
<Summary>The online development tool Github has been around for a few years now. It provides online Git repository hosting for projects written in any common programming language. Over time their online...</Summary>
<Website>http://feedproxy.google.com/~r/teamtreehouse/~3/z5jXw_E3OQM/admin</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37739/guest@my.umbc.edu/a66e9928372a85ccd784b8e1d7b0232c/api/pixel</TrackingUrl>
<Tag>admin</Tag>
<Tag>ajax</Tag>
<Tag>android</Tag>
<Tag>api</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>ios</Tag>
<Tag>javascript</Tag>
<Tag>jquery-tutorials</Tag>
<Tag>learn-to-code</Tag>
<Tag>open-source</Tag>
<Tag>responsive</Tag>
<Tag>web</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, 30 Oct 2013 15:00:36 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="37746" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37746">
<Title>Code a Simple Github API Webapp using jQuery &amp; Ajax</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>The online development tool Github has been around for a few years now. It provides online Git repository hosting for projects written in any common programming language. Over time their <a href="http://developer.github.com/v3/" rel="nofollow external" class="bo">online API</a> has gone through a few changes with the most current release at version 3. I have lots of fun toying around with different APIs, and Github is no exception.</p>
    <p>In this tutorial I want to demonstrate how we can build a remote Github webapp using jQuery and Ajax. You enter a username and using the API we pull out some information about the user and their profile stats. Since this requires a remote connection through Ajax you’ll need to host this on some type of web server, or a local server environment if you have one. I’ve also hosted a live demo that you can check out below.</p>
    <p></p>
    <p><a href="http://byjakewithlove.com/treehouse/github-api/" rel="nofollow external" class="bo"><img src="http://blog.teamtreehouse.com/wp-content/uploads/2013/10/github-api-jquery-tutorial-preview.jpg" alt="github api jquery webapp tutorial demo screenshot" style="max-width: 100%; height: auto;"></a></p>
    <p><strong><a href="http://byjakewithlove.com/treehouse/github-api/" rel="nofollow external" class="bo">Live Demo</a></strong> – <strong><a href="http://blog.teamtreehouse.com/wp-content/uploads/2013/10/github-jquery-api-codes.zip" rel="nofollow external" class="bo">Download Source Code</a></strong></p>
    <h2>Getting Started</h2>
    <p>So far I’ve downloaded a local copy of <a href="http://jquery.com/download/" rel="nofollow external" class="bo">jQuery</a> and created another css directory for my stylesheet. The page design itself isn’t super important, but it does help to understand my whole process when building the webapp.</p>
    <pre>  &lt;div id="w"&gt;&#x000A;        &lt;h1&gt;Simple Github API Webapp&lt;/h1&gt;&#x000A;        &lt;p&gt;Enter a single Github username below and click the button to display profile info via JSON.&lt;/p&gt;&#x000A;        &#x000A;        &lt;input type="text" name="ghusername" id="ghusername" placeholder="Github username..."&gt;&#x000A;        &#x000A;        &lt;a href="#" id="ghsubmitbtn"&gt;Pull User Data&lt;/a&gt;&#x000A;        &#x000A;        &lt;div id="ghapidata" class="clearfix"&gt;&lt;/div&gt;&#x000A;      &lt;/div&gt;&#x000A;    </pre>
    <p>This is all you will find in the HTML body since most of the code is appended using jQuery. <strong>#ghusername</strong> is the input field to hold the username and <strong>#ghsubmitbtn</strong> is the element we use for triggering the API call. Once the user clicks on this link we can pull out all the info we need and create one long string variable holding all the HTML. This gets applied into <strong>#ghapidata</strong> using the jQuery <a href="http://api.jquery.com/html/" rel="nofollow external" class="bo">.html()</a> method.</p>
    <p>Since the majority of the content here is written in jQuery I’d like to focus solely on the scripting. But if you want to learn about my CSS styles check out the <strong>styles.css</strong> file along with my source code. All of the classes we use in jQuery have already been styled beforehand. The easiest method is to construct your interface using HTML and CSS with dummy data, and then go back to replace it with jQuery.</p>
    <h2>Different Ajax Calls</h2>
    <p>I wrote two separate ways of pulling JSON data from the server, but I want to clarify that either one can work fine. A newer solution <a href="http://api.jquery.com/jQuery.getJSON/" rel="nofollow external" class="bo">$.getJSON()</a> is a shorthand Ajax function where you know the response will be in JSON format. I also put together a different function which allows for a callback method using <a href="http://api.jquery.com/jQuery.ajax/" rel="nofollow external" class="bo">$.ajax()</a>.</p>
    <pre>  function requestJSON(url, callback) {&#x000A;        $.ajax({&#x000A;          url: url,&#x000A;          complete: function(xhr) {&#x000A;            callback.call(null, xhr.responseJSON);&#x000A;          }&#x000A;        });&#x000A;      }&#x000A;    </pre>
    <p>This block is found at the very bottom of the script, defined as a reusable function. It helps if you want to call different Ajax requests based on which button is pressed – that way you can pass in different variables for the request URL and callback method. There are reasons to use both of these methods but for newcomers I’d recommend using getJSON() to make problem solving a bit quicker.</p>
    <h2>Handling User Input</h2>
    <p>I’ve setup a click event listener tied onto the button which calls a new function whenever it gets clicked. My first line uses <a href="http://api.jquery.com/event.preventDefault/" rel="nofollow external" class="bo">event.preventDefault()</a> so the HREF value doesn’t get loaded into the address bar. I also put together a small loading GIF which appears while we are waiting on the Ajax request.</p>
    <pre>$(function(){&#x000A;      $('#ghsubmitbtn').on('click', function(e){&#x000A;        e.preventDefault();&#x000A;        $('#ghapidata').html('&lt;div id="loader"&gt;&lt;img src="css/loader.gif" alt="loading..."&gt;&lt;/div&gt;');&#x000A;        &#x000A;        var username = $('#ghusername').val();&#x000A;        var requri   = '<a href="https://api.github.com/users/'+username">https://api.github.com/users/'+username</a>;&#x000A;        var repouri  = '<a href="https://api.github.com/users/'+username+'/repos">https://api.github.com/users/'+username+'/repos</a>';&#x000A;        &#x000A;        requestJSON(requri, function(json) {&#x000A;    </pre>
    <p>Each variable is used to obtain information about the API request. Each URI is based on the username provided in the text field. It’s important that you recognize we are calling the function I wrote earlier <strong>requestJSON()</strong> and using the sample user URI to get profile info from Github.</p>
    <p>Notice the second parameter writes in a callback function. We aren’t defining this callback elsewhere in the document, it gets initialized right away. So inside this new function we have access to the JSON data so that we can start organizing a return value. Keep this in mind as we go over the rest of the code.</p>
    <h2>Organizing API Data</h2>
    <p>Our simple JSON object is returned to a variable with the name <strong>json</strong>. First we need to check out the response and see how we are configuring the page output.</p>
    <pre>      if(json.message == "Not Found" || username == '') {&#x000A;            $('#ghapidata').html("&lt;h2&gt;No User Info Found&lt;/h2&gt;");&#x000A;          }&#x000A;          &#x000A;          else {&#x000A;            // else we have a user and we display their info&#x000A;            var fullname   = json.name;&#x000A;            var username   = json.login;&#x000A;            var aviurl     = json.avatar_url;&#x000A;            var profileurl = json.html_url;&#x000A;            var location   = json.location;&#x000A;            var followersnum = json.followers;&#x000A;            var followingnum = json.following;&#x000A;            var reposnum     = json.public_repos;&#x000A;            &#x000A;            if(fullname == undefined) { fullname = username; }&#x000A;    </pre>
    <p>If the user does not exist we don’t get any JSON response, just a string “Not Found”. If that’s the case we end the script immediately by appending some basic HTML onto the page. Otherwise we do have a real user and we can start creating variables to hold their profile information. At the end I put together an <strong>if{}</strong> statement checking if the user has no set Full Name, then we just replace it with their account username instead.</p>
    <pre>        var outhtml = '&lt;h2&gt;'+fullname+' &lt;span class="smallname"&gt;(@&lt;a href="'+profileurl+'" target="_blank"&gt;'+username+'&lt;/a&gt;)&lt;/span&gt;&lt;/h2&gt;';&#x000A;            outhtml = outhtml + '&lt;div class="ghcontent"&gt;&lt;div class="avi"&gt;&lt;a href="'+profileurl+'" target="_blank"&gt;&lt;img src="'+aviurl+'" width="80" height="80" alt="'+username+'"&gt;&lt;/a&gt;&lt;/div&gt;';&#x000A;            outhtml = outhtml + '&lt;p&gt;Followers: '+followersnum+' - Following: '+followingnum+'&lt;br&gt;Repos: '+reposnum+'&lt;/p&gt;&lt;/div&gt;';&#x000A;            outhtml = outhtml + '&lt;div class="repolist clearfix"&gt;';&#x000A;    </pre>
    <p>Now we follow-up by creating a single variable <strong>outhtml</strong> to hold all the HTML output. This is why you may find it easier to have already written the HTML so you know what will look good on the page. Once all the static information is written into HTML my last feature is to pull out a list of the user’s Github repos(including forks).</p>
    <p>To do this we need another Ajax request. I’m going to use <strong>$.getJSON()</strong> and write another function to handle the HTML output onto the page.</p>
    <pre>        var repositories;&#x000A;            $.getJSON(repouri, function(json){&#x000A;              repositories = json;   &#x000A;              outputPageContent();                &#x000A;            });          &#x000A;            &#x000A;            function outputPageContent() {&#x000A;              if(repositories.length == 0) { outhtml = outhtml + '&lt;p&gt;No repos!&lt;/p&gt;&lt;/div&gt;'; }&#x000A;              else {&#x000A;                outhtml = outhtml + '&lt;p&gt;&lt;strong&gt;Repos List:&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt;';&#x000A;                $.each(repositories, function(index) {&#x000A;                  outhtml = outhtml + '&lt;li&gt;&lt;a href="'+repositories[index].html_url+'" target="_blank"&gt;'+repositories[index].name + '&lt;/a&gt;&lt;/li&gt;';&#x000A;                });&#x000A;                outhtml = outhtml + '&lt;/ul&gt;&lt;/div&gt;'; &#x000A;              }&#x000A;              $('#ghapidata').html(outhtml);&#x000A;            } // end outputPageContent()&#x000A;          } // end else statement&#x000A;        }); // end requestJSON Ajax call&#x000A;      }); // end click event handler&#x000A;    </pre>
    <p>The repositories variable now contains a full JSON response of the user’s entire repo collection. The new function I wrote <strong>outputPageContent()</strong> will have access to this variable because it is defined at the same scope. First I check if the JSON response is empty because the user has no repositories, otherwise we output some HTML using a jQuery loop.</p>
    <p>The simplest way is using <a href="http://api.jquery.com/jQuery.each/" rel="nofollow external" class="bo">.each()</a> on the repositories JSON object. The callback function allows 2 parameters but we only need the index value. In basic English, this loop will append one more <strong>&lt;li&gt;</strong> element into the output HTML for each repo in the JSON object. I can open+close the unordered list by writing this code outside of the loop.</p>
    <p>Finally the output function ends with <strong>$(‘#ghapidata’).html(outhtml)</strong> to render this whole HTML string right into the empty div element. This will automatically replace the small GIF loader I added before, and it’ll do the same thing if you enter a different username into the text field.</p>
    <p><a href="http://byjakewithlove.com/treehouse/github-api/" rel="nofollow external" class="bo"><img src="http://blog.teamtreehouse.com/wp-content/uploads/2013/10/github-api-jquery-tutorial-preview.jpg" alt="github api jquery webapp tutorial demo screenshot" style="max-width: 100%; height: auto;"></a></p>
    <p><strong><a href="http://byjakewithlove.com/treehouse/github-api/" rel="nofollow external" class="bo">Live Demo</a></strong> – <strong><a href="http://blog.teamtreehouse.com/wp-content/uploads/2013/10/github-jquery-api-codes.zip" rel="nofollow external" class="bo">Download Source Code</a></strong></p>
    <h2>Closing</h2>
    <p>Once you start learning the basics of API development the whole process becomes very educational. Pulling data from 3rd party services can offer many new ideas for widgets or content areas in your layout. I do hope that my example can provide a way for developers to understand the process of using an online API. Also feel free to download a sample copy of my source codes and see what else you can learn.</p>
    <p>The post <a href="http://blog.teamtreehouse.com/jquery-ajax-github-api-webapp" rel="nofollow external" class="bo">Code a Simple Github API Webapp using jQuery &amp; Ajax</a> appeared first on <a href="http://blog.teamtreehouse.com" rel="nofollow external" class="bo">Treehouse Blog</a>.</p>
    </div>
]]>
</Body>
<Summary>The online development tool Github has been around for a few years now. It provides online Git repository hosting for projects written in any common programming language. Over time their online...</Summary>
<Website>http://feedproxy.google.com/~r/teamtreehouse/~3/zcS7guxIbEs/jquery-ajax-github-api-webapp</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37746/guest@my.umbc.edu/f179395bd44774d4243789b165fa5abe/api/pixel</TrackingUrl>
<Tag>admin</Tag>
<Tag>ajax</Tag>
<Tag>android</Tag>
<Tag>api</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>ios</Tag>
<Tag>javascript</Tag>
<Tag>jquery-tutorials</Tag>
<Tag>learn-to-code</Tag>
<Tag>open-source</Tag>
<Tag>responsive</Tag>
<Tag>web</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, 30 Oct 2013 15:00:36 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="37735" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37735">
<Title>talk: Acoustic-Tactile Rendering of Visual Information for the Visually Impaired, 2:30 Mon 11/11, ITE325b</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img alt="" src="http://www.csee.umbc.edu/wp-content/uploads/2013/10/Screen-Shot-2013-10-30-at-2.14.36-PM.png" width="700" height="153" style="max-width: 100%; height: auto;"></p>
    <h4>Computer Science and Electrical Engineering<br>
    University of Maryland, Baltimore County</h4>
    <h2>Acoustic-Tactile Rendering of Visual<br>
    Information for the Visually Impaired</h2>
    <h2>Thrasyvoulos N. Pappas</h2>
    <h4>Electrical Engineering and Computer Science<br>
    Northwestern University</h4>
    <h4>2:30pm Monday, 11 November 2013, ITE 325B, UMBC</h4>
    <p>After a brief overview of research in the Department of Electrical Engineering and Computer Science at Northwestern University, we will focus on one particular research problem, the use of hearing and touch for conveying graphical and pictorial information to visually impaired (VI) people. This problem combines visual, acoustic, and tactile signal analysis with and understanding of human perception and interface design. The main idea is that the user actively explores a two-dimensional layout consisting of one or more objects with the finger on a touch screen. The objects are displayed via sounds and raised-dot tactile patterns. The finger acts as a pointing device and provides kinesthetic feedback. The touch screen is partitioned into regions, each representing an element of a visual scene or graphical display. A key element of our research is the use of spatial sound to facilitate active exploration of the layout. We use the head-related transfer function (HRTF) for rendering sound directionality and variations of sound intensity and tempo for rendering proximity. Our research has addressed object shape and size perception, as well as the of a 2-D layout of simple objects with identical size and shape. We have also considered the rendering of a simple scene layout consisting of objects in a linear arrangement, each with a distinct tapping sound, which we compare to a “virtual cane.” Subjective experiments with visually-blocked subjects demonstrate the effectiveness of the proposed approaches. Our research findings are also expected to have an impact in other applications where vision cannot be used, e.g., for GPS navigation while driving, fire-fighter operations in thick smoke, and military missions conducted under the cover of darkness.</p>
    <p>Thrasos Pappas received the Ph.D. degree in electrical engineering and computer science from MIT in 1987. From 1987 until 1999, he was a Member of the Technical Staff at Bell Laboratories, Murray Hill, NJ. He joined the EECS Department at Northwestern in 1999. His research interests are in human perception and electronic media, and in particular, image and video quality and compression, image and video analysis, content-based retrieval, model-based halftoning, and tactile and multimodal interfaces. Prof. Pappas is a Fellow of the IEEE and SPIE. He has served as editor-in-chief of the IEEE Transactions on Image Processing (2010-12), elected member of the Board of Governors of the Signal Processing Society of IEEE (2004-07), chair of the IEEE Image and Multidimensional Signal Processing Technical Committee (2002-03), and technical program co-chair of ICIP-01 and ICIP-09. Since 1997 he has been co-chair of the SPIE/IS&amp;T Conference on Human Vision and Electronic Imaging.</p>
    <p>Host: Janet C. Rutledge, Ph.D.</p>
    </div>
]]>
</Body>
<Summary>Computer Science and Electrical Engineering  University of Maryland, Baltimore County   Acoustic-Tactile Rendering of Visual  Information for the Visually Impaired   Thrasyvoulos N. Pappas...</Summary>
<Website>http://www.csee.umbc.edu/2013/10/talk-acoustic-tactile-rendering-of-visual-information-for-the-visually-impaired-230-mon-1111-ite325b/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37735/guest@my.umbc.edu/0e80794efc5ff786b9e5ea7aee119a3e/api/pixel</TrackingUrl>
<Tag>computer-engineering</Tag>
<Tag>computer-science</Tag>
<Tag>electrical-engineering</Tag>
<Tag>news</Tag>
<Tag>research</Tag>
<Tag>talks</Tag>
<Group token="csee">Computer Science and Electrical Engineering</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/csee</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/original.png?1314043393</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/large.png?1314043393</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/medium.png?1314043393</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/small.png?1314043393</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxsmall.png?1314043393</AvatarUrl>
<Sponsor>Computer Science and Electrical Engineering</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 30 Oct 2013 14:22:29 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="37732" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37732">
<Title>PhD defense: Visualizing Sequential Patterns in Large Datasets, 11/1</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <h2><img alt="" src="http://www.csee.umbc.edu/wp-content/uploads/2013/10/Screen-Shot-2013-10-30-at-1.09.49-PM.png" width="700" height="329" style="max-width: 100%; height: auto;"></h2>
    <h3>PhD Defense</h3>
    <h2>Visualizing Sequential Patterns in Large</h2>
    <h2>Datasets Using Levels of Abstraction</h2>
    <h2>Dana Wortman</h2>
    <h3>11am – 2pm, Friday, 1 November 2013, ITE 325b</h3>
    <p>Student retention and success are important topics in all academic fields and institutions. Faculty seek to understand which topics, theories, or skills defeat students or require strengthening to promote success. Programs seek to understand how to better sequence courses to ensure students are prepared for requisite future courses. Institutions seek to understand how to intervene to promote retention and improve graduation rates. Unfortunately, most statistics gathered by Institutional Research efforts are limited to failure rates, enrollment rates, and graduation rates and do not often explore individual student performance. While these are often further analyzed by various student demographic attributes such as race and gender, these statistical methods alone are insufficient to understand student performance over time and sequential patterns of enrollment or success and failure. This research presents a method using multiple levels of abstraction to visualize performance patterns over time.</p>
    <p>To visualize student enrollment and performance patterns, several issues must be addressed including sequential versus concurrent enrollment, spatial layout of course events, and performance over time. Another challenge addressed by this work is that of presenting sequences within the context of the entire program. To address these issues, multiple abstractions are combined in a multi-layered visualization that presents a high-level overview of students enrollment and performance patterns while retaining detailed information regarding individual student progress and performance as they advance through their courses.</p>
    <p>The aggregated view represents the lowest level of abstraction, student enrollment and performance are aggregated into a graph structure, presenting patterns of movement throughout the program at the individual course level. The clustered view represents mined sequential patterns of enrollment and performance, illustrating common sequences. The directed view represents the highest level of abstraction and uses two visual elements, heat maps and a vector field, to illustrate overall performance in individual events and movement through the program. Results from multiple cohorts can then be superimposed on the same visualization to enable easy comparisons between patterns. Together, these abstractions provide a focus+context view of student performance, retaining outliers and emphasizing common patterns to illuminate dominant and unique patterns between cohorts of students.</p>
    <p>This approach can help educators better understand student progress through the program, performance in individual courses, or student-selected course sequencing and this information can be used to address deficiencies in preparation, skills, or prerequisites. To demonstrate the appropriateness of this approach, performance and enrollment patterns are explored in the Computer Science program at the University of Maryland, Baltimore County. Specifically, this work examines the Gateway policy that requires students to earn a B or higher in the first two required programming courses before progressing with the hopes of validating the existing Gateway but also exploring other possible Gateway courses. Other issues explored within the Computer Science program include race, gender, math placement, and high school scores with the goal of attracting and retaining a more diverse group of students.</p>
    <p>Committee: Penny Rheingans (chair), Marie desJardins, Marc Olano, Tim Finin and Diane Lee</p>
    </div>
]]>
</Body>
<Summary>PhD Defense   Visualizing Sequential Patterns in Large   Datasets Using Levels of Abstraction   Dana Wortman   11am – 2pm, Friday, 1 November 2013, ITE 325b   Student retention and success are...</Summary>
<Website>http://www.csee.umbc.edu/2013/10/phd-defense-visualizing-sequential-patterns-in-large-datasets/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37732/guest@my.umbc.edu/736ed95d3adb41143e55730d7a655f62/api/pixel</TrackingUrl>
<Tag>computer-engineering</Tag>
<Tag>defense</Tag>
<Tag>graduate</Tag>
<Tag>news</Tag>
<Tag>research</Tag>
<Tag>talks</Tag>
<Group token="csee">Computer Science and Electrical Engineering</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/csee</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/original.png?1314043393</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/large.png?1314043393</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/medium.png?1314043393</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/small.png?1314043393</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxsmall.png?1314043393</AvatarUrl>
<Sponsor>Computer Science and Electrical Engineering</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 30 Oct 2013 13:14:11 -0400</PostedAt>
<EditAt>Wed, 30 Oct 2013 13:14:11 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="37730" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37730">
<Title>DealBook: Two Financial Advisers Accuse Twitter of Secondary Market Fraud</Title>
<Body>
<![CDATA[
    <div class="html-content">Continental Advisors and the Precedo Capital Group contend they were promised up to $278 million worth of Twitter shares in part to increase the company’s secondary market valuation.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2013%2F10%2F30%2Ftwo-financial-advisers-accuse-twitter-of-secondary-market-fraud%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Two+Financial+Advisers+Accuse+Twitter+of+Secondary+Market+Fraud" 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%2Fdealbook.nytimes.com%2F2013%2F10%2F30%2Ftwo-financial-advisers-accuse-twitter-of-secondary-market-fraud%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Two+Financial+Advisers+Accuse+Twitter+of+Secondary+Market+Fraud" 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%2Fdealbook.nytimes.com%2F2013%2F10%2F30%2Ftwo-financial-advisers-accuse-twitter-of-secondary-market-fraud%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Two+Financial+Advisers+Accuse+Twitter+of+Secondary+Market+Fraud" 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%2Fdealbook.nytimes.com%2F2013%2F10%2F30%2Ftwo-financial-advisers-accuse-twitter-of-secondary-market-fraud%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Two+Financial+Advisers+Accuse+Twitter+of+Secondary+Market+Fraud" 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%2Fdealbook.nytimes.com%2F2013%2F10%2F30%2Ftwo-financial-advisers-accuse-twitter-of-secondary-market-fraud%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Two+Financial+Advisers+Accuse+Twitter+of+Secondary+Market+Fraud" 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/180263255336/u/0/f/640387/c/34625/s/331ae6a0/sc/25/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/180263255336/u/0/f/640387/c/34625/s/331ae6a0/sc/25/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/180263255336/u/0/f/640387/c/34625/s/331ae6a0/sc/25/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/180263255336/u/0/f/640387/c/34625/s/331ae6a0/sc/25/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/180263255336/u/0/f/640387/c/34625/s/331ae6a0/sc/25/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/180263255336/u/0/f/640387/c/34625/s/331ae6a0/sc/25/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/180263255336/u/0/f/640387/c/34625/s/331ae6a0/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/180263255336/u/0/f/640387/c/34625/s/331ae6a0/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Continental Advisors and the Precedo Capital Group contend they were promised up to $278 million worth of Twitter shares in part to increase the company’s secondary market valuation.      </Summary>
<Website>http://dealbook.nytimes.com/2013/10/30/two-financial-advisers-accuse-twitter-of-secondary-market-fraud/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37730/guest@my.umbc.edu/01649ecad9543402f5958e0b72db3d72/api/pixel</TrackingUrl>
<Tag>i-p-o-offerings</Tag>
<Tag>initial-public-offerings</Tag>
<Tag>legal-regulatory</Tag>
<Tag>new</Tag>
<Tag>suits-and-litigation-civil</Tag>
<Tag>technology</Tag>
<Tag>top-headline-2</Tag>
<Tag>twitter</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, 30 Oct 2013 13:03:38 -0400</PostedAt>
<EditAt>Thu, 31 Oct 2013 12:00:41 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="37733" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37733">
<Title>Mashable Names Jim Roberts to Oversee Content Expansion</Title>
<Body>
<![CDATA[
    <div class="html-content">The editor, Jim Roberts, worked for much of his career at The New York Times and worked briefly at Reuters.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F10%2F31%2Fbusiness%2Fmedia%2Fmashable-names-jim-roberts-to-oversee-content-expansion.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Mashable+Names+Jim+Roberts+to+Oversee+Content+Expansion" 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%2F10%2F31%2Fbusiness%2Fmedia%2Fmashable-names-jim-roberts-to-oversee-content-expansion.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Mashable+Names+Jim+Roberts+to+Oversee+Content+Expansion" 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%2F10%2F31%2Fbusiness%2Fmedia%2Fmashable-names-jim-roberts-to-oversee-content-expansion.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Mashable+Names+Jim+Roberts+to+Oversee+Content+Expansion" 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%2F10%2F31%2Fbusiness%2Fmedia%2Fmashable-names-jim-roberts-to-oversee-content-expansion.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Mashable+Names+Jim+Roberts+to+Oversee+Content+Expansion" 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%2F10%2F31%2Fbusiness%2Fmedia%2Fmashable-names-jim-roberts-to-oversee-content-expansion.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Mashable+Names+Jim+Roberts+to+Oversee+Content+Expansion" 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>
    </div>
]]>
</Body>
<Summary>The editor, Jim Roberts, worked for much of his career at The New York Times and worked briefly at Reuters.      </Summary>
<Website>http://www.nytimes.com/2013/10/31/business/media/mashable-names-jim-roberts-to-oversee-content-expansion.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37733/guest@my.umbc.edu/a53c320513ef2135d6553c858b027ceb/api/pixel</TrackingUrl>
<Tag>mashable-inc</Tag>
<Tag>new</Tag>
<Tag>news-and-news-media</Tag>
<Tag>roberts-jim</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, 30 Oct 2013 12:52:58 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="37734" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37734">
<Title>Introduction to Sails.js</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=35390&amp;c=1390105268" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=35390&amp;c=1390105268" alt="" style="max-width: 100%; height: auto;"></a><p><a href="http://sailsjs.org/" rel="nofollow external" class="bo">Sails</a> is a Javascript framework designed to resemble the MVC architecture from frameworks like Ruby on Rails.  It makes the process of building Node.js apps easier, especially APIs, single page apps and realtime features, like chat.</p>
    <p></p>
    <hr>
    <h2>Installation</h2>
    <p>To install Sails, it is quite simple. The prerequisites are to have Node.js installed and also npm, which comes with Node. Then one must issue the following command in the terminal:</p>
    <pre>sudo npm install sails -g</pre>
    <hr>
    <h2>Create a New Project</h2>
    <p>In order to create a new Sails project, the following command is used:</p>
    <pre>sails new myNewProject</pre>
    <p>Sails will generate a new folder named <code>myNewProject</code> and add all the necessary files to have a basic application built. To see what was generated, just get into the <code>myNewProject</code> folder and run the Sails server by issuing the following command in the terminal:</p>
    <pre>sails lift</pre>
    <p>Sails’s default port is 1337, so if you visit <code><a href="http://localhost:1337">http://localhost:1337</a></code> you should get the Sails default <code>index.html</code> page.</p>  <img src="http://cdn.tutsplus.com/net/uploads/2013/10/sails1.jpeg" alt="index.html" width="800" height="434" style="max-width: 100%; height: auto;"><br> <p>Now, let's have a look at what Sails generated for us. In our <code>myNewProject</code> folder the following files and sub-folders were created:</p>  <img src="http://cdn.tutsplus.com/net/uploads/2013/10/sails2.jpeg" alt="Folder structure" width="800" height="746" style="max-width: 100%; height: auto;"><br> <h4>The <code>assets</code> Folder</h4>
    <p>The <code>assets</code> folder contains subdirectories for the Javascript and CSS files that should be loaded during runtime. This is the best place to store auxiliary libraries used by your application.</p>
    <h4>The <code>public</code> Folder</h4>
    <p>Contains the files that are publicly available, such as pictures your site uses, the favicon, etc.</p>
    <h4>The <code>config</code> Folder</h4>
    <p>This is one of the important folders. Sails is designed to be flexible. It assumes some standard conventions, but it also allows the developer to change the way Sails configures the created app to fit the project’s needs. The following is a list of configuration files present in the <code>config</code> folder:</p>
    <ul>
    <li>
    <code>adapters.js</code> – used to configure the database adapters</li>
    <li>
    <code>application.js</code> – general settings for the application</li>
    <li>
    <code>assets.js</code> – asset settings for CSS and JS</li>
    <li>
    <code>bootstrap.js</code> – code that will be ran before the app launches</li>
    <li>
    <code>locales</code> – folder containing translations</li>
    <li>
    <code>policies.js</code> – user rights management configuration</li>
    <li>
    <code>routes.js</code> – the routes for the system</li>
    <li>
    <code>views.js</code> – view related settings</li>
    </ul>
    <p>The <code>sails.js</code> <a href="http://sailsjs.org/#documentation/configuration" rel="nofollow external" class="bo">documentation</a> contains detailed information on each of these folders.</p>
    <h4>The <code>views</code> Folder</h4>
    <p>The application's views are stored in this folder. Looking at its contents, we notice that the views are generated by default as EJS (embedded JavaScript). Also, the <code>views</code> folder contains views for error handling (404 and 500) and also the layout file (<code>layout.ejs</code>) and the views for the home controller, which were generated by Sails.</p>
    <h4>The <code>api</code> Folder</h4>
    <p>This folder is composed from a buch of sub-folders:</p>
    <ul>
    <li>the <code>adapters</code> folder contains the adapters used by the application to<br> handle database connections</li>
    <li>the <code>controllers</code> folder contains the application controllers</li>
    <li>the application's models are stored in the <code>models</code> folder</li>
    <li>in the <code>policies</code> folder are stored rules for application user access</li>
    <li>the api services implemented by the app are stored in the <code>services</code><br> folder</li>
    </ul>
    <hr>
    <h2>Configure the Application</h2>
    <p>So far we have created our application and took a look at what was generated by default, now it's time to configure the application to make it fit our needs.</p>
    <h3>General Settings</h3>
    <p>General settings are stored in the <code>config/application.js</code> file. The configurable options for the application are:</p>
    <ul>
    <li>application name (<code>appName</code>)</li>
    <li>the port on which the app will listen (<code>port</code>)</li>
    <li>the application environment; can be either development or production (<code>environment</code>)</li>
    <li>the level for the logger, usable to control the size of the log file (<code>log</code>)</li>
    </ul>
    <p>Note that by setting the app <code>environment</code> to production, makes Sails bundle and minify the CSS and JS, which can make it harder to debug.</p>
    <h3>Routes</h3>
    <p>Application routes are defined in the <code>config/routes.js</code> file. As you’d expect, this file will be the one that you will most often work with as you add new controllers to the application.</p>
    <p>The routes are exported as follows, in the configuration file:</p>
    <pre>module.exports.routes = {&#x000A;      // route to index page of the home controller&#x000A;      '/': {&#x000A;        controller: 'home'&#x000A;      },&#x000A;    &#x000A;      // route to the auth controller, login action&#x000A;      '/login': {&#x000A;        controller: 'auth',&#x000A;        action: 'login'&#x000A;      },&#x000A;    &#x000A;      // route to blog controller, add action to add a post to a blog&#x000A;      // note that we use also the HTTP method/verb before the path&#x000A;      'post /blog/add': {&#x000A;        controller: 'blog',&#x000A;        action: 'add_post'&#x000A;      },&#x000A;    &#x000A;      // route to get the first blog post. The find action will return&#x000A;      // the database row containing the desired information&#x000A;      '/blog/:item': {&#x000A;        controller: blog,&#x000A;        action: find&#x000A;      }&#x000A;    }</pre>
    <h3>Views</h3>
    <p>Regarding views, the configurable options are the template engine to be used and if a layout should or not be used, for views.</p>
    <hr>
    <h2>Models</h2>
    <p>Models are a representation of the application data stored in a database. Models are defined by using attributes and associations. For instance, the definition of a <code>Person</code> model might look like this:</p>
    <pre>// Person.js&#x000A;    var Person = {&#x000A;      name: 'STRING',&#x000A;      age: 'INTEGER',&#x000A;      birthDate: 'DATE',&#x000A;      phoneNumber: 'STRING',&#x000A;      emailAddress: 'STRING'&#x000A;    };&#x000A;    exports = Person;</pre>
    <p>The communication with the underlying database is done through adapters. Adapters are defined in <code>api/adapters</code> and are configured in the <code>adapters.js</code> file. At the moment of writing this article, Sails comes with three adapters: memory, disk and mysql but you can write your own adapter (see the <a href="http://sailsjs.org/#documentation/custom-adapters" rel="nofollow external" class="bo">documentation</a> for details).</p>
    <p>Once you have a model defined you can operate on it by creating records, finding records, updating and destroying records.</p>
    <hr>
    <h2>Controllers</h2>
    <p>Controllers are placed in <code>api/controllers</code>. A controller is created using the following command:</p>
    <pre>sails generate controller comment</pre>
    <p>This command will generate a <code>CommentController</code> object. Actions are defined inside this object. Actions can also be generated when you issue the <code>generate controller</code> command:</p>
    <pre>sails generate controller comment create destroy tag like</pre>
    <p>This will create a <code>Comment</code> controller with actions for <code>create</code>, <code>destroy</code>, <code>tag</code> and <code>like</code>.</p>
    <p>Actions receive as parameters the request and the response objects, which can be used for getting parameters of the URI (the request object) or output in the view (using the response object).</p>
    <p>To communicate with the model, the callback of the appopriate action is used. For instance, in the case of querying a database with <code>find</code>, the following pattern is used to manipulate the model:</p>
    <pre>Blog.find(id).done(err, blog) {&#x000A;      // blog is the database record with the specified id&#x000A;      console.log(blog.content);&#x000A;    }</pre>
    <hr>
    <h2>Views</h2>
    <p>Views are used to handle the UI of the application. By default, views are handled using EJS, but any other templating library can be used. How to configure views was discussed previously in the Configuration chapter.</p>
    <p>Views are defined in the <code>/views</code> directory and the templates are defined in the <code>/assests/templates</code> folder.</p>
    <p>There are mainly four types of views:</p>
    <ul>
    <li>server-side views</li>
    <li>view partials</li>
    <li>layout views</li>
    <li>client-side views</li>
    </ul>
    <h4>Server-Side Views</h4>
    <p>Their job is to display data when a view is requested by the client. Usually the method <code>res.view</code> corresponds to a client with the appropriate view. But if no controller or action exists for a request, Sails will serve the view in the following fashion: <code>/views/:controller/:action.ejs</code>.</p>
    <h4>The Layout View</h4>
    <p>The Layout can be found in <code>/views/layout.ejs</code>. It is used to load the application assets such as stylesheets or JavaScript libraries.</p>
    <p>Have a look at the specified file:</p>
    <pre>&lt;!DOCTYPE html&gt;&#x000A;    &lt;html&gt;&#x000A;      &lt;head&gt;&#x000A;        &lt;title&gt;&lt;%- title %&gt;&lt;/title&gt;&#x000A;    &#x000A;        &lt;!-- Viewport mobile tag for sensible mobile support --&gt;&#x000A;        &lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1, maximum-scale=1&amp;quot;&gt;&#x000A;    &#x000A;        &lt;!-- JavaScript and stylesheets from your public folder are included here --&gt;&#x000A;        &lt;%- assets.css() %&gt;&#x000A;        &lt;%- assets.js() %&gt;&#x000A;      &lt;/head&gt;&#x000A;    &#x000A;      &lt;body&gt;&#x000A;        &lt;%- body %&gt;&#x000A;    &#x000A;        &lt;!-- Templates from your view path are included here --&gt;&#x000A;        &lt;%- assets.templateLibrary() %&gt;&#x000A;      &lt;/body&gt;&#x000A;    &lt;/html&gt;</pre>
    <p>The lines <code>assets.css()</code> and <code>assets.js()</code> load the CSS and JS assets of our application and the <code>assets.templateLibrary</code> loads the client templates.</p>
    <h4>Client-Side Templates</h4>
    <p>These are defined in the <code>/assets/templates</code> and are loaded as we saw above.</p>
    <hr>
    <h2>Routes</h2>
    <p>We discussed how to configure routes in the Configuration chapter.</p>
    <p>There are several conventions that Sails follows when routes are handled:</p>
    <ul>
    <li>if the URL is not specified in the <code>config/routes.js</code> the default route for a URL is <code>/:controller/:action/:id</code> with the obvious meanings for controller and action and <code>id</code> being the request parameter derived from the URL.</li>
    <li>if <code>:action</code> is not specified, Sails will redirect to the appropriate action. Out of the box, the same RESTful route conventions are used as in Backbone.</li>
    <li>if the requested controller/action do not exist, Sails will behave as so:</li>
    <ul>
    <li>if a view exists, Sails will render that view</li>
    <li>if a view does not exist, but a model exists, Sails will return the JSON form of that model</li>
    <li>if none of the above exist, Sails will respond with a 404</li>
    </ul>
    </ul>
    <hr>
    <h2>Conclusion</h2>
    <p>Now I’ve barely scratched the surface with what Sails can do, but stay tuned, as I will follow this up with an in-depth presentation showing you how to build an application, using Sails.</p>
    <p>Also keep in mind that Sails is currently under development and constantly changing. So make sure to check out the <a href="http://sailsjs.org/#documentation/" rel="nofollow external" class="bo">documentation</a> to see what's new.</p>
    </div>
]]>
</Body>
<Summary>Sails is a Javascript framework designed to resemble the MVC architecture from frameworks like Ruby on Rails.  It makes the process of building Node.js apps easier, especially APIs, single page...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/6RGLYYhJcZY/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37734/guest@my.umbc.edu/2579d6cafdf91ef5c85507826da28b8d/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>javascript-and-ajax</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sails-js</Tag>
<Tag>sql</Tag>
<Tag>tutorials</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, 30 Oct 2013 12:27:12 -0400</PostedAt>
<EditAt>Wed, 30 Oct 2013 12:27:12 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="37729" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37729">
<Title>Selling Responsive Web Design To Clients</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <table width="650">
    <tbody>
    <tr>
    <td>
    <div>
    <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" style="max-width: 100%; height: auto;"><br><a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" rel="nofollow external" class="bo"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" alt="" style="max-width: 100%; height: auto;"></a> <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" rel="nofollow external" class="bo"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" alt="" style="max-width: 100%; height: auto;"></a> <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" rel="nofollow external" class="bo"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" alt="" style="max-width: 100%; height: auto;"></a>
    </div>
    </td>
    </tr>
    </tbody>
    </table>
    <p>Designing and developing websites that work well on mobile devices is an important aspect of the work we do on today’s Web. This importance is reflected in the conversations I have with clients, almost all of whom list “support for mobile devices” as one of their top goals for a redesign — all except one, that is.</p>
    <p>Late last year, I began a redesign project for a company that sells pressure-treated lumber products. Early on in our conversation, I turned to the topic of support for mobile devices and responsive Web design. Normally, this topic is met with enthusiasm, but not this time, as the client explained:</p>
    <blockquote>
    <p>Our customers don’t use mobile phones to come to our website.</p>
    </blockquote>
    <p>This isn’t the first time I’ve heard this comment from a potential client. I’ve had many conversations in which the company severely underestimates the number of people who access their website on a phone or other mobile device. Typically, a look at the analytics will open their eyes to the true impact that mobile is having on their website’s traffic. But when I looked at the analytics for this particular client, I was the one left in shock.</p>
    <p><em>Two percent.</em> That was how much of its traffic was coming from mobile devices at the time. That’s it!</p>
    <p>Jumping ahead to the end of this story, I did end up working with this client to redesign their website, and that website is now fully responsive. The path we took to that point, however, provides an interesting glimpse into how we as designers can go about selling responsive websites, and <strong>when we should push</strong> for a solution that we know to be an important best practice and yet whose need is <strong>not immediately obvious</strong>.</p>
    <h3>Determine Whether They Actually Need A Mobile Web Experience</h3>
    <p>The title of this article, “<em>Selling</em> Responsive Web Design To Clients,” might sound like a shady salesperson attempting to convince a customer to purchase something they don’t need. That is <em>not</em> what I am advocating for at all. So, let me start by stating that the first step in this process should be to determine whether the client actually needs a given solution at all.</p>
    <p><a href="http://www.flickr.com/photos/emmacherry/2207748365/sizes/z/in/photostream/" rel="nofollow external" class="bo"><img alt="Make sure your solution fits the client" src="http://media.smashingmagazine.com/wp-content/uploads/2013/10/puzzle-fit.jpg" width="640" height="426" style="max-width: 100%; height: auto;"></a><br>
    <em>Make sure that the solution you are selling fits the client you are pitching it to. (Image: <a href="http://www.flickr.com/photos/emmacherry/2207748365/sizes/z/in/photostream/" rel="nofollow external" class="bo">echerries</a>)</em></p>
    <p>When considering a responsive design for a website that doesn’t currently support mobile devices, begin by looking at the big picture. Do the traffic figures show that the client is attracting mobile users? If the mobile traffic figures are similar to those of this client of mine, then maybe they don’t actually need a mobile Web experience at this time — especially if the website has no other issues.</p>
    <p>If a website is currently working well for the organization — meaning that it is converting visitors, features an attractive design, and has a high-quality user experience (for desktop visitors at least), while drawing an incredibly low percentage of mobile users — then redesigning or rebuilding that website only to make it responsive wouldn’t make financial sense.</p>
    <p>You could argue that even a small percentage of visitors getting a poor experience is unacceptable and could be resolved by developing a responsive design. The designer in me can appreciate that argument, but I also understand the business side of the situation. Undertaking a responsive redesign to accommodate just 2% of the audience will be a very tough sell, no matter what company you are speaking with. This is why you need to look beyond just the traffic figures and think about more than just the design-related benefits of responsiveness.</p>
    <h3>Try To Solve Other Problems They Are Having</h3>
    <p>While support for mobile devices was not a compelling enough reason for our client to redesign their website, other concerns brought them to us in the first place. Two of these concerns were the visual design of their website, which was outdated and did not reflect their current marketing, and the lack of a content management system (CMS) or any tools to enable them to update the website on their own. So, I focused my proposal on solving these problems.</p>
    <p>A redesign would bring the look and feel of the website in line with the rest of the client’s marketing, while also improving the overall aesthetics and usability of the website itself. We would bring the website up to current standards and integrate it into a CMS (in this case, ExpressionEngine) — which would solve the second problem of being able to update the website.</p>
    <p>As I discussed with the client this proposal and the process we would follow, I mentioned that we would make the website responsive as we rebuilt it. As expected, the client questioned whether this was necessary or added cost to the project — which, of course, it would have. The key here is that I was now able to steer the conversation towards the benefits of responsive design above and beyond the support for mobile devices.</p>
    <h3>Focus On More Than Just Phones</h3>
    <p>When we talk about responsive design, we often focus on phones. This makes sense because smartphones are most unlike the type of devices that we’ve designed for in the past — that is, desktop screens. Creating one website to be marketed and managed and to deliver a high-quality experience to all devices, from desktops to smartphones, is an excellent way to demonstrate the flexibility and power of responsive design. But for this client, phone users were seemingly not a factor. Luckily, <strong>responsive design is about so much more than phones</strong>.</p>
    <p><a href="http://www.flickr.com/photos/flippoker/6679770607/sizes/z/in/photostream/" rel="nofollow external" class="bo"><img alt="The devices we are designing for today are a variety of sizes" src="http://media.smashingmagazine.com/wp-content/uploads/2013/10/sizes.jpg" width="640" height="424" style="max-width: 100%; height: auto;"></a><br>
    <em>The devices and screens we design for today are a variety of sizes. (Image: <a href="http://www.flickr.com/photos/flippoker/6679770607/sizes/z/in/photostream/" rel="nofollow external" class="bo">Edwin Torres</a>)</em></p>
    <p>In speaking with the client, I discovered that a complaint they often receive from customers is that the website appears “small.” The reason is that it had been designed to a fixed width many years ago — so long ago, in fact, that it was built for an 800 × 600-pixel resolution. When a user on what is now a typically large desktop screen visited the website, they saw a very narrow column, with a lot of unused space on either side. Yet, the company still had a number of other visitors on old desktops and laptops with low resolutions. So, merely making the website bigger wasn’t the right solution. The company needed a website that would work well both on large screens and on old small screens. This was a problem that could absolutely be solved by a responsive design.</p>
    <p>Instead of focusing on phones and small screens, I explained to the client that a responsive design would enable us to <strong>effectively present a layout for today’s large desktop screens</strong> and also reflow to accommodate laptops and old desktop monitors that don’t have a high resolution.</p>
    <p>As we demonstrated a responsive website for the client using a large desktop screen and a much smaller laptop, they got excited and told us that they had hated the “smallness” of the website for years, but their previous designer explained to them that, to support visitors with old computers, they had no choice but to design for this “lowest common denominator.”</p>
    <p>Responsive design would solve this problem, and by this point our client was pretty much on board because they saw that it solved a problem they had (the “smallness” of the website), without addressing a problem that they didn’t think needed to be solved (support for mobile devices).</p>
    <h3>Build For The Future, Not Only The Present</h3>
    <p>When I discuss responsive Web design with my clients, <strong>I rarely use the term “mobile support”</strong> because it makes those clients think only of phones or, perhaps, tablets. I instead prefer the phrase “multi-device support,” which better encompasses the wide range of devices and screen sizes we are really designing and developing for these days.</p>
    <p>One of the advantages of responsive design is that <strong>it doesn’t focus merely on the devices and screen sizes</strong> out there today. Because a responsive website reflows to fit a screen of any size, with an experience and a layout suited to each, the approach is very future-friendly. The prospect of having a website that continues to work well into the future, even as new devices and screen sizes come to market, appealed to our client. We further explained that, even if the website didn’t draw a lot of mobile visitors today, it might in the future. A responsive approach would ensure that those mobile visitors get an experience optimized for them.</p>
    <p>The client remained skeptical that they would ever attract mobile visitors, but they were sold on responsive design because of the other problems it would solve. Additionally, because we were rebuilding the website anyway, making it responsive at the same time made financial sense. Trying to strap responsiveness onto an existing non-responsive website can be daunting and expensive, whereas incorporating responsiveness early on in the design process is much easier, especially if it is a core part of your process and you’ve developed a workflow for it, which we have. That workflow helped us to make this approach both technically and financially viable for our client.</p>
    <p>Moving forward with the project, we knew that we would have to keep an eye on traffic once the website went live to prove our theory about the lack of mobile traffic.</p>
    <p><a href="http://www.flickr.com/photos/expressmonorail/3470644819/sizes/z/in/photostream/" rel="nofollow external" class="bo"><img alt="Future tunnel" src="http://media.smashingmagazine.com/wp-content/uploads/2013/10/future.jpg" width="640" height="458" style="max-width: 100%; height: auto;"></a><br>
    <em>Looking to the future will help us to build websites that work well even as new devices and screen sizes come to market. (Image: <a href="http://www.flickr.com/photos/expressmonorail/3470644819/sizes/z/in/photostream/" rel="nofollow external" class="bo">Joe Penniston</a>)</em></p>
    <h3>Break The Cycle</h3>
    <p>Two percent of traffic from mobile devices is so low a figure that, when I first saw it, I questioned its accuracy.</p>
    <p>This particular company does not market or sell to the general public. It is a B2B company that works with a relatively small group of distributors and contractors from a defined geographic area. The client attributed the low mobile traffic to this demographic, which would access the website from an office desk, not on the road with a phone.</p>
    <p>I agreed that mobile figures would likely be lower for this demographic than for a typical audience (for the websites we manage, 30% of traffic comes from mobile visitors, although some websites get over 50%) — but not this low. I felt that something else was happening here, and my gut told me that part of the reason was that the website <strong>worked so poorly on mobile</strong> devices. I suspected that the lack of a mobile experience kept mobile visitors away.</p>
    <p>I did not share this theory with the client at the time, but in the year since the new design went live, the <strong>mobile traffic figures have climbed, from 2 to 17%</strong>. Granted, that is still lower than what many other websites get these days, but it is a sizeable jump and cannot be ignored.</p>
    <p>The only reason we can point to for this jump is the website’s responsiveness. Neither the demographic nor the market has changed. The only difference is in how the website works on mobile devices. The improved experience has increased traffic. This was one of the reasons why I pushed for responsiveness, even when the traffic figures suggested otherwise.</p>
    <h3>Solving Problems</h3>
    <p>Part of our job as Web professionals is to solve problems for our clients. But we have to solve not only the problems that the client tells us about, but the ones that they do not even know they have.</p>
    <p><a href="http://www.flickr.com/photos/donnagrayson/195244498/sizes/z/in/photostream/" rel="nofollow external" class="bo"><img alt="All problems are opportunities in disguise" src="http://media.smashingmagazine.com/wp-content/uploads/2013/10/problems.jpg" width="640" height="480" style="max-width: 100%; height: auto;"></a><br>
    <em>Our clients’ problems are opportunities for us to provide high-quality solutions based on our experience and expertise. (Image: <a href="http://www.flickr.com/photos/donnagrayson/195244498/sizes/z/in/photostream/" rel="nofollow external" class="bo">Donna Grayson</a>)</em></p>
    <p>With the redesign of the website, our team was able to solve a number of problems that the client brought to our attention, including the outdated design and the absence of a CMS. And our solution to the problem that they weren’t aware of — a lack of mobile visitors due to a lack of support — validated our responsive approach, even when the traffic figures did not show the need for it. We knew that a responsive design would fix the layout on large desktop screens as well as on small old monitors, but would also help turn around the website’s unusually low traffic from mobile visitors, and we were proven correct.</p>
    <p>We knew that part of the rise from 2 to 17% could be attributed to existing customers who had been sticking to a desktop computer out of obligation but were now switching to a mobile device. Those users are now able to access the website’s content on their preferred device, confident that they will get an experience suited to the device.</p>
    <p>Another reason for the increased mobile traffic is undoubtedly <strong>new business</strong>. The movie Field of Dreams is instructive here: “If you build it, they will come.” If a website does not support mobile devices, then a mobile visitor will likely leave immediately upon noticing it, never to return. This was part of the reason for the low numbers. But the website no longer turns mobile users away, and the users in turn will not leave as soon as they arrive. Rather, they will find the information they are looking for and might visit again or point other people in their organization to the content. Mobile support encourages mobile use.</p>
    <p>By addressing the customers’ problems, including ones that the client was not aware of, we were able to sell a responsive approach. The improved experience has boosted the mobile audience, as well as boosted the leads that the company is getting from the website.</p>
    <h3>In Summary</h3>
    <p>Selling a responsive design is no different than selling anything else. <strong>It all starts with solving problems</strong>.</p>
    <p>For this project, we highlighted the benefits of a responsive approach beyond the familiar benefit of support for mobile devices that we normally mention to prospective clients. Here are some of the key points we made in discussing the value of a responsive approach for a website without an obvious need for mobile support:</p>
    <ul>
    <li>We would be supporting a variety of screen sizes that aren’t typically considered when discussing responsive design, including large new desktop monitors with very high resolutions and old small screens with correspondingly low resolutions.</li>
    <li>The website would scale into the future as new devices and screen sizes come to market and as mobile users begin to visit.</li>
    <li>We would save time, money and technical complexity by doing this work now, as part of the redesign process, rather than trying to cram it in later when the website is set.</li>
    </ul>
    <p><em>(al, il)</em></p>
    <hr>
    <p><small>© Jeremy Girard for <a href="http://www.smashingmagazine.com" rel="nofollow external" class="bo">Smashing Magazine</a>, 2013.</small></p>
    </div>
]]>
</Body>
<Summary>        Designing and developing websites that work well on mobile devices is an important aspect of the work we do on today’s Web. This importance is reflected in the conversations I have with...</Summary>
<Website>http://www.smashingmagazine.com/2013/10/30/selling-responsive-website-design/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37729/guest@my.umbc.edu/3471be15d30e6c4b32d0488a7a871ba1/api/pixel</TrackingUrl>
<Tag>business</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>web</Tag>
<Tag>workflow</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, 30 Oct 2013 12:26:05 -0400</PostedAt>
<EditAt>Wed, 30 Oct 2013 12:26:05 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="37728" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37728">
<Title>App Smart: Singing With Monsters and Playing Some Tunes</Title>
<Body>
<![CDATA[
    <div class="html-content">Games with a music element have been tailored for smartphones.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F10%2F31%2Ftechnology%2Fpersonaltech%2Fon-your-mobile-device-singing-with-monsters.html%3Fpartner%3Drss%26emc%3Drss&amp;t=App+Smart%3A+Singing+With+Monsters+and+Playing+Some+Tunes" 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%2F10%2F31%2Ftechnology%2Fpersonaltech%2Fon-your-mobile-device-singing-with-monsters.html%3Fpartner%3Drss%26emc%3Drss&amp;t=App+Smart%3A+Singing+With+Monsters+and+Playing+Some+Tunes" 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%2F10%2F31%2Ftechnology%2Fpersonaltech%2Fon-your-mobile-device-singing-with-monsters.html%3Fpartner%3Drss%26emc%3Drss&amp;t=App+Smart%3A+Singing+With+Monsters+and+Playing+Some+Tunes" 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%2F10%2F31%2Ftechnology%2Fpersonaltech%2Fon-your-mobile-device-singing-with-monsters.html%3Fpartner%3Drss%26emc%3Drss&amp;t=App+Smart%3A+Singing+With+Monsters+and+Playing+Some+Tunes" 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%2F10%2F31%2Ftechnology%2Fpersonaltech%2Fon-your-mobile-device-singing-with-monsters.html%3Fpartner%3Drss%26emc%3Drss&amp;t=App+Smart%3A+Singing+With+Monsters+and+Playing+Some+Tunes" 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/180263214151/u/0/f/640387/c/34625/s/331b1743/sc/5/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/180263214151/u/0/f/640387/c/34625/s/331b1743/sc/5/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/180263214151/u/0/f/640387/c/34625/s/331b1743/sc/5/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/180263214151/u/0/f/640387/c/34625/s/331b1743/sc/5/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/180263214151/u/0/f/640387/c/34625/s/331b1743/sc/5/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/180263214151/u/0/f/640387/c/34625/s/331b1743/sc/5/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/180263214151/u/0/f/640387/c/34625/s/331b1743/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/180263214151/u/0/f/640387/c/34625/s/331b1743/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Games with a music element have been tailored for smartphones.      </Summary>
<Website>http://www.nytimes.com/2013/10/31/technology/personaltech/on-your-mobile-device-singing-with-monsters.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37728/guest@my.umbc.edu/758f029780c634892ca6c41fe2fb606d/api/pixel</TrackingUrl>
<Tag>games</Tag>
<Tag>mobile-applications</Tag>
<Tag>music</Tag>
<Tag>new</Tag>
<Tag>smartphones</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, 30 Oct 2013 12:12:11 -0400</PostedAt>
<EditAt>Wed, 30 Oct 2013 12:12:11 -0400</EditAt>
</NewsItem>

</News>
