<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
 
 <title>jtaby.com</title>
 
 <link href="http://jtaby.com/" />
 <updated>2012-02-23T00:23:12-08:00</updated>
 <id>http://jtaby.com/</id>
 <author>
   <name>Majd Taby</name>
   <email>mtabye@me.com</email>
 </author>

 
 <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/majd-taby" /><feedburner:info uri="majd-taby" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
   <title>A Moment of Clarity in the Pursuit of Happiness</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/MqCos564JMo/a-moment-of-clarity.html" />
   <updated>2012-02-02T00:00:00-08:00</updated>
   <id>http://jtaby.com/2012/02/02/a-moment-of-clarity</id>
   <content type="html">&lt;p&gt;My eyes squinted, my lips puckered. My palms sweaty and my heartbeat faster. The adrenaline started in my back, tingled my brain, then tickled my toes. It was a moment of clarity: A moment where something obscure suddenly made sense, a moment where the future was laid out for me, waiting for me to realize it. The most recent moment of clarity triggered this blog post.&lt;/p&gt;
&lt;p&gt;The realization is that my happiness is something that is in my control to create control, something that I can create for myself and manage. What it means and how it works, are still a little hazy for me, but the idea is there, I feel it in my bones.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve recently started reading &lt;a href="http://www.amazon.com/Flow-Psychology-Experience-Mihaly-Csikszentmihalyi/dp/0061339202"&gt;Flow&lt;/a&gt; by Mihaly Csikszentmihalyi, a book which analyzes years of research into happiness. Here&amp;#8217;s the quote that captures the thesis:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What I “discovered” was that happiness is not something that happens. It is not the result of good fortune or random chance. It is not something that money can buy or power command. It does not depend on outside events, but, rather, on how we interpret them. Happiness, in fact, is a condition that must be prepared for, cultivated, and defended privately by each person. People who learn to control inner experience will be able to determine the quality of their lives, which is as close as any of us can come to being happy.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The implication being, the quality of your live (and thus, your happiness), is a choice. It&amp;#8217;s something that you decide you want, and something you create for yourself.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s another quote from an article I just recently read called &lt;a href="http://www.guardian.co.uk/lifeandstyle/2012/feb/01/top-five-regrets-of-the-dying?cat=lifeandstyle&amp;amp;type=article"&gt;Top five regrets of the dying&lt;/a&gt; that supported the same argument:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Many did not realise until the end that happiness is a choice. They had stayed stuck in old patterns and habits. The so-called &amp;#8216;comfort&amp;#8217; of familiarity overflowed into their emotions, as well as their physical lives. Fear of change had them pretending to others, and to their selves, that they were content, when deep within, they longed to laugh properly and have silliness in their life again.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Steve Jobs also shared a similar sentiment during his famed Stanford speech:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;And since then, for the past 33 years, I have looked in the mirror every morning and asked myself, if today were the last day of my life, would I want to do what I am about to do today?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;#8217;m trying to internalize this concept and make it a part of who I am. My identity and my thoughts are my own to have, control, and share. Happiness is a mindset for me to create. I find this newfound control over my life comforting since it means I can stop passing the buck and sulking in any form of unhappiness.&lt;/p&gt;
&lt;p&gt;A final thought: On average, you have 78 years total to live. The first 18-20 are spent learning, which leaves 58. Spending 2 years doing something you don&amp;#8217;t enjoy is a full 3.4% of your life. What are you getting back for that investment? Money? What are you going to do with that money that will be worth the non-refundable 3.4% of your life? An extra room in your house?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/MqCos564JMo" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2012/02/02/a-moment-of-clarity.html</feedburner:origLink></entry>
 
 <entry>
   <title>How Much Skill Can I Gain in 20 Hours?</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/p9UK7UyEs9o/how-much-skill-can-you-gain-in-20-hours.html" />
   <updated>2012-01-19T00:00:00-08:00</updated>
   <id>http://jtaby.com/2012/01/19/how-much-skill-can-you-gain-in-20-hours</id>
   <content type="html">&lt;p&gt;tl;dr: Try doing something you&amp;#8217;ve always wanted to do for a month. If you like it, you&amp;#8217;ll keep doing it, if not, you don&amp;#8217;t have to do it for very long.&lt;/p&gt;
&lt;h2&gt;Play a song, Tailor a pair or shorts&lt;/h2&gt;
&lt;p&gt;Starting Monday, January 23rd, and until February 24th, I will spend one hour each day either learning to play a piano piece or working on constructing a pair of shorts. I&amp;#8217;m thinking three nights on Piano, two on Tailoring.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the song I will try to learn to play:&lt;/p&gt;
&lt;p&gt;&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/oGHMfssQTEE" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;And here&amp;#8217;s the fabric I will use for the shorts:&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/skill/fabric.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I took some piano lessons when I was 10, but I forgot most of what I learned. I still know the very basics of reading music, but I don&amp;#8217;t know how to apply them. I know the basics of garment construction, but I still can&amp;#8217;t put them together all the way to a final piece. I don&amp;#8217;t know if I&amp;#8217;ll be able to hit my goal, but it doesn&amp;#8217;t matter quite as much as the act of practicing something outside my core competency. If I find that I&amp;#8217;m improving, I don&amp;#8217;t have to stop in a month. A month is the minimum, not the maximum.&lt;/p&gt;
&lt;h2&gt;Why?&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;ve worked in tech in Silicon Valley for one-and-a-half years. The work is hard, the deadlines are aggressive, and the days are long. I love the challenge, I love the work, and I love the culture, but after a while, I started feeling like parts of my brain were going dormant.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m surrounded by people who excel at everything in life from unicycling to writing novels. I draw inspiration from these individuals, and I have a laundry list of activities and hobbies that I would like to be good at, but never found the time or motivation to actually follow through.&lt;/p&gt;
&lt;h2&gt;The Book&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;m reading &lt;a href="http://www.amazon.com/Talent-Code-Greatness-Born-Grown/dp/055380684X"&gt;The Talent Code&lt;/a&gt; Where the author describes the conditions and type of intentional, &amp;#8220;deep practice&amp;#8221; that breeds greatness. Here are a couple of quotes from the book:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;The trick is to choose a goal just beyond your present abilities; to target the struggle. Thrashing blindly doesn&amp;#8217;t help. Reaching does.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;People at most of the hotbeds [of talent] I visited practiced less than three hours a day. The younger Spartak kids (ages six to eight) practiced a mere three to five hours each week.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;5 hours a week, one hour each weekday, for a month. The experiment is to find out whether one hour a day is enough to meaningfully gain knowledge and skill in an area of interest.&lt;/p&gt;
&lt;p&gt;The book has jolted me into a state of restlessness and I want to capitalize on it. I&amp;#8217;ll try to describe this &amp;#8220;Do something for 30 days&amp;#8221; idea, how it has worked for me, and why you should do it as well.&lt;/p&gt;
&lt;h2&gt;The Epiphany&lt;/h2&gt;
&lt;p&gt;When I came out to San Francisco in June of 2010, I weighed 240 pounds, and lived a sedentary lifestyle. One of my coworkers convinced me to go running with him one morning. Then he got my ass out of bed early to go for another run later that week, and a couple of weeks later, I found myself looking forward for that morning run. A short conversation and a $50 wager later, I decided to commit to running 2 miles in the morning before work every day for a month.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the Nike+ graph of that month:&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/skill/runs.png" alt="" /&gt;&lt;/p&gt;
&lt;p class="subtext"&gt;I skipped a few days to rest, and I missed a 5 day stretch because of a trip to &lt;span class="caps"&gt;NYC&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;The epiphany came after the month was done: I kept on running, increased my mileage and eventually participated in a 10 mile run during which I weighed 185 pounds.&lt;/p&gt;
&lt;p&gt;I did a similar thing a few months later: I really wanted to read. I felt like there was a lot of knowledge buried in books that I was not exposed to because of my aversion to reading. By the time 2011 was done, I had &lt;a href="http://www.goodreads.com/review/list/6454382-majd-taby?shelf=read"&gt;read 11 books&lt;/a&gt;. As I continued reading, my speed got faster, and my vocabulary grew (and I learned a lot!).&lt;/p&gt;
&lt;p&gt;The reason I&amp;#8217;m recounting this isn&amp;#8217;t to pat myself on the back, it&amp;#8217;s to highlight the fact that people are in control of their lifestyle and it&amp;#8217;s in their power and capability to completely change it. The key is to truly want to do it for yourself. If you decide to do it out of peer pressure, you&amp;#8217;re almost certain to fail. I was haggled to lose weight by my family for years, and it wasn&amp;#8217;t until I personally wanted to do it, that it happened.&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;h2&gt;Why a Month is the Perfect Amount of Time&lt;/h2&gt;
&lt;p&gt;This idea isn&amp;#8217;t unique, I can&amp;#8217;t remember hearing about it before I did it, but since then, I&amp;#8217;ve come across a bunch of people advocating the same thing. Here&amp;#8217;s Matt Cutts talking about the &lt;em&gt;exact&lt;/em&gt; same idea:&lt;/p&gt;
&lt;p&gt;&lt;object width="526" height="374"&gt;&lt;br /&gt;
&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;&lt;br /&gt;
&lt;param name="allowScriptAccess" value="always"/&gt;&lt;br /&gt;
&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name="flashvars" value="vu=http://video.ted.com/talk/stream/2011U/Blank/MattCutts_2011U-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/MattCutts-2011U.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=1183&amp;lang=&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=matt_cutts_try_something_new_for_30_days;year=2011;theme=how_we_learn;event=TED2011;tag=Culture;tag=success;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;br /&gt;
&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="526" height="374" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talk/stream/2011U/Blank/MattCutts_2011U-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/MattCutts-2011U.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=1183&amp;lang=&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=matt_cutts_try_something_new_for_30_days;year=2011;theme=how_we_learn;event=TED2011;tag=Culture;tag=success;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;"&gt;&lt;/embed&gt;&lt;br /&gt;
&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;He approached it from a therapeutic perspective. In hindsight, when I started my month challenges, I had just moved to a new city, was still trying to build a social circle, and was feeling a little detached. These challenges fill up your free time, give you a purpose and a goal.&lt;/p&gt;
&lt;p&gt;A month is the perfect amount of time for a couple of reasons: First, it&amp;#8217;s short enough that if you decide the challenge you embarked on is not fun, you don&amp;#8217;t have to do it for long. Secondly, it&amp;#8217;s long enough, that if you stick to it, it would form a habit.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re thinking about doing this, the rules are: It has to be something you genuinely want for yourself, and it has to be something sustainable&lt;/p&gt;
&lt;p&gt;What do you think? Has there been something you&amp;#8217;ve always wanted to do and be good at? What is it? What are you waiting for? Why aren&amp;#8217;t you doing it &lt;em&gt;today&lt;/em&gt;?&lt;/p&gt;
&lt;p class="inline-img no-highlight"&gt;&lt;img src="/resources/yc.gif" alt="" /&gt; &lt;a href="http://news.ycombinator.com/item?id=3486461"&gt;Please comment on the Hacker News thread.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/p9UK7UyEs9o" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2012/01/19/how-much-skill-can-you-gain-in-20-hours.html</feedburner:origLink></entry>
 
 <entry>
   <title>Confidence of the Mobile Web</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/nj_nY9Ay0vQ/mobile-web-confidence.html" />
   <updated>2012-01-04T00:00:00-08:00</updated>
   <id>http://jtaby.com/2012/01/04/mobile-web-confidence</id>
   <content type="html">&lt;p&gt;There seems to be a seeping Napoleon Complex among mobile web devs, it&amp;#8217;s almost like they don&amp;#8217;t want me to use their web app. I&amp;#8217;m sure a lot of developer effort went into building these comfortable, mobile-friendly alternatives to the full desktop experience, so why ruin it by putting up speed bumps between me and the content? (I&amp;#8217;ve put example of this below the text.)&lt;/p&gt;
