<?xml version="1.0"?>
<News hasArchived="true" page="8890" pageCount="10712" pageSize="10" timestamp="Wed, 01 Jul 2026 21:14:40 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8890">
<NewsItem contentIssues="true" id="27157" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27157">
<Title>Join us for ECOFEST: UMBC's Weeklong Earth Day Celebrations!</Title>
<Tagline>From April 22nd: series of ecofriendly events &amp; activities!</Tagline>
<Body>
<![CDATA[
    <div class="html-content">
    <p><span><u>Mon 4/22 10am-2pm</u>: </span></p>
    <p><strong><span>Ecofest
    Kickoff Fair</span></strong><span> <br>
    on the Quad (rain location: lower Flat Tuesday)<br>
    Hosted by Students for Environmental Awareness<br>
    <br>
    <span><u>Mon 4/22, 4pm-5pm</u>: </span></span></p>
    <p><strong><span>Silent
    Spring in the Age of Environmental Crisis</span></strong><span><br>
    <span>at the Proscenium Theater, Performing Arts and
    Humanities Building</span><br>
    <span>Hosted by Gender &amp; Women's Studies</span><br>
    <br>
    <span><u>Tues 4/23, 4pm</u>: </span></span></p>
    <p><strong><span>Global
    Solar Technology Lecture</span></strong><span><br>
    <em>Clean Energy</em><span> Technology Incubator @bwtech
    (CETI)</span><br>
    <br>
    <span><u>Wed 4/24, 3pm</u>: </span></span></p>
    <p><strong><span>On Campus</span></strong><span></span><strong><span>Tree Planting</span></strong><span><br>
    <span>hosted by Parks &amp; People, AKA Sorority &amp;
    the Arbor Day Foundation </span><br>
    <br>
    <span><u>Thurs 4/25, 12-1pm</u>: </span></span></p>
    <p><strong><span>Sustainable
    foods brown bag lunch discussion</span></strong><br>
    <span>at Fine Arts Room 529, INDS conference room</span><br>
    <br></p>
    <p><u>Thurs 4/25, 2pm-3pm:</u></p>
    <p><strong>Herbert</strong></p>
    <p><strong>Run Greenway Tour</strong></p>
    <p>Joseph Beuys Sculpture Garden Rock Garden</p>
    <p>Hosted by Patricia La Noue</p>
    <p><u><br></u></p>
    <p><u>Fri 4/26, 12-1pm:</u></p>
    <p><strong>Bike pro tips clinic &amp;</strong></p>
    <p><strong>group ride</strong></p>
    <p>Commons Terrace, adjacent to the Quad</p>
    <p>hosted by the Cycling Club</p>
    <p><span>
    <br>
    <span><u>Fri 4/26, 12-1pm</u>: </span></span></p>
    <p><strong><span>Make Your
    Own Tree</span></strong><span></span><span><br>
    <span>Commons Mainstreet</span><br>
    <span>Hosted by Student Events Board </span></span></p>
    </div>
]]>
</Body>
<Summary>Mon 4/22 10am-2pm:   Ecofest Kickoff Fair   on the Quad (rain location: lower Flat Tuesday)  Hosted by Students for Environmental Awareness    Mon 4/22, 4pm-5pm:   Silent Spring in the Age of...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27157/guest@my.umbc.edu/90d7a58d1c4960e91b0da209f543a469/api/pixel</TrackingUrl>
<Group token="sustainability">Sustainability Matters at UMBC</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/sustainability</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/xsmall.png?1586269437</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/original.png?1586269437</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/xxlarge.png?1586269437</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/xlarge.png?1586269437</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/large.png?1586269437</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/medium.png?1586269437</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/small.png?1586269437</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/xsmall.png?1586269437</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/xxsmall.png?1586269437</AvatarUrl>
<Sponsor>UMBC SUSTAINABILITY</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/027/157/039b28c0e2a52524890797e9e0f29899/xxlarge.jpg?1365003825</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/027/157/039b28c0e2a52524890797e9e0f29899/xlarge.jpg?1365003825</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/027/157/039b28c0e2a52524890797e9e0f29899/large.jpg?1365003825</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/027/157/039b28c0e2a52524890797e9e0f29899/medium.jpg?1365003825</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/027/157/039b28c0e2a52524890797e9e0f29899/small.jpg?1365003825</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/027/157/039b28c0e2a52524890797e9e0f29899/xsmall.jpg?1365003825</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/027/157/039b28c0e2a52524890797e9e0f29899/xxsmall.jpg?1365003825</ThumbnailUrl>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 03 Apr 2013 11:44:02 -0400</PostedAt>
<EditAt>Wed, 10 Apr 2013 19:22:30 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="27168" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27168">
<Title>HTML5 outpaces Flash in website vote</Title>
<Body>
<![CDATA[
    <div class="html-content">But the site's creators say they love everything equally<div><table border="0"><tbody><tr>
    <td><a href="http://share.feedsportal.com/viral/sendEmail.cfm?lang=en&amp;title=HTML5+outpaces+Flash+in+website+vote&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Fnews%2Fhtml5-outpaces-flash-website-vote-132662" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/images/emailthis2.gif" style="max-width: 100%; height: auto;"></a></td>
    <td><a href="http://res.feedsportal.com/viral/bookmark.cfm?title=HTML5+outpaces+Flash+in+website+vote&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Fnews%2Fhtml5-outpaces-flash-website-vote-132662" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/images/bookmark.gif" style="max-width: 100%; height: auto;"></a></td>
    </tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/161990931348/u/49/f/502346/c/32632/s/2a4d0a01/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/161990931348/u/49/f/502346/c/32632/s/2a4d0a01/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>But the site's creators say they love everything equally</Summary>
<Website>http://feedproxy.google.com/~r/net/topstories/~3/O5YZM24oLo0/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27168/guest@my.umbc.edu/0782f88f75f7562da4498b5547135887/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>net</Tag>
<Tag>php</Tag>
<Tag>sql</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, 03 Apr 2013 11:10:03 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="27155" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27155">
<Title>Building Large, Maintainable, and Testable Knockout.js Applications</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=30996&amp;c=81680316" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=30996&amp;c=81680316" alt="" style="max-width: 100%; height: auto;"></a><p><a rel="nofollow external" class="bo">Knockout.js</a> is a popular open source (MIT) <a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx" rel="nofollow external" class="bo">MVVM</a> JavaScript framework, created by <a href="http://blog.stevensanderson.com/" rel="nofollow external" class="bo">Steve Sandersen</a>. Its website provides great information and demos on how to build simple applications, but it unfortunately doesn’t do so for larger applications. Let’s fill in some of those gaps!</p>
    <p></p>
    <hr>
    <h2>AMD and Require.js</h2>
    <p>AMD is a JavaScript module format, and one of the most popular (if not the most) frameworks is <a href="Require.js" rel="nofollow external" class="bo">http://requirejs.org</a> by <a href="James%20Burke" rel="nofollow external" class="bo">https://twitter.com/jrburke</a>. It consists of two global functions called <code>require()</code> and <code>define()</code>, although require.js also incorporates a starting JavaScript file, such as <code>main.js</code>.</p>
    <pre>&lt;script src="js/require-jquery.min.js" data-main="js/main"&gt;&lt;/script&gt;</pre>
    <p>There are primarily two flavors of require.js: a vanilla <code>require.js</code> file and one that includes jQuery (<code>require-jquery</code>). Naturally, the latter is used predominately in jQuery-enabled websites. After adding one of these files to your page, you can then add the following code to your <code>main.js</code> file:</p>
    <pre>require( [ "<a href="https://twitter.com/jrburkeapp">https://twitter.com/jrburkeapp</a>" ], function( App ) {&#x000A;        App.init();&#x000A;    })</pre>
    <p>The <code>require()</code> function is typically used in the <code>main.js</code> file, but you can use it to directly include a module anywhere. It accepts two arguments: a list of dependencies and a callback function.</p>
    <blockquote><p>The callback function executes when all dependencies finish loading, and the arguments passed to the callback function are the objects <strong>required</strong> in the aforementioned array.</p></blockquote>
    <p>It’s important to note that the dependencies load asynchronously. Not all libraries are AMD compliant, but require.js provides a mechanism to shim those types of libraries so that they can be loaded.</p>
    <p>This code requires a module called <code>app</code>, which could look like the following:</p>
    <pre>define( [ "jquery", "ko" ], function( $, ko ) {&#x000A;        var App = function(){};&#x000A;    &#x000A;        App.prototype.init = function() {&#x000A;            // INIT ALL TEH THINGS&#x000A;        };&#x000A;    &#x000A;        return new App();&#x000A;    });</pre>
    <p>The <code>define()</code> function’s purpose is to define a <strong>module</strong>. It accepts three arguments: the name of the module (which is <strong>typically</strong> not included), a list of dependencies and a callback function. The <code>define()</code> function allows you to separate an application into many modules, each having a specific function. This promotes decoupling and separation of concerns because each module has its own set of specific responsibilities.</p>
    <h3>Using Knockout.js and Require.js Together</h3>
    <p>Knockout is AMD ready, and it defines itself as an anonymous module. You don’t need to shim it; just include it in your paths. Most AMD-ready Knockout plugins list it as “knockout” rather than “ko”, but you can use either value:</p>
    <pre>require.config({&#x000A;        paths: {&#x000A;            ko: "vendor/knockout-min",&#x000A;            postal: "vendor/postal",&#x000A;            underscore: "vendor/underscore-min",&#x000A;            amplify: "vendor/amplify"&#x000A;        },&#x000A;        shim: {&#x000A;            underscore: {&#x000A;                exports: "_"&#x000A;            },&#x000A;            amplify: {&#x000A;                exports: "amplify"&#x000A;            }&#x000A;        },&#x000A;        baseUrl: "/js"&#x000A;    });</pre>
    <p>This code goes at the top of <code>main.js</code>. The <code>paths</code> option defines a map of common modules that load with a key name as opposed to using the entire file name.</p>
    <p>The <code>shim</code> option uses a key defined in <code>paths</code> and can have two special keys called <code>exports</code> and <code>deps</code>. The <code>exports</code> key defines what the shimmed module returns, and <code>deps</code> defines other modules that the shimmed module might depend on. For example, <a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/" rel="nofollow external" class="bo">jQuery Validate</a>‘s shim might look like the following:</p>
    <pre>shim: {&#x000A;        // ...&#x000A;        "jquery-validate": {&#x000A;            deps: [ "jquery" ]&#x000A;        }&#x000A;    }</pre>
    <h3>Single- vs Multi-Page Apps</h3>
    <p>It’s common to include all the necessary JavaScript in a single page application. So, you may define the configuration and the initial require of a single-page application in <code>main.js</code> like so:</p>
    <pre>require.config({&#x000A;        paths: {&#x000A;            ko: "vendor/knockout-min",&#x000A;            postal: "vendor/postal",&#x000A;            underscore: "vendor/underscore-min",&#x000A;            amplify: "vendor/amplify"&#x000A;        },&#x000A;        shim: {&#x000A;            ko: {&#x000A;                exports: "ko"&#x000A;            },&#x000A;            underscore: {&#x000A;                exports: "_"&#x000A;            },&#x000A;            amplify: {&#x000A;                exports: "amplify"&#x000A;            }&#x000A;        },&#x000A;        baseUrl: "/js"&#x000A;    });&#x000A;    &#x000A;    require( [ "<a href="https://twitter.com/jrburkeapp">https://twitter.com/jrburkeapp</a>" ], function( App ) {&#x000A;        App.init();&#x000A;    })</pre>
    <p>You might also need separate pages that not only have page-specific modules, but share a common set of modules. James Burke has <a href="https://github.com/requirejs/example-multipage-shim" rel="nofollow external" class="bo">two</a> <a href="https://github.com/requirejs/example-multipage" rel="nofollow external" class="bo">repositories</a> that implement this type of behavior.</p>
    <p>The rest of this article assumes you’re building a multi-page application. I’ll rename <code>main.js</code> to <code>common.js</code> and include the necessary <code>require.config</code> in the above example in the file. This is purely for semantics.</p>
    <p>Now I’ll require <code>common.js</code> in my files, like this:</p>
    <pre>&lt;script src="js/require-jquery.js"&gt;&lt;/script&gt;&#x000A;        &lt;script&gt;&#x000A;            require( [ "./js/common" ], function () {&#x000A;                //js/common sets the baseUrl to be js/ so&#x000A;                //can just ask for 'app/main1' here instead&#x000A;                //of 'js/app/main1'&#x000A;                require( [ "pages/index" ] );&#x000A;            });&#x000A;        &lt;/script&gt;&#x000A;    &lt;/body&gt;&#x000A;    &lt;/html&gt;</pre>
    <p>The <code>require.config</code> function will execute, requiring the main file for the specific page. The <code>pages/index</code> main file might look like the following:</p>
    <pre>require( [ "app", "postal", "ko", "viewModels/indexViewModel" ], function( app, postal, ko, IndexViewModel ) {&#x000A;        window.app = app;&#x000A;        window.postal = postal;&#x000A;    &#x000A;        ko.applyBindings( new IndexViewModel() );&#x000A;    });</pre>
    <p>This <code>page/index</code> module is now responsible for loading all the neccessary code for the <code>index.html</code> page. You can add other main files to the pages directory that are also responsible for loading their dependent modules. This allows you to break multi-page apps into smaller pieces, while avoiding unnecessary script inclusions (e.g. including the JavaScript for <code>index.html</code> in the <code>about.html</code> page).</p>
    <hr>
    <h2>Sample Application</h2>
    <p>Let’s write a sample application using this approach. It’ll display a searchable list of beer brands and let us choose your favorites by clicking on their names. Here is the app’s folder structure:</p>
    <div><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeremymcpeak/ko-app-folders.png" alt='"Folder structure"' style="max-width: 100%; height: auto;"></div>
    <p>Let’s first look at <code>index.html</code>‘s HTML markup:</p>
    <pre>&lt;section id="main"&gt;&#x000A;        &lt;section id="container"&gt;&#x000A;            &lt;form class="search" data-bind="submit: doSearch"&gt;&#x000A;                &lt;input type="text" name="search" placeholder="Search" data-bind="value: search, valueUpdate: 'afterkeydown'" /&gt;&#x000A;                &lt;ul data-bind="foreach: beerListFiltered"&gt;&#x000A;                    &lt;li data-bind="text: name, click: $parent.addToFavorites"&gt;&lt;/li&gt;&#x000A;                &lt;/ul&gt;&#x000A;            &lt;/form&gt;&#x000A;    &#x000A;            &lt;aside id="favorites"&gt;&#x000A;                &lt;h3&gt;Favorites&lt;/h3&gt;&#x000A;                &lt;ul data-bind="foreach: favorites"&gt;&#x000A;                    &lt;li data-bind="text: name, click: $parent.removeFromFavorites"&gt;&lt;/li&gt;&#x000A;                &lt;/ul&gt;&#x000A;            &lt;/aside&gt;&#x000A;        &lt;/section&gt;&#x000A;    &lt;/section&gt;&#x000A;    &#x000A;    &lt;!-- import("templates/list.html") --&gt;&#x000A;    &#x000A;    &lt;script src="js/require-jquery.js"&gt;&lt;/script&gt;&#x000A;    &lt;script&gt;&#x000A;        require( [ "./js/common" ], function (common) {&#x000A;            //js/common sets the baseUrl to be js/ so&#x000A;            //can just ask for 'app/main1' here instead&#x000A;            //of 'js/app/main1'&#x000A;            require( [ "pages/index" ] );&#x000A;        });&#x000A;    &lt;/script&gt;</pre>
    <h3>Pages</h3>
    <p>The structure of our application uses multiple “pages” or “mains” in a <code>pages</code> directory. These separate pages are responsible for initializing each page in the application.</p>
    <p>The <strong>ViewModels</strong> are responsible for setting up the Knockout bindings.</p>
    <h3>ViewModels</h3>
    <p>The <code>ViewModels</code> folder is where the main Knockout.js application logic lives. For example, the <code>IndexViewModel</code> looks like the following:</p>
    <pre>// <a href="https://github.com/jcreamer898/NetTutsKnockout/blob/master/lib/js/viewModels/indexViewModel.js">https://github.com/jcreamer898/NetTutsKnockout/blob/master/lib/js/viewModels/indexViewModel.js</a>&#x000A;    define( [&#x000A;        "ko",&#x000A;        "underscore",&#x000A;        "postal",&#x000A;        "models/beer",&#x000A;        "models/baseViewModel",&#x000A;        "shared/bus" ], function ( ko, _, postal, Beer, BaseViewModel, bus ) {&#x000A;    &#x000A;        var IndexViewModel = function() {&#x000A;            this.beers = [];&#x000A;            this.search = "";&#x000A;    &#x000A;            BaseViewModel.apply( this, arguments );&#x000A;        };&#x000A;    &#x000A;        _.extend(IndexViewModel.prototype, BaseViewModel.prototype, {&#x000A;            initialize: function() { // ... },&#x000A;    &#x000A;            filterBeers: function() { /* ... */ },&#x000A;    &#x000A;            parse: function( beers ) { /* ... */ },&#x000A;    &#x000A;            setupSubscriptions: function() { /* ... */ },&#x000A;    &#x000A;            addToFavorites: function() { /* ... */ },&#x000A;    &#x000A;            removeFromFavorites: function() { /* ... */ }&#x000A;        });&#x000A;    &#x000A;        return IndexViewModel;&#x000A;    });</pre>
    <p>The <code>IndexViewModel</code> defines a few basic dependencies at the top of the file, and it inherits <code>BaseViewModel</code> to initialize its members as knockout.js observable objects (we’ll discuss that shortly).</p>
    <p>Next, rather than defining all of the various ViewModel functions as instance members, underscore.js’s <code>extend()</code> function extends the <code>prototype</code> of the <code>IndexViewModel</code> data type.</p>
    <h3>Inheritance and a BaseModel</h3>
    <p>Inheritance is a form of code reuse, allowing you to reuse functionality between similar types of objects instead of rewriting that functionality. So, it’s useful to define a base model that other models or can inherit from. In our case, our base model is <code>BaseViewModel</code>:</p>
    <pre>var BaseViewModel = function( options ) {&#x000A;        this._setup( options );&#x000A;    &#x000A;        this.initialize.call( this, options );&#x000A;    };&#x000A;    &#x000A;    _.extend( BaseViewModel.prototype, {&#x000A;        initialize: function() {},&#x000A;    &#x000A;        _setup: function( options ) {&#x000A;            var prop;&#x000A;    &#x000A;            options = options || {};&#x000A;    &#x000A;            for( prop in this ) {&#x000A;                if ( this.hasOwnProperty( prop ) ) {&#x000A;                    if ( options[ prop ] ) {&#x000A;                        this[ prop ] = _.isArray( options[ prop ] ) ?&#x000A;                            ko.observableArray( options[ prop ] ) :&#x000A;                            ko.observable( options[ prop ] );&#x000A;                    }&#x000A;                    else {&#x000A;                        this[ prop ] = _.isArray( this[ prop ] ) ?&#x000A;                            ko.observableArray( this[ prop ] ) :&#x000A;                            ko.observable( this[ prop ] );&#x000A;                    }&#x000A;                }&#x000A;            }&#x000A;        }&#x000A;    });&#x000A;    &#x000A;    return BaseViewModel;</pre>
    <p>The <code>BaseViewModel</code> type defines two methods on its <code>prototype</code>. The first is <code>initialize()</code>, which should be overridden in the subtypes. The second is <code>_setup()</code>, which sets up the object for data binding.</p>
    <p>The <code>_setup</code> method loops over the properties of the object. If the property is an array, it sets the property as an <code>observableArray</code>. Anything other than an array is made <code>observable</code>. It also checks for any of the properties’ initial values, using them as default values if necessary. This is one small abstraction that eliminates having to constantly repeat the <code>observable</code> and <code>observableArray</code> functions.</p>
    <h3>The “<code>this</code>” Problem</h3>
    <p>People who use Knockout tend to prefer instance members over prototype members because of the issues with maintaining the proper value of <code>this</code>. The <code>this</code> keyword is a complicated feature of JavaScript, but it’s not so bad once fully grokked.</p>
    <p><a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/this" rel="nofollow external" class="bo">From the MDN</a>:</p>
    <blockquote><p>“In general, the object bound to <code>this</code> in the current scope is determined by how the current function was called, it can’t be set by assignment during execution, and it can be different each time the function is called.”</p></blockquote>
    <p>So, the scope changes depending on HOW a function is called. This is clearly evidenced in jQuery:</p>
    <pre>var $el = $( "#mySuperButton" );&#x000A;    $el.on( "click", function() {&#x000A;        // in here, this refers to the button&#x000A;    });</pre>
    <p>This code sets up a simple <code>click</code> event handler on an element. The callback is an anonymous function, and it doesn’t do anything until someone clicks on the element. When that happens, the scope of <code>this</code> inside of the function refers to the actual DOM element. Keeping that in mind, consider the following example:</p>
    <pre>var someCallbacks = {&#x000A;        someVariable: "yay I was clicked",&#x000A;        mySuperButtonClicked: function() {&#x000A;            console.log( this.someVariable );&#x000A;        }&#x000A;    };&#x000A;    &#x000A;    var $el = $( "#mySuperButton" );&#x000A;    $el.on( "click", someCallbacks.mySuperButtonClicked );</pre>
    <p>There’s an issue here. The <code>this.someVariable</code> used inside <code>mySuperButtonClicked()</code> returns <code>undefined</code> because <code>this</code> in the callback refers to the DOM element rather than the <code>someCallbacks</code> object.</p>
    <p>There are two ways to avoid this problem. The first uses an anonymous function as the event handler, which in turn calls <code>someCallbacks.mySuperButtonClicked()</code>:</p>
    <pre>$el.on( "click", function() {&#x000A;        someCallbacks.mySuperButtonClicked.apply();&#x000A;    });&#x000A;    </pre>
    <p>The second solution uses either the <code>Function.bind()</code> or <code>_.bind()</code> methods (<code>Function.bind()</code> is not available in older browsers). For example:</p>
    <pre>$el.on( "click", _.bind( someCallbacks.mySuperButtonClicked, someCallbacks ) );</pre>
    <p>Either solution you choose will achieve the same end-result: <code>mySuperButtonClicked()</code> executes within the context of <code>someCallbacks</code>.</p>
    <h3>“<code>this</code>” in Bindings and Unit Tests</h3>
    <p>In terms of Knockout, the <code>this</code> problem can show itself when working with bindings–particularly when dealing with <code>$root</code> and <code>$parent</code>. Ryan Niemeyer wrote a <a href="https://github.com/rniemeyer/knockout-delegatedEvents" rel="nofollow external" class="bo">delegated events plugin</a> that mostly eliminates this issue. It gives you several options for specifying functions, but you can use the <code>data-click</code> attribute, and the plugin walks up your scope chain and calls the function with the correct <code>this</code>.</p>
    <pre>&lt;form class="search"&gt;&#x000A;        &lt;input type="text" name="search" placeholder="Search" data-bind="value: search" /&gt;&#x000A;        &lt;ul data-bind="foreach: beerListFiltered"&gt;&#x000A;            &lt;li data-bind="text: name, click: $parent.addToFavorites"&gt;&lt;/li&gt;&#x000A;        &lt;/ul&gt;&#x000A;    &lt;/form&gt;</pre>
    <p>In this example, <code>$parent.addToFavorites</code> binds to the view model via a <code>click</code> binding. Since the <code>&lt;li /&gt;</code> element resides inside a <code>foreach</code> binding, the <code>this</code> inside <code>$parent.addToFavorites</code> refers to an instance of a the beer that was clicked on.</p>
    <p>To get around this, the <code>_.bindAll</code> method ensures that <code>this</code> maintains its value. Therefore, adding the following to the <code>initialize()</code> method fixes the problem:</p>
    <pre>_.extend(IndexViewModel.prototype, BaseViewModel.prototype, {&#x000A;        initialize: function() { &#x000A;            this.setupSubscriptions();&#x000A;    &#x000A;            this.beerListFiltered = ko.computed( this.filterBeers, this );&#x000A;    &#x000A;            _.bindAll( this, "addToFavorites" );&#x000A;        },&#x000A;    });</pre>
    <p>The <code>_.bindAll()</code> method essentially creates an instance member called <code>addToFavorites()</code> on the <code>IndexViewModel</code> object. This new member contains the prototype version of <code>addToFavorites()</code> that is bound to the <code>IndexViewModel</code> object.</p>
    <p>The <code>this</code> problem is why some functions, such as <code>ko.computed()</code>, accepts an optional second argument. See line five for an example. The <code>this</code> passed as the second argument ensures that <code>this</code> correctly refers to the current <code>IndexViewModel</code> object inside of <code>filterBeers</code>.</p>
    <p>How would we test this code? Let’s first look at the <code>addToFavorites()</code> function:</p>
    <pre>addToFavorites: function( beer ) {&#x000A;        if( !_.any( this.favorites(), function( b ) { return b.id() === beer.id(); } ) ) {&#x000A;            this.favorites.push( beer );&#x000A;        }&#x000A;    }&#x000A;    </pre>
    <p>If we use the <a href="http://visionmedia.github.com/mocha/" rel="nofollow external" class="bo">mocha</a> testing framework and <a href="https://github.com/LearnBoost/expect.js/" rel="nofollow external" class="bo">expect.js</a> for assertions, our unit test would look like the following:</p>
    <pre>it( "should add new beers to favorites", function() {&#x000A;        expect( this.viewModel.favorites().length ).to.be( 0 );&#x000A;    &#x000A;        this.viewModel.addToFavorites( new Beer({&#x000A;            name: "abita amber",&#x000A;            id: 3&#x000A;        }));&#x000A;    &#x000A;        // can't add beer with a duplicate id&#x000A;        this.viewModel.addToFavorites( new Beer({&#x000A;            name: "abita amber",&#x000A;            id: 3&#x000A;        }));&#x000A;    &#x000A;        expect( this.viewModel.favorites().length ).to.be( 1 );&#x000A;    });</pre>
    <p>To see the full unit testing setup, <a href="https://github.com/jcreamer898/NetTutsKnockout" rel="nofollow external" class="bo">check out the repository</a>.</p>
    <p>Let’s now test <code>filterBeers()</code>. First, let’s look at its code:</p>
    <pre>filterBeers: function() {&#x000A;        var filter = this.search().toLowerCase();&#x000A;    &#x000A;        if ( !filter ) {&#x000A;            return this.beers();&#x000A;        }&#x000A;        else {&#x000A;            return ko.utils.arrayFilter( this.beers(), function( item ) {&#x000A;                return ~item.name().toLowerCase().indexOf( filter );&#x000A;            });&#x000A;        }&#x000A;    },&#x000A;    </pre>
    <p>This function uses the <code>search()</code> method, which is databound to the <code>value</code> of a text <code>&lt;input /&gt;</code> element in the DOM. Then it uses the <code>ko.utils.arrayFilter</code> utility to search through and find matches from the list of beers. The <code>beerListFiltered</code> is bound to the <code>&lt;ul /&gt;</code> element in the markup, so the list of beers can be filtered by simply typing in the text box.</p>
    <p>The <code>filterBeers</code> function, being such a small unit of code, can be properly unit tested:</p>
    <pre> beforeEach(function() {&#x000A;        this.viewModel = new IndexViewModel();&#x000A;    &#x000A;        this.viewModel.beers.push(new Beer({&#x000A;            name: "budweiser",&#x000A;            id: 1&#x000A;        }));&#x000A;        this.viewModel.beers.push(new Beer({&#x000A;            name: "amberbock",&#x000A;            id: 2&#x000A;        }));&#x000A;    });&#x000A;    &#x000A;    it( "should filter a list of beers", function() {&#x000A;        expect( _.isFunction( this.viewModel.beerListFiltered ) ).to.be.ok();&#x000A;    &#x000A;        this.viewModel.search( "bud" );&#x000A;    &#x000A;        expect( this.viewModel.filterBeers().length ).to.be( 1 );&#x000A;    &#x000A;        this.viewModel.search( "" );&#x000A;    &#x000A;        expect( this.viewModel.filterBeers().length ).to.be( 2 );&#x000A;    });&#x000A;    </pre>
    <p>First, this test makes sure that the <code>beerListFiltered</code> is in fact a function. Then a query is made by passing the value of “bud” to <code>this.viewModel.search()</code>. This should cause the list of beers to change, filtering out every beer that does not match “bud”. Then, <code>search</code> is set to an empty string to ensure that <code>beerListFiltered</code> returns the full list.</p>
    <hr>
    <h2>Conclusion</h2>
    <p>Knockout.js offers many great features. When building large applications, it helps to adopt many of the principles discussed in this article to help your app’s code remain manageable, testable, and maintainable. Check out the <a href="https://github.com/jcreamer898/NetTutsKnockout" rel="nofollow external" class="bo">full sample application</a>, which includes a few extra topics such as <code>messaging</code>. It uses <a href="http://github.com/postaljs/postal.js" rel="nofollow external" class="bo">postal.js</a> as a message bus to carry messages throughout the application. Using messaging in a JavaScript application can help decouple parts of the application by removing hard references to each other. Be sure and take a look!</p>
    </div>
]]>
</Body>
<Summary>Knockout.js is a popular open source (MIT) MVVM JavaScript framework, created by Steve Sandersen. Its website provides great information and demos on how to build simple applications, but it...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/IfYJEM4gW1U/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27155/guest@my.umbc.edu/9ffa5a86dbb4d9208250a75d7824af02/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>databinding</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>javascript-and-ajax</Tag>
<Tag>knockout</Tag>
<Tag>mysql</Tag>
<Tag>php</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, 03 Apr 2013 11:06:11 -0400</PostedAt>
<EditAt>Wed, 03 Apr 2013 11:06:11 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="27153" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27153">
<Title>Pop Hovers</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><a href="http://www.popagency.com/" rel="nofollow external" class="bo">POP</a> has these cool hovers in the boxes that make up their homepage. The boxes have a white background by default, and as you hover over them a dark background slides up behind, the text colors change, and the text "pops" up a little. When you hover off, the dark background slides away, the text colors change back, and the text pops <em>down</em> a little. I thought I'd try and replicate it because, you know, eff yeah <a href="http://fuckyeahhovers.tumblr.com/" rel="nofollow external" class="bo">hovers</a>.</p>
    <h3>Demo</h3>
    <pre><a href="http://codepen.io/chriscoyier/pen/ijaeh" rel="nofollow external" class="bo">Check out this Pen!</a></pre>
    <h3>HTML</h3>
    <p>Each area is a "box":</p>
    <pre><code>&lt;a href="#" class="box"&gt;&#x000A;      &lt;h2&gt;&lt;span&gt;Breaking news -&lt;/span&gt; hippos are sorta dangerous&lt;/h2&gt;&#x000A;      &lt;h3&gt;Tonight at nine&lt;/h3&gt;&#x000A;    &lt;/a&gt;</code></pre>
    <h3>CSS (backgrounds)</h3>
    <p>The styling of the default box is trivial. The hovers are the interesting part. POP does the background slide by using an actual element they animate the position of. If we're OK with this feature only working on browser that support gradients, we can ditch that element and just animate the background-position.</p>
    <p>A top-half-white and bottom-half-black background is easy:</p>
    <pre><code>background: linear-gradient(&#x000A;       white, white 50%, black 50%, black&#x000A;    );</code></pre>
    <p>Then we make it twice as tall as the element itself:</p>
    <pre><code>background-size: 100% 200%;</code></pre>
    <p>Like this:</p>
    <img src="http://cdn.css-tricks.com/wp-content/uploads/2013/04/bg-pos.png" alt="" style="max-width: 100%; height: auto;">
    <p>In reality, we'll make the background a little bit taller than 200%, because right at 200% it was exposing a little bit of background into the element still (in Chrome).</p>
    <pre><code>.box {&#x000A;      background: linear-gradient(&#x000A;         white, white 50%, #333 50%, #333&#x000A;      );&#x000A;      transition: all 0.2s ease;&#x000A;    }&#x000A;    .box:hover {&#x000A;      background-position: 100% 100%;&#x000A;    }</code></pre>
    <h3>CSS (colors)</h3>
    <p>The default text color is black, so no CSS needed at all there. On hover, we adjust the colors. The span changing is just a fun surprise and brings more pop to the party.</p>
    <pre><code>.box:hover h2 {&#x000A;      color: #48ad26;&#x000A;    }&#x000A;    .box:hover h2 span {&#x000A;      color: white;&#x000A;    }&#x000A;    .box:hover h3 {&#x000A;      color: #999;&#x000A;    }</code></pre>
    <h3>CSS (bumping)</h3>
    <p>The tricky bit here is that the "bump" happens in <em>different directions</em> depending on if it's a hover-on or hover-off. The fact that the text moves a bit and then back to it's original position means a <a href="http://css-tricks.com/almanac/properties/t/transition/" rel="nofollow external" class="bo">transition</a> won't help us here either, this is <a href="http://css-tricks.com/almanac/properties/a/animation/" rel="nofollow external" class="bo">animation</a> territory. We'll make one @keyframes for the up-bump and another for the down bump. Just a bit of padding will help us, because our <a href="http://css-tricks.com/box-sizing/" rel="nofollow external" class="bo">box-sizing</a> choice keeps the height of each box the same. </p>
    <pre><code>@keyframes up-bump {&#x000A;      0% { padding-top: 2em; }&#x000A;      50% { padding-top: 1.5em; }&#x000A;      100% { padding-top: 2em; }&#x000A;    }&#x000A;    @keyframes down-bump {&#x000A;      0% { padding-top: 2em; }&#x000A;      50% { padding-top: 2.5em; }&#x000A;      100% { padding-top: 2em; }&#x000A;    }</code></pre>
    <p>By default (triggers on hover-off) the <code>.box</code> will get the down bump and the <code>:hover</code> will get the up bump. This matches the direction of the background sliding in and out.</p>
    <pre><code>.box {&#x000A;      animation: down-bump 0.4s ease;&#x000A;    }&#x000A;    .box:hover {&#x000A;      animation: up-bump 0.4s ease;&#x000A;    }</code></pre>
    <h3>Initial bump fix</h3>
    <p>Adding that animation on the initial state makes it run right away on page load. Could be a neat effect, could be annoying. The POP site doesn't run them on load. Matt Boldt had the good idea of adding the out-bump when the hover out occurs only (via a class) so it won't run at first.</p>
    <pre><a href="http://codepen.io/mattboldt/pen/aHrqf" rel="nofollow external" class="bo">Check out this Pen!</a></pre>
    <h3>On no-hover devices...</h3>
    <p>They are links and no vital content is hidden, so no big deal.</p>
    <p><small><a href="http://css-tricks.com/pop-hovers/" rel="nofollow external" class="bo">Pop Hovers</a> is a post from <a href="http://css-tricks.com" rel="nofollow external" class="bo">CSS-Tricks</a></small></p>
    </div>
]]>
</Body>
<Summary>POP has these cool hovers in the boxes that make up their homepage. The boxes have a white background by default, and as you hover over them a dark background slides up behind, the text colors...</Summary>
<Website>http://css-tricks.com/pop-hovers/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27153/guest@my.umbc.edu/e9f9a9fabcfc088914203c9f62fbb052/api/pixel</TrackingUrl>
<Tag>article</Tag>
<Tag>css</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>tricks</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, 03 Apr 2013 10:59:31 -0400</PostedAt>
<EditAt>Wed, 03 Apr 2013 10:59:31 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="27165" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27165">
<Title>New tools for web design and development: March 2013</Title>
<Body>
<![CDATA[
    <div class="html-content">Backbone.js 1.0.0 is go! Mark Penfold examines this and the other tools of note that came out in March<div><table border="0"><tbody><tr>
    <td><a href="http://share.feedsportal.com/viral/sendEmail.cfm?lang=en&amp;title=New+tools+for+web+design+and+development%3A+March+2013&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Ffeatures%2Fnew-tools-web-design-and-development-march-2013" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/images/emailthis2.gif" style="max-width: 100%; height: auto;"></a></td>
    <td><a href="http://res.feedsportal.com/viral/bookmark.cfm?title=New+tools+for+web+design+and+development%3A+March+2013&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Ffeatures%2Fnew-tools-web-design-and-development-march-2013" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/images/bookmark.gif" style="max-width: 100%; height: auto;"></a></td>
    </tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/161990908864/u/49/f/502346/c/32632/s/2a4c989a/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/161990908864/u/49/f/502346/c/32632/s/2a4c989a/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Backbone.js 1.0.0 is go! Mark Penfold examines this and the other tools of note that came out in March</Summary>
<Website>http://feedproxy.google.com/~r/net/topstories/~3/SXZ2JIlv2xI/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27165/guest@my.umbc.edu/941cb4a1cfe623a2b9edc6250d33d25c/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>net</Tag>
<Tag>php</Tag>
<Tag>sql</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, 03 Apr 2013 10:55:01 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="110222" important="false" status="posted" url="https://my3.my.umbc.edu/posts/110222">
<Title>Constantine Vaporis, Asian Studies, Invited to Summer Institute</Title>
<Body>
<![CDATA[
    <div class="html-content">Constantine Vaporis, professor of history and director of the Asian studies program, has been invited to attend “India’s Past and the Making of the Present,” a National Endowment for the Humanities summer institute for college and university faculty sponsored by the Community College Humanities Association. This four-week institute, which will take place in Delhi, Agra, and Varanasi  this July, is designed to be an intense, interdisciplinary engagement with Indian history and culture, providing participants with a rich interplay of resources, seminars, and site visits.  It will introduce participants to the most current scholarly perspectives on India, broadening and deepening their …</div>
]]>
</Body>
<Summary>Constantine Vaporis, professor of history and director of the Asian studies program, has been invited to attend “India’s Past and the Making of the Present,” a National Endowment for the...</Summary>
<Website>https://news.umbc.edu/constantine-vaporis-asian-studies-invited-to-summer-institute/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/110222/guest@my.umbc.edu/98dfd1e19176d5e377cd32af8273f941/api/pixel</TrackingUrl>
<Tag>asianstudies</Tag>
<Tag>cahss</Tag>
<Tag>history</Tag>
<Tag>policy-and-society</Tag>
<Group token="umbc-news">UMBC News</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/original.png?1632921809</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/large.png?1632921809</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/medium.png?1632921809</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/small.png?1632921809</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxsmall.png?1632921809</AvatarUrl>
<Sponsor>UMBC News</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Wed, 03 Apr 2013 10:40:24 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="27325" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27325">
<Title>The typographic portfolio of Peter Tarka</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/03/thumbnail19.jpg" alt="Thumbnail" width="200" height="160" style="max-width: 100%; height: auto;">Talent, discipline, and creativity just might constitute a triple threat in the world of design; and if it does, 21-year-old <a href="http://www.behance.net/trk" rel="nofollow external" class="bo">Peter Tarka</a> easily meets the definition.</p>
    <p>Each month, the ambitious Poland-based creative produces a collection of mesmerizing 3D typographic art. Currently a graphic designer and illustrator with Grate Studio in Wroclaw, Tarka’s digital artwork has been featured on Behance, PSDTuts, and Abduzeedo, as well as in several publications. With ten collections under his belt, this gifted designer has sought to bring language to life through his exercises in typography.</p>
    <blockquote>
    <p>“The arrangement of type involves the selection of typefaces, point size, line length, leading (line spacing), adjusting the spaces between groups of letters (tracking) and adjusting the space between pairs of letters (kerning).” — Peter Tarka</p>
    </blockquote>
    <p>His precise approach is coupled with off-the-charts ingenuity and an eye for color, texture, and space. If typography is a discipline that makes language visible, Tarka’s work has it leaping off the page. Enjoy!</p>
    <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/04/typo1-2.jpg" width="650" style="max-width: 100%; height: auto;"></p>
    <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/04/typo3-4.jpg" width="650" style="max-width: 100%; height: auto;"></p>
    <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/04/typo5-7.jpg" width="650" style="max-width: 100%; height: auto;"></p>
    <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/04/typo8-9.jpg" width="650" style="max-width: 100%; height: auto;"></p>
    <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/03/typo10.jpg" width="650" style="max-width: 100%; height: auto;"></p>
    <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/04/typo11-13.jpg" width="650" style="max-width: 100%; height: auto;"></p>
    <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/03/typo14.jpg" width="650" style="max-width: 100%; height: auto;"></p>
    <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/04/typo15-17.jpg" width="650" style="max-width: 100%; height: auto;"></p>
    <p> </p>
    <p><em><strong>Which of Peter Tarka’s portfolio is your favorite? Is his work about design, or style? Share your thoughts in the comments.</strong></em></p>
    <p><br><br>
    </p>
    <table width="100%">
    <tbody>
    <tr>
    <td>
          <a href="http://www.mightydeals.com/deal/slideshowbox.html?ref=inwidget" rel="nofollow external" class="bo"><strong>20+ Cutting-Edge Photo Slideshow Templates  – only $19!</strong></a>
        </td>
    <td>
          <a href="http://www.mightydeals.com/?ref=inwidget" rel="nofollow external" class="bo"><br>
            <img src="http://mightydeals.com/web/images/widget-logo.png" height="40" width="90" style="max-width: 100%; height: auto;"><br>
          </a>
        </td>
    </tr>
    </tbody>
    </table>
    <p><br> </p>
    <a href="http://www.webdesignerdepot.com/2013/04/the-typographic-portfolio-of-peter-tarka/" rel="nofollow external" class="bo">Source</a>
    </div>
]]>
</Body>
<Summary>Talent, discipline, and creativity just might constitute a triple threat in the world of design; and if it does, 21-year-old Peter Tarka easily meets the definition.   Each month, the ambitious...</Summary>
<Website>http://www.webdesignerdepot.com/2013/04/the-typographic-portfolio-of-peter-tarka/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27325/guest@my.umbc.edu/a5080eb1182b0596dab7224d35470471/api/pixel</TrackingUrl>
<Tag>3d-typography</Tag>
<Tag>abduzeedo</Tag>
<Tag>art</Tag>
<Tag>behance</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>html5</Tag>
<Tag>illustrator</Tag>
<Tag>inspiration</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>oracle</Tag>
<Tag>peter-tarka</Tag>
<Tag>photoshop</Tag>
<Tag>php</Tag>
<Tag>psdtuts</Tag>
<Tag>sql</Tag>
<Tag>typographic-art</Tag>
<Tag>typography</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, 03 Apr 2013 10:15:15 -0400</PostedAt>
<EditAt>Wed, 03 Apr 2013 10:15:15 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="27150" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27150">
<Title>Our Project Management experts will be speaking at the April 11 ASTD Maryland Ch...</Title>
<Body>
<![CDATA[
    <div class="html-content">Our Project Management experts will be speaking at the April 11 <a href="/profile.php?id=349895737070" title="To tag someone, type @ and then the friend's name" rel="nofollow external" class="bo">ASTD Maryland</a> Chapter Meeting. Visit the link for more details and to register.<br><br><br><a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fmaryland.astd.org%2Fevents%3FeventId%3D652052%26EventViewMode%3DEventDetails&amp;h=5AQGGEc4i&amp;s=1" rel="nofollow external" class="bo">ASTD Maryland - Agile and Instructional Design:  The Mindset, the Techniques, Early Successes and Fa</a><br>maryland.astd.org<br>The Agile movement has its roots in software development.  But today organizations are utilizing Agile in a variety of business processes.  They have realized the need to be able to respond quickly  to shareholders, customers, constituents, and employees quickly and to ever changing requirements.</div>
]]>
</Body>
<Summary>Our Project Management experts will be speaking at the April 11 ASTD Maryland Chapter Meeting. Visit the link for more details and to register.   ASTD Maryland - Agile and Instructional Design:...</Summary>
<Website>http://www.facebook.com/umbctraining/posts/438639132890389</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27150/guest@my.umbc.edu/92d04f91210ee9538ba2f01eaed454c5/api/pixel</TrackingUrl>
<Tag>ccna</Tag>
<Tag>ceh</Tag>
<Tag>centers</Tag>
<Tag>cisco</Tag>
<Tag>cyber</Tag>
<Tag>cybersecurity</Tag>
<Tag>information</Tag>
<Tag>it</Tag>
<Tag>leadership</Tag>
<Tag>management</Tag>
<Tag>microsoft</Tag>
<Tag>project</Tag>
<Tag>security</Tag>
<Tag>technology</Tag>
<Tag>training</Tag>
<Tag>umbc</Tag>
<Group token="retired-575">UMBC Training Centers</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-575</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/xsmall.png?1361981335</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/original.jpg?1361981335</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/xxlarge.png?1361981335</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/xlarge.png?1361981335</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/large.png?1361981335</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/medium.png?1361981335</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/small.png?1361981335</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/xsmall.png?1361981335</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/xxsmall.png?1361981335</AvatarUrl>
<Sponsor>UMBC Training Centers</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 03 Apr 2013 10:00:00 -0400</PostedAt>
<EditAt>Wed, 03 Apr 2013 10:00:00 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="27159" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27159">
<Title>.net Awards 2013: side project of the year</Title>
<Body>
<![CDATA[
    <div class="html-content">We quiz the creators of the 10 web projects nominated for a .net Award this year<div><table border="0"><tbody><tr>
    <td><a href="http://share.feedsportal.com/viral/sendEmail.cfm?lang=en&amp;title=.net+Awards+2013%3A+side+project+of+the+year&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Ffeatures%2Fnet-awards-2013-side-project-year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/images/emailthis2.gif" style="max-width: 100%; height: auto;"></a></td>
    <td><a href="http://res.feedsportal.com/viral/bookmark.cfm?title=.net+Awards+2013%3A+side+project+of+the+year&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Ffeatures%2Fnet-awards-2013-side-project-year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/images/bookmark.gif" style="max-width: 100%; height: auto;"></a></td>
    </tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/161990925095/u/49/f/502346/c/32632/s/2a4c4758/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/161990925095/u/49/f/502346/c/32632/s/2a4c4758/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>We quiz the creators of the 10 web projects nominated for a .net Award this year</Summary>
<Website>http://feedproxy.google.com/~r/net/topstories/~3/k_KD9-ElIN8/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27159/guest@my.umbc.edu/45490eb02475f81b1cb6c055a8123e1b/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>net</Tag>
<Tag>php</Tag>
<Tag>sql</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, 03 Apr 2013 09:16:43 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="27147" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27147">
<Title>Freebie: The Collective Legal Guide For Designers (Contract Samples)</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>Rule number one for designers of all kinds: use a contract. Sometimes, this is easier said than done. Should I use a service agreement? A retainer? A licensing contract? With the help of <a href="http://www.docracy.com" rel="nofollow external" class="bo">Docracy</a>, we collected the experience of many designers to provide a wide range of starting points for less experienced creative professionals, and to start <strong>a permanent free legal resource</strong> for the community.</p>
    <p>Below you’ll find a collection of legal documents curated by our fantastic community. We are looking for your feedback and contribution to grow this collection. Suggest more items or add the contract you use for your own work. You might also want to have a look at our already published set of <a href="http://www.smashingmagazine.com/2012/08/15/free-download-useful-legal-documents-for-designers-pdf/" rel="nofollow external" class="bo">10 basic agreements</a> for designers.</p>
    <p><strong>Important notice</strong>: free sample documents and commentary are never a substitute to legal advice. Because every situation can be different, only a lawyer can answer your legal questions and assist you with a contract. The contracts below are useful examples, but they are sourced from a community of people and come without any guarantee, so treat them as general information. Smashing Magazine and the respective contributors of the documents disclaim all liability in connection to the use of these documents.</p>
    <h3>What Document Should I Sign With My Client?</h3>
    <p><strong>If you created an icon set:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/icon1.png" alt="icon" width="97" height="107" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/7428/pictos-license-agreement" rel="nofollow external" class="bo">Icon License Agreement</a><br>Drew Wilson’s license for the Pictos Icon Set, with popular standard terms.</li>
    <li>
    <a href="https://www.docracy.com/0ahgi98hms9/icon-designer-contract" rel="nofollow external" class="bo">Icon Designer Contract</a><br>A very basic contract for commissioned icon project.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If you are building a responsive website:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/responsive2.png" alt="responsive" width="103" height="100" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/649dkpe7g9/contract-killer-3" rel="nofollow external" class="bo">Contract Killer 3</a><br>The famous plain-English contract by <a rel="nofollow external" class="bo">Andy Clarke</a>, now with specific language on device testing.</li>
    <li>
    <a href="https://www.docracy.com/0b5y6lhl6me/contract-killer-3-en-espanol-" rel="nofollow external" class="bo">Contract Killer en Español</a><br>A Spanish translation of Contract Killer 3, by Spanish designer Daniel Martinez.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If you are starting a graphic design project:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/getting_started2.png" alt="getting_started" width="90" height="96" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/3152/designer-sample-contract" rel="nofollow external" class="bo">Sample design contract</a><br>Speider’s graphic design contract, with <a href="http://www.smashingmagazine.com/2010/06/07/how-to-spot-a-sketchy-client-plus-a-contract-template/" rel="nofollow external" class="bo">bonus negotiation tips</a>.</li>
    <li>
    <a href="https://www.docracy.com/5843/commissioned-illustration-offer-short-easy" rel="nofollow external" class="bo">Short Commissioned Illustration Offer</a><br>A pro-artist shortform contract for freelance illustrations.</li>
    <li>
    <a href="https://www.docracy.com/0nitq2cla75/general-letter-of-agreement-for-graphic-design-1-2" rel="nofollow external" class="bo">General Letter of Agreement for Graphic Design</a><br>A thorough contract with some handy plain-language highlights to help the clients understand the terms.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If you’re doing a small project with design and code:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/small_project1.png" alt="small_project" width="90" height="81" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/7079/development-service-contract" rel="nofollow external" class="bo">Development Service Contract</a>: One of the simplest contract you might find, very flexible, too.</li>
    <li>
    <a href="https://www.docracy.com/0pqaqvgdhps/independent-contractor-agreement-designers-" rel="nofollow external" class="bo">Independent Contractor Agreement (for Designers)</a><br>Ross Kimbarovsky’s annotated “contract for designers who hate contracts”. Narrated in first person.</li>
    <li>
    <a href="https://www.docracy.com/8770/copyright-ownership-and-license-agreement" rel="nofollow external" class="bo">Copyright Ownership and License Agreement</a><br>A licensing agreement for numerous types of creative work. Fixed fee, limited non-exclusive license.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If you’re doing a BIG project with design and code:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/big_project1.png" alt="big_project" width="90" height="82" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/8574/design-and-development-contract" rel="nofollow external" class="bo">Design and Development Contract</a><br>A classic design contract, heavily indebted to the <a href="https://www.docracy.com/2811/standard-master-agreement-for-design-services" rel="nofollow external" class="bo">AIGA Standard Master Agreement</a>, that is for even bigger projects.</li>
    <li>
    <a href="https://www.docracy.com/0eo1bqifkfk/acuerdo-de-desarrollo-de-software-" rel="nofollow external" class="bo">Acuerdo de Desarollo de Sofware</a><br>A handy Spanish version of the contract above.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If you’re doing UX work:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/interface.png" alt="interface" width="90" height="59" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/0li96li643c/contract-for-user-experience-design" rel="nofollow external" class="bo">Contract for User Experience Design</a><br>A version of Contract Killer, customized for UX work.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If you’re creating an infographic:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/infographic.png" alt="infographic" width="90" height="70" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/0pwid2zc279/infographic-killer-3" rel="nofollow external" class="bo">Infographic Killer 3</a><br>A verison of the Contract Killer for commissioned infographics.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If a third party wants to use your work:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/third_party1.png" alt="third_party" width="90" height="75" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/8770/copyright-ownership-and-license-agreement" rel="nofollow external" class="bo">Copyright Ownership and License Agreement</a><br>A super-simple assignment agreement for any sort of intellectual property (code, design, copy, etc.). Tip: better sign this only after money is in the bank.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If you’re redesigning a website:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/web_redesign1.png" alt="web_redesign" width="90" height="84" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/5598/website-identity-design-contract" rel="nofollow external" class="bo">Website + Identity Design Contract</a><br>A comprehensive branding/redesign agreement, with useful annotation to help you in possible negotiations.</li>
    <li>
    <a href="https://www.docracy.com/7457/design-contract" rel="nofollow external" class="bo">Design Contract</a><br>A simple contract for freelance Web projects.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If you’re hiring a developer/designer to work on a project:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/hiring_someone2.png" alt="hiring_someone" width="90" height="56" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/6285/independent-developer-or-contractor-agreement" rel="nofollow external" class="bo">Independent Developer Agreement</a><br>A balanced independent contractor agreement, written from the point of view of the hiring company.</li>
    <li>
    <a href="https://www.docracy.com/0rgkbvacolg/independent-contractor-agreement-template" rel="nofollow external" class="bo">Independent Contractor Agreement</a><br>A catch-all independent contractor agreement.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If you’re hired as a freelance developer:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/being_hired2.png" alt="being_hired" width="90" height="63" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/5549/independent-contractor-agreement-developers-" rel="nofollow external" class="bo">Independent Contractor Agreement (Developers)</a><br>Ross Kimbarovsky’s “contract for software developers who hate contracts”.</li>
    <li>
    <a href="https://www.docracy.com/5207/software-licensing-agreement" rel="nofollow external" class="bo">Software Licensing Agreement</a><br>If you decide to licensing your code rather than assign it, this document is very helpful.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If you’re making a mobile application:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/mobile2.png" alt="mobile" width="90" height="79" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li><a href="https://www.docracy.com/0xc71srp9cc/app-design-contract" rel="nofollow external" class="bo">App Design Contract</a></li>
    <li><a href="https://www.docracy.com/4754/contract-for-mobile-application-development-services" rel="nofollow external" class="bo">Contract for Mobile Application Development Services</a></li>
    <li>
    <a href="https://www.docracy.com/6016/mobile-privacy-policy" rel="nofollow external" class="bo">Mobile Privacy Policy</a><br>An updated open source sample privacy policy for mobile apps.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>If things go wrong:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/help2.png" alt="help" width="90" height="76" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/0ra7gjjulo6/trademark-cease-desist-letter" rel="nofollow external" class="bo">Cease &amp; Desist Letter</a><br>A handy C&amp;D letter if someone is “stealing” your intellectual property.</li>
    <li>
    <a href="https://www.docracy.com/7842/friendly-collection-letter" rel="nofollow external" class="bo">Friendly Collection Letter</a><br>A friendly but firm reminder for clients who don’t pay on time.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <p><strong>Other helpful documents:</strong></p>
    <table>
    <tbody>
    <tr>
    <td>
    <img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/other_stuff2.png" alt="other_stuff" width="90" height="87" style="max-width: 100%; height: auto;">
    </td>
    <td>
    <ul>
    <li>
    <a href="https://www.docracy.com/0uzihxju7jl/technology-consulting-contract" rel="nofollow external" class="bo">Technology Consulting Contract</a><br>Generic technology contract that includes an overview of the project, including estimated time, cost, and team members</li>
    <li>
    <a href="https://www.docracy.com/0i2fahvpv5t/statement-of-work-digital-advertising-services" rel="nofollow external" class="bo">Statement of Work – Digital Advertising ServicesSOW</a><br>A SOW for agency projects.</li>
    <li>
    <a href="https://www.docracy.com/7kjozeinrv/retainer-agreement" rel="nofollow external" class="bo">Retainer Agreement</a><br>A useful template if you’re a designer who works on a retainer fee.</li>
    <li>
    <a href="https://www.docracy.com/6931/music-license-agreement" rel="nofollow external" class="bo">Music License Agreement</a><br>A licensing agreement to use copyrighted music in a certain application.</li>
    </ul>
    </td>
    </tr>
    </tbody>
    </table>
    <h3>I Want To Add My Own Document</h3>
    <p><a href="https://www.docracy.com/docmanage/newdoc" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/add.png" alt="Add your document!" width="27" height="27" style="max-width: 100%; height: auto;"></a><a href="https://www.docracy.com/docmanage/newdoc" rel="nofollow external" class="bo">add yours</a></p>
    <p>Eager to share your own experiences on documents? Please leave a comment, question or suggestion. Also, we’d love to include more documents in this article! Feel free to <a href="https://www.docracy.com/docmanage/newdoc" rel="nofollow external" class="bo">add yours</a>! We’ll look at all documents which we receive and add the best ones to this guide!</p>
    <h4>Extra: Free “Legal Guide” Icon Set</h4>
    <p>You like the icons in this guide? <a href="http://www.yeahstyledg.com/" rel="nofollow external" class="bo">Alvaro Casanova</a>, designer for Docracy.com, offers you to <a href="http://provide.smashingmagazine.com/Freebies/Legal_Guide_Icons.zip" rel="nofollow external" class="bo">download the set for free</a> (retina and standard).</p>
    <p><em>Credits of image on front page: <a href="http://www.flickr.com/photos/tusnelda/6140792529" rel="nofollow external" class="bo">storebukkebruse</a>.</em></p>
    <p><em>(vf) (ea)</em></p>
    <hr>
    <p><small>© Veronica Picciafuoco for <a href="http://www.smashingmagazine.com" rel="nofollow external" class="bo">Smashing Magazine</a>, 2013.</small></p>
    </div>
]]>
</Body>
<Summary>        Rule number one for designers of all kinds: use a contract. Sometimes, this is easier said than done. Should I use a service agreement? A retainer? A licensing contract? With the help of...</Summary>
<Website>http://www.smashingmagazine.com/2013/04/03/legal-guide-contract-samples-for-designers/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27147/guest@my.umbc.edu/7146471eedb480c7511afeb9f4dc3a98/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>freebie</Tag>
<Tag>freebies</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</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, 03 Apr 2013 09:06:05 -0400</PostedAt>
<EditAt>Wed, 03 Apr 2013 09:06:05 -0400</EditAt>
</NewsItem>

</News>
