<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>

  var _gaq = _gaq || [];
  _gaq.push([‘_setAccount’, ‘UA-13137273-1’]);
  _gaq.push([‘_trackPageview’]);

  (function() {
    var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
    ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;
    (document.getElementsByTagName(‘head’)[0] || document.getElementsByTagName(‘body’)[0]).appendChild(ga);
  })();</description><title>Fred Wu's Blog</title><generator>Tumblr (3.0; @ifredwu)</generator><link>http://fredwu.me/</link><item><title>Agile is not a Sham</title><description>&lt;p&gt;This blog post titled &amp;#8220;&lt;a href="http://williamedwardscoder.tumblr.com/post/20054342100/agile-is-a-sham" target="_blank"&gt;Agile is a Sham&lt;/a&gt;&amp;#8221; offends me a little bit. The post screams &lt;em&gt;hey, I am a cowboy programmer&lt;/em&gt;, and it almost implies that if you employ processes then you are stupid.&lt;/p&gt;

&lt;p&gt;In this day and age, I would have thought &lt;strong&gt;finding the right tool for the right job&lt;/strong&gt; is common sense. Apparently not.&lt;/p&gt;

&lt;p&gt;Agile, among many other things, is not a silver bullet - it never was and it never will be. The key thing is &lt;strong&gt;to experiment and find what works for you, your team and your company&lt;/strong&gt;. Most software projects are done in a team environment - putting a bunch of talented developers and designers together actually isn&amp;#8217;t as simple as many seem to think. One example is right out of that original blog post:&lt;/p&gt;

&lt;!-- more --&gt;

&lt;blockquote&gt;
  &lt;p&gt;Given that I am not a fan of prescribed process as the solution to our problems, you can infer my opinion of the general quality and effectiveness of those programmers who teach these courses.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From that attitude, I can already see that he is an &lt;em&gt;interesting&lt;/em&gt; developer to manage.&lt;/p&gt;

&lt;p&gt;A team needs to function efficiently &lt;strong&gt;as a team&lt;/strong&gt;. Having one or two ace developers aren&amp;#8217;t going to help a lot if they can&amp;#8217;t get along with the others.&lt;/p&gt;

&lt;p&gt;Not to mention that people have spent time and effort &lt;a href="http://research.microsoft.com/en-us/news/features/nagappan-100609.aspx" target="_blank"&gt;proving that techniques such as TDD work for certain projects&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As many things in life, there are always people who try to take advantage of others. No doubt there are questionable &amp;#8216;agile consultants&amp;#8217; who try to make a fortune out of uninformed clients. Just because some people aren&amp;#8217;t using agile effectively or even correctly, doesn&amp;#8217;t mean agile itself is a sham. Developers constantly make mistakes and write shitty code - should we say all the programming languages out there are a sham?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keep an open mind is important, and a lot of times even necessary.&lt;/strong&gt; To dismiss agile all together is in my opinion childish, and offensive to others who try to improve things and create more value.&lt;/p&gt;</description><link>http://fredwu.me/post/20058808238</link><guid>http://fredwu.me/post/20058808238</guid><pubDate>Wed, 28 Mar 2012 22:35:00 +1100</pubDate><category>agile</category><category>sham</category><category>cowboy</category><category>process</category></item><item><title>Zend Framework - From Extreme Simplicity to Enterprise!</title><description>&lt;p&gt;Today &lt;a href="http://www.alexhudson.com/2012/03/24/a-fond-farewell-to-zend-framework/" target="_blank"&gt;an interesting blog post on Zend Framework&lt;/a&gt; has made to the Hacker News front page. I have to agree with the author - Zend Framework is an over-engineered piece of software.&lt;/p&gt;

&lt;p&gt;A few years ago I was working full time as a PHP developer. Naturally, I had experimented with lots of frameworks, including &lt;a href="http://cakephp.org/" target="_blank"&gt;CakePHP&lt;/a&gt;, &lt;a href="http://codeigniter.com/" target="_blank"&gt;CodeIgniter&lt;/a&gt;, &lt;a href="http://kohanaframework.org/" target="_blank"&gt;Kohana&lt;/a&gt;, &lt;a href="http://www.yiiframework.com/" target="_blank"&gt;Yii&lt;/a&gt;, &lt;a href="http://www.symfony-project.org/" target="_blank"&gt;Symfony&lt;/a&gt; and obviously, &lt;a href="http://framework.zend.com/" target="_blank"&gt;Zend Framework&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Over the years, I had developed many projects primarily using CodeIgniter and later on, Kohana. There was one project that was larger in scale compared to an average PHP project (whatever that means), so I decided to use Zend Framework to take advantage of its component-based structure.&lt;/p&gt;

&lt;p&gt;The result? &lt;strong&gt;It was dreadful.&lt;/strong&gt;&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;At that time there wasn&amp;#8217;t any built-in or quick n&amp;#8217; easy way of bootstrapping a Zend Framework project, so we had to cook up our own. The documentation was absolutely horrible despite its completeness viewed from a distance - to find anything useful, Google is more likely to provide you with the answer, even from the results on the documentation site. And of course, the framework felt so heavy and long-winded. &lt;strong&gt;It, felt, Java.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In terms of the code structure, Zend Framework is almost the complete opposite of CakePHP - no offense to the CakePHP developers and users, but if you take a look at each framework&amp;#8217;s source code, you&amp;#8217;ll know what I mean.&lt;/p&gt;

&lt;p&gt;Having layers and layers of structures might appeal to certain users (Enterprise baby!), but does anyone still remember back in the day, how Zend was announcing/marketing the Zend Framework?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extreme simplicity!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That&amp;#8217;s right, Zend Framework was marketed as an extremely simple to use web framework. In fact, we can still &lt;a href="http://andigutmans.blogspot.com.au/2005/10/zend-framework-post-is-too-long-so.html" target="_blank"&gt;read Andi Gutsmans&amp;#8217; post on this topic&lt;/a&gt;. Let me quote the relevant part (emphasis mine):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;As some know, our ultimate goal for the framework is what we call &amp;#8220;&lt;strong&gt;Extreme Simplicity&lt;/strong&gt;&amp;#8221;. Some might have heard me use that term in some of the talks regarding PHP, and I&amp;#8217;d like to bring this concept over to the framework. &lt;strong&gt;I believe this is what the PHP spirit is all about&lt;/strong&gt; and the idea behind it is that it&amp;#8217;s possible to create very simple &amp;amp; easy-to-use languages&amp;amp;frameworks which still remain powerful and flexible.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Can anyone, including the Zend Framework developers, honestly say that Zend Framework is an extremely easy to use framework?&lt;/p&gt;