&lt;p&gt;If I&amp;#8217;m using your mobile web app, it&amp;#8217;s because:&lt;/p&gt;

	&lt;ol&gt;
		&lt;li&gt;I&amp;#8217;m not on my own phone, and I&amp;#8217;m using a friends&amp;#8217; phone&lt;/li&gt;
		&lt;li&gt;I tapped on a link in an app&lt;/li&gt;
		&lt;li&gt;I don&amp;#8217;t want to download your app and have it take up a spot on my phone&lt;/li&gt;
		&lt;li&gt;I didn&amp;#8217;t know you had an app and I went to your website by default&lt;/li&gt;
	&lt;/ol&gt;&lt;p&gt;The first three use-cases imply that I don&amp;#8217;t have an interest in your native app, and the last use-case doesn&amp;#8217;t justify trampling on the other three. A simple banner would do. Even better, wait until a user takes an action that&amp;#8217;s only available on the native app (like uploading a photo), and &lt;em&gt;then&lt;/em&gt; prompt them to download the native app. All around, I see examples of this:&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/confidence/add_to_home.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/confidence/download_app.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;As an alternative, I really like what Instagram does: A simple link that takes you to the App Store. Simple, effective, and unobtrusive.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/confidence/instagram.png" alt="" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/nj_nY9Ay0vQ" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2012/01/04/mobile-web-confidence.html</feedburner:origLink></entry>
 
 <entry>
   <title>John Siracusa on Hypercriticism</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/f8aU3l_HPWY/hypercritical.html" />
   <updated>2012-01-03T00:00:00-08:00</updated>
   <id>http://jtaby.com/2012/01/03/hypercritical</id>
   <content type="html">&lt;p&gt;&lt;img src="/resources/hypercriticism/anton.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I came across a 2009 post by John Siracusa called &lt;a href="http://arstechnica.com/staff/fatbits/2009/05/hypercritical.ars"&gt;Hypercritical&lt;/a&gt; and it inspired me to share some thoughts on the subject. I, like Siracusa, live in perpetual displeasure with my work. I&amp;#8217;ve come to attribute this displeasure to the disparity between what my brain wants to create and what my hands can output. I&amp;#8217;ve heard Ira Glass tell us that the antidote is practice, so practice I do.&lt;/p&gt;
&lt;p&gt;There is a flip side of course, and it was recently summarized  by &lt;a href="http://twitter.com/can"&gt;@can&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote class="twitter-tweet tw-align-center"&gt;&lt;p&gt;It is sad that hyper-criticism passes for attention to detail and hyper-cynicism for wisdom.&lt;/p&gt;&lt;p&gt;&amp;mdash; Can Duruk (@can) &lt;a href="https://twitter.com/can/status/144331530779635712" data-datetime="2011-12-07T08:24:53+00:00"&gt;December 7, 2011&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;script src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;Seems to me, the only bad criticism is one that is personal and inflammatory. Hyper-criticism is an unapologetic quality, and has a tangible impact on the final product, when channeled properly.&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t know how justifiable my criticism is. Is there a threshold of external validation one must meet before their opinion matters? I don&amp;#8217;t think so, and I think the more I can constructively criticize – that is, back my criticism with logical analysis – the better I become at judging my own work.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not about to compare my criticism to Steve Jobs&amp;#8217; secret-sauce of sucess (much to my ego&amp;#8217;s dismay), but I think the general idea that the key to success is being critical of one&amp;#8217;s own work and &amp;quot; being in a position to demand that it be fixed before a product sees the light of day&amp;quot; is, in fact, a key to Apple&amp;#8217;s success and an indication of the failure of many competitors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Choice quotes from the Siracusa article:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This touches on the idea of practicing even in the face of self-doubt.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;But much worse than that, it means that everything you ever create appears to you as an accumulation of defeats. &amp;#8220;Here&amp;#8217;s where I gave up trying to get that part right and moved on to the next part.&amp;#8221; Because at every turn, it&amp;#8217;s apparent to you exactly how poorly executed your work-in-progress is, and how far short it will inevitably fall when completed. But surrender you must, at each step of the process, because the alternative is to never complete anything—or to never start at all.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I like what this quote has to say about using criticism to understand not just what sucks, but &lt;em&gt;why&lt;/em&gt; it sucks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;And true to form, there was plenty of recursive self-analysis. Do I dislike these new tabs only because they&amp;#8217;re different? Are my old habits blinding me to the benefits of this new design? People really dove deep on this thing: generalizing, trying to find the underlying patterns, and changing their positions based on new analyses.&lt;/p&gt;
&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/f8aU3l_HPWY" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2012/01/03/hypercritical.html</feedburner:origLink></entry>
 
 <entry>
   <title>From the Junk Drawer: The Broken Pixel Theory</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/mUFb3d5tNBU/the-broken-pixel-theory.html" />
   <updated>2011-12-25T00:00:00-08:00</updated>
   <id>http://jtaby.com/2011/12/25/the-broken-pixel-theory</id>
   <content type="html">&lt;h3&gt;Prologue&lt;/h3&gt;
&lt;p&gt;&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/baCJFAGEuJM" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Over the past few months, I&amp;#8217;ve started writing blog posts and stopped half-way through, or even worse, I finished them, but thought they weren&amp;#8217;t good enough to be posted. Sometimes it&amp;#8217;s because I felt like there wasn&amp;#8217;t a real call-to-action to the post, other times it&amp;#8217;s because I didn&amp;#8217;t think the point was well-made. Recently though, I realized that this was causing a writer&amp;#8217;s block and the way to unblock myself was to keep writing, regardless of my perception of its quality. &amp;#8220;Done is Better than Perfect&amp;#8221; and all that. So in the spirit of Ira Glass (See video above), I&amp;#8217;ve decided to practice practice practice, and this is the first in a series  of posts titled &amp;#8220;From The Junk Drawer&amp;#8221;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style="vertical-align:middle;"&gt;The Broken Pixel Theory&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Broken_windows_theory"&gt;The Broken Window Theory&lt;/a&gt; is a fairly well-known criminology theory that correlates the well-maintenance of neighborhoods with lower crime rates. The idea is that a building with a broken window will lower the guilt barrier of breaking another window, which snowballs into a higher crime rate. I stipulate that the theory applies both to application UIs, as well as the code that runs them. A UI with a broken pixel will lower the guilt barrier of breaking another pixel. If unchecked, these broken pixels can snowball to a culture of qualitative indifference.&lt;/p&gt;
&lt;p&gt;There are many examples of The Broken Window Theory in daily life. For example, a clean desk tends to stay clean until a piece of paper stays on it for a couple of days. Similarly, I&amp;#8217;m much less likely to care about a 2-3 pixel UI bug when the whole UI is a mess. Nobody would care about my bug, and even if they did, they probably won&amp;#8217;t notice my bug among the swarm of other bugs.&lt;/p&gt;
&lt;p&gt;Sweating the details is important not only from an aesthetic perspective, but also from a cultural perspective. A company&amp;#8217;s culture is one of its greatest assets, and its products are a reflexion of it. Apple&amp;#8217;s products are polished and smooth, Google&amp;#8217;s products are fast and technical, Amazon&amp;#8217;s products are simple and frugal. The Broken Window Theory applies not just to the user facing products, but everything internal as well, from the letter head to the internal websites, and all the energy put into maintaining a high level of polish is a worthy investment.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you thought this blog post was interesting, you may also enjoy Braden Kowitz&amp;#8217;s &lt;a href="http://www.designstaff.org/articles/design-details-2011-11-29.html"&gt;Why you should move that button 3px to the left&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/mUFb3d5tNBU" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/12/25/the-broken-pixel-theory.html</feedburner:origLink></entry>
 
 <entry>
   <title>Reflexions on my 24th Year</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/e4M10s7lVCw/reflextions-on-my-24th-year.html" />
   <updated>2011-12-10T00:00:00-08:00</updated>
   <id>http://jtaby.com/2011/12/10/reflextions-on-my-24th-year</id>
   <content type="html">&lt;p&gt;&lt;em&gt;This post is written by me, to my future me, in a public way. Hopefully I won&amp;#8217;t regret this decision. This will include an unhealthy amount of self-praise and recollection/introspection. Feel free to ignore at will.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Recap&lt;/h3&gt;
&lt;p&gt;Last year I wrote one of these and in retrospect, it was too personal. I think at the time, I didn&amp;#8217;t expect more than 10 people max to read it. Even though the post makes me feel a bit exposed, it has had a positive effect on me that encouraged me to keep it posted and write another one.&lt;/p&gt;
&lt;p&gt;It was around June when I started thinking about where my career was heading and where I was going. I felt like 2010 was such a crazy year, with so much personal and career development, that had I left 2011 as I entered it, I would have wasted a year. I seriously considered what this blog post would say had I stayed where I was. I thought the blog post would be boring and uneventfull, a reflection of what my life would have been. This idea scared me, and made me itch for change.&lt;/p&gt;
&lt;p&gt;Coincidentally, a couple of opportunities presented themselves to me at that time, and I considered both heavily. Finally, I decided to &lt;a href="http://jtaby.com/2011/06/16/why-i-joined-strobe.html"&gt;join Strobe Inc.&lt;/a&gt;. This was my second job out of college, and the freedom that came with working in a startup amazed me, in stark contrast to Apple. On my first day at the job, I was &lt;a href="http://daringfireball.net/linked/2011/05/31/taby-chrome"&gt;linked to by Gruber&lt;/a&gt; (A bucket-list item of mine). Later, five of my blogs posts would make it to the front page of Hacker News (Another bucket-list item), and within 4 months, I released a &lt;a href="https://github.com/jtaby/waldo"&gt;few&lt;/a&gt;  &lt;a href="https://github.com/sproutcore/TransformJS"&gt;open&lt;/a&gt; &lt;a href="https://github.com/sproutcore/sproutcore-touch"&gt;source&lt;/a&gt; projects. The rush of seeing people use my software and the rush of public-speaking was addictive.&lt;/p&gt;
&lt;p&gt;I recommend working at an early-stage startup to any engineer without hesitation. The breadth of knowledge you need to have and the intensity of the work is intoxication. You become a master of your own destiny, your peers become your family. and your work becomes your best friend. Moreover, you end up learning about a topics you wouldn&amp;#8217;t otherwise explore: Financing, business developement, operations, etc. – All essential lesson to learn, and all lessons I&amp;#8217;m glad I learned.&lt;/p&gt;
&lt;p&gt;Fast forward a few months, and I&amp;#8217;m now at Facebook. Truth be told, had I been in the open recruiting market, Facebook wouldn&amp;#8217;t be the first company I&amp;#8217;d reach out to. In hindsight though, I&amp;#8217;m etremely grateful for the chance to work here. Regardless of the work itself, I&amp;#8217;ve learned a lot about how a large company can operate and how teams can be managed. Again, invaluable life lessons I am grateful to learn.&lt;/p&gt;
&lt;p&gt;I now sit in a room with some of the brightest and most accomplished names in Web Development, working on the most popular web destination, on tough problems. My old goal of always being the stupidest person in the room has been handsomely fullfilled.&lt;/p&gt;
&lt;h3&gt;Life Lessons&lt;/h3&gt;
&lt;p&gt;Shifting gears to big life lessons learnt, I&amp;#8217;d say the biggest lesson is to slow down. I&amp;#8217;ve been operating under the time pressure of a race. I felt like every day that didn&amp;#8217;t mark a notable improvement in my career was a wasted day. I&amp;#8217;ve always been a futurist. I dream about the future, I talk about the future, and I build the future. I couldn&amp;#8217;t justify a lack of change, so I enduced change. I&amp;#8217;ve come to decide that that was a terrible way to live, and the lesson is that building the future takes time, adjustments, perseverence, and hard work.&lt;/p&gt;
&lt;p&gt;Another main lesson I learned it: Fixing what&amp;#8217;s broken can be as rewarding as starting over. I&amp;#8217;ve always beena &amp;#8220;grass is greener on the other side&amp;#8221; sort of person, and treat obstacles with dread.&lt;/p&gt;
&lt;p&gt;As I enter my mid-20s, I think I&amp;#8217;m going to slow down. I want to have a few, but deep and impactful outcomes this year, not a lot of smaller ones. It&amp;#8217;s time for me to stop being a student and a consumer and start creating my own world and future.&lt;/p&gt;
&lt;h3&gt;Socially&lt;/h3&gt;
&lt;p&gt;I&amp;#8217;ve met most my SF friends for over two-and-a-half years now. These people have been with me through my weight loss, my job transitions, and my growth over the past couple of years, and they&amp;#8217;ve handled all my whining and bad jokes, and I love them for it.&lt;/p&gt;
&lt;p&gt;I now live with two of my best friends, in an amazing how in an amazing neighborhood in an amazing city with an amazing job, and an amazing life. I&amp;#8217;m extremely grateful and take none of it for granted. As I grow, I want what I have to work for me more than I&amp;#8217;ve given it a chance to do in the past. This year will have fewer changes, but bigger outcomes.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m excited.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/e4M10s7lVCw" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/12/10/reflextions-on-my-24th-year.html</feedburner:origLink></entry>
 
 <entry>
   <title>Eulogy for Steve Jobs</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/EBU-R3rYdbw/eulogy-for-steve-jobs.html" />
   <updated>2011-10-05T00:00:00-07:00</updated>
   <id>http://jtaby.com/2011/10/05/eulogy-for-steve-jobs</id>
   <content type="html">&lt;p&gt;&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/4oAB83Z1ydE" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;I was screaming in the car. I was ecstatic; it was the one thing in the world that I wanted more than anything. I had just come home, my brother had gotten it for me, it was waiting for me on the dinner table. In the packaging, and on the side, it said in a big Myriad Set font: iPhone.&lt;/p&gt;
