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

<channel>
	<title>Shades of Grey</title>
	<atom:link href="http://liwen.name/feed/" rel="self" type="application/rss+xml" />
	<link>http://liwen.name</link>
	<description></description>
	<lastBuildDate>Mon, 12 Sep 2011 06:57:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Things Learned from Making of Butler Alarm</title>
		<link>http://liwen.name/2011/08/08/things-learned-from-making-of-butler-alarm/</link>
		<comments>http://liwen.name/2011/08/08/things-learned-from-making-of-butler-alarm/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 11:40:46 +0000</pubDate>
		<dc:creator>Liwen</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://liwen.name/?p=143</guid>
		<description><![CDATA[How to put an iOS app into App Store?  The truth is far from &#8216;ideal&#8217; &#8211; developing an iOS application is somehow a frustrating process. You want to play Apple&#8217;s game? You have to follow Apple&#8217;s rules. Welcome to the jungle kid! Idea Let&#8217;s do some brainstorming and throw all our wonderful ideas on the [...]]]></description>
			<content:encoded><![CDATA[<p>How to put an iOS app into App Store? </p>
<p><img src="http://liwen.name/wp-content/uploads/2011/09/ios_development_ideal.jpg" alt="" title="ios_development_ideal" width="640" height="226" class="alignnone size-full wp-image-144" /></p>
<p>The truth is far from &#8216;ideal&#8217; &#8211; developing an iOS application is somehow a frustrating process. You want to play Apple&#8217;s game? You have to follow Apple&#8217;s rules. Welcome to the jungle kid!</p>
<h4>Idea</h4>
<p>Let&#8217;s do some brainstorming and throw all our wonderful ideas on the table &#8211; audio, video, animation, geo, gesture, social media, what else? One fact that gets overlooked here is that app is supposed to be simple, to do one thing and do it brilliantly. We learned the lesson at a late stage.</p>
<p>Users don&#8217;t care about all the fabulous additional features. Sometimes they are just fripperies distracting users&#8217; attention and make them confused. <span id="more-143"></span>If they cannot figure out how to use the main functionality, the app will be sentenced to death in seconds. Certain users have expectations about what the app should do by default, if your app does something different and innovative, makes sure your design is fool proof and test it with your 80 year old grandma before hitting the App store.</p>
<h4>Design</h4>
<p>&#8216;How about the design?&#8217; &#8216;It&#8217;s just a&#8230; clock face!&#8217; our brilliant designer looked bewildered. After 2 months, we had a folder full of design files: storyboard, icon, view designs, animation, transparent overlays, help screens, the list kept growing. The lesson learnt here is that get the wireframe right at the outset and stick to it until it has made a debut in the Apple Store.</p>
<p>Sometimes we got biased judgement of what is good and what is not, we forgot that not everyone is iPhone savvy user, not everyone knows that you can swipe to delete an email and actually half people (based on our sample) don&#8217;t know that the ringtone ringer and application volume are different. The philosophy that the user knows nothing, we need to tell them what to do is absolutely insightful. Remember to collect as many &#8216;difficulties of using the app&#8217; as possible before releasing it.</p>
<h4>Development</h4>
<p>After all the <a href="http://mikeash.com/pyblog/the-iphone-development-story.html">22 steps</a> and more than 140 hours clocked in my emacs, I felt I needed a small vacation. The uncertainty, the waiting and the pressure from peers can make the development process quite a daunting task. One thing I can remember vividly is sitting in the office on a raining Saturday afternoon, reading the 80+ pages of guidelines on how to distribute apps.</p>
<h4>Conclusion</h4>
<p>Treat app production as a serious development, don&#8217;t look down it because of it&#8217;s size. I admit our app is not perfect, we have a long list of improvements for the next update. Every time someone says good things about our baby, it puts a smile on my face.</p>
<p><a href="http://www.google.co.uk/url?sa=t&#038;source=web&#038;cd=4&#038;sqi=2&#038;ved=0CGEQFjAD&#038;url=http%3A%2F%2Fitunes.apple.com%2Fgb%2Fapp%2Fbutler-alarm%2Fid442156106%3Fmt%3D8&#038;ei=AhhpTrHTC86q8QPHq4EI&#038;usg=AFQjCNHoh96MWzlF9ol2CX7BF3m5xY1Q9w"><img src="http://liwen.name/wp-content/uploads/2011/09/App_Store_Badge.png" alt="" title="App_Store_Badge" class="alignnone size-full wp-image-176" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://liwen.name/2011/08/08/things-learned-from-making-of-butler-alarm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs Pinky</title>
		<link>http://liwen.name/2011/08/01/emacs-pinky/</link>
		<comments>http://liwen.name/2011/08/01/emacs-pinky/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 15:13:07 +0000</pubDate>
		<dc:creator>Liwen</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://liwen.name/?p=11</guid>
		<description><![CDATA[After suffered index finger pain from using mouse for a long time, I equipped all my systems with Emacs and decided to use GUI as sparingly as possible – if totally abandonment is not possible. Every time when I tell someone who knows Emacs that I use emacs for all my shell tasks, editing and [...]]]></description>
			<content:encoded><![CDATA[<p>After suffered index finger pain from using mouse for a long time, I equipped all my systems with Emacs and decided to use GUI as sparingly as possible – if totally abandonment is not possible.</p>
<p>Every time when I tell someone who knows Emacs that I use emacs for all my shell tasks, editing and programming, they would do the Emacs hands impression and check my fingers instinctively. This is actually one of the stereotypes that I like.<br />
<img title="emacs_hands" src="http://liwen.name/wp-content/uploads/2011/08/emacs_hands.png" alt="" />(<a href="ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-554.pdf">source ❐</a>)</p>
<p>Lucky enough I have the habit of using both Ctrl keys in standard IMB keyboard layout so I was not lurked to <a href="http://c2.com/cgi/wiki?RemapCapsLock">Remap Caps Lock Key</a>, which is a half-standard popular approach of giving left pinky double work based on the fact that traditional UNIX keyboards typically had the control key where the caps lock key is now. This knowledge is true, but it is not the correct answer to Emacs.</p>
<p>Emacs shortcuts were designed specifically for the <a href="http://en.wikipedia.org/wiki/File:Space-cadet.jpg">space-cadet keyboard</a> which is commonly used for <a href="http://en.wikipedia.org/wiki/Lisp_machine">List machines</a> in the 80s. In those keyboards, Ctrl key is the main modifier key and Meta is right after it as the secondary modifier. <span id="more-11"></span>In today&#8217;s IMB PC keyboard, the Meta key has been replace by Alt and the Ctrl key is placed in the corner far away out of thumb&#8217;s reach.Strange enough, in spite of the fact that IBM has changed the keyboard layout and made Ctrl one of the most costly key to press, almost all the software designs have followed the tradition of using Ctrl key as the main modifier key along with the HCI guidance published by IMB itself and Apple.<br />
<img title="keyboard-9647" src="http://liwen.name/wp-content/uploads/2011/08/keyboard-9647.jpg" alt="" /><br />
(<a href="http://www.asl.dsl.pipex.com/symbolics/photos/IO/index.html">Source ❐</a>)</p>
<p>At home, I use <a href="http://www.microsoft.com/hardware/mouseandkeyboard/productdetails.aspx?pid=043">Microsoft Natural Ergonomic 4000 keyboard</a>.<br />
<img class="alignnone size-full wp-image-44" title="keyboard-4000" src="http://liwen.name/wp-content/uploads/2011/08/keyboard-4000.png" alt="" /><br />
This is definitely one of the best keyboards you can get as a programmer, it has split keys oriented for each hands, very large modifier keys. Most importantly, they are symmetrically positioned on each side, which is the perfect design for people use modifier keys a lot. If that doesn&#8217;t satisfy you, you can even re-map the modifier keys with the IntelliType software comes with the keyboard. For example, you can swap Ctrl and Alt keys to make the keyboard function exactly same as original Symbolics Keyboards.</p>
<p>Things started to go wrong when I switched to a MacBook Pro, which only has one bad positioned Ctrl key.</p>
<p><img class="alignnone size-full wp-image-46" title="macbook-pro-keyboard" src="http://liwen.name/wp-content/uploads/2011/08/macbook-pro-keyboard.jpeg" alt="" width="550" height="309" /><br />
To cope with the pool design of precious Ctrl in Emacs, I re-mapped Caps Lock key for the first time . Who needs Caps Lock key anyway. Also I re-mapped Caps Lock key for my work PC in Windows XP, hoping to form the new finger habits quicker.</p>
<p>I can live with the feeling that my right pinky has been cut off and hope I can get used to it in a few weeks. But after a while, my left pinky hurts and It hurts a lot. I have been searching for the solutions and tried to work out the best one for my case. But after reading <a href="http://xahlee.org/emacs/emacs_pinky.html">How To Avoid The Emacs Pinky Problem</a>, I give up the thought of getting a Apple Keyboard just for the right Ctrl key.</p>
<p>To ease my pinky pain, I am bring the Microsoft Natural Ergonomic 4000 keyboard to work and upgrade to <a href="http://www.microsoft.com/hardware/mouseandkeyboard/ProductDetails.aspx?pid=095">Microsoft Natural Ergonomic 7000</a> for my home PC, then move back to Linux again. As for the Macbook Pro, I&#8217;ll just use it mainly for design and coding objective-c.</p>
<p><em>Update:</em> After a year and half of iOS development, now I am quite comfortable with remapped Caps Lock key as Ctrl key &#8211; thanks to the fact that majority of Emacs keyboard shortcuts work in xCode.</p>
]]></content:encoded>
			<wfw:commentRss>http://liwen.name/2011/08/01/emacs-pinky/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Early, Often, Thoroughly</title>
		<link>http://liwen.name/2009/11/24/early-often-thoroughly/</link>
		<comments>http://liwen.name/2009/11/24/early-often-thoroughly/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 15:07:11 +0000</pubDate>
		<dc:creator>Liwen</dc:creator>
				<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://liwen.name/?p=8</guid>
		<description><![CDATA[Along with the growth of my consciousness in software development, I discovered that there are three words which can be used universally really count: early, often and thoroughly. Here are two examples of using the template: Refactor early, refactor often, refactor thoroughly. Test early, test often, test thoroughly. For 9-5 programmers (The programmers who come [...]]]></description>
			<content:encoded><![CDATA[<p>Along with the growth of my consciousness in software development, I discovered that there are three words which can be used universally really count: <em>early</em>, <em>often</em> and <em>thoroughly</em>. Here are two examples of using the template:</p>
<p><em>Refactor early, refactor often, refactor thoroughly.</em><br />
<em>Test early, test often, test thoroughly.</em></p>
<p>For 9-5 programmers (The programmers who come to work at 9am, shut down their computers at 5pm and go home with coding-proof bubbles around them.), my points would seem to be over killing. The overwhelming effort needed to practice the principles is enormous, after all, not every coder would like to put these things as his/her epitaph.</p>
<p>For well versed desktop application developers, these three words, early, often and thorough, might not be innovative, as we all have read The Pragmatic programmer and Steve McConnell’s Code Complete. However, from a web developer’s point of view, they are quite interesting.</p>
<p>A typical web application development circle includes requirement, specification (optional), design, coding, testing and delivery. We apply different three word formulas to each stage.</p>
<h3>Requirements and Specification</h3>
<p><em>Gather early, gather often, gather thoroughly.</em></p>
<p>Clients, especially shareholders, usually are non tech savvy type of people, they come to you: ‘We want a website, we want it next month and we like Facebook pop-up bubbles!’. I am so glad you said ‘pop-up bubbles’!</p>
<p>Gathering requirements should be absolutely essential and it is the first deference of disappointment. Some small agencies, including the ones I worked with, tend to pitch their ‘free designs’ in the first meeting, do the hard sells, tell the client nothing could not be done – even if the client want the web to trap real fish.</p>
<p>Instead of trapping clients with free design and ocean deep low price and then rip them off when it comes to tiny changes and maintenance, a well composed contract that is based on enough requirements would be more appropriate. For web applications, personally I don’t think specifications are usually necessary and somehow they produce more disappointment than satisfactions. Reason? it’s not easy to get the specific level right. How specific is specific enough? ‘Membership management’ equals nothing when it comes to design and coding, but ‘The site needs three roles, respectively gusts, registered users and vip users’ will guarantee future changes to be incurred. For a requirements-change-everyday application, you might want to spend more time to gather the right requirements to ensure the solidity of design – both visual and coding.</p>
<h3>Design and Coding</h3>
<p><em>Refactor early, refactor often, refactor thoroughly</em></p>
<p>Not to repeat many great talks (PDF) and discussions on this topic, I will only say one point that I found very interesting yet paradoxical. DRY is the first thing I learned from my C++ class and I believed in it for many years. But for web applications, it becomes quite disadvantageous sometimes: If the page only needs to be alive for three days, code generator and wizard are your best bets. Duplication? don’t worry about that, you would not have a chance to modify them before they die out from Google.</p>
<h3>Testing and Delivery</h3>
<p><em>Test early, test often, test thoroughly.</em><br />
<em>User involve early, user involve often, user involve thoroughly.</em></p>
<p>Test is a big topic and will not be discussed here.</p>
<p>User involving might be a pleasant way to work with, it is definitely the most efficient way of avoiding disappointment and disagreement. Let the end users involve from the beginning to the end. Give them a prototype of interface to play with, ask for feedback after each stage/component. There is a thing called one-mind, but you and your client don’t usually have it. Sometimes user doesn’t know how much effect would be involved for a small change of his mind; sometimes a big change the client is afraid of telling you may only requires one line code change. Communicating with user can synchronize user’s expectation and developers’ decision, reducing the unhappiness caused by the parts which developers put a huge amount of effort in but lives out of user’s expectations and prevent client changing mind like a kid – which is far more efficient than specification and user would appreciate it.</p>
]]></content:encoded>
			<wfw:commentRss>http://liwen.name/2009/11/24/early-often-thoroughly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configure svn+ssh on Mac OS X</title>
		<link>http://liwen.name/2009/09/03/configure-svn-ssh-on-mac-osx/</link>
		<comments>http://liwen.name/2009/09/03/configure-svn-ssh-on-mac-osx/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 10:30:10 +0000</pubDate>
		<dc:creator>Liwen</dc:creator>
				<category><![CDATA[Learn]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://liwen.name/?p=103</guid>
		<description><![CDATA[I was reluctant to set up password-less svn+ssh access on my new MacBook Pro. The reason is that the key pair I am using were both generated by Putty, one deployed on Linux server and one for Windows clients. Until I found out that Mac OS comes with a SSH agent: ssh-agent is a program [...]]]></description>
			<content:encoded><![CDATA[<p>I was reluctant to set up password-less svn+ssh access on my new MacBook Pro. The reason is that the key pair I am using were both generated by Putty, one deployed on Linux server and one for Windows clients. </p>
<p>Until I found out that Mac OS comes with a SSH agent:</p>
<blockquote><p>ssh-agent is a program to hold private keys used for public key authentication (RSA, DSA). The idea is that ssh-agent is started in the beginning of an X-session or a login session, and all other windows or programs are started as clients to the ssh-agent program.</p></blockquote>
<p>With the ssh agent, we can add the identity once per login. It means &#8216;add once, use everywhere&#8217;! It will be really helpful if you use more than one clients to connect to the same repository server.</p>
<p>Step1:<br />
Use mac os build in <a href="http://developer.apple.com/documentation/Darwin/Reference/Manpages/man1/ssh-keygen.1.html#//apple_ref/doc/man/1/ssh-keygen">ssh-keygen</a> to generate a pair of openssh format keys. Deploy the public key on your server (assume your server uses openssh) and set up the appropriate permissions. If you already have a .ppk key, then a conversion from Putty format to openssh format would be the easiest way to go. It can be done either using <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">PuttyGen</a> in Windows OS or using a Putty Mac port (<a href="http://www.macports.org/">MacPorts</a> or <a href="http://putty.darwinports.com/">DawinPorts</a>).</p>
<p>Step2:<br />
Grant the private key file minimum permission. It needs to be:</p>
<pre class="brush: shell; gutter: true">chmod u=r,ga-rwx</pre>
<p>In the beginning I thought that <em>SSH_AUTH_SOCK</em> and <em>SSH_AGENT_PID</em> environment variables need to be set in subversion clients &#8211; unless you only use terminal. After a few failed attempts, it turned out that the <em>SSH_AGENT_PID</em> value changes form login to login. </p>
<p>Found the below from Apple website:</p>
<blockquote><p>/tmp/ssh-XXXXXXXXXX/agent.Unix-domain sockets used to contain the connection to the authentication agent. These sockets should only be readable by the owner. The sockets should get automatically removed when the agent exits.</p></blockquote>
<p>In this case, svn client needs to talk to the OS to find out the variable values. Since ssh-agent servers as a lower level service in the OS, it seems to be impossible to set up those values for svn clients manually and I assume it is not necessary.</p>
<p>Setp5:<br />
Find the following three files in the ~/.ssh/ directory (create if not exist).</p>
<blockquote><p>~/.ssh/identity<br />
Contains the protocol version 1 RSA authentication identity of the user.</p>
<p>~/.ssh/id_dsa<br />
Contains the protocol version 2 DSA authentication identity of the user.</p>
<p>~/.ssh/id_rsa<br />
Contains the protocol version 2 RSA authentication identity of the user.</p></blockquote>
<p>Append your private key in the right file (depends on the key type) and change the permission to <em>owner read only</em>, the ssh-agent will automatically read those files and add identities to the agent every time a ssh request occurs.</p>
<p>Now it&#8217;s really password-less!</p>
]]></content:encoded>
			<wfw:commentRss>http://liwen.name/2009/09/03/configure-svn-ssh-on-mac-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configure svn+ssh on Windows</title>
		<link>http://liwen.name/2009/08/31/configure-svnssh-on-windows/</link>
		<comments>http://liwen.name/2009/08/31/configure-svnssh-on-windows/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 10:42:16 +0000</pubDate>
		<dc:creator>Liwen</dc:creator>
				<category><![CDATA[Learn]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://liwen.name/?p=56</guid>
		<description><![CDATA[As a proud command line junkie, I never went anywhere without my Emacs settings, which made my hands look like old branches from dead tree in some desert, but that&#8217;s fine for me, it&#8217;s been a decade since I ceased my hand moulding career. Ok It&#8217;s a lie but seriously, I am not a big [...]]]></description>
			<content:encoded><![CDATA[<p>As a proud command line junkie, I never went anywhere without my Emacs settings, which made my hands look like old branches from dead tree in some desert, but that&#8217;s fine for me, it&#8217;s been a decade since I ceased my hand moulding career.</p>
<p>Ok It&#8217;s a lie but seriously, I am not a big fan of mice and timing function animated GUI, they usually slow me down and distract me from concentrating on the job I supposed to do itself. Besides, some really badly designed HCI, such as <a href="http://technet.microsoft.com/en-us/library/cc709628.aspx">Windows Vista UAC</a>, can easily push my buttons in all circumstances. People from Microsoft say:</p>
<blockquote><p>Disabling UAC risks your computer for allowing some worms to execute commands secretly without a prompt confirmation from end user.</p></blockquote>
<p>and I up voted this:</p>
<blockquote><p>Enabling UAC risks me throwing my computer out the window from frustration with a poorly designed and horribly executed security model.</p></blockquote>
<p>Forgive me being loquacious, the point here is I don’t want to use <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a> – I 100% agree with you that it’s a fantastic software, it integrates with Windows OS very well. I just need to get svn+ssh work with my Emacs shell mode so my SVN experience would be exact the same across Windows, Mac OS and Linux.</p>
<p>Let’s get started.</p>
<p>1. Download <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">Putty</a>, if you are like me always afraid of installing untrusted software from the Internet because you believe that they are mostly badly written piece of cr*p that they would mess your already trashed Windows OS completely then you can be greatly relieved here.</p>
<p>2. Start <em>Puttygen.exe</em> and generate a pair of keys, save the private key <em>without</em> passcode.</p>
<p>3. Copy the public key, yes <em>copy</em> not <del datetime="2011-08-31T13:31:28+00:00">save</del>, paste/append it to <em>$HOME/.ssh/authorized_keys</em>, create the file if it doesn’t exist.</p>
<p>4. After modified the <em>authorized_keys</em> file, remember to:</p>
<pre class="brush: bash; gutter: true">chmod 700 authorized_keys
chmod 600 .ssh</pre>
<p>This is important as you may get connection errors if the file is group writable.</p>
<p>5. Next, test the connection with <em>putty.exe</em> or <em>plink.exe</em>, (side note: TortoiseSVN has a plink.exe Windows implementation which would not pop up messages.)</p>
<pre class="brush: shell; gutter: true">plink.exe -i theprivatekey.ppk username@hostname</pre>
<p>6. Modify your subversion configuration file. It’s in <em>c:\Users\yourname\AppData\Roaming\Subversion</em> in Windows Vista<br />
add the following line to your <em>[tunnels]</em> section:</p>
<pre class="brush: shell; gutter: true">ssh=x:/path/plink.exe -i x:/path/privatekey.ppk</pre>
<p>Now you should be able to access your svn+ssh repository without typing password, in Microsoft Windows! Vista!</p>
<p>Some extra info for folks who love GUI – for TortoiseSVN users, you need to generate the OpenSSH private key from server, then load it with puttygen.exe and get the public key – it’s due to the fact that there are differences between private key implementations in putty and OpenSSH, otherwise you will get the “server refused our key” error message.</p>
<p>Update: Please check my <a href="/2009/09/03/configure-svn-ssh-on-mac-osx/">Configure svn+ssh on Mac OS</a> to see how to convert between existing putty private key and OpensSH private key.</p>
]]></content:encoded>
			<wfw:commentRss>http://liwen.name/2009/08/31/configure-svnssh-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Designing for the Social Web (Book Review)</title>
		<link>http://liwen.name/2009/06/24/designing-for-the-social-web-book-review/</link>
		<comments>http://liwen.name/2009/06/24/designing-for-the-social-web-book-review/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 15:15:07 +0000</pubDate>
		<dc:creator>Liwen</dc:creator>
				<category><![CDATA[Learn]]></category>

		<guid isPermaLink="false">http://liwen.name/?p=13</guid>
		<description><![CDATA[Web, a public place just like restaurants, libraries and pubs, has rapidly developed into a new phenomenon – I hope not many people have doubts over this statement. Who doesn&#8217;t want to build the next Facebook or Twitter? However, considering the complex interactions in social behaviour, designing for social web is definitely no easy task. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://liwen.name/wp-content/uploads/2011/08/designing_for_the_social_web-246x300.jpg" alt="" title="Designing for the Social Web" width="246" height="300" class="size-medium wp-image-21" style="float:left;margin: 0;padding: 30px 20px 10px 0;" /><br />
Web, a public place just like restaurants, libraries and pubs,  has rapidly developed into a new phenomenon – I hope not many people have doubts over this statement. Who doesn&#8217;t want to build the next Facebook or Twitter? However, considering the complex interactions in social behaviour, designing for social web is definitely no easy task.</p>
<p>The book starts with an introduction of &#8216;Part Interface Design, Part Psychology&#8217; and the typical rudimentary web &#8216;Usage Life-cycle&#8217; to raise readers&#8217; awareness of what hurdles social web design may face and the ultimate goal: &#8216;Better Design&#8217;. </p>
<p>Besides of clearing all the hurdles in the following chapters, there are lots of insights and clichés scattered across its 187 pages, some you may completely agree with and some would make you think.  Overall, it was an intriguing read for me. Just like the famous <em>Don&#8217;t Make Me Think</em> from Steve Krug, this book is more about common sense. It&#8217;s not rocket science, but you just don&#8217;t happen to have collected and have systematised all the simple bits and put them in good use. Comparing the style of drawing  conclusions from author&#8217;s own experience in <em>Don&#8217;t Make Me Think</em> to providing more results from research in <em>Designing for the Social Web</em>, this book suggests less detailed description of how to apply the insights into practice, which means you may have to combine your own experience with what the book says to find the best solutions on your own. I felt the author carried out very good research into the subject and represented it compactly yet coherently in a conversional style. </p>
<p>In the London Web Standards meet-up, we discussed this book and someone found that the chapter “Authentic Conversations” is a bit out of topic. Interestingly enough, I found this chapter is particularly useful and I would like to research it more. After been working for a media company, which runs several high profile social web sites for a while and based on the observation on how the publishing team runs the sites, I can see how we can improve and hopefully to put the knowledge learnt from the book in use in the future. It has been said, if you combine your own experience with what the author presented in the book, most likely you will find something interesting and useful.</p>
<p>If you grab this book before going on a trip or jumping on a commuter train, it could make you journey.</p>
]]></content:encoded>
			<wfw:commentRss>http://liwen.name/2009/06/24/designing-for-the-social-web-book-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Be the Only Tech Guy Who Wears Suit?</title>
		<link>http://liwen.name/2008/08/31/be-the-only-tech-guy-who-wears-suit/</link>
		<comments>http://liwen.name/2008/08/31/be-the-only-tech-guy-who-wears-suit/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 14:28:15 +0000</pubDate>
		<dc:creator>Liwen</dc:creator>
				<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://liwen.name/?p=76</guid>
		<description><![CDATA[When talking about tech guys, geeks, nerds’ dress code, what images would pop up in your head? You think because the pictures are too old? How about these? The above two were taken in 2008. I remember complaining to my fellow programmer friends that the worst thing about being a programmer is that you are [...]]]></description>
			<content:encoded><![CDATA[<p>When talking about tech guys, geeks, nerds’ dress code, what images would pop up in your head?<br />
<img src="http://liwen.name/wp-content/uploads/2011/08/dressing_1.jpg" alt="" title="Bad Geek Dressing Apple" class="alignnone size-full wp-image-77" />You think because the pictures are too old? How about these?<br />
<img src="http://liwen.name/wp-content/uploads/2011/08/dressing_2.jpg" alt="" title="Bad Geek Dressing Microsoft" class="alignnone size-full wp-image-77" />The above two were taken in 2008. </p>
<p>I remember complaining to my fellow programmer friends that the worst thing about being a programmer is that you are not supposed to dress smart, if you turned up at work in suit and heels, people would think you are going somewhere else for a job interview.</p>
<p>Lots of programmers take dressing smart as a hard concept to grasp and think that’s totally irrelevant to what they do, which is very sad in my opinion. Are t-shirts and jeans tech guys’ iconic wardrobe possessions, or tech guys just don’t need wardrobes because they only throw their clothes on the floor?</p>
<p>We were asked to dress smart at work today. I went to office in a small-collar-thin-lapel suit with skinny tie combination, which has being popular for the last two years and recently it even caught more attention because of the popular TV series ‘Mad Men’. I was comfortable with my tastes on clothes, and fortunately people liked it. The problem is: as a programmer, I seemed somehow ‘over-dressed’. The popular acknowledgment turned to be that tech guys’ smartness of clothing should be lower than other people at least one level under the same dress code, why is that? Is it a stereotype or most tech guys are just being lazy?</p>
<p>After work, I did a search with keywords “trendy nerd” on Google, there are only 346 results. Which made me wondering is there anything wrong with tech guys’ dress sense or it’s just me that likes ties? Would that even disqualify me being a good programmer?</p>
<p>Personally I like work clothes very much, it’s not I am having a suit fetish. In my mind, this is not about how you want other people to see you, it’s more about how you see yourself, how you feel about yourself – it’s more of an attitude.</p>
<p>Geek clothes can not be trendy or stylish, but there is also a difference between casual and slobby.</p>
<p>If you really don’t like suit, then think different!<br />
<img src="http://liwen.name/wp-content/uploads/2011/08/dressing_3.jpg" alt="" title="PC vs Mac" class="alignnone size-full wp-image-77" /></p>
]]></content:encoded>
			<wfw:commentRss>http://liwen.name/2008/08/31/be-the-only-tech-guy-who-wears-suit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
