<?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>Entrepreneur, technologist and student of life.</description><title>rob fan</title><generator>Tumblr (3.0; @robfan)</generator><link>http://robfan.com/</link><item><title>just thought about changing my twitter handle, but all the straight-forward variations of my name...</title><description>&lt;p&gt;just thought about changing my twitter handle, but all the straight-forward variations of my name were taken by users with no tweets and 3-5 followers! lame.  guess i&amp;#8217;ll stick with rfan622.&lt;/p&gt;</description><link>http://robfan.com/post/453812807</link><guid>http://robfan.com/post/453812807</guid><pubDate>Wed, 17 Mar 2010 01:06:09 -0400</pubDate></item><item><title>Press Mention in an article about SauceLabs</title><description>&lt;a href="http://searchsoftwarequality.techtarget.com/news/article/0,289142,sid92_gci1379324,00.html"&gt;Press Mention in an article about SauceLabs&lt;/a&gt;</description><link>http://robfan.com/post/450481116</link><guid>http://robfan.com/post/450481116</guid><pubDate>Mon, 15 Mar 2010 15:47:33 -0400</pubDate></item><item><title>X-post: Projects We Use at Sharethrough</title><description>&lt;a href="http://blog.sharethrough.com/engineering/projects-we-use-at-sharethrough"&gt;X-post: Projects We Use at Sharethrough&lt;/a&gt;</description><link>http://robfan.com/post/424776474</link><guid>http://robfan.com/post/424776474</guid><pubDate>Wed, 03 Mar 2010 16:37:55 -0500</pubDate></item><item><title>gave a presentation at the fbFund</title><description>&lt;p&gt;so I gave a talk early Wednesday morning.  the talk was supposed to be about &amp;#8216;rapid prototype&amp;#8217; but realized i had much more to share when talking about running a start-up as a whole.  so i kinda morph&amp;#8217;ed the topic to be more about &amp;#8216;rapid prototyping&amp;#8217; a startup rather than just a product.  in the end, it really was more a &amp;#8216;tips and tricks&amp;#8217; for apply the lean startup methodology.&lt;/p&gt;
&lt;p&gt;in any case, here are the slides that i used at the presentation.  I think there is some audio associated with this that I&amp;#8217;ll post up when I get it.&lt;/p&gt;
&lt;p&gt;&lt;a title="Rapid Prototyping A Startup" href="http://www.slideshare.net/rfan622/rapid-prototyping-a-startup" style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;"&gt;Rapid Prototyping A Startup&lt;/a&gt; 
&lt;object height="355" width="425" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"&gt;
&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rapidprototypingastartup-090715134218-phpapp01&amp;amp;stripped_title=rapid-prototyping-a-startup"&gt;&lt;embed height="355" width="425" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rapidprototypingastartup-090715134218-phpapp01&amp;amp;stripped_title=rapid-prototyping-a-startup" allowscriptaccess="always" allowfullscreen="true" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;
View more &lt;a href="http://www.slideshare.net/" style="text-decoration:underline;"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/rfan622" style="text-decoration:underline;"&gt;Robert Fan&lt;/a&gt;.&lt;/p&gt;</description><link>http://robfan.com/post/142390628</link><guid>http://robfan.com/post/142390628</guid><pubDate>Wed, 15 Jul 2009 18:54:24 -0400</pubDate></item><item><title>Continuous Integration: Selenium + Firefox + Flash </title><description>&lt;p&gt;Another continuous integration how-to to put into the Web.  This one is specifically about getting Selenium working in Ubuntu to test Firefox and Flash.&lt;/p&gt;
&lt;p&gt;Download and Unpack &lt;a target="_blank" title="Selenium RC" href="http://seleniumhq.org/download/"&gt;Selenium RC&lt;/a&gt;.  Make sure you get the latest version since it has udpated support for firefox3.&lt;/p&gt;
&lt;p&gt;You put the Selenium RC files wherever you want, I put it in &amp;#8216;/opt/local&amp;#8217;&lt;/p&gt;
&lt;p&gt;Now install a couple of things:&lt;/p&gt;
&lt;pre&gt;apt-get install firefox-3.0
apt-get install flashplugin-nonfree
apt-get install xvfb
&lt;/pre&gt;
&lt;p&gt;To do a quick test you can kick-off xvfb to create a fake virtual framebuffer using:&lt;/p&gt;
&lt;pre&gt;/usr/bin/Xvfb :99 &amp;amp;&lt;/pre&gt;
&lt;p&gt;If you type &amp;#8216;firefox&amp;#8217; now you should see it prompt to the next line (without any errors) meaning that it was successfully loaded.  Hit CTRL-C to kill this instance of Firefox.&lt;/p&gt;
&lt;p&gt;With Xvfb still running, kick-off the selenium server:&lt;/p&gt;
&lt;pre&gt;java -jar &amp;lt;PATH TO YOUR SELENIUM SERVER&amp;gt;/selenium-server.jar&lt;/pre&gt;
&lt;p&gt;Run your FlashSelenium tests and they should go green!  No need to do anything specific with the browser type.  The 1.0 version of selenium can properly find Firefox 3.0 in Ubuntu.&lt;/p&gt;
&lt;p&gt;Now if you are like me, you&amp;#8217;ll probably want these two guys to be loaded upon startup.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the init.d for Xvfb:&lt;/p&gt;
&lt;pre&gt;#!/bin/bash&lt;br/&gt;&lt;br/&gt;if [ -z "$1" ]; then&lt;br/&gt;echo "`basename $0` {start|stop}"&lt;br/&gt;exit&lt;br/&gt;fi&lt;br/&gt;&lt;br/&gt;case "$1" in&lt;br/&gt;start)&lt;br/&gt;/usr/bin/Xvfb :99 &amp;amp;&lt;br/&gt;;;&lt;br/&gt;&lt;br/&gt;stop)&lt;br/&gt;killall Xvfb&lt;br/&gt;;;&lt;br/&gt;esac&lt;br/&gt;&lt;/pre&gt;
&lt;p&gt;Make sure you give the script executable permissions with:&lt;/p&gt;
&lt;p&gt;chmod 755 xvfb&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the init.d for Selenium:&lt;/p&gt;
&lt;pre&gt;#!/bin/bash