&lt;p&gt;&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/GwHLmTCJcJ4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Steve Jobs is more than just a visionary. He is an idea, a philosophy, a way of thinking about life and technology that transcends the technical, and ventures into the creative. He gave a voice to those of us who were voiceless. We all knew things sucked; everything sucked. People hated using technology and we didn&amp;#8217;t really know why. Hindsight is 20/20 and we can now clearly see what was wrong and laugh about it, but physical keyboards were cool, and styluses were in, cartoons were for kids, and computers were for scientists, but all that has changed.&lt;/p&gt;
&lt;p&gt;&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/OYecfV3ubP8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Steve Jobs was my first boss, he created a company that I admired and tried hard to work for. I tried to get an internship at Apple three times, and I failed twice. Failure was never an option for Steve, and I never let it be a failure. Coming in second is reason to try harder, reason to improve, it&amp;#8217;s a great motivator.&lt;/p&gt;
&lt;p&gt;&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/KuNQgln6TL0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Steve knew early on what it takes to make a good product, he assembled a team to work with him that understood that. The team extended beyond just the senior vice presidency. All the employees who work at Apple understand the Jobsian ethos, if not explicitly, then implicitly. Before the first iPod was sold, Jony Ive knew that they were designing an icon.&lt;/p&gt;
&lt;p&gt;&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/BCYhrt_PF7Q" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;The closest I ever came to talking to Steve Jobs was brushing shoulders with him at the cafeteria, but his presense was always felt, was a visionary, a legend, and a thought leader. You will be missed Steve, you meant the world to us.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/EBU-R3rYdbw" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/10/05/eulogy-for-steve-jobs.html</feedburner:origLink></entry>
 
 <entry>
   <title>Thoughts on the Kindle Fire</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/TWit0WceCPc/thoughts-on-the-kindle-fire.html" />
   <updated>2011-09-28T00:00:00-07:00</updated>
   <id>http://jtaby.com/2011/09/28/thoughts-on-the-kindle-fire</id>
   <content type="html">&lt;p&gt;&lt;em&gt;Update: Added section headers&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I love Amazon, they&amp;#8217;re one of the few companies who like Apple, understand that for a consumer product  like a phone/tablet to succeed, it needs an ecosystem to back it, not just the hardware/software to run it. Amazon is also in a unique position of being in charge of one of the biggest ecosystems for media on the planet.&lt;/p&gt;
&lt;h2&gt;The Good&lt;/h2&gt;
&lt;p&gt;The focus of the Fire on media consumption through Amazon&amp;#8217;s ecosystem is brilliant. The price point (my wild guess is that they&amp;#8217;re selling it at a $1-200 loss per sale) is the razor-blade/printer equivalent of tablets. My assumption is that the play that Amazon is trying to earn most of the money on content sales rather than hardware. Assuming a 2 year lifetime, $1-200 is easy to spend on content (especially $10 books and $3-4 movie rentals).&lt;/p&gt;
&lt;p&gt;They also cleverly designed the UI to play to the strengths of the Fire. As opposed to the iPad (whose strength is the Apple store) which features apps on the home screen, the Fire features content on the home screen. These sorts of UI decisions influence how people use and perceive the product, and Amazon wants people to know that this is a media consumption device.&lt;/p&gt;
&lt;p&gt;The iPad 2 weighs 21.28 ounces, the Kindle Fire weighs 14.6 ounces, this will make a big difference when holding it up for elongated periods of time for reading. I just bought one of the new Kindles (the most basic one) for the sole intended purpose of reading. I&amp;#8217;ve never been able to read books on my iPad. The combination of a backlight, the weight, and the screen resolution is a deal-breaker for me. I haven&amp;#8217;t played with a Fire, so I don&amp;#8217;t know whether or not it suffers from the same resolution/backlighting problems of the iPad for reading, but the weight will help a lot.&lt;/p&gt;
&lt;h2&gt;The Bad&lt;/h2&gt;
&lt;p&gt;The 7&amp;quot; form-factor is an aspect which doesn&amp;#8217;t sit well with me. One of the pleasures of using an iPad is the size of the display. Multi-touch gestures are extremely natural and comfortable on the iPad, web content designed for large computer displays feels natural at 10&amp;quot;. The Galaxy Tab 7&amp;quot; is the only 7 inch tablet I&amp;#8217;ve played with, and it felt smack-dab in the middle of being big enough to be comfortable, and small enough to be portable. The difference between the Tab and the Fire though is the same as the difference between the iPad and the Fire: The Fire is intended for serving a smaller subset of use-cases which are less interactive: Reading books, watching movies, listening to music, etc. so it may be less of an issue.&lt;/p&gt;
&lt;p&gt;Overall, I think it is a well-rounded product with a string backing ecosystem, I can&amp;#8217;t see why this product won&amp;#8217;t be a runaway hit. However, I don&amp;#8217;t think anyone seriously considering an iPad would opt for a Kindle Fire instead. My hypothesis is that people who were on the edge about spending $500 on a tablet will be much more inclined to buy a Kindle Tablet, which will increase the size of the market, but won&amp;#8217;t cannibalize the sales of the iPad.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/TWit0WceCPc" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/09/28/thoughts-on-the-kindle-fire.html</feedburner:origLink></entry>
 
 <entry>
   <title>Web or Native? A SXSW Panel Proposal</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/m7d9oDGw82Y/sxsw-panel-picker.html" />
   <updated>2011-08-16T00:00:00-07:00</updated>
   <id>http://jtaby.com/2011/08/16/sxsw-panel-picker</id>
   <content type="html">&lt;p&gt;If you&amp;#8217;ve taken interest in this blog, chances are you&amp;#8217;re at least intrigued by the mobile web and its possibilities and how it fits into our ecosystem. We&amp;#8217;re still in the nascent days of the mobile web, and it&amp;#8217;s still establishing itself as a powerful application development environment. As a result, a lot of companies and developers find themselves wondering whether a new project they&amp;#8217;re starting ought to be built on top of ubiquitous web platform, or the performant native one.&lt;/p&gt;
&lt;p&gt;In order to answer some of these questions, and to engage in a level-headed conversation,  &lt;a href="http://tomdale.net"&gt;Tom Dale&lt;/a&gt;, &lt;a href="http://log.scifihifi.com/"&gt;Buzz Anderson&lt;/a&gt;, &lt;a href="http://mrgan.tumblr.com/"&gt;Neven Mrgan&lt;/a&gt;, &lt;a href="http://lianapolitano.com/"&gt;Lia Napolitano&lt;/a&gt; and I have submitted a &lt;span class="caps"&gt;SXSW&lt;/span&gt; panel proposal trying to address the &amp;#8220;Web or Native?&amp;#8221; question from a UI, UX, and engineering perspective.&lt;/p&gt;
&lt;p&gt;Some of the questions we will answer:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;What advantages do native apps have over web apps, and vice versa?&lt;/li&gt;
	&lt;li&gt;How does good mobile web design differ from good native app design?&lt;/li&gt;
	&lt;li&gt;How does the native development process differ from the web?&lt;/li&gt;
	&lt;li&gt;Which kinds of applications are best suited to mobile web, and which are best suited to native?&lt;/li&gt;
	&lt;li&gt;Can both mobile web and native apps have a place in your mobile product strategy?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;a href="http://panelpicker.sxsw.com/ideas/view/10838"&gt;Please vote for our panel proposal here.&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We hope to see you in Austin!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/m7d9oDGw82Y" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/08/16/sxsw-panel-picker.html</feedburner:origLink></entry>
 
 <entry>
   <title>Design for the Mobile Web's Ubiquity</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/QcMC53NV4-Q/mobile-web-ubiquity.html" />
   <updated>2011-08-11T00:00:00-07:00</updated>
   <id>http://jtaby.com/2011/08/11/mobile-web-ubiquity</id>
   <content type="html">&lt;h2&gt;A Lengthy Introduction&lt;/h2&gt;
&lt;p&gt;I was casually browsing my Twitter stream the other day, and someone posted a link to a blog post on &lt;a href="http://doctyper.com/"&gt;doctyper.com&lt;/a&gt; which when loaded, made me realize another downside to imitate native UIs in the mobile web.&lt;/p&gt;
&lt;p&gt;I should make it clear first, that I don&amp;#8217;t intend to pick on doctyper or its developer, it just happens to be popular enough that I stumbled upon it. Everything I say here is general enough to apply to almost all native-imitation-style mobile web apps.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s what I saw when the page finished loading:&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/mobile-web-ubiquity/doctyper.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;My first problem with this came up when the content started rendering and I tried to scroll. Because doctyper uses custom, Javascript-based scrolling (A topic I discuss in more detail &lt;a href="http://jtaby.com/2011/07/01/the-next-generation-of-mobile-web-apps.html#chasing_own_tail"&gt;here&lt;/a&gt;) and because the javascript hadn&amp;#8217;t finished parsing and executing, my touches weren&amp;#8217;t captured. Instead, the page scrolled as-is and the top and bottom black site bars along with the content all static and moving together. I released my finger, tried again, and it finally kicked in.&lt;/p&gt;
&lt;p&gt;Not a problem native developers have to deal with.&lt;/p&gt;
&lt;p&gt;The second problem came up when I started scrolling. I don&amp;#8217;t know about you, but I don&amp;#8217;t like small, confined spaces. And on this site, I felt very claustrophobic. To see what I mean, let&amp;#8217;s deconstruct the screenshot into its various elements. Labels on the left represent the component that drew them, and the labels on the right show their pixel height:&lt;/p&gt;
&lt;p class="no-highlight"&gt;&lt;img src="/resources/mobile-web-ubiquity/doctyper_deconstructed.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Of the 960 pixels of real estate, &lt;strong&gt;520&lt;/strong&gt; were used for content. In other words,  46% of the space was information and visual clutter that had nothing to do with the content.&lt;/p&gt;
&lt;p&gt;Sometimes web developers seem to be more concerned with the frame than the painting. Haven&amp;#8217;t we learned anything from Microsoft?&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/mobile-web-ubiquity/microsoft-word-crazy.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p class="subtext"&gt;Image courtesy of &lt;a href="http://www.pcadvisor.co.uk/news/software/106226/in-pictures-25-years-of-microsoft-word/?pn=3"&gt;pcadvisor.co.uk&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;The Assumption&lt;/h2&gt;
&lt;p&gt;My assumption is that people who design and develop these native-imitation style mobile web apps are doing so in the void of MobileSafari, ignoring the ubiquity of the web. The whole point of building a web app is to leverage its strengths. One the main strengths is the web&amp;#8217;s ubiquity.&lt;/p&gt;
&lt;p&gt;The ubiquity of the web means you can&amp;#8217;t guess where and how people will be using your web app. The best you can do is come up with a flexible design language that will adapt to screen sizes, form factors, and input mechanisms. Unless you&amp;#8217;re building a hybrid app – combining web views within native wrappers – where you can presume the dimensions and access points, designing for a specific form-factor/use-case will indubitably lead to situations like the one discussed earlier.&lt;/p&gt;
&lt;h2&gt;The Addendum&lt;/h2&gt;
&lt;p&gt;Having said all that, some of you may be wondering why you would build an app-like experience on the mobile web at all. I &lt;em&gt;did&lt;/em&gt; just spend 400 words telling you why it was a bad idea afterall. Well, let me tell you about another experience I recently had with the mobile web.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/mobile-web-ubiquity/twitter.png" alt="" /&gt;&lt;/p&gt;
&lt;p class="subtext"&gt;A screenshot of the mobile Twitter app, running inside of Campfire.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://daringfireball.net"&gt;John Gruber&lt;/a&gt;, being the fan of &lt;a href="http://twitter.com/counternotions"&gt;@counternotions&lt;/a&gt; that he is, linked to one of his tweets recently. As I was browsing the feed, the mobile Twitter app loaded and I was pleasantly surprised. &lt;sup class="footnote"&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt; I was expecting the basic &lt;span class="caps"&gt;HTML&lt;/span&gt; page to load that showed the tweet, the person&amp;#8217;s avatar, and a couple of buttons. Instead, a rich UI was loaded which let me fave the tweet, see the conversation leading to it, and quickly switch over to my main timeline. 15 minutes later, I realized that I was still in the embedded web view of Reeder, lost in a sea of poop jokes and kittens.&lt;/p&gt;
&lt;p&gt;The takeaway is, I was under-promised and over-delivered, and that&amp;#8217;s what we ought to aim for. Mobile web apps should delight our users, not frustrate them.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/QcMC53NV4-Q" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/08/11/mobile-web-ubiquity.html</feedburner:origLink></entry>
 
 <entry>
   <title>The Fallacy of Modern Web Development</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/hVsa1XoPlbo/fallacy-of-modern-web-development.html" />
   <updated>2011-08-01T00:00:00-07:00</updated>
   <id>http://jtaby.com/2011/08/01/fallacy-of-modern-web-development</id>
   <content type="html">&lt;p&gt;Please note that I&amp;#8217;m writing this without any proof-reading. This is pure stream-of-consciousness.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;iCloud.com was just announced. That&amp;#8217;s pretty awesome: iCloud&amp;#8217;s web apps include some pretty amazing interactions. If you haven&amp;#8217;t seen them, get a developer account and log in. You should do that now, the rest of this blog post assumes you&amp;#8217;ve seen them. iCloud is pretty fuckin&amp;#8217; amazing: The animations are incredible, the interactions are buttery, and the UI is polished as possibly could be. Having praised the iCloud suite of applications, one thing worth noting is: They prove that a buttery-smooth UI is not impossible to build on the web.&lt;/p&gt;