&lt;p&gt;I guess at the end of the day, in order to market PHP and Zend Framework as &amp;#8216;enterprise-ready&amp;#8217; with &lt;a href="http://www.zend.com/services/training/course-catalog/zend-framework" target="_blank"&gt;trainings&lt;/a&gt; and &lt;a href="http://www.zend.com/services/certification/framework/" target="_blank"&gt;certifications&lt;/a&gt;, something has to give.&lt;/p&gt;</description><link>http://fredwu.me/post/19888742513</link><guid>http://fredwu.me/post/19888742513</guid><pubDate>Sun, 25 Mar 2012 23:09:00 +1100</pubDate><category>php</category><category>zend</category><category>zend framework</category><category>extreme simplicity</category><category>simplicity</category><category>framework</category><category>java</category></item><item><title>On Hiring: Use Kanban for Managing Candidates and the Hiring Process</title><description>&lt;p&gt;Hiring is usually a long and difficult process - in order to streamline and simply it, I use &lt;a href="http://en.wikipedia.org/wiki/Kanban_(development)" target="_blank"&gt;Kanban&lt;/a&gt; to manage the whole process. I believe, hiring should be as lean and agile as our development process.&lt;/p&gt;

&lt;p&gt;My Kanban board for hiring (&lt;a href="http://bit.ly/spdevjob" target="_blank"&gt;we just started hiring at SitePoint!&lt;/a&gt;):&lt;/p&gt;

&lt;p&gt;&lt;a href="http://s3.amazonaws.com/imgly_production/3386474/original.png" target="_blank"&gt;&lt;img src="http://media.tumblr.com/tumblr_lzq4l7RaaJ1qalr27.png" alt=""/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;Using a Kanban board offers a number of advantages:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;a clear picture of the candidates with their feedback from code tests and interviews&lt;/li&gt;
&lt;li&gt;a straightforward view of where a candidate is at in the hiring process&lt;/li&gt;
&lt;li&gt;limited number of candidates in some stages to prevent chaos&lt;/li&gt;
&lt;li&gt;visual reminders to get in touch with the candidates, it&amp;#8217;s always a good idea to keep them in the loop&lt;/li&gt;
&lt;li&gt;a tight WIP limit for shortlisted candidates, there&amp;#8217;s no point to shortlist too many candidates&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;What do you think?&lt;/p&gt;</description><link>http://fredwu.me/post/17993679423</link><guid>http://fredwu.me/post/17993679423</guid><pubDate>Tue, 21 Feb 2012 15:20:00 +1100</pubDate><category>hiring</category><category>kanban</category><category>agile</category><category>candidate</category><category>job</category></item><item><title>On Hiring: How To Be a Non-Technical Co-Founder</title><description>&lt;p&gt;&lt;em&gt;If you are looking at hiring developers, &lt;a href="http://fredwu.me/post/16510145575/on-hiring-how-not-to-annoy-developers" target="_blank"&gt;check out my article on this subject&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The goal or the dream of working on your own startup is always full of excitement. And apart from some rare cases &lt;a href="http://www.forbes.com/sites/bruceupbin/2011/10/18/paul-graham-dropbox-and-the-single-founder-exception/" target="_blank"&gt;such as Dropbox&lt;/a&gt;, you probably need one or more co-founders to work with you on The Next Big Thing ™.&lt;/p&gt;

&lt;p&gt;Problem is, how do you (as a non-technical co-founder) find us? Or more specifically, how do you talk us into working with &lt;em&gt;you&lt;/em&gt; instead of some other billion-dollar ideas?&lt;/p&gt;

&lt;p&gt;To answer this question, we need to first ask, &lt;strong&gt;is there a billion-dollar idea&lt;/strong&gt;? The short answer is: &lt;strong&gt;NO&lt;/strong&gt;.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2&gt;Idea is worthless.&lt;/h2&gt;

&lt;p&gt;Well, that&amp;#8217;s not entirely true. I believe - &lt;strong&gt;idea, by itself, is worthless&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You will be surprised by the number of people contacting us and wanting to build a better Paypal or a better Amazon, without a concrete plan.&lt;/p&gt;

&lt;p&gt;A more worthwhile idea should contain not only the end goal of the project, but also a plan to reach the goal. What should we ship in the Minimal Viable Product? What are our marketing channels? What metrics should we look at? How do we use social media to our advantage? etc, etc.&lt;/p&gt;

&lt;h2&gt;We Are Not Just Wozniak, Are You Like Steve Jobs?&lt;/h2&gt;

&lt;p&gt;Apple is pretty much started by Wozniak as the technical co-founder and Steve Jobs as the idea/business co-founder.&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s think about this for a second.&lt;/p&gt;

&lt;p&gt;Steve Jobs did not &lt;em&gt;just&lt;/em&gt; have ideas. Very early on, he persuaded Wozniak to produce and sell &lt;em&gt;Apple I&lt;/em&gt; so they have some capital. Jobs was building the foundation. Without the foundation, there will be no failure or success to come.&lt;/p&gt;

&lt;p&gt;On the other hand, Wozniak had no intention to become an entrepreneur, he was happy to stay as an engineer even after the early Apple success. Nowadays though, most of us techies are much more ambitious than that.&lt;/p&gt;

&lt;p&gt;Ideally, as the technical co-founder, I would be doing most of Wozniak&amp;#8217;s work, and both you and I would be doing Steve Job&amp;#8217;s work.&lt;/p&gt;

&lt;p&gt;Drawing from my personal experience, as a technical person, there are a few &lt;em&gt;key&lt;/em&gt; attributes I look for in a co-founder (technical or otherwise).&lt;/p&gt;

&lt;h2&gt;Technical Ability&lt;/h2&gt;

&lt;p&gt;&amp;#8220;Excuse me? Aren&amp;#8217;t &lt;em&gt;you&lt;/em&gt; the technical co-founder? Why are you looking for &lt;em&gt;my&lt;/em&gt; technical ability?&amp;#8221; You ask.&lt;/p&gt;

&lt;p&gt;That is right. Even if you are not a developer by trade, having a certain degree of understanding of technologies is still crucial to most modern, web-based projects.&lt;/p&gt;

&lt;p&gt;There has never been a better time to start learning to code. Why not give &lt;a href="http://codeyear.com/" target="_blank"&gt;CodeYear&lt;/a&gt; and &lt;a href="http://www.khanacademy.org/#computer-science" target="_blank"&gt;Khan Academy&lt;/a&gt; a try?&lt;/p&gt;

&lt;p&gt;We all learnt physics and chemistry in high school even though most of us don&amp;#8217;t require the knowledge in our day to day life. Let&amp;#8217;s treat coding the same. Learn how to code will not only give you insights to how we solve problems, but will also close the communication gap between you and your technical co-founder.&lt;/p&gt;

&lt;h2&gt;Obsession&lt;/h2&gt;

&lt;p&gt;Wozniak is obsessed with electrical engineering and gadgets, Steve Jobs was obsessed with computer typefaces, good user experience and beautiful hardware.&lt;/p&gt;