case "${1:-''}" in
        'start')
                if test -f /tmp/selenium.pid
                then
                        echo "Selenium is already running."
                else
                        java -jar /opt/local/selenium-remote-control-1.0.1/selenium-server-1.0.1/selenium-server.jar &amp;gt; /tmp/selenium.log &amp;amp; echo $! &amp;gt; /tmp/selenium.pid
                        echo "Starting Selenium..."

                        error=$?
                        if test $error -gt 0
                        then
                                echo "${bon}Error $error! Couldn't start Selenium!${boff}"
                        fi
                fi
        ;;
        'stop')
                if test -f /tmp/selenium.pid
                then
                        echo "Stopping Selenium..."
                        PID=`cat /tmp/selenium.pid`
                        kill -3 $PID
                        if kill -9 $PID ;
                                then
                                        sleep 2
                                        test -f /tmp/selenium.pid &amp;amp;&amp;amp; rm -f /tmp/selenium.pid
                                else
                                        echo "Selenium could not be stopped..."
                                fi
                else
                        echo "Selenium is not running."
                fi
                ;;
        'restart')
                if test -f /tmp/selenium.pid
                then
                        kill -HUP `cat /tmp/selenium.pid`
                        test -f /tmp/selenium.pid &amp;amp;&amp;amp; rm -f /tmp/selenium.pid
                        sleep 1
                        java -jar /opt/local/selenium-remote-control-1.0.1/selenium-server-1.0.1/selenium-server.jar &amp;gt; /tmp/selenium.log &amp;amp; echo $! &amp;gt; /tmp/selenium.pid
                        echo "Reload Selenium..."
                else
                        echo "Selenium isn't running..."
                fi
                ;;
        *)      # no parameter specified
                echo "Usage: $SELF start|stop|restart|reload|force-reload|status"
                exit 1
        ;;
