<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hany ElemaryHany Elemary</title>
	<atom:link href="http://hanyelemary.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://hanyelemary.com</link>
	<description>Piece of Mind: On web development, UX, social media, etc.</description>
	<lastBuildDate>Tue, 19 Feb 2013 02:01:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Presentation: Responsive Web Design &amp; Collaboration</title>
		<link>http://hanyelemary.com/?p=575</link>
		<comments>http://hanyelemary.com/?p=575#comments</comments>
		<pubDate>Tue, 19 Feb 2013 02:01:25 +0000</pubDate>
		<dc:creator>Hany Elemary</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Responsive Web Design]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[UX Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://hanyelemary.com/?p=575</guid>
		<description><![CDATA[Presenters: Aaron Ganci, User Experience Designer, OCLC Bob Robertson-Boyd, Senior Product Analyst, OCLC Hany Elemary, Senior Software Engineer, OCLC Presentation Description: OCLC has developed a new Web interface for the FirstSearch product using responsive design techniques. We have previewed this new interface with 19 institutions and in early 2013 we will go into open beta with [...]]]></description>
			<content:encoded><![CDATA[<p><iframe width="620" height="349" src="http://www.youtube.com/embed/W_2-3BHLk7M?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<h4>Presenters:</h4>
<p><a title="Aaron Ganci - Twitter" href="https://twitter.com/amganci" target="_blank">Aaron Ganci</a>, User Experience Designer, OCLC<br />
<a title="Bob Robertson-Boyd Twitter" href="https://twitter.com/bobrobboy" target="_blank">Bob Robertson-Boyd</a>, Senior Product Analyst, OCLC<br />
<a title="Hany Elemary - Twitter" href="https://twitter.com/hanyelemary" target="_blank">Hany Elemary</a>, Senior Software Engineer, OCLC</p>
<h4>Presentation Description:</h4>
<p>OCLC has developed a new Web interface for the FirstSearch product using responsive design techniques. We have previewed this new interface with 19 institutions and in early 2013 we will go into open beta with the thousands of libraries currently subscribing to FirstSearch. We will describe the project from its beginning to the present and share what we have learned throughout the process. The majority of our presentation will focus on the technical aspects of implementing a mission-critical Web interface for desktop, tablet, and mobile devices using HTML5 and CSS3, including how we leveraged this emerging technology to meet the core principles of our business: performance and accessibility.</p>
<p>Discussion points:</p>
<ul>
<li>The importance of understanding your content in order to build the semantic structure of pages and use microformats to extend your reach across the Web.</li>
</ul>
<ul>
<li>WCAG and ARIA accessibility guidelines within our application.</li>
</ul>
<ul>
<li>The use of progressive enhancement and CSS3 media queries to design interfaces that fit various device capabilities and viewports.</li>
</ul>
<ul>
<li>How to support a rich user experience by using CSS3 hardware accelerations, as opposed to JavaScript, to improve transitions and animations.</li>
</ul>
<ul>
<li>How to off-load data requests to improve performance.</li>
</ul>
<h4>Related Resources:</h4>
<ul>
<li><a title="Slide Deck" href="http://www.rvl.io/hanyelemary/responsive-web-design-and-collaboration" target="_blank">Slide Deck</a></li>
<li><a title="Luke W. Notes An Event Apart Presentation" href="http://www.lukew.com/ff/entry.asp?1684" target="_blank">An Event Apart: Responsive and Responsible</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hanyelemary.com/?feed=rss2&#038;p=575</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My experience with Agile at OCLC</title>
		<link>http://hanyelemary.com/?p=547</link>
		<comments>http://hanyelemary.com/?p=547#comments</comments>
		<pubDate>Tue, 12 Feb 2013 03:26:57 +0000</pubDate>
		<dc:creator>Hany Elemary</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hanyelemary.com/?p=547</guid>
		<description><![CDATA[A few weeks ago, I was asked to participate in an HR panel at work to highlight how Agile impacted the way I think about work as a software engineer. So I thought I&#8217;d write a post about my comments and expand a little bit on them here. How has AGILE impacted the way you think [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago, I was asked to participate in an HR panel at <a title="OCLC" href="http://www.oclc.org" target="_blank">work</a> to highlight how Agile impacted the way I think about work as a software engineer. So I thought I&#8217;d write a post about my comments and expand a little bit on them here.</p>
<h4><strong>How has AGILE impacted the way you think about work?</strong></h4>
<blockquote><p>Simplicity&#8211;the art of maximizing the amount of work not done&#8211;is essential &#8212; The Agile Manifesto.</p></blockquote>
<p>Agile encourages you to think really small and break tasks down to the smallest level of detail. Complexity comes naturally to any software project so it’s best not to force it upfront. Agile is essentially about shipping the minimal viable product (MVP) and delivering incremental improvements along the way.</p>
<blockquote><p>Welcome changing requirements, even late in development. Agile processes harness change for the customer&#8217;s competitive advantage &#8211; The Agile Manifesto.</p></blockquote>
<p>By welcoming requirements&#8217; changes, Agile encourages quick adaptation. Generally speaking, <strong><em>change is the only thing you can bank on these days,</em></strong> and this is especially true in the software world. The way we do it is that we plan for the release (3 months), but not in great detail as things may change or shift around a little bit. Then, we plan and design in great detail for the upcoming sprint (which happens to be one week in our case) as requirements are much less likely to change in the span of a week than 3 months.</p>
<h4><strong>How has AGILE impacted the way you think about people and teams?</strong></h4>
<p>Agile attempts to eliminate what I like to call the “superstar” problem. Within the organization, your team may have a superstar or two. What happens when the super star leaves on vacation or gets sick? The business basically stops until they come back. Agile encourages working cross-team/cross-role so that you’re not dead in the water without your superstars.</p>
<p>So, to summarize, we don’t just have a UI developer or a service/API developer. We have software engineers who can pretty much work in any area. Obviously, some of them are more passionate, and hence talented, than others in their areas of interest/expertise. But the point is that we all can do each others jobs to a high degree.</p>
<h4><strong>How has AGILE impacted the way you think about leadership?</strong></h4>
<p>I feel empowered and heard. When I was first hired, I was contributing to technological decision making within the first two weeks.</p>
<blockquote><p>Build projects around motivated individuals.<br />
Give them the environment and support they need,<br />
and trust them to get the job done &#8212; The Agile Manifesto</p></blockquote>
<h4><strong>Conclusion:</strong></h4>
<p>To me, Agile is about two things: 1. Practice and 2. Flexibility. If you haven&#8217;t had much luck with it, you&#8217;re likely to have been denied either or both.</p>
<p>I&#8217;ve been fortunate enough to land in a place where Agile practices are carried properly. But after all, Agile is not the work. It&#8217;s a process and it&#8217;s a means to an end (shipping software). So if you&#8217;ve given it an honest chance/try, and for whatever reason, it didn&#8217;t work for you, don&#8217;t let it become your religion.</p>
]]></content:encoded>
			<wfw:commentRss>http://hanyelemary.com/?feed=rss2&#038;p=547</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>13 Resolutions for 2013</title>
		<link>http://hanyelemary.com/?p=492</link>
		<comments>http://hanyelemary.com/?p=492#comments</comments>
		<pubDate>Sat, 05 Jan 2013 20:17:52 +0000</pubDate>
		<dc:creator>Hany Elemary</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hanyelemary.com/?p=492</guid>
		<description><![CDATA[Goodbye 2012, and hello 2013. 2012, you&#8217;ve been quite harsh at times and rather kind at others. There is no reason to expect otherwise from the years to come, but I&#8217;m hopeful that they&#8217;re better. Gotta keep the tradition of posting my new year&#8217;s resolutions. 13 Resolutions for 2013: Finish the 50 pull-up challenge Listen to [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Goodbye 2012, and hello 2013. 2012, you&#8217;ve been quite harsh at times and rather kind at others. There is no reason to expect otherwise from the years to come, but I&#8217;m hopeful that they&#8217;re better.</p>
<p>Gotta keep the tradition of posting my new year&#8217;s resolutions.</p>
<p><strong>13 Resolutions for 2013:</strong></p>
</div>
<ol>
<li><span style="line-height: 16px;">Finish the 50 pull-up challenge</span></li>
<li><span style="line-height: 16px;">Listen to your body and stay healthy</span></li>
<li><span style="line-height: 16px;">Eat more vegetables and less red meat</span></li>
<li><span style="line-height: 16px;">Speak at a developer&#8217;s conference</span></li>
<li><span style="line-height: 16px;">Redo your blog with Ruby on Rails and MongoDB and make it responsive</span></li>
<li><span style="line-height: 16px;">Contribute to an open source project</span></li>
<li><span style="line-height: 16px;">Write at least 1 article/month on your blog</span></li>
<li><span style="line-height: 16px;">Share more code and techniques</span></li>
<li><span style="line-height: 16px;">Write your own music (1 song) on the guitar</span></li>
<li>Start master&#8217;s degree</li>
<li>Learn Spanish</li>
<li>Travel to at least 2 new places</li>
<li>Take note of conditions that lead to moments of creativity and recreate</li>
</ol>
<p><strong>12 Resolutions for 2012:</strong></p>
<ol>
<li><del>Finish the 100 push-up challenge</del></li>
<li>Finish the 50 pull-up challenge (carried over to 2013)</li>
<li><del>Finish The <a href="http://toughmudder.com">Tough Mudder</a> Event</del></li>
<li><del>Become a 4.5 tennis player</del></li>
<li><del>Read &#8220;Strength Finder 2.0&#8243; and work towards capitalizing on your strength</del></li>
<li>Read &#8220;Roger Federer&#8217;s&#8221; biography</li>
<li>Learn Spanish (carried over to 2013)</li>
<li>Write at least 1 article/month on your blog (carried over to 2013)</li>
<li><del>Learn 4 songs on your acoustic guitar</del></li>
<li><del>Start a fun project with many different technologies as part of ongoing learning</del></li>
<li><del>Prioritize effectively and work efficiently</del></li>
<li><del>Say &#8220;No&#8221; more often when time is tight</del></li>
</ol>
<p>What are your resolutions for 2013?</p>
]]></content:encoded>
			<wfw:commentRss>http://hanyelemary.com/?feed=rss2&#038;p=492</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Discoverability in simple UIs</title>
		<link>http://hanyelemary.com/?p=463</link>
		<comments>http://hanyelemary.com/?p=463#comments</comments>
		<pubDate>Mon, 11 Jun 2012 01:34:23 +0000</pubDate>
		<dc:creator>Hany Elemary</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[UX Design]]></category>
		<category><![CDATA[NUIs]]></category>
		<category><![CDATA[UI design]]></category>
		<category><![CDATA[UI interactions]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://hanyelemary.com/?p=463</guid>
		<description><![CDATA[&#8220;Pity gives way to respect when much more value is delivered than originally expected.&#8221; - John Maeda, The Laws of Simplicity. What a great quote! That&#8217;s exactly how I felt a few weeks ago when I helped a friend install Nest in his house. Nest is a classic case of simple design. It is also a great [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;Pity gives way to respect when much more value is delivered than originally expected.&#8221; - John Maeda, The Laws of Simplicity.</p></blockquote>
<p>What a great quote! That&#8217;s exactly how I felt a few weeks ago when I helped a friend install <a title="Nest - The Learning Thermostat" href="http://www.nest.com/">Nest</a> in his house. Nest is a classic case of simple design. It is also a great example of a Natural User Interface (NUI). These interfaces encourage users to interact through their simple, seemingly familiar design. For instance, in Nest, there is only one/two input controls; the ring and the clickable screen itself. There is nothing else that gets in the way. The user is not overwhelmed with a bunch of options and, therefore, decisions become more obvious. Watch this 4-minute video on the setup process then read on&#8230;</p>
<p><iframe width="620" height="349" src="http://www.youtube.com/embed/UXzTAZSBnrE?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>The most interesting part to me was the use of the same input device (the ring) with inherently different UI components.</p>
<p><strong>List Menu:</strong></p>
<p>The ring is used with different list options (Wifi Networks in the video). By rotating the ring, the user is able to step through (highlight) each option in the list.</p>
<p><strong>Input Field:</strong></p>
<p>Another use case for the ring is typing in a text box (password in the video) by selecting letters, numbers and special characters from the screen.</p>
<p><strong>Spinner/Range Fields:</strong></p>
<p>Yet a third use case is applying the ring as a spinner field to loop through a list of numbers to set the zip code. And lastly, the main use case, adjusting the thermostat, is also controlled with the ring. Rotate right for heating and left for cooling, as the interface provides feedback through the temperature in degrees and color codes (orange=heating, blue=cooling).</p>
<p><strong>Design Decision:</strong></p>
<p>The interface highly demonstrates good design decisions. Notice, for instance, how confirming actions are made a bit more explicit by clicking on the screen or the ring. This way, users don&#8217;t get frustrated confirming an action they didn&#8217;t explicitly make. All other options are made more forgiving by using the ring/wheel.</p>
<p><strong>Conclusion:</strong></p>
<p>When users have a limited set of options, they have no choice but to zero in on those available options and start interacting with them.</p>
<blockquote><p>&#8220;Proportionately more attention shall be paid to that which is made less available.&#8221; - John Maeda, The Laws of Simplicity.</p></blockquote>
<p>By the time users work their way through the first UI control, they&#8217;re experts at using the thermostat. Learning one use case means learning a whole set of familiar interactions in this UI.</p>
<p>As designers, we have to remember that each time a user gets introduced to a new option, there is some level of uncertainty. It takes a special designer to cut down on those uncertainties by reducing the options in a way that&#8217;s still fully functional and appealing. Now compare Nest my friend&#8217;s more familiar-looking, older thermostat.</p>
<p><img src="http://hanyelemary.com/blog/wp-content/uploads/thermostat.jpg" alt="Older Thermostat" /></p>
<p>Overwhelmed? I&#8217;d like to hear your thoughts.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://hanyelemary.com/?feed=rss2&#038;p=463</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>As I see it: user feedback</title>
		<link>http://hanyelemary.com/?p=425</link>
		<comments>http://hanyelemary.com/?p=425#comments</comments>
		<pubDate>Sun, 10 Jun 2012 01:31:07 +0000</pubDate>
		<dc:creator>Hany Elemary</dc:creator>
				<category><![CDATA[As I see it]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[UX Design]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://hanyelemary.com/?p=425</guid>
		<description><![CDATA[We can&#8217;t ignore our users if we never allow them to introduce features in the first place. This weekend, a random, strong thought popped in my head. I couldn&#8217;t fit it in a twitter post, so I&#8217;m starting a new short series of posts called &#8220;As I see it.&#8221; What triggered this thought is a [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>We can&#8217;t ignore our users if we never allow them to introduce features in the first place.</p></blockquote>
<p>This weekend, a random, strong thought popped in my head. I couldn&#8217;t fit it in a twitter post, so I&#8217;m starting a new short series of posts called &#8220;As I see it.&#8221; What triggered this thought is a presentation at &#8220;No Fluff Just Stuff&#8221; conference in Columbus, Ohio, about UI/UX design and user feedback. The presenter, who shall remain nameless, said &#8220;Once you have a stable product, ignore feedback from users as it will only cloud your vision.&#8221; Something to that effect anyway &#8230; I&#8217;m slightly paraphrasing.</p>
<p>While I sort of agree with his statement, to me, it felt like it stood against being empathetic to the user. It also got me thinking that if we change our mental model, we never have to deal with muddy feedback. So here it is: we can&#8217;t ignore our users, if we never allow them to introduce features in the first place. Instead, we need to move up the abstraction ladder and ask them what problems they&#8217;re trying to solve. Then we (product owners/designers/developers) analyze these problems and introduce solutions in terms of features.</p>
<p>I realize this is easier said than done and that it takes a &#8220;master of craft&#8221; kind of person to actually train users not to provide feedback in terms of UI changes or features (something that&#8217;s engraved in every user of software these days). But the question is: is it possible? Would like to hear your feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://hanyelemary.com/?feed=rss2&#038;p=425</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book review: Mobile First &#8211; By Luke Wroblewski</title>
		<link>http://hanyelemary.com/?p=296</link>
		<comments>http://hanyelemary.com/?p=296#comments</comments>
		<pubDate>Sun, 05 Feb 2012 01:21:10 +0000</pubDate>
		<dc:creator>Hany Elemary</dc:creator>
				<category><![CDATA[Book review]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Responsive Web Design]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://hanyelemary.com/?p=296</guid>
		<description><![CDATA[I finally got around to reading &#8220;Mobile First&#8221; by Luke Wroblewski. This book is simply brilliant. It targets a wide spectrum of job descriptions. Developers, designers, product managers/owners, human factors folks, content strategist, and more. Although native apps (along with their design details) are discussed in the book, the book&#8217;s main focus is on the mobile [...]]]></description>
			<content:encoded><![CDATA[<p>I finally got around to reading &#8220;Mobile First&#8221; by <a title="Luke Wroblewski's Website" href="http://www.lukew.com/" target="_blank">Luke Wroblewski</a>. This book is simply brilliant. It targets a wide spectrum of job descriptions. Developers, designers, product managers/owners, human factors folks, content strategist, and more.</p>
<p>Although native apps (along with their design details) are discussed in the book, the book&#8217;s main focus is on the mobile web experience. On that topic, Luke focuses on three main ideas in the book and discusses the design details around them. The ideas are as follows:</p>
<ul>
<li>The inevitable growth of mobile, which leads to new opportunities</li>
<li>The constraints of mobile, which lets you focus on content &amp; organization</li>
<li>New innovative features that lets you think differently about design</li>
</ul>
<p>One of my favorite parts in the book is a great analogy made by Rachel Hinman at Nokia that desktop is like &#8220;diving&#8221; while mobile is &#8220;snorkling.&#8221; Luke takes this analogy and adds further wisdom to it by saying that in both &#8220;diving&#8221; and &#8220;snorkling&#8221; you&#8217;re looking at fish underwater. Meaning that the core value of your website stays the same regardless of how it&#8217;s accessed. <em>&#8220;So, don&#8217;t deny people access just because they&#8217;re on a mobile device.&#8221;</em></p>
<p>There are plenty of good quotes and takeaways from the book. I only included the ones that were really interesting to me. <em> </em></p>
<p><strong>Content:</strong></p>
<p><em>- &#8220;There simply isn&#8217;t room in a 320&#215;480 pixel screen for elements of questionable value.&#8221;</em></p>
<p><em>- &#8220;Reduction is the best layout approach available to you on mobile.&#8221;</em></p>
<p><em>- &#8220;When interacting with mobile devices, people are in one eyeball one thumb mode.&#8221;</em></p>
<p><em>- &#8220;When it comes to mobile forms, be brutally efficient and trim, trim, trim.&#8221;</em></p>
<p><strong>Design Gotchas:</strong></p>
<p>- When designing for the mobile web experience, it&#8217;s very common to include controls/actions at the bottom of the screen. While that&#8217;s common due to the fact that people use their thumbs for touch, you have to be careful as to not interfere with the phone&#8217;s hardware buttons (back button, search button, home button, menu button, etc).</p>
<p>- Destructive actions such as &#8220;cancel&#8221; or &#8220;delete&#8221; should be placed uncomfortably out of reach as to not be mistakenly clicked when using other controls. Also, this makes people think hard about the destructive action they&#8217;re about to take.</p>
<p>- Set the user expectation. If you present the user with something that looks swipe-able, it better swipes or else the user will be frustrated.</p>
<p><strong>Closing remarks:</strong></p>
<p>- <em>&#8220;The mobile web experience is getting better. Device APIs are being worked on as we speak. This will result in tighter integration between your phone&#8217;s hardware and the web browser.&#8221;</em></p>
<p><em>- &#8220;Welcome to mobile where the only thing you can count on is change.&#8221; </em>My takeaway here is that we need to design our layout responsively, and adapt accordingly. Also, as Luke suggests, we need to accept that this area will be in constant change (at least for some time) so &#8220;prototype, prototype, prototype&#8221; to see what&#8217;s working and what&#8217;s not.</p>
<p>All in all, there is lots of great design details that make up this awesome, easy and engaging read (only 120 pages). It is a &#8220;must read&#8221; if you&#8217;re considering mobile in your company.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://hanyelemary.com/?feed=rss2&#038;p=296</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CodeMash 2012: Quotes &amp; Takeaways</title>
		<link>http://hanyelemary.com/?p=269</link>
		<comments>http://hanyelemary.com/?p=269#comments</comments>
		<pubDate>Mon, 23 Jan 2012 03:09:49 +0000</pubDate>
		<dc:creator>Hany Elemary</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Responsive Web Design]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://hanyelemary.com/?p=269</guid>
		<description><![CDATA[So, I recently got back from CodeMash 2012 as a first-time attendee and all I can say is that it was a great conference. No wonder why it sold out in 20 minutes. After getting back, I wanted to put down a list of takeaways and quotes from the conference for myself and I thought it [...]]]></description>
			<content:encoded><![CDATA[<p>So, I recently got back from CodeMash 2012 as a first-time attendee and all I can say is that it was a great conference. No wonder why it sold out in 20 minutes. After getting back, I wanted to put down a list of takeaways and quotes from the conference for myself and I thought it might be helpful to others if I share them on my blog.</p>
<p><strong>- When choosing a technology &#8211;</strong> <em>Ted Neward</em></p>
<ul>
<li>Resist the familiar.</li>
<li>Reject the goal of reuse until you have a pattern.</li>
<li>&#8220;Best Practices&#8221; are our attempts to avoid thinking. So, it is helpful to think outside the box.</li>
</ul>
<p><strong>- Regarding processes &#8212; </strong><em>Barry Hawkins</em></p>
<ul>
<li>Don&#8217;t make a process your religion.</li>
<li>Processes change quite often. So, be flexible.</li>
<li>A process is not the goal, but a means to an end.</li>
</ul>
<p><strong>- Dealing with information overload &#8212; </strong><em>Scott Hanselman</em></p>
<ul>
<li>Psychic weight happens when your brain is literally going through a ToDo list for the week. Stop that and archive important reminders/info in a trusted source. A trusted source can be as simple as a piece of paper in this case.</li>
<li>Effectiveness is running in a specific direction. Efficiency is being able to run well and fast in that direction.</li>
<li>Stop trying to convince people of your position on twitter. Nothing important can ever be stated in 140 characters or less.</li>
</ul>
<p><strong>- On Responsive Web Design &#8212; </strong><em>Ben Callahan</em></p>
<ul>
<li>The web is not fixed-width. It&#8217;s never been. We (as developers) made it fixed width.</li>
<li>Start with the smallest screen first when designing your web applications. If you approach the desktop first, things may get out of hand quickly.</li>
<li>A mobile-first approach gives you insight into your most important content.</li>
<li>Avoid using non-semantic CSS grid systems that force a specific naming convention for css class names. The class name &#8220;column-3&#8243; may span 3 columns on the desktop view but spans only one in your mobile view, so &#8220;column-3&#8243; becomes meaningless at the mobile view.</li>
</ul>
<p><strong>- On UI/UX Design &#8212; </strong><em>Jen Myers</em></p>
<ul>
<li>Design is not and should never be an after-thought. It&#8217;s not about making things look pretty. Instead, it&#8217;s about solving a problem.</li>
<li>Designers are no longer just designers. Likewise, front-end developers are no longer just front-end developers. Both job descriptions are closely related and should cross-pollinate.</li>
</ul>
<p>These quotes/takeaways are directly related to sessions I have attended. If you&#8217;d like to add other quotes/takeaways from the conference, feel free to leave them the comments below.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://hanyelemary.com/?feed=rss2&#038;p=269</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>12 Resolutions for 2012</title>
		<link>http://hanyelemary.com/?p=240</link>
		<comments>http://hanyelemary.com/?p=240#comments</comments>
		<pubDate>Fri, 13 Jan 2012 05:37:40 +0000</pubDate>
		<dc:creator>Hany Elemary</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hanyelemary.com/?p=240</guid>
		<description><![CDATA[So, last year (2011) was quite eventful for me. Just like any year, you see &#8220;good&#8221; and &#8220;bad&#8221;. I can confidently say that I&#8217;ve seen my fair share of both. But, I&#8217;ve been fortunate enough that the &#8220;good&#8221; had a much bigger impact on me than the &#8220;bad&#8221;. One of the things that I&#8217;m still [...]]]></description>
			<content:encoded><![CDATA[<p>So, last year (2011) was quite eventful for me. Just like any year, you see &#8220;good&#8221; and &#8220;bad&#8221;. I can confidently say that I&#8217;ve seen my fair share of both. But, I&#8217;ve been fortunate enough that the &#8220;good&#8221; had a much bigger impact on me than the &#8220;bad&#8221;. One of the things that I&#8217;m still pretty excited about is my current job. I&#8217;ve been lucky to land a position in 2011 in a great <a href="http://www.oclc.org">company</a>, working with great team members.</p>
<p>I can only hope that 2012 is just as good, if not better than 2011. But, hope isn&#8217;t a strategy so here are 12 resolutions for 2012 and an evaluation of my 11 resolutions for 2011.</p>
<p><strong>12 Resolutions for 2012:</strong></p>
<ul>
<li>Finish the 100 push-up challenge</li>
<li>Finish the 50 pull-up challenge</li>
<li>Finish The <a href="http://toughmudder.com">Tough Mudder</a> Event</li>
<li>Become a 4.5 tennis player</li>
<li>Read &#8220;Strength Finder 2.0&#8243; and work towards capitalizing on your strength</li>
<li>Read &#8220;Roger Federer&#8217;s&#8221; biography</li>
<li>Learn Spanish</li>
<li>Write at least 1 article/month on your blog</li>
<li>Learn 4 songs on your acoustic guitar</li>
<li>Start a fun project with many different technologies as part of ongoing learning</li>
<li>Prioritize effectively and work efficiently</li>
<li>Say &#8220;No&#8221; more often when time is tight</li>
</ul>
<p><strong>11 Resolutions for 2011:</strong></p>
<ul>
<li><del>Start a blog</del></li>
<li>Become a 4.5 tennis player. (carried over to 2012)</li>
<li>Start MBA degree</li>
<li><del>Read “Open – Andre Agassi Autobiography”</del></li>
<li><del>Help someone with great need</del></li>
<li>Learn 4 songs on the acoustic guitar (carried over to 2012)</li>
<li><del>Learn NoSQL databases and use them in a project</del></li>
<li><del>Travel Internationally. </del>
<ul>
<li>Toronto, Canada</li>
<li>Paris, France</li>
<li>London, UK</li>
</ul>
<p><del> </del></li>
<li>Learn Spanish (carried over to 2012)</li>
<li><del>Cook and eat at home more</del></li>
<li><del>Find Balance</del></li>
</ul>
<p>What are your resolutions for 2012?</p>
]]></content:encoded>
			<wfw:commentRss>http://hanyelemary.com/?feed=rss2&#038;p=240</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lessons learned: Responsive Web Design</title>
		<link>http://hanyelemary.com/?p=105</link>
		<comments>http://hanyelemary.com/?p=105#comments</comments>
		<pubDate>Mon, 03 Oct 2011 01:33:44 +0000</pubDate>
		<dc:creator>Hany Elemary</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Responsive Web Design]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://hanyelemary.com/?p=105</guid>
		<description><![CDATA[So, just like many other businesses, we have started implementing Responsive Web Applications at work. In fact, one of the new big projects will be built entirely with this concept. But before I start babbling away, let me give you my two cents of what responsive web design is. The idea is basically this: different [...]]]></description>
			<content:encoded><![CDATA[<p>So, just like many other businesses, we have started implementing Responsive Web Applications at work. In fact, one of the new big projects will be built entirely with this concept. But before I start babbling away, let me give you my two cents of what responsive web design is. The idea is basically this: different users have different needs. A smartphone user has very specific and much more focused needs than that of a tablet or desktop. Responsive web design (RWD, coined by Ethan Marcotte) focuses on a &#8220;one size fits all approach.&#8221; One web application that can be viewed and optimized for different viewport experiences such as: wide screen TVs, desktop browsers, tablets, and smartphones.</p>
<p>To get a bit more technical, the idea is to have one HTML structure or code base that can be controlled and optimized by the CSS for different devices. It does so very elegantly by only detecting the resolution of the device/viewport. It doesn&#8217;t care about the device type or web browser running. So, if a specific resolution is detected, it applies certain presentation rules to optimize the experience for that resolution. In fact, this technique is gaining more ground that it has become an obvious alternative to creating native mobile apps. Ok &#8230; enough babbling. If you need more information on responsive web design, I highly suggest reading Ethan Marcotte&#8217;s <a title="Responsive Web Design - By Ethan Marcotte" href="http://www.alistapart.com/articles/responsive-web-design/" target="_blank">article</a>. Need more information still? Then also read Ethan&#8217;s <a title="Responsive Web Design - By Ethan Marcotte" href="http://www.abookapart.com/products/responsive-web-design" target="_blank">book</a> on the topic. It is simply remarkable.</p>
<p>But just like many other development strategies/approaches, nothing comes without a little bit of pain, mistakes and lessons learned. So, let me summarize some of the early lessons learned from using Responsive Web Design at work while catering for multiple viewports.</p>
<h5>Lesson 1: Scale Up &#8230; Not Down</h5>
<p>Ok, story time &#8230; After I finished optimizing a prototype web app for tablets and smartphones at work, it was time to demo progress to the product manager, <a title="Bob Robertson - Twitter" href="http://twitter.com/#!/bobrobboy" target="_blank">Bob Robertson</a>. Bob is not just a typical product manager. He has enough technical knowledge to call good developers out on their bullshit. He has very good understanding of usability and UX. Bottom line, he knows enough to be dangerous. But anyway, I digress. As I was showing Bob the web application, I said: &#8220;Notice as I resize my browser window how the modules scale down and optimize for the lower resolution so that &#8230;&#8221; And that&#8217;s when Bob interrupted me and said: &#8220;We don&#8217;t want it to scale down &#8230; We want it to scale up.&#8221; I liked the way Bob put a twist on this. However, I didn&#8217;t know exactly why I liked it.</p>
<p>Later during the week when we decided to display things in a slightly different order for mobile, I found myself going back to restructure the HTML. I didn&#8217;t like that very much. It was a simple change that affected the maintainability of the code. So, I thought: what would happen if it&#8217;s a bigger change? That&#8217;s when I really understood why Bob wanted me to take the progressive enhancement approach rather than graceful degradation. It is certainly easier to add components to your current design as you move up. It is the best way to code with change in mind. Additionally, designing at the smallest screen real estate forces you to think about your content. It forces you to assign priority to your content/structure. For instance, the content of most importance to the mobile user will most likely be the main content for tablets/desktops. Consequently, this content get higher priorities.</p>
<p>Now, let&#8217;s pause and think for a second &#8230; The truth is, if you&#8217;re writing a simple blog, either approach, progressive enhancement or graceful degradation, will work for you. However, if you&#8217;re writing a web application that&#8217;s complex in terms of interactions, themes, workflows, authentication and personalization, then progressive enhancement is a &#8220;must-take approach.&#8221; This will prevent you from spending lots of time refactoring your HTML. Why is this so important? Well &#8230; it&#8217;s not important at all if you&#8217;re the sole developer. It is extremely important, however, if you work within a large team with lots of shared HTML snippets, where changing one line of code can affect other workflows and developers.</p>
<h5>Lesson 2: Avoid HTML duplication, when possible</h5>
<p>Since we&#8217;re dealing with only one HTML structure for multiple viewports, sometimes unnecessary markup is rendered while not viewed. And even though the HTML rendered may not account for much, the less HTML rendered, the better the overall performance of the application. As a developer, it&#8217;s easy to have temptations to add more HTML to account for differences between viewports. And even though this is acceptable in some cases, it should be looked at as a last resort. To give a quick example, imagine a submit button that has the caption &#8220;Submit&#8221; on the desktop view. If the requirement is to have a button with an icon for the mobile view, developers might be tempted to add another html component (image), hide it at the desktop view, then show it at the mobile view. </p>
<blockquote><p>Search page for desktop</p></blockquote>
<p><a href="http://hanyelemary.com/blog/demos/rwd/search.html"><img style="max-width:100%" src="http://hanyelemary.com/blog/demos/rwd/images/search_desktop.png" alt="Search page for desktop" /></a></p>
<p></p>
<blockquote><p>Same search page for mobile (at a lower resolution)</p></blockquote>
<p><a href="http://hanyelemary.com/blog/demos/rwd/search.html"><img style="max-width:100%" src="http://hanyelemary.com/blog/demos/rwd/images/search_mobile.png" alt="Search page for mobile" /></a></p>
<p><strong><a href="http://hanyelemary.com/blog/demos/rwd/search.html">Search Demo</a></strong></p>
<p>Well, you can certainly accomplish the same effect without duplicating the HTML by just adjusting the CSS. In this case, you would include the submit button as usual. Then for the mobile view, you assign a background image to the button while moving the text off the screen. The &#8220;text-indent&#8221; CSS property is your friend here.</p>
<p>Obviously, that was a very simple example but it demonstrates using the same HTML structure while catering for aesthetic differences through the CSS. </p>
<h5>Lesson 3: Handle responsive images with care</h5>
<p>Most modern browsers handle image re-sizing quite well. Unfortunately, older versions of Internet Explorer don&#8217;t do the same and the quality of the images can suffer significantly when shrunk down. Especially if the image you&#8217;re dealing with has lots of text on it. Most likely, you will end up with an ugly, pixelated image. The good news is that there are some scripts out there that can handle this issue quite well in older versions of IE. I&#8217;m not going to get into the technical details of what these scripts do exactly. Instead, I have some references at the bottom of this article to some solutions Ethan Marcotte has come up with. </p>
<p>Another point is that it doesn&#8217;t always make sense to re-size images down to the mobile view. When shrunk down, images might be a bit too small to be meaningful. In some cases, it may make more sense if the image itself is a &#8220;crop-out&#8221; of the original image &#8230; Yes, another version of the image. But before you get all angry about the multiple HTTP request for both images, Ethan has been collaborating with the Filament group to experiment with mobile-first images that scale up responsively, all while not requesting multiple images. See further readings at the bottom of this article.</p>
<h5>Lesson 4: Accept that there is no silver bullet</h5>
<p>Remember at the beginning of the article when I said RWD works by only detecting the screen resolution? Well, I lied &#8230; Sort of lied anyway. To be clear though, RWD should work by only detecting screen resolutions. But due to the presence of un-elegant browsers such as older versions of IE, you will have to do more than just detecting screen resolutions. Yep &#8230; You got it. You will have to check for browser versions in your code. The question is, we&#8217;re targeting mobile, so why is IE so important? Simple answer &#8230; Windows Mobile browsers are detected as IE7. Yuck! So, if you need to cater for Windows mobile phones, you need to check the browser version.</p>
<p>And the funny thing is that Microsoft already knows that their browser is yucky and not standards-compliant so they support conditional comments in the HTML. These comments are ignored by all other browsers but get picked up by IE.</p>
<pre>
&lt;!--[if lt IE 9]&gt;
  &lt;link href="ie8.css" rel="stylesheet" type="text/css"&gt;
&lt;![endif]--&gt;
&lt;!--[if IEMobile]&gt;
  &lt;link href="winmobile.css" rel="stylesheet" type="text/css"&gt;
&lt;![endif]--&gt;</pre>
<blockquote><p><em>IEMobile is also detected as IE7. In this case, winmobile.css will be loaded if IE7 or IE mobile is detected, which causes problems. To get around this problem, you have to fall back on another conditional stylesheet that applies to any version less than IE9 (as shown above).</em></p></blockquote>
<p>I sort of lied about something else as well &#8230; Sorry, but in some cases, you will not only be using CSS. But JavaScript can also come to the rescue when used with CSS. For instance, you may need some fancy interactions at the desktop level but not at the mobile view. These types of interactions typically require a JavaScript library. So you may choose not to load these JavaScript libraries conditionally. But this time, not using conditional comments. You will be using just regular JavaScript conditional logic.</p>
<h5>Lesson 5: Team communication</h5>
<p>If you&#8217;re a one man shop, then you&#8217;re the project/product manager, designer, developer and quite possibly, the sole user <img src='http://hanyelemary.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  But, unfortunately (or may be fortunately), we don&#8217;t all work in this environment. For large scale applications, you often find different teams working together on the same project. Thus, cross-team communication is absolutely necessary. But it doesn&#8217;t stop there. You also need to communicate cross-job descriptions. From Product folks to UI/UX designers to developers &#8230; all have to be on the same page. Design meetings have to occur cross teams with developers and designers working together. That means being just a web developer is not desirable. You need to be a developer who understands how designers work. Likewise, being just a designer without understanding the basics of the web in general and responsive web design in specific is also dangerous.</p>
<h5>Closing thoughts</h5>
<p>Browsers have been getting better over the last couple of years. And HTML5/CSS3 are gaining more traction day after day. We&#8217;re constantly hearing about big companies ditching native mobile apps for HTML5 alternatives. Some of which are utilizing Responsive Web Design in their implementations. With that in mind, I strongly think that RWD is the way forward. When faced with limited time and resources, RWD just makes a lot more sense than developing a separate mobile site or native mobile app. It is also a great way for developing/desigining for change. For instance, I hate it when I have a widescreen monitor viewing a website that occupies only a small fraction of that, with small text that requires me to zoom in to read comfortably. Developers should adapt to that just as well as they adapt for mobile.</p>
<p>So &#8230; Design Responsively.</p>
<h5>Further Readings</h5>
<ul>
<li><a href="http://unstoppablerobotninja.com/entry/fluid-images/">Fluid Images &#8211; By Ethan Marcotte</a></li>
<li><a href="https://github.com/filamentgroup/Responsive-Images">Mobile-first Responsive Images &#8211; Filament Group/Ethan Marcotte</a></li>
</ul>
<p><a style="display:none" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=3396998" rel="tag">CodeProject</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hanyelemary.com/?feed=rss2&#038;p=105</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Optimize your WordPress blog for Mobile</title>
		<link>http://hanyelemary.com/?p=59</link>
		<comments>http://hanyelemary.com/?p=59#comments</comments>
		<pubDate>Tue, 21 Jun 2011 03:05:41 +0000</pubDate>
		<dc:creator>Hany Elemary</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://hanyelemary.com/?p=59</guid>
		<description><![CDATA[So, shortly after I started talking about design tips for mobile web applications on my blog, I realized that my blog is not optimized to run on mobile devices. Don&#8217;t get me wrong, the mobile web experience for my blog wasn&#8217;t bad when viewed on my Thunderbolt. But, I thought that it could be better, [...]]]></description>
			<content:encoded><![CDATA[<p>So, shortly after I started talking about <a title="Design Tips for Mobile Web Apps" href="http://hanyelemary.com/?p=34">design tips for mobile web applications</a> on my blog, I realized that my blog is not optimized to run on mobile devices. Don&#8217;t get me wrong, the mobile web experience for my blog wasn&#8217;t bad when viewed on my Thunderbolt. But, I thought that it could be better, simpler and more mobile user-friendly. I didn&#8217;t have the time to tweak the design to account for mobile though. I guess that&#8217;s also the main reason I went with an existing template on WordPress rather than design my own, even though I have the design capability &#8230; But that&#8217;s besides the point.</p>
<p>After 5-10 minutes of poking around in the plugins section of WordPress, I came across one that did exactly what I needed; optimize my blog to run on mobile devices (iPhone, iPod Touch, Android phones, BlackBerry Storm &amp; Torch and Palm Pre among other touch-based devices). The plugin is called <a title="WPTouch" href="http://www.bravenewcode.com/store/plugins/wptouch-pro/?utm_campaign=wptouch-home-top&amp;utm_medium=web&amp;utm_source=bravenewcode">WPTouch</a>. I highly recommend it. If you&#8217;re looking at my blog on your mobile device, you&#8217;ll notice the difference. It is also highly customizable.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://hanyelemary.com/?feed=rss2&#038;p=59</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