&lt;p&gt;What are &lt;em&gt;you&lt;/em&gt; obsessed with?&lt;/p&gt;

&lt;p&gt;Only when you are obsessed with something, can you answer questions like &amp;#8220;what annoys you so much?&amp;#8221;&lt;/p&gt;

&lt;p&gt;As I wrote in &lt;a href="http://fredwu.me/post/8254974029/its-year-2011-why-arent-people-more-open-minded" target="_blank"&gt;an ealier article&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Inventions and innovations aren’t born out of happiness, they are born out of frustration, anger and sometimes, curiosity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Curiosity&lt;/h2&gt;

&lt;p&gt;In web-based projects, it is surprisingly easy to have &amp;#8220;what if …?&amp;#8221; scenarios. Not sure which sign up form will have a higher conversion rate? Easy, just make two or more of them and run A/B tests.&lt;/p&gt;

&lt;p&gt;Sometimes, as developers, we are so in the zone that we would keep on building stuff the way we envisioned. You will need to step in, pull us out, and say &amp;#8220;hey, have you thought about …? What if …?&amp;#8221;&lt;/p&gt;

&lt;p&gt;Flickr as it is today would never have existed if the founders didn&amp;#8217;t raise the question of &amp;#8220;hey, how about doing &lt;em&gt;just&lt;/em&gt; the photo uploading and sharing features?&amp;#8221;&lt;/p&gt;

&lt;h2&gt;High Expectation&lt;/h2&gt;

&lt;p&gt;&amp;#8220;This is shit!&amp;#8221; &amp;#8220;We can&amp;#8217;t ship this!&amp;#8221; If the product stinks, say so, and find ways to improve it. An MVP should always be half-polished, not half-arsed.&lt;/p&gt;

&lt;p&gt;The original iPhone was shipped without 3rd party native apps support, or multi-tasking - it wasn&amp;#8217;t ideal, but they didn&amp;#8217;t effect the core user experience. Now look at &lt;a href="http://en.wikipedia.org/wiki/BlackBerry_PlayBook#Reception_and_sales" target="_blank"&gt;PlayBook&lt;/a&gt;, it has the features most Android devices have, but the core user experience is so bad that the product never took off. If someone at RIM&amp;#8217;s top management had the same obsession on user experience as Steve Job&amp;#8217;s, PlayBook would never have shipped in such a bad shape.&lt;/p&gt;

&lt;h2&gt;Passion&lt;/h2&gt;

&lt;p&gt;Are you in this for the money? Or for something else? Wealth is rarely a good motivation for creating great products.&lt;/p&gt;

&lt;p&gt;&amp;#8220;It can potentially generate massive revenue and profit&amp;#8221; is a big red flag to me when someone pitches their projects.&lt;/p&gt;

&lt;p&gt;These are the &lt;em&gt;key&lt;/em&gt; attributes I look for. Things like people connections and experience are also important but not essential. What about you? Do you look for any particular attributes in your potential co-founder(s)?&lt;/p&gt;</description><link>http://fredwu.me/post/16623516071</link><guid>http://fredwu.me/post/16623516071</guid><pubDate>Sat, 28 Jan 2012 17:16:00 +1100</pubDate><category>hiring</category><category>technical</category><category>co-founder</category><category>entrepreneur</category><category>tips</category></item><item><title>On Hiring: How Not to Annoy Developers</title><description>&lt;p&gt;&lt;em&gt;If you are looking at finding technical co-founders, &lt;a href="http://fredwu.me/post/16623516071/on-hiring-how-to-be-a-non-technical-co-founder" target="_blank"&gt;check out my article on this subject&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In recent years developers become hotter and hotter - especially the good ones - they are hard to find, and they have plenty of employment options to choose from.&lt;/p&gt;

&lt;p&gt;Some companies (or individuals who are seeking freelancers) go the extra miles to impress developers with attractive salary/rate and perks, which is nice. But surprisingly, many companies and individuals seem to have a habit of keep doing things that will annoy developers.&lt;/p&gt;

&lt;p&gt;Over the years, I have personally encountered many situations that annoyed me as a developer. If you are looking for developers, here are a few things that I think you should be aware of.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2&gt;Budget Gap&lt;/h2&gt;

&lt;p&gt;Find out what the developer&amp;#8217;s salary/rate expectation is, there is no point if the developer is looking for $120k when you could only afford $80k. It&amp;#8217;s absurd to think that you might be able to persuade them with a significant pay cut.&lt;/p&gt;

&lt;h2&gt;Timing of Hiring&lt;/h2&gt;

&lt;p&gt;Don&amp;#8217;t advertise the position until you are fully ready to hire. Put a job ad up then go on holidays immediately after is a bizarre thing to do.&lt;/p&gt;

&lt;h2&gt;Recruiters&lt;/h2&gt;

&lt;p&gt;If you use recruitment agencies, please make sure you know them well enough and if not, do your fair share of research on them. Bad recruitment practices will cost you and damage your reputation. I once dealt with a recruiter who did not even bother to pass along my response to the offer back to the employer.&lt;/p&gt;

&lt;h2&gt;Technical Assessment&lt;/h2&gt;

&lt;p&gt;Unless you are Google or Facebook who have a huge pool of candidates to filter, it is probably a bad idea to test your candidate&amp;#8217;s technical skills with brainfuck coding questions on paper or on whiteboards.&lt;/p&gt;

&lt;p&gt;I am in favour of having candidates to do one or two coding tests (on their own, not during the interview) that will demonstrate their technical abilities without spending too much time or be under interview pressure. If a question is going to take a candidate more than a couple of hours to do, it is too much.&lt;/p&gt;

&lt;p&gt;The technical questions should focus on the logic behind a candidate&amp;#8217;s solutions, &lt;em&gt;not&lt;/em&gt; what functions or libraries a candidate may or may not remember from the API documentation.&lt;/p&gt;

&lt;p&gt;Also, pair programming is an excellent way for both parties to get a sense of what it is like to work together.&lt;/p&gt;

&lt;h2&gt;Communication Channel&lt;/h2&gt;

&lt;p&gt;This applies more to hiring remote workers and freelancers. If you are pitching your project to a developer, please at the very least write a sentence or two to explain what your project is.&lt;/p&gt;

&lt;p&gt;&amp;#8220;Would you have time to have a quick chat?&amp;#8221; is simply not good enough - good developers are all very busy and are likely to have many projects or potential projects to work on. Even if the developers have the time to chat to you (without knowing what your project is), it is still better to have the conversation via emails so the developers can keep track of things.&lt;/p&gt;

&lt;h2&gt;Developer Relationship&lt;/h2&gt;

