<?xml version="1.0"?>
<News hasArchived="true" page="8991" pageCount="10789" pageSize="10" timestamp="Thu, 03 Sep 2026 15:21:11 -0400" url="https://my3.my.umbc.edu/posts.xml?mode=activity&amp;page=8991&amp;range=30">
<NewsItem contentIssues="true" id="26811" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26811">
<Title>What&#8217;s Trending With&#8230;Baratunde Thurston? The Comedian/Digital Savant Talks Business</Title>
<Body>
<![CDATA[
    <div class="html-content">YoungEntrepreneur.com columnist and 'What's Trending' host Shira Lazar sat down with author Baratunde Thurston to chat about his comedy/technology startup Cultivated Wit.</div>
]]>
</Body>
<Summary>YoungEntrepreneur.com columnist and 'What's Trending' host Shira Lazar sat down with author Baratunde Thurston to chat about his comedy/technology startup Cultivated Wit.</Summary>
<Website>http://feedproxy.google.com/~r/YoungentrepreneurcomBlog/~3/L7p1KTmlYtE/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26811/guest@my.umbc.edu/1521b92b73a03b62a8285b431d37d4de/api/pixel</TrackingUrl>
<Tag>leadership</Tag>
<Tag>startup-business-ideas</Tag>
<Tag>sxsw-2013</Tag>
<Tag>tech-leaders</Tag>
<Tag>technology-news</Tag>
<Tag>video</Tag>
<Group token="entrepreneurship">Alex. Brown Center for Entrepreneurship</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/entrepreneurship</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/original.jpg?1771000363</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/large.png?1771000363</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/medium.png?1771000363</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/small.png?1771000363</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxsmall.png?1771000363</AvatarUrl>
<Sponsor>The Alex. Brown Center for Entrepreneurship</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 27 Mar 2013 15:00:12 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="26814" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26814">
<Title>Round Table #1: Should Exceptions Ever be Used for Flow Control?</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=30947&amp;c=1045412941" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=30947&amp;c=1045412941" alt="" style="max-width: 100%; height: auto;"></a><p> I’m pleased to release our first ever round table, where we place a group of developers in a locked room (not really), and ask them to debate one another on a single topic. In this first entry, we discuss exceptions and flow control.</p>
    <p></p>
    <strong>Round Table?</strong> Have you ever gone out to dinner with some developer friends, and found yourself engaging in long programming-specific discussions/debates? Well, now, we’re bringing that format to Nettuts+. A group of friends casually debating one another on a given topic.<br><hr>
    <h2>Should Exceptions Ever be Used for Flow Control?</h2>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> From my point of view, exceptions are situations in your code that you should never reach. By their name, they suggest exceptional, unexpected and uncontrollable situations. Throwing an exception should stop the execution of your code all together.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> There are three broad categories of “abnormal” condition in software, as defined by Bertrand Meyer: Failure, Exception and Error.<p>Failure is the inability of a software element to perform its function. Exception is an abnormal condition in software. Errors are due to unmet expectation/specification.</p>
    <p>Errors cause Failures and are propagated, via Exceptions.</p>
    </div>
    </div>
    <hr>
    <div> <img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/jonathan-avatar.gif" alt="Jonathan Cuttrell" style="max-width: 100%; height: auto;"><div> I like the idea of explaining what we consider to be exceptions. My idea of an exception is a named error class that can be handled in a try-catch statement.<p>So:</p>
    <pre>try {&#x000A;      something();&#x000A;    } catch(SomeErrorType e){&#x000A;      return respondTo(e);&#x000A;    }&#x000A;    </pre>
    <p>Catching exceptions, as Csaba mentioned, is engineered to be fringe, unexpected cases. These are often a result of malformed input or failed data transfer.</p>
    <p>Control flow structures in most languages are optimized to handle known cases, whether that’s via an if/else stack or a switch/case. Error throwing, in general, wouldn’t be as optimized as control flow in most programming languages.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> So, essentially, exceptions are an “abstraction” purely to model the abnormality. There is a natural flow defined by most language runtimes, starting with the close to metal “C” language, or something as dynamic as “JavaScript” or “Ruby,” which is to exit the runtime altogether, unless handled, via an “exception handler.”</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> Nice scientific definition Pavan. Jonathan, I agree. The part of the code / program / module that throws the exception should stop its execution.<p>The client of that code can use a try-catch to prevent the automatic propagation of the exception (as most languages will propagate it). However, I believe that try-catch should be used only for logic that is required to handle these unexpected situations. For example, a broken data transfer can be retried when the exception occurs. Or, some exceptions do not affect the outcome (such as when you want to create a directory that already exists). In this case, it can simply be suppressed.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> So what’s the use case we are talking about where it is used for control flow?</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/JCutrell" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/jonathan-avatar.gif" alt="Jonathan Cutrell" style="max-width: 100%; height: auto;"></a><div> Can someone who <em>is</em> for exceptions as control flow provide us with an example of code that conceptually is an acceptable scenario for your opinion?</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/akuzemchak" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/aaron-avatar.gif" alt="Aaron Kuzemchak" style="max-width: 100%; height: auto;"></a><div> <a href="http://docs.cartalyst.com/sentry-2/authentication" rel="nofollow external" class="bo">Here’s an example</a> that kind of spawned a flame war on Reddit, which lead to this discussion.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> I think that the use there seems perfectly valid. Is the argument against it that it’s not as “optimized.” Because it is much more verbose when it comes to reading your code, and you don’t have to deal with numbers or constants in a switch statement.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> There is an underlying assumption in the code there: the calls to the service are synchronous. In the real world, I doubt if it is that straightforward.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/akuzemchak" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/aaron-avatar.gif" alt="Aaron Kuzemchak" style="max-width: 100%; height: auto;"></a><div> Personally, I envision exceptions more as “objections.” While they are typically used to represent errors, I think that they can be utilized to raise a flag against any kind of undesired result in your application and be handled specifically by type (if desired). As a simple example, attempting to log a user into an application could be handled on a more granular level than “<em>was this attempt successful?</em>” If not, why not? Perhaps the username didn’t exist, or the password was incorrect. Maybe their account is banned. Throwing and catching exceptions in these scenarios can give a developer a lot more control over how they handle the result.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> Also worth noting is that exceptions are caught naturally in synchronous code and require “special propagation” in async code.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> That is my opinion as-well. Exceptions do not have to be relative to the app, like it seems people were suggesting earlier. The app shouldn’t end. It’s an error related to the specific class.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> Hmm. That code is actually quite okay. Other than not being optimal and being quite lengthy, I see no problem with it. Probably, I would have created only a single exception and would have echoed the message from the exception ,rather than all those catches and hard-coded strings.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> That’s assuming that you just want to echo the error. But to handle each event separately, exceptions are a much cleaner route.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> Going back to the original topic for this discussion, should exceptions be used for handling “control flow”?</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> And one more thing here: exceptions like this should be caught at some point and transformed into a friendly message to the user. You don’t want you users to see …. PHP stack traces :)</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/akuzemchak" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/aaron-avatar.gif" alt="Aaron Kuzemchak" style="max-width: 100%; height: auto;"></a><div> Csaba, agreed. Although, in a webapp, I would want to have a global exception handler to show some styled “error” page as a fallback. And, in PHP, you would have <code>display_errors</code> turned off in production.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> Since we seem to have a common ground on when an exception makes sense (which is to notify bad situations), for normal control flow, it is not the first goto solution. It is easier to map the happy path with simple control constructs (if/else, while, switch/case, etc).</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> Pavan, I think the biggest question right now is what one would understand by “flow control.” The example given above simply has a bunch of echoes.<p>Aaron, exactly. What you’ve said does not contradict what I said about catching errors. Thanks for pointing out the more detailed solution.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> That’s why I think we need an example of when you think exceptions are wrong. It would be hilarious if we all agree, and it’s an issue of definition.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/JCutrell" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/jonathan-avatar.gif" alt="Jonathan Cutrell" style="max-width: 100%; height: auto;"></a><div> I think when you’re talking about control flow, that the “expected” behavior for a login is a correct email and correct password. The fringe case is that a user doesn’t enter these properly, or their account has been suspended, or some unknown server error occurs.<p>If the authentication fails, it fails because of fringe cases – bad input, or some problem outside of the actual authentication function. I think, in these instances, we’re talking more about a definition of control flow and fringe case than whether or not exceptions are a good way to handle the process of logging in.</p>
    <p>This is also an abstraction of the authentication function itself.</p>
    <p>An acceptable alternative might be to return a login object that you could run an if/else control over.</p>
    <pre>$attempt = Sentry::authenticate($credentials);&#x000A;    if ($attempt-&gt;status == "success"){&#x000A;       $user = $attempt-&gt;user;&#x000A;    } else if ($attempt-&gt;status == "no_password") {&#x000A;     // etc&#x000A;    }&#x000A;    </pre>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> I think the auth example is a great one and can be modeled with and without exceptions. I vote for not using exceptions here – especially for more complicated (say 2 step) and distributed (oauth) authentication.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/JCutrell" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/jonathan-avatar.gif" alt="Jonathan Cutrell" style="max-width: 100%; height: auto;"></a><div> Really, it’s not about whether or not exceptions are “wrong” in a given scenario. It’s about what is best for the job.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> But Jonathan, surely, if you had a big list of cases like in the auth example, having a registered error handler would be quicker and more verbose then sifting through each option?</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> And here comes the question, what is considered an exception, and what is just another situation that you have to deal with.<p>For example, in the authentication form, if the user name must be an email address and the user types in something else, that could be an exception.</p>
    <p>But if the user fills in the form correctly and just the user/pass combination is not a match, that is more likely another case to treat, and not an exception.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/JCutrell" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/jonathan-avatar.gif" alt="Jonathan Cutrell" style="max-width: 100%; height: auto;"></a><div> Then perhaps the object that is returned carries a message and a status.<pre>if ($attempt-&gt;status == "success"){&#x000A;       $user = $attempt-&gt;user;&#x000A;    } else if ($attempt-&gt;status == "failure"){&#x000A;       echo $attempt-&gt;message;&#x000A;    } else {&#x000A;       echo "Something unexpected happened. Please try again."&#x000A;    </pre>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> Jonathan, or you could throw the error in the last else!</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> If we go async on the code, you will see a different style of propagating errors – especially, via callbacks, which will have all the details of the error.<p> NodeJS has made a name for itself in this regard, and, for that matter, any “event-driven” runtime, like EventMachine or Twisted.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> So you are for it, Pavan?</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> Pavan, I am not that familiar with asynchronous code. Can you explain how exceptions work there in more detail?</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> So I was trying to point out that we are talking about control flow in general, and not just error conditions. I think exceptions are not suitable for general control flow.<p>Csaba, here is a classic async code example:</p>
    <p>Let’s say that you are trying to read a file: <code>/usr/local/app.log</code>. The way you do it in Node is:</p>
    <pre>var fs = require('fs'); // load the filesystem module&#x000A;    &#x000A;    fs.readFile('/usr/local/app.log', function(err, doc){&#x000A;    &#x000A;    if (err) { console.log('failed to read'); return; }&#x000A;    &#x000A;    // process file&#x000A;    });&#x000A;    </pre>
    <p>Because of the callback, you don’t put try/catch around the call. Instead, you use a callback style to handle the result. I hope that makes it clear. In general, any operation that cannot be performed synchronously will have a callback style API to handle the results.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> I still don’t think anyone has mentioned an example where exceptions are used incorrectly. I don’t fully understand the counter example.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/akuzemchak" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/aaron-avatar.gif" alt="Aaron Kuzemchak" style="max-width: 100%; height: auto;"></a><div> Yes, I would like to see an example of exceptions being used for control flow and the explanations as to where the bad points are… as well as how it would be rewritten. That should give us all some common ground to work with.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/JCutrell" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/jonathan-avatar.gif" alt="Jonathan Cutrell" style="max-width: 100%; height: auto;"></a><div> Pavan, very true. I think, conceptually, the idea is the same, however, when we talk about things like jQuery’s AJAX implementation, in which you can define <code>.error()</code>, <code>.success()</code>, etc. This is an abstraction from what’s really going on (checking the XHR object).<pre>$.get("<a href="http://example.com/something/remote.json%22).success(function(data)">http://example.com/something/remote.json").success(function(data)</a>{&#x000A;       // do something with data&#x000A;    }).error(function(res){&#x000A;      // do something different; res contains information about the error&#x000A;    });&#x000A;    </pre>
    <p>While this isn’t either exception or if/else, it still solves the problem: handle both successful and non-successful AJAX requests. However, the jQuery implementation itself is not try/catch, because it is asynchronous.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> Going back to our auth example, if we were to do it async, where the auth service is remotely located and talks to several other backend services to perform multi-step authentication, then an exception style API will not work. An alternative approach is given below:<pre>var auth = require('authenticator');&#x000A;    var eventbus = EventBus.global();&#x000A;    &#x000A;    auth.login("pavan", "pwd", function(err, result) {&#x000A;       if (err) { &#x000A;          var details = {&#x000A;             username: "pavan",&#x000A;             error: err&#x000A;          };&#x000A;    &#x000A;          eventbus.put("Authentication failed", details); &#x000A;    &#x000A;          return; &#x000A;       }&#x000A;    &#x000A;       eventbus.put("Authentication successful!!");&#x000A;    });&#x000A;    </pre>
    <p>Note that we are using the concept of a system-wide eventbus to propagate messages. In this case, we will have a success or failure message with the appropriate payload. This kind of message passing is common in distributed systems and is a great way to have a control flow that spreads across machines.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/JCutrell" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/jonathan-avatar.gif" alt="Jonathan Cutrell" style="max-width: 100%; height: auto;"></a><div> As an add-on to that, this is also pertinent, not only to cross-machine, but also to multi-threaded environments, which is in some ways conceptually similar to async. (Correct me if I’m wrong on that, multi-thread gurus.)</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> Isn’t that code just passing the buck? Somewhere, there needs to be some code that performs an unsafe operation and needs to handle the exception and set the error.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> Gabriel, that’s exactly what’s happening and is an example of control flow across different software boundaries.<p>Other more generally understood cross-boundary control flow is none other than the venerable “Email” and “SMS” messages. It may not be obvious at first glance, but a little introspection and you will see how it is control flow of a different kind, and not done via exceptions.</p>
    <p>You can disagree or raise hell in an email, but the receiver is told in a message that may arrive much later than the time it was sent (and may be too late).</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> Correct me if I’m wrong, but my understanding is that you guys are saying the following is bad:<pre>try&#x000A;    {&#x000A;        $conn = connectToDatabase($credentials);&#x000A;    }&#x000A;    catch (NoDbAtThatUriException $e)&#x000A;    {&#x000A;        //handle it&#x000A;    }&#x000A;    catch (LoginException $e)&#x000A;    {&#x000A;        //handle it&#x000A;    }&#x000A;    </pre>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> Gabriel, if the call to <code>connectToDatabase</code> is synchronous, exceptions will work. Otherwise, you need callbacks. Also, there could be several forms of failures (different classes of Exceptions). Do you care what kind of failure it is – especially if you are logging it somewhere?</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/JCutrell" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/jonathan-avatar.gif" alt="Jonathan Cutrell" style="max-width: 100%; height: auto;"></a><div> Also, what about uncaught exceptions in that example? (Not sure what they would be at the moment, but shouldn’t there be a way to catch everything?) In an if/else block, the final else handles all remaining cases.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> Also, it’s more useful to understand how you propagate errors in your software stack. I assume a <code>LoginException</code> has to be notified to the user?</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> Potentially, they can all follow a protocol and have a function, like <code>$e-&gt;handleIt()</code>.<p>I happened to have picked a bad example, because, in these situations, you basically need to get new data from the user. But, conceptually, you can have full logic, like:</p>
    <pre>catch (NoDbAtThatUriException $e)&#x000A;    {&#x000A;        $credentials-&gt;uri .= ":3065"; //add port&#x000A;        //recall original function here&#x000A;    }&#x000A;    </pre>
    <p>Obviously, this isn’t the best example and you would probably want to determine if a port is already there, instead of infinitely appending them. But what I’m saying is to use exceptions for actual code, besides simply “alerting” the user.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/akuzemchak" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/aaron-avatar.gif" alt="Aaron Kuzemchak" style="max-width: 100%; height: auto;"></a><div> In PHP, you can either use <code>set_exception_handler()</code> to handle any uncaught exceptions. You can also have a catch <code>(Exception $e)</code> block as the last catch statement in the control flow, since all exceptions in PHP extend the native <code>Exception</code> class.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> I think one of the bonuses to using exceptions instead of an <code>if</code> statement is you will get a detailed error if you forget to accommodate one, whereas with an <code>if</code> statement, it would merely default to the <code>else</code>.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> Gabriel, I think that, in your example, it is a sensible solution to allow using logic when you catch the connection problem. Maybe you want to retry the connection because your network is unreliable. But if the user can not authenticate over an already existing connection, then something is very wrong. You don’t want to retry on that one.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/akuzemchak" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/aaron-avatar.gif" alt="Aaron Kuzemchak" style="max-width: 100%; height: auto;"></a><div> Still not a great example, but here’s a demonstration of handling different scenarios:<pre>try {&#x000A;        $user = $auth-&gt;login($credentials);&#x000A;    } catch (InvalidUsernameException $e) {&#x000A;        // Redirect to login page with error message&#x000A;        // Could even use $e-&gt;getMessage()&#x000A;    } catch (InvalidPasswordException $e) {&#x000A;        // If this is the 5th attempt, redirect to reset password page&#x000A;        // Otherwise, redirect to login page with error message&#x000A;    } catch (AccountLockedException $e) {&#x000A;        // Redirect to special error screen explaining why they aren't allowed&#x000A;    } catch (Exception $e) {&#x000A;        // Fallback for everything else&#x000A;        // Log that we had an unexpected exception&#x000A;        // Redirect to error page or something&#x000A;    }&#x000A;    </pre>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> But with most runtimes, exceptions are seen with special lenses and there is some loss of “control” because the runtime directs the exception in a certain order from the nearest “exception handler” to the top-most exception handler – and, ultimately, to the default runtime’s uncaught exception handler. You lose the contextual information as you go further away and you have to think hard about who should be handling it.<p>Eventually, even if you do decide where it should be handled, debugging is still a problem. If you revisit the code after a few months, you will have little clue what is going on.</p>
    <p>The point that I am trying to make is, with control flows of any kind, you are building an implicit state machine and you should strive hard to keep all possible states of control localized in your code. With exceptions, that can be difficult.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> On the other hand, as Gabriel mentioned, exceptions are a great way to communicate problems in detail. If you decide to not use them at all, and just use <code>return</code> in your functions to communicate both good and bad scenarios, you may and up with some very unpredictable functions. This is mostly a problem with dynamically-typed languages like PHP, where even the some built-in functions have this problem. For some reason, the people who made them decided that, for example, a function returns a string or an array on success, and <code>false</code> or <code>-1</code> on failure.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/akuzemchak" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/aaron-avatar.gif" alt="Aaron Kuzemchak" style="max-width: 100%; height: auto;"></a><div> Pavan, PHP allows for nested exceptions; so you could throw another and reference the previous exception, allowing for a more granular look in the trace of what happened.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> Aaron, about your example: I would consider the wrong user and password to be simple paths my application may go down, not an exception. All other login-specific exceptions, like account locked and account expired, may be threatened by the same handling functions.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> Csaba, but why would you nest control statements in exceptions? While your at it, would it be neater to simply handle each one separately (unless, of course, they have the same outcome)?</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> I think I was little unclear about exception handling in my earlier post. The point I was attempting to make was that exception handlers spread in multiple layers of your software stack. In this case, an exception in your DB layer, which ultimately needs to be propagated to the user in the form of a “failed to login/connect” message.<p>There has to be a couple exception handlers before it reaches the user, starting from your DB layer to your web layer, and finally rendering it on the client. If you notice the control flow, which is currently spread across many layers, it can be difficult to handle smoothly. What’s been your experience in this regard?</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> I would definitely not allow exceptions to be taken out of a class. That is where the status variable can come in handy. That’s what I was referring to earlier, when I mentioned the whole “<em>passing the buck</em>” thing. I agree that, at that point, it is important to use control statements and status variables. But, internally, Exceptions are fine for code flow.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> Gabriel, I wanted to point out that I would throw exceptions only when there is something exceptional happening. The user failing to correctly fill in his/her username and password is not an exception in my eyes. It’s simply another situation that my program has to deal with.<p>As for propagating exceptions between layers. In the project I work on at my job, most exceptions thrown are automatically propagated, and caught very close to the UI, at which point a message is presented to the user.</p>
    <p>In other cases, such as creating a directory that already exists, the exception is simply caught by the client code, and discarded with something along the lines of:</p>
    <pre>try {&#x000A;      $filesystemHandler-&gt;createDirectory('/tmp/dirname');&#x000A;    } catch (DirectoryExistsException $e) {&#x000A;      return true;&#x000A;    }&#x000A;    </pre>
    <p>Of course, other exceptions, like <code>NoPermissionToCreateDirectory</code> will be propagated. I think this is a good example of controlling flow based on an exception.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> The only control flow that we have seen so far is a failure case. Would exceptions still be used for normal control flow? For example, a batch process that is applying some transformation on an image. There can be multiple transforms in a pipeline for an image. I begin with 100 images, and 100 transformed images come out after the batch process. How might you model this program?</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> Pavan, where would you put a control statement? Are you talking image in -&gt; process -&gt; image out?</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> The transformation on an image can be one of, say, ten different types. Each image has a  specification about the series of transforms that should be performed, and in what order. The image also has a path pointing to the file. The “process” block takes in one image at a time and applies these transforms in order. At the end, the transformed image is collected in some output location.<p>The user needs to be notified about the progress of the batch process, and eventually alerted when the process is complete. There could be failures, like invalid file, invalid transform, not enough disk space to store the file, etc.</p>
    <p>Do you see a control flow here, more like a factory assembly line? How will this be modeled with exceptions, and with regular control constructs?</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> In a simplified way, not with all the details you specified, here is my first take on the image processing problem:<pre>class ImageTransformer {&#x000A;    &#x000A;       private $images = [];&#x000A;       private $transformer;&#x000A;       private $failedTransforms = [];&#x000A;    &#x000A;       function __construct($images) {&#x000A;          $this-&gt;images = $images;&#x000A;          $this-&gt;transformer = new TransformOneImage();&#x000A;       }&#x000A;    &#x000A;       function transformAll() {&#x000A;          foreach ($this-&gt;images as $image) {&#x000A;             try {&#x000A;                $this-&gt;transformer-&gt;transform($image);&#x000A;             } catch (CanNotTranformImageException $e) {&#x000A;                $this-&gt;failedTransforms[] = $e-&gt;getMessage();&#x000A;             }&#x000A;          }&#x000A;    &#x000A;          if (!emptyArray($this-&gt;failedTransforms)) {&#x000A;             // code to notify user here&#x000A;             // and finally&#x000A;             return false;&#x000A;          }&#x000A;          return true;&#x000A;       }&#x000A;    &#x000A;    }&#x000A;    &#x000A;    class TransformOneImage {&#x000A;    &#x000A;       function transform($image) {&#x000A;          $transformedImage = // do image processing here&#x000A;    &#x000A;          if (!$transformedImage) {&#x000A;             throw new CanNotTranformImageException($image);&#x000A;          }&#x000A;    &#x000A;          return $tranformedImage;&#x000A;       }&#x000A;    &#x000A;    }&#x000A;    </pre>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> This is mostly pseudo code, but I would <a href="https://gist.github.com/gmanricks/5209296" rel="nofollow external" class="bo">call this a valid programming style</a>. It demonstrates using exceptions for error reporting, as well as code flow and propagation.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/JCutrell" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/jonathan-avatar.gif" alt="Jonathan Cutrell" style="max-width: 100%; height: auto;"></a><div> That’s pretty interesting, Gabriel. I think one danger is the looping retry without any input from the user, but I’m assuming that’s just an example more than a real practice.<p>The real question here is really about what kinds of cases are considered exceptions. We could easily rewrite this to localize the errors, which would reduce the time needed to identify error source. Of course, with this example, it wouldn’t be too difficult to identify a source.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> Jonathan, after sleeping on it, I realized that I could further localize it by moving the loading of the image data into the image class, itself. This would clean up the double <code>try</code> statement, and keep in line with the transformations.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/ben_corlett" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/ben-avatar.gif" alt="Ben Corlett" style="max-width: 100%; height: auto;"></a><div> Being one of the main authors for Sentry I thought I’d throw my two cents in about why we did what we did in Sentry and my thoughts on Exceptions in control flow.<p>When authenticating a user, there essentially two main ways we could have tackled it:</p>
    <ol>
    <li>try/catch</li>
    <li>if/else</li>
    </ol>
    <p>Let me explain the ways that we could have tackled if/else:</p>
    <pre>if (Sentry::authenticate($args))&#x000A;    {&#x000A;        // Great, go ahead&#x000A;    }&#x000A;    else&#x000A;    {&#x000A;        // Right, something went wrong, but what?&#x000A;    }&#x000A;    </pre>
    <p>But, what happens if we want to find out a little more information than a simple “<em>Nope, you’re not allowed</em>“? Getting an object back is a great approach:</p>
    <pre>$response = Sentry::authenticate($args);&#x000A;    &#x000A;    if ($response-&gt;hasError())&#x000A;    {&#x000A;        switch ($response-&gt;getError())&#x000A;        {&#x000A;            case 'login_required':&#x000A;                $message = 'You didn\'t enter any login details.';&#x000A;                break;&#x000A;            case 'password_required':&#x000A;                $message = 'You didn\'t enter a password.';&#x000A;                break;&#x000A;            case 'user_not_found':&#x000A;                $message = 'No user was found with those credentials.';&#x000A;                break;&#x000A;    &#x000A;            // And so on...&#x000A;        }&#x000A;    &#x000A;        // Let's pretend we're working in L4&#x000A;        return Redirect::route('login')-&gt;withErrors([$message]);&#x000A;    }&#x000A;    else&#x000A;    {&#x000A;        return Redirect::route('profile');&#x000A;    }&#x000A;    </pre>
    <p>This has some advantages, primarily due to the switch statement:</p>
    <pre>if ($response-&gt;hasError())&#x000A;    {&#x000A;        switch ($response-&gt;getError())&#x000A;        {&#x000A;            // Consolidate errors&#x000A;            case 'login_required':&#x000A;            case 'password_required':&#x000A;            case 'user_not_found':&#x000A;                $message = 'No user was found with those credentials.';&#x000A;                break;&#x000A;    &#x000A;            // And so on...&#x000A;        }&#x000A;    &#x000A;        return Redirect::route('login')-&gt;withErrors([$message]);&#x000A;    }&#x000A;    else&#x000A;    {&#x000A;        return Redirect::route('profile');&#x000A;    }&#x000A;    </pre>
    <p>However, exceptions give a lot more control because you can let them be handled at any level within your application. Exceptions can also extend each other, while all extend the base <code>Exception</code> class (obviously talking PHP here).</p>
    <p>A downside to the Exceptions used (<a href="http://docs.cartalyst.com/sentry-2/authentication" rel="nofollow external" class="bo">particularly with Sentry</a>) is the verbosity of them. This is because we have separated out the different components within Sentry (groups / users / throttling) so that you can take the components you want and build a totally kickass auth system. So, everything that belongs to the ‘users’ component of Sentry sits in the <code>Cartalyst\Sentry\Users</code> namespace. A dead-simple way to decrease verbosity is either through the <code>use</code> keyword: <code>use Cartalyst\Sentry\Users\LoginRequiredException;</code>. Or, of course, you can go ahead and add a <code>class_alias()</code> for global aliasing of the class. All of the sudden, we bring the verbosity down to (and with some practical examples):</p>
    <pre>try&#x000A;    {&#x000A;        // Set login credentials&#x000A;        $credentials = array(&#x000A;            'email'    =&gt; '<a href="mailto:john.doe@example.com">john.doe@example.com</a>',&#x000A;            'password' =&gt; 'test',&#x000A;        );&#x000A;    &#x000A;        // Try to authenticate the user&#x000A;        $user = Sentry::authenticate($credentials);&#x000A;    }&#x000A;    catch (LoginRequiredException $e)&#x000A;    {&#x000A;        // Or a "goto", take your pick&#x000A;        return $this-&gt;userFail();&#x000A;    }&#x000A;    catch (PasswordRequiredException $e)&#x000A;    {&#x000A;        return $this-&gt;userFail();&#x000A;    }&#x000A;    catch (UserNotFoundException $e)&#x000A;    {&#x000A;        return $this-&gt;userFail();&#x000A;    }&#x000A;    catch (UserNotActivatedException $e)&#x000A;    {&#x000A;        // Take to a page where the user can resend their activation email&#x000A;        return Redirect::to('users/activate');&#x000A;    }&#x000A;    catch (UserSuspendedException $e)&#x000A;    {&#x000A;        return Redirect::to('naughty');&#x000A;    }&#x000A;    catch (UserBannedException $e)&#x000A;    {&#x000A;        return Redirect::to('naughty');&#x000A;    }&#x000A;    catch (Exception $e)&#x000A;    {&#x000A;        // Show a 500 page or something?&#x000A;    }&#x000A;    &#x000A;    return Redirect::route('profile');&#x000A;    </pre>
    <p>Verbosity is one downside to try/catch, but it can be decreased through the use of <code>use</code> (bad wording there, right?) and class aliases.</p>
    <p>Let’s consider the positives:</p>
    <ul>
    <li> Logic can be handled at any level of the app or through a custom registered handler (at least in PHP).</li>
    <li> try/catch are “low-level”. I mean this in the sense that they don’t really change. In PHP, there is always $e-&gt;getMessage() and $e-&gt;getCode() (due to inheritence from “Exception”). If I return an object to (such as $response-&gt;hasError()), the developer needs to know the exposed API for that object. Also, the object may change in the future. try/catch is a syntax which I don’t see changing. It’s intuitive.</li>
    <li> The only real alternative to having multiple catches (with a catch-all) is switch. But the verbosity of a switch statemtn is much the same as try/catch.</li>
    <li> Mixing true/false and try/catch in the same statement is a recipe for confusion. As @philsturgeon said so well “With a mailer for example, a LOT of things can go wrong in the sending of an email, so you want to throw exceptions if the email fails to contact the SMTP server, if it fails to include a from address, if it cannot find the sendmail install, whatever. What if it doesnt have a valid email address? Is that an exception, or should it return false and make you look up an error code? Why half-and-half it?”</li>
    <li> In PHP, there’s no such (real) thing as asynchronous. Before you all jump on my back about spawning processes and all that jank, PHP doesn’t really support it. I don’t see how using a callback can really improve the application (reminder: I’m talking PHP) or the user experience, as you can achieve the same “progress” feedback (through an app polling your script) throughout the process of whatever happens in the “try” block. 10 points for the worst explanation there, but I think the point still comes across. You can do everything the same through a try/catch as you can using a callback in a single-thread language.</li>
    </ul>
    <p>I think, at the end of the day, it comes down to different use-cases. Some may argue that it’s the same as “tabs vs spaces,” but I don’t believe it is. I think there are scenarios when an if/else is appropriate, but, if there is more than one possible non-successful outcome, I believe that a try/catch is usually the best approach.</p>
    <p>Here’s two more examples that we could discuss:</p>
    <pre>function create_user($name)&#x000A;    {&#x000A;        if (strlen($name) === 0) return false;&#x000A;    &#x000A;        if (user_exists($name)) return false;&#x000A;    &#x000A;        // This believe it or not returns a user :P&#x000A;        return super_magic_create_method($name);&#x000A;    }&#x000A;    &#x000A;    // EXAMPLE ONLY, DON'T SHOOT ME&#x000A;    if ($user = create_user($_POST['name']))&#x000A;    {&#x000A;        // Hooray&#x000A;    }&#x000A;    else&#x000A;    {&#x000A;        // What went wrong?!&#x000A;    }&#x000A;    &#x000A;    function create_user($name)&#x000A;    {&#x000A;        if (strlen($name) === 0) throw new InvalidArgumentException("You have not provided a valid name.");&#x000A;    &#x000A;        if (user_exists($name)) throw new RuntimeException("User with name [$name] exists.");&#x000A;    &#x000A;        // This believe it or not returns a user :P&#x000A;        return super_magic_create_method($name);&#x000A;    }&#x000A;    &#x000A;    try&#x000A;    {&#x000A;        $user = create_user($_POST['name']);&#x000A;    }&#x000A;    catch (InvalidArgumentException $e)&#x000A;    {&#x000A;        // Tell the user that some sort of validation failed&#x000A;    }&#x000A;    // Yep, catch any exception&#x000A;    catch (Exception $e)&#x000A;    {&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>And, for another example, in Laravel 4, there is a validation class. It works like so:</p>
    <pre>$rules = ['name' =&gt; 'required', 'email' =&gt; 'required|email'];&#x000A;    $validator = Validator::make(Input::get(), $rules);&#x000A;    &#x000A;    if ($validator-&gt;passes())&#x000A;    {&#x000A;        // Yay&#x000A;    }&#x000A;    else&#x000A;    {&#x000A;        foreach ($validator-&gt;errors() as $error)&#x000A;        {&#x000A;    &#x000A;        }&#x000A;    }&#x000A;    </pre>
    <p>What if it worked like this?</p>
    <pre>try&#x000A;    {&#x000A;        $rules = ['name' =&gt; 'required', 'email' =&gt; 'required|email'];&#x000A;        $validator = Validator::make(Input::get(), $rules);&#x000A;        $validator-&gt;run();&#x000A;    }&#x000A;    catch (ValidationFailedException $e)&#x000A;    {&#x000A;        foreach ($e-&gt;getErrors() as $error)&#x000A;        {&#x000A;    &#x000A;        }&#x000A;    }&#x000A;    catch (InvalidRulesException $e)&#x000A;    {&#x000A;        // You made bad rules&#x000A;    }&#x000A;    &#x000A;    </pre>
    <p>Just food for thought. The first one reads “prettier,” but the second one could be seen as optimal. Any thoughts regarding this?</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> I agree with Ben; there is always a right and wrong way to do something. It’s not like every <code>if</code> statement should now be replaced with an exception. But they are far more “accurate” and readable than, for example. a function that returns <code>-1</code> or <code>false</code>.</div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/JCutrell" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/jonathan-avatar.gif" alt="Jonathan Cutrell" style="max-width: 100%; height: auto;"></a><div> I think the most pertinent point here is the “<em>multiple bad outcomes</em>” argument. I think that is an important value-based judgement we should consider.<p>Perhaps exceptions, then, are best suited for when something goes wrong by definition. For instance, when there is input error, when there is server error, etcetera.</p>
    <p>Maybe a bad use-case scenario is catching exceptions for things that are expected and good cases. I certainly agree with what Ben laid out, particularly when it comes to what I have now (un)officially trademarked <em>the Un-informed else block™</em>. (You may affectionately refer to it as UEB™.) This poor catch-all doesn’t have anything good to tell us, and unfortunately gets hit with all the bad, with little-to-no recourse. What a shame.</p>
    <p>And, thus, we may happen upon an answer! To keep all of our control flow informed, and to use exceptions for things that are, indeed, exceptions.</p>
    <p>I should be able to try to log in a user, and know why it failed. Now, the question is, how? I think the answer, as we have all agreed, is that it simply depends.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/gabrielmanricks" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/gabriel-avatar.gif" alt="Gabriel Manricks" style="max-width: 100%; height: auto;"></a><div> I agree with Jonathan. Using exceptions for a good case would be wrong. For instance:<pre>try &#x000A;    {&#x000A;        loginUser($creds);&#x000A;    } &#x000A;    catch (LoginSuccess $success)&#x000A;    {&#x000A;       //store session and cookies&#x000A;    }&#x000A;    </pre>
    <p>So my opinion is to use them for errors. Not limited to “unexpected” errors, but any errors.</p>
    <p>Also a point worth adding is that it depends on what you are doing – whether you are performing an action or checking something.</p>
    <p>In my Gist above, I had a method validate, and, within the code, I wrote something like:</p>
    <pre>if ($transform-&gt;validate()) {&#x000A;        //process&#x000A;    } else {&#x000A;        //throw exception&#x000A;    }&#x000A;    </pre>
    <p>I could have thrown the exception inside the validate method, but that would be destructive to the code’s readability. You would have something like:</p>
    <pre>$transform-&gt;validate();&#x000A;    $transform-&gt;process();&#x000A;    </pre>
    <p>This makes it unclear what is going on. To summarize my point of view, I would say: use Exceptions when performing an action, and use <code>if</code> statements when verifying data.</p>
    <p>It also works out syntax-wise, because you can say “<code>if (x) then y</code>“, when you are checking data, and <code>try { x } catch (a snag)</code> for actions. It wouldn’t be grammatically correct to interchange them.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/akuzemchak" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/aaron-avatar.gif" alt="Aaron Kuzemchak" style="max-width: 100%; height: auto;"></a><div> I’m in total agreement in saying that exceptions should never be used for a positive result. For me, it boils down to these two scenarios:<ul>
    <li>There are multiple points of failure in a particular function/method.</li>
    <li>There is a need to discern the difference between those points of failure and handle them in more than one way.</li>
    </ul>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/PatkosCsaba" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/csaba-avatar.gif" alt="Csaba Patkos" style="max-width: 100%; height: auto;"></a><div> I disagree, especially with the assumption that using only exceptions in the authentication example makes the code more readable, or more obvious.<p>I think the problem is that some people consider the language an impediment to expressing their ideas. Thus, a mix of if/else with try/catch makes the code harder to understand.</p>
    <p>The problem, as I see it, is the exact opposite. The code should reflect the concepts that you want to implement. Using try/catch for everything, except for the happy path, hides a great deal of execution logic details. Anything becomes white or black.</p>
    <p>On the other hand, if you use if/else for the cases when your application goes down paths that are part of its logic (like wrong username – passord pair), and then try/catch for the situations when your application gets into an unexpected / unrecoverable state, it would be much more obvious what the possible behavior and paths of execution are.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/akuzemchak" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/aaron-avatar.gif" alt="Aaron Kuzemchak" style="max-width: 100%; height: auto;"></a><div> The original reason why this got me thinking in the first place was because of the knee-jerk, “<em>NO</em>” responses.<ul>
    <li>
    <strong>Should I ever use JavaScript as a server-side language?</strong> No, because that’s not what it was designed for.</li>
    <li>
    <strong>Should I use LESS to write CSS?</strong> No, because it might confuse someone.</li>
    <li>
    <strong>Is it ever okay to use static methods?</strong> No, it is never okay.</li>
    </ul>
    <p>All extreme and not constructive.</p>
    <p>I think that by presenting valid reasoning from both sides, we reach an even more important conclusion: not condemning other developers for not seeing eye-to-eye with ourselves. If any of you hand me some code, I’m not going to complain about your decision to use exceptions or not. I just want you to be consistent in your approach, and you better comment it! :)</p>
    <p>I doubt this will change anything, but most developers could use some more humility and empathy – me especially. That’s at least my goal in this: not to convince anyone that my way is <em>the</em> way, or even a better way, but to demonstrate that you shouldn’t tell me that my way is flat-out wrong, because maybe we’re not looking at it the same way.</p>
    </div>
    </div>
    <hr>
    <div> <a href="https://twitter.com/pavanpodila" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/pavan-avatar.gif" alt="Pavan Podilla" style="max-width: 100%; height: auto;"></a><div> I think we have a group consensus on using Exceptions only for handling the error/failure cases. It should never be used for normal control flow.<p>It is worth noting why Exceptions are particularly suited for propagating errors. It’s all about context and making sure this context is passed on to wherever is best to handle the exception. Most runtimes have an automatic way of bubbling up the exception and that makes it very convenient to inject exception handlers at the right places in the software stack.</p>
    <p>You cannot define a bubbling route for exceptions using any language construct. The only possibility is to raise or throw them. It’s the runtime’s responsibility to do the bubbling. This implicit mechanism makes exceptions the ideal abstraction for propagating errors.</p>
    </div>
    </div>
    <hr>
    <h2>Your Turn</h2>
    <p>So that’s what we have to say on this subject. What are your views? Can an argument be made for using exceptions for flow control?</p>
    </div>
]]>
</Body>
<Summary>I’m pleased to release our first ever round table, where we place a group of developers in a locked room (not really), and ask them to debate one another on a single topic. In this first entry, we...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/wEItkeOfo6o/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26814/guest@my.umbc.edu/213eec9d842c9ca4913fd405e43ed9fd/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>general</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>round-table</Tag>
<Tag>sql</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, 27 Mar 2013 14:57:48 -0400</PostedAt>
<EditAt>Wed, 27 Mar 2013 14:57:48 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="26810" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26810">
<Title>What internet resources are available for international media - tv, newspapers, radio?</Title>
<Body>
<![CDATA[
    <div class="html-content"><div>    <p>
            Page
                <strong>edited</strong> by
                        <a href="https://wiki.umbc.edu/display/~jcoste1" rel="nofollow external" class="bo">Joan Costello</a>
                </p>
            <div>
            <div><table><tbody>
    <tr>
    <td><div><strong> TV:</strong></div></td>
    <td>
    <p><a href="http://www.learner.org/view_programs/view.programs.html" rel="nofollow external" class="bo">Annenberg PBS Videos on Demand</a> use IE</p>
    <p><a href="http://www.beelinetv.com/" rel="nofollow external" class="bo">Beeline TV from around the world</a></p>
    <p><a href="http://www.euronews.net" rel="nofollow external" class="bo">Euronews</a></p>
    <p><a href="http://www.watchfomny.com/index.php" rel="nofollow external" class="bo">Fomny  television</a></p>
    <p><a href="http://broadband-television.com/tv/" rel="nofollow external" class="bo">Hulu Plus International TV</a></p>
    <p><a href="http://www.tvacres.com/tv_resources_networks_internat.htm" rel="nofollow external" class="bo">TV Resources</a><br>  <br> French - <a href="http://www.tv5.org/indextv5.html" rel="nofollow external" class="bo">TV5</a></p>
    <p>Spanish -<a href="http://noticias.univision.com/" rel="nofollow external" class="bo"> Univision</a></p>
    <p> </p>
    </td>
    </tr>
    <tr>
    <td><div><strong>Radio:</strong></div></td>
    <td><a href="http://radio.un.org/" rel="nofollow external" class="bo">UN Radio </a></td>
    </tr>
    <tr>
    <td><div><div><strong>Newspapers:</strong></div></div></td>
    <td><a href="http://www.thepaperboy.com/" rel="nofollow external" class="bo">International newspapers </a></td>
    </tr>
    </tbody></table></div>
    <p> </p>
    <h2>Rate this Article</h2>
    <p>
    
    
    
    
    <strong>Was this helpful?</strong>
    <a href="https://apps-my.umbc.edu/apps/rt-track/script.php?u=http://wiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D35422550&amp;q=0&amp;v=1&amp;s=faq&amp;l=imc" rel="nofollow external" class="bo">Yes</a>
     | <a href="https://docs.google.com/a/umbc.edu/spreadsheet/viewform?formkey=dEpyOEZxa29QY05BaVpBVzZSYmRMM0E6MA&amp;entry_15=http%3A%2F%2Fwiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D35422550" rel="nofollow external" class="bo">No</a>
     | <a href="https://docs.google.com/a/umbc.edu/spreadsheet/viewform?formkey=dEpyOEZxa29QY05BaVpBVzZSYmRMM0E6MA&amp;entry_15=http%3A%2F%2Fwiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D35422550" rel="nofollow external" class="bo">Correct or Suggest an Article</a>
     | <a href="https://apps-my.umbc.edu/apps/rt-track/script.php?u=http://wiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D35422550&amp;q=0&amp;v=0&amp;s=faq&amp;l=imc" rel="nofollow external" class="bo">Request Help</a></p>
    <p><a href="http://my.umbc.edu/help/request" rel="nofollow external" class="bo"><img src="https://wiki.umbc.edu/download/attachments/29853066/RequestHelpicon.png?version=1&amp;modificationDate=1335472984000&amp;api=v2" style="max-width: 100%; height: auto;"></a></p>
        </div>
            <div>
           <a href="https://wiki.umbc.edu/pages/viewpage.action?pageId=35422550" rel="nofollow external" class="bo">View Online</a>
                  ·
           <a href="https://wiki.umbc.edu/pages/diffpagesbyversion.action?pageId=35422550&amp;revisedVersion=3&amp;originalVersion=2" rel="nofollow external" class="bo">View Changes Online</a>       
                      </div>
    </div></div>
]]>
</Body>
<Summary>Page             edited by                     Joan Costello                                    TV:  Annenberg PBS Videos on Demand use IE  Beeline TV from around the world  Euronews  Fomny ...</Summary>
<Website>https://wiki.umbc.edu/pages/viewpage.action?pageId=35422550</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26810/guest@my.umbc.edu/eda24bc43abc6cf15f9181bd977b3e74/api/pixel</TrackingUrl>
<Tag>faq</Tag>
<Group token="retired-428">UMBC FAQ</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-428</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/images/avatars/group/1/xsmall.png?1787842820</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/images/avatars/group/1/original.png?1787842820</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/images/avatars/group/1/xxlarge.png?1787842820</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/images/avatars/group/1/xlarge.png?1787842820</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/images/avatars/group/1/large.png?1787842820</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/images/avatars/group/1/medium.png?1787842820</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/images/avatars/group/1/small.png?1787842820</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/images/avatars/group/1/xsmall.png?1787842820</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/images/avatars/group/1/xxsmall.png?1787842820</AvatarUrl>
<Sponsor>UMBC FAQ</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 27 Mar 2013 14:43:24 -0400</PostedAt>
<EditAt>Wed, 27 Mar 2013 15:29:27 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="110232" important="false" status="posted" url="https://my3.my.umbc.edu/posts/110232">
<Title>Donald Norris, Public Policy, in the Baltimore Sun</Title>
<Body>
<![CDATA[
    <div class="html-content">Former Baltimore Mayor Sheila Dixon will kick off the Associated Black Charities’ speaker series next month, sparking speculation of a possible return to politics. “This is the year I’m going to decide,” Dixon told the Baltimore Sun, of her desire to run for office again after having completed probation following her 2009 embezzlement conviction. “I’m not going to hide the fact that I enjoyed what I was doing during my 27 years in public office.” Donald F. Norris, professor and chair of public policy at UMBC, told the Sun that the substance of Dixon’s talk might signal, more definitively, her …</div>
]]>
</Body>
<Summary>Former Baltimore Mayor Sheila Dixon will kick off the Associated Black Charities’ speaker series next month, sparking speculation of a possible return to politics. “This is the year I’m going to...</Summary>
<Website>https://news.umbc.edu/donald-norris-public-policy-in-the-baltimore-sun-13/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/110232/guest@my.umbc.edu/1ccd8a4ad10ee98e5bb52fa1cd216c77/api/pixel</TrackingUrl>
<Tag>cahss</Tag>
<Tag>policy-and-society</Tag>
<Tag>publicpolicy</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, 27 Mar 2013 14:31:53 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="26808" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26808">
<Title>You Can Transition z-index</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>Zoe Gillenwater reminds us it's just a number, so why not? So obviously I made this <a href="http://codepen.io/chriscoyier/pen/gboJf" rel="nofollow external" class="bo">dumb wall-phasing ghost</a>. </p>
    <p><a href="http://zomigi.com/blog/css3-transitions-and-z-index/" title="Direct link to featured article" rel="nofollow external" class="bo">Direct Link to Article</a> — <a href="http://css-tricks.com/you-can-transition-z-index/" rel="nofollow external" class="bo">Permalink</a></p>
    <p><small>Need a template for your WordPress website? The fine folks at <a href="http://thethemefoundry.com" rel="nofollow external" class="bo">The Theme Foundry</a> have been building WordPress themes from scratch since 2008. You won't find a huge assortment on their site either — they keep a small curated collection and focus on quality over quantity.</small></p>
    
    <p><small><a href="http://css-tricks.com/you-can-transition-z-index/" rel="nofollow external" class="bo">You Can Transition z-index</a> is a post from <a href="http://css-tricks.com" rel="nofollow external" class="bo">CSS-Tricks</a></small></p>
    </div>
]]>
</Body>
<Summary>Zoe Gillenwater reminds us it's just a number, so why not? So obviously I made this dumb wall-phasing ghost.    Direct Link to Article — Permalink  Need a template for your WordPress website? The...</Summary>
<Website>http://zomigi.com/blog/css3-transitions-and-z-index/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26808/guest@my.umbc.edu/a5c32d65b24860ebee84a2994d705c65/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>link</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, 27 Mar 2013 14:22:50 -0400</PostedAt>
<EditAt>Wed, 27 Mar 2013 14:22:50 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="26804" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26804">
<Title>How do I determine my computer's basic specs?</Title>
<Body>
<![CDATA[
    <div class="html-content"><div>    <p>
            Page
                <strong>added</strong> by
                        <a href="https://wiki.umbc.edu/display/~amocko1" rel="nofollow external" class="bo">Andrea Mocko</a>
                </p>
            <div>
            <h2>Windows</h2>
    <ol>
    <li>Click the Start button or Windows icon at the bottom right hand of the screen.</li>
    <li>Go to <strong>Control Panel</strong>.</li>
    <li>Click <strong>System and Security</strong> and then <strong>System</strong> (or just <strong>System</strong> if not viewing by category)</li>
    <li>The page that loads will display basic information about your computer including the current version of Windows, processor, installed memory (RAM) and the system type.</li>
    </ol>
    <h2>Apple</h2>
    <ol>
    <li>Click the Apple logo in the menu bar at the top of the screen.</li>
    <li>Click <strong>About this Mac.</strong>
    </li>
    <li>In the window that loads, you will see information about your computer including current version of Mac OS X, the processor, and the amount of installed memory.</li>
    </ol>
    <h2>Rate this Article</h2>
    <p>
    
    
    
    
    <strong>Was this helpful?</strong>
    <a href="https://apps-my.umbc.edu/apps/rt-track/script.php?u=http://wiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D35422545&amp;q=0&amp;v=1&amp;s=faq&amp;l=" rel="nofollow external" class="bo">Yes</a>
     | <a href="https://docs.google.com/a/umbc.edu/spreadsheet/viewform?formkey=dEpyOEZxa29QY05BaVpBVzZSYmRMM0E6MA&amp;entry_15=http%3A%2F%2Fwiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D35422545" rel="nofollow external" class="bo">No</a>
     | <a href="https://docs.google.com/a/umbc.edu/spreadsheet/viewform?formkey=dEpyOEZxa29QY05BaVpBVzZSYmRMM0E6MA&amp;entry_15=http%3A%2F%2Fwiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D35422545" rel="nofollow external" class="bo">Correct or Suggest an Article</a>
     | <a href="https://apps-my.umbc.edu/apps/rt-track/script.php?u=http://wiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D35422545&amp;q=0&amp;v=0&amp;s=faq&amp;l=" rel="nofollow external" class="bo">Request Help</a></p>
    <p><a href="http://my.umbc.edu/help/request" rel="nofollow external" class="bo"><img src="https://wiki.umbc.edu/download/attachments/29853066/RequestHelpicon.png?version=1&amp;modificationDate=1335472984000&amp;api=v2" style="max-width: 100%; height: auto;"></a></p>
        </div>
            <div>
           <a href="https://wiki.umbc.edu/pages/viewpage.action?pageId=35422545" rel="nofollow external" class="bo">View Online</a>
                      </div>
    </div></div>
]]>
</Body>
<Summary>Page             added by                     Andrea Mocko                                  Windows   Click the Start button or Windows icon at the bottom right hand of the screen.  Go to Control...</Summary>
<Website>https://wiki.umbc.edu/pages/viewpage.action?pageId=35422545</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26804/guest@my.umbc.edu/072bc19222df2a84f5e268c53a3e7c2b/api/pixel</TrackingUrl>
<Tag>faq</Tag>
<Group token="retired-428">UMBC FAQ</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-428</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/images/avatars/group/1/xsmall.png?1787842820</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/images/avatars/group/1/original.png?1787842820</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/images/avatars/group/1/xxlarge.png?1787842820</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/images/avatars/group/1/xlarge.png?1787842820</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/images/avatars/group/1/large.png?1787842820</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/images/avatars/group/1/medium.png?1787842820</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/images/avatars/group/1/small.png?1787842820</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/images/avatars/group/1/xsmall.png?1787842820</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/images/avatars/group/1/xxsmall.png?1787842820</AvatarUrl>
<Sponsor>UMBC FAQ</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 27 Mar 2013 13:16:22 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="26803" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26803">
<Title>3 Tips for Handling Startup Hiccups</Title>
<Body>
<![CDATA[
    <div class="html-content">Business consultant Joshua Medcalf on the importance of embracing the unknown.</div>
]]>
</Body>
<Summary>Business consultant Joshua Medcalf on the importance of embracing the unknown.</Summary>
<Website>http://feedproxy.google.com/~r/YoungentrepreneurcomBlog/~3/WgYqh1rsEtQ/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26803/guest@my.umbc.edu/a34cc68210ed20d73e5717f320af6fec/api/pixel</TrackingUrl>
<Tag>ask-the-expert</Tag>
<Tag>business-management</Tag>
<Tag>business-planning</Tag>
<Tag>overcoming-obstacles</Tag>
<Tag>q-and-a</Tag>
<Group token="entrepreneurship">Alex. Brown Center for Entrepreneurship</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/entrepreneurship</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/original.jpg?1771000363</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/large.png?1771000363</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/medium.png?1771000363</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/small.png?1771000363</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxsmall.png?1771000363</AvatarUrl>
<Sponsor>The Alex. Brown Center for Entrepreneurship</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 27 Mar 2013 13:00:55 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="26346" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26346">
<Title>Sexual Assault Awareness Month</Title>
<Tagline>Calendar of Events</Tagline>
<Body>
<![CDATA[
    <div class="html-content">
    <div>
    <p><span>April is National Sexual Assault Awareness Month (SAAM) and a time to focus on a crime that happens almost every two minutes in the United States (that means an average of 207,754 victims a year according to the U.S. Department of Justice's National Crime Victimization Survey).</span></p>
    <p><span>The goal of SAAM at UMBC is to raise the campus community’s awareness about sexual violence and to educate students, faculty, staff, and our communities on how to prevent interpersonal violence. University Health Services and the Women's Center have put together a calendar of events for the month intended to raise awareness and educate our UMBC community. Please refer to the attached flyer for event details and save the date!</span></p>
    <p><span><strong><em>For more information, you can contact the Women's Center at 410.455.2714 or <a href="mailto:womens.center@umbc.edu">womens.center@umbc.edu</a>. Also follow UHS and the Women's Center on Facebook and  Twitter for daily updates and news regarding SAAM! Be sure to check in on the month's hastag on Twitter: #UMBCaware for all Sexual Assault Awareness Month events and #UMBCtbtn for the Take Back the Night event on April 30th!</em></strong></span></p>
    <p><span><strong><em><br></em></strong></span><span><strong><em>Follow the Women's Center!<br></em></strong></span><span><strong><em>Facebook: <br></em></strong><em><a href="https://www.facebook.com/pages/Womens-Center-at-UMBC/105058342906316">https://www.facebook.com/pages/Womens-Center-at-UMBC/105058342906316</a><br></em></span><span><em><strong>Twitter:</strong> @womencenterumbc<br></em></span><span><strong><em><br></em></strong></span></p>
    <p><span><strong><em>Follow UHS at: <br></em></strong></span><em><span><strong>Facebook:</strong> <a href="https://www.facebook.com/umbcuhs">https://www.facebook.com/umbcuhs</a></span><br></em><span><em><strong>Twitter: </strong>@UMBCuhs</em></span></p>
    <p><span><em><br></em></span></p>
    <p><span><em><br></em></span></p>
    </div>
    <div><span><br></span></div>
    <div><span><br></span></div>
    <div><br></div>
    </div>
]]>
</Body>
<Summary>April is National Sexual Assault Awareness Month (SAAM) and a time to focus on a crime that happens almost every two minutes in the United States (that means an average of 207,754 victims a year...</Summary>
<Website>https://womenscenter.umbc.edu/</Website>
<AttachmentKind>Flyer</AttachmentKind>
<AttachmentUrl>https://assets3-my.umbc.edu/system/shared/attachments/1e1fb185a0798408679774119118944f/6a99c8a8/news/000/026/346/1415fe9fea0fa1e45dddcff5682239a0/SAAM 2013 Flyer.jpg?1363967022</AttachmentUrl>
<Attachments>
<Attachment kind="Flyer" url="https://my3.my.umbc.edu/posts/26346/attachments/9393"></Attachment>
</Attachments>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26346/guest@my.umbc.edu/9e866548a33dfe2533e82db7a9e48618/api/pixel</TrackingUrl>
<Group token="womenscenter">Women's, Gender, &amp;amp; Equity Center</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/womenscenter</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/xsmall.png?1750974263</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/original.png?1750974263</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/xxlarge.png?1750974263</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/xlarge.png?1750974263</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/large.png?1750974263</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/medium.png?1750974263</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/small.png?1750974263</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/xsmall.png?1750974263</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/xxsmall.png?1750974263</AvatarUrl>
<Sponsor>Women's Center</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/026/346/1d332a2954b1ce91e36ee87a34e286b2/xxlarge.jpg?1363967041</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/026/346/1d332a2954b1ce91e36ee87a34e286b2/xlarge.jpg?1363967041</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/026/346/1d332a2954b1ce91e36ee87a34e286b2/large.jpg?1363967041</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/026/346/1d332a2954b1ce91e36ee87a34e286b2/medium.jpg?1363967041</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/026/346/1d332a2954b1ce91e36ee87a34e286b2/small.jpg?1363967041</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/026/346/1d332a2954b1ce91e36ee87a34e286b2/xsmall.jpg?1363967041</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/026/346/1d332a2954b1ce91e36ee87a34e286b2/xxsmall.jpg?1363967041</ThumbnailUrl>
<PawCount>12</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Wed, 27 Mar 2013 12:56:24 -0400</PostedAt>
<EditAt>Mon, 22 Jul 2024 11:02:08 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="26798" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26798">
<Title>Analyst's Corner: PaaS Fits the Enterprise</Title>
<Body>
<![CDATA[
    <div class="html-content">PaaS solutions deliver efficient, standardized services for consolidating existing applications and rapidly building new ones.</div>
]]>
</Body>
<Summary>PaaS solutions deliver efficient, standardized services for consolidating existing applications and rapidly building new ones.</Summary>
<Website>http://www.oracle.com/technetwork/issue-archive/2013/13-mar/o23analyst-1906480.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26798/guest@my.umbc.edu/b2a97c1ee4593067206911c81c4886b5/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>oracle</Tag>
<Tag>pl-sql</Tag>
<Tag>sql</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, 27 Mar 2013 12:43:22 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="26802" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26802">
<Title>AngelHack announces worldwide hackathon</Title>
<Body>
<![CDATA[
    <div class="html-content">Thousands of developers to unite around the world<div><table border="0"><tbody><tr>
    <td><a href="http://share.feedsportal.com/viral/sendEmail.cfm?lang=en&amp;title=AngelHack+announces+worldwide+hackathon&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Fnews%2Fangelhack-announces-worldwide-hackathon-132656" 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=AngelHack+announces+worldwide+hackathon&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Fnews%2Fangelhack-announces-worldwide-hackathon-132656" 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/161990716114/u/49/f/502346/c/32632/s/2a0f3870/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/161990716114/u/49/f/502346/c/32632/s/2a0f3870/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Thousands of developers to unite around the world</Summary>
<Website>http://feedproxy.google.com/~r/net/topstories/~3/z6sIq3b8Ito/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26802/guest@my.umbc.edu/efd897991f8c5729433167a3e15ac0d9/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, 27 Mar 2013 11:40:59 -0400</PostedAt>
</NewsItem>

</News>
