<?xml version="1.0"?>
<News hasArchived="true" page="8859" pageCount="10784" pageSize="10" timestamp="Wed, 02 Sep 2026 05:33:34 -0400" url="https://my3.my.umbc.edu/posts.xml?mode=activity&amp;page=8859&amp;range=2">
<NewsItem contentIssues="false" id="28414" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28414">
<Title>Take the W3C Brand Survey through 5 May 2013 - Enter to Win!</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>Who is W3C to you? Who should we be?</p>
    
    <p>As W3C nears its 20th anniversary in 2014 we are conducting a research project.  We 
    invite you to complete our first <a href="http://pull.erssurvey.com/W3CT" rel="nofollow external" class="bo">public survey about the W3C brand</a>. Your responses will help guide where we direct our energies as we evolve the W3C brand.</p>
    
    <p>The <a href="http://pull.erssurvey.com/W3CT" rel="nofollow external" class="bo">survey</a>, open through 5 May 2013, should take approximately 15 minutes to complete. Participants who complete the survey may enter to win an Apple iPad mini.</p>
    
    <p>W3C has retained Salloway and Associates, an independent market strategy and research company, to conduct this survey on a confidential and professional basis. W3C will receive only anonymized data. Please see the survey for the complete privacy policy.</p>
    
    <p>We look forward to hearing from you!</p>
    </div>
]]>
</Body>
<Summary>Who is W3C to you? Who should we be?    As W3C nears its 20th anniversary in 2014 we are conducting a research project.  We  invite you to complete our first public survey about the W3C brand....</Summary>
<Website>http://www.w3.org/News/2013.html#entry-9801</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28414/guest@my.umbc.edu/25f50d14a33636f8fb9269c114f24127/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>sql</Tag>
<Tag>top-story</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>Mon, 29 Apr 2013 14:43:41 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="28410" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28410">
<Title>What I Learned at Creative South</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>This past weekend, fellow Treehouser <a href="http://twitter.com/mathelme" rel="nofollow external" class="bo">Mat Helme</a> and I had the privilege of speaking at <a href="http://columbuscreativesouth.com" title="Creative South" rel="nofollow external" class="bo">Creative South</a> in Columbus, GA. It was a great conference built around design and illustration that boasted the likes of <a href="http://draplin.com" rel="nofollow external" class="bo">Aaron Draplin</a>, <a href="http://signalnoise.com" rel="nofollow external" class="bo">James White</a>, <a href="http://rog.ie/" rel="nofollow external" class="bo">Rogie King</a>, <a href="http://ryanhamrick.com/" rel="nofollow external" class="bo">Ryan Hamrick</a>, the <a href="http://wegothoodzpah.com/" rel="nofollow external" class="bo">Hood sisters</a> and more. </p>
    <p>Every time I speak or attend one of these great events I like to focus in on a few takeaways to bring home with me. I’d like to share some of those with you now. </p>
    <h2>Being Around Others in the Community is Important</h2>
    <p>One of the most interesting phrases I heard repeatedly at the conference was how much getting together with the art and web community meant to the people that attended the conference. Many times we creatives can find ourselves among family and friends that don’t really understand what it is we do. </p>
    <p>Attending conferences like these allow us to share ideas with like-minded artists and meet face-to-face with our family away from family. It’s inspiring to see amazing work and hear the processes and passion straight from the artist’s mouth. </p>
    <h2>Remember the Magic of Who You Are</h2>
    <p><a href="http://rog.ie" rel="nofollow external" class="bo">Rogie King</a>, amazing illustrator and co-founder of <a href="http://neonmob.com" rel="nofollow external" class="bo">Neon Mob</a>, gave an inspiring talk about re-finding the magic of illustration through the passion he had for Disney as a kid. Many times the things that we once loved were forced into seclusion in the name of parents that didn’t understand, or a society hell-bent on telling us that our dreams won’t get us anywhere in “the real world”.</p>
    <p>Rogie reminded me that who we were as kids was exactly who we were before life put a filter on us. I find myself now rediscovering the things I once loved and how they can make me better at what I do.</p>
    <h2>Be Grateful and Work Hard</h2>
    <p>Designers have a tendency to complain these days about how bad clients are and that design is somehow superior to what our clients do. The great Aaron Draplin challenged us to remember to be grateful that we get to do this awesome work for a living and that what we do, no matter how much we make from it, can help people in ways many professionals can’t. </p>
    <p>We’re very lucky to have found something we love to do and make a living from it. We should never take that for granted and try to work even harder to use our skills to make a lasting and emotional difference. </p>
    <h2>There’s Always Someone Better</h2>
    <p>The individuals in our community (and the readers of this blog) tend to be some of the best web professionals out there. We go through our everyday work knowing that most of what we produce is better than a lot of the design firms and freelancers that we have in our hometowns. Something you’ll quickly realize by going to a conference like Creative South, is that your skills are nothing compared to the likes of <a href="http://draplin.com" rel="nofollow external" class="bo">Aaron Draplin</a>, <a href="http://signalnoise.com" rel="nofollow external" class="bo">James White</a> or <a href="http://seanw.es" rel="nofollow external" class="bo">Sean McCabe</a>. </p>
    <p>It’s important to go to events that can challenge everything we hold true about our processes and skills. Watching these great speakers present their work makes you question everything about your style, implementation and taste. We always tend to think we work just as hard as someone else, but then you see James White’s posters and you soon realize that you haven’t even scratched the surface of what’s possible. </p>
    <h2>There’s No Community Like Our Community</h2>
    <p>I’ve got one word for you, “friends”. New friends at these events turn into more and more friends every time. It’s very hard to explain how good it feels to meet people that are in your very same shoes and going through the very same challenges you do on a daily basis.</p>
    <p>I’ve met so many new people through these events and I’m happy to call many of them great friends. </p>
    <p>I would encourage you, my dear reader, to attend as many of these meetups, conferences and events that you can, grab a few takeaways, and be inspired to get back to good work. </p>
    <p>You’ll be better for it.</p>
    <p><em>The Creative South mark above created by the great <a href="http://ryanhamrick.com/" rel="nofollow external" class="bo">Ryan Hamrick</a>.</em></p>
    <p>The post <a href="http://blog.teamtreehouse.com/what-i-learned-at-creative-south" rel="nofollow external" class="bo">What I Learned at Creative South</a> appeared first on <a href="http://blog.teamtreehouse.com" rel="nofollow external" class="bo">Treehouse Blog</a>.</p>
    </div>
]]>
</Body>
<Summary>This past weekend, fellow Treehouser Mat Helme and I had the privilege of speaking at Creative South in Columbus, GA. It was a great conference built around design and illustration that boasted...</Summary>
<Website>http://feedproxy.google.com/~r/teamtreehouse/~3/IeKN7Q_2IP8/what-i-learned-at-creative-south</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28410/guest@my.umbc.edu/c7b42fe33a792e8dd5a20d3d4f9f3920/api/pixel</TrackingUrl>
<Tag>aaron-draplin</Tag>
<Tag>android</Tag>
<Tag>creative-south</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>ios</Tag>
<Tag>james-white</Tag>
<Tag>javascript</Tag>
<Tag>josh-long</Tag>
<Tag>mat-helme</Tag>
<Tag>responsive</Tag>
<Tag>rogie-king</Tag>
<Tag>sean-mccabe</Tag>
<Tag>web</Tag>
<Tag>web-industry</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 29 Apr 2013 14:10:23 -0400</PostedAt>
<EditAt>Mon, 29 Apr 2013 14:10:23 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="123338" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123338">
<Title>Katie Morris of the Social Work Dept. Wins Program Director of the Year</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>UMBC’s Social Work Department, along with UMBC-Shady Grove, is pleased to announce Katie Morris as the Program Director of the Year at The Universities at Shady Grove. Ms. Morris received her award at the Student Achievement &amp; Leadership Breakfast at The Universities at Shady Grove on Friday, April 12, 2013.</p>
    <p>The Program Director of the Year Award is given to a program director from a participating USM institution who has served the students at the Universities at Shady Grove for at least two years. To be eligible the program director must have demonstrated a strong participation in creating a unique campus environment that is supportive of student success through activities such as community service and academic achievement, advanced the educational or career goals of students.</p>
    <p>Ms. Morris serves as the Program Director for UMBC’s Social Work bachelor’s degree program and is in her tenth year as a faculty member at UMBC-Shady Grove. Her ability to connect and coordinate with her team of professors in the social work program has made the program among the best at The Universities at Shady Grove. She provides competent and professional leadership while also maintaining a collaborative atmosphere within the social work program. Recently, she presented at a national conference of baccalaureate social work programs and noted an article for the Chronicle of Higher Education on the use of technology in the social work curriculum. Ms. Morris has also been actively involved in inter-professional and interdisciplinary initiatives at The Universities at Shady Grove, including the very successful Poverty Simulation this past fall.</p>
    <p>Ms. Morris is a motivator, educator, and a tireless advocate for students. She is totally dedicated to her job, always ready to intervene, to empower, and support students in finding solutions to problems. A student observed, “Katie wants us to take on challenges and do the best we can. She wants us to realize our full potential and is always there for us when we need her. She sees our strengths when we may not be able to see them, and she encourages us to be the best.”</p>
    <p>Ms. Morris states, “I am truly honored to receive this award. I received this award because of my students. It is their curiosity, questions, experiences, hard work, passion and interest in social work that encourages me to be a better teacher, administrator, advisor, and go the extra mile to help them.”</p>
    <p>Congratulations, Ms. Morris, for your accomplishment and proudly representing UMBC and the Social Work department.</p>
    </div>
]]>
</Body>
<Summary>UMBC’s Social Work Department, along with UMBC-Shady Grove, is pleased to announce Katie Morris as the Program Director of the Year at The Universities at Shady Grove. Ms. Morris received her...</Summary>
<Website>https://umbc.edu/stories/katie-morris-of-the-social-work-dept-wins-program-director-of-the-year/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123338/guest@my.umbc.edu/40fa18f609860b130e70c4c0f6e5401c/api/pixel</TrackingUrl>
<Tag>cahss</Tag>
<Tag>community</Tag>
<Tag>shadygrove</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 29 Apr 2013 14:03:46 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="28411" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28411">
<Title>How a Breakup Led to an Online Marketplace for Used Engagement Rings</Title>
<Body>
<![CDATA[
    <div class="html-content">After getting dumped, one entrepreneur founded I Do Now I Don't, an e-commerce site that turns heartbreak into cold hard cash.</div>
]]>
</Body>
<Summary>After getting dumped, one entrepreneur founded I Do Now I Don't, an e-commerce site that turns heartbreak into cold hard cash.</Summary>
<Website>http://feedproxy.google.com/~r/YoungentrepreneurcomBlog/~3/3szRUDztlos/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28411/guest@my.umbc.edu/0590041ef2f5a7184a8533ed20cf8a6d/api/pixel</TrackingUrl>
<Tag>business-ideas</Tag>
<Tag>business-planning</Tag>
<Tag>business-unusual</Tag>
<Tag>ecommerce</Tag>
<Tag>jewelry</Tag>
<Tag>profiles</Tag>
<Tag>startup-business-ideas</Tag>
<Tag>success-stories</Tag>
<Group token="entrepreneurship">Alex. Brown Center for Entrepreneurship</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/entrepreneurship</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/original.jpg?1771000363</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/large.png?1771000363</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/medium.png?1771000363</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/small.png?1771000363</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxsmall.png?1771000363</AvatarUrl>
<Sponsor>The Alex. Brown Center for Entrepreneurship</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 29 Apr 2013 14:00:34 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="28407" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28407">
<Title>Haines &#8217;12, VisArts, to Show Paintings at Catonsville Gallery</Title>
<Body>
<![CDATA[
    <div class="html-content">Alumna Kimberly Haines ’12, visual arts, will display a collection of paintings centered around the theme “New Skies” at the David Mikow Art Gallery in Catonsville starting later this week. An opening reception will be held at the gallery on … <a href="https://umbcalumni.wordpress.com/2013/04/29/haines-12-visarts-to-show-paintings-at-catonsville-gallery/" rel="nofollow external" class="bo">Continue reading <span>→</span></a>
    </div>
]]>
</Body>
<Summary>Alumna Kimberly Haines ’12, visual arts, will display a collection of paintings centered around the theme “New Skies” at the David Mikow Art Gallery in Catonsville starting later this week. An...</Summary>
<Website>https://umbcalumni.wordpress.com/2013/04/29/haines-12-visarts-to-show-paintings-at-catonsville-gallery/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28407/guest@my.umbc.edu/09d9d2af107cfd4fd0a6b5617107c13c/api/pixel</TrackingUrl>
<Tag>10s-alums</Tag>
<Tag>arts-and-humanities</Tag>
<Group token="retired-20">UMBC Alumni</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-20</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/original.png?1280681147</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/large.png?1280681147</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/medium.png?1280681147</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/small.png?1280681147</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxsmall.png?1280681147</AvatarUrl>
<Sponsor>UMBC Alumni</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 29 Apr 2013 13:30:36 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="107008" important="false" status="posted" url="https://my3.my.umbc.edu/posts/107008">
<Title>Haines &#8217;12, VisArts, to Show Paintings at Catonsville Gallery</Title>
<Body>
<![CDATA[
    <div class="html-content">Alumna Kimberly Haines ’12, visual arts, will display a collection of paintings centered around the theme “New Skies” at the …</div>
]]>
</Body>
<Summary>Alumna Kimberly Haines ’12, visual arts, will display a collection of paintings centered around the theme “New Skies” at the …</Summary>
<Website>https://magazine.umbc.edu/haines-12-visarts-to-show-paintings-at-catonsville-gallery/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/107008/guest@my.umbc.edu/503232c1baae8cc9230b5d2d43368240/api/pixel</TrackingUrl>
<Tag>alumni</Tag>
<Group token="retired-1945">UMBC Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-1945</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/images/avatars/group/8/xsmall.png?1787842820</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/images/avatars/group/8/original.png?1787842820</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/images/avatars/group/8/xxlarge.png?1787842820</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/images/avatars/group/8/xlarge.png?1787842820</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/images/avatars/group/8/large.png?1787842820</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/images/avatars/group/8/medium.png?1787842820</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/images/avatars/group/8/small.png?1787842820</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/images/avatars/group/8/xsmall.png?1787842820</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/images/avatars/group/8/xxsmall.png?1787842820</AvatarUrl>
<Sponsor>UMBC Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 29 Apr 2013 13:30:36 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="110182" important="false" status="posted" url="https://my3.my.umbc.edu/posts/110182">
<Title>Thomas Schaller, Political Science, in the Herald-Mail</Title>
<Body>
<![CDATA[
    <div class="html-content">On Saturday, April 27, UMBC political science professor Thomas F. Schaller spoke at the 9th annual Western Maryland Democratic Summit, alongside Maryland Lt. Gov. Anthony Brown, U.S. Sen. Benjamin Cardin, U.S. Sen. Barbara Mikulski, U.S. Rep. Chris Van Hollen and others. According to coverage in the Herald-Mail, Schaller commented that the Republican Party has become a “Housified party” in recent years. Since 1994, Republican majorities in the U.S. House of Representatives have been driving the policies, philosophy and message of the party, which Schaller argued is to the GOP’s detriment in Senate and presidential politics. On the 2014 midterm election, …</div>
]]>
</Body>
<Summary>On Saturday, April 27, UMBC political science professor Thomas F. Schaller spoke at the 9th annual Western Maryland Democratic Summit, alongside Maryland Lt. Gov. Anthony Brown, U.S. Sen. Benjamin...</Summary>
<Website>https://news.umbc.edu/thomas-schaller-political-science-in-the-herald-mail/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/110182/guest@my.umbc.edu/9d8b161fb81b08aeb6a6de0cc854a802/api/pixel</TrackingUrl>
<Tag>cahss</Tag>
<Tag>policy-and-society</Tag>
<Tag>politicalscience</Tag>
<Group token="umbc-news">UMBC News</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/original.png?1632921809</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/large.png?1632921809</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/medium.png?1632921809</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/small.png?1632921809</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxsmall.png?1632921809</AvatarUrl>
<Sponsor>UMBC News</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 29 Apr 2013 12:59:46 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="28399" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28399">
<Title>How to Recruit a Top-Notch Recruiter</Title>
<Body>
<![CDATA[
    <div class="html-content">For a growing company, asking a recruiter to help you fill key jobs can be ideal, but how do you know the recruiter ‘gets’ your company? Here’s how to vet a recruiter.</div>
]]>
</Body>
<Summary>For a growing company, asking a recruiter to help you fill key jobs can be ideal, but how do you know the recruiter ‘gets’ your company? Here’s how to vet a recruiter.</Summary>
<Website>http://feedproxy.google.com/~r/YoungentrepreneurcomBlog/~3/jNSiZxpjYf0/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28399/guest@my.umbc.edu/8e1a41f8d4ef212aaf5e0b70173d7480/api/pixel</TrackingUrl>
<Tag>business-growth-strategies</Tag>
<Tag>business-management</Tag>
<Tag>culture</Tag>
<Tag>hiring</Tag>
<Tag>hr</Tag>
<Tag>managing-employees</Tag>
<Group token="entrepreneurship">Alex. Brown Center for Entrepreneurship</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/entrepreneurship</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/original.jpg?1771000363</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/large.png?1771000363</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/medium.png?1771000363</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/small.png?1771000363</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxsmall.png?1771000363</AvatarUrl>
<Sponsor>The Alex. Brown Center for Entrepreneurship</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 29 Apr 2013 12:00:16 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="28398" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28398">
<Title>HTTP: The Protocol Every Web Developer Must Know &#8211; Part 2</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=31155&amp;c=895335652" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=31155&amp;c=895335652" alt="" style="max-width: 100%; height: auto;"></a><p>In my <a href="http://net.tutsplus.com/tutorials/tools-and-tips/http-the-protocol-every-web-developer-must-know-part-1/" rel="nofollow external" class="bo">previous article</a>, we covered some of HTTP’s basics, such as the URL scheme, status codes and request/response headers. With that as our foundation, we will look at the finer aspects of HTTP, like connection handling, authentication and HTTP caching. These topics are fairly extensive, but we’ll cover the most important bits.</p>
    <p></p>
    <hr>
    <h2>HTTP Connections</h2>
    <p>A connection must be established between the client and server before they can communicate with each other, and HTTP uses the reliable TCP transport protocol to make this connection. By default, web traffic uses TCP port 80. A TCP stream is broken into IP packets, and it ensures that those packets always arrive in the correct order without fail. HTTP is an application layer protocol over TCP, which is over IP.</p>
    <p>HTTPS is a secure version of HTTP, inserting an additional layer between HTTP and TCP called TLS or SSL (Transport Layer Security or Secure Sockets Layer, respectively). HTTPS communicates over port 443 by default, and we will look at HTTPS later in this article.</p>
    <div><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeremymcpeak/http2-http-https.png" alt="HTTP and HTTPS layers" style="max-width: 100%; height: auto;"></div>
    <p>An HTTP connection is identified by <code>&lt;source-IP, source-port&gt;</code> and <code>&lt;destination-IP, destination-port&gt;</code>. On a client, an HTTP application is identified by a <code>&lt;IP, port&gt;</code> tuple. Establishing a connection between two endpoints is a multi-step process and involves the following:</p>
    <div><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeremymcpeak/http2-connect-delays.png" alt="Connection Delays" style="max-width: 100%; height: auto;"></div>
    <ul>
    <li>resolve IP address from host name via DNS</li>
    <li>establish a connection with the server</li>
    <li>send a request</li>
    <li>wait for a response</li>
    <li>close connection</li>
    </ul>
    <blockquote><p>The server is responsible for always responding with the correct headers and responses.</p></blockquote>
    <p>In HTTP/1.0, all connections were closed after a single transaction. So, if a client wanted to request three separate images from the same server, it made three separate connections to the remote host. As you can see from the above diagram, this can introduce lot of network delays, resulting in a sub-optimal user experience.</p>
    <p>To reduce connection-establishment delays, HTTP/1.1 introduced <strong>persistent connections</strong>, long-lived connections that stay open until the client closes them. Persistent connections are default in HTTP/1.1, and making a single transaction connection requires the client to set the <code>Connection: close</code> request header. This tells the server to close the connection after sending the response.</p>
    <p>In addition to persistent connections, browsers/clients also employ a technique, called <strong>parallel connections</strong>, to minimize network delays. The age-old concept of parallel connections involves creating a pool of connections (generally capped at six connections). If there are six assets that the client needs to download from a website, the client makes six parallel connections to download those assets, resulting in a faster turnaround. This is a huge improvement over serial connections where the client only downloads an asset after completing the download for a previous asset.</p>
    <p>Parallel connections, in combination with persistent connections, is today’s answer to minimizing network delays and creating a smooth experience on the client. For an in-depth treatment of HTTP connections, refer to the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8" rel="nofollow external" class="bo">Connections section</a> of the HTTP spec.</p>
    <h3>Server-side Connection Handling</h3>
    <p>The server mostly listens for incoming connections and processes them when it receives a request. The operations involve:</p>
    <ul>
    <li>establishing a socket to start listening on port 80 (or some other port)</li>
    <li>receiving the request and parsing the message</li>
    <li>processing the response</li>
    <li>setting response headers</li>
    <li>sending the response to the client</li>
    <li>close the connection if a <code>Connection: close</code> request header was found</li>
    </ul>
    <p>Of course, this is not an exhaustive list of operations. Most applications/websites need to know who makes a request in order to create more customized responses. This is the realm of <strong>identification</strong> and <strong>authentication</strong>.</p>
    <hr>
    <h2>Identification and Authentication</h2>
    <blockquote><p>HTTP is an application layer protocol over TCP, which is over IP.</p></blockquote>
    <p>It is almost mandatory to know who connects to a server for tracking an app’s or site’s usage and the general interaction patterns of users. The premise of identification is to tailor the response in order to provide a personalized experience; naturally, the server must know who a user is in order to provide that functionality.</p>
    <p>There are a few different ways a server can collect this information, and most websites use a hybrid of these approaches:</p>
    <ul>
    <li>
    <strong>Request headers</strong>: <code>From</code>, <code>Referer</code>, <code>User-Agent</code> – We saw these headers in <a href="http://net.tutsplus.com/tutorials/tools-and-tips/http-the-protocol-every-web-developer-must-know-part-1/" rel="nofollow external" class="bo">Part 1</a>.</li>
    <li>
    <strong>Client-IP</strong> – the IP address of the client</li>
    <li>
    <strong>Fat Urls</strong> – storing state of the current user by modifying the URL and redirecting to a different URL on each click; each click essentially accumulates state.</li>
    <li>
    <strong>Cookies</strong> – the most popular and non-intrusive approach.</li>
    </ul>
    <p>Cookies allow the server to attach arbitrary information for outgoing responses via the <code>Set-Cookie</code> response header. A cookie is set with one or more <em>name=value</em> pairs separated by semicolon (<strong>;</strong>), as in <code>Set-Cookie: session-id=12345ABC; username=nettuts</code>.</p>
    <p>A server can also restrict the cookies to a specific <code>domain</code> and <code>path</code>, and it can make them persistent with an <code>expires</code> value. Cookies are automatically sent by the browser for each request made to a server, and the browser ensures that only the <code>domain</code>- and <code>path</code>-specific cookies are sent in the request. The request header <code>Cookie: name=value [; name2=value2]</code> is used to send these cookies to the server.</p>
    <blockquote><p>The best way to identify a user is to require them to sign up and log in, but implementing this feature requires some effort by the developer, as well as the user.</p></blockquote>
    <p>Techniques like <a href="http://oauth.net/" rel="nofollow external" class="bo">OAuth</a> simplify this type of feature, but it still requires user consent in order to work properly. Authentication plays a large role here, and it is probably the only way to identify and verify the user.</p>
    <h3>Authentication</h3>
    <p>HTTP does support a rudimentary form of authentication called <strong>Basic Authentication</strong>, as well as the more secure <strong>Digest Authentication</strong>.</p>
    <p>In Basic Authentication, the server initially denies the client’s request with a <code>WWW-Authenticate</code> response header and a <code>401 Unauthorized</code> status code. On seeing this header, the browser displays a login dialog, prompting for a username and password. This information is sent in a base-64 encoded format in the <code>Authentication</code> request header. The server can now validate the request and allow access if the credentials are valid. Some servers might also send an <code>Authentication-Info</code> header containing additional authentication details.</p>
    <div><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeremymcpeak/http2-authentication.png" alt="Authentication Challenge/Response" style="max-width: 100%; height: auto;"></div>
    <p>A corollary to Basic-Authentication is <strong>Proxy Authentication</strong>. Instead of a web server, the authetication challenge is requested by an intermediate proxy. The proxy sends a <code>Proxy-Authenticate</code> header with a <code>407 Unauthorized</code> status code. In return, the client is supposed to send the credentials via the <code>Proxy-Authorization</code> request header.</p>
    <p>Digest Authentication is similar to Basic and uses the same handshake technique with the <code>WWW-Authenticate</code> and <code>Authorization</code> headers, but Digest uses a more secure hashing function to encrypt the username and password (commonly with MD5 or KD digest functions). Although Digest Authentication is supposed to be more secure than Basic, websites typically use Basic Authentication because of its simplicty. To mitigate the security concerns, Basic Auth is used in conjunction with SSL.</p>
    <h3>Secure HTTP</h3>
    <div><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeremymcpeak/http2-https-addressbar.png" alt="HTTPS AddressBar" style="max-width: 100%; height: auto;"></div>
    <p>The HTTPS protocol provides a secure connection on the web. The easiest way to know if you are using HTTPS is to check the browser’s address bar. HTTPs’ secure component involves inserting a layer of encryption/decryption between HTTP and TCP. This is the Secure Sockets Layer (SSL) or the improved Transport Layer Security (TLS).</p>
    <p>SSL uses a powerful form of encryption using RSA and public-key cryptography. Because secure transactions are so important on the web, a ubiquitous standards-based Public-Key Infrastructure (PKI) effort has been underway for quite sometime.</p>
    <p>Existing clients/servers do not have to change the way they handle messages because most of the hard work happens in the SSL layer. Thus, you can develop your web application using Basic Authentication and automatially reap the benefits of SSL by switching to the <code>https://</code> protocol. However, to make the web application work over HTTPS, you need to have a working digital certificate deployed on the server.</p>
    <h4>Certificates</h4>
    <p>Just as you need ID cards to show your identity, a web server needs a digital certificate to identify itself. Certificates (or “certs”) are issued by a Certificate Authority (CA) and vouch for your identity on the web. The CAs are the guardians of the PKI. The most common form of certificates is the <a href="http://www.ietf.org/rfc/rfc2459.txt" rel="nofollow external" class="bo">X.509 v3 standard</a>, which contains information, such as:</p>
    <ul>
    <li>the certificate issuer</li>
    <li>the algorithm used for the certificate</li>
    <li>the subject name or organization for whom this cert is created</li>
    <li>the public key information for the subject</li>
    <li>the Certification Authority Signature, using the specified signing algorithm</li>
    </ul>
    <p>When a client makes a request over HTTPS, it first tries to locate a certificate on the server. If the cert is found, it attempts to verfiy it against its known list of CAs. If its not one of the listed CAs, it might show a dialog to the user warning about the website’s certficate.</p>
    <p>Once the certificate is verified, the SSL handshake is complete and secure transmission is in effect.</p>
    <hr>
    <h2>HTTP Caching</h2>
    <p>It is generally agreed that doing the same work twice is wasteful. This is the guiding principle around the concept of HTTP caching, a fundamental pillar of the HTTP Network Infrastructure. Because most of the operations are over a network, a cache helps save time, cost and bandwidth, as well as provide an improved experience on the web.</p>
    <p>Caches are used at several places in the network infrastructure, from the browser to the origin server. Depending on where it is located, a cache can be categorized as:</p>
    <ul>
    <li>
    <strong>Private</strong>: within a browser, caches usernames, passwords, URLs, browsing history and web content. They are generally small and specific to a user.</li>
    <li>
    <strong>Public</strong>: deployed as caching proxies between the server and client. These are much larger because they serve multiple users. A common practice is to keep multiple caching proxies between the client and the origin-server. This helps to serve frequently accessed content, while still allowing a trip to the server for infrequently needed content.</li>
    </ul>
    <div><img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeremymcpeak/http2-cache-topo.png" alt="Cache Topology" style="max-width: 100%; height: auto;"></div>
    <h3>Cache Processing</h3>
    <p>Regardless of where a cache is located, the process of maintaining a cache is quite similar:</p>
    <ul>
    <li>
    <strong>Receive</strong> request message.</li>
    <li>
    <strong>Parse</strong> the URL and headers.</li>
    <li>
    <strong>Lookup</strong> a local copy; otherwise, fetch and store locally</li>
    <li>Do a <strong>freshness check</strong> to determine the age of the content in the cache; make a request to refresh the content only if necessary.</li>
    <li>Create the <strong>response</strong> from the cached body and updated headers.</li>
    <li>
    <strong>Send</strong> the response back to client.</li>
    <li>Optionally, <strong>log</strong> the transaction.</li>
    </ul>
    <p>Of course, the server is responsible for always responding with the correct headers and responses. If a document hasn’t changed, the server should respond with a <code>304 Not Modified</code>. If the cached copy has expired, it should generate a new response with updated response headers and return with a <code>200 OK</code>. If the resource is deleted, it should come back with <code>404 Not Found</code>. These responses help tune the cache and ensure that stale content is not kept for too long.</p>
    <h3>Cache Control Headers</h3>
    <blockquote><p>Parallel connections, in combination with persistent connections, is today’s answer to minimizing network delays.</p></blockquote>
    <p>Now that we have a sense of how a cache works, it’s time to look at the request and response headers that enable the caching infrastructure. Keeping the content fresh and up-to-date is one of the primary responsibilities of the cache. To keep the cached copy consistent with the server, HTTP provides some simple mechanisms, namely <em>Document Expiration</em> and <em>Server Revalidation</em>.</p>
    <h4>Document Expiration</h4>
    <p>HTTP allows an origin-server to attach an <em>expiration date</em> to each document using the <code>Cache-Control</code> and <code>Expires</code> <em>response</em> headers. This helps the client and other cache servers know how long a document is valid and fresh. The cache can serve the copy as long as the <em>age</em> of the document is within the expiration date. Once a document expires, the cache must check with the server for a newer copy and update its local copy accordingly.</p>
    <p><code>Expires</code> is an older HTTP/1.0 response header that specifies the value as an absolute date. This is only useful if the server clocks are in sync with the client, which is a terrible assumption to make. This header is less useful compared to the newer <code>Cache-Control: max-age=&lt;s&gt;</code> header introduced in HTTP/1.1. Here, <code>max-age</code> is a relative age, specified in seconds, from the time the response was created. Thus if a document should expire after one day, the expiration header should be <code>Cache-Control: max-age=86400</code>.</p>
    <h4>Server Revalidation</h4>
    <p>Once a cached document expires, the cache must revalidate with the server to check if the document has changed. This is called <em>server revalidation</em> and serves as a querying mechanism for the <em>stale-ness</em> of a document. Just because a cached copy has expired doesn’t mean that the server actually has newer content. Revalidation is just a means of ensuring that the cache stays fresh. Because of the expiration time (as specified in a previous server response), the cache doesn’t have to check with the server for every single request, thus saving bandwidth, time and reducing the network traffic.</p>
    <blockquote><p>The combination of document expiration and server revalidation is a very effective mechanism, it and allows distributed systems to maintain copies with an expiration date.</p></blockquote>
    <p>If the content is known to frequently change, the expiration time can be reduced—allowing the systems to re-sync more frequently.</p>
    <p>The revalidation step can be accomplished with two kinds of request-headers: <code>If-Modified-Since</code> and <code>If-None-Match</code>. The former is for date-based validation while the latter uses Entity-Tags (ETags), a hash of the content. These headers use date or ETag values obtained from a previous server response. In case of <code>If-Modified-Since</code>, the <code>Last-Modified</code> response header is used; for <code>If-None-Match</code>, it is the <code>ETag</code> response header.</p>
    <h4>Controlling the Cachability</h4>
    <p>The validity period for a document should be defined by the server generating the document. If it’s a newspaper website, the homepage should expire after a day (or sometimes even every hour!). HTTP provides the <code>Cache-Control</code> and <code>Expires</code> response headers to set the expiration on documents. As mentioned earlier, <code>Expires</code> is based on absolute dates and not a reliable solution for controlling cache.</p>
    <p>The <code>Cache-Control</code> header is far more useful and has a few different values to constrain how clients should be caching the response:</p>
    <ul>
    <li>
    <strong>Cache-Control: no-cache</strong>: the client is allowed to store the document; however, it must revalidate with the server on every request. There is a HTTP/1.0 compatibility header called <strong>Pragma: no-cache</strong>, which works the same way.</li>
    <li>
    <strong>Cache-Control: no-store</strong>: this is a stronger directive to the client to not store the document at all.</li>
    <li>
    <strong>Cache-Control: must-revalidate</strong>: this tells the client to bypass its freshness calculation and always revalidate with the server. It is not allowed to serve the cached response in case the server is unavailable.</li>
    <li>
    <strong>Cache-Control: max-age</strong>: this sets a relative expiration time (in seconds) from the time the response is generated.</li>
    </ul>
    <p>As an aside, if the server does not send any <code>Cache-Control</code> headers, the client is free to use its own heuristic expiration algorithm to determine freshness.</p>
    <h4>Constraining Freshness from the Client</h4>
    <p>Cachability is not just limited to the server. It can also be specified from the client. This allows the client to impose constraints on what it is willing to accept. This is possible via the same <code>Cache-Control</code> header, albeit with a few different values:</p>
    <ul>
    <li>
    <strong>Cache-Control: min-fresh=&lt;s&gt;</strong>: the document must be fresh for at least <em>&lt;s&gt;</em> seconds.</li>
    <li>
    <strong>Cache-Control: max-stale</strong> or <strong>Cache-Control: max-stale=&lt;s&gt;</strong>: the document cannot be served from the cache if it has been stale for longer than <em>&lt;s&gt;</em> seconds.</li>
    <li>
    <strong>Cache-Control: max-age=&lt;s&gt;</strong>: the cache cannot return a document that has been cached longer than <em>&lt;s&gt;</em> seconds.</li>
    <li>
    <strong>Cache-Control: no-cache</strong> or <strong>Pragma: no-cache</strong>: the client will not accept a cached resource unless it has been revalidated.</li>
    </ul>
    <p>HTTP Caching is actually a very interesting topic, and there are some very sophisticated algorithms to manage cached content. For a deeper look into this topic, refer to the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html" rel="nofollow external" class="bo">Caching section</a> of the HTTP spec.</p>
    <hr>
    <h2>Summary</h2>
    <p>Our tour of HTTP began with the foundation of URL schemes, status codes and request/response headers. Building upon those concepts, we looked at some of the finer areas of HTTP, such as connection handling, identification and authentication and caching. I am hopeful that this tour has given you a good taste for the breadth of HTTP and enough pointers to further explore this protocol.</p>
    <h3>References</h3>
    <ul>
    <li><a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html" rel="nofollow external" class="bo">RFC 2616, HTTP specification</a></li>
    <li><a href="http://www.amazon.com/HTTP-Definitive-Guide-David-Gourley/dp/1565925092" rel="nofollow external" class="bo">HTTP Definitive Guide</a></li>
    </ul>
    </div>
]]>
</Body>
<Summary>In my previous article, we covered some of HTTP’s basics, such as the URL scheme, status codes and request/response headers. With that as our foundation, we will look at the finer aspects of HTTP,...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/zIfp72fhgko/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28398/guest@my.umbc.edu/c03d5bc5f109d99b5f676f8bc3261199/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>http</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>tools-and-tips</Tag>
<Tag>wed</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 29 Apr 2013 11:53:26 -0400</PostedAt>
<EditAt>Mon, 29 Apr 2013 11:53:26 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="28397" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28397">
<Title>The finish line at the AFCEA 5k on Saturday</Title>
<Body>
<![CDATA[
    <div class="html-content">The finish line at the AFCEA 5k on Saturday<br><br><a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fpic.twitter.com%2FKhDNQ4Wfi3&amp;h=BAQFwt795&amp;s=1" title="" rel="nofollow external" class="bo"><img src="https://fbexternal-a.akamaihd.net/safe_image.php?d=AQAo6kMaKnQVEScg&amp;w=154&amp;h=154&amp;url=https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FBJByWPtCAAA1A92.jpg" alt="" style="max-width: 100%; height: auto;"></a><br><a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fpic.twitter.com%2FKhDNQ4Wfi3&amp;h=YAQHo_Zj_&amp;s=1" rel="nofollow external" class="bo">Twitter / UMBCtraining: The finish line at the AFCEA ...</a><br>twitter.com<br>Instantly connect to what's most important to you. Follow your friends, experts, favorite celebrities, and breaking news.</div>
]]>
</Body>
<Summary>The finish line at the AFCEA 5k on Saturday   Twitter / UMBCtraining: The finish line at the AFCEA ... twitter.com Instantly connect to what's most important to you. Follow your friends, experts,...</Summary>
<Website>http://www.facebook.com/umbctraining/posts/10151354764221076</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28397/guest@my.umbc.edu/9d88618664fa7346693c7c83fdd127ee/api/pixel</TrackingUrl>
<Tag>ccna</Tag>
<Tag>ceh</Tag>
<Tag>centers</Tag>
<Tag>cisco</Tag>
<Tag>cyber</Tag>
<Tag>cybersecurity</Tag>
<Tag>information</Tag>
<Tag>it</Tag>
<Tag>leadership</Tag>
<Tag>management</Tag>
<Tag>microsoft</Tag>
<Tag>project</Tag>
<Tag>security</Tag>
<Tag>technology</Tag>
<Tag>training</Tag>
<Tag>umbc</Tag>
<Group token="retired-575">UMBC Training Centers</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-575</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/xsmall.png?1361981335</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/original.jpg?1361981335</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/xxlarge.png?1361981335</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/xlarge.png?1361981335</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/large.png?1361981335</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/medium.png?1361981335</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/small.png?1361981335</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/xsmall.png?1361981335</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/575/83756b985266168d0d29c6c9a146db50/xxsmall.png?1361981335</AvatarUrl>
<Sponsor>UMBC Training Centers</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 29 Apr 2013 11:31:33 -0400</PostedAt>
<EditAt>Mon, 29 Apr 2013 11:31:33 -0400</EditAt>
</NewsItem>

</News>