&lt;p&gt;iCloud is tangential the the point of this blog, but it highlights a point I want to make: People are surprised and impressed that the web stack is capable of implementing the interactions which iCloud implements. We as web developers ought to be embarrassed about that. It shouldn&amp;#8217;t be a magical surprised that a good, no-compromise UX is possible on the web.&lt;/p&gt;
&lt;p&gt;Everyone expects Apple to release software that is far and beyond the level of sophistication and polish that we are accustomed to, but we shouldn&amp;#8217;t be surprised that a technical achievement is possible which we previously thought wasn&amp;#8217;t. My hypothesis is that we as web developers are so entrenched in our trees, we can&amp;#8217;t see the forest. Every javascript developer is developing their own hot little javascript micro-framework or even fully-developer mature framework to one part of the web development story or another. I call bullshit. As far as I&amp;#8217;m concerned, we&amp;#8217;re all chasing our tails trying to solve the same damned problem over and over again. People are somehow susceptible to false benefits which are easy to preach, but hard to verify. I say: Stop worrying about kilobytes, and start worrying about web developers being oblivious to the capabilities of the web.&lt;/p&gt;
&lt;p&gt;I could spend an entire blog post outlining the fallacies of micro-frameworks and niche solutions, but I feel like Apple has already proven many of my points: Take a look at the iPod. Not only has the iPod achieved market dominance in its segment, it has also maintained that dominance long enough for the entire market segment to become irrelevant. There are many reasons for the iPod&amp;#8217;s success, but the one I think is worth highlighting in this conversation is its ecosystem. An iPod without iTunes is like a human body without blood. Why don&amp;#8217;t we Web Developers learn this lesson?&lt;/p&gt;
&lt;p&gt;There are more &lt;span class="caps"&gt;MVC&lt;/span&gt; based frameworks than I can count. Since SproutCore 2.0 has started establishing its namesake with bindings support and the observer layer, it seems like every single new javascript framework ships with the same live-updating support. This isn&amp;#8217;t an apologetic SproutCore blog post though, I could spend an entire blog post telling you why all these framework developers are wasting their time and chasing their own tails, but the point is: The people developing these clones are really smart, but they&amp;#8217;re not building anything worthwhile.&lt;/p&gt;
&lt;p&gt;It shouldn&amp;#8217;t be a surprise to people what you can do with &lt;span class="caps"&gt;CSS&lt;/span&gt; 3D Transformations. At this point, that&amp;#8217;s well understood and well documented. It&amp;#8217;s like somebody being surprised that mixing peanut-butter and jelly with some bread creates a tasty combination. What should be a surprise is what happens when you build a fully-integrated solution on top of it. Instead of developing more redundant &lt;span class="caps"&gt;MVC&lt;/span&gt; frameworks, we need to coalesce our energy on a few proven solutions.&lt;/p&gt;
&lt;p&gt;Native developers don&amp;#8217;t have this problem. You never hear of widespread news when a native developer finds out that if you call methods on  UIImagePickerController then you magically get access to the device&amp;#8217;s camera, but it&amp;#8217;s common-place to find out that people exposing and using the intricacies of CSS3 transforms are creating incredible feats of UX.&lt;/p&gt;
&lt;p&gt;We need to cut this shit out. I don&amp;#8217;t care how small your microframework is. Bandwidth isn&amp;#8217;t the problem. If you think a 5kb framework is preferable to a 7kb framework, your are bat-shit insane and patently wrong. There is no &amp;#8220;maybe he has a point&amp;#8221;. No, it&amp;#8217;s black-and-white. File size isn&amp;#8217;t the problem, code-size is. If you string-wrap your code, your OK. Don&amp;#8217;t listen to people who tell you otherwise, they&amp;#8217;re lying to you (though probably not intentionally).&lt;/p&gt;
&lt;p&gt;A JavaScript-based &lt;span class="caps"&gt;MVC&lt;/span&gt; framework is only a small part of the solution, the same way an iPod is a small part of the digital music solution. A proper, scalable backend along with all the services and add-ons that make up a server stack are required to create an ecosystem. But that still doesn&amp;#8217;t quite cover the whole story: The stack not only has to exist (Nokia, &lt;span class="caps"&gt;RIM&lt;/span&gt;, Microsoft), but it also has to be tightly integrated and seamless (Apple).&lt;/p&gt;
&lt;p&gt;Partly as a disclaimer, and partly as supporting evidence, I should make it clear that I work at Strobe Inc. We&amp;#8217;re the first people to really build an end-to-end solution for web development. Lots of other developers are working on solving certain problems in the domain, but none are providing a full-stack, integrated solution like we are. Strobe is sponsoring projects like bpm, sproutcore, and the strobe platform to once-and-for-all solve the problem of developing web application from the ground up. I strongly believe in what we&amp;#8217;re doing, which is why I&amp;#8217;m spending time to make sure we do it, but the point is that the rest of us should stop wasting time and start moving our platform together.&lt;/p&gt;
&lt;p&gt;We have a gem on our hands: Let&amp;#8217;s stop arguing about who has the better hammer and let&amp;#8217;s start chiseling it into a beautiful piece of jewelry.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/hVsa1XoPlbo" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/08/01/fallacy-of-modern-web-development.html</feedburner:origLink></entry>
 
 <entry>
   <title>Building the Next Generation of Mobile Web Applications</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/R9HlZCXMJFE/the-next-generation-of-mobile-web-apps.html" />
   <updated>2011-07-01T00:00:00-07:00</updated>
   <id>http://jtaby.com/2011/07/01/the-next-generation-of-mobile-web-apps</id>
   <content type="html">&lt;p&gt;All mobile web apps today suck. Some mobile web apps come close to being good, like &lt;a href="http://www.google.com/mobile/mail/"&gt;Gmail&lt;/a&gt; and &lt;a href="http://blog.twitter.com/2011/05/better-app-for-your-mobile-browser.html"&gt;Twitter&lt;/a&gt;, while some come &lt;em&gt;really&lt;/em&gt; close, like &lt;a href="http://apps.ft.com/ftwebapp/"&gt;The Financial Times&lt;/a&gt; and &lt;a href="http://37signals.com/svn/posts/2761-launch-basecamp-mobile"&gt;Basecamp&lt;/a&gt;. But all the examples fall short one way or another: Gmail&amp;#8217;s scrolling is unnatural, Twitter hides the browser&amp;#8217;s location bar, Financial Times is riddled with flashing/jittering/scrolling bugs, and Basecamp jumps when you tap on an item. For every one of these examples, there are 10 worse offenders I can point to, but they all share the same essential mistake: They all use the browser as an emulator of native apps. Trying to replicate the native experience on the web is a fool&amp;#8217;s errand, and leaves users confused. To move ahead, the web needs to play to its strengths.&lt;/p&gt;