&lt;p&gt;Recently there is a company in Melbourne who burnt a huge bridge with some of the most respected and talented local developers. Now they are having trouble finding talents even with inflated salary/rate. Moral of the story is, please always treat developers properly.&lt;/p&gt;

&lt;p&gt;So, these are the few things I can think of for now. How about you? I would love to hear your thoughts and stories on hiring developers.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://news.ycombinator.com/item?id=3513060" target="_blank"&gt;Hacker News comments here.&lt;/a&gt;&lt;/p&gt;</description><link>http://fredwu.me/post/16510145575</link><guid>http://fredwu.me/post/16510145575</guid><pubDate>Thu, 26 Jan 2012 16:42:00 +1100</pubDate><category>hiring</category><category>recruitment</category><category>developer</category><category>tips</category></item><item><title>The Lean Startup - The Book Every Entrepreneur Should Read</title><description>&lt;p&gt;Holidays period is the perfect time to gear up and learn a thing or two from the masters - and as it turned out, reading Eric Ries&amp;#8217; &lt;a href="http://theleanstartup.com/" target="_blank"&gt;The Lean Startup&lt;/a&gt; is one of the most exciting and joyful things I&amp;#8217;ve done during the holidays.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lx26lsQ7Hm1qalr27.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;In this book you won&amp;#8217;t find long-winded and boring theories, instead the book is full of real world use cases and practical advices.&lt;/p&gt;

&lt;p&gt;If you are an entrepreneur, or if you are responsible for product development, I urge you to read this book if you haven&amp;#8217;t already. :)&lt;/p&gt;</description><link>http://fredwu.me/post/15074546787</link><guid>http://fredwu.me/post/15074546787</guid><pubDate>Sat, 31 Dec 2011 19:18:19 +1100</pubDate><category>lean</category><category>startup</category><category>The Lean Startup</category><category>Eric Ries</category><category>book</category><category>recommendation</category></item><item><title>Blog Redesigned For 2012, And New Challenges Ahead</title><description>&lt;p&gt;After four days of sketching, designing and cutting up HTML/CSS, the new design (as you are seeing now) is finally live!&lt;/p&gt;

&lt;p&gt;The new design is structurally similar to &lt;a href="http://fredwu.me/post/421741438/blog-redesigned" target="_blank"&gt;the old design&lt;/a&gt;, but with a fresh header and better use of space.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lwtph23mnm1qalr27.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;A new year warrants a fresh start. Apart from the redesign, I have also started heading up the development effort at &lt;a href="http://sitepoint.com/" target="_blank"&gt;SitePoint&lt;/a&gt; - dozens of interesting and challenging projects ahead!&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lwtpuklt5o1qalr27.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;2012 will be an awesome year! :)&lt;/p&gt;</description><link>http://fredwu.me/post/14818525265</link><guid>http://fredwu.me/post/14818525265</guid><pubDate>Tue, 27 Dec 2011 05:28:29 +1100</pubDate><category>2012</category><category>new year</category><category>redesign</category><category>design</category><category>blog</category><category>SitePoint</category></item><item><title>Startup, VC, and the Things I Learnt from Open-sourcing A 200+ Hour Client Project</title><description>&lt;p&gt;A couple of days ago, a blog post titled &lt;a href="http://blog.itlater.com/first-employee-of-startup-you-are-probably-getting-screwed/" target="_blank"&gt;&amp;#8220;First employee of startup? You are probably getting screwed!&amp;#8221;&lt;/a&gt; has made to the Hacker News front page and has &lt;a href="http://news.ycombinator.com/item?id=2949323" target="_blank"&gt;spawned some great discussion and debate&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Since &lt;a href="http://fredwu.me/post/9036730472/open-sourcing-a-200-hour-project-the-story-behind-it" target="_blank"&gt;I had just been screwed recently&lt;/a&gt;, I thought it might be a good opportunity for me to share what I&amp;#8217;ve learnt.&lt;/p&gt;

&lt;p&gt;After my story got &lt;a href="http://news.ycombinator.com/item?id=2891907" target="_blank"&gt;picked up by Hacker News&lt;/a&gt; and some other sites, I was contacted by my client. It was a very interesting and surreal experience which included keywords such as &lt;em&gt;sue&lt;/em&gt;, &lt;em&gt;settle&lt;/em&gt;, &lt;em&gt;donation&lt;/em&gt; and &lt;em&gt;disappearance&lt;/em&gt;. I am however going to spare you the details and instead, going to focus on the things I have learnt.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h3&gt;Be Strong, Be Emotionless&lt;/h3&gt;

&lt;p&gt;The biggest mistake I made, was being too emotional - not in the sense of being emotionally attached to the project, but in the sense of being emotionally &lt;em&gt;attached to the opportunity&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Despite having detected some negative signs (which I will cover later), I willingly chose to continue on with the project because I &lt;em&gt;wanted&lt;/em&gt; it to work out. I &lt;em&gt;wanted&lt;/em&gt; to be involved early in a startup, I &lt;em&gt;wanted&lt;/em&gt; to create a product that will have large impact, I &lt;em&gt;wanted&lt;/em&gt; to have uncertainties and excitement, and I &lt;em&gt;wanted&lt;/em&gt; to force myself to be busy.&lt;/p&gt;

&lt;p&gt;I was blindsided because of my desires - even though deep in my heart, I already felt the failure approaching.&lt;/p&gt;

&lt;h3&gt;Be Informed Who You Are Dealing With&lt;/h3&gt;

&lt;p&gt;My client, who was referred to me by a strong and reputable PHP developer, is well educated, has an MBA, and has worked as a VP of a major US corporation before he decided to start his own startup.&lt;/p&gt;

&lt;p&gt;But didn&amp;#8217;t that just prove doing background-checking is useless, you might wonder? No. It is still a useful exercise - it proves the fact that, even legit clients can do dodgy things. Therefore you would want to pay more attention to picking up negative signs rather than being impressed by their reputation and/or portfolio.&lt;/p&gt;

&lt;h3&gt;Be Alert, Pick Up Tells&lt;/h3&gt;

&lt;p&gt;Just like playing poker, you need to stay alert and try to pick up tells. What are the tells? Well, in my client&amp;#8217;s case:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;He often emphasise the importance of communication, but he communicated poorly via emails.&lt;/li&gt;
&lt;li&gt;He had unrealistic deadlines.&lt;/li&gt;
&lt;li&gt;He was overly optimistic about the success of his startup.&lt;/li&gt;
&lt;li&gt;He tried to lower my compensation expectation by using poor arguments.&lt;/li&gt;
&lt;li&gt;He would call me up and talk for 20+ minutes when he was fully aware that I was at work (at my day job).&lt;/li&gt;
&lt;li&gt;He was not being transparent and upfront about the VC side of things.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The list goes on.&lt;/p&gt;

&lt;p&gt;No one is perfect, of course. A minor tell or two might just be considered quirks, but half a dozen or more - you run.&lt;/p&gt;

