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

<channel>
	<title>Mobimeet : ramblings of a grumpy developer-designer-teacher</title>
	<atom:link href="http://www.mobimeet.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mobimeet.com</link>
	<description>ramblings of a grumpy developer - designer - teacher &#124; my art institute of las vegas web design blog</description>
	<pubDate>Tue, 19 Aug 2008 21:03:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Common WordPress Problems</title>
		<link>http://www.mobimeet.com/misc/tricks/common-wordpress-problems/</link>
		<comments>http://www.mobimeet.com/misc/tricks/common-wordpress-problems/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 21:03:11 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[How To]]></category>

		<category><![CDATA[IMD345 UCD III]]></category>

		<category><![CDATA[Tips and Tricks]]></category>

		<category><![CDATA[keywords]]></category>

		<category><![CDATA[metadata]]></category>

		<category><![CDATA[sem]]></category>

		<category><![CDATA[seo]]></category>

		<category><![CDATA[tagging]]></category>

		<category><![CDATA[webdesign]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/?p=458</guid>
		<description><![CDATA[If you happen to use WordPress for your blog (or even as a CMS), you should be aware of some pitfalls that can hurt your SEO rankings.  Many of the theme that you download from various sources might look great but the minute you veer from the classic or default themes, you open the probability [...]]]></description>
			<content:encoded><![CDATA[<p>If you happen to use WordPress for your blog (or even as a CMS), you should be aware of some pitfalls that can hurt your SEO rankings.  Many of the theme that you download from various sources might look great but the minute you veer from the classic or default themes, you open the probability for issues.  Fortunately there&#8217;s some pretty easy solutions depending on your need to improve the visibility.</p>
<p><strong>1. Proper use of &lt;h#&gt; tags</strong><br />
Many themes I&#8217;ve looked at do not use &lt;h1&gt;, &lt;h2&gt; and so forth properly.  Remember that the search engines (and POSH) dictate that the header tags place emphasis on specific information (which should include things like the title, the date of publication or the author).  Comb through the single post and main index templates to make sure there is consistent use of both &lt;h1&gt; and &lt;h2&gt; tags (at the very least, and preferably &lt;h3&gt; as well) and adjust the CSS to get the look and feel you want instead of relying on class-based &lt;div&gt; markup.</p>
<p><strong>2. Too many links on the index page</strong><br />
Two problems here - first, the increase in links (past 40) decreases or dilutes the value of importance placed on the page.  At the very least, push the most important posts on the front page and consider whether or not you need the others.  Second, why are you sending people elsewhere in the first place?  Sure your friends might run a great blog but do you really need 100 listings in your blogroll?  Consider that external links in your posts should not go past 2 each and that you should keep the total number of links as close to 40 as possible.</p>
<p><strong>3. Bad keyword choices</strong><br />
Especially on the main index page, it is critical that you consider your choice of keywords and mold your page to the proper density.  Use a free tool like <a title="Google Keyword Tool" href="https://adwords.google.com/select/KeywordToolExternal" target="_blank">Google&#8217;s Keyword Tool</a> to find ones if you&#8217;re unfamiliar with structuring keywords.</p>
<p><strong>4. Alt and title text</strong><br />
Always, always, always include alt attribute text on images and preferably include a title attribute on links and lists so that search engines know what tags to associate with the image.</p>
<p><strong>5. Unique keywords</strong><br />
Every page in the site should have a) unique titles and b) different keywords.  You may even opt to remove the name of your blog from the page title because in the end it&#8217;s just a vanity thing isn&#8217;t it?  There are several plugins that can help you do this by converting the text and tags on the posts into the keywords and description &lt;meta&gt; elements.</p>
<p><strong>6. Fix your markup</strong><br />
Bad markup is, well, just bad.  This goes for both the HTML as well as the RSS feeds.  By default (the newer versions of) WordPress provides at least 4 places to get the feeds from: www.domain.com/feed/, www.domain.com/comments/feed/, www.domain.com/wp-rss.php, and www.domain.com/wp-rss2.php and you should provide appropriate links to them as needed.</p>
<p><em>Now many of you (all 5 reading this post) are probably asking why I don&#8217;t even follow these rules necessarily and the fact of the matter is that for this blog, I don&#8217;t personally care.  I publish this for information purposes and largely for my students, not really for the public at large.  Should I teach by example, sure I should; but there are many other ways to get this information across, so I do as I wish.</em></p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Ftricks%2Fcommon-wordpress-problems%2F', 'Common+WordPress+Problems')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/tricks/common-wordpress-problems/feed/</wfw:commentRss>
		</item>
		<item>
		<title>All Kinds of, um, stuff.</title>
		<link>http://www.mobimeet.com/soapbox/all-kinds-of-um-stuff/</link>
		<comments>http://www.mobimeet.com/soapbox/all-kinds-of-um-stuff/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 04:32:32 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Soapbox]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/soapbox/all-kinds-of-um-stuff/</guid>
		<description><![CDATA[It&#8217;s been well over a week since I&#8217;ve written anything so first off, let me apologize to the eight people who bother to read my ramblings.&#160; That said, it&#8217;s been a full first half of August.&#160; Between new tasks at my job, some thoughts on social impact on technology, a lot of reading, some new [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been well over a week since I&#8217;ve written anything so first off, let me apologize to the eight people who bother to read my ramblings.&#160; That said, it&#8217;s been a full first half of August.&#160; Between new tasks at my job, some thoughts on social impact on technology, a lot of reading, some new toys on the horizon, and school looming, I&#8217;ve got a lot to get off my chest.</p>
<p>First, I&#8217;ve been neck deep into two threads of development.&#160; On the one side, my department is (finally) being split (appropriately) into two working groups - R&amp;D and Implementation.&#160; The R&amp;D team will (hopefully) continue it&#8217;s digging into the depths of Silverlight, coming up with better and better ways to reap the benefits of the environment and delivery mechanisms.&#160; The Implementation team will be finishing up installation of the Digital Asset Management system amongst other tasks.&#160; On the other side, because of our core focus on Silverlight, I&#8217;ve had to undertake a crash course in Flash CS3 using AS3 for a number of projects and have to say, I like it.&#160; Above everything else, not attaching scripts directly to objects and the flow of the class structure is much better (I know, I know, it was pretty much all there in AS2 but this just all seems more congruent).</p>
<p>NBC&#8217;s 2008 Olympics web site and notably the video delivery was, in my opinion, very well done considering the enormous task at hand.&#160; For Schematic (the web and application designers) I actually have very few complaints - the UI was well thought out and to all the naysayers out there, try architecting a site of that magnitude - it&#8217;s so easy to put something down until you&#8217;ve been on the other side of the coin.&#160; IMHO - the Silverlight experience was about as good as it gets at the moment and for those who keep complaining that Flash is better than Silverlight, maybe it is, but given a 10 year head start, I personally think Flash should be <u>farther</u> ahead than it is.&#160; My only complaint is that the site was doggedly slow.&#160; However, special kudos to Limelight for the rather phenomenal feat in delivering the quantity of content without dying out (for an extremely good introspective, check out this Jason Perlow article &quot;<a href="http://blogs.zdnet.com/perlow/?p=9221">Limelight Networks: Why the Olympics didn&#8217;t &#8216;Melt&#8217; the Internet</a>&quot;).</p>
<p>So in the meantime, I&#8217;ve completely lost my bearings on any of the social networking mire and it tells me one thing &#8230; did I really need it to survive anyway?&#160; I know there is a lot of substance behind the theories in social networking but for the most part, everything I am seeing now is just fluff and marketing - everyone jumping on the bandwagon and trying to leverage UGC to advertise and little else.&#160; However, underneath it all, we are beginning to see the seedlings of the so called Web 3.0 - tagging is starting to become a driving force more than it has in the past, and starting to reach a point where critical mass might actually be possible.</p>
<p>Along those lines, I recommend reading David Weinberger&#8217;s &quot;Everything is Miscellaneous&quot; which deals with the topic of how tagging can remove the need for organization and yet still make things more efficient.&#160; Visionary, though still a way off, I truly think we will see the emergence of smart agents that will handle tasks for us.</p>
<p>Also been finishing Zittrain&#8217;s &quot;<a href="http://www.amazon.com/gp/product/0300124872?ie=UTF8&amp;tag=mobimeet-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0300124872" target="_blank">Future of the Internet</a>&quot; which somehow got terribly boring towards the end, Sipser&#8217;s &quot;Theory of Computation&quot; (for school) and &quot;<a href="http://www.amazon.com/Art-Agile-Development-James-Shore/dp/0596527675/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1219119304&amp;sr=1-1&amp;tag=mobimeet-20" target="_blank">Art of Agile Development</a>&quot; (O&#8217;Reilly).&#160; Maybe I need to lay off the books a bit.</p>
<p>School (as in me finally going back to school to finish my graduate work) starts next week and I am extremely excited and anxious.&#160; I believe there are only 8 in the program and after my experiences at Cornell (you know, the Psych class with 2,000 students, etc) it should be refreshing and interesting.&#160; Not sure how I&#8217;m going to juggle iStream, teaching, MadeByGirl and school but I&#8217;ll take it one day at a time.&#160; Speaking of MadeByGirl - we just made a big big sale to Selfridge&#8217;s in London, so if you happen to be shopping there anytime, we&#8217;d love to see a photo of them in the store.</p>
<p>Hopefully, finances willing, I am going to plunk some coin and pick up the item on my most wanted (and needed) list - the <a href="http://www.dell.com/content/products/productdetails.aspx/laptop_latitude_e4200?c=us&amp;l=en&amp;s=bsd" target="_blank">Dell E4200</a>.&#160; Purportedly being released within the next couple of weeks, it&#8217;s a 2.2 pound, 12&quot; subnote with a solid state drive, magnesium case, and a 19 hour battery life.&#160; Don&#8217;t get me wrong, I love my trusted Latitude D600 (and even Jennifer&#8217;s MacBook Pro) but I think I need some new juice under my fingertips (and not to the extent of my workstation at iStreamPlanet).&#160; On the extended wish list is the HTC Touch Pro though at the moment the details and pricing still seem a bit sketchy despite the unconfirmed Sept 2 release date.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fsoapbox%2Fall-kinds-of-um-stuff%2F', 'All+Kinds+of%2C+um%2C+stuff.')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/soapbox/all-kinds-of-um-stuff/feed/</wfw:commentRss>
		</item>
		<item>
		<title>7 Principles Of Clean And Optimized CSS Code</title>
		<link>http://www.mobimeet.com/misc/tricks/7-principles-of-clean-and-optimized-css-code/</link>
		<comments>http://www.mobimeet.com/misc/tricks/7-principles-of-clean-and-optimized-css-code/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 03:45:28 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[How To]]></category>

		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/tricks/7-principles-of-clean-and-optimized-css-code/</guid>
		<description><![CDATA[[excerpted from SmashingMagazine by Tony White]
Note for my students: especially #s 1, 2 and 6 I&#8217;ve spoken about in class frequently - if you have questions about any of this over the coming week - ASK!
But there are some principles to consider during and after you write your CSS to help keep it tight and [...]]]></description>
			<content:encoded><![CDATA[<p>[excerpted from <a href="http://www.smashingmagazine.com/2008/08/18/7-principles-of-clean-and-optimized-css-code/" target="_blank">SmashingMagazine</a> by Tony White]</p>
<p><em>Note for my students: especially #s 1, 2 and 6 I&#8217;ve spoken about in class frequently - if you have questions about any of this over the coming week - ASK!</em></p>
<p>But there are some principles to consider during and after you write your CSS to help keep it tight and optimized. <strong>Optimization isn&#8217;t just minimizing file size</strong> &#8212; it&#8217;s also about being organized, clutter-free, and efficient. You&#8217;ll find that the more knowledge you have about optimal CSS practices, smaller file size will inevitably come as an direct result of their implementation. You may already be familiar with some of the principles mentioned below, but they are worth a review. Being familiar with this concepts will help you write optimized CSS code and make you a better all-around web designer.</p>
<p>1. Use Shorthand   <br />Using shorthand properties is the single easiest practice you can do to cut down your code (and coding time). There&#8217;s no better time than the present to start this efficient coding practice, or to review it. <code>Margin</code>, <code>border</code>, <code>padding</code>, <code>background</code>, <code>font</code>, <code>list-style</code>, and even <code>outline</code> are all properties that allow shorthand (and that&#8217;s not even an extensive list!).</p>
<p>2. Axe the Hacks   <br />But now we know that using conditional comments to serve <del>hacks</del> correctional declarations for IE6 and IE7 is an accepted practice, even recommended by the Microsoft IE development team. <strong>Using conditional comments</strong> to serve IE-specific CSS rules has the added benefit of serving a cleaner, and therefore smaller, default CSS file to more standards-compliant browsers, while only those browsers that need the hackery daiquri (i.e. IE) will download the additional page weight.</p>
<p>3. Use Whitespace Wisely   <br />Whitespace, including spaces, tabs, and extra line breaks, is <strong>important for readability</strong> for CSS code. However, whitespace does add, however miniscule it may be, to page weight. Every space, line-break, and tab you can eliminate is like having one less character.</p>
<p>4. Prune Frameworks and Resets   <br />If you&#8217;ve chosen to use a CSS framework (including ones you&#8217;ve written yourself), take the time to review the documentation <em>as well as every line</em> of the CSS file. You may find that the framework includes some rules that you don&#8217;t care to use for your current project, and they can be weeded out. This goes for resets as well.</p>
<p>5. Future-proof your CSS   <br />However, I&#8217;m warming up to the idea of <strong>separating layout styles from the rest of the styles</strong>, and giving layout it&#8217;s own file, or at least it&#8217;s own section.</p>
<p>6. Document Your Work   <br /><strong>Documentation, including markup guides and style sheet guides</strong>, is not just for group efforts &#8212; they are just as important for a one-man design team. After all, a year after working on other things, revisiting one of your own projects can feel quite foreign. Your future self might appreciate reminder of how your CSS grid framework is supposed to work, or what pages already have a treatment for a secondary action form button, and it will save you or someone else from appending redundant and unnecessary rules to your CSS.</p>
<p>7. Make Use of Compression   <br />Some great applications have been created to compress and optimize CSS for you, allowing you to serve a human-unreadable but still browser-friendly files that are a fraction of the origional working copies.</p>
<p>[<a href="http://www.smashingmagazine.com/2008/08/18/7-principles-of-clean-and-optimized-css-code/" target="_blank">Read the article in its entirety at Smashing Magazine</a>]</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Ftricks%2F7-principles-of-clean-and-optimized-css-code%2F', '7+Principles+Of+Clean+And+Optimized+CSS+Code')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/tricks/7-principles-of-clean-and-optimized-css-code/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why Twitter Hasn’t Failed: The Power Of Audience</title>
		<link>http://www.mobimeet.com/soapbox/why-twitter-hasn%e2%80%99t-failed-the-power-of-audience/</link>
		<comments>http://www.mobimeet.com/soapbox/why-twitter-hasn%e2%80%99t-failed-the-power-of-audience/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 22:45:45 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Soapbox]]></category>

		<category><![CDATA[audience]]></category>

		<category><![CDATA[social network]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/?p=454</guid>
		<description><![CDATA[[This is a reprint of an excellent article by Gregor Hochmuth for TechCrunch]
Twitter isn’t for everyone, and you may have dismissed the service a long time ago. But regardless of your own use, it’s hard to dismiss the phenomenon itself and the passion of so many that has built up around it.
No matter how long [...]]]></description>
			<content:encoded><![CDATA[<p><strong><em>[This is a reprint of an </em></strong><a title="Why Twitter Hasn’t Failed: The Power Of Audience" href="http://www.techcrunch.com/2008/08/10/why-twitter-hasnt-failed-the-power-of-audience/"><strong><em>excellent article by Gregor Hochmuth for TechCrunch</em></strong></a><strong><em>]</em></strong></p>
<p><a href="None"><img align="right" vspace="3" hspace="3" src="http://www.mobimeet.com/wp-content/uploads/2008/08/2755v2-max-250x250.png" alt="Twitter" width="210" height="49" border="0"/></a>Twitter isn’t for everyone, and you may have dismissed the service a long time ago. But regardless of your own use, it’s hard to dismiss the phenomenon itself and the passion of so many that has built up around it.</p>
<p id="wm_b">No matter how long the outage du jour, <a href="http://www.techcrunch.com/wp-content/uploads/2008/08/facebook-ads-thumbs-updown.png">Twitter</a> users <a href="http://www.techcrunch.com/2008/04/22/twitter-may-not-have-to-care-about-uptime-any-longer/">continue to stay attached</a> to the service despite an ever-changing backdrop of alternatives.<br id="ch7i" /><br id="ch7i2" />Blogging isn’t for everyone either. But unlike blogging, Twitter enjoys a far a greater variety of users — they include people, many people, who would never think of starting a blog and people who would never touch an RSS reader. The 140 character limit is a plus for Twitter, but it isn’t all.<br id="ch7i3" /><br id="ch7i4" /><strong id="es4n2">What explains the Twitter phenomenon then? </strong>What produces the positive feeling and the strong attachment among those who tweet? And moreover: How can other systems learn from this?<br id="mvwk2" /><br id="mvwk3" /><strong id="wm_b0">The answer lies in understanding </strong><strong id="j1bc2">Audience</strong><strong id="znb.">.</strong><br id="ch7i5" />Twitter has a simple premise: You tweet &amp; the message is pushed to your friends. The actual mechanics are slightly different (messages go to everyone who follows you, whether they’re your “friends” or not, assuming your stream is public) — but from a user’s perspective, the circle of receivers consists only of the people they know. Everyone else is part of a faceless crowd that’s hidden behind the follower count.<span id="more-454"></span><br id="ch7i7" /><br id="ch7i8" />This simple premise holds the key to Twitter’s success: <strong id="bbpu2">messages go to a well-defined audience</strong>. In the moment you release a tweet, you <em>know</em> who’s on the line and you have an idea of who can catch a glimpse of your message. @replies are the best illustration for this sense of audience: Even though Twitter is not a point-to-point message delivery system (let alone a reliable one), @replies are sent with the understanding that they will be read by the intended people because they are known to be in the audience. (Imagine a newspaper article that suddenly greeted a specific reader.)<br id="ch7i9" /><br id="ch7i14" /><strong id="szxp2">Blogging on the other hand has no such clearly defined audience.</strong> An aspiring blogger who hasn’t crossed the chasm speaks into the void. Direct feedback can only come in the form of written comments (a relatively high barrier of effort) and it’s diminished by spam and vocal trolls these days.</p>
<p id="k2it0"><a onclick="pageTracker._trackPageview ('/outbound/www.feedburner.com');" href="http://www.feedburner.com/">FeedBurner’s<img id="snap_com_shot_link_icon" class="snap_preview_icon" style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -1128px 0px; MIN-WIDTH: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; MIN-HEIGHT: 0px; LEFT: auto; FLOAT: none; BACKGROUND-IMAGE: url(http://i.ixnp.com/images/v3.42.0.2/theme/silver/palette.gif); VISIBILITY: visible; BORDER-BOTTOM-WIDTH: 0px; MAX-WIDTH: 2000px; PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: top; WIDTH: 14px; MAX-HEIGHT: 2000px; LINE-HEIGHT: normal; PADDING-TOP: 1px; BACKGROUND-REPEAT: no-repeat; FONT-STYLE: normal; FONT-FAMILY: 'trebuchet ms', arial, helvetica, sans-serif; POSITION: static; TOP: auto; HEIGHT: 12px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: none; cssFloat: none" src="http://i.ixnp.com/images/v3.42.0.2/t.gif" alt="" /></a> subscriber count only provides the equivalent of Twitter’s opaque follower count and <a onclick="pageTracker._trackPageview ('/outbound/www.mybloglog.com');" href="http://www.mybloglog.com/">MyBlogLog<img id="snap_com_shot_link_icon" class="snap_preview_icon" style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -1128px 0px; MIN-WIDTH: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; MIN-HEIGHT: 0px; LEFT: auto; FLOAT: none; BACKGROUND-IMAGE: url(http://i.ixnp.com/images/v3.42.0.2/theme/silver/palette.gif); VISIBILITY: visible; BORDER-BOTTOM-WIDTH: 0px; MAX-WIDTH: 2000px; PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: top; WIDTH: 14px; MAX-HEIGHT: 2000px; LINE-HEIGHT: normal; PADDING-TOP: 1px; BACKGROUND-REPEAT: no-repeat; FONT-STYLE: normal; FONT-FAMILY: 'trebuchet ms', arial, helvetica, sans-serif; POSITION: static; TOP: auto; HEIGHT: 12px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: none; cssFloat: none" src="http://i.ixnp.com/images/v3.42.0.2/t.gif" alt="" /></a> didn’t solve this problem either.<br id="k2it1" /></p>
<p id="k2it2">So it’s not surprising that the majority of blogs are abandoned — the most-cited reason being “No one was reading it.” No one might be following your Twitter stream either, but Twitter is designed for network effects to take hold and given the natural reciprocity among groups of friends, it’s likely that most people have at least a handful of followers they know.<br id="ch7i15" /><strong id="szxp3"><br id="ch7i23" />Back to Twitter: Why Audience works</strong><br id="ch7i24" />Twitter works and enjoys such strong attachment because it provides real-time access to a well-defined audience. The backlog of all previous tweets is a guarantee of permanence (you can <a href="http://www.techcrunch.com/2008/07/15/confirmed-twitter-acquires-summize-search-engine/">even search it</a>) and you can catch up on it anytime. As a result, people use Twitter because they have an idea of who will see their lightweight messages and this sense of audience is reinforced by @replies, re-tweets and references in future conversations (online and offline).<br id="ch7i25" /></p>
<p>Designing for the sense of Audience is a powerful tool to create cohesion and a sense of utility among users of a service. This lesson from Twitter can apply to many other services too. But before leaving the current discussion, it’s helpful to look at a service that has missed the full power of Audience so far.<br id="ch7i27" /></p>
<p><br id="ch7i36" /><strong id="rs5.2">Facebook: Designed for Audience? Not so much.</strong><br id="v.oi2" />Facebook isn’t about Audience? That’s ridiculous, you’ll say — so let me clarify. I fully agree that social network profiles are all about self-expression and being seen, but a platform for self-expression isn’t <em id="lfwt2">necessarily </em>designed for the audience that does “the seeing.”<br id="pq3m" /><br id="ch7i38" />Profile Pages on Facebook can have audiences of course, but this requires that users continually roam Facebook to look for news in their network. Facebook realized this limitation and introduced the News Feed. Its intent was to move a user’s “acts and performances” from the stage of the profile page to a single and central stage, a single place for Audience.<br id="pyv2" /><br id="pyv3" /><strong id="wm_b3">Sharing with the News Feed: Did it ever reach my friends?</strong><br id="wm_b4" />Facebook was the first major social network to introduce the News Feed concept, which has since become a standard sauce for stickiness in many places (although not StudiVZ <a id="zzrz" title="surprisingly" href="http://www.mobimeet.com/2008/07/18/facebook-sues-german-social-network-studivz/">surprisingly</a>). But Facebook’s implementation of the News Feed doesn’t capture the full power of designing for Audience: While Twitter distributes every message consistently, Facebook decides algorithmically which update is shown to whom. Algorithmic filtering is nice in theory, but such black-box behavior is simply unpredictable for the user.<br id="a9cb2" /><br id="a9cb3" />“When I post new things, will my friends actually see them?”, one might wonder. And conversely: “Have my friends posted something that I’m not seeing? The news feed is cluttered right now with people I don’t care about.” Anything that’s unpredictable produces a feeling of uncertainty — and that’s never a comfortable feeling.<br id="vi980" /></p>
<p id="vi981">Even with Facebook’s recent attempts to introduce smarter filters, users only have relative means to customize their feed (more of this, less of that). Furthermore, there is mostly just one kind of feedback that users can give on the News Feed: comments. Imagine a concert, in which you could only leave written notes as you left — no clapping, no booing.<br id="v4le2" /></p>
<p>Because users don’t really know who’s listening on Facebook and who isn’t, the platform hasn’t been embraced as a place to publish proactively. Publishing events or photos is mostly push-driven (and generates an email — “you are invited to an event” or “tagged in a photo”). But for everything else you share, do you know if it ever reached your friends?<br id="sk1o2" /><br id="ch7i39" /></p>
<p><strong id="rcmc2">Who capitalized on this gap? FriendFeed.</strong><br id="ch7i40" />It’s the same setup as Twitter, but with more content: You know who’s listening and you choose the people you listen to. A useful premise but it also has a catch: the word “more”. Too much content, too many people — which is exactly the problem that Facebook is trying to address with its algorithmic feed. But what’s a solution then? It’s not the “middle ground” and it has nothing to do with smarter filters.</p>
<p><strong id="vi984">The answer is feedback loops.</strong> But that opens up another discussion. If you’d like to read more, I have a separate post on my website, in which I elaborate on how to <a onclick="pageTracker._trackPageview ('/outbound/www.dotgrex.com');" href="http://www.dotgrex.com/dsp/2008/08/3-loops-of-designing-for-audience/">design for Audience.<img id="snap_com_shot_link_icon" class="snap_preview_icon" style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -1128px 0px; MIN-WIDTH: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; MIN-HEIGHT: 0px; LEFT: auto; FLOAT: none; BACKGROUND-IMAGE: url(http://i.ixnp.com/images/v3.42.0.2/theme/silver/palette.gif); VISIBILITY: visible; BORDER-BOTTOM-WIDTH: 0px; MAX-WIDTH: 2000px; PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: top; WIDTH: 14px; MAX-HEIGHT: 2000px; LINE-HEIGHT: normal; PADDING-TOP: 1px; BACKGROUND-REPEAT: no-repeat; FONT-STYLE: normal; FONT-FAMILY: 'trebuchet ms', arial, helvetica, sans-serif; POSITION: static; TOP: auto; HEIGHT: 12px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: none; cssFloat: none" src="http://i.ixnp.com/images/v3.42.0.2/t.gif" alt="" /></a><br id="z:ij" /><em><br id="z:ij0" /><span style="TEXT-DECORATION: underline"><a id="zt3q" title="Gregor Hochmuth" onclick="pageTracker._trackPageview ('/outbound/www.dotgrex.com');" href="http://www.dotgrex.com/">Gregor Hochmuth<img id="snap_com_shot_link_icon" class="snap_preview_icon" style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -1128px 0px; MIN-WIDTH: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; MIN-HEIGHT: 0px; LEFT: auto; FLOAT: none; BACKGROUND-IMAGE: url(http://i.ixnp.com/images/v3.42.0.2/theme/silver/palette.gif); VISIBILITY: visible; BORDER-BOTTOM-WIDTH: 0px; MAX-WIDTH: 2000px; PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: top; WIDTH: 14px; MAX-HEIGHT: 2000px; LINE-HEIGHT: normal; PADDING-TOP: 1px; BACKGROUND-REPEAT: no-repeat; FONT-STYLE: normal; FONT-FAMILY: 'trebuchet ms', arial, helvetica, sans-serif; POSITION: static; TOP: auto; HEIGHT: 12px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: none; cssFloat: none" src="http://i.ixnp.com/images/v3.42.0.2/t.gif" alt="" /></a></span> is the founder of zoo-m.com Interactive, where he created <a href="http://www.mobimeet.com/2008/05/08/share-your-links-with-mento-weve-got-500-invites/">Mento</a>, <a id="v3tw" title="LaterLoop" href="http://www.mobimeet.com/2008/05/30/laterloop-joins-the-pile-of-bookmarking-apps-with-googles-blessing/">LaterLoop</a> and <a id="d_78" title="other services" onclick="pageTracker._trackPageview ('/outbound/www.zoo-m.com');" href="http://www.zoo-m.com/">other services<img id="snap_com_shot_link_icon" class="snap_preview_icon" style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -1128px 0px; MIN-WIDTH: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; MIN-HEIGHT: 0px; LEFT: auto; FLOAT: none; BACKGROUND-IMAGE: url(http://i.ixnp.com/images/v3.42.0.2/theme/silver/palette.gif); VISIBILITY: visible; BORDER-BOTTOM-WIDTH: 0px; MAX-WIDTH: 2000px; PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: top; WIDTH: 14px; MAX-HEIGHT: 2000px; LINE-HEIGHT: normal; PADDING-TOP: 1px; BACKGROUND-REPEAT: no-repeat; FONT-STYLE: normal; FONT-FAMILY: 'trebuchet ms', arial, helvetica, sans-serif; POSITION: static; TOP: auto; HEIGHT: 12px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: none; cssFloat: none" src="http://i.ixnp.com/images/v3.42.0.2/t.gif" alt="" /></a>. He currently lives in Berlin, Germany, where he worked as an analyst for Hasso Plattner Ventures and has <a id="wrq3" title="written about German startups on TechCrunch" href="http://www.mobimeet.com/2007/05/14/web-2-in-germany-copy-paste-innovation-or-more/">written about German startups on TechCrunch</a>.</em></p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fsoapbox%2Fwhy-twitter-hasn%25e2%2580%2599t-failed-the-power-of-audience%2F', 'Why+Twitter+Hasn%E2%80%99t+Failed%3A+The+Power+Of+Audience')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/soapbox/why-twitter-hasn%e2%80%99t-failed-the-power-of-audience/feed/</wfw:commentRss>
		</item>
		<item>
		<title>7 Essential Guidelines For Functional Design</title>
		<link>http://www.mobimeet.com/soapbox/7-essential-guidelines-for-functional-design/</link>
		<comments>http://www.mobimeet.com/soapbox/7-essential-guidelines-for-functional-design/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 06:26:55 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Good Resources]]></category>

		<category><![CDATA[How To]]></category>

		<category><![CDATA[IMD325 UCD I]]></category>

		<category><![CDATA[IMD345 UCD III]]></category>

		<category><![CDATA[Soapbox]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/soapbox/7-essential-guidelines-for-functional-design/</guid>
		<description><![CDATA[This article from Dustin Wax appeared on Smashing Magazine yesterday and is nothing short of excellent.&#160; Succinct, elemental and basic - as the author states&#8230;
These are the elements of functional design, the process of responding to the needs or desires of the people who will use an item in a way that allows their needs [...]]]></description>
			<content:encoded><![CDATA[<p>This article from <a href="http://www.dustinwax.com/">Dustin Wax</a> appeared on <a href="http://www.smashingmagazine.com/2008/08/05/7-essential-guidelines-for-functional-design/">Smashing Magazine</a> yesterday and is nothing short of excellent.&#160; Succinct, elemental and basic - as the author states&#8230;</p>
<blockquote><p>These are the elements of <strong>functional design</strong>, the process of responding to the needs or desires of the people who will use an item in a way that allows their needs or desires to be met. Functional design is both an outcome and a process. As an outcome, it describes products that work well to perform their assigned tasks; as a process, functional design is a set of practices guided by the principles that produce that positive outcome.</p>
</blockquote>
<p>I&#8217;m not going to bother repeating the article here - please take the time to <a title="7 Essential Guidelines For Functional Design" href="http://www.smashingmagazine.com/2008/08/05/7-essential-guidelines-for-functional-design/">jump over to SM and read it</a>.&#160; However, here&#8217;s a quick synopsis:</p>
<p align="center"><img style="border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: none" height="106" alt="screwdriver - functional design" src="http://www.mobimeet.com/wp-content/uploads/2008/08/screwdriver.png" width="438" border="0" /></p>
<p><strong>1. Consider the product&#8217;s goal</strong>     <br />Determine that <strong>one primary goal</strong> of the site and make sure that everything you do revolves around that fundamental concept.&#160; Every addition you make, every tool you provide, every piece of text you write should be dedicated to that goal.</p>
<p><strong>2. Consider who will be using it</strong>     <br />As JJG proposes, identifying the target audience can be a critical factor simply because most designers either fail to take it into consideration or misjudge it.&#160; Audiences vary and so do their wants, needs, and abilities.&#160; Cater to that need: <strong>a product has to work equally for all its potential users if it&#8217;s to accomplish its goal</strong>.</p>
<p><strong>3. Consider what your audience intends to do with it</strong>     <br />What your audience does may not be what you do.&#160; YOU are not the audience, your users are.&#160; Every user comes with <strong>intention</strong>, learn what those intentions might be.</p>
<p><strong>4. Is it clear how to use it?</strong>     <br />We designer/developers have a tendency to go beserk with our functionality.&#160; Don&#8217;t.&#160; &quot;<strong>Clarity</strong> is the key to functional design&quot;.</p>
<p><strong>5. How does your user know it&#8217;s working?</strong>     <br />Provide <strong>feedback</strong>&#8230;it&#8217;s the only way your user knows that he or she is using it right.&#160; Provide visual cues, highlight the necessary parts.</p>
<p><strong>6. Is it engaging to your users?</strong>     <br />One of JJGs two tenets and the one that I believe is fundamental to all things Web - is it <strong>engaging</strong>.&#160; I harp on it nearly every quarter but I don&#8217;t think many people really see it.&#160; Example: four times this week alone I&#8217;ve seen references to Blackberry&#8217;s as engaging - owners cannot seem to put them down or stop fiddling with them.&#160; Whether its the feel, the interface, the haptics or the information it provides, there is definitively something engaging about them.</p>
<p><strong>7. How does it handle mistakes?</strong>     <br />JJG makes a big point of discussing error handling.&#160; We as dev-igners pretty much think we never make mistakes.&#160; Just because you can run through your web site and never encounter an error doesn&#8217;t mean your user won&#8217;t.&#160; Users make mistakes.&#160; Or more succinctly, your user will not do the same things you do.&#160; How does the site correct, adjust or respond to errors?</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fsoapbox%2F7-essential-guidelines-for-functional-design%2F', '7+Essential+Guidelines+For+Functional+Design')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/soapbox/7-essential-guidelines-for-functional-design/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Making RIA interfaces truly rich</title>
		<link>http://www.mobimeet.com/soapbox/making-ria-interfaces-truly-rich/</link>
		<comments>http://www.mobimeet.com/soapbox/making-ria-interfaces-truly-rich/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 16:00:57 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Soapbox]]></category>

		<category><![CDATA[design]]></category>

		<category><![CDATA[efficient]]></category>

		<category><![CDATA[engaging]]></category>

		<category><![CDATA[interface]]></category>

		<category><![CDATA[silverlight]]></category>

		<category><![CDATA[ucd]]></category>

		<category><![CDATA[ui]]></category>

		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/soapbox/making-ria-interfaces-truly-rich/</guid>
		<description><![CDATA[What truly makes an RIA &#8220;rich&#8221;?  Is it the ability to provide interactivity, or is it the ability to find a new way to present information?  Is it a better mashup of existing APIs or is it a compelling design?  I can&#8217;t say I know the answer, but I can say the journey to find [...]]]></description>
			<content:encoded><![CDATA[<p>What truly makes an RIA &#8220;rich&#8221;?  Is it the ability to provide interactivity, or is it the ability to find a new way to present information?  Is it a better mashup of existing APIs or is it a compelling design?  I can&#8217;t say I know the answer, but I can say the journey to find it is an interesting one.</p>
<p>I find myself in a place I often do, at the interactive design phase of a project - that giddy phase after all the due diligence has been done and we&#8217;re looking for that next great app.  The coders are itching to get started, the client is anxious for the alpha builds.  And here I sit trying to convey all the information and ideas I&#8217;ve aggregated into a unified yet flexible interface.  And just like last time, it once again is for a client bigger than I find comfortable, and feeling as though there is no real answer.</p>
<p>So some basics&#8230;it&#8217;s an internet application - a &#8220;rich&#8221; internet application - designed to deliver a massive video library of both live and on-demand content.  It should also be viral and embeddable.  It has to be lightweight, but it also has to deliver as much engaging interaction while maintaining its efficiency in delivering video (and of course advertising).</p>
<p>So what is it that would make this application truly rich?</p>
<p>I had an interesting discussion with my significant other last week after explaining the dilemma of the project.  She and I have very divergent opinions about internet applications.  Ever the tech-nerd and business strategist, I always look for the efficiency, for what will monetize, for what will create the best business scenario.  For her, a designer, it&#8217;s the utility, the engaging atmosphere that takes precedence over eveyrthing else.  I&#8217;m Windows, she&#8217;s Mac (literally&#8230;in our household it&#8217;s Dell versus Apple).  I&#8217;m Windows Mobile, she&#8217;s iPhone.  I&#8217;m text, she&#8217;s typography, i&#8217;m bits, she&#8217;s color.</p>
<p>In any case, she explained to me that the reason that she preferred the iPhone over her last &#8220;piece of junk&#8221; (a Windows Mobile phone) had little to do with that the applications themselves did anything different, it was that the interaction with the phone simply made it more engaging and thus made it more apt to (continue to) use it.  And that was they key, she said, &#8220;make it engaging and they will stay.&#8221;</p>
<p>Now, my partner already knows a thing or two about traffic and the importance of keeping eyeballs on the content.  She runs her own online store that within 3 months became profitable and runs a blog that pulls in exponentially more traffic than this soapbox.  More than that she understands how to keep her customers interested, happy and loyal.  She demonstrates for me the simplicity of the iPhone app design - not of the unit as a whole, but of the generally consistent visual nomikers and motions shared by all the apps.  She points out the vast difference in providing search boxes that actually instruct, detailed breadcrumb trails that actually do something, and the fact that the system as a whole delivered information efficiently but in a <span style="text-decoration: underline;">fun</span> way.</p>
<p>Any of the 100+ students that have mucked their way through my UCD classes will attest that I harp on two major things in UX design - being efficient and engaging (not principles I came up with myself - thank Jesse James Garrett for that definition).  So what happened that I so easily forgot these principles in trying to lay out this design.</p>
<p>Her comments and demonstration got me thinking.  And thinking.  Which led to some quick drafts, a few poorly drawn sketches, some minor storyboards.  And now I here I am trying to synergize that last little piece of science that will turn my Frankenstein from idea to life.  Through the morass of mapping mashups, social network hooks, video controls, playlists, advertising, viral components and colors, somewhere lies the answer.  Will this one be it?  Will this design be the rage or will it flop?  Hard to tell at this point but I think the ideas are good ones. Coaxing them into coalescing into something bigger than the individual parts is the goal.  Let&#8217;s see if this truly ends up rich.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fsoapbox%2Fmaking-ria-interfaces-truly-rich%2F', 'Making+RIA+interfaces+truly+rich')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/soapbox/making-ria-interfaces-truly-rich/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Multi &#8220;touch&#8221;</title>
		<link>http://www.mobimeet.com/misc/news/multi-touch/</link>
		<comments>http://www.mobimeet.com/misc/news/multi-touch/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 15:37:43 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Internet News]]></category>

		<category><![CDATA[haptics]]></category>

		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/?p=451</guid>
		<description><![CDATA[This is extremely cool looking but I still have to ask &#8230; wouldn&#8217;t your arms get tired after a while?


addthis_pub = 'mobimeet';

]]></description>
			<content:encoded><![CDATA[<p>This is extremely cool looking but I still have to ask &#8230; wouldn&#8217;t your arms get tired after a while?</p>
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="src" value="http://www.youtube.com/v/egAl6sNMaqE&amp;hl=en&amp;fs=1" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/egAl6sNMaqE&amp;hl=en&amp;fs=1" allowfullscreen="true"></embed></object></div>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Fnews%2Fmulti-touch%2F', 'Multi+%26%238220%3Btouch%26%238221%3B')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/news/multi-touch/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What it takes to bring the Olympics to the PC</title>
		<link>http://www.mobimeet.com/misc/news/what-it-takes-to-bring-the-olympics-to-the-pc/</link>
		<comments>http://www.mobimeet.com/misc/news/what-it-takes-to-bring-the-olympics-to-the-pc/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 04:50:14 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Internet News]]></category>

		<category><![CDATA[flash]]></category>

		<category><![CDATA[limelight networks]]></category>

		<category><![CDATA[silverlight]]></category>

		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/what-it-takes-to-bring-the-olympics-to-the-pc/</guid>
		<description><![CDATA[[via BeyondBinary by Ina Fried]
Stage 8H is best known as the place where Saturday Night Live is filmed. This week, though, it&#8217;s been turned into an ad-hoc data center as part of NBC&#8217;s efforts to stream thousands of hours of live Olympic coverage over the Internet.
Instead of the usual crop of comedians, NBC will have [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;">[via <a href="http://news.cnet.com/8301-13860_3-10003752-56.html">BeyondBinary</a> by Ina Fried]</p>
<p>Stage 8H is best known as the place where Saturday Night Live is filmed. This week, though, it&#8217;s been turned into an ad-hoc data center as part of NBC&#8217;s efforts to <a href="http://news.cnet.com/8301-13860_3-10002909-56.html">stream thousands of hours of live Olympic coverage</a> over the Internet.</p>
<p>Instead of the usual crop of comedians, NBC will have dozens of people watching every hour of the games, looking for highlights that it can chop up and make available on-demand. It&#8217;s just one piece of an elaborate arrangement that shuttles the events in Beijing back to the U.S.</p>
<p>From each of the dozens of Olympic venues, a high-definition video feed is delivered over fiber-optic cables to the International Broadcast Center that has been set up in Beijing. A bunch of encoders and Windows Media servers get the video into an Internet-ready format. From there, it travels via satellite to NBC&#8217;s headquarters in New York.</p>
<p>There, NBC actually adds a one-minute delay, allowing its cadre of live bloggers in Stamford, Conn., and elsewhere to write their text and have the video and commentary synchronized. Once ready, it goes from NBC to Limelight Networks, a content delivery network, which has 1,000 servers just for the live events sending the content to various Internet service providers, who then shuttle the content directly to their customers. (See chart below)</p>
<p><img class="alignright" style="float: right; margin: 5px;" src="http://i.i.com.com/cnwk.1d/i/bto/20080731/olympics2_500x318.gif" alt="Bringing live video from Beijing Olympics to your PC" width="500" height="318" />(Credit: Susan Dove/CNET News)</p>
<p><strong>Making it play</strong><br />
Limelight Chief Strategy Officer Mike Gordon said his company is prepared for this to be the biggest live event the Internet has ever seen. &#8220;I would not be surprised at all to get 1 million viewers,&#8221; he said. &#8220;We&#8217;re certainly prepared for whatever the audience turns out to be.&#8221;</p>
<p><img class="alignright" style="float: right;" src="http://i.i.com.com/cnwk.1d/i/bto/20080731/MikeGordon_150x187.JPG" alt="Mike Gordon, Limelight Networks" width="150" height="187" /></p>
<p>Mike Gordon, chief strategy officer, Limelight Networks</p>
<p>(Credit: Limelight Networks)</p>
<p>That said, there is clearly an element of risk in all this, considering NBC&#8217;s history of live Olympic streaming has been limited to broadcasting a single game, the gold medal ice hockey match in Torino, Italy, two years ago.</p>
<p>&#8220;NBC has always taken risks and is always trying to do more than it has in the past,&#8221; said Perkins Miller, the NBC senior vice president in charge of the Internet push. &#8220;It does keep me up at night when I think about streaming 2,200 hours (of live coverage).&#8221;</p>
<p>The massive effort has come together in a remarkably short amount of time. Microsoft&#8217;s deal to power <a href="http://www.nbcolympics.com/">NBCOlympics.com</a> dates back only to January.</p>
<p>NBC had a pretty good idea what they wanted to do and had built some mock-ups of the player prior to deciding to partner with Microsoft.</p>
<p>Initially, they expected to use Adobe&#8217;s Flash, given that is the standard for video delivered over the Internet these days. But, as they began to hash things out with Microsoft during a series of all-day meetings at NBC&#8217;s 30 Rockefeller Plaza headquarters, Microsoft was able to show NBC some ways it could do more <a href="http://news.cnet.com/8301-13860_3-9886517-56.html">using its homegrown Silverlight technology</a>.</p>
<p><a href="http://news.cnet.com/8301-13860_3-9901142-56.html"><strong>Silverlight</strong></a>, Microsoft said, would be key to enabling NBC&#8217;s vision of a &#8220;control room&#8221; in which a viewer could watch multiple live streams at once. <span id="more-449"></span></p>
<p><img class="alignleft" style="float: left;" src="http://i.i.com.com/cnwk.1d/i/bto/20080731/PerkinsMiller_200x266.jpg" alt="Perkins Miller, NBC Universal" width="200" height="266" /></p>
<p>Perkins Miller, senior vice president, NBC Universal</p>
<p>(Credit: NBC)</p>
<p>Even within Microsoft&#8217;s team, though, there was some apprehension of whether it was doable.</p>
<p>&#8220;Can we actually pull this off?&#8221; Senior Technical Evangelist Jason Suess recalled thinking. &#8220;Is the user&#8217;s machine going to be able to maintain four connections at one time?&#8221;</p>
<p>The key, Suess said in an interview at Microsoft headquarters last week, is using an approach known as adaptive streaming in which the player has the ability to customize the bit rate of the video stream based on a computer&#8217;s connection and processing power.</p>
<p>By Valentine&#8217;s Day, they were ready for a test. It was pretty important that the test work out, given that NBC was getting ready to crate up the gear to ship it off to Beijing.</p>
<p>&#8220;That was the first time the player came to life,&#8221; Suess said. &#8220;Obviously the player was extremely crude.&#8221;</p>
<p><strong>Making it pay</strong><br />
One of the last pieces to fall into place was the advertising. Initially, NBC and Microsoft were hoping to be able to insert full video ads into the live streams, but doing so is tough work.</p>
<p>&#8220;You don&#8217;t have any way to pause a live stream,&#8221; Suess said. &#8220;Trying to deliver a video ad on top of that, you hit the limits of a user&#8217;s bandwidth.&#8221;</p>
<p>As of mid-April, they were still struggling with what to do and began considering that perhaps they would have to just rely on companion advertising around the video stream. Then they came up with an idea. Rather than insert full videos into the live streams, what if they stuck a display ad into the video, particularly during dead times in the action.</p>
<p><img class="alignright" style="float: right;" src="http://i.i.com.com/cnwk.1d/i/bto/20080731/Jason_Suess_200x266.jpg" alt="Jason Suess, Microsoft" width="200" height="266" /></p>
<p>Jason Suess, senior technical evangelist, Microsoft</p>
<p>(Credit: Ina Fried/CNET News)</p>
<p>That, approach, which is ultimately what&#8217;s being done, solved several issues. It was less bandwidth-intensive than video ads, but still got the advertiser directly in front of the viewer, all without interrupting any of the coverage. The amount of advertising will vary, Suess said; &#8220;It depends what is happening in the sports. We just wait for a dead space.&#8221;</p>
<p>By early May, NBC made the basic player available on the Internet, using a variety of prerecorded Olympic video, and by early June the enhanced Silverlight player was made public as well. The Olympic Trials, at the end of June, offered the companies and the public a chance for a test drive.</p>
<p>At this point, it&#8217;s come down to a triage of the few remaining known bugs. Each day, the bar is being raised in terms of what is a big enough deal to warrant such a late change. Suess, meanwhile, sent his wife and kids to visit family in New York so he could work 18-hour days.</p>
<p>In an interview last week, Suess said he had been at work until 1 a.m. the night before and gets in every morning by 8 a.m., so he can chat with the folks in Beijing before they sign off for the night.</p>
<p>&#8220;If I am not online and pushing things along, then I am introducing delay,&#8221; Suess said.</p>
<p>An admitted type-A personality, Suess is a stickler for organization&#8211;the kind of guy whose desk is always clean. (His wife would probably use the word &#8220;compulsive,&#8221; Suess said.)</p>
<p>Suess said he hopes things will be enough under control that he can actually watch some of the games, particularly sailing, of which he is a big fan. &#8220;I sure hope so,&#8221; he said. &#8220;When I got involved in this project, that was one of the reasons.&#8221;</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Fnews%2Fwhat-it-takes-to-bring-the-olympics-to-the-pc%2F', 'What+it+takes+to+bring+the+Olympics+to+the+PC')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/news/what-it-takes-to-bring-the-olympics-to-the-pc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Is the web making us illiterate?</title>
		<link>http://www.mobimeet.com/misc/is-the-web-making-us-illiterate/</link>
		<comments>http://www.mobimeet.com/misc/is-the-web-making-us-illiterate/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 06:57:19 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Toolbox]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/is-the-web-making-us-illiterate/</guid>
		<description><![CDATA[[excerpted and modified, via Technically Incorrect by Chris Matyszczyk]
The web is helping our children read more. Or less. Or, well, maybe it depends on what you call reading. Because if it&#8217;s got spelling mistakes or words no dictionary has caught up with yet, then it&#8217;s not really reading, is it?
The New York Times yesterday hosted [...]]]></description>
			<content:encoded><![CDATA[<p>[excerpted and modified, via <a href="http://news.cnet.com/8301-17852_3-10000845-71.html">Technically Incorrect</a> by Chris Matyszczyk]</p>
<p>The web is helping our children read more. Or less. Or, well, maybe it depends on what you call reading. Because if it&#8217;s got spelling mistakes or words no dictionary has caught up with yet, then it&#8217;s not really reading, is it?</p>
<p>The New York Times <a href="http://www.nytimes.com/2008/07/27/books/27reading.html?pagewanted=1&amp;_r=1&amp;ref=technology">yesterday hosted a spirited debate</a> on the subject. Parents, dyslexics, professors, even children chipped in with their muscular views. Subtly showing its hand, the Times made sure the article was a very long one. Because, like many other bastions of journalism and literature, it is a newspaper that chooses to uphold certain standards.</p>
<p>Standards that the immature denizens of Silicon Valley have not so much eroded, but positively assaulted with the deadly weapons of speed, ubiquity and a somewhat fetching disregard for antiquity.</p>
<p>Personally, I would rather be around someone who is curious about the world than someone who believes Mongolia is where retarded children come from. Can anyone truly dispute that the web has given people a greater and more immediate ability to hug a little knowledge?</p>
<p>So it seems that what many critics are concerned about is precisely the kind of knowledge and reading habits children acquire during a surfing expedition. Perhaps one thing the web has exposed is that some so-called works of literature are, frankly, verging on the really quite awful. Just as we have been hyped by burger chains and erectile malfunction cures, we have been hyped by literary guardians. </p>
<p>One tome is essential. Another is a lesser work. But so many are very hard work indeed. When you&#8217;re told something is fabulous and wonderful and stupendous, even when you find it not so, it isn&#8217;t so easy to declare your opinion. </p>
<p>(Look, I&#8217;m sorry, but Eugene O&#8217;Neill&#8217;s plays are turgid tripe. And don&#8217;t get me started on Chekov and James Joyce. There, that&#8217;s better.)</p>
<p>Perhaps there will soon come a time when reading a book for today&#8217;s 12-year-olds will be as arduous as picking up the tiniest Chaucer and seeing if you can get past page one. Just because one generation was inculcated into the 400-page habit doesn&#8217;t mean another can&#8217;t find its own way to learn, grow, feel and any other New Agey term you might wish to use to indicate some level of progression.</p>
<p>Deal with it, olds.</p>
<p>So you love Emily Bronte. That&#8217;s OK. Don&#8217;t blame yourselves. It doesn&#8217;t mean that should be anyone else&#8217;s idea of literature. Or art. Or knowledge. It can even be someone else&#8217;s idea of bilge. And they could be right. There again, of all the names a Google rival could have come up with to name their new brand, they find one that you have to learn how to pronounce and that is a mere consonant away from something very rude indeed.</p>
<p>Where did these people go to college? Chico State? </p>
<p><em>[response from Mat]</em></p>
<p><em>Yea, but sorry, I can list off a ton of truly great writers even if you don&#8217;t like O&#8217;Neill (which I agree with), Chekov (the only Russian writer I actually find dull), Joyce, Chaucer, or Bronte.</em></p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Fis-the-web-making-us-illiterate%2F', 'Is+the+web+making+us+illiterate%3F')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusorange.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/is-the-web-making-us-illiterate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Good Stuff at SitePoint</title>
		<link>http://www.mobimeet.com/misc/resources/good-stuff-at-sitepoint/</link>
		<comments>http://www.mobimeet.com/misc/resources/good-stuff-at-sitepoint/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 04:55:50 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Good Resources]]></category>

		<category><![CDATA[IMD223 Advanced Scripting]]></category>

		<category><![CDATA[IMD345 UCD III]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/resources/good-stuff-at-sitepoint/</guid>
		<description><![CDATA[SitePoint has always been a great resource for all facets of web design &#8230; excellent book series, poignant articles and the like.&#160; Here&#8217;s a few excerpts that caught my eye today &#8230;
Forum Post: design or develop first?
Q: &#34;just wondering if I should go about designing my site first before implementing any back end capabilities. i [...]]]></description>
			<content:encoded><![CDATA[<p><a title="SitePoint" href="http://www.sitepoint.com">SitePoint</a> has always been a great resource for all facets of web design &#8230; excellent book series, poignant articles and the like.&#160; Here&#8217;s a few excerpts that caught my eye today &#8230;</p>
<p><strong>Forum Post: <a href="http://www.sitepoint.com/forums/showthread.php?t=557773">design or develop first?</a></strong></p>
<blockquote><p>Q: &quot;just wondering if I should go about designing my site first before implementing any back end capabilities. i like to keep things organized and plan ahead. It would seem to make sense to create the static site first but i am somewhat unsure if I were to design first and end up redesigning to fit everything I plan on adding later, in terms of dynamic content.&quot;</p>
<p>R: &quot;The approach you take probably depends on whether you are more of a designer or more a developer. A developer would tend to do the back end first without worrying too much about exactly how the page will look until after they know that it all functions properly. A designer would probably get the page looking exactly how they want and then worry about how to get it to function correctly. If you have separate people performing each of these tasks then all that needs to be done first is to define the interface between the two so that the two almost separate parts can be done separately in the knowledge that they will fit together once both are done.&quot;</p>
</blockquote>
<p><strong>Article: <a href="http://www.sitepoint.com/article/html-or-xhtml-does-it-matter">HTML or XHTML: Does It Really Matter?</a></strong> (excerpted, July 9, 2008 by James Edwards)</p>
<blockquote><p>HTML was originally conceived as a <strong>semantic</strong> language, in which elements should describe only the <em>meaning</em> of their content, not the presentation. However, this good intention didn&#8217;t hold up very long. </p>
<p>In 1997, the HTML 4.0 specification was published, and although it continued to include presentational markup that had been instigated directly by vendors, it also began a push to clean up HTML, calling some markup &#8220;deprecated&#8221; and suggesting that it not be used.</p>
<p>XHTML 1.0 came along in 2000 as formalization of HTML 4 into <a href="http://www.sitepoint.com/glossary.php?q=X#term_3">XML</a>. XML itself had been standardized in 1998 as a general specification for defining markup languages, and was a stricter and simpler offshoot of SGML, the Standard Generalized Markup Language from which HTML itself was originally derived.</p>
<p>XHTML <em>is</em> still worth using, because it&#8217;s a transitional standard that moves us towards a pure-XML Web. XML is inherently better than SGML, because it&#8217;s simpler and stricter, and much easier to parse (once you&#8217;ve understood its rules). I don&#8217;t know from where we&#8217;ve adopted the idea that we should be forgiving of markup errors, but I don&#8217;t share that view.</p>
</blockquote>
<p>And some other choice reads:</p>
<ul>
<li><a href="http://www.sitepoint.com/blogs/2008/07/30/custom-web-fonts-pick-your-poison">Custom Web Fonts: Pick Your Poison</a> by Kevin Yank</li>
<li><a href="http://www.sitepoint.com/article/fancy-form-design-css">Fancy Form Design Using CSS</a> by Cameron Adams</li>
<li><a href="http://www.sitepoint.com/article/ten-tips-greener-web-designer">10 Tips for Being a Greener Web Designer</a> by Matthew Magain</li>
</ul>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Fresources%2Fgood-stuff-at-sitepoint%2F', 'Good+Stuff+at+SitePoint')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusorange.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/resources/good-stuff-at-sitepoint/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Whadya Know and Wheredya Fit?</title>
		<link>http://www.mobimeet.com/misc/resources/whadya-know-and-wheredya-fit/</link>
		<comments>http://www.mobimeet.com/misc/resources/whadya-know-and-wheredya-fit/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 06:56:11 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Good Resources]]></category>

		<category><![CDATA[IMD223 Advanced Scripting]]></category>

		<category><![CDATA[IMD402 Server Side Scripting]]></category>

		<category><![CDATA[basic]]></category>

		<category><![CDATA[c]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[languages]]></category>

		<category><![CDATA[perl]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/?p=445</guid>
		<description><![CDATA[Ever wondered how your skillset stacks up in the scope of all programming languages?  I&#8217;ve presented this before in PHP class just to illustrate the popularity (as a result of the usability and easy learning curve) of the language but as my own work has drifted into several others, it&#8217;s always interested me where my [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mobimeet.com/wp-content/uploads/2008/07/tpci_trends.png"></a>Ever wondered how your skillset stacks up in the scope of all programming languages?  I&#8217;ve presented this before in PHP class just to illustrate the popularity (as a result of the usability and easy learning curve) of the language but as my own work has drifted into several others, it&#8217;s always interested me where my skills stand.  In any case, TIOBE is a Dutch company specializing in assessing and tracking the quality of software.  They produce the <a title="TIOBE Index" href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">TIOBE Index</a> a monthly updated list of how languages stack up to each other.  Below is shown the current trend graph and the top 10 languages as of July 2008.</p>
<p style="text-align: center;"><a title="TIOBE Index" href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"><img class="alignnone size-full wp-image-446 aligncenter" title="tpci_trends" src="http://www.mobimeet.com/wp-content/uploads/2008/07/tpci_trends.png" alt="" width="500" height="375" border="0" /></a><br/><small><br />
TIOBE Index, July 2008 by TIOBE bv</small></p>
<table id="Table2" class="TpciTable" align="center" style="border: solid 1px #777;">
<tbody>
<tr>
<th colspan="2" align="center" valign="bottom">Position</th>
<th rowspan="2" align="center" valign="bottom">Delta</th>
<th rowspan="2" align="center" valign="bottom">Language</th>
<th rowspan="2" align="center" valign="bottom">Ratings<br />
Jul 2008</th>
<th rowspan="2" align="center" valign="bottom">Delta<br />
Jul 2007</th>
<th rowspan="2" align="center" valign="bottom">Status</th>
</tr>
<tr>
<th align="center" valign="bottom">Jul 2008</th>
<th align="center" valign="bottom">Jul 2007</th>
</tr>
<tr height="25">
<td align="center">1</td>
<td align="center">1</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/Java.html">Java</a></td>
<td align="center">21.345%</td>
<td align="center">+0.33%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">2</td>
<td align="center">2</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/C.html">C</a></td>
<td align="center">15.945%</td>
<td align="center">-0.42%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">3</td>
<td align="center">3</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/C__.html">C++</a></td>
<td align="center">10.693%</td>
<td align="center">+0.19%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">4</td>
<td align="center">4</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/(Visual)_Basic.html">(Visual) Basic</a></td>
<td align="center">10.447%</td>
<td align="center">+0.72%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">5</td>
<td align="center">5</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/PHP.html">PHP</a></td>
<td align="center">9.525%</td>
<td align="center">+0.87%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">6</td>
<td align="center">6</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/Perl.html">Perl</a></td>
<td align="center">5.131%</td>
<td align="center">-0.20%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">7</td>
<td align="center">8</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Up.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/Python.html">Python</a></td>
<td align="center">4.973%</td>
<td align="center">+1.95%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">8</td>
<td align="center">7</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Down.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/C_.html">C#</a></td>
<td align="center">4.000%</td>
<td align="center">+0.29%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">9</td>
<td align="center">9</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/JavaScript.html">JavaScript</a></td>
<td align="center">2.757%</td>
<td align="center">+0.24%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">10</td>
<td align="center">10</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/Ruby.html">Ruby</a></td>
<td align="center">2.735%</td>
<td align="center">+0.64%</td>
<td align="left">  A</td>
</tr>
</tbody>
</table>
<p>(For my students) In case you&#8217;re wondering why HTML is not included in this list, the definition used by the index is:</p>
<blockquote><p>A language is considered a programming language if it is Turing complete. As a consequence, HTML and XML are not considered programming languages. This also holds for data query language SQL. SQL is not a programming language because it is, for instance, impossible to write an infinite loop in it. On the other hand, SQL extensions PL/SQL and Transact-SQL are programming languages. ASP and ASP.NET are also not programming languages because they make use of other languages such as JavaScript and VBScript or .NET compatible languages. The same is true for frameworks such as Ruby on Rails, ColdFusion, Cocoa, and technologies such as AJAX. Finally, we have also excluded assembly languages, although Turing complete, because they have a very different nature.</p></blockquote>
<p>And finally, for those of you in my weekend classes&#8230;yes, it&#8217;s 2 hours after class and yes, I am still up.  Good night.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Fresources%2Fwhadya-know-and-wheredya-fit%2F', 'Whadya+Know+and+Wheredya+Fit%3F')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusorange.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/resources/whadya-know-and-wheredya-fit/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Small Design Study Of Big Blogs</title>
		<link>http://www.mobimeet.com/misc/a-small-design-study-of-big-blogs/</link>
		<comments>http://www.mobimeet.com/misc/a-small-design-study-of-big-blogs/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 15:33:41 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Toolbox]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/?p=444</guid>
		<description><![CDATA[How coincidental, IMD345ers - read this article from SmashingMagazine&#8230;
Blog Design Survey
We have identified 30 design problems and considered solutions for each of the problems separately. We have posed 30 questions which we would like to answer with our blog survey. Below we present findings of our survey of popular blog designs — the results of an [...]]]></description>
			<content:encoded><![CDATA[<p>How coincidental, IMD345ers - <a title="A Small Design Study Of Big Blogs" href="http://www.smashingmagazine.com/2008/07/24/a-small-study-of-big-blogs/">read this article</a> from SmashingMagazine&#8230;</p>
<h3>Blog Design Survey</h3>
<p>We have identified 30 design problems and considered solutions for each of the problems separately. We have posed 30 questions which we would like to answer with our blog survey. Below we present <strong>findings of our survey of popular blog designs</strong> — the results of an analysis of 50 popular blogs according to Technorati’s Top 100.</p>
<p>Considering Technorati’s top 50, we have filtered out social networks and blogs which have artificially become popular — e.g. via backlinks in released Wordpress themes. The prize for the most cluttered CSS-code goes to Smashing Magazine — however, we are going to do something about it over the next weeks.</p>
<p>Please notice: the results presented below <strong>should not be considered as guidelines</strong> for an effective blog design. They are supposed to give you the intuition of which solution may be better than the other one. However, you need to consider the context you are working within as well — following our findings blindly won’t necessarily improve your design. Still it is useful to know what big players do and, more importantly, what they don’t do.</p>
<h3>1. Layout</h3>
<p>Let us start with the analysis of the layouts used on the most popular blogs in the blogosphere. Are there more 2-column-layouts than 3-column-layouts? Are layouts centered? Are they fixed, fluid or elastic? Are tables still used? In this section we are going to answer all these questions.</p>
<h4>1.1. How many columns?</h4>
<p>The question whether one should use 2 columns or 3 columns in a design layout is almost philosophical. Unfortunately, we weren’t able to find any results from usability studies which would prefer one solution over the other one. As usual, <strong>it depends</strong> on the context and on the target group you are dealing with. In some cases it is just impossible to find a proper balance between primary and secondary content with 2 columns. In these situations you may need to divide the second column (sidebar) into two parts — in fact this solutions is used quite often.</p>
<p><a title="A Small Design Study Of Big Blogs" href="http://www.smashingmagazine.com/2008/07/24/a-small-study-of-big-blogs/">Read the rest of the article&#8230;</a></p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Fa-small-design-study-of-big-blogs%2F', 'A+Small+Design+Study+Of+Big+Blogs')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusorange.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/a-small-design-study-of-big-blogs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MsSQL Stored Procedures</title>
		<link>http://www.mobimeet.com/misc/tricks/mssql-stored-procedures/</link>
		<comments>http://www.mobimeet.com/misc/tricks/mssql-stored-procedures/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 07:52:02 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[How To]]></category>

		<category><![CDATA[Tips and Tricks]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[mssql]]></category>

		<category><![CDATA[sql]]></category>

		<category><![CDATA[stored procedure]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/?p=428</guid>
		<description><![CDATA[In SQL, a stored procedure is a type of action.  In general, it is a specially formatted sequence of functions or actions to perform.  It has extensive benefits over writing simple queries in that it is stored in the SQL engine for re-use.
For example, let&#8217;s say that you&#8217;ve created a table to hold all of your [...]]]></description>
			<content:encoded><![CDATA[<p>In SQL, a stored procedure is a type of action.  In general, it is a specially formatted sequence of functions or actions to perform.  It has extensive benefits over writing simple queries in that it is stored in the SQL engine for re-use.</p>
<p>For example, let&#8217;s say that you&#8217;ve created a table to hold all of your users logins and passwords (and some other info):</p>
<pre>CREATE TABLE users (
   userID INT NOT NULL IDENTITY(1,1),
   login NVARCHAR(32) NOT NULL,
   passw NVARCHAR(100) NOT NULL,
   email NVARCHAR(50) NOT NULL,
   uName NVARCHAR(50) NULL,
   uCreated SMALLDATETIME NOT NULL DEFAULT (getdate())
)</pre>
<p>On the one hand you can simply write a simple query in your server-side script (here in ASP.NET):</p>
<pre>string mySqlQuery = "SELECT * FROM users
   WHERE login = '" + strLogin + "' AND passw = '" + strPass + "'";</pre>
<p>And that would work great.  But now lets say you&#8217;ve constructed a second table containing more normalized information about the user:</p>
<pre>CREATE TABLE usersMetadata (
   userID INT NOT NULL DEFAULT (0),
   dataDescription NVARCHAR(50) NOT NULL,
   theInformation NVARCHAR(1000) NULL
)</pre>
<p>So what if you wanted to pull certain information about a specific user?  Once again we can write a simple query:</p>
<pre>string mySqlQuery = "SELECT usersMetadata.*,users.*
   FROM usersMetadata
   LEFT JOIN users ON users.userID = usersMetadata.userID
   WHERE userID = " + intUserId + " AND dataDescription = '" + strSomeInfo + "'";</pre>
<p>And that would work great too.  But as those of us who develop large-scale web sites know, we re-use queries over and over, frequently.  So what happens when we change the query on one page and neglect to change it on another?  Now we have two pages with different results.  Not good.<span id="more-428"></span></p>
<p>Using a stored procedure, we now give ourselves direct access to a centralized query.  This means that if we change it once (on the server), it changes for all instances of it.  So how do we do this?  Writing a stored procedure is relatively simple. </p>
<pre>CREATE PROCEDURE dbo.getUserMetadata
   @userID INT,
   @dataType NVARCHAR(50)
SET NO COUNT ON
BEGIN
   SELECT usersMetadata.*,users.* FROM usersMetadata
   LEFT JOIN users ON users.userID = usersMetadata.userID
   WHERE userID = @userID AND dataDescription = @dataType
END</pre>
<p>Calling stored procedures is a snap too. Instead of writing out the entire query, we can just execute the procedure as:</p>
<pre>string mySqlQuery = "EXEC getUserMetadata @UserID, @dataType";</pre>
<p><small>Note that we would declare the @ parameters as well</small></p>
<p>Stored procedures can also be great when you need to extrapolate data from multiple places and perform additional actions on the data before output.  Stored procedures, for example, allow you to create, use and destroy temporary tables of information without affecting the whole.  Say, for example you want to test how your data might react if performed but you don&#8217;t want it to go against the live table first.</p>
<pre>CREATE PROCEDURE dbo.testUserUpdate
SET NO COUNT ON
BEGIN
   -- this is the temporary table
   CREATE TABLE #users (
      userID INT NOT NULL IDENTITY(1,1),
      login NVARCHAR(32) NOT NULL,
      passw NVARCHAR(32) NOT NULL,
      email NVARCHAR(50) NOT NULL,
      uName NVARCHAR(50) NULL,
      uCreated SMALLDATETIME NOT NULL DEFAULT (getdate())
   )
   -- inserts all users created in the last month to the temporary table
   INSERT INTO #users SELECT users.userID,login,passw,email,uName,uCreated FROM users
   WHERE uCreated &gt; DATEADD('dd',-30,getdate())
-- apply some silly change like altering the password for any user with a login beginning with an a
UPDATE #users SET passw = 'KILLED-YOUR-PASSWORD' WHERE login LIKE 'a%'
   -- now display the data
SELECT * FROM #users ORDER BY #users.login
-- and be sure to destroy the temporary (it is temporary after all)
DROP TABLE #users
SET NOCOUNT OFF
END</pre>
<p>This procedure will have the same basic effect as having made the update to the users table but instead applied it to transitory data that was destroyed before leaving the query. Now assuming that the results were good, you could ideally just have a second procedure to actually alter the original table.</p>
<p>Shortly we&#8217;ll add to this post with an update. In the meantime, code on!</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Ftricks%2Fmssql-stored-procedures%2F', 'MsSQL+Stored+Procedures')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusorange.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/tricks/mssql-stored-procedures/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Friday Night Finds for 07/11</title>
		<link>http://www.mobimeet.com/misc/tricks/friday-night-finds-for-0711/</link>
		<comments>http://www.mobimeet.com/misc/tricks/friday-night-finds-for-0711/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 07:01:36 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[IMD345 UCD III]]></category>

		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/tricks/friday-night-finds-for-0711/</guid>
		<description><![CDATA[To be honest with you, I&#8217;ve been so friggin&#8217; busy that I have nothing to report for today.
This morning I spent 90 minutes in line with Jennifer waiting to buy her 3G.&#160; I&#8217;m not quite sure what the fascination is with actually waiting in line that long (more than 7 hours all in all) to [...]]]></description>
			<content:encoded><![CDATA[<p>To be honest with you, I&#8217;ve been so friggin&#8217; busy that I have nothing to report for today.</p>
<p>This morning I spent 90 minutes in line with Jennifer waiting to buy her 3G.&#160; I&#8217;m not quite sure what the fascination is with actually waiting in line that long (more than 7 hours all in all) to get one, but I&#8217;ll give her credit for persevering that long.&#160; Now on the other hand, the Touch Pro will reportedly be out in September, so maybe I&#8217;ll eat my own words.&#160; Unless I break down and import one instead.</p>
<p>I sat through an enlightening department meeting today in which the issue of, amongst other things, design came up.&#160; Without going overboard I would like to elicit a challenge to all WDIM students this quarter not only to complete the work they are assigned but to challenge themselves one step further and &quot;polish&quot; your design.&#160; </p>
<p>Mr. Anderson had an interesting point - a lot of you don&#8217;t seem to know where to begin and he gave out a lot of recommendations that I strongly agree with: stepping away from the computer and drawing by hand, layering screencaps of choice sites on top of each other in Photoshop and deconstructing or morphing them together, cutting clips from magazines and arranging them together like a scrapbook.&#160; The point being that despite everyone&#8217;s creative talents, sometimes finding direction is the hardest part.&#160; Take a step to be different.</p>
<p>From my end I would like to see more polish.&#160; Hopefully we&#8217;ll be able to incorporate a few good example of what we mean by this in IMD345 (UCD3) this quarter.&#160; Or if you need some examples, pick up Web Designer Magazine (a glossy, expensive British mag - find it at Barnes &amp; Noble) and check out some of the great design coming out of the UK.&#160; Aspire to get that kind of cleanliness or artistry in your design.&#160; By the same token, don&#8217;t lose sight of the content and functionality.</p>
<p>See you next week!</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Ftricks%2Ffriday-night-finds-for-0711%2F', 'Friday+Night+Finds+for+07%2F11')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusorange.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/tricks/friday-night-finds-for-0711/feed/</wfw:commentRss>
		</item>
		<item>
		<title>An  Internet flaw?</title>
		<link>http://www.mobimeet.com/misc/news/an-internet-flaw/</link>
		<comments>http://www.mobimeet.com/misc/news/an-internet-flaw/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 20:42:39 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Internet News]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/?p=442</guid>
		<description><![CDATA[[my poor reference via Austin Powers, article via Breitbart]
Computer industry heavyweights are hustling to fix a flaw in the foundation of the Internet that would let hackers control traffic on the World Wide Web. 
Major software and hardware makers worked in secret for months to create a software &#8220;patch&#8221; released on Tuesday to repair the [...]]]></description>
			<content:encoded><![CDATA[<p>[my poor reference via Austin Powers, article via <a title="Internet flaw could let hackers take over the Web" href="http://www.breitbart.com/article.php?id=080709124916.zxdxcmkx&amp;show_article=1">Breitbart</a>]</p>
<p><span class="lingo_region">Computer industry heavyweights are hustling to fix a flaw in the foundation of the Internet that would let hackers control traffic on the <a class=" lingo_link" style="display: inline; font-weight: 400; font-size: 14px; cursor: pointer; color: black; font-style: normal; font-family: Arial; text-decoration: underline;" rel="nofollow" href="http://search.breitbart.com/q?s=World%20Wide%20Web&amp;sid=breitbart.com">World Wide Web.</a> </span></p>
<p>Major software and hardware makers worked in secret for months to create a software &#8220;patch&#8221; released on Tuesday to repair the problem, which is in the way computers are routed to web page addresses.</p>
<p>&#8220;It&#8217;s a very fundamental issue with how the entire addressing scheme of the <a class=" lingo_link" style="display: inline; font-weight: 400; font-size: 14px; cursor: pointer; color: black; font-style: normal; font-family: Arial; text-decoration: underline;" rel="nofollow" href="http://search.breitbart.com/q?s=Internet%20works&amp;sid=breitbart.com">Internet works,</a>&#8221; Securosis analyst Rich Mogul said in a media conference call.  &#8220;You&#8217;d have the Internet, but it wouldn&#8217;t be the Internet you expect. (Hackers) would control everything.&#8221;  <a title="read the rest of this article" href="http://www.breitbart.com/article.php?id=080709124916.zxdxcmkx&amp;show_article=1">(more&#8230;)</a></p>
<p><a href="http://www.doxpara.com/?p=1162">And a response via Doxpara.</a></p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Fnews%2Fan-internet-flaw%2F', 'An+%3Cevil%3E+Internet+flaw%3F')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusorange.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/news/an-internet-flaw/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Web Form Design Patterns: Sign-Up Forms</title>
		<link>http://www.mobimeet.com/misc/web-form-design-patterns-sign-up-forms/</link>
		<comments>http://www.mobimeet.com/misc/web-form-design-patterns-sign-up-forms/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 17:12:08 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Toolbox]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/web-form-design-patterns-sign-up-forms/</guid>
		<description><![CDATA[[via SmashingMagazine]
With an opening sentence that reads &#34;If you want to maximize the revenue of your service you need to maximize completion rates of your web forms.&#34; it definitely has to be good.&#160; Vitaly and Sven rarely disappoint and this is no exception.&#160; Required reading for all UCD3 students (the entire article, not just this [...]]]></description>
			<content:encoded><![CDATA[<p>[via <a title="Smashing Magazine" href="http://www.smashingmagazine.com/2008/07/04/web-form-design-patterns-sign-up-forms/">SmashingMagazine</a>]</p>
<p><em>With an opening sentence that reads &quot;If you want to maximize the revenue of your service you need to <strong>maximize completion rates</strong> of your web forms.&quot; it definitely has to be good.&#160; Vitaly and Sven rarely disappoint and this is no exception.&#160; Required reading for all UCD3 students (the <u>entire</u> article, not just this excerpt) this quarter so get a head start.</em></p>
<p>If you want to maximize the revenue of your service you need to <strong>maximize completion rates</strong> of your web forms. Unless you have some revolutionary ideas to impress your visitors at first glance, it is not enough to simply enable users to sign up on your site. To make it possible for the service to reach a maximal exposure we, designers, need to provide users with a good user experience. We need to invite them, describe them how the service works, explain them why they should fill in the form and suggests the benefits they&#8217;ll get in return. And, of course, we should also make it extremely easy for them to participate.</p>
<p>However, designing effective web forms isn&#8217;t easy. And it has one simple reason: nobody likes to fill in forms &#8212; neither offline nor online. Therefore, as designers, we need to figure out sound design decisions to make the form completion easy, intuitive and painless.</p>
<p>But how exactly can we figure out these decisions? Where should the link to the form be placed in the layout? How should we design it? How should we highlight the labels and how should we align them? How do web form design patterns look like in modern web-sites? These were exactly the questions we&#8217;ve asked ourselves. And to get the answers we&#8217;ve conducted a <strong>survey</strong>.</p>
<p>Below we present <strong>findings of our survey of current web form design patterns</strong> &#8212; the results of an analysis of 100 popular web-sites where web-forms (should) matter. We have decided to start with sign-up forms first. We present the first part of our findings below; the second part of the survey results will be published next week.</p>
<p>Read the rest at <a title="Smashing Magazine: Web Form Design Patterns" href="http://www.smashingmagazine.com/2008/07/04/web-form-design-patterns-sign-up-forms/">SmashingMagazine</a>&#8230;</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Fweb-form-design-patterns-sign-up-forms%2F', 'Web+Form+Design+Patterns%3A+Sign-Up+Forms')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusorange.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/web-form-design-patterns-sign-up-forms/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sunday Studying</title>
		<link>http://www.mobimeet.com/misc/sunday-studying/</link>
		<comments>http://www.mobimeet.com/misc/sunday-studying/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 03:19:37 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Toolbox]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/sunday-studying/</guid>
		<description><![CDATA[So here I am studying (yes, studying) for the GRE&#8217;s that I am taking on Tuesday and frankly I am sort of dreading them.&#160; To be sure, I have always been really good at taking tests, and not multiple-choice or true-false or essay in particular &#8230; all types of tests.&#160; And yes, I pretty much [...]]]></description>
			<content:encoded><![CDATA[<p>So here I am studying (yes, studying) for the GRE&#8217;s that I am taking on Tuesday and frankly I am sort of dreading them.&#160; To be sure, I have always been really good at taking tests, and not multiple-choice or true-false or essay in particular &#8230; all types of tests.&#160; And yes, I pretty much know every so-called &quot;tactic&quot; on the planet (and it helps, of course, that even after some 26 years, I can still remember pretty much every friggin&#8217; geometric, algebraic, trigonometric and otherwise normal mathematical equation I&#8217;ve ever learned for no apparent reason or need).&#160; So why am I so wigged out about this one?&#160; It&#8217;s not like I have to do spectacularly (1200 is my target) but these antonyms are really wigging me out!&#160; Who the hell uses any of these words in their everyday speech anyway?</p>
<p>OK, back to studying.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fmisc%2Fsunday-studying%2F', 'Sunday+Studying')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusorange.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/misc/sunday-studying/feed/</wfw:commentRss>
		</item>
		<item>
		<title>getStringFromObj()</title>
		<link>http://www.mobimeet.com/soapbox/getstringfromobj/</link>
		<comments>http://www.mobimeet.com/soapbox/getstringfromobj/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 09:10:34 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Soapbox]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/soapbox/getstringfromobj/</guid>
		<description><![CDATA[ Sorry if this offends you but it&#8217;s funny,&#160; And I don&#8217;t really care.&#160; Okay, so programmers really are geeks but lighten up.
&#160;

addthis_pub = 'mobimeet';

]]></description>
			<content:encoded><![CDATA[<div><a href="http://www.mobimeet.com/wp-content/uploads/2008/07/pic119133942780021rs9.jpg"><img alt="pic119133942780021rs9" src="http://www.mobimeet.com/wp-content/uploads/2008/07/pic119133942780021rs9-thumb.jpg" align="right" style="margin: 0px 0px 0px 10px;" border="0" /></a> Sorry if this offends you but it&#8217;s funny,&#160; And I don&#8217;t really care.&#160; Okay, so programmers really are geeks but lighten up.</div>
<div style="clear: both">&#160;</div>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.mobimeet.com%2Fsoapbox%2Fgetstringfromobj%2F', 'getStringFromObj%28%29')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.mobimeet.com/images/addthis-plusorange.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.mobimeet.com/soapbox/getstringfromobj/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Signs that you are a bad programmer</title>
		<link>http://www.mobimeet.com/soapbox/signs-that-you-are-a-bad-programmer/</link>
		<comments>http://www.mobimeet.com/soapbox/signs-that-you-are-a-bad-programmer/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 08:46:21 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
		
		<category><![CDATA[Soapbox]]></category>

		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/soapbox/signs-that-you-are-a-bad-programmer/</guid>
		<description><![CDATA[[via infogami]
No, I didn&#8217;t write this but it&#8217;s something I wish I could lay claim to.
1. Inability to reason about code
Reasoning about code means being able to follow the execution path (&#34;running the program in your head&#34;) while knowing what the goal of the code is.
Symptoms

The presence of &#34;voodoo code&#34;, or code that has no [...]]]></description>
			<content:encoded><![CDATA[<p>[via <a href="http://badprogrammer.infogami.com/">infogami</a>]</p>
<p><em><font color="#00ff00">No, I didn&#8217;t write this but it&#8217;s something I wish I could lay claim to.</font></em></p>
<h5>1. Inability to reason about code</h5>
<p>Reasoning about code means being able to follow the execution path (&quot;running the program in your head&quot;) while knowing what the goal of the code is.</p>
<h6>Symptoms</h6>
<ol>
<li>The presence of &quot;voodoo code&quot;, or code that has no effect on the goal of the program but is diligently maintained anyway (such as initializing variables that are never used, calling functions that are irrelevant to the goal, producing output that is not used, etc.) </li>
<li>Executing idempotent functions multiple times (eg: calling the save() function multiple times &quot;just to be sure&quot;) </li>
<li>Fixing bugs by writing redundant code that overwrites the result of the faulty code </li>
<li>&quot;YoYo code&quot; that converts a value into a different representation, then converts it back to where it started (eg: converting a decimal into a string and then back into a decimal, or padding a string and then trimming it) </li>
<li>&quot;Bulldozer code&quot; that gives the appearance of refactoring by breaking out chunks into subroutines, but that are impossible to reuse in another context (very high cohesion) </li>
</ol>
<h6>Remedies</h6>
<p>To get over this deficiency a programmer can practice by using the IDE&#8217;s own debugger as an aide if it has the ability to step through the code one line at a time. In Visual Studio, for example, this means setting a breakpoint at the beginning of the problem area and stepping through with the &#8216;F11&#8242; key, inspecting the value of variables&#8211;before and after they change&#8211;until you understand what the code is doing. If the target environment doesn&#8217;t have such a feature, then practice in one that does.</p>
<p>The goal is to reach a point where you no longer need the debugger to be able to follow the flow of code in your head, and where you are patient enough to think about what the code is doing to the state of the program. The reward is the ability to identify redundant and unnecessary code, as well as how to find bugs in existing code without having to re-implement the whole algorithm from scratch.</p>
<h5>2. Poor understanding of the language&#8217;s programming model</h5>
<p>Object Oriented Programming is an example of a language model, as is Functional or Declarative programming. They&#8217;re each significantly different from procedural or imperative programming, just as procedural programming is significantly different from assembly or GOTO-based programming. Then there are languages which follow a major programming model (such as OOP) but introduce their own improvements such as list comprehensions, generics, duck-typing, etc.</p>
<h6>Symptoms</h6>
<ol>
<li>Using whatever syntax is necessary to break out of the model, then writing the remainder of the program in imperative/procedural style </li>
<li>(OOP) Attempting to call non-static functions or variables in uninstantiated classes, and having difficulty understanding why it won&#8217;t compile </li>
<li>(OOP) Writing lots of &quot;xxxxxManager&quot; classes that contain all of the methods for manipulating objects that have little or no methods of their own </li>
<li>(Relational) Treating the database as an object store, possibly going as far as serializing the state of the object to a binary column </li>
<li>(Functional) Creating multiple versions of the same algorithm to handle different types or operators, rather than passing high-level functions to a generic implementation </li>
<li>(Functional) Manually caching the results of a deterministic function </li>
<li>(Pure Functional) Using cut-n-paste code from someone else&#8217;s program to deal with I/O and Monads </li>
<li>(Declarative) Setting individual values in imperative code rather than using data-binding </li>
</ol>
<h6>Remedies</h6>
<p>If your skills deficiency is a product of ineffective teaching or studying, then an alternative teacher is the compiler itself. There is no more effective way of learning a new programming model than starting a new project and committing yourself to use whatever the new constructs are, intelligently or not. You also need to practice explaining the model&#8217;s features in crude terms of whatever you are familiar with, then recursively building on your new vocabulary until you understand the subtleties as well. For example:</p>
<p>Phase 1: &quot;OOP is just records with methods&quot;    <br />Phase 2: &quot;OOP methods are just functions running in a mini-program with its own global variables&quot;     <br />Phase 3: &quot;The global variables are called fields, some of which are private and invisible from outside the mini-program&quot;     <br />Phase 4: &quot;The idea of having private and public elements is to hide implementation details and expose a clean interface, and this is called Encapsulation&quot;     <br />Phase 5: &quot;Encapsulation means my business logic doesn&#8217;t need to be polluted with implementation details&quot;</p>
<p>Phase 5 looks the same for all languages, since they are all really trying to get the programmer to the point where he can express the <em>intent</em> of the program without burying it in the specifics of <em>how</em>. Take functional programming as another example:</p>
<p>Phase 1: &quot;Functional programming is just doing everything by chaining deterministic functions together&quot;    <br />Phase 2: &quot;When the functions are deterministic, they don&#8217;t need to be executed until the output is called for, and only for as much as needed. This is called Lazy Evaluation and Partial Evaluation&quot;     <br />Phase 3: &quot;In order to support Lazy and Partial Evaluation, the compiler requires that I write functions in terms of how to transform a single parameter, sometimes into another function. This is called Currying&quot;     <br />Phase 4: &quot;When all functions are curried, the compiler can choose the best execution plan by using a constraint solver&quot;     <br />Phase 5: &quot;By letting a constraint solver figure out the mundane details, I can write programs by describing <em>what</em> I want, rather than <em>how</em> to give it to me&quot;</p>
<p><span id="more-436"></span></p>
<h5>3. Deficient research skills / Chronically poor knowledge of the platform&#8217;s features</h5>
<p>Modern languages and frameworks now come with an awesome breadth and depth of built-in commands and features, with some leading frameworks (Java, .Net, Cocoa) being too large to expect any programmer, even a good one, to learn in anything less than a few years. But a good programmer will search for a built-in function that does what they need before they begin to roll their own, and excellent programmers have the skill to break-down and identify the abstract problems in their task, then search for existing frameworks, patterns, models and languages that can be adapted before they even begin to design the program.</p>
<h6>Symptoms</h6>
<p>These are only indicative of the problem if they continue to appear in the programmer&#8217;s work long after he should have mastered the new platform.</p>
<ol>
<li>Re-inventing or laboring without basic mechanisms that are built-into the language, such as events-and-handlers or regular expressions </li>
<li>Re-inventing classes and functions that are built-into the framework (eg: timers, collections, sorting and searching algorithms) * </li>
<li>&quot;Email me teh code, plz&quot; messages posted to help forums </li>
<li>&quot;Roundabout code&quot; that accomplishes in many instructions what could be done with far fewer (eg: rounding a number by converting a decimal into a formatted string, then converting the string back into a decimal) </li>
<li>Persistently using old-fashioned techniques even when new techniques are better in those situations (eg: still writes named delegate functions instead of using lambda expressions for one-offs) </li>
<li>Having a stark &quot;comfort zone&quot;, and going to extreme lengths to solve complex problems with primitives </li>
</ol>
<p>* - Accidental duplication will also happen, proportionate to the size of the framework, so judge by degree.</p>
<h6>Remedies</h6>
<p>A programmer can&#8217;t acquire this kind of knowledge without slowing down, and it&#8217;s likely that he&#8217;s been in a rush to get each function working by whatever means necessary. He needs to have the platform&#8217;s technical reference handy and be able to look through it with minimal effort, which can mean either having a hard copy of it on the desk right next to the keyboard, or having a second monitor dedicated to a browser. To get into the habit initially, he should refactor his old code with the aim of reducing its instruction count by 10:1 or more.</p>
<h5>4. Inability to comprehend pointers</h5>
<p>If you don&#8217;t understand pointers then there is a very shallow ceiling on the types of programs you can write, as the concept of pointers enables the creation of complex data structures and efficient APIs. Managed languages use references instead of pointers, which are similar but add automatic dereferencing and prohibit pointer arithmetic to eliminate entire classes of bugs. They are still similar enough, however, that a failure to grasp the concept will be reflected in poor data-structure design and bugs that trace back to the difference between pass-by-value and pass-by-reference in method calls.</p>
<h6>Symptoms</h6>
<ol>
<li>Failure to implement a linked list, or write code that inserts/deletes nodes from linked list without losing data </li>
<li>Allocating arbitrarily big arrays for variable-length collections and maintaining a separate collection-size counter, rather than using a linked list or other dynamic data structure </li>
<li>Inability to find or fix bugs caused by performing arithmetic on pointers </li>
<li>Modifying the dereferenced values from pointers passed as the parameters to a function, and not expecting it to change the values in the scope outside the function </li>
<li>Making a copy of a pointer, changing the dereferenced value via the copy, then assuming the original pointer still points to the old value </li>
<li>Serializing a pointer to the disk or network when it should have been the dereferenced value </li>
<li>Sorting an array of pointers by performing the comparison on the pointers themselves </li>
</ol>
<h6>Remedies</h6>
<p>A friend of mine named Joe was staying somewhere else in the hotel, but I didn&#8217;t know which room number. I did, however, know which room his acquaintance, Frank, was staying in. So I went up there and knocked on his door and asked him, &quot;Where&#8217;s Joe staying?&quot; Frank didn&#8217;t know, but he did know which room Joe&#8217;s co-worker, Theodore, was staying in, and gave me that room number instead. So I went to Theodore&#8217;s room and asked him where Joe was staying, and Theodore told me that Joe was in Room 414. And that, in fact, is where Joe was.</p>
<p>Pointers can be described with many different metaphors, and the data structures you can build translated into many analogies. The above is a simple analogy for a linked list, and anybody can invent their own, even if they aren&#8217;t programmers. The comprehension failure doesn&#8217;t occur when pointers are described, so you can&#8217;t describe them any more thoroughly than they already have been. It fails when the programmer then tries to visualize what&#8217;s going on in the computer&#8217;s memory and it gets conflated with their understanding of regular variables, which are very similar. It may help to translate the code into a simple story to help reason about what&#8217;s going on, until the distinction clicks and the programmer can visualize pointers and the data structures they enable as intuitively as scalar values and arrays.</p>
<h5>5. Difficulty seeing through recursion</h5>
<p>The idea of recursion is easy enough to understand, but programmers often have problems imagining the result of a recursive operation in their minds, or how a complex result can be computed with a simple function. This makes it harder to design a recursive function because you have trouble picturing &quot;where you are&quot; when you come to writing the test for the base condition or the parameters for the recursive call.</p>
<h6>Symptoms</h6>
<ol>
<li>Hideously complex iterative algorithms for problems that can be solved recursively (eg: traversing a filesystem tree), especially where memory and performance is not a premium </li>
<li>Recursive functions that check the same base condition both before and after the recursive call </li>
<li>Recursive functions that don&#8217;t test for a base condition </li>
<li>Recursive subroutines that concatenate/sum to a global variable or a carry-along output variable, and aren&#8217;t implementing tail recursion </li>
<li>Apparent confusion about what to pass as the parameter in the recursive call, or recursive calls that pass the parameter unmodified </li>
</ol>
<h6>Remedies</h6>
<p>Get your feet wet and be prepared for some stack overflows. Begin by writing code with only one base-condition check and one recursive call that uses the same, unmodified parameter that was passed. Stop coding even if you have the feeling that it&#8217;s not enough, and run it anyway. It throws a stack-overflow exception, so now go back and pass a modified copy of the parameter in the recursive call. More stack overflows? Excessive output? Then do more code-and-run iterations, switching from tweaking your base-condition test to tweaking your recursive call until you start to intuit how the function is transforming its input. Resist the urge to use more than one base-condition test or recursive call unless you really know what you&#8217;re doing.</p>
<p>Your goal is to have the confidence to jump in, even if you don&#8217;t have a complete sense of &quot;where you are&quot; in the imaginary recursive path. Then when you now need to write a function for a real project you&#8217;d begin by writing a unit test first, and proceeding with the same technique above.</p>
<h4>Signs that you are a mediocre programmer</h4>
<h5>1. Inability to think in sets</h5>
<p>Transitioning from imperative programming to functional and declarative programming will immediately require you to think about operating on <em>sets</em> of data as your primitive, not scalar values. The transition is required whenever you use SQL with a relational database (and not as an object store), whenever you design programs that will scale linearly with multiple processors, and whenever you write code that has to execute on a SIMD-capable chip (such as modern graphics cards and video game consoles).</p>
<h6>Symptoms</h6>
<p>The following count only when they&#8217;re seen on a platform with Declarative or Functional programming features that the programmer should be aware of.</p>
<ol>
<li>Performing atomic operations on the elements of a collection within a <em>for</em> or <em>foreach</em> loop </li>
<li>Writing Map or Reduce functions that contain their own loop for iterating through the dataset </li>
<li>Fetching large datasets from the server and computing sums on the client, instead of using aggregate functions in the query </li>
<li>Functions acting on elements in a collection that begin by performing a new database query to fetch a related record </li>
<li>Writing business-logic functions with tragically compromising side-effects, such as updating a user interface or performing file I/O </li>
<li>Entity classes that open their own database connections or file handles and keep them open for their lifespan </li>
</ol>
<h6>Remedies</h6>
<p>Funny enough, visualizing a card dealer cutting a deck of cards and interleaving the two stacks together by flipping through them with his thumbs can jolt the mind into thinking about sets and how you can operate on them in bulk. Other stimulating visualizations are:</p>
<ul>
<li>freeway traffic passing through an array of toll booths (parallel processing) </li>
<li>springs joining to form streams joining to form creeks joining to form rivers (parallel reduce/aggregate functions) </li>
<li>a newspaper printing press (coroutines, pipelines) </li>
<li>the zipper tag on a jacket pulling the zipper teeth together (simple joins) </li>
<li>transfer RNA picking up amino acids and joining messenger RNA within a ribosome to become a protein (multi-stage function-driven joins, <a href="http://www.dnai.org/text/mediashowcase/index2.html?id=586">see animation</a>) </li>
<li>the above happening simultaneously in billions of cells in an orange tree to convert soil, water and sunlight into orange juice (Map/Reduce on large distributed clusters) </li>
</ul>
<p>If you are writing a program that works with collections, think about all the supplemental data and records that your functions need to work on each element and use Map functions to join them together in pairs before you have your Reduce function applied to each pair.</p>
<h5>2. Lack of critical thinking</h5>
<p>Unless you criticize your own ideas and look for flaws in your own thinking, you will miss problems that can be fixed before you even start coding. If you also fail to criticize your own code once written, you will only learn at the vastly slower pace of trial and error. This is the root of lazy thinking and egocentric thinking, so its symptoms seem to come from two different directions.</p>
<h6>Symptoms</h6>
<ol>
<li>&quot;Business Rule Engines&quot; </li>
<li>Fat static utility classes, or multi-disciplinary libraries with only one namespace </li>
<li>Conglomerate applications, or attaching unrelated features to an existing application to avoid the overhead of starting a new project </li>
<li>Architectures that have begun to require <a href="http://en.wikipedia.org/wiki/Epicycle">epicycles</a></li>
<li>Adding columns to tables for tangential data </li>
<li>Inconsistent naming conventions </li>
<li>&quot;Man with a hammer&quot; mentality, or changing the definitions of problems so they can all be solved with one particular technology </li>
<li>Programs that dwarf the complexity of the problem they solve </li>
<li>Pathologically and redundantly defensive programming (&quot;Enterprisey code&quot;) </li>
</ol>
<h6>Remedies</h6>
<p>Start with a book like <a href="http://www.amazon.com/Critical-Thinking-Taking-Professional-Personal/dp/0130647608">Critical Thinking</a> by Paul and Elder, work on controlling your ego, and practice resisting the urge to defend yourself as you submit your ideas to friends and colleagues for criticism.</p>
<p>Once you get used to other people examining your ideas, start examining your own ideas yourself and practice imagining the consequences of them. In addition, you also need to develop a sense of proportion (to have a feel for how much design is appropriate for the size of the problem), a habit of fact-checking assumptions (so you don&#8217;t overestimate the size of the problem), and a healthy attitude towards failure (Isaac Newton was wrong about gravity, but we still love him and needed him to try anyway).</p>
<p>Finally, you must have discipline. Being aware of flaws in your plan will not make you more productive unless you can muster the willpower to correct and rebuild what you&#8217;re working on.</p>
<h5>3. Pinball Programming</h5>
<p>When you tilt the board just right, pull back the pin to just the right distance, and hit the flipper buttons in the right sequence, then the program runs flawlessly with the flow of execution bouncing off conditionals and careening unchecked toward the next state transition.</p>
<h6>Symptoms</h6>
<ol>
<li>One Try-Catch block wrapping the entire body of Main() and resetting the program in the Catch clause (the pinball gutter) </li>
<li>Using strings/integers for values that have (or could be given) more appropriate wrapper types in a strongly-typed language </li>
<li>Packing complex data into delimited strings and parsing it out in every function that uses it </li>
<li>Failing to use assertions or method contracts on functions that make assumptions about their arguments </li>
<li>The use of Sleep() to wait for another thread to finish its task </li>
<li>Switch statements, on non-enumerated values, that don&#8217;t have an &quot;Otherwise&quot; clause </li>
<li>Using Automethods or Reflection to invoke methods that are named in unqualified user input </li>
<li>Setting global variables in functions as a way to return multiple values </li>
<li>Classes with one method and a couple of fields, where you have to set the fields as the way of passing parameters to the method </li>
<li>Multi-row database updates without a transaction </li>
<li>Hail-Mary passes (eg: trying to restore the state of a database without a transaction and ROLLBACK) </li>
</ol>
<h6>Remedies</h6>
<p>Imagine your program&#8217;s input is water. It&#8217;s going to fall through every crack and fill every pocket, so you need to think about what the consequences are when it flows somewhere other than where you&#8217;ve explicitly built something to catch it.</p>
<p>You will need to make yourself familiar with the mechanisms on your platform that help make programs robust and ductile. There are three basic kinds:</p>
<ol>
<li>those which stop the program before any damage is done when something unexpected happens, then helps you identify what went wrong (type systems, assertions, exceptions, etc.), </li>
<li>those which direct program flow to whatever code best handles the contingency (try-catch blocks, multiple dispatch, event driven programming, etc.), </li>
<li>those which pause the thread until all your ducks are in a row (WaitUntil commands, mutexes and semaphores, SyncLocks, etc.) </li>
</ol>
<p>There is also a fourth, Unit Testing, which you use at design time.</p>
<p>Using these ought to become second nature to you, like putting commas and periods in sentences. To get there, go through the above mechanisms (the ones in parenthesis) one at a time and refactor an old program to use them wherever you can cram them, even if it doesn&#8217;t turn out to be appropriate (especially when they don&#8217;t seem appropriate, so you also begin to understand why).</p>
<h4>Signs that you shouldn&#8217;t be a programmer</h4>
<p>The following may not have any remedies if you still suffer from them after taking a programming course in school, so you will stand a better chance of advancing your career by choosing another profession.</p>
<h5>1. Inability to determine the order of program execution</h5>
<h6>Symptoms</h6>
<pre><code>a = 5
b = 10
a = b

print a
</code></pre>
<ol>
<li>You look at the code above and aren&#8217;t sure what number gets printed out at the end </li>
</ol>
<h6>Alternative careers</h6>
<ol>
<li>Electrician </li>
<li>Plumber </li>
<li>Architect </li>
<li>Civil engineer </li>
</ol>
<h5>2. Insufficient ability to think abstractly</h5>
<h6>Symptoms</h6>
<ol>
<li>Difficulty comprehending the difference between objects and classes </li>
<li>Difficulty implementing design patterns for your program </li>
<li>Difficulty writing functions with low cohesion </li>
<li>Incompetence with Regular Expressions </li>
<li>Lisp is opaque to you </li>
<li>Cannot fathom the Church-Turing Thesis </li>
</ol>
<h6>Alternative careers</h6>
<ol>
<li>Contract negotiator </li>
<li>Method actor </li>
</ol>
<h5>3. Collyer Brothers syndrome</h5>
<h6>Symptoms</h6>
<ol>
<li>Unwilling to throw away anything, including garbage </li>
<li>Unwilling to delete anything, be it code or comments </li>
<li>The urge to build booby-traps for defense against trespassers </li>
<li>Unwilling to communicate with other people </li>
<li>Poor organization skills </li>
</ol>
<h6>Alternative careers</h6>
<ol>
<li>Antique dealer </li>
<li>Bag lady </li>
</ol>
<h5>4. Dysfunctional sense of causality</h5>
<h6>Symptoms</h6>
<ol>
<li>You seriously consider malice to be a reason why the compiler rejects your program </li>
<li>When called on to fix a bug in a deployed program, you try prayer </li>
<li>You take hidden variables for granted and don&#8217;t think twice about blaming them for a program&#8217;s misbehavior </li>
<li>You think the presence of code in a program will affect its runtime behavior, even if it is never invoked </li>
<li>Your debugging repertoire includes rituals like shining your lucky golf ball, twisting your wedding ring, and tapping the nodding-dog toy on your monitor. And when the debugging doesn&#8217;t work, you think it might be because you missed one or didn&#8217;t do them in the right order </li>
</ol>
<h6>Alternative careers</h6>
<ol>
<li>Playing the slot machines in Vegas </li>
</ol>
<h5>5. Indifference to outcomes</h5>
<p>Programming could still be a hobby for you, but it would be in society&#8217;s best interests to defend itself against your entry into the world of professional software development.</p>
<h6>Symptoms</h6>
<ol>
<li>You aren&#8217;t interested in fixing a bug that can be worked around by rebooting the computer </li>
<li>Your installation program silently deploys unsolicited third party programs that are unrelated to the function of yours * </li>
<li>You don&#8217;t use any ergonomic model when designing user interfaces, nor do you have any interest in usability studies </li>
<li>Your program exhibits pretension and grandeur beyond its utility, eg: displaying splash screens over active programs while loading in the background, or placing m