<?xml version="1.0"?>
<News hasArchived="true" page="8562" pageCount="10793" pageSize="10" timestamp="Fri, 04 Sep 2026 21:54:06 -0400" url="https://my3.my.umbc.edu/posts.xml?mode=activity&amp;page=8562&amp;range=2">
<NewsItem contentIssues="false" id="33038" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33038">
<Title>Making Maven Grunt.</Title>
<Body>
<![CDATA[
    <div class="html-content">Introduction Developers working in agencies often tell us that they want to be able to use modern front-end tooling in their workflow. One set of options this manifests as is using Grunt for their build tasks (instead of Ant, bash … <a href="http://addyosmani.com/blog/making-maven-grunt/" rel="nofollow external" class="bo">Continue reading <span>→</span></a>
    </div>
]]>
</Body>
<Summary>Introduction Developers working in agencies often tell us that they want to be able to use modern front-end tooling in their workflow. One set of options this manifests as is using Grunt for their...</Summary>
<Website>http://addyosmani.com/blog/making-maven-grunt/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33038/guest@my.umbc.edu/b7011ada17a400f27733052eb5656376/api/pixel</TrackingUrl>
<Tag>chrome</Tag>
<Tag>developer</Tag>
<Tag>grunt</Tag>
<Tag>javascript</Tag>
<Tag>maven</Tag>
<Tag>web-development</Tag>
<Tag>yeoman</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>Tue, 23 Jul 2013 10:37:57 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="33051" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33051">
<Title>Two Drafts in Last Call: Last Call: RDF 1.1 Concepts and Abstract Syntax, RDF 1.1 Semantics</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>The <a href="http://www.w3.org/2011/rdf-wg/" rel="nofollow external" class="bo">RDF Working Group</a> has published two Last Call Working Drafts today:</p>
    <ul>
    <li>A Last Call Working Draft of <a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130723/" rel="nofollow external" class="bo">RDF 1.1 Concepts and Abstract Syntax</a>. The Resource Description Framework (RDF) is a framework for representing information in the Web. Comments are welcome through 6 September.</li>
    <li>A Last Call Working Draft of <a href="http://www.w3.org/TR/2013/WD-rdf11-mt-20130723/" rel="nofollow external" class="bo">RDF 1.1 Semantics</a>. This document describes a precise semantics for the Resource Description Framework 1.1 and RDF Schema. It defines a number of distinct entailment regimes and corresponding patterns of entailment. It is part of a suite of documents which comprise the full specification of RDF 1.1. Comments are welcome through 6 September.</li>
    </ul>
    <p>Learn more about the <a href="http://www.w3.org/2001/sw/" rel="nofollow external" class="bo">Semantic Web Activity</a>.</p>
    </div>
]]>
</Body>
<Summary>The RDF Working Group has published two Last Call Working Drafts today:     A Last Call Working Draft of RDF 1.1 Concepts and Abstract Syntax. The Resource Description Framework (RDF) is a...</Summary>
<Website>http://www.w3.org/News/2013.html#entry-9896</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33051/guest@my.umbc.edu/29273da67c87aef6678129301415b242/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>home-page-stories</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>publication</Tag>
<Tag>semantic-web</Tag>
<Tag>sql</Tag>
<Tag>w3</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>Tue, 23 Jul 2013 10:33:12 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="33052" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33052">
<Title>Last Call: XQuery 3.0: An XML Query Language</Title>
<Body>
<![CDATA[
    <div class="html-content"><p>The <a href="http://www.w3.org/XML/Query/" rel="nofollow external" class="bo">XML Query Working Group</a> has published a Last Call Working Draft of <a href="http://www.w3.org/TR/2013/WD-xquery-30-20130723/" rel="nofollow external" class="bo">XQuery 3.0: An XML Query Language</a>. XML is a versatile markup language, capable of labeling the information content of diverse data sources including structured and semi-structured documents, relational databases, and object repositories. A query language that uses the structure of XML intelligently can express queries across all these kinds of data, whether physically stored in XML or viewed as XML via middleware. This specification describes a query language called XQuery, which is designed to be broadly applicable across many types of XML data sources. Comments are welcome through 13 August. Learn more about the <a href="http://www.w3.org/XML/" rel="nofollow external" class="bo">Extensible Markup Language (XML) Activity</a>.</p></div>
]]>
</Body>
<Summary>The XML Query Working Group has published a Last Call Working Draft of XQuery 3.0: An XML Query Language. XML is a versatile markup language, capable of labeling the information content of diverse...</Summary>
<Website>http://www.w3.org/News/2013.html#entry-9895</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33052/guest@my.umbc.edu/9db33e139e8c0e135281244dbcef5c1d/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>home-page-stories</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>publication</Tag>
<Tag>sql</Tag>
<Tag>w3</Tag>
<Tag>web</Tag>
<Tag>xml-core-technologies</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>Tue, 23 Jul 2013 10:30:33 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="33045" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33045">
<Title>Bits Blog: Big Data Analysis Adds to Guest Worker Debate</Title>
<Body>
<![CDATA[
    <div class="html-content">A private job placement company said that there are plenty of job seekers in the United States for thousands of tech jobs, raising doubts over appeals for more foreign guest workers.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F23%2Fbig-data-analysis-adds-to-guest-worker-debate%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Big+Data+Analysis+Adds+to+Guest+Worker+Debate" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F23%2Fbig-data-analysis-adds-to-guest-worker-debate%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Big+Data+Analysis+Adds+to+Guest+Worker+Debate" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F23%2Fbig-data-analysis-adds-to-guest-worker-debate%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Big+Data+Analysis+Adds+to+Guest+Worker+Debate" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F23%2Fbig-data-analysis-adds-to-guest-worker-debate%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Big+Data+Analysis+Adds+to+Guest+Worker+Debate" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F23%2Fbig-data-analysis-adds-to-guest-worker-debate%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Big+Data+Analysis+Adds+to+Guest+Worker+Debate" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/172189776302/u/0/f/640387/c/34625/s/2f0f6174/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/172189776302/u/0/f/640387/c/34625/s/2f0f6174/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>A private job placement company said that there are plenty of job seekers in the United States for thousands of tech jobs, raising doubts over appeals for more foreign guest workers.     </Summary>
<Website>http://bits.blogs.nytimes.com/2013/07/23/big-data-analysis-adds-to-guest-worker-debate/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33045/guest@my.umbc.edu/3951d3ada26b582ce16a66c37884a1ae/api/pixel</TrackingUrl>
<Tag>bright</Tag>
<Tag>data</Tag>
<Tag>engineering-and-engineers</Tag>
<Tag>foreign-workers</Tag>
<Tag>hiring-and-promotion</Tag>
<Tag>immigration-and-emigration</Tag>
<Tag>labor-and-jobs</Tag>
<Tag>new</Tag>
<Tag>silicon-valley-calif</Tag>
<Tag>technology</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Tue, 23 Jul 2013 10:27:17 -0400</PostedAt>
<EditAt>Wed, 24 Jul 2013 15:16:50 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="33041" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33041">
<Title>Side project: The Dead Words</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><a title="The Dead Words" href="http://deadwords.info/" rel="nofollow external" class="bo"><img alt="Side project: The Dead Words" src="http://netdna.webdesignerdepot.com/uploads/2013/06/thumbnail27.jpg" width="200" height="160" style="max-width: 100%; height: auto;">The Dead Words</a> is a project created and curated by graphic designer Karen To. The idea behind the project is to rediscover dead words — words which were once part of our language but have now been omitted from the English dictionary — through the art of lettering.</p> <p>What’s interesting about this project is that not only do you get to see some great examples of lettering but thanks to the accompanying definitions you also get to learn about what each of the words mean. If you’re a keen letterer you can also get involved and submit your own piece by following <a title="The Dead Words" href="http://deadwords.info/?page_id=545" rel="nofollow external" class="bo">a few simple steps</a>.</p> <p>Before you do that though, feast your eyes on some of our favourite pieces from the project:</p> <p><a href="http://deadwords.info/?p=899" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/thedeadwords1.jpg" width="650" alt="Side project: The Dead Words" style="max-width: 100%; height: auto;"></a></p> <p><em><strong>Aretaloger</strong> (ar-ta-log-er]) n.1623-1656, braggart; one who boasts about his own accomplishments</em></p> <p> </p> <p><a href="http://deadwords.info/?p=577" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/thedeadwords2.jpg" width="650" alt="Side project: The Dead Words" style="max-width: 100%; height: auto;"></a></p> <p><em><strong>Tragematopolist</strong> (jus-soo-lent) n.1656-1658, confectioner; seller of sweets</em></p> <p> </p> <p><a href="http://deadwords.info/?p=767" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/thedeadwords3.jpg" width="650" alt="Side project: The Dead Words" style="max-width: 100%; height: auto;"></a></p> <p><em><strong>Teterrimous</strong> (tey-ter-ee-muhs) n.1704-1864, most foul</em></p> <p> </p> <p><a href="http://deadwords.info/?p=526" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/thedeadwords4.jpg" width="650" alt="Side project: The Dead Words" style="max-width: 100%; height: auto;"></a></p> <p><em><strong>Sinapistic</strong> (sin-uh-piz-tik) adj.1879-1879, consisting of mustard</em></p> <p> </p> <p><a href="http://deadwords.info/?p=363" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/thedeadwords5.jpg" width="650" alt="Side project: The Dead Words" style="max-width: 100%; height: auto;"></a></p> <p><em><strong>Senticous</strong> (sen-tee-kuhz) adj.1657-1657; prickly; thorny</em></p> <p> </p> <p><a href="http://deadwords.info/?p=357" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/thedeadwords7.jpg" width="650" alt="Side project: The Dead Words" style="max-width: 100%; height: auto;"></a></p> <p><em><strong>Sagittiferous</strong> (suh-jit-uh-fer-oh) adj.1656 -1858; bearing arrows</em></p> <p> </p> <p><a href="http://deadwords.info/?p=652" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/thedeadwords8.jpg" width="650" alt="Side project: The Dead Words" style="max-width: 100%; height: auto;"></a></p> <p><em><strong>Findible</strong> (fahyn-dee-buhl) adj.1656-1790, able to be cleft or split</em></p> <p> </p> <p><a href="http://deadwords.info/?p=347" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/thedeadwords6.jpg" width="650" alt="Side project: The Dead Words" style="max-width: 100%; height: auto;"></a></p> <p><em><strong>Scandiscope</strong> (skan-dee-skohp) n.1825 -1825; machine for cleaning chimneys</em></p> <p> </p> <p><em><strong>Which of these is your favourite? Do you have a similar side project? Let us know in the comments.</strong></em></p> <p><br><br> </p>
    <table width="100%"> <tbody>
    <tr> <td> <a href="http://www.mightydeals.com/deal/bootstraptor-templates.html?ref=inwidget" rel="nofollow external" class="bo"><strong>10 Premium Responsive Bootstrap Templates – only $10!</strong></a> </td> <td> <a href="http://www.mightydeals.com/?ref=inwidget" rel="nofollow external" class="bo"><br> <img src="http://mightydeals.com/web/images/widget-logo.png" height="40" width="90" alt="Side project: The Dead Words" style="max-width: 100%; height: auto;"><br> </a> </td> </tr> </tbody>
    </table> <p><br> </p> <a href="http://www.webdesignerdepot.com/2013/07/side-project-the-dead-words/" rel="nofollow external" class="bo">Source</a> <div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.webdesignerdepot.com%2F2013%2F07%2Fside-project-the-dead-words%2F&amp;t=Side+project%3A+The+Dead+Words" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.webdesignerdepot.com%2F2013%2F07%2Fside-project-the-dead-words%2F&amp;t=Side+project%3A+The+Dead+Words" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.webdesignerdepot.com%2F2013%2F07%2Fside-project-the-dead-words%2F&amp;t=Side+project%3A+The+Dead+Words" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.webdesignerdepot.com%2F2013%2F07%2Fside-project-the-dead-words%2F&amp;t=Side+project%3A+The+Dead+Words" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.webdesignerdepot.com%2F2013%2F07%2Fside-project-the-dead-words%2F&amp;t=Side+project%3A+The+Dead+Words" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/172189767985/u/49/f/661066/c/35285/s/2f0e86e6/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/172189767985/u/49/f/661066/c/35285/s/2f0e86e6/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>The Dead Words is a project created and curated by graphic designer Karen To. The idea behind the project is to rediscover dead words — words which were once part of our language but have now been...</Summary>
<Website>http://rss.feedsportal.com/c/35285/f/661066/s/2f0e86e6/sc/4/l/0L0Swebdesignerdepot0N0C20A130C0A70Cside0Eproject0Ethe0Edead0Ewords0C/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33041/guest@my.umbc.edu/a5dfcece9d32591f7f25d50ae28ec270/api/pixel</TrackingUrl>
<Tag>art</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>designer-side-projects</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>html5</Tag>
<Tag>illustrator</Tag>
<Tag>inspiration</Tag>
<Tag>javascript</Tag>
<Tag>language</Tag>
<Tag>lettering</Tag>
<Tag>mysql</Tag>
<Tag>oracle</Tag>
<Tag>photoshop</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>typography</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Tue, 23 Jul 2013 10:15:32 -0400</PostedAt>
<EditAt>Tue, 23 Jul 2013 10:15:32 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="33036" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33036">
<Title>App Store Screenshots, Regular Expressions, Programming Fonts &#8211; Treehouse Show Ep 49</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>In this episode of The Treehouse Show, Nick Pettit (@nickrp) and Jason Seifer (@jseifer) talk about the latest in web design, web development, html5, front end development, and more.</p>
    <p></p>
    <div class="embed-container"><iframe src="//www.youtube.com/embed/T3T2ohWLxZg" frameborder="0" webkitallowfullscreen="webkitAllowFullScreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowFullScreen">[Video]</iframe></div>
    <h2>Here are the links for the week:</h2>
    <p>Designing App Store “screenshots” by Travis Jeffery of 37signals<br>
    <a href="http://37signals.com/svn/posts/3553-designing-app-store-screenshots" rel="nofollow external" class="bo">http://37signals.com/svn/posts/3553-designing-app-store-screenshots</a></p>
    <p>Debuggex: The online visual regex tester. Supports JavaScript and PCRE.<br>
    <a href="http://www.debuggex.com/?flavor=pcre" rel="nofollow external" class="bo">http://www.debuggex.com/?flavor=pcre</a></p>
    <p>Forecast Font<br>
    <a href="http://forecastfont.iconvau.lt/" rel="nofollow external" class="bo">http://forecastfont.iconvau.lt/</a></p>
    <p>JavascriptOO.com<br>
    <a href="http://www.javascriptoo.com/" rel="nofollow external" class="bo">http://www.javascriptoo.com/</a></p>
    <p>Style Guide Boilerplate<br>
    <a href="https://bjankord.github.io/Style-Guide-Boilerplate/" rel="nofollow external" class="bo">https://bjankord.github.io/Style-Guide-Boilerplate/</a></p>
    <p>AngularJS: an Overview – Glenn Stovall<br>
    <a href="http://glennstovall.com/blog/2013/06/27/angularjs-an-overview/" rel="nofollow external" class="bo">http://glennstovall.com/blog/2013/06/27/angularjs-an-overview/</a></p>
    <p>CSS filters, GIFs, and performance — What I Learned Building… — Medium<br>
    <a href="http://medium.com/what-i-learned-building/4364221d6d97" rel="nofollow external" class="bo">http://medium.com/what-i-learned-building/4364221d6d97</a></p>
    <p>Slant – What are the best programming fonts?<br>
    <a href="http://www.slant.co/topics/67/~what-are-the-best-programming-fonts" rel="nofollow external" class="bo">http://www.slant.co/topics/67/~what-are-the-best-programming-fonts</a></p>
    <p>The post <a href="http://blog.teamtreehouse.com/app-store-screenshots-regular-expressions-programming-fonts-treehouse-show-ep-49" rel="nofollow external" class="bo">App Store Screenshots, Regular Expressions, Programming Fonts – Treehouse Show Ep 49</a> appeared first on <a href="http://blog.teamtreehouse.com" rel="nofollow external" class="bo">Treehouse Blog</a>.</p>
    </div>
]]>
</Body>
<Summary>In this episode of The Treehouse Show, Nick Pettit (@nickrp) and Jason Seifer (@jseifer) talk about the latest in web design, web development, html5, front end development, and more.    [Video]...</Summary>
<Website>http://feedproxy.google.com/~r/teamtreehouse/~3/a_tSYlxJmKs/app-store-screenshots-regular-expressions-programming-fonts-treehouse-show-ep-49</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33036/guest@my.umbc.edu/24d6de808f4c41ac70bf111c80a27455/api/pixel</TrackingUrl>
<Tag>android</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>ios</Tag>
<Tag>javascript</Tag>
<Tag>responsive</Tag>
<Tag>treehouse-show</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>Tue, 23 Jul 2013 10:02:36 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="33037" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33037">
<Title>DealBook: Cisco to Buy Sourcefire, a Cybersecurity Company, for $2.7 Billion</Title>
<Body>
<![CDATA[
    <div class="html-content">Cisco Systems has agreed to buy Sourcefire, a provider of cybersecurity services, for about $2.7 billion in cash, amid a growing fervor for companies that can help guard against computer-based attacks.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2013%2F07%2F23%2Fcisco-to-buy-sourcefire-a-cybersecurity-company-for-2-7-billion%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Cisco+to+Buy+Sourcefire%2C+a+Cybersecurity+Company%2C+for+%242.7+Billion" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2013%2F07%2F23%2Fcisco-to-buy-sourcefire-a-cybersecurity-company-for-2-7-billion%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Cisco+to+Buy+Sourcefire%2C+a+Cybersecurity+Company%2C+for+%242.7+Billion" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2013%2F07%2F23%2Fcisco-to-buy-sourcefire-a-cybersecurity-company-for-2-7-billion%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Cisco+to+Buy+Sourcefire%2C+a+Cybersecurity+Company%2C+for+%242.7+Billion" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2013%2F07%2F23%2Fcisco-to-buy-sourcefire-a-cybersecurity-company-for-2-7-billion%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Cisco+to+Buy+Sourcefire%2C+a+Cybersecurity+Company%2C+for+%242.7+Billion" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2013%2F07%2F23%2Fcisco-to-buy-sourcefire-a-cybersecurity-company-for-2-7-billion%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Cisco+to+Buy+Sourcefire%2C+a+Cybersecurity+Company%2C+for+%242.7+Billion" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/172189680575/u/0/f/640387/c/34625/s/2f0e551f/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/172189680575/u/0/f/640387/c/34625/s/2f0e551f/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Cisco Systems has agreed to buy Sourcefire, a provider of cybersecurity services, for about $2.7 billion in cash, amid a growing fervor for companies that can help guard against computer-based...</Summary>
<Website>http://dealbook.nytimes.com/2013/07/23/cisco-to-buy-sourcefire-a-cybersecurity-company-for-2-7-billion/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33037/guest@my.umbc.edu/350d49ad7b1f48a453dd01178da730f6/api/pixel</TrackingUrl>
<Tag>cisco-systems-inc</Tag>
<Tag>cisco-systems-inc-csco-nasdaq</Tag>
<Tag>cyberwarfare</Tag>
<Tag>mergers-acquisitions-and-divestitures</Tag>
<Tag>mergers-and-acquisitions</Tag>
<Tag>new</Tag>
<Tag>sourcefire-inc</Tag>
<Tag>sourcefire-inc-fire-nasdaq</Tag>
<Tag>technology</Tag>
<Tag>top-headline-1</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Tue, 23 Jul 2013 09:54:50 -0400</PostedAt>
<EditAt>Wed, 24 Jul 2013 14:06:21 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="33035" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33035">
<Title>The future of WebRTC</Title>
<Body>
<![CDATA[
    <div class="html-content">Fresh Tilled Soil explain why WebRTC is such an exciting technology and demonstrate how to embed WebRTC video chat into your site without plugins or addons<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.netmagazine.com%2Ffeatures%2Ffuture-webrtc&amp;t=The+future+of+WebRTC" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.netmagazine.com%2Ffeatures%2Ffuture-webrtc&amp;t=The+future+of+WebRTC" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.netmagazine.com%2Ffeatures%2Ffuture-webrtc&amp;t=The+future+of+WebRTC" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.netmagazine.com%2Ffeatures%2Ffuture-webrtc&amp;t=The+future+of+WebRTC" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.netmagazine.com%2Ffeatures%2Ffuture-webrtc&amp;t=The+future+of+WebRTC" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/172189702462/u/49/f/502346/c/32632/s/2f0e3079/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/172189702462/u/49/f/502346/c/32632/s/2f0e3079/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Fresh Tilled Soil explain why WebRTC is such an exciting technology and demonstrate how to embed WebRTC video chat into your site without plugins or addons     </Summary>
<Website>http://feedproxy.google.com/~r/net/topstories/~3/IO4u_TPWrVM/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33035/guest@my.umbc.edu/e32ca435c419c739844678bd2cbddf2c/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>Tue, 23 Jul 2013 09:32:32 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="33033" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33033">
<Title>Bits Blog: A Social Network Dedicated to Happy Moments</Title>
<Body>
<![CDATA[
    <div class="html-content">Happier, a new social network where no negativity is allowed, focuses on helping its users share the small moments of joy that can seem too trivial to post elsewhere.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F23%2Fa-social-network-dedicated-to-happy-moments%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+A+Social+Network+Dedicated+to+Happy+Moments" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F23%2Fa-social-network-dedicated-to-happy-moments%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+A+Social+Network+Dedicated+to+Happy+Moments" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F23%2Fa-social-network-dedicated-to-happy-moments%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+A+Social+Network+Dedicated+to+Happy+Moments" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F23%2Fa-social-network-dedicated-to-happy-moments%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+A+Social+Network+Dedicated+to+Happy+Moments" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F23%2Fa-social-network-dedicated-to-happy-moments%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+A+Social+Network+Dedicated+to+Happy+Moments" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/172189764935/u/0/f/640387/c/34625/s/2f0da836/kg/342-363/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/172189764935/u/0/f/640387/c/34625/s/2f0da836/kg/342-363/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Happier, a new social network where no negativity is allowed, focuses on helping its users share the small moments of joy that can seem too trivial to post elsewhere.     </Summary>
<Website>http://bits.blogs.nytimes.com/2013/07/23/a-social-network-dedicated-to-happy-moments/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33033/guest@my.umbc.edu/0489a2897fcbc9eebee7b407f5097a58/api/pixel</TrackingUrl>
<Tag>facebook-inc</Tag>
<Tag>kogan-nataly</Tag>
<Tag>new</Tag>
<Tag>social</Tag>
<Tag>social-media</Tag>
<Tag>start-ups</Tag>
<Tag>technology</Tag>
<Tag>twitter</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Tue, 23 Jul 2013 09:17:00 -0400</PostedAt>
<EditAt>Tue, 23 Jul 2013 15:17:37 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="33030" important="false" status="posted" url="https://my3.my.umbc.edu/posts/33030">
<Title>Part One: How To Fix The Web: Obscure Back-End Techniques And Terminal Secrets</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <table width="650">
    <tbody>
    <tr>
    <td>
    <div>
    <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" style="max-width: 100%; height: auto;"><br><a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" rel="nofollow external" class="bo"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" alt="" style="max-width: 100%; height: auto;"></a> <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" rel="nofollow external" class="bo"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" alt="" style="max-width: 100%; height: auto;"></a> <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" rel="nofollow external" class="bo"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" alt="" style="max-width: 100%; height: auto;"></a>
    </div>
    </td>
    </tr>
    </tbody>
    </table>
    <p><em>We are very happy to present a sample chapter from the upcoming printed <a href="https://shop.smashingmagazine.com/smashing-book-4.html?pk_campaign=front-page-shop&amp;pk_kwd=sb4-virtual-product" rel="nofollow external" class="bo">Smashing Book #4: New Perspectives on Coding</a>, written by Paul Tero. Please note that the second part of this chapter will be published next week. If you can’t wait until then, feel free to download the full chapter which is available in the <a href="https://shop.smashingmagazine.com/customer/account/myebooklibrary/" rel="nofollow external" class="bo">Smashing eBook Library Demo</a>. —Ed.</em></p>
    <p>Imagine that you wake up one morning, reach groggily for your laptop and fire it up. You’ve just finished developing a brand new website and last night you were proudly clicking through the product list. The browser window is still open, the Widget 3000 is still sparkling in its AJAXy newness. You grin like a new parent and expectantly click on “More details”. And nothing happens. You click again, still nothing. You press <code>Refresh</code> and get that annoying swirling icon and then the page goes blank. Help! The Internet is gone!</p>
    <p>This chapter starts with the worst case scenario and works inwards, <strong>exploring the infrastructure of the Internet and the make-up of a Web server</strong>, imparting lots of little tips and commands along the way, opening up a new perspective on how websites can stop working — and be fixed.</p>
    <h3>The End Of The World</h3>
    <p>It is unlikely that civilization has collapsed overnight, especially if you are light sleeper. You can verify this with a battery-powered radio. An apocalypse would certainly make the news and perhaps qualify for a full-blown government warning. All stations should be reporting it, assuming there are any left; it would be really, really bad news if not.</p>
    <p>In the US, many broadcasters participate in the Emergency Alert System, which theoretically allows the President to address the nation within 10 minutes, though it might be <a href="http://www.computerworld.com/s/article/9236758/Emergency_Alert_System_devices_vulnerable_to_hacker_attacks_researchers_say" rel="nofollow external" class="bo">vulnerable to hackers</a>. France uses air raid sirens for its Signal National d’Alerte2 and Japan’s <a href="http://www.terradaily.com/reports/Japan_Launches_Alert_System_For_Tsunamis_And_Missiles_999.html" rel="nofollow external" class="bo">J-Alert uses loudspeakers</a>. All are part of the United Nation’s International Early Warning Program. This is important, especially now that the <a href="http://www.undemocracy.com/A-RES-44-236" rel="nofollow external" class="bo">International Decade for Natural Disaster Reduction</a> (the 1990s) is long over.</p>
    <p>You should be able to ascertain pretty quickly if your website woes are related to this. If not, move on to the next section.</p>
    <h3>Infrastructure</h3>
    <p>The Internet depends on electricity. Your hosting company probably has an uninterruptible power supply (UPS) which will take over instantly in the event of power failure. It can provide <a href="http://powercontinuity.co.uk/help/faqs/ups-and-generators-how-long-can-they-run-for" rel="nofollow external" class="bo">power to your Web server</a> for a few minutes, long enough to have a diesel generator ready to take over. The major networking equipment connecting your Web server to the Internet is probably protected with UPSes and generators as well. And your laptop should survive for a few more hours if fully charged.</p>
    <p>Your wireless router, however, will cease to function. It is the weakest link. You can get around it by checking the Internet via your smartphone, which should work as long as your nearest tower has backup power, and there is a route to the Internet through other working towers. It might be very slow though, especially if everyone in your neighborhood has also had the same idea. If your website is still gone, then the problem is a bit more personal.</p>
    <h3>Networking</h3>
    <p>Power outages aren’t the only things which upset broadband routers. They have many inventive ways of failing, as does all the other networking equipment between you and your website, and all the copper and fiber-optic cable in between.</p>
    <p>To explore networking issues, you’ll need to run some commands. Much of this information is also available through various menus, but the command line gives you more data more quickly. On Mac OS X, go to Applications → Utilities and run Terminal. In Ubuntu Linux, the terminal is under Applications → Accessories. In Windows, go to Start → All Programs → Accessories and choose Command Prompt.</p>
    <h4> Your IP Address</h4>
    <p>Every computer connected to the Internet has a numerical IP (Internet Protocol) address. To find out yours, run the command ifconfig on Mac and Linux and <code>ipconfig /all</code> on Windows. The result will look something like this:</p>
    <pre><code>$ ifconfig&#x000A;    eth0      Link encap:Ethernet  HWaddr 00:10:dc:75:d9:5b  &#x000A;              inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0&#x000A;              inet6 addr: fe80::210:dcff:fe75:d95b/64 Scope:Link&#x000A;              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1...&#x000A;    </code></pre>
    
    <pre><code> &#x000A;    lo        Link encap:Local Loopback  &#x000A;              inet addr:127.0.0.1  Mask:255.0.0.0&#x000A;              inet6 addr: ::1/128 Scope:Host&#x000A;              UP LOOPBACK RUNNING  MTU:16436  Metric:1...&#x000A;    </code></pre>
    
    <p>This says that the computer (Linux in this case) has two network interfaces. The <code>eth0</code> is the one which communicates with the Internet via a cable. If this computer had wireless there would also be an <code>eth1</code> or <code>wlan0</code> interface. The loopback interface lo is used as a shortcut for communicating with itself. Each interface has an IP address on the local network. The important line here is <code>inet addr:192.168.0.11</code>.</p>
    <p>This gives the computer’s IP address. If you have a cable attached and wireless turned on, you may have two active interfaces and two IP addresses, but it’s usually just the one. Macs tend to call these interfaces <code>en0</code> and <code>en1</code>. Windows is more verbose and uses sexy names like “Ethernet adapter Local Area Connection”.</p>
    <h4>DHCP</h4>
    <p><strong>How does your computer know its IP address?</strong> Especially on a home or wireless network, you do not need to enter this information yourself. When your computer first connects to your home network, it sends out a request to every other device on the network, something like: “Can someone please give me an IP address?”</p>
    <p>Your broadband router should dutifully respond and assign your computer an IP address. As you probably know, routers are the devices that hold the Internet together. Unlike laptops and desktops, routers have more than one network interface, more than one cable (or wireless point) attached to them and so more than one IP address. In your home or office, the router is the little box which provides your connection to the Internet via your broadband service.</p>
    <p>The method used to assign an IP address is Dynamic Host Configuration Protocol (DHCP). If there is no IP address when you run <code>ifconfig</code> or <code>ipconfig</code>, you can force your computer to retrieve new DHCP settings. On Windows, run <code>ipconfig /release</code> followed by <code>ipconfig /renew</code>. On a Mac, run <code>sudo ipconfig set en0 DHCP</code>, and on Linux use <code>sudo dhclient eth0</code>. On Mac and Linux, the actual command is prefaced by sudo which forces you to put in the root password for the computer. You must also specify which interface to renew, usually <code>eth0</code> on Linux and <code>en0</code> for Mac.</p>
    <p>If this was successful, then voilà! You’re a tiny bit closer to being back on the Internet. If not, check your broadband router. It may be off, disconnected or broken, or it may just need resetting.</p>
    <h4> Default Gateway</h4>
    <p>You know your broadband router was alive at some point in the recent past because it gave you an IP address. But that could have been up to three days ago: is it still there now?</p>
    <p>Every computer on the Internet also has a default gateway. This is basically the IP address of the piece of networking equipment at the other end of your network cable or wireless connection. <strong>It is your computer’s gateway to the Internet.</strong> Every time you request anything from the Internet, it goes via this gateway. To find our your default gateway, run <code>netstat -nr</code> on Mac and Linux, and <code>route print</code> (or <code>ipconfig</code> again) on Windows. You will get something a bit like:
    </p>
    <pre><code>&#x000A;    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface&#x000A;    192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0&#x000A;    0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0&#x000A;    </code></pre>
    
    <p>In the Destination column above, the 0.0.0.0 (or the word “default”) means anywhere and the G in the Flags column stands for “Gateway”. The default gateway of this computer is therefore 192.168.0.1. For people at home or in a small office this is probably the internal IP address of the broadband router.</p>
    <p>You can use the ping command to see if it is up and available. Type <code>ping 192.168.0.1</code>.</p>
    <pre><code>$ ping 192.168.0.1&#x000A;    PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.&#x000A;    64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=1.31 ms&#x000A;    64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.561 ms&#x000A;    64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=12.6 ms&#x000A;    </code></pre>
    
    <p>The “64 bytes from 192.168.0.1” represents a successful reply. If you get a reply, then your broadband router is reachable. If not, then check it again. On Mac and Linux the replies will go on forever until you press Control + C. On Windows, it will quit after the fourth ping.</p>
    <h4>Beyond the Router</h4>
    <p>To go beyond your router, you will need the <code>traceroute</code> command on Mac and Linux, and <code>tracert</code> on Windows. This command traces a route through the Internet, reporting each networking device (router) it comes across. IP addresses are formed of four numbers from 0 to 255. Pick an IP address out of a hat and try it:</p>
    <pre><code> &#x000A;    $ traceroute -q 1 -n 1.2.3.4&#x000A;    traceroute to 1.2.3.4 (1.2.3.4), 30 hops max, 60 byte packets&#x000A;     1  *&#x000A;     2  80.3.65.217  9.163 ms&#x000A;     3  213.105.159.157  11.158 ms&#x000A;     4  213.105.159.190  11.215 ms&#x000A;    ...&#x000A;    13  72.14.236.149  98.484 ms&#x000A;    14  209.85.252.47  104.071 ms&#x000A;    15  *&#x000A;    16  *...&#x000A;    </code></pre>
    <p>The <code>-q 1</code> option on Mac and Linux tells the command to try each router only once. The <code>-n</code> tells it not to bother looking up the human-readable name for each router, which makes the command much slower. This option is <code>-d</code> on Windows, so use <code>tracert -d 1.2.3.4</code>.</p>
    <p>Each step above is known as a hop in networking jargon. The first hop is the broadband router. It is probably configured not to provide any information about itself, so <code>traceroute</code> just shows an asterisk. The second hop takes it outside the local network to the other side of the broadband router.</p>
    <p>At each subsequent hop sits another router, probably with many network interfaces and many IP addresses. Each router has a routing table like the one above. Its table contains rules like: if the destination starts with 0 to 91, then send the packet down interface <code>eth1</code> (the Use <code>Iface</code> column); if it starts with 92 to 128, use <code>eth2</code>.</p>
    <p>This example goes 14 hops before reaching a dead end, either because the IP address is blocked or not in use.</p>
    <p><strong>That is about as far as numbers alone can take us.</strong> Hopefully you’ve established that civilization is still going at least a couple networking hops beyond your front door. You’ve also learned how to use the useful networking commands <code>ifconfig</code>, <code>ping</code> and <code>traceroute</code>. To explore further, you’ll need DNS.</p>
    <h3>The Domain Name System</h3>
    <p>Smashing Magazine could have gone with <a href="http://80.72.139.101">http://80.72.139.101</a> as its main website address rather than <a href="http://www.smashingmagazine.com">http://www.smashingmagazine.com</a>. It would have had two advantages: it would have used less space on business cards; and it would still have worked when DNS was down. However, Smashing’s marketing people may have objected, and their customer base would have been limited to people with extremely good memories.</p>
    <p>The domain name system <strong>makes the Internet more human-friendly</strong> by translating between domain names like <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> and IP addresses like 80.72.139.101. DNS is a big hierarchical distributed database. You are probably aware that there is no single computer which knows all the translations and which everybody else consults. Rather, it is a huge network of computers each of which know a few translations, and know who else to ask if they don’t.</p>
    <h4>Your Local DNS Server</h4>
    <p> Every computer has a local DNS server. It is one of the crucial bits of information your broadband router provides via DHCP: your IP address; your default gateway’s IP address; and your local DNS server’s IP address.</p>
    <p>When you type a website address into your browser, your computer first asks its local DNS server to translate it into an IP address. To find out your DNS server, run the command <code>cat /etc/resolv.conf</code> on Mac and Linux, or <code>ipconfig /all</code> on Windows. On Mac and Linux, the cat command displays a file, and the file <code>/etc/resolv.conf</code> contains your domain name servers. The file looks like:</p>
    <pre><code>$ cat /etc/resolv.conf &#x000A;    nameserver 194.168.4.100&#x000A;    nameserver 194.168.8.100&#x000A;    </code></pre>
    <h4>Nslookup</h4>
    <p>To diagnose DNS problems, first check that your local DNS server is alive with <code>ping</code>. If it is, then you can use the <code>nslookup</code> command to see if it’s responding correctly. <code>nslookup</code> stands for name server lookup and is used like this:</p>
    <pre><code>$ nslookup <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> &#x000A;    Server:		194.168.4.100&#x000A;    Address:	194.168.4.100#53&#x000A;    Non-authoritative answer:&#x000A;    Name:		<a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a>&#x000A;    Address:	80.72.139.101&#x000A;    </code></pre>
    <p>This command tells you the DNS server used (194.168.4.100) and the IP address you are looking for (80.72.139.101). If nslookup didn’t respond, then your Internet woes lie with your local DNS server. If you are at home or in a small office, your DNS server is probably provided by your broadband company.</p>
    <p>They generally provide two or more of them, so it’s unlikely that they will all fail. If you happen to know the IP address of a different name server, you could query that instead (<code>nslookup <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> 194.168.8.100</code>), but it may well refuse to talk to a stranger. You’ll probably need to complain to your broadband company about the problem instead.</p>
    <h4>Free Advertising</h4>
    <p>Have you ever typed in a website address incorrectly and come up with a branded page from your broadband provider? Instead of admitting “I don’t know”, your local name server is sneakily replying with an alternative IP address of its choice, promoting the broadband company it is owned by. It’s nice to see that the marketing people are into DNS.</p>
    <p><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/07/virgin-redirect.png" alt="Virgin Redirect" style="max-width: 100%; height: auto;"><br><em>Broadband company intercepting a non-existent website.</em></p>
    <h4>A Full Journey</h4>
    <p>Having confirmed that your local DNS server is working, you can tentatively try to establish human-friendly contact with the Internet using <code>traceroute</code> with a domain name instead of an IP address, and leaving out the <code>-n</code> option. This will report a readable name for each router.</p>
    <pre><code>$ traceroute -q 1 <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a>&#x000A;    traceroute to <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> (80.72.139.101), 30 hops max, 60 byte packets&#x000A;     1  *&#x000A;     2  brig-core-2b-ae6-725.network.virginmedia.net (80.3.65.177)  10.542 ms&#x000A;     3  popl-bb-1b-ae14-0.network.virginmedia.net (213.105.159.157)  13.934 ms&#x000A;     4  popl-bb-1c-ae1-0.network.virginmedia.net (213.105.159.190)  14.454 ms&#x000A;     5  nrth-bb-1c-ae7-0.network.virginmedia.net (62.253.174.137)  15.982 ms&#x000A;     6  nrth-tmr-1-ae1-0.network.virginmedia.net (213.105.159.30)  16.215 ms&#x000A;     7  fran-ic-1-as0-0.network.virginmedia.net (62.253.185.81)  36.090 ms&#x000A;     8  FFMGW4.arcor-ip.net (80.81.193.117)  39.064 ms&#x000A;     9  92.79.213.133 (92.79.213.133)  47.404 ms&#x000A;    10  92.79.200.190 (92.79.200.190)  45.385 ms&#x000A;    11  kar-145-254-15-178.arcor-ip.net (145.254.15.178)  40.421 ms&#x000A;    12  145.253.159.106 (145.253.159.106)  46.436 ms&#x000A;    13  1-3-frr02.continum.net (80.72.130.170)  49.321 ms&#x000A;    14  1-6-frr04.continum.net (80.72.130.158)  47.194 ms&#x000A;    15  <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> (80.72.139.101)  48.081 ms&#x000A;    </code></pre>
    <p>This reveals much more about the journey packets of data take. The first few hops in any traceroute are probably owned by the local broadband company, Virgin Media in this case. If the traceroute stopped here, then it would be an issue for them resolve. You could phone them for more information.</p>
    <p>Once the traceroute leaves your broadband provider, it enters a no man’s land of big inscrutable networking devices. In this case they are owned by Arcor, a subsidiary of Vodafone. If the traceroute fails here, it may represent a fairly major networking problem and there’s not much you can do.</p>
    <p>Eventually, it will reach the hosting company for the website in question (Continum.net in this case). If it fails there, then the fault may lie with your hosting company. Or it may simply be that the traceroute is blocked by a firewall. Or that your website has moved.</p>
    <h4>Moving Websites</h4>
    <p>It’s unlikely that your website has moved to a different server without you knowing, especially as you were just working on it last night, but you can double-check this.</p>
    <p><strong>Every DNS server keeps a cache of every domain name it has been asked for.</strong> This saves clogging up the Internet with requests for things that rarely change. The downside is that if someone changes the IP address for a domain like <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a>, it can take 24 to 48 hours for all the caches to clear so that everyone in the world knows the new IP address.</p>
    <p>To ascertain that you have the latest information, you first need to find out the local name server for the domain name you are querying. To do this, give <code>nslookup</code> the option <code>-type=ns</code>, like this on Mac, Linux and Windows:</p>
    <pre><code>$ nslookup -type=ns <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a>&#x000A;    Server:		194.168.4.100&#x000A;    Address:	194.168.4.100#53&#x000A;    Authoritative answers can be found from:&#x000A;    smashingmagazine.com&#x000A;    	origin = a.regfish-ns.net&#x000A;    	mail addr = postmaster.regfish.com...&#x000A;    </code></pre>
    <p>The <code>origin</code> (or sometimes <code>primary name server</code>) is the local DNS server for <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a>. You can use <code>nslookup</code> again to query this server directly:</p>
    <pre><code>$ nslookup <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> a.regfish-ns.net&#x000A;    Server:        a.regfish-ns.net&#x000A;    Address:       79.140.49.11#53&#x000A;    Name:	       <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a>&#x000A;    Address:       80.72.139.101&#x000A;    </code></pre>
    <p>Compare this to the <code>nslookup</code> on your local DNS server. It no longer says “non-authoritative”. This is now the authoritative reply. It’s the same IP address, so we know that <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> didn’t suddenly move last night.</p>
    <p>On Mac and Linux, you can use the <code>dig command</code> to find out exactly how long your local DNS server has cached this translation for. It stands for domain information groper. Windows users will need to search for an online <code>dig</code> tool as Windows doesn’t natively support this command:</p>
    <pre><code>$ dig <a href="http://www.smashingmagzine.com">www.smashingmagzine.com</a>&#x000A;    ...&#x000A;    ;; ANSWER SECTION:&#x000A;    <a href="http://www.smashingmagzine.com">www.smashingmagzine.com</a>. 246	IN	A	80.72.139.101...&#x000A;    </code></pre>
    <p>The 246 is the number of seconds before the local DNS server’s cache expires and it has to rediscover the IP address for <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a>.</p>
    <h4>Your Broadband Router Revisited</h4>
    <p>Now that DNS is working, you can find out what the world thinks of you. You have already discovered your computer’s own IP address above. But that may not be the one that it uses on the Internet. If it starts with 192.168 or 10, then it is definitely not a public address. Those IP address ranges signify local IP addresses for use within your internal network only.</p>
    <p>When your computer sends a request to the Internet, it first goes to your default gateway (your broadband router), which also has a local internal IP address such as 192.168.0.1. But your router has another public IP address as well. Your router wraps up your request and resends it from this public IP address instead.</p>
    <p>Therefore, your broadband router’s public IP address is basically your public IP address. This is how the rest of the Internet sees you as you browse. This is the IP address that will show up in log files in any of the websites you visit. Consequently, anybody else using the same broadband router will have the same public IP address as you. Your router handles all of this using a process called network address translation, making sure requests and information go out and come back to the right local IP address.</p>
    <p>You can find out your broadband router’s public IP address by visiting a website like whatismyipaddress.com. Alternatively, you can run the command <code>curl ipinfo.io/ip</code> on Mac or Linux, or <code>wget -O- -q ipinfo.io/ip</code> on Linux. Both <code>curl</code> and <code>wget</code> retrieve a Web page (<a href="http://ipinfo.io/ip">http://ipinfo.io/ip</a>) from the Internet. The <code>-O-</code> option (that’s a letter O, not zero) tells <code>wget</code> to output the result to the screen (signified by a single hyphen) rather than save it to a file, and <code>-q</code> tells it to do it quietly. <code>curl</code> automatically outputs to the screen. To use <code>curl</code> on Windows you have to download and install it first. All these methods go outside your local network and look back. There is no way to find out your router’s public IP address from the inside. The output is quite simple:</p>
    <pre><code>$ curl ipinfo.io/ip&#x000A;    85.106.118.199&#x000A;    </code></pre>
    <h4>Where Are They?</h4>
    <p>Websites like whatismyipaddress.com and ipinfo.io do more than just tell you your public IP address. They also provide geolocation services. It is interesting to take the IP addresses from the <code>traceroute</code> above and copy and paste them in. Geolocation guesses at the physical location of the router, and can also tell you who owns the IP address. The address 62.253.185.81 above is in southern England but the next one crosses the Channel to 80.81.193.117 in Frankfurt, Germany. This type of geolocation relies on databases of IP address ownership.</p>
    <p>In fact, there are websites which can map this all out for you, such as <a href="http://en.dnstools.ch/visual-traceroute.html" rel="nofollow external" class="bo">DNStools.ch</a> and <a href="www.yougetsignal.com/tools/visual-tracert" rel="nofollow external" class="bo">YouGetSignal</a>. The starting points for these traceroutes will be the Web server hosting the tool, rather than your own computer. Below is an example from a website in Los Angeles to the BBC website in London.</p>
    <p><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/07/visual-traceroute-crop.png" alt="Visual Traceroute" style="max-width: 100%; height: auto;"><br><em> Visual traceroute from Los Angeles to London covering 7,904 miles in 4.8 seconds.</em></p>
    <h3>Connecting To Your Server</h3>
    <p>So, civilization and its Internet are both up and running. What’s gone wrong?<br>
    Your website lives on a computer somewhere out there, probably in a big air-conditioned room full of other computers, with multiple fire doors and an awful lot of colorful cabling. This computer is colloquially known as a Web server.</p>
    <p>Imagine for a moment that your Web server is the nation of France. If you want to send a large item of furniture to somewhere in France, it will be wrapped up tight on a container ship and sent off across the sea. It will arrive in one of France’s major ports, maybe Marseille or Bordeaux or Le Havre. It doesn’t really matter to you which port it goes through, but it does matter to the shipping company. Computers are similar, except they are a bit smaller and have 65,535 ports.</p>
    <p>On computers, some ports are assigned specific functions. On a Web server, port 80 receives and replies to Web browsing requests. Ports 25 and 110 deal with email. A typical Web request could involve port 50133 on your computer (the sending port is often chosen randomly) sending a request to port 80 at 80.72.139.101, something like “Hey you, send me the Web page /index.html”.</p>
    <h4>Telnet and Netcat</h4>
    <p>The <code>telnet</code> command allows you to mimic a container ship and connect to a specific port on a server. Windows does not have <code>telnet</code> by default, but you can enable it on Windows 7 by going to Start → Control Panel → Programs → Turn Windows features on or off → Telnet Client.</p>
    <p>Since we’re dealing with a website problem, and since the Web server is almost always on port 80, try telnetting to port 80:</p>
    <pre><code>$ telnet <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> 80&#x000A;    Trying 80.72.139.101...&#x000A;    telnet: Unable to connect to remote host: Connection refused&#x000A;    </code></pre>
    <p>Mac and Linux support an alternative command: <code>netcat</code>. It is more specifically suited for networking tasks and supports additional features like proxies. This chapter will focus on <code>telnet</code>, however, as it also works on Windows. Add <code>-v</code> to <code>netcat</code> to make it verbosely tell you what it’s doing.</p>
    <pre><code>$ netcat -v <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> 80&#x000A;    netcat: connect to <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> port 80 (tcp) failed: Connection refused&#x000A;    </code></pre>
    <p>Uh oh.</p>
    <p>Except, not really. I faked the issue above. Smashing Magazine wasn’t really down. But I will use <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> as an example domain throughout this chapter. Suspend your disbelief and pretend that Smashing has moved into the Widget 3000 market and has sequentially fallen subject to just about every networking and website problem imaginable, and subsequently overcome them.</p>
    <h4>Control Panel</h4>
    <p>Whenever your Web server receives data on port 80, it sends it to a piece of software for processing. Confusingly, that software is also called a Web server. By far the most common type of Web server software is Apache. According to W3Techs in June 2013, <a href="http://w3techs.com/technologies/overview/web_server/all" rel="nofollow external" class="bo">it had a market share of 65.2%</a>. Microsoft’s Internet Information Server (IIS) is second with 15.7%, just in front of nginx at 14.3%.</p>
    <p>Web server software shouldn’t ever stop working. But if it does you can, hopefully, just restart it again. The quickest way to do this is using a control panel provided by your server. Windows servers (<a href="http://w3techs.com/technologies/overview/operating_system/all" rel="nofollow external" class="bo">34.3% market share in June 2013</a>) are often managed by Remote Desktop or VNC which allow you to take control of the server’s screen, keyboard and mouse, and change settings directly on the server.</p>
    <p>The rest of this chapter, however, will focus on Linux and UNIX servers (65.7%), which are usually managed via a Web interface such as Plesk, CPanel or Webmin. These management tools are really just websites, but running on a different port. Plesk, for example, usually runs on port 8443, CPanel on 2082 or 2083 and Webmin on 10000.</p>
    <p>Dig deep into your email folders and look for the URL, username and password for your control panel. Log in and find the screen which allows you to restart your Web server software. In Plesk, look for “Services management” (in Server or Tools &amp; Settings) and press the Play button next to “Web Server (Apache)”.</p>
    <p><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/07/plesk.png" alt="Plesk" style="max-width: 100%; height: auto;"><br><em> Restarting a Web server with Plesk.</em></p>
    <h4>SSH</h4>
    <p>If port 80 is down, there’s a good chance that the control panel won’t be available either. You will need to log in to the server and issue commands directly. For this there is Secure Shell (SSH). SSH is like the text-only version of Remote Desktop. It allows you to open a terminal window on the server. From a Linux or Mac desktop or laptop, use the command <code>ssh</code>. From a Windows computer, download and run PuTTY.</p>
    <p>You’ll need the username and password for your server, contained in the same email as above. On a Linux server, <code>root</code> is the most powerful administrative user. For security reasons, the SSH user from your email will often be something less privileged like <code>admin</code>. When you run SSH, you have to provide the username as part of the command. It will ask you to accept a security fingerprint and enter a password:</p>
    <pre><code>$ ssh root@<a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a>&#x000A;    The authenticity of host ‘<a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> (80.72.139.101)’ can’t be established.&#x000A;    RSA key fingerprint is 00:5a:cf:51:83:46:0b:91:29:ef:2e:1d:c9:59:e9:ab.&#x000A;    Are you sure you want to continue connecting (yes/no)? yes&#x000A;    Warning: Permanently added ‘<a href="http://www.smashingmagazine.com,80.72.139.101">www.smashingmagazine.com,80.72.139.101</a>’ (RSA) to the list of known hosts.&#x000A;    root@<a href="http://www.smashingmagazine.com%E2%80%99s">www.smashingmagazine.com’s</a> password: ...&#x000A;    </code></pre>
    <p><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/07/putty.png" alt="Putty" style="max-width: 100%; height: auto;"><br><em>Using PuTTY for SSH from a Windows computer.</em></p>
    <p>If successful, you’ll end up with a welcome message and a terminal prompt:</p>
    <pre><code>Linux dedivps-13236 2.6.10-091stab048.3 #1 SMP Fri Dec 7 17:06:14 GMT 2012 x86_64&#x000A;    Last login: Thu May  2 07:20:11 2013 from cpc1-brig18-2-0-cust123.3-3.cable.virginmedia.com&#x000A;    root@dedivps-13236:~#&#x000A;    </code></pre>
    <p>Note that this will only work on Linux or UNIX servers that have an SSH server which accepts connections, and the rare Windows servers that have opted to install it. For most other Windows servers, you’ll need Remote Desktop instead. If you can’t get at your server via a control panel or SSH, your options are very limited. There’s a slim chance that an overenthusiastic firewall is getting in the way, or that you’re experiencing a denial of service attack. Or else you’ll need to contact your hosting company and ask for help.</p>
    <h4>Firewalls</h4>
    <p>Firewalls are bits of hardware or software that filter incoming and outgoing data. These filters are applied according to the source and destination IP address and port. So, for example, a firewall should allow all requests going to the server’s port 80 or else nobody will be able to get to the website. But it may block all requests to port 8443 (Plesk), port 22 (SSH) or port 3389 (remote desktop) except from a few known and trusted IP addresses.</p>
    <p>You can sort of tell if there’s a firewall in your way depending on how the connection fails. To test if SSH is being blocked, you can run the command <code>ssh</code> or use <code>telnet</code> as above to port 22:</p>
    <pre><code>$ telnet <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> 22&#x000A;    Trying 80.72.139.101...&#x000A;    telnet: Unable to connect to remote host: Connection refused&#x000A;    </code></pre>
    <p>“Connection refused” means that your data reached the server but was probably refused entry for non-firewall reasons. For example, SSH may be turned off or running on a different port. The message “Connection timed out” or no message more strongly indicates a firewall block. If it does connect, press Control + ] to get to the <code>telnet&gt;</code> prompt and then type “quit” to quit.</p>
    <p>So if you have a firewall (that email should tell you), you need to make sure that SSH is allowed and that your public IP address is in the list of trusted ones. Even if you know your IP address was in the list yesterday, it may have changed today, particularly if you have had broadband issues recently. The public IP addresses assigned to home routers can stay the same for months on end, and then suddenly change. How and why and when depends on your broadband company and your neighbors. The only way to avoid this is to pay extra for a static or fixed IP address.</p>
    <p><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/07/firewall-trusted-ips.png" alt="Firewall" style="max-width: 100%; height: auto;"><br><em> Many firewalls maintain a list of trusted IP addresses.</em></p>
    <h4>Denial Of Service</h4>
    <p>Imagine that the Widget 3000 suddenly goes viral. The Queen of England is filmed throwing one at the winner of X Factor and suddenly everybody in the world wants to own one. You might think “Fantastic!” But unless your server infrastructure is prepared to go from 100 visits an hour to 100 million, you probably won’t actually sell very many. All those visitors accessing your website at once will grind the network and your server to a halt. The first few thousand visitors may receive half a Web page, the rest will be staring at blank browsers.</p>
    <p>And when you try to <code>telnet</code> to your server as above, it will also sit there waiting — no refusal but no entry either. This is roughly what happens in a distributed denial of service (DDoS) attack. All those hackers who have spent the last 15 years finding holes in Internet Explorer were not working in vain. They have managed to plant Trojan horses on millions of computers worldwide. When they issue the command, all those computers suddenly try to send data to and request data from your Web server, overwhelming it and making it unreachable.</p>
    <p>Unless you are running a bank or a bomb factory, or have managed to make some clever and determined enemies, it is unlikely to happen to you. Let’s assume <code>telnet</code> has instead connected successfully.</p>
    <h3>Checking Your Server</h3>
    <p>Now you’re in business. You’ve got a terminal window open on your server waiting for your every command. From now on, all the commands are being issued on your Linux server, not your laptop.</p>
    <h4>Listening to Port 80</h4>
    <p>The first step is to figure out which software should have responded when you tried to <code>telnet</code> to port 80. For that, you can use the netstat command to display all the networking information about your server. Add <code>-tlpn</code> to the command to make it show only <u>T</u>CP connections that it is <u>l</u>istening for, along with the <u>n</u>umeric port and the <u>p</u>rogram they belong to.</p>
    <pre><code>$ netstat -tlnp&#x000A;    Active Internet connections (only servers)&#x000A;    Proto Recv-Q Send-Q Local Address        Foreign Address      State       PID/Program name&#x000A;    tcp        0      0 127.0.0.1:53         0.0.0.0:*            LISTEN      4290/named          &#x000A;    tcp        0      0 127.0.0.1:5432       0.0.0.0:*            LISTEN      3507/postmaster&#x000A;    tcp        0      0 0.0.0.0:3306         0.0.0.0:*            LISTEN      7117/mysqld...&#x000A;    </code></pre>
    <p>This shows only an abbreviated output. It normally shows all the ports which the server is listening to, and there can be between 10 and 100 of them. When running any command, you can whittle down its output using the <code>grep</code> command. <code>grep</code> filters the output and only shows lines containing a word or phrase you have specified. The vertical bar | makes a pipe, piping the output of one command (<code>netstat</code>) into the input of another (<code>grep</code>). Try this instead:</p>
    <pre><code>netstat -tlpn | grep :80&#x000A;    tcp6       0      0 127.0.0.1:8005       :::*        LISTEN      22885/java&#x000A;    </code></pre>
    <p>This runs <code>netstat</code> and shows only results containing <code>:80</code>. This server has a <code>java</code> process listening to port 8005 but no Web server running.</p>
    <h4>Which Web Server</h4>
    <p>When a Linux server starts up it looks in the directory <code>/etc/init.d</code> and runs the scripts there to launch its software. On other UNIX flavors like BSD this might be <code>/etc/rc.d</code> or <code>/etc/rc.d/init.d</code>. This is similar to the Startup menu folder in Windows.</p>
    <p>You can see what your server starts using the <code>ls</code> command which <u>l</u>i<u>s</u>ts the files in a directory. The -l shows a long format with permissions, owners, size and date created.</p>
    <pre><code>$ ls -l /etc/init.d&#x000A;    total 368&#x000A;    -rwxr-xr-x 1 root root  7621 Sep 13  2012 apache2&#x000A;    -rwxr-xr-x 1 root root  3281 Oct  5  2012 bind9&#x000A;    -rwxr-xr-x 1 root root  2444 Jan  1  2011 bootlogd&#x000A;    -rwxr-xr-x 1 root root  5364 Nov  1  2011 courier-imap&#x000A;    -rwxr-xr-x 1 root root  3753 Dec 19  2010 cron...&#x000A;    </code></pre>
    <p>,p&gt;You are looking for a Web server software package such as <code>apache2</code>, <code>httpd</code> (the old name for Apache) or <code>nginx</code>. You can use <code>grep</code> again with the <code>-e</code> option which tells it to use a regular expression. In regular expressions, the vertical bar means “or” so this displays any files containing “apache” or “http” or “nginx”. The bar must be escaped with a back slash:</p>
    <pre><code>$ ls -l /etc/init.d | grep -e “apache\|http\|nginx”&#x000A;    -rwxr-xr-x 1 root root  7621 Sep 13  2012 apache2&#x000A;    </code></pre>
    <h4>Restarting the Web Server Software</h4>
    <p>The files in /etc/init.d are called shell scripts. The commands you’ve been using on Mac and Linux up till now form part of a C-type language which also includes setting variables and running loops. As in JavaScript, the semicolon at the end of each line is optional, but if you use it, you can cram several commands onto a single line. Here is a simple <code>for</code> loop on the command line:</p>
    <pre><code>$ for i in 1 2 3; do echo Line $i; done&#x000A;    Line 1&#x000A;    Line 2&#x000A;    Line 3&#x000A;    </code></pre>
    <p>To see a complex shell script, take a look at some of the startup scripts in <code>/etc/init.d</code>. Use the <code>less</code> command to view a file. Press space to view the next page or <code>q</code> to quit from <code>less</code>.</p>
    <pre><code>$ less /etc/init.d/apache2 &#x000A;    #!/bin/sh&#x000A;    set -e&#x000A;    SCRIPTNAME=”${0##*/}”...&#x000A;    </code></pre>
    <p>The reason we’re really here, though, is to restart the Web server software. If you logged into <code>ssh</code> as the administrative user <code>root</code>, you can run the restart command directly. In this case, you will have been typing your commands after a # instead of a $. If not, you’ll need to prefix it with the <code>sudo</code> command, which says <u>do</u> some command as the <u>s</u>uper <u>u</u>ser. You’ll need the root password to hand for sudo. To tell the Web server software to start, run:</p>
    <pre><code>$ sudo /etc/init.d/apache2 start&#x000A;    Password:&#x000A;    Starting apache2...&#x000A;    </code></pre>
    <p>Hopefully this will fail with a useful error message. Hopefully, because then you will know why it crashed in the first place, and you can plug the error message into Google to find out how to fix it.</p>
    <p>If it was unlucky enough to work, then your Web server is now running. All the scripts in /etc/init.d run as background processes, or daemons in UNIX parlance. This means that you can start them and they will stay running even after you exit from ssh, turn off you computer and go to the beach. This is unlike commands like <code>traceroute</code> and <code>ls</code> which do their thing and finish.</p>
    <p>You can run <code>netstat</code> again to double-check the Web server is now running. Notice the d at the end of of <code>apached</code>. It stands for daemon.</p>
    <pre><code>netstat -tlpn | grep :80&#x000A;    tcp        0      0 :::80            :::*             LISTEN      18201/apached&#x000A;    tcp6       0      0 127.0.0.1:8005   :::*             LISTEN      22885/java&#x000A;    </code></pre>
    <h4>Web Server Error Logs</h4>
    <p>If it failed to start and didn’t give a friendly error message, the next place to look is the error logs. These are usually in the <code>/var/log</code> directory named after the software. Run <code>ls /var/log</code> to double check. For example, Apache’s logs are in <code>/var/log/apache2</code>.</p>
    <pre><code>$ ls -l /var/log/apache2/*log*&#x000A;    -rw-r----- 1 root adm  1944899 May  5 09:59 /var/log/nginx/access.log&#x000A;    -rw-r----- 1 root adm   538152 May  4 02:40 /var/log/nginx/access.log.2.gz&#x000A;    -rw-r----- 1 root adm    28647 May  5 08:18 /var/log/nginx/error.log&#x000A;    -rw-r----- 1 root adm     5701 May  4 02:35 /var/log/nginx/error.log.2.gz&#x000A;    </code></pre>
    <p>This shows that Apache has an access log and an error log. Both logs are zipped up around 02:30 each morning. The next command first <u>c</u>hanges into the <code>/var/log/apache2</code> <u>d</u>irectory with the <code>cd</code> command, and then uses <code>tail</code> to view the last few entries in a log file.</p>
    <pre><code>$ cd /var/log/apache2; tail error.log&#x000A;    </code></pre>
    <p>To look at a gzipped log file, use the <code>zcat</code> command to output it and pipe through <code>tail</code>. The <code>-20</code> shows the last 20 lines.</p>
    <pre><code>$ zcat error.log.2.gz | tail -20&#x000A;    </code></pre>
    <p>Or better yet, just look for errors using grep. Use <code>zcat</code> with the <code>-f</code> option to display both normal and zipped log files. Then pipe the output through <code>grep</code> to search for the word “error” case <u>i</u>nsensitively:</p>
    <pre><code>$ zcat -f error.log* | grep -i error&#x000A;    </code></pre>
    <p>This command may produce a lot of output. If a Matrix fan happens to walk past your computer right now, they’ll be impressed to see all that raw data whizzing by. It won’t help you much, though, so pipe it through <code>less</code>:</p>
    <pre><code>$ zcat -f error.log* | grep -i error | less&#x000A;    </code></pre>
    <p><code>less</code> is powerful. You can press arrow keys or <code>j</code> to go down, <code>k</code> to go up, <code>/something</code> to search for “something” and <code>h</code> to see a helpful list of all the commands. If you can narrow down the moment of failure of your Web server to a few hours, you can use less to navigate to that part of the log file.</p>
    <h4>System Logs</h4>
    <p>There are several other useful log files in <code>/var/log</code> such as syslog (the system logger) and dmesg (bootup messages). They all use a similar date format so if you can narrow down the time when you suspect something went wrong, you can search them all at once. This command changes to the <code>/var/log</code> directory and then outputs all the files using <code>zcat -f</code>. The <code>[234]</code> in <code>grep</code> is borrowed from regular expressions, and matches the numbers 2 or 3 or 4. So this will display any error messages in any of the logs that took place on 5 May between 02:00 and 04:00 in the morning:</p>
    <pre><code>$ cd /var/log; zcat -f * | grep “May  5 0[234]:” | less &#x000A;    </code></pre>
    <h4>Out of Space</h4>
    <p>If your Web server software still won’t start, and the error remains elusive, there are a couple common problems you can explicitly check for. Your server could have run out of hard drive space. Use the command <code>df</code> to show <u>d</u>isk <u>f</u>ile usage. The <code>-h</code> shows things in human-friendly form (with M for megabyte and G for gigabyte instead of really big numbers):</p>
    <pre><code>$ df -h&#x000A;    Filesystem           1M-blocks      Used Available Use% Mounted on&#x000A;    /dev/simfs               20.4G      9.8G     10.6G  49% /&#x000A;    tmpfs                     1.6G         0      1.6G   0% /lib/init/rw&#x000A;    tmpfs                     1.6G         0      1.6G   0% /dev/shm&#x000A;    </code></pre>
    <p>If that was a problem, then a quick solution is to find and delete really big files. The find command is very powerful. The <code>-size</code> option tells it to look for files of at least the given size, and the <code>-printf</code> option tells it to print the size (<code>%12s</code>, where the 12 directs the print area to be 12 characters wide to help line things up), last modification time (<code>%t</code>), directory (<code>%h</code>), file name (<code>%f</code>) and then a new line (<code>\n</code>). To view all files over 10 megabytes try:</p>
    <pre><code>$ find / -size +10M -printf “%12s %t %h/%f\n”&#x000A;       445631888 Mon Mar 18 13:38:07.0380913017 2013 /var/www/some-huge-file.zip&#x000A;    </code></pre>
    <p>To delete the file and free up space quickly:</p>
    <pre><code>$ rm /var/www/some-huge-file.zip&#x000A;    </code></pre>
    <h4>Out of Memory</h4>
    <p>To check your server’s RAM usage, run the <code>free</code> command, again with <code>-m</code> to show in megabytes:</p>
    <pre><code>$ free -m&#x000A;                 total       used       free     shared    buffers     cached&#x000A;    Mem:          3067       2673        393          0          0        819&#x000A;    -/+ buffers/cache:       1853       1213&#x000A;    Swap:            0          0          0&#x000A;    </code></pre>
    <p>This server has 3GB of total memory and 393MB free. This is fine as Linux likes to use a lot of its memory. It’s the <code>buffers/cache</code> line which you should focus on. If this is nearly all used, then your system may be struggling to cope.</p>
    <p>To find out what is hogging all the memory, use the top command. It shows a real-time display of system CPU and memory usage. Unfortunately this will also run very slowly if your server is under strain, but it may tell you what’s causing the problem.</p>
    <pre><code>$ top&#x000A;      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND&#x000A;    22885 tomcat6   20   0 2061m 159m 2644 S    1  5.2 780:41.85 java&#x000A;        1 root      20   0  8360  568  536 S    0  0.0   0:52.30 init&#x000A;        2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd/10086&#x000A;        3 root      20   0     0    0    0 S    0  0.0   0:00.00 khelper/10086&#x000A;    14579 root      20   0 40900 3124 1668 S    0  0.1   1:30.27 nginx...&#x000A;    </code></pre>
    <p>If something is being a memory hog, you can kill it. However, be sure you know what it is first. You may crash the server completely, or lock yourself out, or stop an important database amalgamation which your efficiency-unaware colleague started three days ago. To kill a process, press k and type in the number from the process ID (PID) column. It will ask for confirmation and then try to kill the process. If you are not root, it may say “Operation not permitted”, in which case you’ll need to run <code>sudo top</code> instead.</p>
    <p>The PID is used to identify a piece of software running on a computer. Each instance of an application, program or software has a unique PID. If the process refuses to go away, you can press <code>q</code> to leave <code>top</code> and try the <code>kill</code> command instead. Give it the more extreme <code>-9</code> option. <code>top</code> sends the friendly signal 15 (termination). Signal 9 goes straight for the kill.</p>
    <pre><code>$ sudo kill -9 22885&#x000A;    </code></pre>
    <p>Run <code>top</code> again. If some other similar process has taken over the memory-eating honors, then you have only killed a child process. You will need to find out the parent which spawned the misbehaving child in the first place, because killing the parent will also stop all the children. The ps command can be used to display information about a specific process. Normally it does not show the parent process ID, so you need to add the <code>-o</code> option and specify that the output should show the parent process <code>ID ppid</code> and the full command that started it:</p>
    <pre><code>$ ps -o ppid,command 14579&#x000A;     PPID COMMAND&#x000A;     6950 nginx: worker process&#x000A;    </code></pre>
    <p>This nginx process is not the main one.</p>
    <pre><code>$ ps -o ppid,command 6950&#x000A;     PPID COMMAND&#x000A;        1 nginx: master process /usr/sbin/nginx&#x000A;    </code></pre>
    <p>A very low parent PID means that this process is the daddy. Killing process 6950 on this server will kill the main <code>nginx</code> process and all its children.</p>
    <p>There is an easier way to do this. You can search for processes using <code>pgrep</code> and kill them with <code>pkill</code>. The <code>-l</code> tells <code>pgrep</code> to <u>l</u>ist the process name as well. For example:</p>
    <pre><code>$ pgrep -l nginx&#x000A;    6950  nginx&#x000A;    14579 nginx...&#x000A;    </code></pre>
    <p>And then go in for the kill with <code>sudo pkill nginx</code>. A further way to search for processes is using <code>ps</code> with the <code>aux</code> option as in <code>ps aux | grep nginx</code>. Easier, but you wouldn’t have learned about the wonder of <code>top</code>.</p>
    <h4>Speaking HTTP</h4>
    <p>At this stage, your Web server software is hopefully up and running. If it did crash, you’ve restarted it, found out the reason and taken steps to prevent it from happening again.</p>
    <p>You can now double-check your Web server is up and running by telnetting to port 80 from your laptop again. This time it should say “Connected” and then wait for your request. Web servers understand HTTP (hypertext transfer protocol). After a connection is established type <code>GET / HTTP/1.1</code> to tell the server you would like to <code>GET</code> (as opposed to <code>POST</code>) the home page / and that you speak version 1.1 of the protocol.</p>
    <p>Press Enter and then type the <code>Host:</code> followed by the host name. This line is only necessary on servers which host more than one website. HTTP does not know that you telnetted to <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a>. As far as it is concerned, you telnetted to 80.72.139.101 and it needs to know which of its many websites you are interested in. Press Enter twice to make the request. You should get back a long stream of text and HTML:</p>
    <pre><code>&#x000A;    $ telnet <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a> 80&#x000A;    Trying 80.72.139.101...&#x000A;    Connected to <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a>.&#x000A;    Escape character is ‘^]’.&#x000A;    GET / HTTP/1.1&#x000A;    Host: <a href="http://www.smashingmagazine.com">www.smashingmagazine.com</a>&#x000A;    &#x000A;    HTTP/1.1 200 OK&#x000A;    Date: Thu, 09 May 2013 13:25:52 GMT&#x000A;    Content-Type: text/html; charset=UTF-8&#x000A;    Transfer-Encoding: chunked&#x000A;    Connection: keep-alive&#x000A;    X-Powered-By: PHP/5.2.17&#x000A;    Content-Length: 25023&#x000A;    Content-Type: text/html&#x000A;    &#x000A;    &lt;html&gt;&#x000A;    &lt;head&gt;&lt;...&#x000A;    </code></pre>
    <p>The lines above are mostly HTTP headers. The <code>HTTP/1.1 200 OK</code> says that the server also speaks version 1.1 of HTTP and gives the successful HTTP response code 200. Other common responses are 500 for Internal Server Error and 404 for File Not Found. It then continues with the HTML. If the Connection header specified “keep-alive” then telnet will wait for your next request and you’ll need to type <code>Control + ]</code> and then “quit” to exit. If the Connection header said “close” then it will finish by itself and say “Connection closed by foreign host” at the bottom.</p>
    <p><em>Paul Tero's chapter has been reviewed by <a href="https://twitter.com/coderholic" rel="nofollow external" class="bo">Ben Dowling</a> and <a href="https://twitter.com/chikuyonok" rel="nofollow external" class="bo">Sergey Chikuyonok</a>.</em></p>
    <h3>Part Two Coming Up Next Week!</h3>
    <p>We hope you've enjoyed the first part of the Smashing Book #4 sample chapter! We would sincerely appreciate your support with an occasional <a href="https://twitter.com/intent/tweet?source=webclient&amp;text=I%20am%20reading%20@smashingmag's%20sample%20chapter%20of%20the%20upcoming%20Smashing%20Book%20%234!%20http://www.smashingmagazine.com/2013/07/23/how-to-fix-the-web/%20%23smbook4" rel="nofollow external" class="bo">tweet</a>, Facebook post or Google+ update, or just a word to your friends and colleagues! You can also learn more about the <a href="http://www.smashingmagazine.com/2013/07/10/add-twitter-avatar-smashing-book-4/" rel="nofollow external" class="bo">Smashing Book #4</a> first. Again, thank you for all your support!</p>
    <p><em>Credits of image on front page: <a href="http://www.flickr.com/photos/brostad/5841286379" rel="nofollow external" class="bo">Bernt Rostad</a>.</em></p>
    <p><em>(il)</em></p>
    <hr>
    <p><small>© The Smashing Editorial for <a href="http://www.smashingmagazine.com" rel="nofollow external" class="bo">Smashing Magazine</a>, 2013.</small></p>
    </div>
]]>
</Body>
<Summary>        We are very happy to present a sample chapter from the upcoming printed Smashing Book #4: New Perspectives on Coding, written by Paul Tero. Please note that the second part of this chapter...</Summary>
<Website>http://www.smashingmagazine.com/2013/07/23/how-to-fix-the-web/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/33030/guest@my.umbc.edu/fc603d927088b6cdb4d66c52bc2eb009/api/pixel</TrackingUrl>
<Tag>coding</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>web</Tag>
<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>Tue, 23 Jul 2013 08:38:24 -0400</PostedAt>
<EditAt>Tue, 23 Jul 2013 08:38:24 -0400</EditAt>
</NewsItem>

</News>