&lt;h3&gt;Be Informed About Market Rates&lt;/h3&gt;

&lt;p&gt;Before negotiating my rates, I had done quite a lot of research online - it provided me with context.&lt;/p&gt;

&lt;p&gt;As a non-full time, principal developer and designer, my compensation package was approximately:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;An hourly rate that is equivalent to 50% of my full time salary, or 30% of my contract/freelance rate.&lt;/li&gt;
&lt;li&gt;2% of the company, after the seed round.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;In return, a 20-40 hours per week sweat investment was expected from me. To me, it was not a bad deal since I don&amp;#8217;t rely on the success of the startup in order to feed myself - I still have my day job.&lt;/p&gt;

&lt;p&gt;One thing to note, is that the agreed package was actually a result of me being too emotionally invested in the opportunity. The offer from my client was originally:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;An hourly rate that is equivalent to 90%+ of my full time salary, or 50% of my contract/freelance rate.&lt;/li&gt;
&lt;li&gt;1% of the company, after the seed round.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;See what I did there? I was emotional enough to trade immediate return for potential future return.&lt;/p&gt;

&lt;p&gt;One of the best advices I got from more experienced people in this field is that, always treat equities (or employee options) as a bonus that is likely to never happen.&lt;/p&gt;

&lt;h3&gt;Be Cautious About the Information Received&lt;/h3&gt;

&lt;p&gt;Until written on paper and signed, any information you were told should be taken with a grain of salt. Often than not, people would say things to favour and/or support their cases.&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;$2mil&lt;/em&gt; seed around valuation figure that was told (but was never proved) by my client has indeed influenced my decision of trading my hourly rate for equity.&lt;/p&gt;

&lt;h3&gt;Be Positive, No Matter What Happens&lt;/h3&gt;

&lt;p&gt;Positive thinking - one of the most powerful attitudes to ensure your happiness, is the key and morale of the story. You see, even though I went through a lot of stressful days and nights, I still consider the whole experience being positive.&lt;/p&gt;

&lt;p&gt;Why? Because I learnt a lot. I learnt many things that I would not have learnt from working at my day job or freelancing. It gives me more confidence for my next startup adventure (whether it&amp;#8217;s for someone else, or &lt;a href="http://wuit.com/" target="_blank"&gt;for myself&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;Be Adventurous&lt;/h3&gt;

&lt;p&gt;Don&amp;#8217;t be scared by other people&amp;#8217;s experience. Steve Jobs once said something along the line of - &lt;a href="http://youtu.be/3LEXae1j6EY?t=28m50s" target="_blank"&gt;they started Apple because they didn&amp;#8217;t know any better&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I can comfortably say that, I am very much looking forward to my next adventure! :)&lt;/p&gt;</description><link>http://fredwu.me/post/9703934823</link><guid>http://fredwu.me/post/9703934823</guid><pubDate>Fri, 02 Sep 2011 22:49:00 +1000</pubDate><category>Angel Nest</category><category>Hacker News</category><category>startup</category><category>VC</category><category>experience</category><category>equity</category><category>freelance</category><category>compensation</category><category>job</category></item><item><title>Skype.com - A Quick Example of UX Failure</title><description>&lt;p&gt;Today I noticed that I don&amp;#8217;t have Skype installed, so naturally, I went to Skype.com. Then I was presented with their homepage:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lqsaqvMauJ1qalr27.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;The problem? No &amp;#8220;Download&amp;#8221; action button above the fold, or below the fold for that matter. That is, quite frankly, shocking.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;So I hovered on the &amp;#8220;Get Skype&amp;#8221; drop down menu and clicked on the one for Mac. On the new page I was presented with, I clicked on the &amp;#8220;Download Skype&amp;#8221; button. And then &amp;#8230;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lqsatrI5XY1qalr27.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Oh snap! You&amp;#8217;d have to either create an account or sign in before you could download Skype! Worse, by default it shows you the create an account section, and that section took a good 10 seconds to load for me for the first time.&lt;/p&gt;

&lt;p&gt;Is this some kind of prank from the Microsoft enterprise? *shakes head*&lt;/p&gt;</description><link>http://fredwu.me/post/9621390590</link><guid>http://fredwu.me/post/9621390590</guid><pubDate>Wed, 31 Aug 2011 18:46:00 +1000</pubDate><category>Skype</category><category>UX</category><category>fail</category><category>Microsoft</category><category>action button</category></item><item><title>Open-sourcing A 200+ Hour Project - The Story Behind It</title><description>&lt;p&gt;&lt;em&gt;Update: I have blogged about &lt;a href="http://fredwu.me/post/9703934823/startup-vc-and-the-things-i-learnt-from-open-sourcing" target="_blank"&gt;the things I have learnt&lt;/a&gt; from this.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Last night, after some long overdue frustration, I have open sourced &lt;a href="https://github.com/fredwu/angel_nest" target="_blank"&gt;Angel Nest&lt;/a&gt; - an online platform for connecting entrepreneurs and investors, similar to &lt;a href="http://angel.co/" target="_blank"&gt;AngelList&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Shortly after I open sourced my work, the news &lt;a href="http://news.ycombinator.com/item?id=2891907" target="_blank"&gt;got picked up by Hacker News&lt;/a&gt; and went onto its front page. (Update: I was just informed that the story &lt;a href="http://www.reddit.com/r/programming/comments/jkr8r/developer_opensources_200_hr_project_after_client/" target="_blank"&gt;was picked up&lt;/a&gt; by Reddit as well.) The &lt;a href="https://github.com/fredwu/angel_nest" target="_blank"&gt;Github repository&lt;/a&gt; has since been followed by 250+ people and forked by 60+ times - it became one of the Github&amp;#8217;s daily trending repositories.&lt;/p&gt;

&lt;p&gt;Since then I have received many warm regards from fellow developers and entrepreneurs. Thank you so much guys! I will reply to each one of you as soon as I have a chance. :)&lt;/p&gt;

&lt;p&gt;From the Hacker News comments as well as some of the comments received privately, there were a few questions raised, and I hope to address some of them in this blog post.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2&gt;Why didn&amp;#8217;t you charge upfront or by milestone?&lt;/h2&gt;

&lt;p&gt;Well, because it wasn&amp;#8217;t a simple freelance or contract job. I was approached and asked to become the then to-be-set-up company&amp;#8217;s first employee (yes, an employee, not a technical co-founder). At the time of our work agreement negotiation, the company was still to be formed and the investors were still to be signed on - no term sheets or contracts have been signed by any of the investors.&lt;/p&gt;

&lt;p&gt;As a result, I agreed to put the invoices on hold for a while (i.e. a couple of weeks, according to him), then I will start invoicing the company fortnightly.&lt;/p&gt;