&lt;p&gt;First, I&amp;#8217;ll highlight the overarching problems with the current fleet of mobile web apps, then I&amp;#8217;ll lay a framework for building the next generation of amazing mobile web applications.&lt;/p&gt;
&lt;h3 id="double_chrome"&gt;Problem: Double-chrome&lt;/h3&gt;
&lt;p&gt;&lt;img src="/resources/mobile-web-apps/double_chrome.PNG" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Consider that screenshot from Google+: There are three back buttons. What do you think will happen if I click the browser&amp;#8217;s back button? Will it take me &amp;#8220;Home&amp;#8221;? or will it take me to the previous app? What will happen if I click the &amp;#8220;Nearby&amp;#8221; button? What about the &amp;#8220;Home&amp;#8221; button? Now let&amp;#8217;s say I clicked on the &amp;#8220;Incoming&amp;#8221; link at the top right. What do the buttons do now? The answer is, the browser&amp;#8217;s Back button will take me to the previous website, while the &amp;#8220;Home&amp;#8221; back button will take me to the main Google+ page, and the &amp;#8220;Nearby&amp;#8221; button will take you nearby. Once you click on a post, the browser&amp;#8217;s back button and the button that will replace the &amp;#8220;Home&amp;#8221; button will do the same thing, but the &amp;#8220;Nearby&amp;#8221; button won&amp;#8217;t. This lack of consistency and predictability is endemic of mobile web apps. This is a  problem that native applications don&amp;#8217;t usually have to deal with.&lt;/p&gt;
&lt;p&gt;The counter-argument goes: If you make the user believe they&amp;#8217;re in a native application, they will expect to have a back button in the top-left. Most of the time, this means having a navigation bar that is fixed to the top of the viewport. In reality, that argument makes the assumption that people are using the web app on iOS (navigation bars don&amp;#8217;t exist on Android), and that they forget they&amp;#8217;re in a web browser. Even assuming the argument is correct, it implies that the cost of learning the back gesture the first time outweighs the cost of having to make a decision on which back button to tap on every single subsequent page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Browsers provide a persistent back button at all times that is impossible to get rid of. They also provide a title bar – which admittedly, isn&amp;#8217;t persistent – but also provides a reliable way of telling your users where they are. Mobile web apps today suffer from platform-specific, ambiguous elements. Give the user their 50 pixels back.&lt;/p&gt;
&lt;h3 id="chasing_own_tail"&gt;Problem: Chasing your own tail&lt;/h3&gt;
&lt;p&gt;iOS has not had support for overflow-auto nor position:fixed until iOS 5. Instead, people &lt;a href="http://uxebu.com/blog/2010/04/27/touchscroll-a-scrolling-layer-for-webkit-mobile/"&gt;resort&lt;/a&gt; &lt;a href="http://cubiq.org/iscroll"&gt;to&lt;/a&gt; &lt;a href="http://joehewitt.github.com/scrollability/"&gt;elaborate&lt;/a&gt; &lt;a href="http://www.azoffdesign.com/overscroll"&gt;hacks&lt;/a&gt; to achieve the same fixed-bar-at-the-top UI of navigation controllers and tab controllers on native iOS apps described in the earlier section. If you&amp;#8217;re ever used a web app that used that UI, you&amp;#8217;ve probably noticed very quickly how unusual and weird the scrolling behavior is.&lt;/p&gt;
&lt;p&gt;Scrollability is the best of the bunch, but it&amp;#8217;s still not perfect, and it never will be perfect. The proper solution is the &lt;a href="http://johanbrook.com/browsers/native-momentum-scrolling-ios-5/"&gt;browser&amp;#8217;s solution&lt;/a&gt;. You obviously couldn&amp;#8217;t have used that feature before iOS 5, but my point is that web applications shouldn&amp;#8217;t have a fixed bar along the top anyway, obviating the need for a scrolling hack (except on iPad for multi-pane UIs. That&amp;#8217;s a technical limitation Scrollability is a good solution for). Moreover, for the scrolling hack to work, the scrollable area had to capture touches, which means when user scrolls to the top of the page, they get the scroll-bounce instead of getting access the address bar. For example, if you go to twitter&amp;#8217;s mobile web app, you have to know to tap the title bar to scroll to the top of the page and reveal the address bar. &lt;sup class="footnote"&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt; My uncle Bob doesn&amp;#8217;t know that tapping on the title bar scrolls his view to the top, so he&amp;#8217;s essentially stuck in the app.&lt;/p&gt;
&lt;p&gt;The fundamental problem is that people are trying to emulate as best they can what a bunch of engineers did at Apple 4 years ago. Apple can change interactions, behavior, and widgets between versions, and everyone who&amp;#8217;s trying to emulate them, has to continue playing an endless game of catch-up.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Once you eliminate the double-chrome problem and the fixed-navigation-bar problem, you eliminate a lot of the issues that make mobile web apps terrible.&lt;/p&gt;
&lt;h3 id="cross_platform"&gt;Problem: Forgetting what the web is about&lt;/h3&gt;
&lt;p&gt;Mobile web app developers seem to have forgotten that the web is inherently cross-platform. That&amp;#8217;s the whole point of the web: Ubiquitous access to information. What&amp;#8217;s the point of building a mobile web app if you&amp;#8217;re only targeting iOS users? If you are targeting multiple platforms, why are you forcing the iOS UI on non iOS users? The navigation bar with a back button does not exist on Android, users won&amp;#8217;t be expecting it, so save yourself the 50 pixels of screen real estate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Build a UI and UX that is platform-agnostic.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Now that we&amp;#8217;ve outlined some of the problems of the existing fleet of mobile web apps, let&amp;#8217;s analyze how to build the next generation.&lt;/p&gt;
&lt;h3 id="build_when_it_makes_sense"&gt;Build a mobile web app when it makes sense&lt;/h3&gt;
&lt;p&gt;Not every app is a suitable candidate for the mobile web. It&amp;#8217;s important to analyze the strengths of the web and see if your application stands to benefit from them:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;No installation:&lt;/strong&gt; The barrier to entry for a new user to your app is essentially zero. As soon as a user has expressed interest (by clicking on a link), they have instant access to it. This quality is essential for certain classes of applications that require either an impulsive action, or a trial. If your app needs to get viral, it needs to be a mobile web app. There are counter examples: Instagram, Angry Birds, etc. However, instagram still needs to build a scaled back web page to share with people, and in the case of Angry Birds, they had to build different versions for every platform (and ultimately, the web). I&amp;#8217;m using Angry Birds here as an example for the virality argument, clearly, I don&amp;#8217;t think Angry Birds should ship as a mobile web app today.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;URLs:&lt;/strong&gt; This one goes hand-in-hand with the previous benefit. The fact that you have a &lt;span class="caps"&gt;URL&lt;/span&gt; to an application means you can a) encode the current state in the &lt;span class="caps"&gt;URL&lt;/span&gt;, and b) send that application in its current state to anyone in the world, on any device or platform. If your app stands to benefit from share-ability, it needs to be a mobile web app.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Auto update:&lt;/strong&gt; Mobile web app users are always using the latest version of your application. You can ensure 100% penetration of new features and bug fixes almost instantly (allowing time for caches to expire). If your application needs timely security fixes or a/b testing or iterative user feedback, it needs to be a mobile web app.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Cross-Platform:&lt;/strong&gt; Most people aren&amp;#8217;t on iOS. Nor are they on a Mac. Those users represent real people, with real jobs, real bank accounts, and real user needs. The web is the only example of a wildly successful, healthy cross device and form-factor platform. If you app needs to reach a wide audience, it needs to be a mobile web app.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notice how I didn&amp;#8217;t mention performance. Performance on the web needs to only be good enough to deliver a great UX, it doesn&amp;#8217;t need to be infinite. If you were instead building an oscilloscope app for the iPhone that needs to analyze large amounts of data quickly, please don&amp;#8217;t build it as a mobile web app.&lt;/p&gt;
&lt;h3 id="uncanny_valley"&gt;Uncanny Valley&lt;/h3&gt;
&lt;p&gt;Bill Higgins &lt;a href="http://billhiggins.us/blog/2007/05/17/the-uncanny-valley-of-user-interface-design/"&gt;wrote&lt;/a&gt; in May 2007:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So I’d recommend that if you’re considering or actively building Ajax/&lt;span class="caps"&gt;RIA&lt;/span&gt; applications, you should consider the Uncanny Valley of user interface design and recognize that when you build a “desktop in the web browser”-style application, you’re violating users’ unwritten expectations of how a web application should look and behave. This choice may have significant negative impact on learnability, pleasantness of use, and adoption. The fact that you can create web applications that resemble desktop applications does not imply that you should; it only means that you have one more option and subsequent set of trade-offs to consider when making design decisions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rasmus Lerdorf, the creator of &lt;span class="caps"&gt;PHP&lt;/span&gt;, once gave a talk to us at The University of Michigan where he was talking about performance. He gave us an anecdote from his time at Yahoo! where they asked users to use Yahoo! Mail and Gmail and asked them to rate which one was faster and which was slower. Although Yahoo! Mail was faster at a technical level, the users said Gmail was faster. His hypothesis was that users compared gmail&amp;#8217;s performance to Hotmail, but Yahoo Mail&amp;#8217;s performance to Outlook/Mail.app. The takeaway is, by copying a different platform&amp;#8217;s UX, the users had a mental model that did not match what they were using. I don&amp;#8217;t know the accuracy of the anecdote (I&amp;#8217;m recalling it from two years ago), but I think the point holds true today.&lt;/p&gt;
&lt;p&gt;Web developers today use iOS as a starting point for every mobile web initiative. It&amp;#8217;s a great platform, I don&amp;#8217;t blame them, but iOS is only one of the platforms the web supports. On Android/WebOS, most of iOS&amp;#8217;s interactions don&amp;#8217;t make sense, on iOS, if they&amp;#8217;re slightly off, they&amp;#8217;ll break the illusion to the user. It&amp;#8217;s a no-win situation. The Web has achieved cross-platform dominance by not imposing a platform-specific UI on multiple platforms.&lt;/p&gt;
&lt;p&gt;The Financial Times web app does a very good job of this. It doesn&amp;#8217;t feel like an iOS-specific app, and scales well to multiple platforms.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/mobile-web-apps/financial_times.jpeg" alt="" /&gt;&lt;/p&gt;
&lt;p class="subtext"&gt;Image courtesy of &lt;a href="http://www.macrumors.com/2011/06/07/financial-times-wont-give-apple-a-cut-drops-ios-for-web-app/"&gt;macrumors.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This view may seem contradictory to you if you&amp;#8217;re familiar with my work. I&amp;#8217;ve been involved with the &lt;a href="http://www.sproutcore.com/"&gt;SproutCore&lt;/a&gt; project for some time now first building desktop-like web apps, and now building a new UI layer for mobile devices. SproutCore&amp;#8217;s mission has been (until the recent 2.0 release) to build desktop-like applications on the web. That argument makes a bit more sense on the desktop: Most desktop computers share a keyboard, mouse, and across the different operating systems, most interactions will map from one to another. On mobile platforms, that&amp;#8217;s not the case, the variety between platforms is huge, and sometimes, input devices exist that don&amp;#8217;t on other platforms (trackball, physical keyboard, hardware-based gestures, etc.) Furthermore, desktop browsers are much, much more capable than their mobile counterparts. That&amp;#8217;s not to say that in a couple of years when mobile browsers get fast, that uncanny valley will no longer be an issue. After all, although SproutCore (and &lt;a href="http://cappuccino.org/"&gt;Cappuccino&lt;/a&gt;) delivered very strong solutions, neither nor developers flocked to use them.&lt;/p&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;The web platform on the desktop is much more capable than its mobile counterpart. For a while now, we&amp;#8217;ve been able to build &lt;a href="http://www.apple.com/mobileme/news/2010/10/new-mobileme-calendar-now-available-to-all-members.html"&gt;incredibly complex&lt;/a&gt;, compelling UIs on the web with no compromises. Desktop browsers are much better today at compatibility than they were before, and we have much better debugging tools.&lt;/p&gt;
&lt;p&gt;On the other hand, developing mobile web applications today is akin to developing a web application on the desktop in 2004. The saving grace is that the pace of progress on today&amp;#8217;s mobile devices is far, far faster than it was on the desktop. iOS 5 on an iPad 2/iPhone 4 is ready for the mobile web, Android isn&amp;#8217;t (but that&amp;#8217;s a topic for another post). The next generation of mobile devices (and worst-case scenario, the one after) will catch up to iPad 2/iPhone 4 and the mobile web will be ready to kick some ass.&lt;/p&gt;
&lt;hr /&gt;
&lt;p style="vertical-align:middle;" class="footnote" id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; position:fixed in iOS 5 behaves correctly: When you reach the top of the scrollable area, the fixed bar moves down to reveal the address bar&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/R9HlZCXMJFE" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/07/01/the-next-generation-of-mobile-web-apps.html</feedburner:origLink></entry>
 
 <entry>
   <title>Why I joined Strobe</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/YachhBmppTQ/why-i-joined-strobe.html" />
   <updated>2011-06-16T00:00:00-07:00</updated>
   <id>http://jtaby.com/2011/06/16/why-i-joined-strobe</id>
   <content type="html">&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;One should not pursue goals that are easily achieved. One must develop an instinct for what one can just barely achieve through one&amp;#8217;s greatest efforts.&amp;#8221;&lt;br /&gt;
- Einstein&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Three weeks ago I quit my job at Apple and joined &lt;a href="http://www.strobecorp.com"&gt;Strobe Inc.&lt;/a&gt; as a full-time engineer. My job is to start work on a new project under the SproutCore 2.0 umbrella called SproutCore UI. The goal of the project is to provide a UI layer for building complex, app-like experiences on the web.&lt;/p&gt;
&lt;p&gt;When I was trying to decide which company to join, I had the mother of all first-world-problems: I had to choose between multiple amazing offers from amazing companies with amazing people. During the process of deciding where to go, Einstein&amp;#8217;s quote played a part in shaping my decision. Of all the choices, I decided to join Strobe for its combination of ambition, people, and focus. All qualities I think are essential for a company&amp;#8217;s success.&lt;/p&gt;
&lt;h3&gt;Ambition&lt;/h3&gt;
&lt;p&gt;Strobe is attempting to provide a platform for web developers to build, deploy, and maintain amazing web apps. It&amp;#8217;s no small task and involves multiple moving parts coming together, but the promise is great. If Strobe succeeds, the web will be a better place. The task isn&amp;#8217;t simply to build the &amp;#8220;Heroku for ____&amp;#8221;, rather, it&amp;#8217;s to change the way people think about architecting and building applications, and to set the tone for how the mobile web will evolve.&lt;/p&gt;
&lt;p&gt;I never want to question the impact of what I&amp;#8217;m working on. I never want to feel like I&amp;#8217;ve settled for something, nor that I&amp;#8217;m content with my current situation. I found a company trying to achieve the improbable in Strobe. When I told people about what Strobe was trying to do, I was faced with skepticism regarding the challenges it faced. That skepticism served as a validation to me: Don&amp;#8217;t try to do the doable, try do the impossible.&lt;/p&gt;
&lt;h3&gt;People&lt;/h3&gt;
&lt;p&gt;I work &lt;a href="http://twitter.com/#!/okito"&gt;with&lt;/a&gt; &lt;a href="https://github.com/carllerche"&gt;some&lt;/a&gt; &lt;a href="http://tomdale.net/"&gt;brilliant&lt;/a&gt; &lt;a href="http://yehudakatz.com/"&gt;people&lt;/a&gt; at Strobe. Not only is everyone accomplished, but they are also humble, approachable, and friendly. I knew most of the people in the engineering team before I joined, so I knew what I was getting myself into. Regardless, it&amp;#8217;s much different in the trenches. &lt;a href="http://www.joelonsoftware.com/items/2011/04/28.html"&gt;Nobody at Strobe eats lunch alone&lt;/a&gt;. No uncertainties go unquestioned, no statements go unheard, and no ideas go un-vetted.&lt;/p&gt;
&lt;p&gt;There are a few reasons why that played a role in my decision to join Strobe: Firstly, it allows me to absorb an immense amount of technical knowledge from people much smarter than I am. Secondly, it provides me with unprecedented access to the web community. To affect change at scale, I believe you need to not only have the will, but also the means. At Strobe, I believe that we have the means to change things for the better. Finally, I believe that the type of people you work with can have a dramatic effect on the happiness and the quality of work I produce, and I&amp;#8217;m confident that my coworkers at Strobe will bring out the best in me.&lt;/p&gt;
&lt;h3&gt;Focus&lt;/h3&gt;
&lt;p&gt;The most important lesson I learned from my time at Apple is focus. I&amp;#8217;ve seen large companies flail and waste their time and energy in vain, I&amp;#8217;ve seen teams break apart because of a lack of direction, and I&amp;#8217;ve seen driven people grow complacent because of a lack of vision.&lt;/p&gt;
&lt;p&gt;Late last year, I got a chance to spend a day working at etsy&amp;#8217;s offices in Brooklyn. I was taken aback by the focus of their team, and the do-or-die attitude that I sensed in their office. I had the same sense talking to the different people at Strobe, and it has turned out to be very true.&lt;/p&gt;
&lt;p&gt;At Strobe, everyone knows what we&amp;#8217;re building, why we&amp;#8217;re building it, and who we&amp;#8217;re building it for. This laser-like focus ensures that talent isn&amp;#8217;t wasted, and resources are put to good use.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;I&amp;#8217;m writing this at 11 PM on a Thursday. The office is full, and everyone is excited. There&amp;#8217;s a sense of urgency in the air, and everyone is working towards a single end-goal. I live for moments like this. Everyone on the engineering team understands what&amp;#8217;s at stake, and believes that we are in a position to deliver the best solution.&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t know how everything will play out, but what I do know is that everyone involved will work their butts off and whatever we do produce will have an impact. There&amp;#8217;s no way for it not to.&lt;/p&gt;
&lt;p&gt;Gruber recently &lt;a href="http://daringfireball.net/linked/2011/06/08/campus"&gt;linked to a quote&lt;/a&gt; that rang very true to me:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Make no little plans. They have no magic to stir men&amp;#8217;s blood and probably themselves will not be realized. Make big plans; aim high in hope and work, remembering that a noble, logical diagram once recorded will never die, but long after we are gone will be a living thing, asserting itself with ever-growing insistency. Remember that our sons and grandsons are going to do things that would stagger us. Let your watchword be order and your beacon beauty. Think big.&amp;#8221;&lt;br /&gt;
- Daniel Burnham&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I can&amp;#8217;t wait to come to work tomorrow.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/YachhBmppTQ" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/06/16/why-i-joined-strobe.html</feedburner:origLink></entry>
 
 <entry>
   <title>Google Chrome - Epilogue and Reader Feedback</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/iASe7lmmX_E/google-chrome-reader-feedback.html" />
   <updated>2011-06-07T00:00:00-07:00</updated>
   <id>http://jtaby.com/2011/06/07/google-chrome-reader-feedback</id>
   <content type="html">&lt;p&gt;I got a lot of great feedback from my previous post higlighting why I hated using Chrome yet continued doing so. The feedback ranged from the dismissive to the supportive. In the process, some readers highlighted good and bad things about Chrome I missed that I wanted to highlight in this follow-up post.&lt;/p&gt;