esac
&lt;/pre&gt;
&lt;p&gt;Again, make this executable:&lt;/p&gt;
&lt;pre&gt;chmod 755 selenium&lt;/pre&gt;
&lt;p&gt;Before you add this to your startup scripts, you should probably test them out. If you&amp;#8217;ve been following these write-up to a tee, you&amp;#8217;ll have to kill both Selenium and Xvfb.  You can do that by using the following (If you are unsure if you have anything else using java in the background you may want to skip the &amp;#8216;killall java&amp;#8217; line):&lt;/p&gt;
&lt;pre&gt;killall Xvfb
killall java
&lt;/pre&gt;
&lt;p&gt;Test the scripts out now by running (in the init.d directory):&lt;/p&gt;
&lt;pre&gt;./xvfb start
./selenium start
&lt;/pre&gt;
&lt;p&gt;To get these running on start-up use the following commands:&lt;/p&gt;
&lt;pre&gt;update-rc.d xvfb defaults 10
update-rc.d selenium defaults &lt;/pre&gt;
&lt;p&gt;You&amp;#8217;re now ready to get continually integrated.&lt;/p&gt;</description><link>http://robfan.com/post/122618829</link><guid>http://robfan.com/post/122618829</guid><pubDate>Fri, 12 Jun 2009 20:28:39 -0400</pubDate></item><item><title>Getting Thrift &amp; Scribe working with OSX</title><description>&lt;p&gt;I googled out a whole slew of write-ups on getting thrift and scribe working on OSX and I finally cobbled together something that works.  I&amp;#8217;m sure of dependancies may/will change so YMMV following these steps.&lt;/p&gt;
&lt;p&gt;First off, if you don&amp;#8217;t already, install &lt;a target="_blank" title="Macports" href="http://www.macports.org/"&gt;Macports&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In terminal type:&lt;/p&gt;
&lt;pre&gt;sudo port selfupdate
sudo port install boost
sudo port install pkgconfig
sudo port install libevent
&lt;/pre&gt;
&lt;p&gt;Note: I read somewhere that libevent needs to be compiled not, installed through Macports, so I did both but doubt compiliing it was necessary.  Also the &amp;#8216;install boost&amp;#8217; section took me nearly an hour to fully build.&lt;/p&gt;
&lt;p&gt;Grab &lt;a target="_blank" title="thrift" href="http://incubator.apache.org/thrift/"&gt;thrift&lt;/a&gt;.  Before doing any installing, you need to do this one step within the thrift directory:&lt;/p&gt;
&lt;pre&gt;cp /opt/local/share/aclocal/pkg.m4 aclocal&lt;/pre&gt;
&lt;p&gt;In the thrift directory run:&lt;/p&gt;
&lt;pre&gt;./bootstrap.sh
./configure --with-libevent=/opt/local
make
sudo make install
&lt;/pre&gt;
&lt;p&gt;Now it&amp;#8217;s on to Scribe.  Grab &lt;a target="_blank" title="scribe" href="http://sourceforge.net/projects/scribeserver/"&gt;scribe&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;./bootstrap.sh&lt;br/&gt;./configure&lt;br/&gt;make&lt;br/&gt;sudo make install&lt;/pre&gt;
&lt;p&gt;Alright, if all goes well you&amp;#8217;ll have scribe and thrift now running.  To double check follow these steps from &lt;a target="_blank" title="http://bzilla.org/running-scribe-on-osx" href="http://bzilla.org/running-scribe-on-osx"&gt;&lt;a href="http://bzilla.org/running-scribe-on-osx"&gt;http://bzilla.org/running-scribe-on-osx&lt;/a&gt;&lt;/a&gt; (it was down when I found it, so I grabbed this portion of text from Google cache and pasted it here):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;Testing&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Now that you have successfully installed Scribe and its pre-reqs you can test it out. For testing purposes you can follow the steps outlined in &lt;i&gt;&amp;lt;scribe dir&amp;gt;/examples/README. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;You may encounter an error when running &lt;i&gt;scribe_cat&lt;/i&gt; and/or &lt;i&gt;scribe_ctrl&lt;/i&gt; that looks something like:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;ImportError: No module named scribe&lt;/li&gt;
&lt;li&gt;ImportError: No module named fb303_scripts&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;First, make sure you ran the make install target for Thrift, FB303 and Scribe. If you confirm installation of all the libraries and you still are having import errors you&amp;#8217;ll want to create symlinks for Python (I&amp;#8217;ve tried exporting PYTHONHOME as well as creating a .pth file in the examples folder with no luck). Execute the following from the &lt;i&gt;/Library/Python/2.5/site-packages/&lt;/i&gt; directory:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;i&gt;ln -s /usr/lib/python2.5/site-packages/fb303 fb303&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;/usr/lib/python2.5/site-packages/fb303_scripts/ fb303_scripts&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;ln -s /usr/lib/python2.5/site-packages/thrift/ thrift&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;ln -s /usr/lib/python2.5/site-packages/scribe scribe&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;You should now be able to run the examples.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://robfan.com/post/122601775</link><guid>http://robfan.com/post/122601775</guid><pubDate>Fri, 12 Jun 2009 19:50:32 -0400</pubDate></item></channel></rss>