&lt;p&gt;Oh, and many of you think I am a freelancer. Well, yes and no, I freelance, but my income is mostly from my full time job (as a web developer, of course). :)&lt;/p&gt;

&lt;h2&gt;Still, why did you trust him so easily?&lt;/h2&gt;

&lt;p&gt;Before I agreed to work on the project, I did some background-checking of this so-called entrepreneur - everything seemed legit - he was a developer himself a few years ago; he worked as a VP in a major corporation in the States before committing himself to this project; and from the few Skype conversations we had, he seemed to understand how to keep a developer happy. As a matter of fact, he had stressed many times that he would pay the developers a fair deal in order to keep them happy.&lt;/p&gt;

&lt;h2&gt;And how could you have agreed to work for him without any contracts?&lt;/h2&gt;

&lt;p&gt;Being a person with goodwill, I agreed to work for him on this project - essentially as the principal developer. My contribution was supposed to be compensated by a low hourly rate + equity in the company - the figures were agreed both verbally and via written Email.&lt;/p&gt;

&lt;p&gt;Ordinarily I value equity very little. However, the way he described the investment situation - the company being valued at $2M, with investment from several top VCs and angels in China - got me believed that the company had a very strong lineup of investors and a reasonably large sum of first round investment.&lt;/p&gt;

&lt;p&gt;To this day I still do not know what the actual investment situation is. It seems to be a sensitive topic whenever I brought it up during our conversations.&lt;/p&gt;

&lt;h2&gt;Why didn&amp;#8217;t you stop working sooner?&lt;/h2&gt;

&lt;p&gt;I wanted to be professional - I cared more about building an awesome product than receiving a fat cheque (not that the cheque will be fat anyway, given the low hourly rate).&lt;/p&gt;

&lt;p&gt;He stressed many times that the project is very time sensitive and we needed to launch as soon as possible.&lt;/p&gt;

&lt;p&gt;And in order to speed up the development progress, I even took two weeks off work (with many unpaid leave days) and worked on this project. Looking back, I lost not only the compensation I am entitled to, but also a fraction of the salary that puts food on my table.&lt;/p&gt;

&lt;h2&gt;Are you upset?&lt;/h2&gt;

&lt;p&gt;Actually, not really. As I said before, I care more about building fine products than receiving more money - just the fact that I worked on a real Rails 3.1 project is very fulfilling in itself. And the fact that I received so many warm regards and comments - I am :) rather than :(.&lt;/p&gt;

&lt;p&gt;As for the non-paying client, well, this isn&amp;#8217;t my first time, and I usually just choose to forget about them and move on. I have too many more important things to worry about than chasing after payments.&lt;/p&gt;

&lt;h2&gt;Can I donate?&lt;/h2&gt;

&lt;p&gt;I sincerely thank you for your offer, but no I do not need donation.&lt;/p&gt;

&lt;h2&gt;What about the intellectual property? Any NDA?&lt;/h2&gt;

&lt;p&gt;We have no contracts or any paper signed whatsoever, despite I requesting them repeatedly - hence why I could release the source code at my will.&lt;/p&gt;

&lt;h2&gt;Why release the source code in MIT?&lt;/h2&gt;

&lt;p&gt;Because I am a big fan of total freedom in open source. I &lt;a href="http://fuckgpl.com/" target="_blank"&gt;do not like&lt;/a&gt; the GPL family of licenses. Having said that, I respect the opinion of other peoples&amp;#8217;, so I dual licensed the source code under GPL as well.&lt;/p&gt;

&lt;h2&gt;But open-sourcing the system gives them access?&lt;/h2&gt;

&lt;p&gt;They (the entrepreneur himself, and another account who I suspect is the new developer) already have access to the Github repository. Their access was revoked just before I open sourced the work.&lt;/p&gt;

&lt;p&gt;To be honest, I could not care less what they do with the source code. Just the fact that he chose to shaft me is a strong enough indication that he will not succeed.&lt;/p&gt;

&lt;h2&gt;Again, why open source now?&lt;/h2&gt;

&lt;p&gt;I would have waited a little longer if it wasn&amp;#8217;t for the fact that his new developers don&amp;#8217;t seem to know what they were doing. A while ago I received a bunch of broken test emails sent to my inbox - indicating that he&amp;#8217;s already hired someone else to continue the development work. Last night, a bunch of test emails came through again - so that was when I decided enough is enough.&lt;/p&gt;

&lt;h2&gt;Is it wise for you to do this?&lt;/h2&gt;

&lt;p&gt;I don&amp;#8217;t know, you decide! :) Is gifting the source code to someone who might find it useful a good thing? I sure hope so.&lt;/p&gt;

&lt;h2&gt;Are you looking for freelance work?&lt;/h2&gt;

&lt;p&gt;Nope. Not because I just got burned, but because I have &lt;a href="http://wuit.com/" target="_blank"&gt;my own adventures&lt;/a&gt; to pursue.&lt;/p&gt;

&lt;h2&gt;What about other work and/or startup opportunities?&lt;/h2&gt;

&lt;p&gt;You may find out by dropping me a line, all my contact details can be found on this blog. :)&lt;/p&gt;

&lt;h2&gt;I am interested, but who are you?&lt;/h2&gt;

&lt;p&gt;Scroll down to the bottom of the page and you will find my bio with a couple of links. :)&lt;/p&gt;</description><link>http://fredwu.me/post/9036730472</link><guid>http://fredwu.me/post/9036730472</guid><pubDate>Wed, 17 Aug 2011 21:55:00 +1000</pubDate><category>Angel Nest</category><category>China</category><category>Hacker News</category><category>open source</category><category>GPL</category><category>MIT</category><category>VC</category><category>angel</category><category>investor</category><category>entrepreneur</category><category>equity</category><category>freelance</category><category>contract</category></item><item><title>It's Year 2011, Why Aren't People More Open-minded?</title><description>&lt;p&gt;&lt;em&gt;On a cold windy day, we are comfortably sitting in our chairs beside the fireplace, holding a mug full of hot tasty latte. We are slowly and calmly sipping on our coffee, imagining that things could be far worse outside of our safe and warm house.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Exactly how do we know that things could be far worse? We don&amp;#8217;t, because we are too comfortable and too familiar with what we currently have.&lt;/p&gt;

&lt;p&gt;Being happy with where you are is one thing, being ignorant is another.&lt;/p&gt;

&lt;p&gt;Inventions and innovations aren&amp;#8217;t born out of happiness, they are born out of frustration, anger and sometimes, curiosity.&lt;/p&gt;

&lt;p&gt;Being open-minded about how things work, in my opinion is one of the key attributes an entrepreneur should have.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;All decisions come with implications and consequences, to dismiss an alternative approach, or worse, to not have any alternative approaches at all because of ignorance is often one of the first signs of failure.&lt;/p&gt;

