<?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>PhilFreo.com &#187; Entrepreneurship</title>
	<atom:link href="http://philfreo.com/blog/category/entrepreneurship/feed/" rel="self" type="application/rss+xml" />
	<link>http://philfreo.com/blog</link>
	<description>The portfolio and blog of Phil Freo, on web design, development, and entrepreneurship.</description>
	<lastBuildDate>Tue, 13 Mar 2012 17:21:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Two Years at Quizlet</title>
		<link>http://philfreo.com/blog/two-years-at-quizlet/</link>
		<comments>http://philfreo.com/blog/two-years-at-quizlet/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 05:44:33 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[California]]></category>
		<category><![CDATA[Collectors Weekly]]></category>
		<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Quizlet]]></category>
		<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=285</guid>
		<description><![CDATA[The last two years (2010-2011) I spent working at Quizlet were an incredible learning experience. Like I did in Jan 2010, I wanted to reflect on some of the technologies I learned and things I did over the last 2 years&#8230; Backend: Learned tons about scalability! Scaled Quizlet to serve 11 million visits per months (60 million [...]]]></description>
			<content:encoded><![CDATA[<p>The last two years (2010-2011) I spent working at Quizlet were an incredible learning experience.</p>
<p>Like I did <a href="/blog/technologies-ive-worked-with-in-2009/">in Jan 2010</a>, I wanted to reflect on some of the technologies I learned and things I did over the last 2 years&#8230;</p>
<p><span id="more-285"></span></p>
<p style="text-align: center;"><img class="aligncenter  wp-image-386" src="http://philfreo.com/blog/wp-content/uploads/2012/03/quizlet_2011-2012.png" alt="" width="560" height="231" /></p>
<p>Backend:</p>
<ul>
<li><strong>Learned tons about scalability!</strong> Scaled Quizlet to serve 11 million visits per months (60 million pageviews, 5 million uniques), serving mostly UGC content with an average page response time of &lt; 50ms.</li>
<li>Got very comfortable with understanding and <strong>tweaking advanced configuration options of Apache, PHP, &amp; MySQL</strong> for desired functionality and scalability requirements</li>
<li>Went from a command line beginner to feeling very comfortable in Linux and Solaris, frequently <strong>writing bash/shell scripts for common sysadmin tasks</strong>, and trying to automate as much as possible.</li>
<li><strong>Worked with large data sets</strong>: our database had several hundred million rows and was in the dozens of gigabytes in size.</li>
<li>Played a dev-ops role and helped transition all production servers to use <strong>Puppet for configuration management</strong>. Focused on having a process for all server related changes and created the ability to have over a dozen different servers recreate-able in very little time.</li>
<li><strong>Learned how to make MySQL fast on a high-trafficked and large database</strong>, do replication and have a quick recovery plan. Dealt with configuring databases, designing schemas, and optimizing SQL statements. Also managed our relationship with Percona&#8217;s consultants (leading MySQL experts) and learned from them.</li>
<li><strong>Automated backups</strong> and ensured we had quick access to them in the right places plus securely storing them off-site to <strong>Amazon S3 </strong>for safety. We had people relying on their data being accessible for studying and thankfully were able to recover quickly from incidents without losing any data.</li>
<li><strong>Sphinx Search</strong> is a very powerful open source search server good for indexing and quickly searching over MySQL. I learned how to configure it for our purposes and use its various features to power search on millions of rows of Quizlet content in a couple hundred milliseconds.</li>
<li>Implemented and used several <strong>performance monitoring tools </strong>to keep tabs on a heavily trafficked website: Nagios, Munin, New Relic, etc.</li>
<li>Learned all about (and implemented) <strong>email deliverability best practices</strong>: SPF records, DKIM, rDNS, Feedback Loops, IP address reputation, etc.</li>
<li>Used several<strong> cloud service providers</strong> (Joyent, Slicehost, Amazon AWS). Setup <strong>reverse proxy CDNs</strong> for optimal performance of static files.</li>
</ul>
<p>Frontend:</p>
<ul>
<li>Major focus on<strong> serious performance optimizations across entire stack. </strong>Spent time obsessing over how to get an extra 20ms out of a page load from our backend while keeping code clean. Resulted in an average page load of &lt; 50ms across Quizlet.</li>
<li>Also became <strong>extremely good at front-end performance; </strong>Did JavaScript profiling, proper handling of static files, caching headers, etc. Attended Velocity Conferences; Kept tabs on PageSpeed and WebpageTest waterfall results.</li>
<li><strong>Used Google Analytics Event Tracking </strong>for tracking client-side user events via JavaScript. Good for error detection and user behavior analysis.</li>
<li>I already knew PHP well, but I&#8217;d say now I&#8217;m more of an expert at properly structuring <strong>object-oriented PHP5</strong> on a large codebase.</li>
<li>Learned all about and then <strong>implemented website localization &amp; internationalization</strong> (i18n) for Quizlet, helping create a framework for user-generated translation submissions that launched in 7 languages.</li>
<li>Got deep into Unicode and character encodings and <strong>implemented a language detection system</strong> in PHP based on n-grams and character encodings.</li>
<li>Spent time <strong>optimizing with AdSense </strong>- A/B tested with different ad placement, targeting, and IAB ad sizes for better inventory.</li>
<li><strong>Wrote a very fast A/B testing framework and used it to optimize</strong> our upgrade page for better monetization</li>
<li>Went very deep on the <strong>MooTools JavaScript library</strong> using it to <a href="/blog/behind-the-scenes-look-at-my-work-at-quizlet/">build complex study games</a>. In the past, jQuery has been my JS library of choice, but MooTools is very nice at being object-oriented and not afraid to extend native objects.</li>
<li>Used <strong>Google Maps &amp; Geocoding  API </strong>heavily (JavaScript and PHP) to build an events directory on CollectorsWeekly.</li>
<li><strong>Used the Stripe API</strong> to accept credit card payments (replacing our previous PayPal solution).</li>
<li><strong>Lots of cross-browser CSS &#8211; </strong>making things look good in browsers both old and new.</li>
</ul>
<p>Dev Processes:</p>
<ul>
<li><strong>Helped lead the development team </strong>with best practices and good processes for coding and communication.</li>
<li>Became<strong> really good at Git </strong>and <strong>transitioned our team from SVN/Trac to Git/GitHub</strong>. Used git submodules to manage many of our dependancies and became a better open source citizen by submitting pull requests and bug reports in more projects.</li>
<li>Did a lot of <strong>code reviewing</strong> on trac and GitHub with peers and new hires / interns.</li>
<li><strong>Introduced unit testing</strong> in both PHP (via PHPUnit) and JavaScript (via Jasmine); did some test-driven-development (TDD).</li>
<li><strong>Created a safer deployment process</strong> which first runs unit tests, PHP Lint, and other sanity checks before deploying.</li>
<li>Started <strong>daily standups</strong> with the eng team to keep everyone up-to-date and on track.</li>
</ul>
<p>Product:</p>
<ul>
<li>Along with development work, I was doing a lot of <strong>Product Management</strong>: feature triage and prioritization, tracking roadmaps, deciding among tradeoffs, etc.</li>
<li><strong>Huge focus on the user interface</strong>: tried to make every new feature high quality and easy to use. Spent a lot of time redoing the user flow of features that already existed to improve their ease of use. <strong>Removed clutter </strong>and made features that &#8220;just work&#8221;.</li>
<li>Used Photoshop to work on <strong>visual improvements &#8212; designing or redesigning</strong> almost all the main pages and many shared UI components on Quizlet.</li>
<li>Brainstormed and implemented game mechanics and other ways to make studying on Quizlet more fun and social.</li>
</ul>
<p>Business+Management</p>
<ul>
<li><strong>Focused heavily on recruiting</strong> other developers, helped create a process<strong> </strong>for finding potential candidates and putting them through a funnel. Did a lot of <strong>technical interviewing </strong>by phone/Skype and in-person. Helped build a great team of full-time people and interns.</li>
<li><strong>Team building.</strong> Helped manage and guide new employees, getting them up to speed and supporting their projects.</li>
<li>Did a fair amount of <strong>biz dev</strong> as well. <strong>Negotiated deals</strong> for licensing software, worked out details of contracts. Talked with potential partners.</li>
<li><strong>Managed projects</strong> that other developers were working on, pushing for both code quality, fast completion, and a high quality user experience.</li>
<li>Wrote a bunch of Quizlet blog posts about product announcements.</li>
</ul>
<p>I&#8217;m sure I&#8217;m missing lots of stuff, and I should probably take even more time to write down some higher level lessons learned about startups. But for now this will do: startups are awesome and the best way to learn a lot of stuff really quickly by doing it. And if you&#8217;re lucky like I&#8217;ve been, it will be with an awesome team working on a great product used by tons of people.</p>
<p>I&#8217;ve recently moved onto a new opportunity that I&#8217;m very excited about. But I&#8217;m really glad to have been at Quizlet the last two years and I look forward to seeing it continuing to succeed widely!</p>
<p>(P.S., they&#8217;re <a href="http://quizlet.com/jobs/">hiring</a>&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/two-years-at-quizlet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SXSW &amp; Business Cards</title>
		<link>http://philfreo.com/blog/sxsw-business-cards/</link>
		<comments>http://philfreo.com/blog/sxsw-business-cards/#comments</comments>
		<pubDate>Fri, 02 Mar 2007 22:55:25 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.philfreo.com/blog/?p=28</guid>
		<description><![CDATA[With SXSW coming up, I decided to make up some quick business cards and have them printed through OvernightPrints.com. I can&#8217;t believe SXSW (and Spring Break) is only a week away, but I am excited and looking forward to learning a lot and meeting some great people. It will also be good to see some [...]]]></description>
			<content:encoded><![CDATA[<p>With <a href="http://2007.sxsw.com/interactive/">SXSW</a> coming up, I decided to make up some quick business cards and have them printed through <a href="http://www.overnightprints.com/">OvernightPrints.com</a>.   I can&#8217;t believe SXSW (and Spring Break) is only a week away, but I am excited and looking forward to learning a lot and meeting some great people.</p>
<p><span id="more-28"></span></p>
<div class="flickr-frame"><a title="photo sharing" href="http://www.flickr.com/photos/philfreo/408124172/"><img class="flickr-photo" src="http://farm1.static.flickr.com/167/408124172_c1718fcf33.jpg" /></a></div>
<p>It will also be good to see some people I haven&#8217;t seen in a while.  I&#8217;m flying up with <a href="http://www.livingstonandpartners.com/">Jon Livingston</a>, meeting up with <a href="http://richarddcrowley.org/">Richard Crowley</a>, and looking forward to see Bryan Veloso at the <a href="http://bowling.avalonstar.com/">Avalonstar Bowling</a> tournament.  If I know you (or not, but you&#8217;re reading this) and you&#8217;re going, be sure to let me know so we can meet up.  This is guaranteed to be an interesting experience, and I&#8217;m excited.  Maybe I&#8217;m expecting too much, but I&#8217;ve heard from people that SXSW can change your entire perspective regarding the web.  Bring it on.</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/sxsw-business-cards/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Some lessons on business from traveling</title>
		<link>http://philfreo.com/blog/some-lessons-on-business-from-traveling/</link>
		<comments>http://philfreo.com/blog/some-lessons-on-business-from-traveling/#comments</comments>
		<pubDate>Mon, 03 Jul 2006 03:05:11 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.philfreo.com/blog/?p=7</guid>
		<description><![CDATA[I am fortunate enough to be able to work from Florida for a couple days due to July 4th, leaving me with a nice 9-day visit back home. While traveling, I observed a couple of interesting things about business, opportunities, and life. Check them out&#8230; First, while waiting in Phoenix at the Southwest Airlines gate [...]]]></description>
			<content:encoded><![CDATA[<p>I am fortunate enough to be able to work from Florida for a couple days due to July 4th, leaving me with a nice 9-day visit back home.  While traveling, I observed a couple of interesting things about business, opportunities, and life.  Check them out&#8230;<span id="more-7"></span></p>
<p>First, while waiting in Phoenix at the Southwest Airlines gate to board my plane, the guy guarding the boarding door was about to do his usual thing, preparing for boarding the plane, when he did something that made everyone look up. He said</p>
<blockquote><p>&#8220;Do you guys want me to give you all the boarding information in a song?&#8221;</p></blockquote>
<p>Not sure if he was serious at first, people began nodding.  So he started &#8211; and sang an entire song to the tune of Edwin McCain&#8217;s <em><a href="http://www.sing365.com/music/lyric.nsf/I'll-Be-lyrics-Edwin-McCain/B4B23AACA37FE22F4825694B0025B733">I&#8217;ll Be</a></em>.  The guy actually had a really good voice and gave us all the usual information, but in a really exciting and new way.  In the end, everyone applauded and had a smile on their face. <strong>This is a great way to do business.</strong>  I hope that guy gets a raise because he took what is usually a very boring experience and added life to it.  Even his coworkers from the booth were smiling and enjoying themselves.</p>
<p>On the other hand, I went out to eat this afternoon with a pretty large group of 13 people to <a href="http://www.clarksfishcamp.com/">Clarks</a>.  While I usually like the place, today the waiter sucked &#8211; he was overall unfriendly, rude, and short with us.  So what if a few people ordered water?  That doesn&#8217;t mean &#8220;refills&#8221; should be given by slinging one pitcher of each drink on each side of a very long table.  I noticed the not-so-great service but wasn&#8217;t going to say anything.  However, it was bad enough for several girls at my table to be unhappy about it.  Because of this, I simply asked for his name, and informed the manager that I love the restaurant, but was receiving bad service due to a rude waiter.  I hope this guy gets a one-on-one meeting with the manager and either begins to improve or get replaced by someone like singing-airplane-gate-guy.  And it really is in the waiter&#8217;s best interest &#8211; better service results in better tips.</p>
<p>What&#8217;s the point?  That <strong>a little personality and effort go a long way in creating a good impression and making happy customers</strong>.</p>
<p>And last but not least: <strong>airplane rides are great for networking</strong>.  After briefly meeting a young couple while listening to singing-airplane-gate-guy, we ended up sitting next to each other on the plane.   I had a great conversation with the guy.  I taught him <a href="http://www.sudoku.com/">Sudoku</a>, talked to him about Jacksonville, discussed web design and business ideas.  He told me about his own business and how he created a simple website for himself using a free online tool.  After a simple conversation, without seeing any of my resume or previous design work, this guy says:</p>
<blockquote><p>&#8220;I really wish I hadn&#8217;t already signed a contract for my new website, <strong>I would hire you right now</strong>.  But if you want to do any search engine optimization contract work, that would be great.&#8221;</p></blockquote>
<p>Why would he say this after such a short conversation with no evidence of my abilities?  I think it has to do with a few things.  Just like above, <strong>having a personality and engaging in conversation almost always are good things.  More important than resumes or portfolios, people just like to know that they can simply talk to you and trust you as a person.  </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/some-lessons-on-business-from-traveling/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

