<?xml version="1.0"?>
<News hasArchived="true" page="7656" pageCount="10787" pageSize="10" timestamp="Thu, 03 Sep 2026 06:21:16 -0400" url="https://my3.my.umbc.edu/posts.xml?mode=activity&amp;page=7656&amp;range=2">
<NewsItem contentIssues="true" id="42824" important="false" status="posted" url="https://my3.my.umbc.edu/posts/42824">
<Title>Library Staff Highlight: Sarah New</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><em>[Tune in every 2 weeks for Library Staff Highlights!]</em></p>
    <h6>
    <strong>Name: </strong>Sarah New</h6>
    <h6>
    <strong>Hometown: </strong>Bel Air, MD, USA</h6>
    <h6>
    <strong>Alma Mater:</strong> University of Virginia</h6>
    <br><strong>1. Where do you work in the library and how long have you worked there? </strong><br>I’m part of the Reference department on the first floor, and I can usually be found in my office working on our website and digital services. I just got hired at the end of 2013, so I’ve been here for less than a year!<br><br><strong>2. What would you like the campus community to know about your job? </strong><br>The Library website is incredibly important for students and faculty doing research, and I’m thinking about that every day. We’re in the process of a site redesign, so all my focus right now is going into making the next iteration of our website usable and beautiful for you guys.  <br><strong><br>3. What’s your favorite aspect of working at UMBC? </strong><br>I love working in a place where people are learning every day. It keeps me in that mindset, so I’m always thinking big and trying new things.  <br><br><strong>4. Do you have a favorite project, event, or memory from your time working in the library?</strong><br>Hmm, I’m not sure I’ve worked here long enough to answer this one!! Oh, but actually - I really enjoyed the Library Book Sale earlier this month. I found an old book that my mom had told me she read as a teenager – it’s been out of print for years, but there it was on the shelf! It made her day when I showed up with it that weekend!<br><br><strong>5. If you were a UMBC student, what library services would you use/appreciate the most? </strong><br>Consultations with the reference librarians, definitely – I had no idea that was even an option when I was in school! You can email or sit down with any of the <a href="http://aok.lib.umbc.edu/reference/libliaisons.php" rel="nofollow external" class="bo">Subject Librarians</a> to get help with your research; they are experts in where and how to search for information on your topic.<br><br><strong>6. If you had to survive on a desert island with only one book, movie, or TV show, what would it be and why?</strong><br>Oh geez, that’s tough. I think I’d have to go for something escapist, so I wouldn’t have to think about gutting fish and weaving clothes and whatnot. So I’m gonna say the <a href="http://www.goodreads.com/book/show/86238.The_Enchanted_Forest_Chronicles" rel="nofollow external" class="bo"><em>Enchanted Forest Chronicles</em> by Patricia C. Wrede</a>. It’s about a princess who goes off to have adventures with dragons and wizards, and no matter what happens she’s always brave and practical and funny – which are probably qualities I should learn to emulate if I’m gonna survive on that island!<br><br><strong>7. A wizard has turned you into your favorite animal. What are you?</strong><br>Baby hedgehog!<br>
    </div>
]]>
</Body>
<Summary>[Tune in every 2 weeks for Library Staff Highlights!]  Name: Sarah New  Hometown: Bel Air, MD, USA  Alma Mater: University of Virginia  1. Where do you work in the library and how long have you...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/42824/guest@my.umbc.edu/b4d188f2100a0f264c6638ef0360d63b/api/pixel</TrackingUrl>
<Tag>active</Tag>
<Tag>library-staff-highlights</Tag>
<Group token="library">Albin O. Kuhn Library &amp;amp; Gallery</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/library</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/xsmall.png?1279120404</AvatarUrl>
<AvatarUrl size="original">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/original.png?1279120404</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/xxlarge.png?1279120404</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/xlarge.png?1279120404</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/large.png?1279120404</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/medium.png?1279120404</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/small.png?1279120404</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/xsmall.png?1279120404</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/xxsmall.png?1279120404</AvatarUrl>
<Sponsor>Albin O. Kuhn Library &amp; Gallery</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/042/824/2046b83af17a483efe991d1e3454f71d/xxlarge.jpg?1396457669</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/042/824/2046b83af17a483efe991d1e3454f71d/xlarge.jpg?1396457669</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/042/824/2046b83af17a483efe991d1e3454f71d/large.jpg?1396457669</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/042/824/2046b83af17a483efe991d1e3454f71d/medium.jpg?1396457669</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/042/824/2046b83af17a483efe991d1e3454f71d/small.jpg?1396457669</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/042/824/2046b83af17a483efe991d1e3454f71d/xsmall.jpg?1396457669</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/042/824/2046b83af17a483efe991d1e3454f71d/xxsmall.jpg?1396457669</ThumbnailUrl>
<PawCount>16</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 02 Apr 2014 11:14:48 -0400</PostedAt>
<EditAt>Wed, 02 Apr 2014 14:54:40 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="43128" important="false" status="posted" url="https://my3.my.umbc.edu/posts/43128">
<Title>Bits Blog: To Cement Berlin&#8217;s Start-Up Success, a Bridge to U.S.</Title>
<Body>
<![CDATA[
    <div class="html-content">Konstantin Guericke, a co-founder of LinkedIn and now a partner of a German venture capital firm, believes the city can secure a place as one of Europe’s leading tech centers.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2014%2F04%2F02%2Fa-v-c-bridge-with-silicon-valley-to-cement-berlins-start-up-success%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+To+Cement+Berlin%E2%80%99s+Start-Up+Success%2C+a+Bridge+to+U.S." 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%2F2014%2F04%2F02%2Fa-v-c-bridge-with-silicon-valley-to-cement-berlins-start-up-success%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+To+Cement+Berlin%E2%80%99s+Start-Up+Success%2C+a+Bridge+to+U.S." 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%2F2014%2F04%2F02%2Fa-v-c-bridge-with-silicon-valley-to-cement-berlins-start-up-success%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+To+Cement+Berlin%E2%80%99s+Start-Up+Success%2C+a+Bridge+to+U.S." 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%2F2014%2F04%2F02%2Fa-v-c-bridge-with-silicon-valley-to-cement-berlins-start-up-success%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+To+Cement+Berlin%E2%80%99s+Start-Up+Success%2C+a+Bridge+to+U.S." 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%2F2014%2F04%2F02%2Fa-v-c-bridge-with-silicon-valley-to-cement-berlins-start-up-success%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+To+Cement+Berlin%E2%80%99s+Start-Up+Success%2C+a+Bridge+to+U.S." 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/193360786140/u/0/f/640387/c/34625/s/38e800a2/sc/21/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360786140/u/0/f/640387/c/34625/s/38e800a2/sc/21/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/193360786140/u/0/f/640387/c/34625/s/38e800a2/sc/21/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360786140/u/0/f/640387/c/34625/s/38e800a2/sc/21/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/193360786140/u/0/f/640387/c/34625/s/38e800a2/sc/21/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360786140/u/0/f/640387/c/34625/s/38e800a2/sc/21/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/193360786140/u/0/f/640387/c/34625/s/38e800a2/sc/21/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360786140/u/0/f/640387/c/34625/s/38e800a2/sc/21/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Konstantin Guericke, a co-founder of LinkedIn and now a partner of a German venture capital firm, believes the city can secure a place as one of Europe’s leading tech centers.      </Summary>
<Website>http://rss.nytimes.com/c/34625/f/640387/s/38e800a2/sc/21/l/0Lbits0Bblogs0Bnytimes0N0C20A140C0A40C0A20Ca0Ev0Ec0Ebridge0Ewith0Esilicon0Evalley0Eto0Ecement0Eberlins0Estart0Eup0Esuccess0C0Dpartner0Frss0Gemc0Frss/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/43128/guest@my.umbc.edu/eb7693b2377e77dacacd71c0849a0bd0/api/pixel</TrackingUrl>
<Tag>berlin-germany</Tag>
<Tag>earlybird</Tag>
<Tag>guericke-konstantin</Tag>
<Tag>new</Tag>
<Tag>start-ups</Tag>
<Tag>technology</Tag>
<Tag>venture-capital</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>Wed, 02 Apr 2014 11:00:15 -0400</PostedAt>
<EditAt>Wed, 02 Apr 2014 12:53:42 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="43127" important="false" status="posted" url="https://my3.my.umbc.edu/posts/43127">
<Title>Refactoring Legacy Code: Part 2 - Magic Strings &amp; Constants</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>Old code. Ugly code. Complicated code. Spaghetti code. Jibberish nonsense. In two words, <em>Legacy Code</em>. This is a series that will help you work and deal with it.</p>
    
    <p>We first met our legacy source code in our <a href="http://code.tutsplus.com/tutorials/refactoring-legacy-code-part-1-the-golden-master--cms-20331" rel="nofollow external" class="bo">previous lesson</a>. Then we ran the code to form an opinion about its basic functionality and created a Golden Master test suite to have a raw safety net for future changes. We will continue to work on this code and you can find it under the <code>trivia/php_start</code> folder. The other folder <code>trivia/php_start</code> is with this lesson's finished code.</p>
    
    <p>The time for the first changes have come and what better way to understand a difficult code base than start to extract magic constants and strings into variables? These seemingly simple tasks will give us greater and sometimes unexpected insights into the inner workings of legacy code. We will need to figure out the intentions of the original code author and find the proper names for the pieces of code that we've never seen before.</p>
    
    <h2>Magic Strings</h2>
    
    <p>Magic strings are strings used directly in various expressions, without being assigned to a variable. This kind of string had a special meaning for the original author of the code, but instead of assigning them to a well named variable, the author thought the meaning of the string was obvious enough.</p>
    
    <h3>Identify the First Strings to Change</h3>
    
    <p>Let's start by looking at our <code>Game.php</code> and try to identify strings. If you are using an IDE (and you should) or a smarter text editor capable of highlighting source code, spotting the strings will be easy. Here is an image of how the code looks like on my display.</p>
    <img alt="" src="https://s3.amazonaws.com/cms-assets.tutsplus.com/uploads/users/45/posts/20527/image/sourcecode-with-strings.png" style="max-width: 100%; height: auto;">
    
    <p>Everything with orange is a string. Finding each string in our source code is very easy this way. So, make sure highlighting is supported and enabled in your editor, whatever your application is.</p>
    
    <p>The first orange part in our code is immediately at line three. However the string contains only a newline character. This should be obvious enough in my opinion, so we can move on.</p>
    
    <p>When it comes to deciding what to extract and what to keep unchanged, there are few thumb-ups, but at the end it is your professional opinion that must prevail. Based on it, you will have to decide what to do with each piece of code you analyze.</p>
    
    <pre>for ($i = 0; $i &lt; 50; $i++) {&#x000A;    		array_push($this-&gt;popQuestions, "Pop Question " . $i);&#x000A;    		array_push($this-&gt;scienceQuestions, ("Science Question " . $i));&#x000A;    		array_push($this-&gt;sportsQuestions, ("Sports Question " . $i));&#x000A;    		array_push($this-&gt;rockQuestions, $this-&gt;createRockQuestion($i));&#x000A;    	}&#x000A;    }&#x000A;    &#x000A;    function createRockQuestion($index) {&#x000A;    	return "Rock Question " . $index;&#x000A;    }</pre>
    
    <p>So let's analyze lines 32 to 42, the snippet you can see above. For pop, science, and sports questions, there is just a simple concatenation. However, the action to compose the string for a rock question is extracted into a method. In your opinion, are these concatenations and strings clear enough so that we can keep all of them inside our for loop? Or, do you think extracting all strings into their methods would justify the existence of those methods? If so, how would you name those methods?</p>
    
    <h3>Update Golden Master and the Tests</h3>
    
    <p>Regardless of the answer, we will need to modify the code. It is time to put our <a href="http://code.tutsplus.com/tutorials/refactoring-legacy-code-part-1-the-golden-master--cms-20331" rel="nofollow external" class="bo">Golden Master</a> to work and write our test that actually runs and compares our code with the existing content.</p>
    
    <pre>class GoldenMasterTest extends PHPUnit_Framework_TestCase {&#x000A;    &#x000A;    	private $gmPath;&#x000A;    &#x000A;    	function setUp() {&#x000A;    		$this-&gt;gmPath = __DIR__ . '/gm.txt';&#x000A;    	}&#x000A;    &#x000A;    	function testGenerateOutput() {&#x000A;    		$times = 20000;&#x000A;    		$this-&gt;generateMany($times, $this-&gt;gmPath);&#x000A;    	}&#x000A;    &#x000A;    	function testOutputMatchesGoldenMaster() {&#x000A;    		$times = 20000;&#x000A;    		$actualPath = '/tmp/actual.txt';&#x000A;    		$this-&gt;generateMany($times, $actualPath);&#x000A;    		$file_content_gm = file_get_contents($this-&gt;gmPath);&#x000A;    		$file_content_actual = file_get_contents($actualPath);&#x000A;    		$this-&gt;assertTrue($file_content_gm == $file_content_actual);&#x000A;    	}&#x000A;    &#x000A;    	private function generateMany($times, $fileName) {...}&#x000A;    &#x000A;    	private function generateOutput($seed) {...}&#x000A;    }</pre>
    
    <p>We created another test to compare the outputs, made sure <code>testGenerateOutput()</code> only generates the output once and does nothing else. We also moved the golden master output file <code>"gm.txt"</code> into the current directory because <code>"/tmp"</code> may be cleared when the system reboots. For our actual results, we can still use it. On most UNIX like systems <code>"/tmp"</code> is mounted into the RAM so it is much faster than the file system. If you did well, the tests should pass without a problem.</p>
    <img alt="" src="https://s3.amazonaws.com/cms-assets.tutsplus.com/uploads/users/45/posts/20527/image/gm-initial-pass.png" style="max-width: 100%; height: auto;">
    
    <p>It is very important to remember to mark our generator test as "skipped" for future changes. If you feel more comfortable with commenting or even deleting it altogether, please do so. It is important that our <a href="http://code.tutsplus.com/tutorials/refactoring-legacy-code-part-1-the-golden-master--cms-20331" rel="nofollow external" class="bo">Golden Master</a> will not change when we change our code. It was generated once and we do not want to modify it, ever, so that we can be sure our newly generated code always compares to the original. If you feel more comfortable doing a backup of it, please proceed to do so.</p>
    
    <pre>function testGenerateOutput() {&#x000A;    	$this-&gt;markTestSkipped();&#x000A;    	$times = 20000;&#x000A;    	$this-&gt;generateMany($times, $this-&gt;gmPath);&#x000A;    }</pre>
    
    <p>I will just mark the test as skipped. This will put our test result to <code>"yellow"</code>, meaning all tests are passing but some are skipped or marked as incomplete.</p>
    <img alt="" src="https://s3.amazonaws.com/cms-assets.tutsplus.com/uploads/users/45/posts/20527/image/gm-initial-skipped.png" style="max-width: 100%; height: auto;">
    
    <h3>Making Our First Change</h3>
    
    <p>With tests in place, we can start changing code. In my professional opinion, all the strings can be kept inside the <code>for</code> loop. We will take the code from the <code>createRockQuestion()</code> method, move it inside the the <code>for</code> loop, and delete the method altogether. This refactoring is called <em>Inline Method</em>.</p>
    
    <p>"Put the method's body into the body of its callers and remove the method." ~ Martin Fowler</p>
    
    <p>There are a specific set of steps to do this type of refactoring, as defined by Marting Fowler in <a href="https://www.goodreads.com/book/show/44936.Refactoring" rel="nofollow external" class="bo">Refactoring: Improving the Design of Existing Code</a>: </p>
    
    <ul>
    	<li>Check that the method is not polymorphic.</li>
    	<li>Find all calls to the method.</li>
    	<li>Replace each call with the method body.</li>
    	<li>Compile and test.</li>
    	<li>Remove the method definition.</li>
    </ul>
    
    <p>We don't have subclasses extending <code>Game</code>, so the first step validates.</p>
    <img alt="" src="https://s3.amazonaws.com/cms-assets.tutsplus.com/uploads/users/45/posts/20527/image/rock-question-code-usage.png" style="max-width: 100%; height: auto;">
    
    <p>There is only a single use of our method, inside the <code>for</code> loop.</p>
    
    <pre>function  __construct() {&#x000A;    &#x000A;    	$this-&gt;players = array();&#x000A;    	$this-&gt;places = array(0);&#x000A;    	$this-&gt;purses = array(0);&#x000A;    	$this-&gt;inPenaltyBox = array(0);&#x000A;    &#x000A;    	$this-&gt;popQuestions = array();&#x000A;    	$this-&gt;scienceQuestions = array();&#x000A;    	$this-&gt;sportsQuestions = array();&#x000A;    	$this-&gt;rockQuestions = array();&#x000A;    &#x000A;    	for ($i = 0; $i &lt; 50; $i++) {&#x000A;    		array_push($this-&gt;popQuestions, "Pop Question " . $i);&#x000A;    		array_push($this-&gt;scienceQuestions, ("Science Question " . $i));&#x000A;    		array_push($this-&gt;sportsQuestions, ("Sports Question " . $i));&#x000A;    		array_push($this-&gt;rockQuestions, "Rock Question " . $i);&#x000A;    	}&#x000A;    }&#x000A;    &#x000A;    function createRockQuestion($index) {&#x000A;    	return "Rock Question " . $index;&#x000A;    }</pre>
    
    <p>We put the code from <code>createRockQuestion()</code> into the <code>for</code> loop in the constructor. We still have our old code. It is now time to run our test.</p>
    
    <p>Our tests are passing. We can delete our <code>createRockQuestion()</code> method.</p>
    
    <pre>function  __construct() {&#x000A;    &#x000A;    	// ... //&#x000A;    &#x000A;    	for ($i = 0; $i &lt; 50; $i++) {&#x000A;    		array_push($this-&gt;popQuestions, "Pop Question " . $i);&#x000A;    		array_push($this-&gt;scienceQuestions, ("Science Question " . $i));&#x000A;    		array_push($this-&gt;sportsQuestions, ("Sports Question " . $i));&#x000A;    		array_push($this-&gt;rockQuestions, "Rock Question " . $i);&#x000A;    	}&#x000A;    }&#x000A;    &#x000A;    function isPlayable() {&#x000A;    	return ($this-&gt;howManyPlayers() &gt;= 2);&#x000A;    }</pre>
    
    <p>Finally we should run our tests again. If we missed a call to a method, they will fail.</p>
    
    <p>They should pass again. Congrats! We are done with our first refactoring.</p>
    
    <h3>Other Strings to Consider</h3>
    
    <p>Strings in the methods <code>add()</code> and roll() are only used to output them using the <code>echoln()</code> method. <code>askQuestions()</code> compares strings to categories. This seems acceptable also. <code>currentCategory()</code> on the other hand returns strings based on a number. In this method, there are a lot of duplicated strings. Changing any category, except Rock would require changing its name in three places, only in this method.</p>
    
    <pre>function currentCategory() {&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 0) {&#x000A;    		return "Pop";&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 4) {&#x000A;    		return "Pop";&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 8) {&#x000A;    		return "Pop";&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 1) {&#x000A;    		return "Science";&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 5) {&#x000A;    		return "Science";&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 9) {&#x000A;    		return "Science";&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 2) {&#x000A;    		return "Sports";&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 6) {&#x000A;    		return "Sports";&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 10) {&#x000A;    		return "Sports";&#x000A;    	}&#x000A;    	return "Rock";&#x000A;    }</pre>
    
    <p>I think we can do better. We can use a refactoring method called <em>Introduce Local Variable</em> and eliminate the duplication. Follow these guidelines:</p>
    
    <ul>
    	<li>Add a variable with the desired value.</li>
    	<li>Find all uses of the value.</li>
    	<li>Replace all uses with the variable.</li>
    </ul>
    
    <pre>function currentCategory() {&#x000A;    	$popCategory = "Pop";&#x000A;    	$scienceCategory = "Science";&#x000A;    	$sportCategory = "Sports";&#x000A;    	$rockCategory = "Rock";&#x000A;    &#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 0) {&#x000A;    		return $popCategory;&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 4) {&#x000A;    		return $popCategory;&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 8) {&#x000A;    		return $popCategory;&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 1) {&#x000A;    		return $scienceCategory;&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 5) {&#x000A;    		return $scienceCategory;&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 9) {&#x000A;    		return $scienceCategory;&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 2) {&#x000A;    		return $sportCategory;&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 6) {&#x000A;    		return $sportCategory;&#x000A;    	}&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] == 10) {&#x000A;    		return $sportCategory;&#x000A;    	}&#x000A;    	return $rockCategory;&#x000A;    }</pre>
    
    <p>This is much better. You probably already observed some future improvements that we could do to our code, but we are only at the beginning of our work. It is tempting to fix everything you find immediately, but please don't. Many times, especially before the code is well understood, tempting changes can lead to dead ends or even more broken code. If you think there is a chance you will forget your idea, just note it on a sticky note or create a task in your project management software. Now we need to continue with our string related problems.</p>
    
    <p>In the rest of the file, all strings are output related, sent into <code>echoln()</code>. For the time being, we will leave them untouched. Modifying them would effect the printing and delivering logic of our application. They are part of the presentation layer mixed with business logic. We will deal with separating different concerns in a future lesson.</p>
    
    <h2>Magic Constants</h2>
    
    <p>Magic constants are very much like magic strings, but with values. These values can be boolean values or numbers. We will concentrate mostly on numbers used in <code>if</code> statements or <code>return</code> statements or other expressions. If these numbers have an unclear meaning, we need to extract them into variables or methods.</p>
    
    <pre>include_once __DIR__ . '/Game.php';&#x000A;    &#x000A;    $notAWinner;&#x000A;    &#x000A;    $aGame = new Game();&#x000A;    &#x000A;    $aGame-&gt;add("Chet");&#x000A;    $aGame-&gt;add("Pat");&#x000A;    $aGame-&gt;add("Sue");&#x000A;    &#x000A;    do {&#x000A;    &#x000A;    	$aGame-&gt;roll(rand(0, 5) + 1);&#x000A;    &#x000A;    	if (rand(0, 9) == 7) {&#x000A;    		$notAWinner = $aGame-&gt;wrongAnswer();&#x000A;    	} else {&#x000A;    		$notAWinner = $aGame-&gt;wasCorrectlyAnswered();&#x000A;    	}&#x000A;    &#x000A;    } while ($notAWinner);</pre>
    
    <p>We'll start with <code>GameRunner.php</code> this time and our first focus is the <code>roll()</code> method that gets some random numbers. The previous author did not care to give those numbers a meaning. Can we? If we analyze the code:</p>
    
    <pre>rand(0, 5) + 1</pre>
    
    <p>It will return a number between one and six. The random part returns a number between zero and five to which we always add one. So it is surely between one and six. Now we need to consider the context of our application. We are developing a trivia game. We know there is some kind of board on which our players must move. And to do so, we need to roll the dice. A die has six faces and it can produce numbers between one and six. That seems like a reasonable deduction.</p>
    
    <pre>$dice = rand(0, 5) + 1;&#x000A;    $aGame-&gt;roll($dice);</pre>
    
    <p>Isn't that nice? We used the Introduce Local Variable refactoring concept again. We named our new variable <code>$dice</code> and it represents the random number generated between one and six. This also made our next statement sound really natural: Game, roll dice.</p>
    
    <p>Did you run your tests? I didn't mention it, but we need to run them as frequently as possible. If you haven't, this would be a good time to run them. And they should pass.</p>
    
    <p>So, this was a case of nothing more than just exchanging a number with a variable. We took a whole expression that represented a number and extracted it into a variable. This can be technically considered a Magic Constant case, but not a pure case. What about our next random expression?</p>
    
    <pre>if (rand(0, 9) == 7)</pre>
    
    <p>This is more tricky. What are zero, nine and seven in that expression? Maybe we can name them. At first glance, I have no good ideas for zero and nine, so let's try seven. If the number returned by our random function is equal to seven, we will enter the first branch of the <code>if</code> statement which produces a wrong answer. So maybe our seven could be named <code>$wrongAnswerId</code>.</p>
    
    <pre>$wrongAnswerId = 7;&#x000A;    if (rand(0, 9) == $wrongAnswerId) {&#x000A;    	$notAWinner = $aGame-&gt;wrongAnswer();&#x000A;    } else {&#x000A;    	$notAWinner = $aGame-&gt;wasCorrectlyAnswered();&#x000A;    }</pre>
    
    <p>Our tests are still passing and the code is somewhat more expressive. Now that we managed to name our number seven, it puts the conditional into a different context. We can think of some decent names for zero and nine also. They are just parameters to <code>rand()</code>, so the variables will probably be named min-something and max-something.</p>
    
    <pre>$minAnswerId = 0;&#x000A;    $maxAnswerId = 9;&#x000A;    $wrongAnswerId = 7;&#x000A;    if (rand($minAnswerId, $maxAnswerId) == $wrongAnswerId) {&#x000A;    	$notAWinner = $aGame-&gt;wrongAnswer();&#x000A;    } else {&#x000A;    	$notAWinner = $aGame-&gt;wasCorrectlyAnswered();&#x000A;    }</pre>
    
    <p>Now that is expressive. We have a minimum answer ID, a maximum one and another for the wrong answer. Mystery solved.</p>
    
    <pre>do {&#x000A;    &#x000A;    	$dice = rand(0, 5) + 1;&#x000A;    	$aGame-&gt;roll($dice);&#x000A;    &#x000A;    	$minAnswerId = 0;&#x000A;    	$maxAnswerId = 9;&#x000A;    	$wrongAnswerId = 7;&#x000A;    	if (rand($minAnswerId, $maxAnswerId) == $wrongAnswerId) {&#x000A;    		$notAWinner = $aGame-&gt;wrongAnswer();&#x000A;    	} else {&#x000A;    		$notAWinner = $aGame-&gt;wasCorrectlyAnswered();&#x000A;    	}&#x000A;    &#x000A;    } while ($notAWinner);</pre>
    
    <p>But notice that all the code is inside a <code>do-while</code> loop. Do we need to re-assign the answer ID variables each time? I think not. Let's try to move them out of the loop and see if our tests are passing.</p>
    
    <pre>$minAnswerId = 0;&#x000A;    $maxAnswerId = 9;&#x000A;    $wrongAnswerId = 7;&#x000A;    do {&#x000A;    	$dice = rand(0, 5) + 1;&#x000A;    	$aGame-&gt;roll($dice);&#x000A;    &#x000A;    	if (rand($minAnswerId, $maxAnswerId) == $wrongAnswerId) {&#x000A;    		$notAWinner = $aGame-&gt;wrongAnswer();&#x000A;    	} else {&#x000A;    		$notAWinner = $aGame-&gt;wasCorrectlyAnswered();&#x000A;    	}&#x000A;    &#x000A;    } while ($notAWinner);</pre>
    
    <p>Yes. The tests pass like this as well.</p>
    
    <p>It's time to switch to <code>Game.php</code> and look for Magic Constants there also. If you have code highlighting, you surely have constants highlighted in some bright color. Mine are blue and they are pretty easy to spot.</p>
    <img alt="" src="https://s3.amazonaws.com/cms-assets.tutsplus.com/uploads/users/45/posts/20527/image/for-with-magic-constant.png" style="max-width: 100%; height: auto;">
    
    <p>Finding the magic constant 50 in that <code>for</code> loop was quite easy. And if we look at what the code does, we can discover that inside the <code>for</code> loop, elements are pushed to several arrays. So we have some kind of lists, each with 50 elements. Each list represents a question category and the variables are actually class fields defined above as arrays. </p>
    
    <pre>$this-&gt;popQuestions = array();&#x000A;    $this-&gt;scienceQuestions = array();&#x000A;    $this-&gt;sportsQuestions = array();&#x000A;    $this-&gt;rockQuestions = array();</pre>
    
    <p>So, what can 50 represent? I bet you already have some ideas. Naming is one of the most difficult tasks in programming, if you have more than one idea and you feel uncertain which one to choose, don't be ashamed. I also have various names in my head and I am evaluating possibilities for choosing the best one, even while writing this paragraph. I think we can go with a conservative name for 50. Something along the lines of<code>$questionsInEachCategory</code> or <code>$categorySize</code> or something similar.</p>
    
    <pre>$categorySize = 50;&#x000A;    for ($i = 0; $i &lt; $categorySize; $i++) {&#x000A;    	array_push($this-&gt;popQuestions, "Pop Question " . $i);&#x000A;    	array_push($this-&gt;scienceQuestions, ("Science Question " . $i));&#x000A;    	array_push($this-&gt;sportsQuestions, ("Sports Question " . $i));&#x000A;    	array_push($this-&gt;rockQuestions, "Rock Question " . $i);&#x000A;    }</pre>
    
    <p>That looks decent. We can keep it. And the tests are of course are passing.</p>
    
    <pre>function isPlayable() {&#x000A;    	return ($this-&gt;howManyPlayers() &gt;= 2);&#x000A;    }</pre>
    
    <p>What is two? I am sure at this point the answer is clear to you. That is easy:</p>
    
    <pre>function isPlayable() {&#x000A;    	$minimumNumberOfPlayers = 2;&#x000A;    	return ($this-&gt;howManyPlayers() &gt;= $minimumNumberOfPlayers);&#x000A;    }</pre>
    
    <p>Do you agree? If you have a better idea, feel free to comment below. And your tests? Are they still passing?</p>
    
    <p>Now, in the <code>roll()</code> method we have some numbers also: two, zero, 11 and 12.</p>
    
    <pre>if ($roll % 2 != 0)</pre>
    
    <p>That is pretty clear. We will extract that expression into a method, but not in this tutorial. We are still in the phase of understanding and hunting for magic constants and strings. So what about 11 and 12? They are buried inside the third level of <code>if</code> statements. It is quite difficult to understand what they stand for. Maybe if we look at the lines around them.</p>
    
    <pre>if ($this-&gt;places[$this-&gt;currentPlayer] &gt; 11) {&#x000A;    	$this-&gt;places[$this-&gt;currentPlayer] = $this-&gt;places[$this-&gt;currentPlayer] - 12;&#x000A;    }</pre>
    
    <p>If the current player's place or position is greater than 11, then its position will be reduced to the current one minus 12. This sounds like a case of when a player reaches the end of the board or play field and it is repositioned in its initial position. Probably position zero. Or, if our game board is circular, going over the last marked position will put the player into the relative first position. So 11 could be the board size. </p>
    
    <pre>$boardSize = 11;&#x000A;    if ($this-&gt;inPenaltyBox[$this-&gt;currentPlayer]) {&#x000A;    	if ($roll % 2 != 0) {&#x000A;    		// ... //&#x000A;    		if ($this-&gt;places[$this-&gt;currentPlayer] &gt; $boardSize) {&#x000A;    			$this-&gt;places[$this-&gt;currentPlayer] = $this-&gt;places[$this-&gt;currentPlayer] - 12;&#x000A;    		}&#x000A;    		// ... //&#x000A;    	} else {&#x000A;    		// ... //&#x000A;    	}&#x000A;    } else {&#x000A;    	// ... //&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] &gt; $boardSize) {&#x000A;    		$this-&gt;places[$this-&gt;currentPlayer] = $this-&gt;places[$this-&gt;currentPlayer] - 12;&#x000A;    	}&#x000A;    // ... //&#x000A;    }</pre>
    
    <p>Don't forget to replace 11 in both places inside the method. This will force us to move the variable assignment outside of the <code>if</code> statements, right at the first indentation level.</p>
    
    <p>But if 11 is the board's size, what is 12? We subtract 12 from the player's current position, not 11. And why don't we just set the position to zero instead of subtracting? Because that would make our tests fail. Our previous guess that the player will end up in position zero after the code inside the <code>if</code> statement is run, was wrong. Let's say a player is in position ten and rolls a four. 14 is greater than 11, so the subtraction will happen. The player will end up in position <code>10+4-12=2</code>.</p>
    
    <p>This drives us toward another possible naming for 11 and 12. I think it is more appropriate to call 12 <code>$boardSize</code>. But what does that leave us for 11? Maybe <code>$lastPositionOnTheBoard</code>? A little bit long, but at least it tells us the truth about the magic constant.</p>
    
    <pre>$lastPositionOnTheBoard = 11;&#x000A;    $boardSize = 12;&#x000A;    if ($this-&gt;inPenaltyBox[$this-&gt;currentPlayer]) {&#x000A;    	if ($roll % 2 != 0) {&#x000A;    		// ... //&#x000A;    		if ($this-&gt;places[$this-&gt;currentPlayer] &gt; $lastPositionOnTheBoard) {&#x000A;    			$this-&gt;places[$this-&gt;currentPlayer] = $this-&gt;places[$this-&gt;currentPlayer] - $boardSize;&#x000A;    		}&#x000A;    		// ... //&#x000A;    	} else {&#x000A;    		// ... //&#x000A;    	}&#x000A;    } else {&#x000A;    	// ... //&#x000A;    	if ($this-&gt;places[$this-&gt;currentPlayer] &gt; $lastPositionOnTheBoard) {&#x000A;    		$this-&gt;places[$this-&gt;currentPlayer] = $this-&gt;places[$this-&gt;currentPlayer] - $boardSize;&#x000A;    	}&#x000A;    // ... //&#x000A;    }</pre>
    
    <p>I know, I know! There is some code duplication there. It is quite obvious, especially with the rest of the code hidden. But please remember that we were after magic constants. There will be a time for duplicate code also, but not right now.</p>
    
    <h2>Final Thoughts</h2>
    
    <p>I left one last magic constant in the code. Can you spot it? If you look at the final code, it will be replaced, but of course that would be cheating. Good luck finding it and thanks for reading.</p>
    </div>
]]>
</Body>
<Summary>Old code. Ugly code. Complicated code. Spaghetti code. Jibberish nonsense. In two words, Legacy Code. This is a series that will help you work and deal with it.    We first met our legacy source...</Summary>
<Website>http://code.tutsplus.com/tutorials/refactoring-legacy-code-part-2-magic-strings-constants--cms-20527</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/43127/guest@my.umbc.edu/ad5ec1d3addff1cf9a85b66d6a9fe427/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>wed</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 02 Apr 2014 11:00:04 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="43123" important="false" status="posted" url="https://my3.my.umbc.edu/posts/43123">
<Title>State of the Art: If You Like Immersion, You&#8217;ll Love This Reality</Title>
<Body>
<![CDATA[
    <div class="html-content">Jeremy Bailenson, who directs Stanford’s Virtual Human Interaction Lab, says virtual reality is the natural extension of every major technology being used today.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2014%2F04%2F03%2Ftechnology%2Fpersonaltech%2Fvirtual-reality-perfect-for-an-immersive-society.html%3Fpartner%3Drss%26emc%3Drss&amp;t=State+of+the+Art%3A+If+You+Like+Immersion%2C+You%E2%80%99ll+Love+This+Reality" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.nytimes.com%2F2014%2F04%2F03%2Ftechnology%2Fpersonaltech%2Fvirtual-reality-perfect-for-an-immersive-society.html%3Fpartner%3Drss%26emc%3Drss&amp;t=State+of+the+Art%3A+If+You+Like+Immersion%2C+You%E2%80%99ll+Love+This+Reality" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.nytimes.com%2F2014%2F04%2F03%2Ftechnology%2Fpersonaltech%2Fvirtual-reality-perfect-for-an-immersive-society.html%3Fpartner%3Drss%26emc%3Drss&amp;t=State+of+the+Art%3A+If+You+Like+Immersion%2C+You%E2%80%99ll+Love+This+Reality" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.nytimes.com%2F2014%2F04%2F03%2Ftechnology%2Fpersonaltech%2Fvirtual-reality-perfect-for-an-immersive-society.html%3Fpartner%3Drss%26emc%3Drss&amp;t=State+of+the+Art%3A+If+You+Like+Immersion%2C+You%E2%80%99ll+Love+This+Reality" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.nytimes.com%2F2014%2F04%2F03%2Ftechnology%2Fpersonaltech%2Fvirtual-reality-perfect-for-an-immersive-society.html%3Fpartner%3Drss%26emc%3Drss&amp;t=State+of+the+Art%3A+If+You+Like+Immersion%2C+You%E2%80%99ll+Love+This+Reality" 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/193360777860/u/0/f/640387/c/34625/s/38e661dd/sc/4/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360777860/u/0/f/640387/c/34625/s/38e661dd/sc/4/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/193360777860/u/0/f/640387/c/34625/s/38e661dd/sc/4/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360777860/u/0/f/640387/c/34625/s/38e661dd/sc/4/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/193360777860/u/0/f/640387/c/34625/s/38e661dd/sc/4/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360777860/u/0/f/640387/c/34625/s/38e661dd/sc/4/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/193360777860/u/0/f/640387/c/34625/s/38e661dd/sc/4/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360777860/u/0/f/640387/c/34625/s/38e661dd/sc/4/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Jeremy Bailenson, who directs Stanford’s Virtual Human Interaction Lab, says virtual reality is the natural extension of every major technology being used today.      </Summary>
<Website>http://rss.nytimes.com/c/34625/f/640387/s/38e661dd/sc/4/l/0L0Snytimes0N0C20A140C0A40C0A30Ctechnology0Cpersonaltech0Cvirtual0Ereality0Eperfect0Efor0Ean0Eimmersive0Esociety0Bhtml0Dpartner0Frss0Gemc0Frss/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/43123/guest@my.umbc.edu/32416a04c16040dedc1af3ad47a418b7/api/pixel</TrackingUrl>
<Tag>bailenson-jeremy</Tag>
<Tag>computer-and-video-games</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>headphones-and-headsets</Tag>
<Tag>new</Tag>
<Tag>oculus-vr-inc</Tag>
<Tag>technology</Tag>
<Tag>virtual-reality-computers</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>Wed, 02 Apr 2014 08:15:32 -0400</PostedAt>
<EditAt>Wed, 02 Apr 2014 08:15:32 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="43121" important="false" status="posted" url="https://my3.my.umbc.edu/posts/43121">
<Title>CSEE student Alex Nelson gets honorable mention in NSF fellowship program</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img alt="An early prototype" src="http://www.csee.umbc.edu/wp-content/uploads/2014/04/hand.png" width="700" height="308" style="max-width: 100%; height: auto;"></p>
    <p>Computer Engineering graduate student <a href="https://www.linkedin.com/in/alexanderhnelson" rel="nofollow external" class="bo">Alexander Nelson</a> received an honorable mention for the National Science Foundation (NSF) Graduate fellowship. Alex’s research is focused on developing innovative cyber-physical systems that can dramatically improve a person’s standard of living in an impactful way. His current and past projects have involved emergency communications, assistive devices and home automation.</p>
    <p>His prior research in assistive devices has gained acceptance to the 2013 IEEE Sensors Conference and 2013 Real Time Systems Symposium and contributed to a Microsoft Software Engineering Innovation Foundation award. His current research gained acceptance to a Works-in-Progress session at the 2013 Real Time Systems Symposium. His research co-mentors are Professors <a href="http://www.csee.umbc.edu/~nilanb/" rel="nofollow external" class="bo">Nilanjan Banerjee</a> and <a href="http://www.csee.umbc.edu/people/faculty/ryan-robucci/" rel="nofollow external" class="bo">Ryan Robucci</a>.</p>
    <p>The NSF honorable mention designation is considered a significant national academic achievement and provides access to cyberinfrastructure resources through NSF’s <a href="http://www.xsede.org/" rel="nofollow external" class="bo">Extreme Science and Engineering Discovery Environment</a> (XSEDE) computing infrastruture. XSEDE is the most advanced, powerful, and robust collection of integrated advanced digital resources and services in the world. It is a single virtual system that scientists can use to interactively share computing resources, data, and expertise.</p>
    </div>
]]>
</Body>
<Summary>Computer Engineering graduate student Alexander Nelson received an honorable mention for the National Science Foundation (NSF) Graduate fellowship. Alex’s research is focused on developing...</Summary>
<Website>http://www.csee.umbc.edu/2014/04/csee-student-alex-nelson-gets-honorable-mention-in-nsf-fellowship-program/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=csee-student-alex-nelson-gets-honorable-mention-in-nsf-fellowship-program</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/43121/guest@my.umbc.edu/1aa37d0eb07267a250572ad73fb8b7f4/api/pixel</TrackingUrl>
<Tag>graduate</Tag>
<Tag>news</Tag>
<Tag>research</Tag>
<Tag>students</Tag>
<Group token="csee">Computer Science and Electrical Engineering</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/csee</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/original.png?1314043393</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/large.png?1314043393</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/medium.png?1314043393</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/small.png?1314043393</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxsmall.png?1314043393</AvatarUrl>
<Sponsor>Computer Science and Electrical Engineering</Sponsor>
<PawCount>1</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 02 Apr 2014 08:00:53 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="43877" important="false" status="posted" url="https://my3.my.umbc.edu/posts/43877">
<Title>CSEE student Alex Nelson gets honorable mention in NSF fellowship program</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img alt="An early prototype" src="http://www.csee.umbc.edu/wp-content/uploads/2014/04/hand.png" width="700" height="308" style="max-width: 100%; height: auto;"></p>
    <p>Computer Engineering graduate student <a href="https://www.linkedin.com/in/alexanderhnelson" rel="nofollow external" class="bo">Alexander Nelson</a> received an honorable mention for the National Science Foundation (NSF) Graduate fellowship. Alex’s research is focused on developing innovative cyber-physical systems that can dramatically improve a person’s standard of living in an impactful way. His current and past projects have involved emergency communications, assistive devices and home automation.</p>
    <p>His prior research in assistive devices has gained acceptance to the 2013 IEEE Sensors Conference and 2013 Real Time Systems Symposium and contributed to a Microsoft Software Engineering Innovation Foundation award. His current research gained acceptance to a Works-in-Progress session at the 2013 Real Time Systems Symposium. His research co-mentors are Professors <a href="http://www.csee.umbc.edu/~nilanb/" rel="nofollow external" class="bo">Nilanjan Banerjee</a> and <a href="http://www.csee.umbc.edu/people/faculty/ryan-robucci/" rel="nofollow external" class="bo">Ryan Robucci</a>.</p>
    <p>The NSF honorable mention designation is considered a significant national academic achievement and provides access to cyberinfrastructure resources through NSF’s <a href="http://www.xsede.org/" rel="nofollow external" class="bo">Extreme Science and Engineering Discovery Environment</a> (XSEDE) computing infrastruture. XSEDE is the most advanced, powerful, and robust collection of integrated advanced digital resources and services in the world. It is a single virtual system that scientists can use to interactively share computing resources, data, and expertise.</p>
    </div>
]]>
</Body>
<Summary>Computer Engineering graduate student Alexander Nelson received an honorable mention for the National Science Foundation (NSF) Graduate fellowship. Alex’s research is focused on developing...</Summary>
<Website>http://www.csee.umbc.edu/2014/04/csee-student-alex-nelson-gets-honorable-mention-in-nsf-fellowship-program/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/43877/guest@my.umbc.edu/0cb3f7127acd8880ee949fe172f2ca00/api/pixel</TrackingUrl>
<Tag>graduate</Tag>
<Tag>news</Tag>
<Tag>research</Tag>
<Tag>students</Tag>
<Group token="csee">Computer Science and Electrical Engineering</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/csee</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/original.png?1314043393</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/large.png?1314043393</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/medium.png?1314043393</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/small.png?1314043393</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxsmall.png?1314043393</AvatarUrl>
<Sponsor>Computer Science and Electrical Engineering</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 02 Apr 2014 08:00:53 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="43118" important="false" status="posted" url="https://my3.my.umbc.edu/posts/43118">
<Title>Bits Blog: Tech Spending Recovers, but It&#8217;s Different</Title>
<Body>
<![CDATA[
    <div class="html-content">Technology spending is set to grow significantly in 2014, but more interesting, however, is how it is growing: Android will dominate, and companies flock to the cloud.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2014%2F04%2F02%2Ftech-spending-recovers-but-its-different%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Tech+Spending+Recovers%2C+but+It%E2%80%99s+Different" 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%2F2014%2F04%2F02%2Ftech-spending-recovers-but-its-different%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Tech+Spending+Recovers%2C+but+It%E2%80%99s+Different" 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%2F2014%2F04%2F02%2Ftech-spending-recovers-but-its-different%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Tech+Spending+Recovers%2C+but+It%E2%80%99s+Different" 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%2F2014%2F04%2F02%2Ftech-spending-recovers-but-its-different%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Tech+Spending+Recovers%2C+but+It%E2%80%99s+Different" 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%2F2014%2F04%2F02%2Ftech-spending-recovers-but-its-different%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Tech+Spending+Recovers%2C+but+It%E2%80%99s+Different" 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/193360850804/u/0/f/640387/c/34625/s/38e5d406/sc/15/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360850804/u/0/f/640387/c/34625/s/38e5d406/sc/15/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/193360850804/u/0/f/640387/c/34625/s/38e5d406/sc/15/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360850804/u/0/f/640387/c/34625/s/38e5d406/sc/15/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/193360850804/u/0/f/640387/c/34625/s/38e5d406/sc/15/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360850804/u/0/f/640387/c/34625/s/38e5d406/sc/15/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/193360850804/u/0/f/640387/c/34625/s/38e5d406/sc/15/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360850804/u/0/f/640387/c/34625/s/38e5d406/sc/15/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Technology spending is set to grow significantly in 2014, but more interesting, however, is how it is growing: Android will dominate, and companies flock to the cloud.      </Summary>
<Website>http://rss.nytimes.com/c/34625/f/640387/s/38e5d406/sc/15/l/0Lbits0Bblogs0Bnytimes0N0C20A140C0A40C0A20Ctech0Espending0Erecovers0Ebut0Eits0Edifferent0C0Dpartner0Frss0Gemc0Frss/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/43118/guest@my.umbc.edu/5911b2304fcddc13aa82c0b9c40f993a/api/pixel</TrackingUrl>
<Tag>cloud-computing</Tag>
<Tag>computers-and-the-internet</Tag>
<Tag>gartner-inc</Tag>
<Tag>gartner-inc-it-nyse</Tag>
<Tag>mobile</Tag>
<Tag>new</Tag>
<Tag>technology</Tag>
<Tag>wireless-communications</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>Wed, 02 Apr 2014 07:30:05 -0400</PostedAt>
<EditAt>Wed, 02 Apr 2014 11:42:49 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="43122" important="false" status="posted" url="https://my3.my.umbc.edu/posts/43122">
<Title>How Your Location Data Is Being Used to Predict the Events You Will Want to Attend</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>The next generation of recommendation engines will use your location data to suggest music festivals, sporting events, and conferences you will want to attend.</p>
    <p><br>Recommendation engines have flooded the Web. It’s hard to buy an ebook, mp3 track or video without being bombarded with suggestions for other purchases. Indeed, the phrase “people who bought X also liked Y” has become a modern-day aphorism</p>
    </div>
]]>
</Body>
<Summary>The next generation of recommendation engines will use your location data to suggest music festivals, sporting events, and conferences you will want to attend.   Recommendation engines have...</Summary>
<Website>http://www.technologyreview.com/view/526096/how-your-location-data-is-being-used-to-predict-the-events-you-will-want-to-attend/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/43122/guest@my.umbc.edu/b346ab2e7961bc13618c2809b804b59d/api/pixel</TrackingUrl>
<Tag>development</Tag>
<Tag>internet</Tag>
<Tag>mit</Tag>
<Tag>technology</Tag>
<Tag>web</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 02 Apr 2014 06:53:26 -0400</PostedAt>
<EditAt>Wed, 02 Apr 2014 06:53:26 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="43117" important="false" status="posted" url="https://my3.my.umbc.edu/posts/43117">
<Title>Why Website Speed is Important</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>It’s reasonable to assume that a website’s loading time is important.</p>
    <p>We can confidently conclude that slow sites have usability and SEO issues because we know that users <a href="http://www.nngroup.com/articles/website-response-times/" rel="nofollow external" class="bo">hate waiting</a> for web pages to load and that Google uses <a href="http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html" rel="nofollow external" class="bo">site speed as a factor</a> for its search rankings.</p>
    <p>But, quantitatively, what are the other effects of having a slow website?</p>
    <p>Let us look at some cases of tech companies sharing what they have learned about web optimization.</p>
    <p></p>
    <h3>Case Study: Amazon</h3>
    <p>While discussing his work on <em>Big Data</em> in a <a href="http://www.gduchamp.com/media/StanfordDataMining.2006-11-28.pdf" rel="nofollow external" class="bo">presentation</a> (PDF or see a report <a href="http://blog.gigaspaces.com/amazon-found-every-100ms-of-latency-cost-them-1-in-sales/" rel="nofollow external" class="bo">here</a>) Greg Linden shared the significance of site speed in terms of revenue.</p>
    <p>In his work at Amazon — Linden, by the way, invented Amazon’s recommendation engine — he talked about how only a <strong>100-millisecond delay</strong> could lead to revenues of the online company dropping by 1%.</p>
    <p>Let’s do some back-of-the-napkin calculations.</p>
    <p>Last year alone, Amazon’s <a href="http://investing.businessweek.com/research/stocks/earnings/earnings.asp?ticker=AMZN" rel="nofollow external" class="bo">estimated revenue</a> totaled $74.5 billion.</p>
    <p>Based on Linden’s disclosure, increasing page loading times by just a fraction of a second would <strong>cost Amazon $745 million a year</strong> in lost revenue!</p>
    <h3>Case Study: Bing</h3>
    <p>In  a joint conference <a href="http://velocityconf.com/velocity2009/public/schedule/detail/8523" rel="nofollow external" class="bo">presentation</a>, Eric Schurman (from Bing) and Jake Brutlag (from Google) discussed the impact of web server delays.</p>
    <p>Bing performed an experiment testing to see what would happen if their pages loaded <strong>1.5 seconds longer than usual.</strong></p>
    <p>The results?</p>
    <p><img src="http://cdn.sixrevisions.com/0414-02_site_speed_bing.jpg" width="543" height="382" style="max-width: 100%; height: auto;"><span><a href="http://velocityconf.com/velocity2009/public/schedule/detail/8523" rel="nofollow external" class="bo">Source</a></span></p>
    <p>Among other key metrics, they saw decreases in:</p>
    <ul>
    <li>
    <strong>User satisfaction</strong> (-3.8%)</li>
    <li>
    <strong>Revenue per user</strong> (-4.3%)</li>
    <li>
    <strong>Number of clicks</strong> (-4.4%).</li>
    </ul>
    <h3>Case Study: Akamai</h3>
    <p><a href="http://www.akamai.com/" rel="nofollow external" class="bo">Akamai</a> is a longstanding industry leader in the content delivery space.</p>
    <p>In 2009, the company conducted a <a href="http://www.akamai.com/html/about/press/releases/2009/press_091409.html" rel="nofollow external" class="bo">survey research study</a> involving over 1,000 online shoppers.</p>
    <p>This is what they discovered:</p>
    <ul>
    <li>The threshold is <strong>2 seconds</strong> — more than that and the user will become impatient</li>
    <li>40% of the respondents will <strong>abandon the site</strong> if it takes more than 3 seconds to load</li>
    </ul>
    <p>These stats all equate to one thing: Considerable amount of losses in revenue.</p>
    <h3>Case Study: Google</h3>
    <p>In a talk, Marissa Mayer — then a VP at Google and today Yahoo’s CEO — <a href="http://www.youtube.com/watch?v=WFsQvcdmLxc" rel="nofollow external" class="bo">discussed an experiment</a> (video) she and her team ran on Google’s search results page.</p>
    <p>They tested the effects of displaying more results in Google searches: 10 search results vs. 30 search results.</p>
    <p>Analyzing their data, they witnessed <strong>25% fewer searches</strong> from users that saw more search results.</p>
    <p><img src="http://cdn.sixrevisions.com/0414-01_site_speed_google.jpg" width="550" height="724" style="max-width: 100%; height: auto;"><span><a href="http://assets.en.oreilly.com/1/event/29/Keynote%20Presentation%202.pdf" rel="nofollow external" class="bo">Source</a></span></p>
    <p>But was it because displaying more results meant users found what they were looking for on the first search results page, and so they felt no need to perform additional searches?</p>
    <p>After further investigation, they attributed this drop in searches (i.e. page impressions) to increased page load times.</p>
    <p>On average, the group that had more search results were subjected to longer page response times <strong>(0.9 seconds)</strong> vs. the group with fewer search results but got the page loaded quicker at only <strong>0.4 seconds.</strong></p>
    <p>In conclusion, Google discovered that even a few milliseconds of delay — just 500ms to be exact — could lead to a notable reduction in page impressions.</p>
    <h3>Case Study: Shopzilla</h3>
    <p>A few years ago, Shopzilla embarked on a major, two-year-long redesign of their site.</p>
    <p>During this time, Shopzilla was already huge — they received between <strong>20-29 million unique visitors</strong> a month and <strong>8,000 searches per second.</strong> Optimizing website performance to handle this sort of traffic thus became crucial.</p>
    <p>Their web optimization efforts led to significant improvements — up to a <strong>5-second reduction</strong> in page-loading times.</p>
    <p>Phil Dixon, VP of Engineering at Shopzilla <a href="http://velocityconf.com/velocity2009/public/schedule/detail/7709" rel="nofollow external" class="bo">shared data and the lessons</a> the company learned during their optimization efforts.</p>
    <p><img src="http://cdn.sixrevisions.com/0414-04_site_speed_shopzilla.jpg" width="550" height="366" style="max-width: 100%; height: auto;"></p>
    <p>They witnessed amazing growth in important metrics by improving their website’s speed:</p>
    <ul>
    <li><strong>Conversion rates increased by 7-12%</strong></li>
    <li>
    <strong>Page views increased by 25%</strong> — just imagine how much more page views they gained just by focusing on improving site speed, because they were already getting 100 million impressions per day</li>
    </ul>
    <h3>Case Study: AOL</h3>
    <p>While <a href="http://velocityconf.com/velocity2009/public/schedule/detail/7579" rel="nofollow external" class="bo">sharing</a> some key metrics, David Artz — Director of Website Optimization at AOL and the co-author of the book <em><a href="http://amzn.to/1mycYz1" rel="nofollow external" class="bo">Website Optimization</a></em><strong> –</strong> concluded that:</p>
    <blockquote><p>"Visits experiencing the fastest load times delivered us [AOL] the most page views per visit"</p></blockquote>
    <p><img src="http://cdn.sixrevisions.com/0414-03_site_speed_aol.jpg" width="550" height="403" style="max-width: 100%; height: auto;"><span><a href="http://cdn.oreillystatic.com/en/assets/1/event/29/The%20Secret%20Weapons%20of%20the%20AOL%20Optimization%20Team%20Presentation.pdf" rel="nofollow external" class="bo">Source</a></span></p>
    <p>This was because in the sections of AOL.com  tested, they saw up to a <strong>160% increase in average number of page views</strong> from users in the group who were in the top 10% in terms of average load time (fastest experience), compared to those at the bottom 10% (slowest experience).</p>
    <h3>Conclusion</h3>
    <p>These studies impart upon us one important lesson: Website speed should be a high priority if we want to build great websites.</p>
    <p>Based on these reports, we have evidence suggesting that having a slow website will have negative effects on revenue, conversion rates, usability, and UX.</p>
    <h3>How to Speed Up Your Website</h3>
    <p>If you feel that your site’s speed needs improvement, read these articles to get started:</p>
    <ul>
    <li><a href="http://sixrevisions.com/web-development/10-ways-to-improve-your-web-page-performance/" rel="nofollow external" class="bo">10 Ways to Improve Your Web Page Performance</a></li>
    <li><a href="http://sixrevisions.com/tools/free-website-speed-testing/" rel="nofollow external" class="bo">20 Free Online Tools for Website Speed Testing</a></li>
    <li><a href="http://sixrevisions.com/web-development/site-speed-performance/" rel="nofollow external" class="bo">10 Tips for Optimizing Your Website’s Speed</a></li>
    <li><a href="http://sixrevisions.com/web-development/decrease-webpage-load-times/" rel="nofollow external" class="bo">10 Tips for Decreasing Web Page Load Times</a></li>
    <li><a href="http://sixrevisions.com/wordpress/caching-plugins/" rel="nofollow external" class="bo">8 Excellent WordPress Caching Plugins to Speed Up Your Site</a></li>
    </ul>
    <h3>Read Also</h3>
    <ul>
    <li><a href="http://sixrevisions.com/usabilityaccessibility/10-usability-tips-based-on-research-studies/" rel="nofollow external" class="bo">10 Usability Tips Based on Research Studies</a></li>
    <li><a href="http://sixrevisions.com/usability/usability-mistakes/" rel="nofollow external" class="bo">5 Usability Mistakes You Shouldn’t Make</a></li>
    <li><a href="http://sixrevisions.com/web_design/use-the-80-20-rule-to-increase-your-websites-effectiveness/" rel="nofollow external" class="bo">Use the 80-20 Rule to Increase Your Website’s Effectiveness</a></li>
    <li><a href="http://sixrevisions.com/web-development/agile/" rel="nofollow external" class="bo">Agile Web Development That Works</a></li>
    </ul>
    <h3>About the Author</h3>
    <p><img src="http://cdn.sixrevisions.com/authors/smriti_chawla_small.jpg" alt="" width="80" height="80" style="max-width: 100%; height: auto;"><span><strong>Smriti Chawla</strong> works at <a href="http://visualwebsiteoptimizer.com/" rel="nofollow external" class="bo">Visual Website Optimizer</a>,a popular A/B testing and heat-mapping tool. Read more articles on A/B testing and high-converting design ideas by visiting the <a href="http://visualwebsiteoptimizer.com/split-testing-blog/" rel="nofollow external" class="bo">Visual Website Optimizer Blog</a>. Connect with Smriti on <a href="https://twitter.com/chawlasmriti" rel="nofollow external" class="bo">Twitter</a>.</span></p>
    <p>The post <a href="http://sixrevisions.com/web-development/why-website-speed-is-important/" rel="nofollow external" class="bo">Why Website Speed is Important</a> appeared first on <a href="http://sixrevisions.com" rel="nofollow external" class="bo">Six Revisions</a>.</p>
    </div>
]]>
</Body>
<Summary>It’s reasonable to assume that a website’s loading time is important.   We can confidently conclude that slow sites have usability and SEO issues because we know that users hate waiting for web...</Summary>
<Website>http://feedproxy.google.com/~r/SixRevisions/~3/xISZFSYv5Y4/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/43117/guest@my.umbc.edu/c60595c6715cbce279cfbf67015b259b/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>database</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>sql</Tag>
<Tag>web</Tag>
<Tag>web-development</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 02 Apr 2014 06:00:52 -0400</PostedAt>
<EditAt>Wed, 02 Apr 2014 06:00:52 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="43116" important="false" status="posted" url="https://my3.my.umbc.edu/posts/43116">
<Title>The web designer&#8217;s guide to presenting legal stuff</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img alt="thumbnail" src="http://netdna.webdesignerdepot.com/uploads/2014/03/thumbnail9.jpg" width="200" height="160" style="max-width: 100%; height: auto;">With the recent developments in online privacy it is just about the right time to suggest small tweaks to improve your terms &amp; conditions and privacy policy documents on your own websites. As the examples below show, there are various ways to make these documents (in addition to its legal validity) more than just text in a way that will benefit your visitors.</p> <p>But wait, before we start, you might want to know why this is even relevant? Why do websites (and apps) need a privacy policy and terms of service? And what do you usually include in those documents?</p> <p>For one, privacy policies are relevant (and legally required) in most countries—they are a way to disclose your data collection practices. (Did you know that you are required to have a privacy policy when you use Google Analytics?) It is also the right thing to do according to your visitors/customers: <a href="http://www.mefmobile.org/activities-and-analytics/analytics/global-privacy-survey-2013" rel="nofollow external" class="bo">MEF’s Global Privacy Report</a> from early 2013 revealed that 70% of consumers say it’s important to know exactly what personal information is being collected and shared.</p> <p>Terms of Service can mainly help you to avoid responsibility for the actions of your users. They are therefore an important way of helping you stay out of trouble.</p> <p>Here’s what’s usually is covered by a <em>Terms &amp; Conditions</em> document:</p> <ul> <li>Disambiguation/definition of key words and phrases</li> <li>User rights and responsibilities</li> <li>Proper or expected usage; potential misuse</li> <li>Accountability for online actions, behavior, and conduct</li> <li>Privacy: pointing to the privacy policy and defining as part of the contract</li> <li>Privacy policy outlining the use of personal data</li> <li>Payment details such as membership or subscription fees, etc.</li> <li>Opt-out policy describing procedure for account termination, if available</li> <li>Disclaimer/Limitation of Liability clarifying the site’s legal liability for damages incurred by users</li> <li>User notification upon modification of terms, if offered</li> </ul> <p>Here’s what usually needs to be included in a <em>Privacy Policy:</em></p> <ul> <li>What kind of personal data is being collected</li> <li>Describe how this information will be used by the company</li> <li>Describe how this information will be transferred to third party companies</li> <li>Provide instructions on how users can modify or delete their personal information</li> <li>Provide instructions on how users can opt-out of future communications</li> <li>Identify its effective date and outline how you notify people of material changes to your privacy policy</li> </ul> <p> </p> <h1>Case Studies</h1> <h2>Sprout Social — summary on top</h2> <p>I couldn’t find this User Agreement at <a href="http://sproutsocial.com/" rel="nofollow external" class="bo">Sprout Social</a> anymore (taken from my archives), but the screenshot is self-explanatory. Above the actual user agreement, the most important points were summarized in an easily digestible manner.</p> <p><a href="http://sproutsocial.com/responsible-disclosure-policy" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2014/03/sproutsocial.jpg" width="650" alt="The web designers guide to presenting legal stuff" style="max-width: 100%; height: auto;"></a> </p> <p> </p> <h2>FullContact — summarize/hide</h2> <p>Here’s a similar approach by <a href="http://www.fullcontact.com/privacy/" rel="nofollow external" class="bo">FullContact,</a> they summarize the actual content and hide it. If you want to learn more, the full text appears.</p> <p> <a href="http://www.fullcontact.com/privacy/" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2014/03/fullcontact.jpg" width="650" alt="The web designers guide to presenting legal stuff" style="max-width: 100%; height: auto;"></a></p> <p> </p> <h2>Mite — summary by paragraph</h2> <p><a href="http://mite.yo.lk/en/privacypolicy.html" rel="nofollow external" class="bo">Mite’s</a> terms of service and privacy policy summarize every paragraph by saying stated briefly what the legal speak means in plain English.</p> <p><a href="http://mite.yo.lk/en/privacypolicy.html" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2014/03/mite.jpg" width="650" alt="The web designers guide to presenting legal stuff" style="max-width: 100%; height: auto;"></a> </p> <p> </p> <h2>MailChimp — helpful definitions</h2> <p><a href="http://mailchimp.com/legal/terms/" rel="nofollow external" class="bo">MailChimp</a> adds helpful definitions next to their paragraphs. They add information to the reading flow when something isn’t necessarily understandable for an average user.</p> <p>The example below is MailChimp’s paragraph requiring you to comply with local and international laws like spam and privacy regulation. They explain the abbreviation EEA to clarify what their terms mean to you: “This applies to people who are sending to or from the European Economic Area. The EEA includes countries that are part of the European Union, plus Iceland, Liechtenstein, and Norway.”</p> <p><a href="http://mailchimp.com/legal/terms/" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2014/03/mailchimp.jpg" width="650" alt="The web designers guide to presenting legal stuff" style="max-width: 100%; height: auto;"></a> </p> <p> </p> <h2>Fragmentation</h2> <p>Moving on, but staying with Mailchimp. When doing your docs online, try to avoid putting everything in one document and group them by topic. Most importantly a privacy policy shouldn’t be buried in something like the terms or legal information regarding your company (required in a lot of European countries. In Spain they call it aviso legal, in Germany impressum).</p> <p>Mailchimp’s way of grouping the legal documents, making it easy for you to understand where to look and what to expect.</p> <p><a href="http://mailchimp.com/legal/terms/" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2014/03/mailchimp2.jpg" width="650" alt="The web designers guide to presenting legal stuff" style="max-width: 100%; height: auto;"></a></p> <p>Here’s a similar grouping implementation by Dropbox:</p> <p><a href="https://www.dropbox.com/" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2014/03/dropbox.jpg" width="650" alt="The web designers guide to presenting legal stuff" style="max-width: 100%; height: auto;"></a> </p> <p> </p> <h2>iubenda — icons/simplified and full legal text view</h2> <p><a href="https://www.iubenda.com/privacy-policy/980980" rel="nofollow external" class="bo">iubenda</a> has a full system for their privacy policies. They combine an easily digestible view for visitors where the focus is on quick understanding and text is accompanied by icons with a page that shows actual legally relevant text. (Full disclosure: I have recently joined iubenda which is why I have insights into how they work. A lot of emphasis is put on ease of use for both web designers using the service and the visitors reading the policies).</p> <p><a href="https://www.iubenda.com/privacy-policy/980980" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2014/03/iubenda.jpg" width="650" alt="The web designers guide to presenting legal stuff" style="max-width: 100%; height: auto;"></a> </p> <p> </p> <h2>Upworthy — use an infographic image</h2> <p>Use an <a href="http://www.upworthy.com/privacy" rel="nofollow external" class="bo">infographic style image</a> to explain what your users are to expect from you. This one has no real legal validity, but they additionally have one that may have below that image:</p> <p><a href="http://www.upworthy.com/privacy" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2014/03/upworthy.jpg" width="650" alt="The web designers guide to presenting legal stuff" style="max-width: 100%; height: auto;"></a> </p> <p> </p> <h2>DuckDuckGo — tell a story</h2> <p>DuckDuckGo’s example is far away from being an actual privacy policy. What they did here is set themselves apart from the competition by telling a story and therefore outline what their privacy policy is all about. Again, they also have an actual policy on their site that complies with actual legal regulations. To make this stand out even more as a story, this policy sits on a separate site called <a href="http://donttrack.us/" rel="nofollow external" class="bo">donttrack.us.</a></p> <p><a href="http://donttrack.us/" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2014/03/duckduck.jpg" width="650" alt="The web designers guide to presenting legal stuff" style="max-width: 100%; height: auto;"></a> </p> <p> </p> <h2>CloudFlare — track changes on Github</h2> <p>CloudFlare <a href="https://github.com/cloudflare/CloudFlare-Policies" rel="nofollow external" class="bo">tracks their changes on Github,</a> so you can always see how the policies may have changed. Often a policy just shows the date of its latest startup. This is a great way of improving transparency and therefore trust.</p> <p><a href="https://github.com/cloudflare/CloudFlare-Policies" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2014/03/cloudflare.jpg" width="650" alt="The web designers guide to presenting legal stuff" style="max-width: 100%; height: auto;"></a> </p> <p> </p> <p>What makes great legal documentation on the web isn’t just legally compliant text for your particular audience. It’s also easily understandable language and helps the user comprehend what it’s all about in a visual fashion. Hopefully this post will give you some ideas about how to design your documents in the future.</p> <p> </p> <p><em>Featured image/thumbnail, <a href="http://www.shutterstock.com/pic-162362546/stock-vector-vector-business-contract-and-magnifier-analyzing-document-concept-in-flat-style.html" rel="nofollow external" class="bo">legal checks image</a> via Shutterstock.</em></p> <p><br><br> </p>
    <table width="100%"> <tbody>
    <tr> <td> <a href="http://www.mightydeals.com/deal/essay-font-family.html?ref=inwidget" rel="nofollow external" class="bo"><strong>Noem9studio’s Essay Font Family, 8 Styles – only $9!</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="The web designers guide to presenting legal stuff" style="max-width: 100%; height: auto;"><br> </a> </td> </tr> </tbody>
    </table> <p><br> </p> <a href="http://www.webdesignerdepot.com/2014/04/the-web-designers-guide-to-presenting-legal-stuff/" rel="nofollow external" class="bo">Source</a> <br><br><br><a href="http://da.feedsportal.com/r/193360841184/u/49/f/661066/c/35285/s/38e3de14/sc/4/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360841184/u/49/f/661066/c/35285/s/38e3de14/sc/4/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/193360841184/u/49/f/661066/c/35285/s/38e3de14/sc/4/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360841184/u/49/f/661066/c/35285/s/38e3de14/sc/4/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/193360841184/u/49/f/661066/c/35285/s/38e3de14/sc/4/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360841184/u/49/f/661066/c/35285/s/38e3de14/sc/4/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/193360841184/u/49/f/661066/c/35285/s/38e3de14/sc/4/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/193360841184/u/49/f/661066/c/35285/s/38e3de14/sc/4/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>With the recent developments in online privacy it is just about the right time to suggest small tweaks to improve your terms &amp; conditions and privacy policy documents on your own websites. As...</Summary>
<Website>http://rss.feedsportal.com/c/35285/f/661066/s/38e3de14/sc/4/l/0L0Swebdesignerdepot0N0C20A140C0A40Cthe0Eweb0Edesigners0Eguide0Eto0Epresenting0Elegal0Estuff0C/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/43116/guest@my.umbc.edu/2242ebee3b819f0d915d2b1bbc6a6c61/api/pixel</TrackingUrl>
<Tag>art</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>how-to-write-legal-documents</Tag>
<Tag>how-to-write-terms-and-conditions</Tag>
<Tag>html</Tag>
<Tag>html5</Tag>
<Tag>illustrator</Tag>
<Tag>javascript</Tag>
<Tag>legal-policies</Tag>
<Tag>mysql</Tag>
<Tag>oracle</Tag>
<Tag>photoshop</Tag>
<Tag>php</Tag>
<Tag>privacy-policy</Tag>
<Tag>sql</Tag>
<Tag>terms-and-conditions</Tag>
<Tag>web-design</Tag>
<Tag>what-to-say-in-a-privacy-policy</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 02 Apr 2014 04:15:12 -0400</PostedAt>
<EditAt>Wed, 02 Apr 2014 04:15:12 -0400</EditAt>
</NewsItem>

</News>