&lt;p&gt;Successes are built on many failures, there is no doubt about that. However, failures should be the outcome of experimentation rather than ignorance.&lt;/p&gt;

&lt;p&gt;Frustrations and concerns arise when businesses make decisions (or should I say, mistakes) because the decision makers are close-minded - whether it&amp;#8217;s a decision about choosing a piece of technology, or it&amp;#8217;s a decision about sticking to a fixed launch date.&lt;/p&gt;

&lt;p&gt;Blindly following some rare exceptions such as Apple and 37signals is probably not going to work for most of us.&lt;/p&gt;

&lt;p&gt;But heck, what do I know, I am just a web developer, right?&lt;/p&gt;</description><link>http://fredwu.me/post/8254974029</link><guid>http://fredwu.me/post/8254974029</guid><pubDate>Sat, 30 Jul 2011 22:01:00 +1000</pubDate><category>rant</category><category>decisions</category><category>mistakes</category><category>success</category><category>failure</category><category>open mind</category><category>ignorance</category></item><item><title>Comic: Because ActiveRecord is Slow!</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lnwv8teVP01qb7ot5o1_r3_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Comic: Because ActiveRecord is Slow!&lt;/p&gt;</description><link>http://fredwu.me/post/7300017337</link><guid>http://fredwu.me/post/7300017337</guid><pubDate>Wed, 06 Jul 2011 22:12:00 +1000</pubDate><category>comic</category><category>activerecord</category><category>mongomapper</category></item><item><title>Moving On From Envato, What's Next?</title><description>&lt;p&gt;Today is my last day at &lt;a href="http://envato.com/" target="_blank"&gt;Envato&lt;/a&gt;. I have been working here for a year and half and it has been, without a doubt the most fulfilling experience I have ever had in my professional career.&lt;/p&gt;

&lt;p&gt;I was hired as a PHP developer initially. Who knew, several months into the job I was &amp;#8216;converted&amp;#8217; voluntarily to a full time Ruby developer - and it has been &lt;em&gt;the&lt;/em&gt; highlight of my career progression. It is hard to imagine what I would have become if it wasn&amp;#8217;t for Envato&amp;#8217;s support behind my conversion.&lt;/p&gt;

&lt;p&gt;During my time at Envato, I had the opportunity to work with some of the most talented people in the web industry, from both inside Envato and externally. I am extremely grateful for the experience and I hope to work with them again in the future.&lt;/p&gt;

&lt;p&gt;The decision of moving on from Envato was not made easily. As a matter of fact, I have always been passionate about online education (e.g. the &lt;a href="http://tutsplus.com/" target="_blank"&gt;Tuts+ network&lt;/a&gt;) and I sincerely hope the project will be taken to the next level.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;Oh hey, I am still working on a book project with &lt;a href="http://rockablepress.com/" target="_blank"&gt;Rockable Press&lt;/a&gt; from Envato. If you are a web developer, expect to see a (hopefully useful) web development book this year. ;)&lt;/p&gt;

&lt;p&gt;10 days from now I will be joining &lt;a href="http://playup.com/" target="_blank"&gt;PlayUp&lt;/a&gt; as a senior web developer - to work on more awesome Ruby/Rails stuff! :) The colleagues I have already met at PlayUp are extremely talented and friendly. I cannot wait to start my first day there!&lt;/p&gt;

&lt;p&gt;Aside from my day job, I am also working with some very experienced professionals on a startup project - hopefully you will get to hear more about it soon.&lt;/p&gt;

&lt;p&gt;Last but not least, I am finally out of some personal and relationship crisis, and I am able to regain my focus and spend more time working on my varies side projects (to be branded under &lt;a href="http://wuit.com/" target="_blank"&gt;Wuit&lt;/a&gt;) as well as on some of the open source projects such as &lt;a href="http://slim-lang.com/" target="_blank"&gt;Slim&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Exciting times ahead! :)&lt;/p&gt;</description><link>http://fredwu.me/post/3912935571</link><guid>http://fredwu.me/post/3912935571</guid><pubDate>Thu, 17 Mar 2011 14:04:00 +1100</pubDate><category>Envato</category><category>PlayUp</category><category>Rockable Press</category><category>job</category></item><item><title>My entry to the RubyCommitters design contest. View it in action...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lf8ozrtSef1qb7ot5o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;My entry to the RubyCommitters design contest. View it in action at &lt;a href="http://heroesofruby.heroku.com/" target="_blank"&gt;http://heroesofruby.heroku.com/&lt;/a&gt; :-)&lt;/p&gt;</description><link>http://fredwu.me/post/2816823595</link><guid>http://fredwu.me/post/2816823595</guid><pubDate>Wed, 19 Jan 2011 09:26:15 +1100</pubDate><category>design</category><category>contest</category><category>rubycommitters</category><category>ruby</category></item><item><title>Sneak peak of the redesign of slim-lang.com. :)</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lduoh5xH981qb7ot5o1_r1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Sneak peak of the redesign of slim-lang.com. :)&lt;/p&gt;</description><link>http://fredwu.me/post/2420977306</link><guid>http://fredwu.me/post/2420977306</guid><pubDate>Thu, 23 Dec 2010 09:15:00 +1100</pubDate><category>Slim</category><category>redesign</category><category>layout</category><category>logo</category></item><item><title>[Ruby] Haml2Slim, Convert Your HAML Templates to Slim Templates</title><description>&lt;p&gt;So, you are using Slim, right? If not, go &lt;a href="https://github.com/stonean/slim" target="_blank"&gt;check it out&lt;/a&gt; because it&amp;#8217;s awesome. ;)&lt;/p&gt;

&lt;p&gt;Now, I don&amp;#8217;t know about you but prior to Slim I use Haml quite a bit, and even though syntax-wise Haml and Slim have a lot in common, it&amp;#8217;s still quite a challenge to convert all Haml templates to Slim templates.&lt;/p&gt;

&lt;p&gt;As a result, let me present you with a quick n&amp;#8217; dirty Haml2Slim converter! &lt;a href="https://github.com/fredwu/haml2slim" target="_blank"&gt;Check out the source code.&lt;/a&gt;&lt;/p&gt;</description><link>http://fredwu.me/post/2334862541</link><guid>http://fredwu.me/post/2334862541</guid><pubDate>Thu, 16 Dec 2010 20:08:51 +1100</pubDate><category>ruby</category><category>haml</category><category>slim</category><category>converter</category><category>html</category><category>template</category></item><item><title>[Ruby] Releasing Ssync - An Optimised S3 Sync Tool Using the Power of Unix!</title><description>&lt;p&gt;At &lt;a href="http://envato.com/" target="_blank"&gt;Envato&lt;/a&gt; we have a few dozen sites residing on multiple servers. The data on a portion of the servers need to be regularly backed up to &lt;a href="http://aws.amazon.com/s3/" target="_blank"&gt;Amazon S3&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The Envato Mad Scientist &lt;a href="http://github.com/ryan-allen" target="_blank"&gt;Ryan Allen&lt;/a&gt; has worked on a script called &lt;a href="http://github.com/ryan-allen/sir-sync-a-lot" target="_blank"&gt;Sir Sync-A-Lot&lt;/a&gt; which syncs the data to S3. This was done after evaluating a bunch of scripts including &lt;a href="http://www.s3sync.net/" target="_blank"&gt;s3sync&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Today I turned Ryan&amp;#8217;s original script into &lt;a href="http://rubygems.org/gems/ssync" target="_blank"&gt;a little Rubygem&lt;/a&gt; and added a bit more features.&lt;/p&gt;

