<?xml version="1.0"?>
<News hasArchived="true" page="8479" pageCount="10825" pageSize="10" timestamp="Sat, 19 Sep 2026 17:21:04 -0400" url="https://my3.my.umbc.edu/posts.xml?mode=recent&amp;page=8479">
<NewsItem contentIssues="true" id="34701" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34701">
<Title>Red Burns, &#8216;Godmother of Silicon Alley,&#8217; Dies at 88</Title>
<Body>
<![CDATA[
    <div class="html-content">Ms. Burns helped to lead the movement for public access to cable television and started a New York University program to foster Internet wizards.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F27%2Fnyregion%2Fred-burns-godmother-of-silicon-alley-dies-at-88.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Red+Burns%2C+%E2%80%98Godmother+of+Silicon+Alley%2C%E2%80%99+Dies+at+88" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F27%2Fnyregion%2Fred-burns-godmother-of-silicon-alley-dies-at-88.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Red+Burns%2C+%E2%80%98Godmother+of+Silicon+Alley%2C%E2%80%99+Dies+at+88" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F27%2Fnyregion%2Fred-burns-godmother-of-silicon-alley-dies-at-88.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Red+Burns%2C+%E2%80%98Godmother+of+Silicon+Alley%2C%E2%80%99+Dies+at+88" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F27%2Fnyregion%2Fred-burns-godmother-of-silicon-alley-dies-at-88.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Red+Burns%2C+%E2%80%98Godmother+of+Silicon+Alley%2C%E2%80%99+Dies+at+88" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F27%2Fnyregion%2Fred-burns-godmother-of-silicon-alley-dies-at-88.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Red+Burns%2C+%E2%80%98Godmother+of+Silicon+Alley%2C%E2%80%99+Dies+at+88" 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/173608254474/u/0/f/640387/c/34625/s/306e6ba2/sc/38/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608254474/u/0/f/640387/c/34625/s/306e6ba2/sc/38/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/173608254474/u/0/f/640387/c/34625/s/306e6ba2/sc/38/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608254474/u/0/f/640387/c/34625/s/306e6ba2/sc/38/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/173608254474/u/0/f/640387/c/34625/s/306e6ba2/sc/38/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608254474/u/0/f/640387/c/34625/s/306e6ba2/sc/38/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/173608254474/u/0/f/640387/c/34625/s/306e6ba2/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608254474/u/0/f/640387/c/34625/s/306e6ba2/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Ms. Burns helped to lead the movement for public access to cable television and started a New York University program to foster Internet wizards.      </Summary>
<Website>http://www.nytimes.com/2013/08/27/nyregion/red-burns-godmother-of-silicon-alley-dies-at-88.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34701/guest@my.umbc.edu/d57cfa73bbc0562cec38a7226918db94/api/pixel</TrackingUrl>
<Tag>apple-inc-aapl-nasdaq</Tag>
<Tag>burns-red</Tag>
<Tag>computers-and-the-internet</Tag>
<Tag>creativity</Tag>
<Tag>deaths-obituaries</Tag>
<Tag>google-inc-goog-nasdaq</Tag>
<Tag>microsoft-corporation-msft-nasdaq</Tag>
<Tag>new</Tag>
<Tag>new-york-university</Tag>
<Tag>sony-corporation-sne-nyse</Tag>
<Tag>technology</Tag>
<Tag>walt-disney-company-dis-nyse</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 26 Aug 2013 22:23:38 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="34698" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34698">
<Title>Building a CodeIgniter Web Application From Scratch &#8211; Part 1</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=34338&amp;c=1256393674" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=34338&amp;c=1256393674" alt="" style="max-width: 100%; height: auto;"></a><p>In this series we’re going to build a web billboard application from scratch, we’re going to use <a href="http://ellislab.com/codeigniter" rel="nofollow external" class="bo">CodeIgniter</a> to handle the back-end service and <a href="http://backbonejs.org" rel="nofollow external" class="bo">BackboneJS</a> for the web client. In the first two parts of the series we’ll create the back-end service and then the client application in the last two.</p>
    <p></p>
    <hr>
    <h2>Application Description</h2>
    <p>The application we are creating will be a simple billboard, where users can register, post tasks, and offer a reward for its completion. Other users can see the existing tasks, assign the task to themselves, and get the offered reward.</p>
    <p>The tasks will have basic data like a title, description and reward (as required parameters) and an optional due date and notes. The user profile will simply consist of the user’s name, email and website. So let’s get started.</p>
    <hr>
    <h2>Database Setup</h2>
    <p>First off, for the app data we’re going to use <a href="http://www.mongodb.org/" rel="nofollow external" class="bo">MongoDB</a> as the database server. MongoDB is a document oriented database and the leading NoSQL database out there. It’s really scalable and fast, which makes it great to manage huge amounts of data.</p>
    <blockquote><p>MongoDB is a document oriented database and the leading NoSQL database.</p></blockquote>
    <p>In order to use MongoDB in this application, I’m going to use a MongoDB CodeIgniter driver that I wrote some time ago, it’s just a wrapper of the MongoDB PHP driver to mimic the framework’s SQL ActiveRecord. You can find the source files for this driver in <a href="https://github.com/chuckcfs/CodeIgniter-MongoDB" rel="nofollow external" class="bo">my public repository</a>. For this driver to work properly, make sure that you have the PHP’s MongoDB driver installed, if you don’t, <a href="http://docs.mongodb.org/ecosystem/drivers/php/" rel="nofollow external" class="bo">follow these steps</a> to get it working.</p>
    <p>Please note that explaining the drivers in CodeIgniter and such is out of the scope of this tutorial, refer to the <a href="http://ellislab.com/codeigniter/user-guide/general/drivers.html" rel="nofollow external" class="bo">documentation</a> if you have any doubts. You just need to move the <code>"mongo_db.php"</code> in the <code>"config"</code> folder to the <code>"config"</code> folder of your application and the <code>"Mongo_db"</code> folder in the <code>"libraries"</code> folder to the <code>"libraries"</code> folder in your application.</p>
    <h3>Database Configuration</h3>
    <p>The only file we need to edit at this point is the <code>"mongo_db.php"</code> file under the <code>"config"</code> folder, since my <code>mongo</code> installation has all the default parameters, I’m just going to edit line 40 and give it the name of the database that I want to use:</p>
    <pre>$config['mongo_db'] = 'billboard';&#x000A;    </pre>
    <p>That’s it for the database, one of the many advantages of MongoDB is that the documents have no predefined structure, so it works without us needing to set anything up before using it, our database doesn’t even have to exist, MongoDB will create it on the fly when we need it.</p>
    <hr>
    <h2>Global Configuration</h2>
    <p>Other than your regular configuration options, that should include the <code>base_url</code> and the <code>index_page</code> if any, we need to set the <a href="http://ellislab.com/codeigniter/user-guide/helpers/string_helper.html" rel="nofollow external" class="bo">string</a> and <a href="http://ellislab.com/codeigniter/user-guide/helpers/date_helper.html" rel="nofollow external" class="bo">date</a> helpers to <a href="http://ellislab.com/codeigniter/user-guide/general/autoloader.html" rel="nofollow external" class="bo">autoload</a>. I’m not going to walk you through this, since we have much more to cover, when in doubt refer to the <a href="http://ellislab.com/codeigniter/user-guide/index.html" rel="nofollow external" class="bo">documentation</a>.</p>
    <p>Other than the helpers, we need to set up the <a href="http://ellislab.com/codeigniter/user-guide/libraries/encryption.html" rel="nofollow external" class="bo">encryption class</a> since we’re going to use it for our app.</p>
    <hr>
    <h2>URL Handling</h2>
    <p>This is going to be a <a href="https://blog.apigee.com/detail/restful_api_design" rel="nofollow external" class="bo">RESTful service</a> and we need a way to take the requests coming to the server and handle them accordingly. We could use an <a href="https://github.com/philsturgeon/codeigniter-restserver" rel="nofollow external" class="bo">existing library</a> (which is great by the way) but for the purposes of this demonstration, I’m going to create the functionality I need using CodeIgniter’s core features.</p>
    <h3>Handling RESTful Requests</h3>
    <p>In particular, we’re going to use the ability to extend the <a href="http://ellislab.com/codeigniter/user-guide/general/core_classes.html" rel="nofollow external" class="bo">core classes</a>. We will start with the Controller, for the main part of this extension we’re using the <code>"_remap"</code> method in the base controller so all the controllers of our app can use it. Start by creating a <code>MY_Controller.php</code> file inside the <code>"core"</code> folder in the <code>"application"</code> folder, we create this just like any other CodeIgniter controller, as follows:</p>
    <pre>&lt;?php&#x000A;    if( !defined( 'BASEPATH' ) ) exit( 'No direct script access allowed' );&#x000A;    &#x000A;    class MY_Controller extends CI_Controller {&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>Now in this controller we’re going to use the CodeIgniter <a href="http://ellislab.com/codeigniter/user-guide/general/controllers.html#remapping" rel="nofollow external" class="bo">_remap</a> method to preprocess every request made to the server. Inside the class we just created, add the following method:</p>
    <pre>public function _remap( $param ) {&#x000A;        $request = $_SERVER['REQUEST_METHOD'];&#x000A;    &#x000A;        switch( strtoupper( $request ) ) {&#x000A;            case 'GET':&#x000A;                $method = 'read';&#x000A;                break;&#x000A;            case 'POST':&#x000A;                $method = 'save';&#x000A;                break;&#x000A;            case 'PUT':&#x000A;                $method = 'update';&#x000A;                break;&#x000A;            case 'DELETE':&#x000A;                $method = 'remove';&#x000A;                break;&#x000A;            case 'OPTIONS':&#x000A;                $method = '_options';&#x000A;                break;&#x000A;        }&#x000A;    &#x000A;        $this-&gt;$method( $id );&#x000A;    }&#x000A;    </pre>
    <p>A couple of things to note here, first off, there are some REST verbs that we are ignoring (like PATCH), since I’m demonstrating building a REST app, I don’t want to add things that may make this more complex than it needs to be. Secondly, we’re not taking into account the case where a controller doesn’t implement a particular method, which is very likely that this could happen. Now, we could add a default method to handle such requests, but so that we don’t add too much complexity, let’s leave it like this. Third, we’re receiving a <code>param</code> variable in the method declaration, let’s address that, and then I’ll explain the <code>OPTIONS</code> request. Above the switch statement, add the following code:</p>
    <pre>if ( preg_match( "/^(?=.*[a-zA-Z])(?=.*[0-9])/", $param ) ) {&#x000A;        $id = $param;&#x000A;    } else {&#x000A;        $id = null;&#x000A;    }&#x000A;    </pre>
    <p>This regular expression matches any string consisting of uppercase and lowercase letters and any numbers. This is used to check if a MongoDB _id string is being given as a parameter, again, this is not the safest way nor the most thorough check, but for the sake of simplicity, we’ll keep it as is.</p>
    <h3>OPTIONS Request</h3>
    <p>Since we’re building a web service and a client application as separate parts, it makes sense that both are going to be hosted on different domains, so we will enable <a href="http://en.wikipedia.org/wiki/Cross-origin_resource_sharing" rel="nofollow external" class="bo">CORS</a> in the back-end and this means, among other things, that our app will respond properly to <code>OPTIONS</code> requests.</p>
    <p>When a web app created with BackboneJS (and some other frameworks) tries to make an asynchronous request to a remote server, it sends an <code>OPTIONS</code> request before sending the actual request it’s supposed to send. Among other things, the client tells the server from where it is sending the request, what type of request it is about to send, and the content that it’s expecting. After that, it is up to the server to send the client a response where it acknowledges the request or rejects it.</p>
    <p>Since our back-end service, no matter which controller is called, is going to receive this <code>OPTIONS</code> request, it makes sense to implement the method to respond to it in our base controller. Add the following method below (or above) the <code>_remap</code> method in our controller.</p>
    <pre>private function _options() {&#x000A;        $this-&gt;output-&gt;set_header( 'Access-Control-Allow-Origin: *' );&#x000A;        $this-&gt;output-&gt;set_header( "Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS" );&#x000A;        $this-&gt;output-&gt;set_header( 'Access-Control-Allow-Headers: content-type' );&#x000A;        $this-&gt;output-&gt;set_content_type( 'application/json' );&#x000A;        $this-&gt;output-&gt;set_output( "*" );&#x000A;    }&#x000A;    </pre>
    <p>Ideally, we would only allow some domains to make requests to us, we would check the <code>request_headers</code> header to see if we accept it and we would check for the expected content type, by the client to see if we support it, but again, this is a not-so-complex app and we are skipping these edge cases.</p>
    <hr>
    <h2>Managing Output</h2>
    <p>To finish our base controller, let’s create a method that every controller will use to send its results back to the client. In the base controller class, add the following method:</p>
    <pre>protected function _format_output( $output = null ) {&#x000A;        $this-&gt;output-&gt;set_header( 'Access-Control-Allow-Origin: *' );&#x000A;    &#x000A;        if( isset( $output-&gt;status ) &amp;&amp; $output-&gt;status == 'error' ) {&#x000A;            $this-&gt;output-&gt;set_status_header( 409, $output-&gt;desc );&#x000A;        }&#x000A;        $this-&gt;_parse_data( $output );&#x000A;    &#x000A;        $this-&gt;output-&gt;set_content_type( 'application/json' );&#x000A;        $this-&gt;output-&gt;set_output( json_encode( $output ) );&#x000A;    }&#x000A;    </pre>
    <p>Again, in order for BackboneJS to process the server response it has to know that its host is accepted by the server, hence the <code>Allow-Origin</code> header, then, if the result is a faulty one, we set a status header indicating this. This <code>status</code> will become more clear when we create the back-end models. Next we use the <code>parse_data</code> helper, which will be a private method (that we will write in a moment) but let me skip that for the time being, then we set the content type as JSON and finally we encode the response as a JSON object. Again, here we could (and should) support other output formats (like XML).</p>
    <p>Now let’s create the <code>parse_data</code> helper method (and I’ll explain it afterwards), add the following code to the base controller:</p>
    <pre>private function _parse_data( &amp;$data ) {&#x000A;        if ( ! is_array( $data ) &amp;&amp; ! is_object( $data ) )&#x000A;            return $data;&#x000A;    &#x000A;        foreach ( $data as $key =&gt; $value ) {&#x000A;            if ( is_object( $value ) || is_array( $value ) ) {&#x000A;                if( is_object( $data ) ) {&#x000A;                    $data-&gt;{$key} = $this-&gt;_parse_data( $value );&#x000A;                } else {&#x000A;                    $data[ $key ] = $this-&gt;_parse_data( $value );&#x000A;                }&#x000A;            }&#x000A;    &#x000A;            if ( isset( $value-&gt;sec ) ) {&#x000A;                if( is_object( $data ) ) {&#x000A;                    $data-&gt;{$key} = date( 'd.m.Y', $value-&gt;sec );&#x000A;                } else {&#x000A;                    $data[ $key ] = date( 'd.m.Y', $value-&gt;sec );&#x000A;                }&#x000A;            }&#x000A;    &#x000A;            if ( is_object( $value ) &amp;&amp; isset( $value-&gt;{'$id'} ) ) {&#x000A;                if( is_object( $data ) ) {&#x000A;                    $data-&gt;{$key} = $value-&gt;__toString();&#x000A;                } else {&#x000A;                    $data[ $key ] = $value-&gt;__toString();&#x000A;                }&#x000A;            }&#x000A;        }&#x000A;    &#x000A;        return $data;&#x000A;    }&#x000A;    </pre>
    <p>First off, note that we only parse the data for arrays and objects, and we’re doing it recursively. This pre-parsing has to do with the fact that MongoDB uses dates and IDs as objects, but our clients don’t need this information. Now for the case of IDs, we just need its string value, hence the <code>toString</code> method call, then the value has an <a href="http://docs.mongodb.org/manual/reference/object-id/" rel="nofollow external" class="bo">‘$id’</a> property. Afterwards we are converting the dates to a <code>day.month.year</code> format, this is being done for convenience in the design of the client application, again, not the most flexible approach but it works for this example.</p>
    <hr>
    <h2>Handling Input</h2>
    <p>Since we’re sending JSON back to the client application, it is only logical that we accept data in JSON format as well. CodeIgniter doesn’t support this by default like <a href="http://laravel.com/docs/requests#basic-input" rel="nofollow external" class="bo">Laravel</a> does, as a matter of fact, CodeIgniter doesn’t even support <code>put</code> and <code>delete</code> params. This is mainly because the framework is not intended for a RESTful service, however the effort that it takes to adapt it is minimal compared to the benefits, at least from my point of view.</p>
    <p>So we will start by supporting the JSON data that BackboneJS sends. Create a new file inside the <code>"core"</code> folder, this time it is going to be named <code>"MY_Input.php"</code> and it will have the following basic structure:</p>
    <pre>&lt;?php&#x000A;    if( !defined( 'BASEPATH' ) ) exit( 'No direct script access allowed' );&#x000A;    &#x000A;    class MY_Input extends CI_Input {&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>Now every time we use <code>$this-&gt;input</code> in our application we’ll be referring to this class, we will create some new methods and override a few existing ones. First off, we are going to add the support for JSON data, add the following method to the new class.</p>
    <pre>public function json() {&#x000A;        if ( !self::$request_params ) {&#x000A;            $payload    = file_get_contents( '<a href="php://input">php://input</a>' );&#x000A;    &#x000A;            if ( is_array( $payload ) ) {&#x000A;                self::$request_params   = $payload;&#x000A;            } else if ( ( substr( $payload, 0, 1 ) == "{" ) &amp;&amp; ( substr( $payload, ( strlen( $payload ) - 1 ), 1 ) == "}" ) ) {&#x000A;                self::$request_params   = json_decode( $payload );&#x000A;            } else {&#x000A;                parse_str( $payload, self::$request_params );&#x000A;            }&#x000A;        }&#x000A;    &#x000A;        return (object) self::$request_params;&#x000A;    }&#x000A;    </pre>
    <p><code>$request_params</code> is a static variable used to store the request string/data sent by the client. It is static in order to make it object independent so that we can access it from any controller at any given time. The data is obtained from the <code><a href="php://input">php://input</a></code> stream rather than the <code>$_POST</code> global. This is done in order to obtain the data sent in via <code>PUT</code> and <code>DELETE</code> requests as well. Finally, the obtained payload is inspected to check if it’s an array, a JSON encoded object, or a query string, and it’s processed accordingly. The result is then returned as an object.</p>
    <p>For this method to work, we need to create the static <code>$request_params</code> variable, add its declaration to the top of the class.</p>
    <pre>private static $request_params  = null;&#x000A;    </pre>
    <h3>Handling Regular Requests</h3>
    <p>Next, we need to override the <code>post</code> method of the regular input class to use the new JSON payload instead of the <code>$_POST</code> global, add the following method to the new Input class.</p>
    <pre>public function post( $index = NULL, $xss_clean = FALSE ) {&#x000A;        $request_vars   = ( array ) $this-&gt;json();&#x000A;        if ( $index === NULL &amp;&amp; !empty( $request_vars ) ) {&#x000A;            $post       = array();&#x000A;            foreach( array_keys( $request_vars ) as $key ) {&#x000A;                $post[$key]  = $this-&gt;_fetch_from_array( $request_vars, $key, $xss_clean );&#x000A;            }&#x000A;            return $post;&#x000A;        }&#x000A;        return $this-&gt;_fetch_from_array( $request_vars, $index, $xss_clean );&#x000A;    }&#x000A;    </pre>
    <p>This is almost the same as the <code>post</code> method from the original <code>CI_Input</code> class, with the difference being that it uses our new JSON method instead of the <code>$_POST</code> global to retrieve the post data. Now let’s do the same for the the <code>PUT</code> method.</p>
    <pre>public function put( $index = NULL, $xss_clean = FALSE ) {&#x000A;        $request_vars   = ( array ) $this-&gt;json();&#x000A;        if ( $index === NULL &amp;&amp; !empty( $request_vars ) ) {&#x000A;            $put = array();&#x000A;            foreach( array_keys( $request_vars ) as $key ) {&#x000A;                $put[$key]   = $this-&gt;_fetch_from_array( $request_vars, $key, $xss_clean );&#x000A;            }&#x000A;            return $put;&#x000A;        }&#x000A;        return $this-&gt;_fetch_from_array( $request_vars, $index, $xss_clean );&#x000A;    }&#x000A;    </pre>
    <p>And then we also need the <code>DELETE</code> method:</p>
    <pre>public function delete( $index = NULL, $xss_clean = FALSE ) {&#x000A;        $request_vars   = ( array ) $this-&gt;json();&#x000A;        if ( $index === NULL &amp;&amp; !empty( $request_vars ) ) {&#x000A;            $delete = array();&#x000A;            foreach( array_keys( $request_vars ) as $key ) {&#x000A;                $delete[$key]   = $this-&gt;_fetch_from_array( $request_vars, $key, $xss_clean );&#x000A;            }&#x000A;            return $delete;&#x000A;        }&#x000A;        return $this-&gt;_fetch_from_array( $request_vars, $index, $xss_clean );&#x000A;    }&#x000A;    </pre>
    <p>Now technically, there’s really no need for these additional methods, since the <code>post</code> method can handle the params in the <code>PUT</code> and <code>DELETE</code> requests, but semantically it’s better (in my opinion).</p>
    <p>This is all we need for our custom Input class. Again we’re ignoring edge cases here, like multipart requests, even though it’s not very hard to handle those and still maintain the functionality obtained here, but, for the sake of simplicity we’ll keep it just the way it is.</p>
    <hr>
    <h2>Base Model</h2>
    <p>To end the extension of the core classes, let’s create a base model that every model in the app will extend upon, this is just to avoid repetition of common tasks for every model. Like any other core class extension, here’s our barebones base model:</p>
    <pre>&lt;?php&#x000A;    if( !defined( 'BASEPATH' ) ) exit( 'No direct script access allowed' );&#x000A;    &#x000A;    class MY_Model extends CI_Model {&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>This base model will only serve the purpose of setting and retrieving errors. Add the following method to set a model error:</p>
    <pre>protected function _set_error( $desc, $data = null ) {&#x000A;        $this-&gt;_error           = new stdClass();&#x000A;        $this-&gt;_error-&gt;status   = 'error';&#x000A;        $this-&gt;_error-&gt;desc     = $desc;&#x000A;        if ( isset( $data ) ) {&#x000A;            $this-&gt;_error-&gt;data = $data;&#x000A;        }&#x000A;    }&#x000A;    </pre>
    <p>As you can see, this method uses an instance variable <code>$error</code>, so let’s add its declaration to the top of our base model class.</p>
    <pre>protected $_error;&#x000A;    </pre>
    <p>Finally, to keep it structured, let’s create the getter method for this property.</p>
    <pre>public function get_error() {&#x000A;        return $this-&gt;_error;&#x000A;    }&#x000A;    </pre>
    <hr>
    <h2>Handling Sessions</h2>
    <h3>Session Controller</h3>
    <p>For the last part of this tutorial, we will create the controller and model to handle user sessions.</p>
    <p>The controller for our session is going to respond to any <code>POST</code> request made to our <code>Session</code> resource, since the session can’t be retrieved after creation, nor updated directly, this controller will only respond to <code>POST</code> and <code>DELETE</code> requests. Please note that sending any other request to the resource will result in a server error, we’re not dealing with edge cases here but this could be easily avoided by checking if the method that’s called exists in our <code>MY_Controller</code> file and setting a default method name if the resource doesn’t support the request.</p>
    <p>Below you’ll find the structure for our <code>Session</code> controller:</p>
    <pre>&lt;?php&#x000A;    if ( !defined( 'BASEPATH' ) ) exit( 'No direct script access allowed' );&#x000A;    &#x000A;    class Session extends MY_Controller {&#x000A;    &#x000A;        public function __construct() {}&#x000A;    &#x000A;        public function save() {}&#x000A;    &#x000A;        public function remove( $id = null ) {}&#x000A;    }&#x000A;    </pre>
    <p>Note that this controller is extending the <code>MY_Controller</code> class instead of the regular <code>CI_Controller</code> class, we do this in order to use the <code>_remap</code> method and other functionality that we created earlier. OK, so now let’s start with the constructor.</p>
    <pre>public function __construct() {&#x000A;        parent::__construct();&#x000A;    &#x000A;        $this-&gt;load-&gt;model( 'session_model', 'model' );&#x000A;    }&#x000A;    </pre>
    <p>This simple constructor just calls its parent constructor (as every controller in CodeIgniter must do) and then loads the controller’s model. The code for the <code>save</code> method is as follows.</p>
    <pre>public function save() {&#x000A;        $result = $this-&gt;model-&gt;create();&#x000A;        if ( !$result ) {&#x000A;            $result = $this-&gt;model-&gt;get_error();&#x000A;        }&#x000A;        $this-&gt;_format_output( $result );&#x000A;    }&#x000A;    </pre>
    <p>And then the code for the <code>remove</code> method:</p>
    <pre>public function remove( $id = null ) {&#x000A;        $result = $this-&gt;model-&gt;destroy( $id );&#x000A;        if ( !$result ) {&#x000A;            $result = $this-&gt;model-&gt;get_error();&#x000A;        }&#x000A;        $this-&gt;_format_output( $result );&#x000A;    }&#x000A;    </pre>
    <p>Both methods simply delegate the task at hand to the model, which handles the actual data manipulation. In a real world application, the necessary data validation and session checking would be done in the controller, and the common tasks such as session checking should be implemented in the base controller.</p>
    <h3>Session Model</h3>
    <p>Now let’s move on to the session model. Here is its basic structure:</p>
    <pre>&lt;?php&#x000A;    if ( !defined( 'BASEPATH' ) ) exit( 'No direct script access allowed' );&#x000A;    &#x000A;    class Session_Model extends MY_Model {&#x000A;    &#x000A;        public function __construct() {}&#x000A;    &#x000A;        public function create() {}&#x000A;    &#x000A;        public function destroy( $id ) {}&#x000A;    }&#x000A;    </pre>
    <p>Like the controller, this model extends the <code>MY_Model</code> class instead of the regular <code>CI_Model</code> class, this is being done in order to use the common methods that we’ve created earlier. Again, let’s start with the constructor.</p>
    <pre>public function __construct() {&#x000A;        $this-&gt;load-&gt;driver( 'mongo_db' );&#x000A;    }&#x000A;    </pre>
    <p>In this case, we just load the Mongo_db driver, that we discussed earlier. Now we’ll continue with the method in charge of destroying the session.</p>
    <pre>public function destroy( $id ) {&#x000A;        $filters    = array( '_id' =&gt; $this-&gt;mongo_db-&gt;gen_id( $id ) );&#x000A;    &#x000A;        $query     = $this-&gt;mongo_db-&gt;get_where( 'sessions', $filters );&#x000A;        if ( $query-&gt;num_rows() == 0 ) {&#x000A;            $this-&gt;_set_error( 'INVALID_CREDENTIALS' );&#x000A;            return false;&#x000A;        }&#x000A;    &#x000A;        $this-&gt;mongo_db-&gt;remove( 'sessions', $filters );&#x000A;        return 'SESSION_TERMINATED';&#x000A;    }&#x000A;    </pre>
    <p>In this method we check if there’s a session for the given session_id, and if so we attempt to remove it, sending a success message if everything goes OK, or setting an error and returning false if something goes wrong. Note that when using the session_id we use the special method <code>$this-&gt;mongo_db-&gt;gen_id</code>, this is because like I mentioned earlier, IDs in MongoDB are objects, so we use the id string to create it.</p>
    <p>Finally, let’s write the <code>create</code> method which will wrap up part one of this tutorial series.</p>
    <pre>public function create() {&#x000A;        $query      = $this-&gt;mongo_db-&gt;get_where( 'users', array( 'email' =&gt; $this-&gt;input-&gt;post( 'email' ) ) );&#x000A;        if ( $query-&gt;num_rows() != 1 ) {&#x000A;            $this-&gt;_set_error( 'INVALID_CREDENTIALS' );&#x000A;            return false;&#x000A;        }&#x000A;    &#x000A;        $this-&gt;load-&gt;library( 'encrypt' );&#x000A;        $user   = $query-&gt;row();&#x000A;        $salt   = $this-&gt;encrypt-&gt;decode( $user-&gt;salt );&#x000A;        if ( $user-&gt;pass != sha1( $this-&gt;input-&gt;post( 'pass' ) . $salt ) ) {&#x000A;            $this-&gt;_set_error( 'INVALID_CREDENTIALS' );&#x000A;            return false;&#x000A;        }&#x000A;    &#x000A;        $this-&gt;mongo_db-&gt;remove( 'sessions', array( 'user_id' =&gt; $user-&gt;_id-&gt;__toString() ) );&#x000A;    &#x000A;        $session    = array(&#x000A;            'timestamp'     =&gt; now(),&#x000A;            'user_id'       =&gt; $user-&gt;_id-&gt;__toString(),&#x000A;            'persistent'    =&gt; $this-&gt;input-&gt;post( 'persistent' )&#x000A;        );&#x000A;    &#x000A;        if ( !$this-&gt;mongo_db-&gt;insert( 'sessions', $session ) ) {&#x000A;            $this-&gt;_set_error( 'ERROR_REGISTERING_SESSION' );&#x000A;            return false;&#x000A;        }&#x000A;    &#x000A;        $result                 = new stdClass();&#x000A;        $result-&gt;id             = $this-&gt;mongo_db-&gt;insert_id();&#x000A;        $result-&gt;user_id        = $user-&gt;_id-&gt;__toString();&#x000A;    &#x000A;        return $result;&#x000A;    }&#x000A;    </pre>
    <p>First of all, we check that there’s a user associated with the given email. Then we decode the user’s associated <code>salt</code> (which I’ll explain in the second part of this series when we cover user registration) and check that the given password matches the user’s stored password.</p>
    <p>We then remove any previous session associated with the user and create a new session object. If we were checking the session thoroughly, we would add things like the user_agent, ip_address, last_activity field and so on to this object. Finally, we send back to the client the session and user IDs for the new session.</p>
    <hr>
    <h2>Conclusion</h2>
    <p>This has been a rather long tutorial, we covered a lot of topics, and we have even more to cover yet. Hopefully by now you have a better understanding of RESTful or stateless services and how to create such a service with CodeIgniter, and possibly, you may have also picked up some new ideas that you can give to the framework’s core functionality.</p>
    <p>In the next part we will finish the back-end service and in parts three and four we’ll cover the BackboneJS client application. If you have any doubts/suggestions or anything to say, please do so in the comments section below.</p>
    </div>
]]>
</Body>
<Summary>In this series we’re going to build a web billboard application from scratch, we’re going to use CodeIgniter to handle the back-end service and BackboneJS for the web client. In the first two...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/nNf4xOXOtDs/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34698/guest@my.umbc.edu/eb1d1ffffe3d40dbef95b39d4065b156/api/pixel</TrackingUrl>
<Tag>codeigniter</Tag>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>tutorials</Tag>
<Tag>web-app-from-scratch</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>Mon, 26 Aug 2013 21:28:22 -0400</PostedAt>
<EditAt>Mon, 26 Aug 2013 21:28:22 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="123133" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123133">
<Title>Constantine N. Vaporis, History, presents paper International at the Congress of the Association for Latin-American Studies of Asia and Africa</Title>
<Body>
<![CDATA[
    <div class="html-content"><p>On August 14, Constantine N. Vaporis, History, presented an invited paper, <em>Performance, Display, and the Spectacular. The ‘Great Peace’ and Samurai Culture in Tokugawa Japan</em>, at the International Congress of the Association for Latin-American Studies of Asia and Africa in Buenos Aires, Argentina.</p></div>
]]>
</Body>
<Summary>On August 14, Constantine N. Vaporis, History, presented an invited paper, Performance, Display, and the Spectacular. The ‘Great Peace’ and Samurai Culture in Tokugawa Japan, at the International...</Summary>
<Website>https://umbc.edu/stories/constantine-n-vaporis-history-presents-paper-international-at-the-congress-of-the-association-for-latin-american-studies-of-asia-and-africa/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123133/guest@my.umbc.edu/3da86601143b7f32b7ad8d5f2db95670/api/pixel</TrackingUrl>
<Tag>cahss</Tag>
<Tag>policy-and-society</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 26 Aug 2013 21:13:29 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="34702" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34702">
<Title>N.S.A. Phone Data Collection Is Illegal, A.C.L.U. Says</Title>
<Body>
<![CDATA[
    <div class="html-content">The American Civil Liberties Union’s motion in a federal suit cited the warnings of George Orwell in arguing that the National Security Agency’s collection of Americans’ phone call data violated the Constitution.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F27%2Fus%2Fnsa-phone-data-collection-is-illegal-aclu-says.html%3Fpartner%3Drss%26emc%3Drss&amp;t=N.S.A.+Phone+Data+Collection+Is+Illegal%2C+A.C.L.U.+Says" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F27%2Fus%2Fnsa-phone-data-collection-is-illegal-aclu-says.html%3Fpartner%3Drss%26emc%3Drss&amp;t=N.S.A.+Phone+Data+Collection+Is+Illegal%2C+A.C.L.U.+Says" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F27%2Fus%2Fnsa-phone-data-collection-is-illegal-aclu-says.html%3Fpartner%3Drss%26emc%3Drss&amp;t=N.S.A.+Phone+Data+Collection+Is+Illegal%2C+A.C.L.U.+Says" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F27%2Fus%2Fnsa-phone-data-collection-is-illegal-aclu-says.html%3Fpartner%3Drss%26emc%3Drss&amp;t=N.S.A.+Phone+Data+Collection+Is+Illegal%2C+A.C.L.U.+Says" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F27%2Fus%2Fnsa-phone-data-collection-is-illegal-aclu-says.html%3Fpartner%3Drss%26emc%3Drss&amp;t=N.S.A.+Phone+Data+Collection+Is+Illegal%2C+A.C.L.U.+Says" 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 American Civil Liberties Union’s motion in a federal suit cited the warnings of George Orwell in arguing that the National Security Agency’s collection of Americans’ phone call data violated...</Summary>
<Website>http://www.nytimes.com/2013/08/27/us/nsa-phone-data-collection-is-illegal-aclu-says.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34702/guest@my.umbc.edu/4aeac2d641c28d68391e271584bdfa82/api/pixel</TrackingUrl>
<Tag>american-civil-liberties-union</Tag>
<Tag>constitution-us</Tag>
<Tag>justice-department</Tag>
<Tag>national-security-agency</Tag>
<Tag>new</Tag>
<Tag>pauley-william-h-iii</Tag>
<Tag>snowden-edward-j</Tag>
<Tag>suits-and-litigation-civil</Tag>
<Tag>surveillance-of-citizens-by-government</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>Mon, 26 Aug 2013 20:55:52 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="34699" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34699">
<Title>Evangelyze Communications Announces Software Development License Agreement</Title>
<Body>
<![CDATA[
    <div class="html-content"><p>Evangelyze Communications (EC) announces Software Development License Agreement for Microsoft Communications Enabled Business Processes (CEBP) via EC SmartSuite Products and CEBP Framework, enabling customers with line of business integrated communication and collaboration solutions.</p></div>
]]>
</Body>
<Summary>Evangelyze Communications (EC) announces Software Development License Agreement for Microsoft Communications Enabled Business Processes (CEBP) via EC SmartSuite Products and CEBP Framework,...</Summary>
<Website>http://www.htmlgoodies.com/daily_news/evangelyze-communications-announces-software-development-license-agreement.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34699/guest@my.umbc.edu/59b057b86e0b3839fc0270a46fab2dd6/api/pixel</TrackingUrl>
<Tag>html</Tag>
<Tag>htmlgoodies</Tag>
<Tag>learning</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>Mon, 26 Aug 2013 20:46:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="34697" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34697">
<Title>Bits Blog: Malicious Software Poses as Video From a Facebook Friend</Title>
<Body>
<![CDATA[
    <div class="html-content">Attackers are using built-in features in some Web browsers to install malicious software that can see elements like saved passwords for e-mail and social network accounts.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F08%2F26%2Fmalicious-software-poses-as-video-from-a-facebook-friend%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Malicious+Software+Poses+as+Video+From+a+Facebook+Friend" 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%2Fbits.blogs.nytimes.com%2F2013%2F08%2F26%2Fmalicious-software-poses-as-video-from-a-facebook-friend%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Malicious+Software+Poses+as+Video+From+a+Facebook+Friend" 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%2Fbits.blogs.nytimes.com%2F2013%2F08%2F26%2Fmalicious-software-poses-as-video-from-a-facebook-friend%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Malicious+Software+Poses+as+Video+From+a+Facebook+Friend" 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%2Fbits.blogs.nytimes.com%2F2013%2F08%2F26%2Fmalicious-software-poses-as-video-from-a-facebook-friend%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Malicious+Software+Poses+as+Video+From+a+Facebook+Friend" 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%2Fbits.blogs.nytimes.com%2F2013%2F08%2F26%2Fmalicious-software-poses-as-video-from-a-facebook-friend%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Malicious+Software+Poses+as+Video+From+a+Facebook+Friend" 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/174726250215/u/0/f/640387/c/34625/s/306db5e1/sc/4/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/174726250215/u/0/f/640387/c/34625/s/306db5e1/sc/4/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/174726250215/u/0/f/640387/c/34625/s/306db5e1/sc/4/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/174726250215/u/0/f/640387/c/34625/s/306db5e1/sc/4/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/174726250215/u/0/f/640387/c/34625/s/306db5e1/sc/4/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/174726250215/u/0/f/640387/c/34625/s/306db5e1/sc/4/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/174726250215/u/0/f/640387/c/34625/s/306db5e1/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/174726250215/u/0/f/640387/c/34625/s/306db5e1/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Attackers are using built-in features in some Web browsers to install malicious software that can see elements like saved passwords for e-mail and social network accounts.      </Summary>
<Website>http://bits.blogs.nytimes.com/2013/08/26/malicious-software-poses-as-video-from-a-facebook-friend/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34697/guest@my.umbc.edu/3d592b89c8513136d0f484412e8f4dcf/api/pixel</TrackingUrl>
<Tag>chrome-browser</Tag>
<Tag>computer-malware</Tag>
<Tag>computer-security</Tag>
<Tag>cyberattacks-and-hackers</Tag>
<Tag>facebook-inc</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>google-inc</Tag>
<Tag>google-inc-goog-nasdaq</Tag>
<Tag>mozilla-foundation</Tag>
<Tag>new</Tag>
<Tag>security</Tag>
<Tag>social</Tag>
<Tag>technology</Tag>
<Tag>web-browsers</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>Mon, 26 Aug 2013 20:44:43 -0400</PostedAt>
<EditAt>Tue, 27 Aug 2013 08:30:16 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="34700" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34700">
<Title>Sears, that&#8217;s right&#8230; Sears Will Hos A Hackathon to Attract New Software Developers</Title>
<Body>
<![CDATA[
    <div class="html-content"><p>Sears, the famous department store chain will be hosting a developer hackathon in San Francisco in an effort to grab fresh developers with experience in creating mobile, social and account management related apps.</p></div>
]]>
</Body>
<Summary>Sears, the famous department store chain will be hosting a developer hackathon in San Francisco in an effort to grab fresh developers with experience in creating mobile, social and account...</Summary>
<Website>http://www.htmlgoodies.com/daily_news/sears-thats-right-sears-will-hos-a-hackathon-to-attract-new-software-developers.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34700/guest@my.umbc.edu/985d831fd1b573f390ac957d3fc7b799/api/pixel</TrackingUrl>
<Tag>html</Tag>
<Tag>htmlgoodies</Tag>
<Tag>learning</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>Mon, 26 Aug 2013 20:36:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="34694" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34694">
<Title>Tuts+ &amp; Envato Are Coming to the UK</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=34332&amp;c=1988780874" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=34332&amp;c=1988780874" alt="" style="max-width: 100%; height: auto;"></a><p>We’re excited to let you know that we’re currently planning our first Tuts+ and Envato meetup in the UK! We’ll have a great venue, some exciting goodies to give away, and you’ll have the opportunity to meet various Envato staff (as well as fellow Tuts+ readers!). <em>If you’re interested in joining us, read on to find out how you can RSVP, and help us choose the meetup location.</em></p>
    <p></p>
    <hr>
    <h2>What’s Happening?</h2>
    <p>Although Envato has organized plenty of meetups to date (in places such as Melbourne, Kuala Lumpur, Chicago, and New York!), this will be our first official UK event. First and foremost, it’s a brilliant chance to meet lots of like-minded creative professionals and developers, as well as various members of the Tuts+ team. A few of the editors likely to be in attendance are Michael James Williams, Johnny Winter, Sharon Milne, Joel Bankhead, David Appleyard, Ian Yates, Neil Pearce, and one of our top authors — Martin Perhiniak.</p>
    <p>We’ll have a fantastic, funky venue, free food and drink, and lots of exciting goodies to give away to attendees. You’ll have the chance to talk to our team about what we’re doing at Tuts+ and Envato, as well as picking their brains on anything from web design and game development, to illustration and electronics!</p>
    <p>Just to give you a feel for what to expect, here’s a selection of photos from last year’s <a href="http://www.flickr.com/photos/we-are-envato/sets/72157630861485102/" rel="nofollow external" class="bo">meetup in New York</a>:</p>  <img src="http://cdn.tutsplus.com/ae.tutsplus.com/uploads/2013/08/london.jpg" alt="london" width="600" height="588" style="max-width: 100%; height: auto;"><br> <hr>
    <h2>When and Where?</h2>
    <p>We’ve fixed a date of Saturday 9th November. It’s far enough away to give you plenty of time to plan, and close enough to the holidays for you to also do a little Christmas shopping before the meetup in the evening! The meetup will be happening late afternoon/evening (although we’ll let you know all the final times closer to the date).</p>
    <p>We’re going to be holding it in either London, or Manchester — it’s up to you to decide! If you’re interested in attending, we’d be thrilled to meet you. <strong>Submit your RSVP below, and be sure to let us know where you’d like the meetup to be held.</strong> We’ll keep you updated as we get closer to the date.</p>
    <hr>
    <h2>RSVP to Join the Guest List!</h2>
    <p><br> <a href="http://www.formstack.com/forms/envato-ukmeetup" title="Online Form" rel="nofollow external" class="bo">Online Form – UK Meetup</a></p>
    <p>We’re incredibly excited to have the opportunity to meet lots of our wonderful readers, and we really hope you’ll be able to make it. Let’s bring Tuts+ and Envato to the UK!</p>
    </div>
]]>
</Body>
<Summary>We’re excited to let you know that we’re currently planning our first Tuts+ and Envato meetup in the UK! We’ll have a great venue, some exciting goodies to give away, and you’ll have the...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/rcKMBIQVuOY/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34694/guest@my.umbc.edu/c19f21a714adc12728957acc2faf114c/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>london</Tag>
<Tag>manchester</Tag>
<Tag>meetup</Tag>
<Tag>mysql</Tag>
<Tag>news</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>uk</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>Mon, 26 Aug 2013 19:00:34 -0400</PostedAt>
<EditAt>Mon, 26 Aug 2013 19:00:34 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="110049" important="false" status="posted" url="https://my3.my.umbc.edu/posts/110049">
<Title>Constantine N. Vaporis, History, presents paper International at the Congress of the Association for Latin-American Studies of Asia and Africa</Title>
<Body>
<![CDATA[
    <div class="html-content">On August 14, Constantine N. Vaporis, History, presented an invited paper, Performance, Display, and the Spectacular. The ‘Great Peace’ and Samurai Culture in Tokugawa Japan, at the International Congress of the Association for Latin-American Studies of Asia and Africa in Buenos Aires, Argentina.</div>
]]>
</Body>
<Summary>On August 14, Constantine N. Vaporis, History, presented an invited paper, Performance, Display, and the Spectacular. The ‘Great Peace’ and Samurai Culture in Tokugawa Japan, at the International...</Summary>
<Website>https://news.umbc.edu/constantine-n-vaporis-history-presents-paper-international-at-the-congress-of-the-association-for-latin-american-studies-of-asia-and-africa/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/110049/guest@my.umbc.edu/5a38a5837b94bc503b11d72472f80b99/api/pixel</TrackingUrl>
<Tag>cahss</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>Mon, 26 Aug 2013 17:13:29 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="34691" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34691">
<Title>Opening Day Pictures 2013 Coming Soon!</Title>
<Body>
<![CDATA[
    <div class="html-content">Looking for your pictures from opening day?  They will be available shortly. We will  send an email to the Family Connection Listserv when they are available. </div>
]]>
</Body>
<Summary>Looking for your pictures from opening day?  They will be available shortly. We will  send an email to the Family Connection Listserv when they are available. </Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34691/guest@my.umbc.edu/1e50c107daaba536a28fff95102203cd/api/pixel</TrackingUrl>
<Group token="retired-420">UMBC Family Connection </Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-420</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/xsmall.png?1340914772</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/original.png?1340914772</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/xxlarge.png?1340914772</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/xlarge.png?1340914772</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/large.png?1340914772</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/medium.png?1340914772</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/small.png?1340914772</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/xsmall.png?1340914772</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/xxsmall.png?1340914772</AvatarUrl>
<Sponsor>UMBC Family Connection</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/034/691/42c089a7e6899fe52a40bbbf7148e4e2/xxlarge.jpg?1377549980</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/034/691/42c089a7e6899fe52a40bbbf7148e4e2/xlarge.jpg?1377549980</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/034/691/42c089a7e6899fe52a40bbbf7148e4e2/large.jpg?1377549980</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/034/691/42c089a7e6899fe52a40bbbf7148e4e2/medium.jpg?1377549980</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/034/691/42c089a7e6899fe52a40bbbf7148e4e2/small.jpg?1377549980</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/034/691/42c089a7e6899fe52a40bbbf7148e4e2/xsmall.jpg?1377549980</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/034/691/42c089a7e6899fe52a40bbbf7148e4e2/xxsmall.jpg?1377549980</ThumbnailUrl>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 26 Aug 2013 16:47:03 -0400</PostedAt>
</NewsItem>

</News>
