<?xml version="1.0"?>
<News hasArchived="true" page="8198" pageCount="10746" pageSize="10" timestamp="Wed, 12 Aug 2026 07:26:36 -0400" url="https://my3.my.umbc.edu/posts.xml?mode=activity&amp;page=8198">
<NewsItem contentIssues="false" id="123025" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123025">
<Title>Laura Hussey, Political Science, in The London School of Economics American Politics Blog</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>In a recent article published in the <em>London School of Economics American Politics and Policy Blog</em>, Political Science Assistant Professor Laura Hussey argues public antipathy toward undocumented immigrants can play a significant role in shaping social welfare policy among Democrats.</p>
    <p><a href="/wp-content/uploads/2012/10/laura-hussey.jpg" rel="nofollow external" class="bo"><img alt="Laura Hussey" src="/wp-content/uploads/2012/10/laura-hussey.jpg" width="270" height="180" style="max-width: 100%; height: auto;"></a></p>
    <p>The article, “Antipathy toward undocumented immigrants risks fracturing support for social welfare among Democrats”, was jointly written by Hussey and University of Rhode Island Assistant Professor Shanna-Pearson-Merkowitz. It argues Republicans tend to broadly oppose social welfare programs, but Democrats’ support for the same programs can depend more on the specific groups of people they benefit.</p>
    <p>“A key lesson of this research for American Democrats is that forging a consensus on social welfare expansions within their own party may require taking into account public antipathy toward undocumented immigrants,” the article states. “While public projection of anti- (illegal) immigrant sentiment onto social welfare programs may not totally derail expansion, as the health care reform experience also shows, it is likely to constrain policymakers’ options and to result in both delays and drama.”</p>
    <p>You can read the full blog post <a href="http://blogs.lse.ac.uk/usappblog/2013/10/10/undocumented-immigrants-attitudes/" rel="nofollow external" class="bo">here</a>.</p>
    </div>
]]>
</Body>
<Summary>In a recent article published in the London School of Economics American Politics and Policy Blog, Political Science Assistant Professor Laura Hussey argues public antipathy toward undocumented...</Summary>
<Website>https://umbc.edu/stories/laura-hussey-political-science-in-the-london-school-of-economics-american-politics-blog/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123025/guest@my.umbc.edu/ea8a0a8919e74edcbfbabafdf6e95319/api/pixel</TrackingUrl>
<Tag>cahss</Tag>
<Tag>policy-and-society</Tag>
<Tag>politicalscience</Tag>
<Tag>research</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 14 Oct 2013 15:31:53 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="36978" important="false" status="posted" url="https://my3.my.umbc.edu/posts/36978">
<Title>Bits Blog: How to Opt Out of Google&#8217;s Plan to Use Your Name and Comments in Ads</Title>
<Body>
<![CDATA[
    <div class="html-content">Google said it made it easy for users to opt out of its new plan for using their personal information in social ads, but some readers found the opt-out process to be confusing.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F10%2F14%2Fhow-to-opt-out-of-googles-plan-to-use-your-name-and-comments-in-ads%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+How+to+Opt+Out+of+Google%E2%80%99s+Plan+to+Use+Your+Name+and+Comments+in+Ads" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F10%2F14%2Fhow-to-opt-out-of-googles-plan-to-use-your-name-and-comments-in-ads%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+How+to+Opt+Out+of+Google%E2%80%99s+Plan+to+Use+Your+Name+and+Comments+in+Ads" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F10%2F14%2Fhow-to-opt-out-of-googles-plan-to-use-your-name-and-comments-in-ads%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+How+to+Opt+Out+of+Google%E2%80%99s+Plan+to+Use+Your+Name+and+Comments+in+Ads" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F10%2F14%2Fhow-to-opt-out-of-googles-plan-to-use-your-name-and-comments-in-ads%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+How+to+Opt+Out+of+Google%E2%80%99s+Plan+to+Use+Your+Name+and+Comments+in+Ads" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F10%2F14%2Fhow-to-opt-out-of-googles-plan-to-use-your-name-and-comments-in-ads%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+How+to+Opt+Out+of+Google%E2%80%99s+Plan+to+Use+Your+Name+and+Comments+in+Ads" 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/176968208746/u/0/f/640387/c/34625/s/327374aa/sc/5/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/176968208746/u/0/f/640387/c/34625/s/327374aa/sc/5/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/176968208746/u/0/f/640387/c/34625/s/327374aa/sc/5/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/176968208746/u/0/f/640387/c/34625/s/327374aa/sc/5/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/176968208746/u/0/f/640387/c/34625/s/327374aa/sc/5/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/176968208746/u/0/f/640387/c/34625/s/327374aa/sc/5/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/176968208746/u/0/f/640387/c/34625/s/327374aa/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/176968208746/u/0/f/640387/c/34625/s/327374aa/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Google said it made it easy for users to opt out of its new plan for using their personal information in social ads, but some readers found the opt-out process to be confusing.      </Summary>
<Website>http://bits.blogs.nytimes.com/2013/10/14/how-to-opt-out-of-googles-plan-to-use-your-name-and-comments-in-ads/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/36978/guest@my.umbc.edu/e1e29c02fd6a2331f7c8db206fe3fb16/api/pixel</TrackingUrl>
<Tag>data</Tag>
<Tag>internet</Tag>
<Tag>new</Tag>
<Tag>privacy</Tag>
<Tag>social</Tag>
<Tag>technology</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 14 Oct 2013 15:26:36 -0400</PostedAt>
<EditAt>Tue, 15 Oct 2013 14:08:51 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="36976" important="false" status="posted" url="https://my3.my.umbc.edu/posts/36976">
<Title>Student Entrepreneur Spotlight: Adrian Rosebrock</Title>
<Tagline>UMBC PhD Student launches 3rd company: ID My Pill</Tagline>
<Body>
<![CDATA[
    <div class="html-content">
    <div>Name: Adrian Rosebrock</div>
    <div>Major: Computer Science</div>
    <div>Academic Year: PhD student</div>
    <div><br></div>
    <div><strong>1. Tell us a little about your company, and what makes your business </strong></div>
    <div><strong>unique?</strong></div>
    <div><br></div>
    <div>I am the Founder and CEO of <a href="http://www.idmypill.com" rel="nofollow external" class="bo">ID My Pill</a><span>, an app that identifies your prescription pills in a snap of your smartphone's camera -- instant pill identification.</span>
    </div>
    <div><br></div>
    <div>The goal of ID My Pill is to empower patients by giving them the tools to take a more vested interest in their own healthcare. Physicians prescribe medications, pharmacists fill the prescriptions, but what about patients? They lack the tools to validate their prescription pills -- that's there ID My Pill comes in. ID My Pill gives patients the power to validate their prescription pills in a snap, and at the same time creates a checks-and-balances between the physician, pharmacist, and patient.</div>
    <div><br></div>
    <div>Prescription pill mixups are a very real risk. Over 3.3 million injuries and deaths happen each year due to medication errors. Given that nearly 50% of all prescription pills are round or white, there are a lot of visually similar pills on the market -- it's no wonder that </div>
    <div>medication mixups happen.</div>
    <div><br></div>
    <div>My favorite part of ID My Pill is actually the <a href="http://www.idmypill.com/api/" rel="nofollow external" class="bo">API</a>. Using the API, other companies (such as Drugs.com, Heathline, etc.) can integrate visual pill identification into their own apps, websites, or healthcare solutions. My goal is to make prescription pill identification via a photo the standard in medication identification. </div>
    <div><br></div>
    <div>
    <div><strong>2. Are there classes on campus that have helped you the most?</strong></div>
    <div><br></div>
    <div>Three classes come to mind that helped me the most, all computer science courses. </div>
    <div><br></div>
    <div>The first is Machine Learning which gave me a high level overview of machine learning concepts. The second is Data Mining which explores Machine Learning concepts in more depth. Finally, I remember taking a special topics course, Computational Photography, during the last semester of my senior year. Undoubtedly, it changed the course of entrepreneurial ventures and academic research.</div>
    <div><br></div>
    <div><strong>3. What are some resources that have helped you the most? </strong></div>
    <div><strong>(Magazines, Books, Websites…)</strong></div>
    <div><br></div>
    <div>I'm a big fan of consuming startup podcasts. They keep you in the entrepreneurial mindset and you can listen to them while you're traveling. My favorites include Startups for the Rest of Us, Mixergy, and This Week in Startups.</div>
    <div><br></div>
    <div><strong>4. What is the toughest decision you have had to make in the last 6 </strong></div>
    <div><strong>months?</strong></div>
    <div><br></div>
    <div>My first entrepreneurial venture was ShiftyBits, LLC., a company I setup to do consulting work with the National Cancer Institute (NCI). Working closely with NCI, I helped create methods to automatically quantify the structural properties of acini in the breast. Using this information we were able to create methods to determine breast cancer risk simply from examining breast histology images. Doing this manually (1) requires a pathologist who is heavily trained and (2) is extremely time consuming and tedious.</div>
    <div><br></div>
    <div>Two months ago I was asked to return to NCI and continue my consulting work with them -- this is also about the time when ID My Pill was really starting to turn some heads. While my work with NCI had been rewarding, both emotionally and financially, </div>
    <div><br></div>
    <div>I had to turn the contract down and focus completely on ID My Pill. It was an extremely hard decision. I was passionate about with NCI and I enjoyed it very much -- the timing was just not right and I felt extremely motivated and compelled to push ID My Pill forward.</div>
    <div><br></div>
    <div><strong>5. What advice would you give other student entrepreneurs?</strong></div>
    <div><br></div>
    <div>The first piece of advice is to be a Tylenol, not a vitamin. The product you are developing should solve a particular pain point for your customers. If you have a pounding headache, you don't reach into your medicine cabinet and take a B12 vitamin. </div>
    <div><br></div>
    <div>Instead, you reach for the Tylenol. You want your pain to go away -- keep this same mentality when developing a product for your customers. Is what you are developing a vitamin? Or are you solving an actual problem the customer has? If you are solving an actual pain point, customers are much more likely to pull out their wallets.</div>
    <div><br></div>
    <div>The second piece of advice that I would give is to talk to other people. Talk to other students. Talk to other entrepreneurs. Talk to your parents, your family, your friends. </div>
    <div><br></div>
    <div>And most importantly, talk to your potential customers that your product is targeting. </div>
    <div><br></div>
    <div>Too many times I see entrepreneurs speak to only one or two potential customers about the product they are developing and then disappear into a basement to build the product. Six months later they emerge, triumphant that there product is finished. But then they are disappointed when no one is willing to pull out their wallet. The reason this happens is because the entrepreneur did not stay in touch with their customers throughout the entire development life-cycle. Don't build something that you "think" your customers will want. Speak with them. Talk to them. Find out their pain points and keep talking to them while you build.</div>
    <div><br></div>
    <div>Most importantly, stop worrying that someone is going to steal your idea. Honestly, building a product is the easy part. It's the marketing that is hard. And you won't be able to market effectively without keeping your potential customers in the loop as you build. </div>
    <div><br></div>
    <div>The "build it and they will come" mentality simply does not exist except in extremely rare circumstances. Talk to your ideas with other people, you'll be surprised what type of input you get.</div>
    <div><br></div>
    <div><strong>6. If folks are interested in learning more about your company/</strong></div>
    <div><strong>product, where should they go?</strong></div>
    <div><br></div>
    <div>If you are interested in learning more about ID My Pill, you can visit <a href="http://www.idmypill.com" rel="nofollow external" class="bo">www.idmypill.com</a> or send an email to <a href="mailto:adrian@idmypill.com">adrian@idmypill.com</a>.</div>
    </div>
    <div><br></div>
    <div><img src="https://mail.google.com/mail/u/0/?ui=2&amp;ik=47328088ca&amp;view=att&amp;th=14193ffb45cdcb35&amp;attid=0.1&amp;disp=thd&amp;realattid=f_hmhzfdn71&amp;zw" style="max-width: 100%; height: auto;"></div>
    </div>
]]>
</Body>
<Summary>Name: Adrian Rosebrock  Major: Computer Science  Academic Year: PhD student     1. Tell us a little about your company, and what makes your business   unique?     I am the Founder and CEO of ID My...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/36976/guest@my.umbc.edu/652b75fc66a7f9e915e0dd6fcbeded6b/api/pixel</TrackingUrl>
<Tag>adrian</Tag>
<Tag>entrepreneur</Tag>
<Tag>idmypill</Tag>
<Tag>rosebrock</Tag>
<Tag>spotlight</Tag>
<Tag>student</Tag>
<Group token="entrepreneurship">Alex. Brown Center for Entrepreneurship</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/entrepreneurship</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/original.jpg?1771000363</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/large.png?1771000363</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/medium.png?1771000363</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/small.png?1771000363</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxsmall.png?1771000363</AvatarUrl>
<Sponsor>The Alex. Brown Center for Entrepreneurship</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/036/976/8b212ddebb71de5f0118e2e9f170bd04/xxlarge.jpg?1381778458</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/036/976/8b212ddebb71de5f0118e2e9f170bd04/xlarge.jpg?1381778458</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/036/976/8b212ddebb71de5f0118e2e9f170bd04/large.jpg?1381778458</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/036/976/8b212ddebb71de5f0118e2e9f170bd04/medium.jpg?1381778458</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/036/976/8b212ddebb71de5f0118e2e9f170bd04/small.jpg?1381778458</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/036/976/8b212ddebb71de5f0118e2e9f170bd04/xsmall.jpg?1381778458</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/036/976/8b212ddebb71de5f0118e2e9f170bd04/xxsmall.jpg?1381778458</ThumbnailUrl>
<PawCount>3</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 14 Oct 2013 15:22:52 -0400</PostedAt>
<EditAt>Mon, 14 Oct 2013 22:04:10 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="36980" important="false" status="posted" url="https://my3.my.umbc.edu/posts/36980">
<Title>In the Field: Time to Upgrade</Title>
<Body>
<![CDATA[
    <div class="html-content">The cost and work involved in a database upgrade are always a major consideration, but Oracle Database 12c includes features that can save time and cut costs.</div>
]]>
</Body>
<Summary>The cost and work involved in a database upgrade are always a major consideration, but Oracle Database 12c includes features that can save time and cut costs.</Summary>
<Website>http://www.oracle.com/technetwork/issue-archive/2013/13-sep/o53field-1995090.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/36980/guest@my.umbc.edu/c666b7a277cf4a55df50e9392620ccfa/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>oracle</Tag>
<Tag>pl-sql</Tag>
<Tag>sql</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 14 Oct 2013 15:16:53 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="36973" important="false" status="posted" url="https://my3.my.umbc.edu/posts/36973">
<Title>Open Recreational Weight Room hours 10/14/13-10/20/13</Title>
<Tagline>Varsity weight room hours for this week</Tagline>
<Body>
<![CDATA[
    <div class="html-content">Below you will find the Athletic Weight Room Availability for general student body usage for this week; please note that these hours are determined by Athletic Weight Room Staff, not UMBC RAC or Group Fitness Staff.<br><br><u><strong>Monday</strong></u><br>8am-10am<br>8pm-10pm<br><br><u><strong>Tuesday</strong></u><br>1pm-2pm<br>4pm-6pm<br>8pm-10pm<br><u><strong><br>Wednesday </strong></u><br>2pm-3pm<br>8pm-10pm<br><br><u><strong>Thursday </strong></u><br>4pm-6pm<br>8pm-10pm<br><br><u><strong>Friday</strong></u><br>1pm-6pm<br>8pm-9pm<br><br><u><strong>Saturday</strong></u><br>1pm-7pm<br><br><u><strong>Sunday</strong></u><br>12pm-7pm<br>
    </div>
]]>
</Body>
<Summary>Below you will find the Athletic Weight Room Availability for general student body usage for this week; please note that these hours are determined by Athletic Weight Room Staff, not UMBC RAC or...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/36973/guest@my.umbc.edu/03da23a97164bf2197d9c9429a76e8b3/api/pixel</TrackingUrl>
<Group token="recsports">Recreation at the RAC</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/recsports</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/xsmall.png?1661189624</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/original.png?1661189624</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/xxlarge.png?1661189624</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/xlarge.png?1661189624</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/large.png?1661189624</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/medium.png?1661189624</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/small.png?1661189624</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/xsmall.png?1661189624</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/xxsmall.png?1661189624</AvatarUrl>
<Sponsor>Recreation at the RAC</Sponsor>
<PawCount>5</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 14 Oct 2013 14:26:30 -0400</PostedAt>
<EditAt>Mon, 14 Oct 2013 14:27:26 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="36975" important="false" status="posted" url="https://my3.my.umbc.edu/posts/36975">
<Title>A Staff of Robots Can Clean and Install Solar Panels</Title>
<Body>
<![CDATA[
    <div class="html-content">With the price of solar panels falling, the industry is looking to labor savings to achieve its goal of make solar energy cheaper than natural gas.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F10%2F15%2Fbusiness%2Fenergy-environment%2Fputting-robots-to-work-in-solar-energy.html%3Fpartner%3Drss%26emc%3Drss&amp;t=A+Staff+of+Robots+Can+Clean+and+Install+Solar+Panels" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F10%2F15%2Fbusiness%2Fenergy-environment%2Fputting-robots-to-work-in-solar-energy.html%3Fpartner%3Drss%26emc%3Drss&amp;t=A+Staff+of+Robots+Can+Clean+and+Install+Solar+Panels" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F10%2F15%2Fbusiness%2Fenergy-environment%2Fputting-robots-to-work-in-solar-energy.html%3Fpartner%3Drss%26emc%3Drss&amp;t=A+Staff+of+Robots+Can+Clean+and+Install+Solar+Panels" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F10%2F15%2Fbusiness%2Fenergy-environment%2Fputting-robots-to-work-in-solar-energy.html%3Fpartner%3Drss%26emc%3Drss&amp;t=A+Staff+of+Robots+Can+Clean+and+Install+Solar+Panels" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F10%2F15%2Fbusiness%2Fenergy-environment%2Fputting-robots-to-work-in-solar-energy.html%3Fpartner%3Drss%26emc%3Drss&amp;t=A+Staff+of+Robots+Can+Clean+and+Install+Solar+Panels" 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/176968651488/u/0/f/640387/c/34625/s/3272d6a4/sc/32/kg/369/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/176968651488/u/0/f/640387/c/34625/s/3272d6a4/sc/32/kg/369/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/176968651488/u/0/f/640387/c/34625/s/3272d6a4/sc/32/kg/369/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/176968651488/u/0/f/640387/c/34625/s/3272d6a4/sc/32/kg/369/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/176968651488/u/0/f/640387/c/34625/s/3272d6a4/sc/32/kg/369/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/176968651488/u/0/f/640387/c/34625/s/3272d6a4/sc/32/kg/369/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/176968651488/u/0/f/640387/c/34625/s/3272d6a4/kg/369/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/176968651488/u/0/f/640387/c/34625/s/3272d6a4/kg/369/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>With the price of solar panels falling, the industry is looking to labor savings to achieve its goal of make solar energy cheaper than natural gas.      </Summary>
<Website>http://www.nytimes.com/2013/10/15/business/energy-environment/putting-robots-to-work-in-solar-energy.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/36975/guest@my.umbc.edu/fbc553fba3bbe10641b7e92b97c30f3d/api/pixel</TrackingUrl>
<Tag>abb-ltd-abb-nyse</Tag>
<Tag>new</Tag>
<Tag>robots-and-robotics</Tag>
<Tag>solar-energy</Tag>
<Tag>start-ups</Tag>
<Tag>technology</Tag>
<Tag>trina-solar-ltd-tsl-nyse</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 14 Oct 2013 14:17:47 -0400</PostedAt>
<EditAt>Mon, 14 Oct 2013 14:17:47 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="123026" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123026">
<Title>Ellen Handler Spitz, Honors College Professor, in Artcritical</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>The Museum of Modern Art in New York City is hosting an exhibit on Belgian Surrealist painter Rene Magritte. The show, <em>Magritte: The Mystery of the Ordinary, 1926-1938</em>, is running through January 12, 2014.</p>
    <p><a href="/wp-content/uploads/2013/10/32_magritte_le_blanc_seing.jpg" rel="nofollow external" class="bo"><img alt="Magritte painting" src="/wp-content/uploads/2013/10/32_magritte_le_blanc_seing.jpg" width="99" height="99" style="max-width: 100%; height: auto;"></a></p>
    <p><em>Artcritical </em>has published an article about Magritte by Honors College Professor Ellen Handler Spitz in conjunction with the exhibition.</p>
    <p>The show is attracting thousands of visitors from around the world. After New York City, it travels to Houston and then Chicago.</p>
    <p>You can read the full article by Ellen Handler Spitz <a href="http://www.artcritical.com/2013/10/09/magritte/" rel="nofollow external" class="bo">here</a>.</p>
    </div>
]]>
</Body>
<Summary>The Museum of Modern Art in New York City is hosting an exhibit on Belgian Surrealist painter Rene Magritte. The show, Magritte: The Mystery of the Ordinary, 1926-1938, is running through January...</Summary>
<Website>https://umbc.edu/stories/ellen-handler-spitz-honors-college-professor-in-artcritical/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123026/guest@my.umbc.edu/12ae657a77da58c2eb15b42d5927e1b2/api/pixel</TrackingUrl>
<Tag>arts-and-culture</Tag>
<Tag>cahss</Tag>
<Tag>honorscollege</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 14 Oct 2013 14:13:35 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="36972" important="false" status="posted" url="https://my3.my.umbc.edu/posts/36972">
<Title>Tips to Avoid Brittle UI Tests</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=35188&amp;c=275830513" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=35188&amp;c=275830513" alt="" style="max-width: 100%; height: auto;"></a><p>In the <a href="http://net.tutsplus.com/tutorials/maintainable-automated-ui-tests/" rel="nofollow external" class="bo">last article</a> I talked about a few ideas and patterns, like the Page Object pattern, that help write maintainable UI tests. In this article we are going to discuss a few advanced topics that could help you write more robust tests, and troubleshoot them when they fail:</p>
    <p></p>
    <ul>
    <li>We discuss why adding fixed delays in UI tests is a bad idea and how you can get rid of them.</li>
    <li>Browser automation frameworks target UI elements using selectors and it’s very critical to use good selectors to avoid brittle tests. So I give you some advice on choosing the right selectors and targeting elements directly when possible.</li>
    <li>UI tests fail more frequently then other types of tests, so how can we debug a broken UI test and figure out what caused the failure? In this section I show you how you can capture a screenshot and the page’s HTML source when a UI test fails so you can investigate it easier.</li>
    </ul>
    <p>I am going to use <a href="http://docs.seleniumhq.org/" rel="nofollow external" class="bo">Selenium</a> for the browser automation topics discussed in this article.</p>
    <p>Much like the previous article the concepts and solutions discussed in this article are applicable regardless of the language and UI framework you use. Before going any further please read the <a href="http://net.tutsplus.com/tutorials/maintainable-automated-ui-tests/" rel="nofollow external" class="bo">previous article</a> as I am going to refer to it and its sample code a few times. Don’t worry; I’ll wait here.</p>
    <hr>
    <h2>Don’t Add Delays to Your Tests</h2>
    <p>Adding <code>Thread.Sleep</code> (or generally delays) feels like an inevitable hack when it comes to UI testing. You have a test that fails intermittently and after some investigation you trace that back to occasional delays in the response; For example, you navigate to a page and look or assert for something before the page is fully loaded and your browser automation framework throws an exception indicating the element doesn’t exist. A lot of things could contribute to this delay. For example:</p>
    <ul>
    <li>The web server, the database and/or the network are overloaded and busy with other requests.</li>
    <li>The page under test is slow because it loads a lot of data and/or queries a lot of tables.</li>
    <li>You’re waiting for some event to happen on the page which takes time.</li>
    </ul>
    <p>Or a mix of these and other issues.</p>
    <p>Let’s say that you have a page that normally takes less than a second to load but the tests hitting it fail every now and then because of occasional lag in response. You have a few options:</p>
    <ul>
    <li>You don’t add a delay: in this case the tests that hit that page are sometimes going to fail which reduces your trust in the tests.</li>
    <li>You add a one-second delay to the tests hitting that page: in this case <em>all</em> of those tests are <em>always</em> going to take one second longer, even when the page loads fast, but even then the tests are not guaranteed to pass as the page might sometimes take longer then a second to load.</li>
    <li>You might decide to add a few-second delay: this makes sure the page is definitely always loaded, but now your UI tests are taking longer and longer.</li>
    </ul>
    <p>You see, there is no winning with arbitrary delays: you either get a slow or a brittle test suite. Here I am going to show you how to avoid inserting fixed delays in your tests. We are going to discuss two types of delays which should cover pretty much all cases you have to deal with: adding a global delay and waiting for something to happen.</p>
    <h3>Adding a Global Delay</h3>
    <p>If all of your pages take around the same time to load, which is longer than expected, then most tests are going to fail due to untimely response. In cases like this you can use <a href="http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#implicit-waits" rel="nofollow external" class="bo">Implicit Waits</a>:</p>
    <blockquote><p>An implicit wait is to tell WebDriver to poll the DOM for a certain amount of time when trying to find an element or elements if they are not immediately available. The default setting is 0. Once set, the implicit wait is set for the life of the WebDriver object instance.</p></blockquote>
    <p>This is how you set an implicit wait:</p>
    <pre>WebDriver driver = new FirefoxDriver();&#x000A;    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));&#x000A;    </pre>
    <p>This way you’re telling Selenium to wait up to 5 seconds when it tries to find an element or interact with the page. So now you can write:</p>
    <pre>driver.Url = "<a href="http://somedomain/url_that_delays_loading">http://somedomain/url_that_delays_loading</a>";&#x000A;    IWebElement myDynamicElement = driver.FindElement(By.Id("someDynamicElement"));&#x000A;    </pre>
    <p>instead of:</p>
    <pre>driver.Url = "<a href="http://somedomain/url_that_delays_loading">http://somedomain/url_that_delays_loading</a>";&#x000A;    Thread.Sleep(5000);&#x000A;    IWebElement myDynamicElement = driver.FindElement(By.Id("someDynamicElement"));&#x000A;    </pre>
    <p>The benefit of this approach is that <code>FindElement</code> will return as soon as it finds the element and doesn’t wait for the whole 5 seconds when the element is available sooner.</p>
    <p>Once implicit wait is set on your <code>WebDriver</code> instance it applies to all actions on the driver; so you can get rid of many <code>Thread.Sleep</code>s in your code.</p>
    <p>5 seconds is a wait I made up for this article – you should find the optimal implicit wait for your application and you should make this wait as short as possible. From the API documentations:</p>
    <blockquote><p>Increasing the implicit wait timeout should be used judiciously as it will have an adverse effect on test run time, especially when used with slower location strategies like XPath.</p></blockquote>
    <p>Even if you don’t use XPath, using long implicit waits slows down your tests, particularly when some tests are genuinely failing, because the web driver is going to wait for a long time before it times out and throws an exception.</p>
    <h3>Waiting for Explicit Events/Changes</h3>
    <p>Using implicit wait is a great way to get rid of many hardcoded delays in your code; but you are still going to find yourself in a situation where you need to add some fixed delays in your code because you’re waiting for something to happen: a page is slower than all other pages and you have to wait longer, you’re waiting for an AJAX call to finish or for an element to appear on or disappear from the page etc. This is where you need explicit waits.</p>
    <h4>Explicit Wait</h4>
    <p>So you have set the implicit wait to 5 seconds and it works for a lot of your tests; but there are still a few pages that sometimes take more than 5 seconds to load and result into failing tests.</p>
    <p>As a side note, you should investigate why a page is taking so long first, before trying to fix the broken test by making it wait longer. There might be a performance issue on the page that’s leading to the red test in which case you should fix the page, not the test.</p>
    <p>In case of a slow page you can replace fixed delays with <a href="http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-waits" rel="nofollow external" class="bo">Explicit Waits</a>:</p>
    <blockquote><p>An explicit waits is code you define to wait for a certain condition to occur before proceeding further in the code.</p></blockquote>
    <p>You can apply explicit waits using <code>WebDriverWait</code> class. <code>WebDriverWait</code> lives in <code>WebDriver.Support</code> assembly and can be installed using <a href="https://www.nuget.org/packages/selenium.support" rel="nofollow external" class="bo">Selenium.Support</a> nuget:</p>
    <pre>/// &lt;summary&gt;&#x000A;    /// Provides the ability to wait for an arbitrary condition during test execution.&#x000A;    /// &lt;/summary&gt;&#x000A;    public class WebDriverWait : DefaultWait&lt;IWebDriver&gt;&#x000A;    {&#x000A;      /// &lt;summary&gt;&#x000A;      /// Initializes a new instance of the &lt;see cref="T:OpenQA.Selenium.Support.UI.WebDriverWait"/&gt; class.&#x000A;      /// &lt;/summary&gt;&#x000A;      /// &lt;param name="driver"&gt;The WebDriver instance used to wait.&lt;/param&gt;&lt;param name="timeout"&gt;The timeout value indicating how long to wait for the condition.&lt;/param&gt;&#x000A;      public WebDriverWait(IWebDriver driver, TimeSpan timeout);&#x000A;    &#x000A;      /// &lt;summary&gt;&#x000A;      /// Initializes a new instance of the &lt;see cref="T:OpenQA.Selenium.Support.UI.WebDriverWait"/&gt; class.&#x000A;      /// &lt;/summary&gt;&#x000A;      /// &lt;param name="clock"&gt;An object implementing the &lt;see cref="T:OpenQA.Selenium.Support.UI.IClock"/&gt; interface used to determine when time has passed.&lt;/param&gt;&lt;param name="driver"&gt;The WebDriver instance used to wait.&lt;/param&gt;&lt;param name="timeout"&gt;The timeout value indicating how long to wait for the condition.&lt;/param&gt;&lt;param name="sleepInterval"&gt;A &lt;see cref="T:System.TimeSpan"/&gt; value indicating how often to check for the condition to be true.&lt;/param&gt;&#x000A;      public WebDriverWait(IClock clock, IWebDriver driver, TimeSpan timeout, TimeSpan sleepInterval);&#x000A;    }&#x000A;    </pre>
    <p>Here is an example of how you can use <code>WebDriverWait</code> in your tests:</p>
    <pre>driver.Url = "<a href="http://somedomain/url_that_takes_a_long_time_to_load">http://somedomain/url_that_takes_a_long_time_to_load</a>";&#x000A;    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));&#x000A;    var myDynamicElement = wait.Until(d =&gt; d.FindElement(By.Id("someElement")));&#x000A;    </pre>
    <p>We are telling Selenium that we want it to wait for this particular page/element for up to 10 seconds.</p>
    <p>You are likely to have a few pages that take longer than your default implicit wait and it’s not a good coding practice to keep repeating this code everywhere. After all <em>Test Code Is Code</em>. You could instead extract this into a method and use it from your tests:</p>
    <pre>public IWebElement FindElementWithWait(By by, int secondsToWait = 10)&#x000A;    {&#x000A;        var wait = new WebDriverWait(WebDriver, TimeSpan.FromSeconds(secondsToWait));&#x000A;        return wait.Until(d =&gt; d.FindElement(by));&#x000A;    }&#x000A;    </pre>
    <p>Then you can use this method as:</p>
    <pre>var slowPage = new SlowPage("<a href="http://somedomain/url_that_takes_a_long_time_to_load">http://somedomain/url_that_takes_a_long_time_to_load</a>");&#x000A;    var element = slowPage.FindElementWithWait(By.Id("someElement"));&#x000A;    </pre>
    <p>This is a contrived example to show what the method could potentially look like and how it could be used. Ideally you would move all page interactions to your page objects.</p>
    <h3>Alternative Explicit Wait Example</h3>
    <p>Let’s see another example of an explicit wait. Sometimes the page is fully loaded but the element isn’t there yet because it is later loaded as the result of an AJAX request. Maybe it’s not an element you’re waiting for but just want to wait for an AJAX interaction to finish before you can make an assertion, say in the database. Again this is where most developers use <code>Thread.Sleep</code> to make sure that, for example, that AJAX call is done and the record is now in the database before they proceed to the next line of the test. This can be easily rectified using JavaScript execution!</p>
    <p>Most browser automation frameworks allow you to run JavaScript on the active session, and <a href="http://docs.seleniumhq.org/docs/03_webdriver.jsp#using-javascript" rel="nofollow external" class="bo">Selenium is no exception</a>. In Selenium there is an interface called <code>IJavaScriptExecutor</code> with two methods:</p>
    <pre>/// &lt;summary&gt;&#x000A;    /// Defines the interface through which the user can execute JavaScript.&#x000A;    /// &lt;/summary&gt;&#x000A;    public interface IJavaScriptExecutor&#x000A;    {&#x000A;        /// &lt;summary&gt;&#x000A;        /// Executes JavaScript in the context of the currently selected frame or window.&#x000A;        /// &lt;/summary&gt;&#x000A;        /// &lt;param name="script"&gt;The JavaScript code to execute.&lt;/param&lt;&lt;param name="args"&lt;The arguments to the script.&lt;/param&gt;&#x000A;        /// &lt;returns&gt;&#x000A;        /// The value returned by the script.&#x000A;        /// &lt;/returns&gt;&#x000A;        object ExecuteScript(string script, params object[] args);&#x000A;    &#x000A;        /// &lt;summary&gt;&#x000A;        /// Executes JavaScript asynchronously in the context of the currently selected frame or window.&#x000A;        /// &lt;/summary&gt;&#x000A;        /// &lt;param name="script"&gt;The JavaScript code to execute.&lt;/param&lt;&lt;param name="args"&lt;The arguments to the script.&lt;/param&gt;&#x000A;        /// &lt;returns&gt;&#x000A;        /// The value returned by the script.&#x000A;        /// &lt;/returns&gt;&#x000A;        object ExecuteAsyncScript(string script, params object[] args);&#x000A;    }&#x000A;    </pre>
    <p>This interface is implemented by <code>RemoteWebDriver</code> which is the base class for all web driver implementations. So on your web driver instance you can call <code>ExecuteScript</code> to run a JavaScript script. Here is a method you can use to wait for all AJAX calls to finish (assuming you are using jQuery):</p>
    <pre>// This is assumed to live in a class that has access to the active `WebDriver` instance through `WebDriver` field/property. &#x000A;    public void WaitForAjax(int secondsToWait = 10)&#x000A;    {&#x000A;        var wait = new WebDriverWait(WebDriver, TimeSpan.FromSeconds(secondsToWait));&#x000A;        wait.Until(d =&gt; (bool)((IJavaScriptExecutor)d).ExecuteScript("return jQuery.active == 0"));&#x000A;    }&#x000A;    </pre>
    <p>Combine the <code>ExecuteScript</code> with <code>WebDriverWait</code> and you can get rid of <code>Thread.Sleep</code> added for AJAX calls.</p>
    <p><code>jQuery.active</code> returns the number of active AJAX calls <em>initiated by jQuery</em>; so when it is zero there are no AJAX calls in progress. This method obviously only works if all AJAX requests are initiated by jQuery. If you are using other JavaScript libraries for AJAX communications you should consult its API documentations for an equivalent method or keep track of AJAX calls yourself.</p>
    <h4>ExpectedCondition</h4>
    <p>With explicit wait you can set a condition and wait until it is met or for the timeout to expire. We saw how we could check for AJAX calls to finish – another example is checking for visibility of an element. Just like the AJAX check, you could write a condition that checks for the visibility of an element; but there is an easier solution for that called <code>ExpectedCondition</code>.</p>
    <p>From <a href="http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#expected-conditions" rel="nofollow external" class="bo">Selenium documentation</a>:</p>
    <blockquote><p>There are some common conditions that are frequently come across when automating web browsers.</p></blockquote>
    <p>If you are using Java you’re in luck because <code>ExpectedCondition</code> class in Java is quite extensive and has a lot of convenience methods. You can find the documentation <a href="http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html" rel="nofollow external" class="bo">here</a>.</p>
    <p>.Net developers are not quite as lucky. There is still an <code>ExpectedConditions</code> class in <code>WebDriver.Support</code> assembly (documented <a href="http://selenium.googlecode.com/git/docs/api/dotnet/html/AllMembers_T_OpenQA_Selenium_Support_UI_ExpectedConditions.htm" rel="nofollow external" class="bo">here</a>) but it’s very minimal:</p>
    <pre>public sealed class ExpectedConditions&#x000A;    {&#x000A;         /// &lt;summary&gt;&#x000A;         /// An expectation for checking the title of a page.&#x000A;         /// &lt;/summary&gt;&#x000A;         /// &lt;param name="title"&gt;The expected title, which must be an exact match.&lt;/param&gt;&#x000A;         /// &lt;returns&gt;&#x000A;         /// &lt;see langword="true"/&gt; when the title matches; otherwise, &lt;see langword="false"/&gt;.&#x000A;         /// &lt;/returns&gt;&#x000A;         public static Func&lt;IWebDriver, bool&gt; TitleIs(string title);&#x000A;    &#x000A;         /// &lt;summary&gt;&#x000A;         /// An expectation for checking that the title of a page contains a case-sensitive substring.&#x000A;         /// &lt;/summary&gt;&#x000A;         /// &lt;param name="title"&gt;The fragment of title expected.&lt;/param&gt;&#x000A;         /// &lt;returns&gt;&#x000A;         /// &lt;see langword="true"/&gt; when the title matches; otherwise, &lt;see langword="false"/&gt;.&#x000A;         /// &lt;/returns&gt;&#x000A;         public static Func&lt;IWebDriver, bool&gt; TitleContains(string title);&#x000A;    &#x000A;         /// &lt;summary&gt;&#x000A;         /// An expectation for checking that an element is present on the DOM of a&#x000A;         /// page. This does not necessarily mean that the element is visible.&#x000A;         /// &lt;/summary&gt;&#x000A;         /// &lt;param name="locator"&gt;The locator used to find the element.&lt;/param&gt;&#x000A;         /// &lt;returns&gt;&#x000A;         /// The &lt;see cref="T:OpenQA.Selenium.IWebElement"/&gt; once it is located.&#x000A;         /// &lt;/returns&gt;&#x000A;         public static Func&lt;IWebDriver, IWebElement&gt; ElementExists(By locator);&#x000A;    &#x000A;         /// &lt;summary&gt;&#x000A;         /// An expectation for checking that an element is present on the DOM of a page&#x000A;         /// and visible. Visibility means that the element is not only displayed but&#x000A;         /// also has a height and width that is greater than 0.&#x000A;         /// &lt;/summary&gt;&#x000A;         /// &lt;param name="locator"&gt;The locator used to find the element.&lt;/param&gt;&#x000A;         /// &lt;returns&gt;&#x000A;         /// The &lt;see cref="T:OpenQA.Selenium.IWebElement"/&gt; once it is located and visible.&#x000A;         /// &lt;/returns&gt;&#x000A;         public static Func&lt;IWebDriver, IWebElement&gt; ElementIsVisible(By locator);&#x000A;    }&#x000A;    </pre>
    <p>You can use this class in combination with <code>WebDriverWait</code>:</p>
    <pre>var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(3))&#x000A;    var element = wait.Until(ExpectedConditions.ElementExists(By.Id("foo")));&#x000A;    </pre>
    <p>As you can see from the class signature above you can check for the title or parts of it and for existence and visibility of elements using <code>ExpectedCondition</code>. The out of the box support in .Net might be very minimal; but this class is nothing but a wrapper around some simple conditions. You can just as easily implement other common conditions in a class and use it with <code>WebDriverWait</code> from your test scripts.</p>
    <h4>FluentWait</h4>
    <p>Another gem only for Java developers is <code>FluentWait</code>. From the <a href="http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/support/ui/FluentWait.html" rel="nofollow external" class="bo">documentation page</a>, <code>FluentWait</code> is</p>
    <blockquote><p>An implementation of the Wait interface that may have its timeout and polling interval configured on the fly. Each FluentWait instance defines the maximum amount of time to wait for a condition, as well as the frequency with which to check the condition. Furthermore, the user may configure the wait to ignore specific types of exceptions whilst waiting, such as NoSuchElementExceptions when searching for an element on the page.</p></blockquote>
    <p>In the following example we’re trying to find an element with id <code>foo</code> on the page polling every five seconds for up to 30 seconds:</p>
    <pre>// Waiting 30 seconds for an element to be present on the page, checking&#x000A;    // for its presence once every five seconds.&#x000A;    Wait&lt;WebDriver&gt; wait = new FluentWait&lt;WebDriver&gt;(driver)&#x000A;        .withTimeout(30, SECONDS)&#x000A;        .pollingEvery(5, SECONDS)&#x000A;        .ignoring(NoSuchElementException.class);&#x000A;    &#x000A;    WebElement foo = wait.until(new Function&lt;WebDriver, WebElement&gt;() {&#x000A;      public WebElement apply(WebDriver driver) {&#x000A;        return driver.findElement(By.id("foo"));&#x000A;      }&#x000A;    });&#x000A;    </pre>
    <p>There are two outstanding things about <code>FluentWait</code>: firstly it allows you to specify the polling interval which could improve your test performance and secondly it allows you to ignore the exceptions you are not interested in.</p>
    <p><code>FluentWait</code> is quite awesome and it would be cool if an equivalent existed in .Net too. That said it’s not that hard to implement it using <code>WebDriverWait</code>.</p>
    <hr>
    <h2>Choose the Right Selectors</h2>
    <p>You have your Page Objects in place, have a nice DRY maintainable test code, and are also avoiding fixed delays in your tests; but your tests still fail!</p>
    <p>The UI is usually the most frequently changed part of a typical application: sometimes you move elements around on a page to change the design of the page and sometimes page structure changes based on requirements. These changes on the page layout and design could lead to a lot of broken tests if you don’t choose your selectors wisely.</p>
    <p><em>Do not use fuzzy selectors and do not rely on the structure of your page.</em></p>
    <p>Many times I have been asked if it’s ok to add an ID to elements on the page only for testing, and the answer is a resounding yes. To make our code unit testable we make a lot of changes to it like adding interfaces and using Dependency Injection. Test Code Is Code. Do what it takes to support your tests.</p>
    <p>Let’s say we have a page with the following list:</p>
    <pre>&lt;ul id="album-list"&gt;&#x000A;        &lt;li&gt;&#x000A;            &lt;a href="/Store/Details/6"&gt;&#x000A;                &lt;span&gt;The Best Of Men At Work&lt;/span&gt; &#x000A;            &lt;/a&gt;&#x000A;        &lt;/li&gt;&#x000A;        &lt;li&gt;&#x000A;            &lt;a href="/Store/Details/12"&gt;&#x000A;                &lt;span&gt;For Those About To Rock We Salute You&lt;/span&gt; &#x000A;            &lt;/a&gt;&#x000A;        &lt;/li&gt;&#x000A;        &lt;li&gt;&#x000A;            &lt;a href="/Store/Details/35"&gt;&#x000A;                &lt;span&gt;Let There Be Rock&lt;/span&gt; &#x000A;            &lt;/a&gt;&#x000A;        &lt;/li&gt;&#x000A;    &lt;/ul&gt;&#x000A;    </pre>
    <p>In one of my tests I want to click on the “Let There Be Rock” album. I would be asking for trouble if I used the following selector:</p>
    <pre>By.XPath("//ul[@id='album-list']/li[3]/a")&#x000A;    </pre>
    <p>When possible you should add ID to elements and target them directly and without relying on their surrounding elements. So I am going to make a small change to the list:</p>
    <pre>&lt;ul id="album-list"&gt;&#x000A;        &lt;li&gt;&#x000A;            &lt;a id="album-6" href="/Store/Details/6"&gt;&#x000A;                &lt;span&gt;The Best Of Men At Work&lt;/span&gt; &#x000A;            &lt;/a&gt;&#x000A;        &lt;/li&gt;&#x000A;        &lt;li&gt;&#x000A;            &lt;a id="album-12" href="/Store/Details/12"&gt;&#x000A;                &lt;span&gt;For Those About To Rock We Salute You&lt;/span&gt; &#x000A;            &lt;/a&gt;&#x000A;        &lt;/li&gt;&#x000A;        &lt;li&gt;&#x000A;            &lt;a id="album-35" href="/Store/Details/35"&gt;&#x000A;                &lt;span&gt;Let There Be Rock&lt;/span&gt; &#x000A;            &lt;/a&gt;&#x000A;        &lt;/li&gt;&#x000A;    &lt;/ul&gt;&#x000A;    </pre>
    <p>I have added <code>id</code> attributes to anchors based on the unique albums’ id so we can target a link directly without having to go through <code>ul</code> and <code>li</code> elements. So now I can replace the brittle selector with <code>By.Id("album-35")</code> which is guaranteed to work as long as that album is on the page, which by the way is a good assertion too. To create that selector I would obviously have to have access to the album id from the test code.</p>
    <p>It is not always possible to add unique ids to elements though, like rows in a grid or elements in a list. In cases like this you can use CSS classes and HTML data attributes to attach traceable properties to your elements for easier selection. For example, if you had two lists of albums in your page, one as the result of user search and another one for suggested albums based on user’s previous purchases, you can differentiate them using a CSS class on the <code>ul</code> element, even if that class is not used for styling the list:</p>
    <pre>&lt;ul class="suggested-albums"&gt;&#x000A;    &lt;/ul&gt;&#x000A;    </pre>
    <p>If you prefer not to have unused CSS classes you could instead use HTML data attributes and change the lists to:</p>
    <pre>&lt;ul data-albums="suggested"&gt;&#x000A;    &lt;/ul&gt;&#x000A;    </pre>
    <p>and:</p>
    <pre>&lt;ul data-albums="search-result"&gt;&#x000A;    &lt;/ul&gt;&#x000A;    </pre>
    <hr>
    <h2>Debugging UI Tests</h2>
    <p>One of the main reasons UI tests fail is that an element or text is not found on the page. Sometimes this happens because you land on a wrong page because of navigation errors, or changes to page navigations in your website, or validation errors. Other times it could be because of a missing page or a server error.</p>
    <p>Regardless of what causes the error and whether you get this on your CI server log or in your desktop test console, a <code>NoSuchElementException</code> (or the like) is not quite useful for figuring out what went wrong, is it? So when your test fails the only way to troubleshoot the error is to run it again and watch it as it fails. There are a few tricks that could potentially save you from re-running your slow UI tests for troubleshooting. One solution to this is to capture a screenshot whenever a test fails so we can refer back to it later.</p>
    <p>There is an interface in Selenium called <code>ITakesScreenshot</code>:</p>
    <pre>/// &lt;summary&gt;&#x000A;    /// Defines the interface used to take screen shot images of the screen.&#x000A;    /// &lt;/summary&gt;&#x000A;    public interface ITakesScreenshot&#x000A;    {&#x000A;      /// &lt;summary&gt;&#x000A;      /// Gets a &lt;see cref="T:OpenQA.Selenium.Screenshot"/&gt; object representing the image of the page on the screen.&#x000A;      /// &lt;/summary&gt;&#x000A;      /// &#x000A;      /// &lt;returns&gt;&#x000A;      /// A &lt;see cref="T:OpenQA.Selenium.Screenshot"/&gt; object containing the image.&#x000A;      /// &lt;/returns&gt;&#x000A;      Screenshot GetScreenshot();&#x000A;    }&#x000A;    </pre>
    <p>This interface is implemented by web driver classes and can be used like this:</p>
    <pre>var screenshot = driver.GetScreenshot();&#x000A;    screenshot.SaveAsFile("&lt;destination file's full path&gt;", ImageFormat.Png);&#x000A;    </pre>
    <p>This way when a test fails because you’re on a wrong page you can quickly figure it out by checking the captured screenshot.</p>
    <p>Even capturing screenshots is not always enough though. For example, you might see the element you expect on the page but the test still fails saying it doesn’t find it, perhaps due to the wrong selector that leads to unsuccessful element lookup. So instead of (or to complement) the screenshot, you could also capture the page source as html. There is a <code>PageSource</code> property on <code>IWebDriver</code> interface (which is implemented by all web drivers):</p>
    <pre>/// &lt;summary&gt;&#x000A;    /// Gets the source of the page last loaded by the browser.&#x000A;    /// &lt;/summary&gt;&#x000A;    /// &lt;remarks&gt;&#x000A;    /// If the page has been modified after loading (for example, by JavaScript)&#x000A;    /// there is no guarantee that the returned text is that of the modified page.&#x000A;    /// Please consult the documentation of the particular driver being used to&#x000A;    /// determine whether the returned text reflects the current state of the page&#x000A;    /// or the text last sent by the web server. The page source returned is a&#x000A;    /// representation of the underlying DOM: do not expect it to be formatted&#x000A;    /// or escaped in the same way as the response sent from the web server.&#x000A;    /// &lt;/remarks&gt;&#x000A;    string PageSource { get; }&#x000A;    </pre>
    <p>Just like we did with <code>ITakesScreenshot</code> you could implement a method that grabs the page source and persists it to a file for later inspection:</p>
    <pre>File.WriteAllText("&lt;Destination file's full path&gt;", driver.PageSource);&#x000A;    </pre>
    <p>You don’t really want to capture screenshots and page sources of all pages you visit and for the passing tests; otherwise you will have to go through thousands of them when something actually goes wrong. Instead you should only capture them when a test fails or otherwise when you need more information for troubleshooting. To avoid polluting the code with too many try-catch blocks and to avoid code duplications you should put all your element lookups and assertions in one class and wrap them with try-catch and then capture the screenshot and/or page source in the catch block. Here is a bit of code you could use for executing actions against an element:</p>
    <pre>public void Execute(By by, Action&lt;IWebElement&gt; action)&#x000A;    {&#x000A;        try&#x000A;        {&#x000A;            var element = WebDriver.FindElement(by);&#x000A;            action(element);&#x000A;        }&#x000A;        catch&#x000A;        {&#x000A;            var capturer = new Capturer(WebDriver);&#x000A;            capturer.CaptureScreenshot();&#x000A;            capturer.CapturePageSource();&#x000A;            throw;&#x000A;        }&#x000A;    }&#x000A;    </pre>
    <p>The <code>Capturer</code> class can be implemented as:</p>
    <pre>public class Capturer&#x000A;    {&#x000A;        public static string OutputFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "FailedTests");&#x000A;    &#x000A;        private readonly RemoteWebDriver _webDriver;&#x000A;    &#x000A;        public Capturer(RemoteWebDriver webDriver)&#x000A;        {&#x000A;            _webDriver = webDriver;&#x000A;        }&#x000A;    &#x000A;        public void CaptureScreenshot(string fileName = null)&#x000A;        {&#x000A;            var camera = (ITakesScreenshot) _webDriver;&#x000A;            var screenshot = camera.GetScreenshot();&#x000A;    &#x000A;            var screenShotPath = GetOutputFilePath(fileName, "png");&#x000A;            screenshot.SaveAsFile(screenShotPath, ImageFormat.Png);&#x000A;        }&#x000A;    &#x000A;        public void CapturePageSource(string fileName = null)&#x000A;        {&#x000A;            var filePath = GetOutputFilePath(fileName, "html");&#x000A;            File.WriteAllText(filePath, _webDriver.PageSource);&#x000A;        }&#x000A;    &#x000A;        private string GetOutputFilePath(string fileName, string fileExtension)&#x000A;        {&#x000A;            if (!Directory.Exists(OutputFolder))&#x000A;                Directory.CreateDirectory(OutputFolder);&#x000A;    &#x000A;            var windowTitle = _webDriver.Title;&#x000A;            fileName = fileName ??&#x000A;                       string.Format("{0}{1}.{2}", windowTitle, DateTime.Now.ToFileTime(), fileExtension).Replace(':', '.');&#x000A;            var outputPath = Path.Combine(OutputFolder, fileName);&#x000A;            var pathChars = Path.GetInvalidPathChars();&#x000A;            var stringBuilder = new StringBuilder(outputPath);&#x000A;    &#x000A;            foreach (var item in pathChars)&#x000A;                stringBuilder.Replace(item, '.');&#x000A;    &#x000A;            var screenShotPath = stringBuilder.ToString();&#x000A;            return screenShotPath;&#x000A;        }&#x000A;    }&#x000A;    </pre>
    <p>This implementation persists the screenshot and HTML source in a folder called FailedTests next to the tests, but you can modify it if you want different behavior.</p>
    <p>Although I only showed methods specific to Selenium, similar APIs exist in all automation frameworks I know and can be easily used.</p>
    <hr>
    <h2>Conclusion</h2>
    <p>In this article we talked about a few UI testing tips and tricks. We discussed how you can avoid a brittle and slow UI test suite by avoiding fixed delays in your tests. We then discussed how to avoid brittle selectors and tests by choosing selectors wisely and also how to debug your UI tests when they fail.</p>
    <p>Most of the code shown in this article can be found in the <a href="https://github.com/tutsplus/maintainable-automated-ui-tests/tree/master/src/MvcMusicStore" rel="nofollow external" class="bo">MvcMusicStore sample</a> repository that we saw in the last article. It’s also worth noting that a lot of code in the MvcMusicStore was borrowed from the <a href="https://github.com/TestStack/TestStack.Seleno" rel="nofollow external" class="bo">Seleno codebase</a>, so if you want to see a lot of cool tricks you might want to check Seleno out. Disclaimer: I am a co-founder of TestStack organization and a contributor on Seleno.</p>
    <p>I hope what we’ve discussed in this article helps you in your UI testing endeavors.</p>
    </div>
]]>
</Body>
<Summary>In the last article I talked about a few ideas and patterns, like the Page Object pattern, that help write maintainable UI tests. In this article we are going to discuss a few advanced topics that...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/aHpy4CNnSJ4/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/36972/guest@my.umbc.edu/b177f2cad838230046503361e76832fe/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>tips</Tag>
<Tag>tools-and-tips</Tag>
<Tag>tutorials</Tag>
<Tag>ui-tests</Tag>
<Tag>wed</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 14 Oct 2013 13:10:34 -0400</PostedAt>
<EditAt>Mon, 14 Oct 2013 13:10:34 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="36970" important="false" status="posted" url="https://my3.my.umbc.edu/posts/36970">
<Title>UMBC's CyberDawgs Place 2nd in Maryland Cyber Challenge</Title>
<Body>
<![CDATA[
    <div class="html-content">UMBC's CyberDawgs placed second at the 2013 Maryland Cyber Challenge (MDC3) finals held in Baltimore on Oct. 9 as part of the CyberMaryland 2013 Conference. <div>
    <div><br></div>
    <div>
    <div>During the finals, teams competed in a Control-the-Flag event where they attempted to gain (and maintain) control of other systems on the network – which were also being targeted by other teams seeking to gain and ‘own’ them as well.</div>
    <div><br></div>
    <div>All of UMBC’s three CyberDawg teams competed vigorously throughout the MDC3 season and maintained a very tight scoring situation for the college division. However, by taking second place in today’s finals, each member of CyberDawgs-1 will receive a $2,000 cash prize provided by the National Security Agency.</div>
    </div>
    <div><br></div>
    <div>Dr. Richard Forno and Dr. Charles Nicholas are faculty advisors to the team. UMBC is a co-founder of the Maryland Cyber Challenge.</div>
    </div>
    <div><br></div>
    <div>
    <a href="http://www.csee.umbc.edu/2013/10/cyberdawgs-take-2nd-at-mdc3-2013-finals/" rel="nofollow external" class="bo">Read the original story posted on the CSEE website.</a> </div>
    </div>
]]>
</Body>
<Summary>UMBC's CyberDawgs placed second at the 2013 Maryland Cyber Challenge (MDC3) finals held in Baltimore on Oct. 9 as part of the CyberMaryland 2013 Conference.       During the finals, teams competed...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/36970/guest@my.umbc.edu/b59af613e497352f50cec589f14a58b7/api/pixel</TrackingUrl>
<Tag>cyber</Tag>
<Group token="dps">UMBC Professional Programs</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/dps</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/513/2e72ed76b7b3b9ce2f15fce64178dfaf/xsmall.png?1642086701</AvatarUrl>
<AvatarUrl size="original">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/513/2e72ed76b7b3b9ce2f15fce64178dfaf/original.png?1642086701</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/513/2e72ed76b7b3b9ce2f15fce64178dfaf/xxlarge.png?1642086701</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/513/2e72ed76b7b3b9ce2f15fce64178dfaf/xlarge.png?1642086701</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/513/2e72ed76b7b3b9ce2f15fce64178dfaf/large.png?1642086701</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/513/2e72ed76b7b3b9ce2f15fce64178dfaf/medium.png?1642086701</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/513/2e72ed76b7b3b9ce2f15fce64178dfaf/small.png?1642086701</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/513/2e72ed76b7b3b9ce2f15fce64178dfaf/xsmall.png?1642086701</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/513/2e72ed76b7b3b9ce2f15fce64178dfaf/xxsmall.png?1642086701</AvatarUrl>
<Sponsor>Division of Professional Studies</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/036/970/1b4f2f6f94b053e3a32726e62b85db9c/xxlarge.jpg?1381769300</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/036/970/1b4f2f6f94b053e3a32726e62b85db9c/xlarge.jpg?1381769300</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/036/970/1b4f2f6f94b053e3a32726e62b85db9c/large.jpg?1381769300</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/036/970/1b4f2f6f94b053e3a32726e62b85db9c/medium.jpg?1381769300</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/036/970/1b4f2f6f94b053e3a32726e62b85db9c/small.jpg?1381769300</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/036/970/1b4f2f6f94b053e3a32726e62b85db9c/xsmall.jpg?1381769300</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/036/970/1b4f2f6f94b053e3a32726e62b85db9c/xxsmall.jpg?1381769300</ThumbnailUrl>
<PawCount>5</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 14 Oct 2013 12:50:29 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="36971" important="false" status="posted" url="https://my3.my.umbc.edu/posts/36971">
<Title>Interview Questions and Exercises About CSS</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>If you're in the position of needing to interview someone about their skill and knowledge about CSS, it can be a little hard to think of things to ask on-the-fly. I thought I'd think up and round up some ideas for reference.</p>
    <p></p>
    <img src="http://cdn.css-tricks.com/wp-content/uploads/2013/10/interview.jpg" alt="" style="max-width: 100%; height: auto;">
    <h3>Exercises To Do</h3>
    <p>Seeing people's actual work is just as important as what they say. Seeing people work their through exercises live might be even more important. These are some exercises that aren't particularly difficult and anybody with CSS experience should be able to do. Watching/listening to them do it could be invaluable. <a href="http://blog.codepen.io/documentation/pro-features/collab-mode/" rel="nofollow external" class="bo">Collab Mode</a> on CodePen is kinda perfect for that (just saying). </p>
    <h4>Create This Button</h4>
    <p>I saw <a href="http://codepen.io/mobify/pen/GtqKj" rel="nofollow external" class="bo">this idea</a> on <a href="http://codepen.io/mobify" rel="nofollow external" class="bo">Mobify's CodePen account</a>. Give people an image of a button, and tell them:</p>
    <blockquote><p>Using CSS properties alone, recreate this button:</p></blockquote>
    <img src="http://cdn.css-tricks.com/wp-content/uploads/2013/10/css-button.png" alt="" style="max-width: 100%; height: auto;">
    <p>This would be a great test of the candidate's CSS3 skills. This button is loaded with that kind of stuff. Things I would look for:</p>
    <ul>
    <li>How did they handle <a href="http://css-tricks.com/snippets/css/multiple-borders/" rel="nofollow external" class="bo">multiple borders</a>? <code>box-shadow</code> is probably the best way here.</li>
    <li>Did they use <code>text-transform: uppercase;</code> for the text? That would be best.</li>
    <li>How did they handle the stars? Pseudo elements would be a good candidate there. Did they use unicode? Icon font?</li>
    <li>Did they catch the subtle <code>text-shadow</code>?</li>
    <li>How did they split the background in the main part of the button? a <code>linear-gradient</code> with no fade would be a good technique there. Or <code>box-shadow</code>.</li>
    <li>Were they <a href="http://css-tricks.com/public-service-announcement-careful-with-your-nested-border-radii/" rel="nofollow external" class="bo">careful</a> with the nested border-radius?</li>
    </ul>
    <p>I hope I didn't ruin Mobify's hiring process! But honestly, I think this stuff is hard to fake. You can either do it and talk about it, or you can't.</p>
    <h4>Fix The Sidebar</h4>
    <p>The right sidebar here has fallen down below the content. <a href="http://codepen.io/chriscoyier/pen/ClGcF" rel="nofollow external" class="bo">Show me</a> some different ways you could fix that.</p>
    <img src="http://cdn.css-tricks.com/wp-content/uploads/2013/10/fallen-sidebar.jpg" alt="" style="max-width: 100%; height: auto;">
    <p>Even though the two columns are 75% and 25% wide and floated opposite ways, the sidebar has fallen. The reason is because the columns don't actually add up to 100% - they add up to more than that due to the padding. There is a number of ways to fix it:</p>
    <ul>
    <li>Using <code>box-sizing: border-box;</code> on the appropriate elements is the most efficient fix.</li>
    <li>Using <code>calc()</code> on the widths to remove the 1rem padding is another way.</li>
    <li>Putting the padding on an added internal wrapper element instead of the columns is a fix that will work with very deep browser support.</li>
    <li>Adjusting the numbers to make the math work is another way. For instance making the widths of the columns 4% narrower and using 2% for the padding instead.</li>
    </ul>
    <p>There are other ways. The more solutions they can think of, the more creative and versatile a problem solver they are.</p>
    <h4>Make this fixed width design fluid.</h4>
    <p><a href="http://codepen.io/chriscoyier/pen/lDJmf" rel="nofollow external" class="bo">Here's a design.</a> It's a fixed 800px wide. Do your best at making it fit the screen more appropriately at any screen size. </p>
    <p>This is just one ingredient to responsive design (which they should probably at least be familiar with) but it's an important one. It can help prove they can think spatially and make reasoned choices about layout. I'd look for:</p>
    <ul>
    <li>Changing the pixel widths to percentages (how did they handle the math?)</li>
    <li>Did they do anything special for large screens or just small?</li>
    <li>Did they attempt to use a responsive images solution?</li>
    <li>Does the new design retain the hierarchy of importance inherit to the original?</li>
    <li>Did they come back at you with questions? (Lots of things to ask here, including what other resources might be available.)</li>
    <li>Did they test it? (To make sure it actually works, and find things like missing meta tags.)</li>
    </ul>
    <h4>Replace this logo markup with an image.</h4>
    <pre><code>&lt;a href="/" class="logo"&gt;Company&lt;/a&gt;</code></pre>
    <p>Accessible and semantic image replacement has been a CSS topic for a lot of years and the "best way" has <a href="http://css-tricks.com/examples/ImageReplacement/" rel="nofollow external" class="bo">morphed over the years</a>. Asking them to show you how it could be done a number of ways would be a way to get insight into how long they've really been working with CSS. Not only is it directly an important thing to know how to do, knowing how to do it multiple ways demonstrates the depth of their internal toolbox.</p>
    <h4>Google how you would find out what the default value for <code>backface-visibility</code> is.</h4>
    <p>Being able to Google something quickly and efficiently is a huge part of any developers job. Are they deft at it? Did they find the right answer? Did they go to a specific trusted source in the results page? </p>
    <p>Perhaps phrase the question without "Google" and see which search engine they use. No particular bias here, but if it's not Google, are they as efficient as you would expect them to be with whatever other search engine that is?</p>
    <h3>Questions to Ask</h3>
    <p>Darcy Clarke <a href="http://darcyclarke.me/development/front-end-job-interview-questions/" rel="nofollow external" class="bo">got the ball rolling</a> with this a few years ago. I'm going to update some of those, and add some of my own, and elaborate a bit.</p>
    <h4>What is the "Box Model" in CSS? Which CSS properties are a part of it?</h4>
    <p>The CSS <a href="http://css-tricks.com/the-css-box-model/" rel="nofollow external" class="bo">box model</a> is fundamental to understanding layout and sizing and such. It's made up of:</p>
    <ul>
    <li>Width and height (or in the absence of that, default values and the content inside)</li>
    <li>Padding</li>
    <li>Border</li>
    </ul>
    <img src="http://css-tricks.com/wp-content/csstricks-uploads/thebox.png" width="570" height="248" alt="" style="max-width: 100%; height: auto;">
    <p>Margin is related but not technically a part of it. I would give extra points for knowing/mentioning that, but not take away and points for including it.</p>
    <h4>What are Sass, LESS, and Stylus? Why do people use them? How does something like Compass relate to Sass?</h4>
    <p>They are CSS preprocessors. They are an abstraction layer on top of CSS. They are a special syntax/language that compile down into CSS. They make managing CSS easier, with things like variables and mixins to handle vendor prefixes (among other things). They make doing best practices easier, like concatenating and compressing CSS.</p>
    <p>Bonus points for knowing how they differ and/or having experience using them. More bonus points for knowing what things like Compass, Bourbon, LESSHat, Nib, etc are and how they relate.</p>
    <h4>Name some online resources that you reference when having CSS issues.</h4>
    <p>Being good at googling problems you are having is a valuable job skill. There isn't any shame in it. There is shame in spinning your wheels because "you should know this." If you don't have time to do the Googling exercise above, just asking about resources can be telling. </p>
    <p>Google is a pretty good answer (since it's true and we all know it). But being able to name some specific sites is a good indicator they have done it a bunch and are familiar with the places they land and know their favorites. Stuff like MDN (Mozilla Developer Network) is a good answer.</p>
    <h4>Describe what a “reset” CSS file does and how it’s useful. Are you familiar with normalize.css? Do you understand how they differ?</h4>
    <p>Resets are so wildly common in CSS that anyone who is a front end developer type has surely used them. Do they do so blindly or do they know why? The reason is essentially that different browsers have different default styling for elements, and if you don't deal with that at all, you risk designers looking unnecessarily different in different browsers and possibly more dramatic breaking problems. </p>
    <p><a href="http://necolas.github.io/normalize.css/" rel="nofollow external" class="bo">Normalize</a> you might call a CSS reset alternative. Instead of wiping out all styles, it delivers a set of reasonable defaults. It doesn't unset things that are already consistent across browsers and reasonable (e.g. bold headers). In that way it does some less than a reset. It also does some more than a reset in that it handles quirks you may never consider, like HTML5 audio element inconsistencies or line-height inconsistencies when you use sub and sup elements. </p>
    <h4>What are the various techniques for clearing floats?</h4>
    <p><a href="http://css-tricks.com/all-about-floats/" rel="nofollow external" class="bo">Floats</a> are still incredibly common. As this is published, still probably the most cross-browser consistent way to build layout and grids. Anyone who has worked with them is aware of float collapsing. That is, floated element do not add to the height of a parent element. So for example if a parent element contained only floated elements, it would collapse to zero height. You can deal with that like:</p>
    <ul>
    <li>Use a clearfix (bonus points for micro clearfix).</li>
    <li>Float the parent as well.</li>
    <li>Use an overflow property other than "visible" on the parent (bonus points for listing downsides like cutting off shadows).</li>
    </ul>
    <p>Bonus points for "create a <a href="http://www.yuiblog.com/blog/2010/05/19/css-101-block-formatting-contexts/" rel="nofollow external" class="bo">new block formatting context</a>". Possibly negative points for something like <code>&lt;br style="clear: both;"&gt;</code></p>
    <img src="http://css-tricks.com/wp-content/csstricks-uploads/directionalclearing.png" width="540" height="226" alt="" style="max-width: 100%; height: auto;">
    Do they understand directional clearing?
    
    <p>As a bonus question, you could ask them to compare using inline-block and floats for building a grid. Good answer: there are problems either way. With inline block you need to deal with the whitespace issue. With floats you need to deal with clearing.</p>
    <h4>What are sprites and why would use them? How do you go about creating them? What are possible alternatives to sprites?</h4>
    <p><a href="http://css-tricks.com/css-sprites/" rel="nofollow external" class="bo">Sprites are</a> essentially multiple images combined into one. Performance is the reason that they are used. Generally speaking, the slowest thing a website can do is request a resource. The fewer requests a site needs to make, the faster it is. Fast = good. Combining what would be many requests into one = good.</p>
    <img src="http://css-tricks.com/wp-content/csstricks-uploads/1454282699-lhn-sprite.png" width="96" height="96" alt="" style="max-width: 100%; height: auto;">
    <p>Asking how they make sprites would just seal the deal that they are actually very familiar with them. Manually creating sprites is certainly a possibility but it isn't very efficent. There are helper tools like <a href="http://css-tricks.com/video-screencasts/105-using-spritecow/" rel="nofollow external" class="bo">SpriteCow</a> and <a href="http://spriteme.org/" rel="nofollow external" class="bo">SpriteMe</a>, <a href="http://compass-style.org/help/tutorials/spriting/" rel="nofollow external" class="bo">Spriting with Compass</a>, or <a href="https://github.com/filamentgroup/grunticon" rel="nofollow external" class="bo">Grunticon</a>. It's always interesting to hear a real workflow approach.</p>
    <p>Sprites are raster images. When asking about alternatives, good answers might be related to the fact that sprites are often for icons and icons often don't need to be raster. <a href="http://simurai.com/post/20251013889/svg-stacks" rel="nofollow external" class="bo">SVG Stacks</a>, <a href="http://css-tricks.com/flat-icons-icon-fonts/" rel="nofollow external" class="bo">Icon Fonts</a>, <a href="http://copypastecharacter.com/" rel="nofollow external" class="bo">Unicode</a>...</p>
    <h4>What are some accessibility concerns that come up in CSS?</h4>
    <p><a href="http://css-tricks.com/places-its-tempting-to-use-display-none-but-dont/" rel="nofollow external" class="bo">Hidden content</a> is a big one here. It's only acceptable to use <code>display: none;</code> if you're both trying to hide things visually and the content itself.</p>
    <p>CSS controls colors so color <a href="http://colorfilter.wickline.org/" rel="nofollow external" class="bo">accessibility</a> is relevant. <a href="http://a11yproject.com/posts/never-remove-css-outlines/" rel="nofollow external" class="bo">Focus styles</a> are also important and directly controlled by CSS.</p>
    <p>There is a lot more accessibility stuff that is related to HTML and JavaScript, so mentioning that stuff is great, but I think it's interesting to target the question solely on CSS to force focused thinking.</p>
    <h4>What is the difference between inline, inline-block, and block?</h4>
    <p>Bonus points for bringing up specific details like the fact that you can't transform inline elements.</p>
    <h4>What tools do you use for cross-browser testing?</h4>
    <p>They should have some kind of strategy. Perhaps a web based tool like <a href="http://www.browserstack.com/" rel="nofollow external" class="bo">BrowserStack</a>. Perhaps a VM based tool like <a href="https://www.virtualbox.org/" rel="nofollow external" class="bo">Virtual Box</a>. Perhaps different actual computers. </p>
    <p>Part of the job of front end design is making sure things work everywhere they can (based on decided-upon support). You don't have to love it, but you can't hate it. <a href="http://the-pastry-box-project.net/wilson-miner/2013-june-15/" rel="nofollow external" class="bo"><em>“This right here, this is the job. What kind of work were you expecting?”</em></a></p>
    <h4>What are some of your favorite web design workflow tools?</h4>
    <p>What code editor to they like? Where do they go for inspiration? What experience with version control do they have? What was QA like where they have worked? Support? What different deployment methods have they worked with?  Do they know Photoshop or another visual design software alternative? Are the comfortable with the terminal? </p>
    <p>Those are just some examples, it's interesting to hear about any software they use to get the jobs done. Getting a sense of the tools they use (and better, the tools they <em>like</em>) is interesting. Bonus points: a sense of excitement about some of the tools.</p>
    <h4>Say you found a rendering problem on one of your sites in Internet Explorer 8, which you have decided you are supporting. How would you approach fixing it?</h4>
    <p>This would be an alternative question to asking generally about cross browser testing. More specific. Perhaps a more difficult alternative question would be to replace IE 8 with something like "A Google Nexus running Android 2.3." Would they find a simulator? Would they seek out a design lab? Would they ask the company for an allowance for devices for testing, with some kind of smart plan? Would they find a friend with one?</p>
    <h4>What is responsive design all about?</h4>
    <p>It's about making websites work wherever the web is. Different devices with different sizes and different capabilities. Responsive design is about taking one code base and making it work for all of them. Part of that is media queries and different visuals. Part of that is different resources (e.g. different JavaScript to handle touch vs click or different images to accommodate the screen). </p>
    <h4>Have you ever worked with a grid layout? What are your thoughts on that?</h4>
    <p>Why did they need a grid? How did they build the grid? Was it home grown or did they use a grid tool? Did they like the grid tool? What kind of class names did they use? Did they go mobile-first or desktop-first? Was a help or a hinderance? Do they reach for the grid automatically on any project?</p>
    <h4>What are the benefits of SVG?</h4>
    <p><a href="http://css-tricks.com/using-svg/" rel="nofollow external" class="bo">SVG</a> is an image format that is vector based. It's an efficient format for that (small file sizes). You can scale them and they retain their sharpness at any size (bonus points for mentioning raster might have the upper hand at tiny sizes). You can affect parts of them with CSS and JavaScript as well as SVG specific filters that can do things like blurring.</p>
    <h4>Have you ever created a print stylesheet for a website?</h4>
    <p>Kind of indicative that they've "gone the extra mile" with websites before. What approach did they take? How did they test it?</p>
    <h4>Say you were tasked with coding a design that used non-standard web fonts, how would you go about it?</h4>
    <p>A non-leading way to get them to talk about @font-face and how it works. Talking about how it works as a core CSS technology is great, as well as talking about services that provide the fonts and can make it easier e.g. Google Fonts, Typekit, Font Deck, Cloud Typography, etc. </p>
    <p>Bonus points for obscure knowledge like the history of @font-face syntax or <a href="http://www.change.org/petitions/mozilla-firefox-fix-bug-604421" rel="nofollow external" class="bo">Firefox's issue</a> with cross-origin fonts.</p>
    <h4>Explain to me what's going on in this CSS selector:</h4>
    <pre><code>[role=navigation] &gt; ul a:not([href^=mailto]) {&#x000A;    &#x000A;    }</code></pre>
    <p>This selects anchor links that are not email links that are decedents of an unordered list that is the direct child of any element with a role attribute of 'navigation'.</p>
    <p>Being able to verbalize a selector is proof you understand them and evidence they can communicate complex tech subjects. </p>
    <h3>Your Ideas</h3>
    <p>What kind of questions have you been asked when interviewing for a CSS-related job? Or that you ask your candidates? Or that you think would be good questions in general?</p>
    <hr>
    
    <p><small><a href="http://css-tricks.com/interview-questions-css/" rel="nofollow external" class="bo">Interview Questions and Exercises About CSS</a> is a post from <a href="http://css-tricks.com" rel="nofollow external" class="bo">CSS-Tricks</a></small></p>
    </div>
]]>
</Body>
<Summary>If you're in the position of needing to interview someone about their skill and knowledge about CSS, it can be a little hard to think of things to ask on-the-fly. I thought I'd think up and round...</Summary>
<Website>http://css-tricks.com/interview-questions-css/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/36971/guest@my.umbc.edu/9bc6a5f089e7e1bf369c769dbe1d839a/api/pixel</TrackingUrl>
<Tag>article</Tag>
<Tag>css</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>tricks</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 14 Oct 2013 12:46:23 -0400</PostedAt>
<EditAt>Mon, 14 Oct 2013 12:46:23 -0400</EditAt>
</NewsItem>

</News>