&lt;p&gt;Before I get into the feedback though, there were a couple of points I wanted to expand on:&lt;/p&gt;
&lt;hr /&gt;
&lt;h4 style="vertical-align:middle;"&gt;On the status bar&lt;/h4&gt;
&lt;p&gt;When I wrote the blog post, my complaint about the status bar mirrored that of the search bar: It overlayed the contents of the page. That presented other problems, which had to have their own solutions. When it comes to the status bar, my suggestion wasn&amp;#8217;t to go the Safari route by making it a permanent bar (which in my opinion is inferior), but that the status bar as a whole is a useless relic from the olden browsers.&lt;/p&gt;
&lt;p&gt;Having had a bit of time to think about it, I think a solution would be to remove the status bar altogether and instead place the hovered-url in the address bar itself. The address bar (or omnibox, as it&amp;#8217;s called in Chrome parlance), provides the context of the current and future location of the page.&lt;/p&gt;
&lt;p&gt;The assumption I&amp;#8217;m making is that people use the status bubble to see what &lt;span class="caps"&gt;URL&lt;/span&gt; a link will take them to. By placing the hovered-url in the address bar, you also eliminate a mental step the user has to go through: Instead of hover, look at the bottom left, click, and then look up at the address bar, you just hover, look at the address bar, and click to commit the action. Moreover, you eliminate a confusing element from your browser!&lt;/p&gt;
&lt;hr /&gt;
&lt;h4 style="vertical-align:middle;"&gt;On the search bar&amp;#8217;s behavior&lt;/h4&gt;
&lt;p&gt;There seemed to be a bit of confusion regarding what I was suggesting when I complained about Chrome&amp;#8217;s search bar. My complaint was that it overlays the contents of the website, not that it was inlined to the window. In contrast, Safari&amp;#8217;s Search-in-Page UI is far superior in my opinion, since it is still inlined to the page, but it shifts the contents of the page down as it reveals itself. The separate window for searching the contents of a page was a terrible idea and I&amp;#8217;m glad it&amp;#8217;s largely history at this point.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4 style="vertical-align:middle;"&gt;On Chrome Develepor Tools&amp;#8217; non-native toolbar&lt;/h4&gt;
&lt;p&gt;Wes Campaigne wrote to highlight a bug he &lt;a href="http://code.google.com/p/chromium/issues/detail?id=44350"&gt;filed over a year ago&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The reason I decided to include this comment here because it highlights an aspect of Chrome which I think is the root cause of a lot of issues. Specifically:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It is not as easy as it might seem &amp;#8211; we are talking about dragging native window by the tabcontents content. I think in Safari, toolbar is transparent and we are dragging by the window itself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Chrome is a cross-platform browser and shares a lot of code between its Windows, Linux, and Mac variants. To achieve that goal, they have to fake a lot of native behavior in their cross-platform components. What&amp;#8217;s interesting about this though, is that I checked out the Chrome codebase and as far as I can tell, Chromium (the open-source codebase for Chrome) uses a shared component but the UI layer is built specifically for each platform.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4 style="vertical-align:middle;"&gt;Chrome&amp;#8217;s open-tab behavior&lt;/h4&gt;
&lt;p&gt;Chris Karalus writes to highlight Chrome&amp;#8217;s new-tab behavior. If you open a new tab, Chrome intelligently places that new tab adjacent to the current one. This creates a natural grouping of related tabs with no explicit user action. This is UX at its best: Interpret the user&amp;#8217;s intent, and let the UI adapt to it.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4 style="vertical-align:middle;"&gt;On the download bar&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://news.ycombinator.com/item?id=2603853"&gt;callahad on Hacker News wrote&lt;/a&gt; :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Actually, in OS X, the Chrome icon in the dock has a small pie chart overlay during downloads that indicates both the number of pending downloads as well as the aggregate progress of all downloads. If your dock is hidden, you can quickly and easily check the progress by hitting Cmd-Tab. In Windows 7, the &amp;#8220;tile&amp;#8221; in the Windows &amp;#8220;Dock&amp;#8221; fills from left to right, like a progress bar, to show the aggregate status of downloads. You can also click on the in-progress download, dismiss the dialog, and the file will open once the download completes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h4 style="vertical-align:middle;"&gt;On the preferences pane&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://news.ycombinator.com/item?id=2603853"&gt;callahad again from Hacker News&lt;/a&gt; :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;you can actually link to specific pages and panels. Though this doesn&amp;#8217;t help you find a preference in the first place, it does make communicating the location of known preferences much simpler.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h4 style="vertical-align:middle;"&gt;On integration with OS X&lt;/h4&gt;
&lt;p&gt;Kurt Landrus writes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The one feature missing in Chrome and Firefox that keeps me in Safari, is the ability to drag or copy Rich Text from the browser to another app like text edit or MacJournal, Chrome and Firefox only copy plain text. I use this all the time for research.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;The response I&amp;#8217;ve received seems to suggest that a lot of people weren&amp;#8217;t aware of any of these issues. The post also seems to have generated a healthy debate regarding the merits of my arguments and their objectivity. Whether you agree with my complaints or not, I think it&amp;#8217;s important to take a critical look at the software we use every day.&lt;/p&gt;
&lt;p&gt;On a separate note, it seems like the Chrome team has &lt;a href="https://twitter.com/#!/paul_irish/status/76537070876758016"&gt;taken notice&lt;/a&gt; of the complaints and there are been bugs submitted to track those issues. Hopefully some good will come out of my ranting!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/iASe7lmmX_E" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/06/07/google-chrome-reader-feedback.html</feedburner:origLink></entry>
 
 <entry>
   <title>Google Chrome - Why I Hate It And Continue To Use It</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/XqKMWlrAqnE/google-chrome-why-i-hate-it-and-continue-to-use-it.html" />
   <updated>2011-05-31T00:00:00-07:00</updated>
   <id>http://jtaby.com/2011/05/31/google-chrome-why-i-hate-it-and-continue-to-use-it</id>
   <content type="html">&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; striked-through a reference to the search bar overlapping search results. &lt;a href="http://littlebigdetails.com/post/6000057345/chrome-if-a-result-is-behind-the-search-form-it"&gt;It doesn&amp;#8217;t do that&lt;/a&gt;. (thanks to everyone who let me know).&lt;/p&gt;
&lt;p&gt;This is the third time I have tried to use Chrome. The first two attempts lasted two days before I uninstalled it and went back to the comfort of Safari. Every time I use it, I end up &lt;a href="http://twitter.com/#!/jtaby/status/72782341659045888"&gt;venting&lt;/a&gt; my frustrations on twitter and face the inevitable backlash from my Chrome-loving followers. My problems with Chrome always revolved around its UI and UX, and this post will highlight the reasons I reached my conclusions.&lt;/p&gt;
&lt;p&gt;First, I&amp;#8217;ll highlight the things that Chrome gets right. Credit where credit&amp;#8217;s due, and all that.&lt;/p&gt;
&lt;h2&gt;The Good&lt;/h2&gt;
&lt;p&gt;My current attempt to use Chrome as my default browser is much more successful than the previous ones. I&amp;#8217;ve been using it for just over a week now and have finally gotten over the initial hump of disappointment. My hypothesis is that every time I try to use Chrome, I end up interacting with the browser itself for two days and not really using it to browse the internet. Once I got past the UI issues, I found Chrome to be a fine browser.&lt;/p&gt;
&lt;h3&gt;Unified search/location fields&lt;/h3&gt;
&lt;p&gt;By far, my favorite feature of Chrome is its unification of the search bar and the location bar:&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/unified_bar.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;This combination eliminates a decision every time I search/go somewhere. Not only that, sometimes I find myself switching between a search query and a &lt;span class="caps"&gt;URL&lt;/span&gt; mid-way through typing it!&lt;/p&gt;
&lt;h3&gt;Tab closing behavior&lt;/h3&gt;
&lt;p&gt;This one should already be &lt;a href="http://littlebigdetails.com/post/2925192794/chrome-when-closing-tabs-in-chrome-the-position"&gt;familiar&lt;/a&gt; to you.&lt;/p&gt;
&lt;h3&gt;Tab exposé&lt;/h3&gt;
&lt;p&gt;This is an opt-in feature of the Canary builds which you can enable in &lt;ins&gt;about:flags&lt;/ins&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/tab_expose.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;When I first found out about this feature, I thought it was a gimmicky but I found it works great especially with the trackpad (swipe three fingers down to activate).&lt;/p&gt;
&lt;h3&gt;Recently Closed / Restore session&lt;/h3&gt;
&lt;p&gt;These two go hand-in-hand, basically, being able to restore a session or re-open a recently-closed tab has saved my butt a few times and I appreciated the feature.&lt;/p&gt;
&lt;h3&gt;Developer Tools&lt;/h3&gt;
&lt;p&gt;The Chrome team has added some amazing debugging and inspecting tools to the webkit inspector (and they broke a bunch more, but we&amp;#8217;ll get to that later). I find myself much more productive when debugging my web apps in Chrome vs. Safari.&lt;/p&gt;
&lt;h3&gt;The Update Process&lt;/h3&gt;
&lt;p&gt;&amp;#8230;or lack thereof. The fact that Chrome sends you tiny diffs and updates its binary is amazing on a technical and UX level. It completely blurs the line between native and web app and I strong-heartedly stand behind this. More apps should do this and someone should release a framework that simplifies it.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 style="vertical-align:middle;"&gt;The Bad&lt;/h2&gt;
&lt;p&gt;This is a list of what bugs me about Chrome. I will admit that on their own, a lot of these are tiny issues, but in aggregate, they form a sloppy browser. Death by a thousand cuts.&lt;/p&gt;
&lt;h3&gt;Lack of &lt;span class="caps"&gt;RGB&lt;/span&gt; Anti-Aliasing&lt;/h3&gt;
&lt;p&gt;Take a look at this zoomed-in screenshot of the New Tab page:&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/bw_anti_aliasing.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Notice how it&amp;#8217;s using Black &amp;amp; White anti-aliasing? My guess is that they have&lt;br /&gt;
the text on a hardware-accelerated layer and not setting a background color on it, which causes the text to lose the anti-aliasing.&lt;/p&gt;
&lt;p&gt;Look what happens when I give it a &lt;ins&gt;background-color: white;&lt;/ins&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/rgb_anti_aliasing.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Why this is something the Google engineers don&amp;#8217;t do is beyond me. This happens in multiple places throughout the UI, not just the New Tab page.&lt;/p&gt;
&lt;h3&gt;Terrible &lt;span class="caps"&gt;PDF&lt;/span&gt; font-rendering&lt;/h3&gt;
&lt;p&gt;Chrome uses a non-native &lt;span class="caps"&gt;PDF&lt;/span&gt; viewer. That isn&amp;#8217;t an inherently bad thing, you can be better than the native alternative, but this is anything but. Compare the text in the picture below between Safari&amp;#8217;s &lt;span class="caps"&gt;PDF&lt;/span&gt; viewer and Chrome&amp;#8217;s &lt;span class="caps"&gt;PDF&lt;/span&gt; viewer.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/pdf_font.png" alt="" /&gt;&lt;/p&gt;
&lt;h3&gt;The Downloads Page&lt;/h3&gt;
&lt;p&gt;This one is a double-whammy. In Chrome, the downloads page opens in a separate tab, as opposed to a separate window (like Safari, Firefox, etc. all do).&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/download_page.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s my problem with this: Because the downloads window is a tab within the same Chrome window, they needed to add extra UI to show you the progress of your downloads are you browse. The way they do this is using the Downloads bar:&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/download_bar.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;This bar eats up 43px of screen real-estate in the browser. If you wanted to reclaim your space, you can&amp;#8217;t monitor the status of your downloads. If you don&amp;#8217;t hide it, it stays visible long after all the downloads are done.&lt;/p&gt;
&lt;p&gt;This is a solution to a problem that shouldn&amp;#8217;t exist. By making the downloads manager a separate window, you can monitor it while you browse. Not only that, but you can view individual progress of your downloads vs. the aggregate.&lt;/p&gt;
&lt;p&gt;You &lt;em&gt;could&lt;/em&gt; tear-off the downloads tab and treat it as a separate window, but not only does that require user action, the UI isn&amp;#8217;t designed to be compact, so you still can&amp;#8217;t make the window small and get meaningful information.&lt;/p&gt;
&lt;h3&gt;The Title Bar&lt;/h3&gt;
&lt;p&gt;Because the tabs live in the title bar, and because the rest of the chrome (note the lowercase c) is not-draggable, the effective draggable area in Chrome is a thin 10px strip at the top of the window.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/drag_bar.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve highlighted the section of the window which you can drag. It&amp;#8217;s tiny!&lt;/p&gt;
&lt;p&gt;The second problem with the tab bar being in the title bar is that when you have many tabs open, you have to rely on a tooltip to figure out what the title of the tab is.&lt;/p&gt;
&lt;h3&gt;Massive Preference List&lt;/h3&gt;
&lt;p&gt;When I first started using Chrome, I thought the preferences-as-a-tab was a heinous crime against humanity, however, after using it for a week, I&amp;#8217;ve come to the conclusion that it doesn&amp;#8217;t inherently present a UX problem. What does present a UX problem however, is the massive number of preferences Chrome exposes to the user:&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/preferences.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I recognize that most people won&amp;#8217;t peek &amp;#8220;Under the Hood&amp;#8221; but for most people, the large number of options makes finding what you want hard, even with the search feature.&lt;/p&gt;
&lt;h3&gt;Favicons Everywhere&lt;/h3&gt;
&lt;p&gt;I hesitated at first to list this, thinking it was too subjective. However, upon further consideration, I feel like I can lay out an argument for why it is actually bad.&lt;/p&gt;
&lt;p&gt;Consider this site. I&amp;#8217;ve put a lot of work into making sure that this website is as simple as possible, allowing you to, the reader, to focus as much as possible on the content without any distractions. However, in a typical session in Chrome, you&amp;#8217;re innundated with favicons in the location bar, in the tab bar, and in the bookmarks bar. This not only clutters and cheapens the chrome of the browser itself, but it also distracts from the aesthetics of the article and impacts the motif I&amp;#8217;ve built.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/favicons.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Another problem is that favicons are duplicated on the tab bar and on the bookmarks bar. However, the address bar doesn&amp;#8217;t include them (just has that globe icon). This means that you end up seeing the same favicon multiple times unnecessarily, adding to the clutter.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/multiple_favicons.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;While we&amp;#8217;re on the topic of bookmarks. Notice that &amp;#8220;Other Bookmarks&amp;#8221; button? It&amp;#8217;s empty. there&amp;#8217;s the &amp;#8220;»&amp;#8221; button next to it, that shows me the &amp;#8220;other bookmarks&amp;#8221; which I can&amp;#8217;t see because they don&amp;#8217;t fit, but &amp;#8220;Other Bookmarks&amp;#8221; apparently means something else. I assume it means regular bookmarks (not on the bookmarks bar), but I couldn&amp;#8217;t figure out how to add a page to that list.&lt;/p&gt;
&lt;h3&gt;Search Field&lt;/h3&gt;
&lt;p&gt;The search field covers the content of the site, if you &lt;del&gt;were searching and a match was under the field, or you&lt;/del&gt; wanted to click a link/button under the search field, you&amp;#8217;re out of luck.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/search.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;In the case of a web app with a toolbar (This screenshot shows MobileMe, but the same UI model exists in most web apps), the search field actually covers the main parts of the UI, you have to dismiss it before you can use the app!&lt;/p&gt;
&lt;h3&gt;Status Bar&lt;/h3&gt;
&lt;p&gt;The status bar can be in one of three states: Bottom left, hanging off the window if it fits, or on the bottom-right. As you move your mouse in the bottom left corner, the status bar will move and jump around erratically.&lt;/p&gt;
&lt;p&gt;This is a video showing the problem. (h.264 mov)&lt;/p&gt;
&lt;video src="/resources/chrome-good-bad-ugly/status_bar.mov" controls&gt;
&lt;p&gt;Your browser does not support the video tag. You should probably not be reading this blog post.&lt;/p&gt;
&lt;/video&gt;
&lt;h3&gt;The New Tab Page&lt;/h3&gt;
&lt;p&gt;The list of tabs is horizontal, instead of vertical, there&amp;#8217;s not enough space to read the title, and it&amp;#8217;s hard to quickly and visually see what page is what.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: In the Canary builds, there&amp;#8217;s an option in about:flags to enable an experimental Tab Page which is much better.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/bad_tab_page.png" alt="" /&gt;&lt;/p&gt;
&lt;h3&gt;The Tab Bar&lt;/h3&gt;
&lt;p&gt;Again, because the tab bar is in the title bar, if you have a lot of tabs open, you end up having to hunt for the tab you want, and you can&amp;#8217;t read the title of the tab you&amp;#8217;re on.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/tab_bar.png" alt="" /&gt;&lt;/p&gt;
&lt;h3&gt;Loading UI&lt;/h3&gt;
&lt;p&gt;When a new page/tab is loading, the only indication is a small spinner in the tab. I continuously find myself wondering whether or not Chrome is doing something or not.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/loading.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Can you tell at a glance whether this site is loading or not? (By glancing at the chrome, most sites don&amp;#8217;t have a giant &amp;#8220;Loading&amp;#8221; UI in the middle of the page.)&lt;/p&gt;
&lt;h3&gt;Lack of Attention-to-Detail throughout&lt;/h3&gt;
&lt;p&gt;Everywhere you look, things are mis-aligned, and broken. Here are a couple of examples:&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/broken_gradient.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Broken gradient in the toolbar of the Developer Tools&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/weird_selection.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Not only is this using ugly and non-standard menus, but the first item remains curiously selected.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/bad_menu.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;There is a highlighted item in this menu, can you find it? Neither can I.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve counted three different menu styles in Chrome. The bookmark bar menu, the contextual menu in the bookmarks manager, and the customized native one in the Tools menu. This creates a confusion among users as the three menus behave slightly differently.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/text_overlay.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Notice how the error icon overlaps filter list in the Network tab of the inspector.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/weird_sorting.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;To change the sorting, you have to click on a header of a column (no indication that it&amp;#8217;s clickable), and then select from a drop down. Who came up with this one?&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/resize_handle.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;When you open a new tab and go to a page with a scrollbar, it overlaps the resize handler.&lt;/p&gt;
&lt;h3&gt;The Network Tab&lt;/h3&gt;
&lt;p&gt;The Network Tab is an addition to the webkit inspector that still hasn&amp;#8217;t made sense to me. Before it was introduced, The Resources tab was where you go to browse the&amp;#8230;resources (js, css, html, xhr, etc) of your page and inspect the response/request headers. Now, you can access the same information in both the Resources tab and the Network tab in different UIs. The Resources tab doesn&amp;#8217;t require a refresh, but the Network tab does.&lt;/p&gt;
&lt;p&gt;The Network tab is also one of three ways you can view the contents of a file. Imagine an email app that has three different places to show you the list of emails in your inbox, in the same exact format, in three different places of the app.&lt;/p&gt;
&lt;p&gt;To add insult to injury, the Network tab is the only place you can view the size/time statistics of your application, but you can&amp;#8217;t view aggregate data. If someone could explain to me why the Network tab exists, I would be grateful.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/network_tab.png" alt="" /&gt;&lt;/p&gt;
&lt;h3&gt;Non-native behavior, Native look&lt;/h3&gt;
&lt;p&gt;Go to the developer tools, notice how it looks like it has a unified toolbar? Funny thing about that is, you can&amp;#8217;t actually drag anywhere other than the title bar. Again, I&amp;#8217;ve highlighted the area of the toolbar that&amp;#8217;s clickable.&lt;/p&gt;
&lt;p&gt;&lt;img src="/resources/chrome-good-bad-ugly/dev_tools_drag.png" alt="" /&gt;&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;It&amp;#8217;s been just over a week by now, and I continue to use Chrome. It may seem hypocritical, but the combination of search and address bar and the rate of iteration keep me hooked. I think it&amp;#8217;s a bit like gambling, I keep using it with the hope that tomorrow all these problems will be fixed. As an anecdote, Google announces things like &lt;a href="http://blog.chromium.org/2011/05/chrome-developer-tools-put-javascript.html"&gt;memory inspection&lt;/a&gt; that keep my interest in Chrome high. I feel like there&amp;#8217;s a lesson here for other projects, maybe it deserves its own blog post.&lt;/p&gt;
&lt;p&gt;As I said previously, a lot of these issues are small, but they add up to a broken experience and lots of little frustrations. I expect a lot of people to tell me that they don&amp;#8217;t mind a lot of these problems, or that a lot of these problems are not in fact, problems. Finally, I also realize some of the problems tend to be subjective, but you came looking for my opinion, and I opined :)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/XqKMWlrAqnE" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/05/31/google-chrome-why-i-hate-it-and-continue-to-use-it.html</feedburner:origLink></entry>
 
 <entry>
   <title>What I Learned From Releasing My First Open Source Project</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/6oLGZSxXsc8/what-i-learned-from-releasing-my-first-open-source-project.blog.html" />
   <updated>2011-05-30T00:00:00-07:00</updated>
   <id>http://jtaby.com/2011/05/30/what-i-learned-from-releasing-my-first-open-source-project.blog</id>
   <content type="html">&lt;p&gt;Yesterday was a roller coaster ride. I woke up in the morning, fleshed out a quick &lt;span class="caps"&gt;README&lt;/span&gt; file, took a screenshot and a screencast, and launched my very first open source project. The project is called &lt;a href="https://github.com/jtaby/Waldo"&gt;Waldo&lt;/a&gt; now, but it released under the name &amp;#8220;VimAck&amp;#8221;, and it was under that name that it hit the &lt;a href="http://news.ycombinator.com/item?id=2597166"&gt;front page&lt;/a&gt; of Hacker News.&lt;/p&gt;
&lt;p&gt;In the meantime, The repository has 105 watchers, I&amp;#8217;ve merged three pull requests, I&amp;#8217;ve implemented 2 new features, and also released two new versions. All in the span of 20 hours. Like I said, roller coaster ride.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve had some time to think about my experience overnight, and I&amp;#8217;ve already had to learn a bunch of lessons I thought I&amp;#8217;d share with you.&lt;/p&gt;
&lt;h2&gt;Be your own QA department&lt;/h2&gt;
&lt;p&gt;When I released version 0.1, the search button was labeled &amp;#8220;Button&amp;#8221;. I had shown the app to 3 friends before releasing it, but everyone assumed I would change it before release. I even took a screenshot/cast with it and even published it live! I wouldn&amp;#8217;t have even noticed had it not been for a &lt;a href="https://twitter.com/appden/status/74942643670491137"&gt;friend on twitter&lt;/a&gt;. Basically, what happened was that I assumed it worked for the simple case I was developing it with and was so focused on getting it to work I forgot to actually change the label.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve gotten better at with version 0.3. Before release, I go through both the installation, setup, and usage process, as well as the upgrade and usage process. The only person you can trust is yourself and that&amp;#8217;s the only way you can ensure everything is running smoothly.&lt;/p&gt;
&lt;p&gt;Something I do want to work on though, is automated testing. This is my first real Cocoa project and I&amp;#8217;m not familiar with how testing is done, and it&amp;#8217;s something I have to learn.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Takeaway&lt;/strong&gt;: Rely on your own tests to ensure that things are running, and do it all before each release.&lt;/p&gt;
&lt;h2&gt;Choose a name wisely, and stick to it&lt;/h2&gt;
&lt;p&gt;VimAck, the name I released under, was chosen as a working title, and I was so involved in building the first version and caught up in the feedback it released, I forgot to change it.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a terrible name. I couldn&amp;#8217;t ever remember whether it was VimAck or AckVim, there was already a similar vim plugin called ack.vim, and it just sounded bad.&lt;/p&gt;
&lt;p&gt;But here&amp;#8217;s the problem with renaming a released project: People have already forked the old repository, links all over are pointing to the old repository, and Sparkle has problems updating to a different app name!&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve decided to take the hit early, after all, there were only 7 forker and 80 watchers at the time, and it&amp;#8217;s better to do it soon rather than get stuck with a terrible name in the long run.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Takeaway&lt;/strong&gt;: Changing the project&amp;#8217;s name is costly, consider and reconsider your project&amp;#8217;s name before launch.&lt;/p&gt;
&lt;h2&gt;Lower the barrier to contribution&lt;/h2&gt;
&lt;p&gt;In my opinion, one of the most rewarding aspects of open source software is receiving contributions from the community. A pull request is both a validation that you have created something of value to other people, and that you have created an ecosystem that encourages other developers to pitch in.&lt;/p&gt;
&lt;p&gt;For example, &lt;a href="http://github.com/zef"&gt;zef&lt;/a&gt; came up with the great idea of auto-installing the vim plugin on launch. That was something I hadn&amp;#8217;t thought of myself. &lt;a href="http://github.com/ashchan"&gt;ashchan&lt;/a&gt; did the work to make Waldo show up as a status menu item. That is something I had wanted to do, but didn&amp;#8217;t know how.&lt;/p&gt;
&lt;p&gt;However, you can&amp;#8217;t expect people to come up with contribution ideas themselves, which is why I added a &amp;#8220;Roadmap&amp;#8221; section to the &lt;span class="caps"&gt;README&lt;/span&gt; on Waldo and outlined the upcoming features. I also commented the most code-heavy files in the project and outlined to people how they can contribute.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Takeaway&lt;/strong&gt;: Do as much work as you can to streamline the contribution process to your users.&lt;/p&gt;
&lt;h2&gt;Your first release should be a full package&lt;/h2&gt;
&lt;p&gt;The first release was really only for me to show off my weekend project. What I didn&amp;#8217;t anticipate was 100 people to watch it, and 120 people to download it. The problem with releasing what was essentially a demo, is that it wasn&amp;#8217;t a full package. What I mean by package, is that it not only has support for the core set of features, but it also has a mechanism to update, an icon, a web presence, a way for people to contribute, and a way for people to file bugs.&lt;/p&gt;
&lt;p&gt;Github takes care of most of those problems. Github is truly one of the best things to happen to open source software. I don&amp;#8217;t think it&amp;#8217;s hyperbolic to say that the world of open source would look a lot different without it. What I didn&amp;#8217;t do, however, was include support for &lt;a href="http://sparkle.andymatuschak.org/"&gt;Sparkle.framework&lt;/a&gt; which meant that for people who wanted to upgrade to VimAck 0.2, they have to know that there&amp;#8217;s a new version, and they have to manually download it.&lt;/p&gt;
&lt;p&gt;To add insult to injury, the renaming of the project from VimAck to Waldo meant that the upgrade mechanism doesn&amp;#8217;t work. Hopefully nobody will face these issues anymore and everything will be smooth sailing from here on forth.&lt;/p&gt;
&lt;p&gt;It still doesn&amp;#8217;t have an icon, but that&amp;#8217;s because I haven&amp;#8217;t come up with a good idea for one, but would love to have someone contribute one for me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Takeaway&lt;/strong&gt;: Provide a complete package to your users, not just a demo.&lt;/p&gt;
&lt;h2&gt;Be upfront with your users&lt;/h2&gt;
&lt;p&gt;The problems with Sparkle and with the renaming caused a lot of headache. For one, a pull requests was broken and was tough to merge, people who forked had bad remote URLs, and people had to upgrade manually from 0.1 to 0.2. As a user, this experience sucks, and there&amp;#8217;s no way around it. As the care-taker of the repo, I felt like my trust with the contributors was broken. To amend it, I messaged everyone who submitted a pull request and told them what happened, and I also set up a placeholder &lt;span class="caps"&gt;README&lt;/span&gt; on the old &lt;a href="http://github.com/jtaby/VimAck"&gt;VimAck repo&lt;/a&gt; with instructions to people who forked on how to update their repository.&lt;/p&gt;
&lt;p&gt;I felt like the communication is especially important in the open source space and it helped people figure out what was happening with the project. Communication is essential since you have people in different parts of the world trying to touch the same codebase and having a clear narrative is essential.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Takeaway&lt;/strong&gt;: When you make a mistake, &amp;#8217;fess up to it, and provide remedies.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The project is only a day old, and I continue to learn a lot about project management, community building, and communication in general. I hope you can take away a thing or two from my experience with open source. It is incredibly satisfying to see people appreciate and use your software and I thank everyone who helped fork/contribute and those who downloaded!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/6oLGZSxXsc8" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2011/05/30/what-i-learned-from-releasing-my-first-open-source-project.blog.html</feedburner:origLink></entry>
 
 <entry>
   <title>Reflexions on my 23rd Year</title>
   <link href="http://feedproxy.google.com/~r/majd-taby/~3/xZ19VILU_m8/reflexions-on-my-23rd-year.html" />
   <updated>2010-12-10T00:00:00-08:00</updated>
   <id>http://jtaby.com/2010/12/10/reflexions-on-my-23rd-year</id>
   <content type="html">&lt;p&gt;&lt;em&gt;This post is written by me, to my future me, in a public way. Hopefully I won&amp;#8217;t regret this decision&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Hey Majd, this is your 23 year old self. Let me tell you about this year just in case you need a refresher. Hopefully you&amp;#8217;ll have done this every birthday and if you don&amp;#8217;t, what the fuck is wrong with you? This shit will come in handy when you write an autobiography about yourself.&lt;/p&gt;
&lt;p&gt;22 was a good year. Following up the best summer of my life (Apple class of 2009 representin&amp;#8217;!), I crammed 3 semesters into 2 so I can get the fuck out of school, graduate, and start my life. Winter 2010 was a busy semester, but it was also the semester I started drawing again, founded the iPhone Developers Club, was president of &lt;span class="caps"&gt;CSE&lt;/span&gt; Scholars, and took some awesome courses. Mostly, I spent most of the semester waiting for graduation. May 1st came, Obama spoke, and I walked.&lt;/p&gt;
&lt;p&gt;After graduation, I started waiting to start my job. The team was so much fun last summer and I learned so much, I couldn&amp;#8217;t wait to start. May 18th came along, and I head off to Cupertino. Two days later, I found a room in a house in the Castro and decided to move into it. I wonder what this experience will seem like to you in hindsight.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m 7 months into my job now and it&amp;#8217;s a blast. My coworkers are my best friends and my managers are incredible. The work is challenging, frustrating, fun, and unpredictable, just the way I like it. I&amp;#8217;m half way through losing 80 pounds (at 45 right now), and it has already begun to change my life.&lt;/p&gt;
&lt;p&gt;So to recap: When I was 22, I graduated, moved to San Francisco, lost 45 pounds, released some of my best code yet. Like I said, it was a good year.&lt;/p&gt;
&lt;p&gt;Now that the &amp;#8220;what&amp;#8221; is covered, I&amp;#8217;ll dig deeper. Here are things that I&amp;#8217;m thinking about right now.&lt;/p&gt;
&lt;p&gt;Wait, before I start. I want you to remember this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Here’s to the crazy ones. &lt;br /&gt;
The misfits. The rebels. The troublemakers. &lt;br /&gt;
The round pegs in the square holes. &lt;br /&gt;
The ones who see things differently. &lt;br /&gt;
They’re not fond of rules. &lt;br /&gt;
And they have no respect for the status quo. &lt;br /&gt;
You can quote them, disagree with them, glorify or vilify them. &lt;br /&gt;
About the only thing you can’t do is ignore them. &lt;br /&gt;
Because they change things.&lt;br /&gt;
They push the human race forward. &lt;br /&gt;
And while some may see them as the crazy ones, we see genius. &lt;br /&gt;
Because the people who are crazy enough to think they can change the world, &lt;br /&gt;
are the ones who do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;School. What it meant, what came of it.&lt;/h3&gt;
&lt;p&gt;Was school a waste of time? I haven&amp;#8217;t decided yet. On the one hand, I know for a fact that had I not gone to school, I would&amp;#8217;ve accomplished a lot more professionally. On the other, I really value the friendships I built during school, and wouldn&amp;#8217;t trade them for anything. Besides, I didn&amp;#8217;t end up in a bad place, so maybe it all turned out for the better. The thought of having left Michigan 4 years earlier than I did sounds amazing though.&lt;/p&gt;
&lt;h3&gt;Current Thoughts&lt;/h3&gt;
&lt;p&gt;What is going through my mind right now? Work, weight-loss, and girls, in that order.&lt;/p&gt;
&lt;p&gt;Professionally speaking, work is going great, but I&amp;#8217;m trying to figure out what my next move is. I&amp;#8217;m happy where I am right now, but I realize it&amp;#8217;s not a permanent gig. The more time I spend in the industry, the more I realize how much shit there is out there. Not just that, but how much people don&amp;#8217;t care. I&amp;#8217;m not the most technically impressive engineer, nor do I claim to be. What I am (or, think I am), is a craftsman. In terms of money and success, I&amp;#8217;m starting to realized that I&amp;#8217;m not really after &amp;#8220;the big exit&amp;#8221;. I want to be successful, to be sure. I want my income to satisfy my ridiculous lifestyle and then some, but that doesn&amp;#8217;t require a hundred-million dollar bank account. The reason I say that is because I feel like given a more bounded business, I can focus on making products in a life where money is not a limiting factor. I might be an idiot for thinking that, and I may change my opinion. I want to build products, and sell them.&lt;/p&gt;
&lt;p&gt;When I&amp;#8217;m not working, I&amp;#8217;m primarily thinking about weight-loss. I&amp;#8217;ve lost 45 pounds so far, and I want to lose 35 more. I just started reading The Hacker&amp;#8217;s Diet and it seems to align itself perfectly with my approach to dieting. I&amp;#8217;m thinking of starting some kind of blog where I keep track of my stats and write about how I&amp;#8217;m doing, hoping to influence someone else.&lt;/p&gt;
&lt;p&gt;Thanks to my coworkers who first got me running in the morning before work and biking with them after work, I unintentionally lost 20 pounds, and when I saw the improvements, I kept going. Now that I&amp;#8217;ve gone from shirts XL to Medium, and pants from size 40 to 34, I see the profound ways in which being fit and healthy can affect my life. Biking down a mountain, hiking up a mountain, running in races, these are all new experiences for me. These are all things I couldn&amp;#8217;t have done no matter how hard I tried 7 months ago. When I go shopping now, I don&amp;#8217;t leave depressed, when I go to the gym, I don&amp;#8217;t have to keep holding the towel up as I go to the shower. It&amp;#8217;s the little things. Things that to other people seems completely benign, are completely new experiences for me. Majd, if you gained back the weight, then &lt;span class="caps"&gt;FUCK&lt;/span&gt; &lt;span class="caps"&gt;YOU&lt;/span&gt;! You should first be ashamed, then on a diet.&lt;/p&gt;
&lt;p&gt;Girls. Girls girls girls&amp;#8230;.There aren&amp;#8217;t a lot of Christian Arab girls around here, at least not that I can tell. I guess American girls are cool too, just not the crazy variety. Are you single still? lower your god damned standards! Right now I&amp;#8217;m not &amp;#8220;looking&amp;#8221; to find someone. I&amp;#8217;m waiting to lose the rest of my weight.&lt;/p&gt;
&lt;h3&gt;Attitude&lt;/h3&gt;
&lt;p&gt;Majd, you always look forward, never backwards. When you moved from Sayyidet Al-Farah to &lt;span class="caps"&gt;IISA&lt;/span&gt;, you learned to speak fluent English. When you moved from &lt;span class="caps"&gt;IISA&lt;/span&gt; to Livonia, you picked up web  development. When you moved from Livonia to Ann Arbor, you got a job at Apple. When you moved to Apple&amp;#8230;well I&amp;#8217;m still here, I don&amp;#8217;t know what you did but whatever it is, it better be a step up. Always look ahead.&lt;/p&gt;
&lt;h3&gt;Closing Quote&lt;/h3&gt;
&lt;p&gt;Heed these words, Majd.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There&amp;#8217;s work, and there&amp;#8217;s your life&amp;#8217;s work.&lt;br /&gt;
The kind of work that has your fingerprints all over it.&lt;br /&gt;
The kind of work that you&amp;#8217;d never compromise on.&lt;br /&gt;
That you&amp;#8217;d sacrifice a weekend for.&lt;br /&gt;
You can do that work here.&lt;br /&gt;
People don&amp;#8217;t come here to play it safe.&lt;br /&gt;
They come here to swim in the deep end.&lt;br /&gt;
They want their work to add up to something.&lt;br /&gt;
Something big. Something that couldn&amp;#8217;t happen anywhere else.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Swim in the deep end. Always.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/majd-taby/~4/xZ19VILU_m8" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://jtaby.com/2010/12/10/reflexions-on-my-23rd-year.html</feedburner:origLink></entry>
 
 
</feed>