&lt;p&gt;Go &lt;a href="https://github.com/fredwu/ssync" target="_blank"&gt;check out the source code&lt;/a&gt;!&lt;/p&gt;</description><link>http://fredwu.me/post/1550844695</link><guid>http://fredwu.me/post/1550844695</guid><pubDate>Fri, 12 Nov 2010 19:15:41 +1100</pubDate><category>ruby</category><category>cli</category><category>shell</category><category>script</category><category>Amazon</category><category>AWS</category><category>S3</category><category>sync</category><category>linux</category><category>unix</category><category>tool</category></item><item><title>Slim, a Fast and Lightweight Rails Template Engine!</title><description>&lt;p&gt;For the past few weeks I have started contributing to a small project - &lt;a href="http://github.com/stonean/slim" target="_blank"&gt;Slim&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Slim is a fast, lightweight templating engine for Rails 3. It has been tested on Ruby 1.9.2 and Ruby/REE 1.8.7. Slim is heavily influenced by &lt;a href="http://github.com/nex3/haml" target="_blank"&gt;Haml&lt;/a&gt; and &lt;a href="http://github.com/visionmedia/jade" target="_blank"&gt;Jade&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://github.com/stonean" target="_blank"&gt;Andrew Stone&lt;/a&gt; who is the author of the project has posted &lt;a href="http://stonean.com/slim-update" target="_blank"&gt;a quick update&lt;/a&gt; on the latest feature additions to Slim. Please go check it out.&lt;/p&gt;

&lt;p&gt;The source code of Slim is &lt;a href="http://github.com/stonean/slim" target="_blank"&gt;available on Github&lt;/a&gt;.&lt;/p&gt;</description><link>http://fredwu.me/post/1338899831</link><guid>http://fredwu.me/post/1338899831</guid><pubDate>Mon, 18 Oct 2010 08:40:20 +1100</pubDate><category>ruby</category><category>rails</category><category>slim</category><category>template</category><category>engine</category></item><item><title>A Speedier Rails App using Rails 3.1 + Arel 2.0</title><description>&lt;p&gt;&lt;strong&gt;Before (Rails 3.0.1pre stable branch + Arel 1.0.1):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_l9hgzuhG7b1qalr27.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After (Rails 3.1.0 master branch + Arel 2.0.0dev master branch:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_l9hh02dWtv1qalr27.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Thanks to the awesome work done by Aaron Patterson (&lt;a href="http://github.com/tenderlove" target="_blank"&gt;@tenderlove&lt;/a&gt;) and others. :-)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After Aaron Patteron&amp;#8217;s &lt;a href="http://twitter.com/tenderlove/status/25837698499" target="_blank"&gt;tweet&lt;/a&gt;, I ran the tests again on Rails 3.0.1pre stable branch + Arel 2.0.0dev master branch, and the result blew my mind:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_l9hhxw2fkl1qalr27.png" alt=""/&gt;&lt;/p&gt;</description><link>http://fredwu.me/post/1207334598</link><guid>http://fredwu.me/post/1207334598</guid><pubDate>Wed, 29 Sep 2010 10:51:00 +1000</pubDate><category>ruby</category><category>rails</category><category>arel</category></item><item><title>`bundle: command not found` or `Could not find RubyGem bundler (&gt;= 0)` During Capistrano Deployment? No Problems!</title><description>&lt;p&gt;Don&amp;#8217;t you just hate it when you get the following errors during a &lt;a href="http://www.capify.org/" target="_blank"&gt;Capistrano&lt;/a&gt; deployment?&lt;/p&gt;

&lt;pre&gt;
bundle: command not found
Could not find RubyGem bundler (&amp;gt;= 0) (Gem::LoadError)
&lt;/pre&gt;

&lt;p&gt;In fact, even if you don&amp;#8217;t use &lt;a href="http://gembundler.com/" target="_blank"&gt;bundler&lt;/a&gt;, you might still get errors like this:&lt;/p&gt;

&lt;pre&gt;
rake: command not found
Could not find RubyGem rake (&amp;gt;= 0) (Gem::LoadError)
&lt;/pre&gt;

&lt;p&gt;It turns out this has something to do with the &lt;code&gt;$PATH&lt;/code&gt; and &lt;code&gt;$GEM_HOME&lt;/code&gt; variables.&lt;/p&gt;

&lt;p&gt;So here&amp;#8217;s the quick fix.&lt;/p&gt;

&lt;p&gt;Log in to your deployment server, as a root user, add the following line to &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;:&lt;/p&gt;

&lt;pre class="brush: bash"&gt;
PermitUserEnvironment yes
&lt;/pre&gt;

&lt;p&gt;Don&amp;#8217;t forget to restart &lt;code&gt;ssh&lt;/code&gt;:&lt;/p&gt;

&lt;pre class="brush: bash"&gt;
/etc/init.d/ssh restart
&lt;/pre&gt;

&lt;p&gt;Now, log in as the deployment user, and create &amp;#8216;~/.ssh/environment&amp;#8217; with the following content:&lt;/p&gt;

&lt;pre class="brush: bash"&gt;
PATH=/usr/local/rvm/gems/ruby-1.9.2-p0/bin:/bin:/usr/local/rvm/rubies/ruby-1.9.2-p0/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
GEM_HOME=/usr/local/rvm/gems/ruby-1.9.2-p0
&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;* The above paths are for your reference only, obviously you need to work them out for your server environment. The only thing you need to make sure is that the &lt;code&gt;GEM_HOME&lt;/code&gt;&amp;#8217;s path matches one from the &lt;code&gt;PATH&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now, to verify this all work, you may use &lt;code&gt;cap shell&lt;/code&gt; to start a new shell session and try out your commands.&lt;/p&gt;</description><link>http://fredwu.me/post/1130675143</link><guid>http://fredwu.me/post/1130675143</guid><pubDate>Thu, 16 Sep 2010 15:59:00 +1000</pubDate><category>ruby</category><category>rails</category><category>bundle</category><category>bundler</category><category>capistrano</category><category>deploy</category><category>bash</category><category>path</category></item></channel></rss>

