<?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; Personal</title>
	<atom:link href="http://philfreo.com/blog/category/personal/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>Behind the scenes look at my work at Quizlet</title>
		<link>http://philfreo.com/blog/behind-the-scenes-look-at-my-work-at-quizlet/</link>
		<comments>http://philfreo.com/blog/behind-the-scenes-look-at-my-work-at-quizlet/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 07:36:18 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quizlet]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=332</guid>
		<description><![CDATA[I just wrote a pretty in-depth article on the Quizlet Blog: &#8220;How We Do Product Development at Quizlet: An Inside Look at the Making of Speller&#8221; which describes the process of how Andrew and I created &#8220;Speller&#8221;, the latest study mode on Quizlet. &#8230;a behind the scenes look at how we created Speller, our engineering [...]]]></description>
			<content:encoded><![CDATA[<p>I just wrote a pretty in-depth article on the Quizlet Blog: &#8220;<a href="http://quizlet.com/blog/the-making-of-speller/">How We Do Product Development at Quizlet: An Inside Look at the Making of Speller</a>&#8221; which describes the process of how Andrew and I created &#8220;Speller&#8221;, the latest study mode on Quizlet.</p>
<blockquote><p><em>&#8230;a behind the scenes look at how we created Speller, our engineering challenges and processes, and how we obsessed over the user experience and the educational experience.</em></p></blockquote>
<p>Includes some technical details of how we programmed it (mostly JavaScript), the text-to-speech, development process and usability testing, and lots of screenshots of the different iterations we did in order to get the UI right.</p>
<p>It&#8217;s a little long, but hopefully worth the read!</p>
<p><img class="size-full border wp-image-3595 aligncenter" style="display:block;margin: 10px auto;border: solid 1px #eee; padding: 4px;" src="https://quizlet.com/blog/wp-content/uploads/2011/09/los_animales.png" alt="" width="484" height="147" /></p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/behind-the-scenes-look-at-my-work-at-quizlet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Job with Startup: Old School Industries</title>
		<link>http://philfreo.com/blog/new-job-with-startup-old-school-industries/</link>
		<comments>http://philfreo.com/blog/new-job-with-startup-old-school-industries/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 00:47:53 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[California]]></category>
		<category><![CDATA[Collectors Weekly]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Quizlet]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=275</guid>
		<description><![CDATA[I just accepted a full-time position at a small startup in San Francisco as a lead Developer and Product Manager.  The company is called Old School Industries LLC and is a combination of two businesses: Quizlet and Collectors Weekly. I&#8217;ve been working with the founders, Dave Margulius and Andrew Sutherland (student at MIT), for around [...]]]></description>
			<content:encoded><![CDATA[<p>I just accepted a full-time position at a small startup in San Francisco as a lead Developer and Product Manager.  The company is called Old School Industries LLC and is a combination of two businesses: <a href="http://quizlet.com/" target="_blank">Quizlet</a> and <a href="http://www.collectorsweekly.com/" target="_blank">Collectors Weekly</a>.</p>
<p><span id="more-275"></span></p>
<p>I&#8217;ve been working with the founders, <a href="http://www.linkedin.com/pub/dave-margulius/3/827/613" target="_blank">Dave Margulius</a> and <a href="http://quizlet.com/about/" target="_blank">Andrew Sutherland</a> (student at MIT), for around 6 months remotely and on short term trips as a contractor, and have now decided to accept an offer with the team full-time.  I&#8217;ll be responsible for developing new features on both websites, improving user experience, increasing monetization, and overall growing the businesses.</p>
<p><a href="http://quizlet.com/" target="_blank">Quizlet.com</a> is a studying website that lets students make flashcards online and study in a more effective and more fun way.  The site serves over a million students each month, has over 750,000 registered users, and has over 50 million user-generated flash cards.  As only the second developer on Quizlet, I&#8217;m excited to grow the website in huge ways and spend most of my time helping make studying better for a lot of people.</p>
<p><a href="http://www.collectorsweekly.com/" target="_blank">Collectors Weekly</a> is a resource for all things collecting, antiques, and vintage.  It&#8217;s a combination of great original content and providing tools to browse eBay in a better way (<a href="http://www.collectorsweekly.com/model-trains/auctions" target="_blank">SuperBrowse example</a>).  I just helped launched its new geo-targetted <a href="http://www.collectorsweekly.com/events" target="_blank">events section</a> and will spend about one third of my time developing new features for this site.</p>
<p>Both websites run on the LAMP stack.  I&#8217;ll be working heavily with Apache, PHP, JavaScript / Ajax, MySQL, Memcache, Sphinx, etc. to help grow traffic and features in a scalable way.  A decent number of the interesting technologies that I <a href="/blog/technologies-ive-worked-with-in-2009/">used for the first time in 2009</a> were a result of working with these guys.</p>
<p>This is an exciting time and a big opportunity for me as I&#8217;ll be able to significantly impact the growth and success of the startup.  It will also nice to be able to focus all my work attention in one direction rather than juggling many projects, as I&#8217;ve just <a href="/blog/graduation-thoughts-best-classes-at-uf-for-computer-engineering/">graduated</a> from UF and won&#8217;t be continuing freelance web work.  And of course, moving to San Francisco from Florida will be a big change and I&#8217;m excited, although I&#8217;ll still get to fly back every so often.  Wish me luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/new-job-with-startup-old-school-industries/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Technologies I&#8217;ve worked with in 2009</title>
		<link>http://philfreo.com/blog/technologies-ive-worked-with-in-2009/</link>
		<comments>http://philfreo.com/blog/technologies-ive-worked-with-in-2009/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 18:00:07 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=240</guid>
		<description><![CDATA[One benefit of doing freelance development work is that I get the opportunity to get involved in many different technologies and frameworks in a short amount of time. Since the year is over&#8230; here&#8217;s a quick list of 15 technologies/frameworks that I got to learn in 2009 alone, during my last year in college. Learned [...]]]></description>
			<content:encoded><![CDATA[<p>One benefit of doing freelance development work is that I get the opportunity to get involved in many different technologies and frameworks in a short amount of time.</p>
<p>Since the year is over&#8230; here&#8217;s a quick list of 15 technologies/frameworks that I got to learn in <strong>2009</strong> alone, during my <a href="http://philfreo.com/blog/graduation-thoughts-best-classes-at-uf-for-computer-engineering/">last year in college</a>.</p>
<p><span id="more-240"></span></p>
<ol>
<li>Learned PHP optimization techniques, such as using <strong>APC</strong> and <strong>Memcached</strong></li>
<li>Worked with the <strong>Twitter API</strong> to create a Twitter bot</li>
<li>Learned <strong>advanced Google Analytics tools</strong> and did multivariable testing of conversion rates with Website Optimizer</li>
<li>Work with the <strong>PayPal Payments Pro API</strong></li>
<li>Created a simple <strong>Facebook App</strong> (using FBML)</li>
<li>Learned some <strong>Objective C </strong>and worked with XCode and Interface Builder</li>
<li>Created a basic <strong>iPhone App</strong> that interacted with an XML web service</li>
<li>Worked heavily with <strong><a href="http://philfreo.com/blog/magento-ecommerce-first-thoughts-tips/">Magento customization</a></strong><strong> </strong>and theming work</li>
<li>Wrote a <strong><a href="http://philfreo.com/blog/arbitrary-shortcodes/">WordPress plugin</a></strong><strong> </strong>to make deploying multiple sites easier, along with plenty of other WordPress development</li>
<li>Wrote an <strong><a href="http://philfreo.com/blog/freo-addon-installer/">ExpressionEngine module</a> </strong>to save people time,<strong> </strong>and other EE work</li>
<li>Learned about various <strong>MySQL performance </strong>with different storage engines</li>
<li>Built a <strong>Google Wave Robot </strong>at a Google hackathon and demoed it at a WordPress Dev Day</li>
<li>Worked with the <strong>YouTube API</strong> to build an automatic video status checker</li>
<li><strong>Geo-targeting</strong> by IP address</li>
<li>Automatic<strong> language detection of text </strong>with Google&#8217;s Translation API</li>
</ol>
<p>Hopefully 2010 will bring its own interesting technologies and opportunities to learn!</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/technologies-ive-worked-with-in-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Graduation thoughts: best classes at UF for Computer Engineering</title>
		<link>http://philfreo.com/blog/graduation-thoughts-best-classes-at-uf-for-computer-engineering/</link>
		<comments>http://philfreo.com/blog/graduation-thoughts-best-classes-at-uf-for-computer-engineering/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 21:38:05 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[College]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[UF]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=212</guid>
		<description><![CDATA[In three weeks from today, I will have graduated, with honors, from the University of Florida with a B.S. in Computer Engineering (software emphasis) and a minor in Business Administration.  Overall, I&#8217;ve had an incredible college experience and have learned a ton, had some great experiences, and built relationships with a lot of really great [...]]]></description>
			<content:encoded><![CDATA[<p>In three weeks from today, I will have graduated, with honors, from the <a rel="nofollow" href="http://ufl.edu">University of Florida</a> with a B.S. in <a rel="nofollow" href="http://www.registrar.ufl.edu/catalog/programs/majors/compeng.html">Computer Engineering</a> (software emphasis) and a minor in Business Administration.  Overall, I&#8217;ve had an incredible college experience and have learned a ton, had some great experiences, and built relationships with a lot of really great people.</p>
<p>I thought it&#8217;d be worth mentioning the classes at UF that, looking back, had the greatest impact on me.  I&#8217;ve taken a bunch of classes over the past 4.5 years, but these were the ones that I really can appreciate the most&#8230;<br />
<span id="more-212"></span></p>
<hr /><strong>1.  Digital Logic &amp; Computer Systems (EEL 3701), with <a href="http://www.mil.ufl.edu/~ems/">Dr. Eric Schwarz</a></strong></p>
<p><a style="float: right; margin: 5px; border: solid 1px #ccc;" href="http://philfreo.com/blog/wp-content/uploads/2009/11/DSCN2582-224x300.jpg" target="_blank"><img class="size-medium wp-image-215 alignright" title="EEL3701" src="http://philfreo.com/blog/wp-content/uploads/2009/11/DSCN2582-224x300.jpg" alt="My breadboard from one of the Digital Logic labs" width="224" height="300" /></a><strong>It wasn&#8217;t until this class that I really understood how computers worked</strong>.  I started this class as a freshman who could barely count in binary.  In one jam-packed semester, we learned all about: number systems, logic gates, mixed logic, <a href="http://en.wikipedia.org/wiki/Karnaugh_map">k-maps</a>, <a href="http://en.wikipedia.org/wiki/Multiplexer">multiplexers</a>, <a href="http://en.wikipedia.org/wiki/Flip-flop_(electronics)">flip-flops</a>, <a href="http://en.wikipedia.org/wiki/Arithmetic_logic_unit">ALUs</a>, RAM, ROM, etc.  We also learned how to design hardware components using Quartus and <a href="http://en.wikipedia.org/wiki/VHDL">VHDL</a>, and program them onto our <a href="http://en.wikipedia.org/wiki/Programmable_logic_device">PLDs</a> to watch different LEDs on our breadboards react to various switches and buttons (<em>see picture of my breadboard wired up after programming a PLD</em>).</p>
<p>All in all, <strong>we started with simple logic gates and designed an entire (basic) 8-bit CPU – and then programmed it by writing and hand-compiling assembly code</strong>.  What a great learning experience!</p>
<p>This was also a great example of where <strong>it was completely worth taking the class with the harder professor</strong> who gives more homework, because he was very passionate about the subject and knew how to teach it well.  I don&#8217;t remember every detail of what I learned 4 years ago in this class, but because I had a great professor, I can still explain most of the major concepts and would feel comfortable diving back in if needed.</p>
<hr /><strong>2.  Object-Oriented Programming (COP 4331), with </strong><strong><a href="http://www.cise.ufl.edu/~dts/">Dave Small</a></strong></p>
<p>This OOP class has had a greater influence on me as a developer than anything else ever has.  Heavily based on both in-class lectures (with reading assignments) and very large get-your-hands-dirty team programming assignments, the course was a great mix of theory and practice.</p>
<p>We went over many important topics such as encapsulation, inheritance, composition, cohesion, encumbrance, type conformance, <a href="http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/paper-boy/demeter.pdf">Law of Demeter</a>, <a href="http://pragmaticprogrammer.com/articles/tell-dont-ask">Tell Don&#8217;t Ask</a>, <a href="http://www.objectmentor.com/resources/articles/ocp.pdf">Open-Closed Principle</a>, <a href="http://www.objectmentor.com/publications/lsp.pdf">Liskov Substitution Principle</a>, and <a href="http://en.wikipedia.org/wiki/Model–view–controller">MVC</a>.  We also became deeply familiar with reading <a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML diagrams</a> and <a href="http://en.wikipedia.org/wiki/Sequence_diagram">sequence diagrams</a> and used these to express complex software object models.</p>
<p>The real value from this course, though, came from the programming assignments.  We worked in groups of 7-8 people throughout the semester on three different iterations of a real-time role playing rage (RPG) in Java based on proper OO design based on what we had learned at that point in the semester.  We actually started from scratch for each of the 3 iterations, and, for each iteration, I spent about 90 hours outside of class working with my group on a solid UML design and implementing our design in Java.</p>
<p>These group assignments, even though they were very time consuming, had a huge amount of value in helping us turn abstract OO concepts into practice.  They were also very rewarding as we were creating a pretty cool game</p>
<p>A side effect was that I also <strong>learned a lot about teamwork and leadership</strong>, and working with a group of people under high-stress work environments.  They also were what caused me to really know Java well.</p>
<hr /><strong>Runner Ups</strong></p>
<ul>
<li><strong>Design Patterns</strong><strong> in OOP</strong> (CIS 4930) &#8211; Dave&#8217;s other class.  I&#8217;d highly recommend it to anyone wanting to become a better programmer/designer.</li>
<li><strong>Business Finance</strong></li>
<li><strong>Intro to Financial Accounting </strong></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/graduation-thoughts-best-classes-at-uf-for-computer-engineering/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Now I&#8217;m a PHP5 Zend Certified Engineer</title>
		<link>http://philfreo.com/blog/php5-zend-certified-engineer/</link>
		<comments>http://philfreo.com/blog/php5-zend-certified-engineer/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 03:15:40 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=96</guid>
		<description><![CDATA[I had a few goals for this summer away from school.  I wanted to go to some tech conferences, check out more startups and web companies in both Silicon Valley and closer to home in Florida, and continue with my freelance development work.  I also decided I wanted to take the Zend PHP 5 Certification [...]]]></description>
			<content:encoded><![CDATA[<p>I had a few goals for this summer away from school.  I wanted to go to some <a href="http://philfreo.com/blog/category/io2009/">tech</a> <a href="http://2009.sf.wordcamp.org/">conferences</a>, check out more startups and web companies in both Silicon Valley and closer to home in Florida, and continue with my freelance development work.  I also decided I wanted to take the <a href="http://www.zend.com/en/services/certification/php-5-certification/">Zend PHP 5 Certification</a> test to learn more, see what I know, and to separate myself from every other kid who thinks they know PHP.</p>
<p><span id="more-96"></span></p>
<p>By the way, the thing I hate about PHP most is that, because it&#8217;s so easy to get started with, you can&#8217;t immediately differentiate between people who really know PHP (with a solid understanding of security issues, scalability, MVC, object-oriented programming, design patterns, etc.) and people who know just enough to be dangerous.  I&#8217;ve seen way too many websites written with PHP and HTML scattered together, SQL injection vulnerabilities, lack of code reusability, etc. This problem isn&#8217;t specific to PHP only, but I find the percentage of novice PHP developers to be <em>far</em> worse than, say, Ruby or Python developers.</p>
<p>So I looked through the &#8220;php|architect&#8217;s Zend PHP 5 Certification&#8221; study guide for the last couple days and took an online practice test.  I actually learned a lot of interesting things about PHP that I didn&#8217;t know – so it was a good experience.</p>
<p>Today I took the exam at a local testing center and am happy to announce that I am officially a PHP 5 Zend Certified Engineer (ZCE).</p>
<p><a href="http://zend.com/zce.php?c=ZEND011307&#038;r=231006815"><img src="http://static.zend.com/topics/php5-zce-logo-new.gif" alt="Zend Certified Engineer, PHP 5" /></a></p>
<p>By the way, if you&#8217;re looking to hire a good PHP developer, let me know (<a href="/resume/">resume is here</a>).  I graduate in December 2009.</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/php5-zend-certified-engineer/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google Summer Internship Completed / Goodbye California</title>
		<link>http://philfreo.com/blog/google-summer-internship-completed-goodbye-california/</link>
		<comments>http://philfreo.com/blog/google-summer-internship-completed-goodbye-california/#comments</comments>
		<pubDate>Thu, 30 Aug 2007 19:11:41 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[California]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.philfreo.com/blog/?p=32</guid>
		<description><![CDATA[This summer I had the privilege to intern at Google and spent another summer in Silicon Valley &#8211; the hub of all things tech-related. My internship lasted 10 weeks and, much like my Yahoo! internship last summer (I gave my reasons for not going back to Yahoo! this summer), I had an incredible experience. I [...]]]></description>
			<content:encoded><![CDATA[<p>This summer I had the privilege to intern at Google and spent another summer in Silicon Valley &#8211; the hub of all things tech-related.  My internship lasted 10 weeks and, much like my Yahoo! internship last summer (I gave my <a href="http://www.philfreo.com/blog/?p=29">reasons for not going back to Yahoo! this summer</a>), I had an incredible experience.</p>
<p><span id="more-32"></span></p>
<p>I learned a lot at Google.  I did a combination of development for the front-end (JavaScript/AJAX, CSS/HTML) as well as on the back-end (PHP, Java).  Every line of code that I wrote was code reviewed by another Googler before it could be checked in.  At first I thought this was an unnecessary and time-wasting procedure, but I came to understand the importance of this, even for the seemingly unimportant pieces of code.  When you know someone else is going to be looking at your code, it forces you to program more clearly and concisely, and I learned better coding techniques from the code reviews.  Also, by ensuring that all code at Google conforms to the same style guides, any engineer can quickly jump into someone else&#8217;s code with the smallest possible learning curve.</p>
<p>My software engineering internship was pretty unique and flexible because of the team that I was on, so I also had the opportunity to do a good bit of UI (user interface) work.  I designed from scratch, improved existing UIs, and did research and make recommendations for better UIs.  My other team members (<a href="http://www.guidebookgallery.org/">here&#8217;s</a> <a title="Ted Dziuba" href="http://www.uncov.com/">two</a>) were very talented and I was able to learn a lot just by working along side them.  Working at a company like Google is great because you are constantly surrounded by very intelligent people.</p>
<p>It is a great feeling to know that you&#8217;re working at a company which is providing products and services that millions of people use every day.  It is an even better feeling to know that your work is directly being used and liked by real people.  At Google, while doing research for one of my projects, I had an idea that would help save other Googlers time and make them more productive.  Without getting into details about the project itself, after about 1,000 lines of JavaScript, I had created something that <em>a lot </em>of Googlers started using, talking about, and sharing with others.  It wasn&#8217;t a world changing application that is being launched externally any time soon, but it was useful enough that we could actually see it spreading virally throughout the company, and I got over 100 thank you emails within a few days.  I can only imagine the great feeling it would have been to create an external product (like GMail), that millions of people love and use daily.</p>
<p>Another great part of the summer was the opportunities for networking.  I was able to visit <a href="http://meebo.com">Meebo</a> for another great <a href="http://www.lunch20.com/">lunch2.0</a>, visited the offices of <a href="http://facebook.com/">Facebook</a> a couple times, met the creator of <a href="http://mint.com/">Mint</a> (which I think is my favorite web2.0 app of the year), attended <a href="http://wordcamp.org">WordCamp</a>, and attended the <a href="http://www.techcrunch.com/2007/07/28/techcrunch-9-at-august-capital-thank-you-for-coming/">Techcrunch Party 9</a> at August Capital.  It was also great seeing, meeting, and hanging out with a lot of other young people working in the web space &#8211; other Google interns, friends at Yahoo! and eBay, those doing startups, others working in the Bay Area, and friends who flew out to visit.<br />
Overall, I&#8217;d give the summer a thumbs up.  For now, I&#8217;m back in Gainesville studying Computer Engineering at UF, where the weather is significantly hotter.  A lot of people have asked me about next summer and what I want to do when I graduate.  I still do not know.  I could definitely see myself at a company like Google, but for now I am just looking forward to a new semester at school and am not making any definite plans yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/google-summer-internship-completed-goodbye-california/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Summer Internship</title>
		<link>http://philfreo.com/blog/google-summer-internship/</link>
		<comments>http://philfreo.com/blog/google-summer-internship/#comments</comments>
		<pubDate>Fri, 20 Apr 2007 20:08:20 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://www.philfreo.com/blog/?p=29</guid>
		<description><![CDATA[I&#8217;m was recently offered and accepted an internship at Google for the summer. I&#8217;m extremely excited about this opportunity as I&#8217;ll be working at the company which has been having such an incredible amount of impact on the web. I&#8217;m looking forward to being around and learning from the very talented people that work there. [...]]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://www.google.com/intl/en_ALL/images/logo.gif" />I&#8217;m was recently offered and accepted an internship at Google for the summer.  I&#8217;m extremely excited about this opportunity as I&#8217;ll be working at the company which has been having such an incredible amount of impact on the web.  I&#8217;m looking forward to being around and learning from the very talented people that work there.</p>
<p><span id="more-29"></span><br />
My title will be Software Engineering Intern, and I&#8217;ve been placed on a team that works on web applications for Google&#8217;s intranet.  I won&#8217;t be able to discuss any specifics of what I&#8217;m working on once I begin, but I&#8217;m expecting it will relate to primarily front-end work (user interfaces and such using HTML/CSS and JavaScript/AJAX) as well as some PHP.</p>
<p>I&#8217;ll be out in the San Francisco Bay area again (6/5/07 &#8211; 8/10/07), most likely living near downtown San Jose.  I&#8217;m definitely looking forward to reconnecting with many of the people I met last year there and meeting many more.</p>
<p>Lastly, some people have asked me about Yahoo!, and why I&#8217;m not returning there for another summer.  I had an incredible experience at Yahoo! last summer; it is a leading web company and I learned a lot by being there.  However, I feel like my summer would be better spent at Google for a few reasons. First of all, this is the one time in my life where I&#8217;m able to easily check out multiple competing companies in a relatively short period of time.  Secondly, while Yahoo! is doing great things, Google is behind more products that I currently use on a daily basis and I have a strong appreciation for their simple but powerful interfaces such as Gmail and Google Calendar.  I&#8217;m not putting Yahoo! out of the question in terms of future employment, but I also don&#8217;t feel an obligation to go back.</p>
<p>I&#8217;m looking forward to this summer at Google.  I expect to learn a lot and will hopefully have another great, eye-opening experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/google-summer-internship/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Thoughts and Recap of SXSW</title>
		<link>http://philfreo.com/blog/thoughts-and-recap-of-sxsw/</link>
		<comments>http://philfreo.com/blog/thoughts-and-recap-of-sxsw/#comments</comments>
		<pubDate>Thu, 29 Mar 2007 05:02:09 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[SXSW]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.philfreo.com/blog/?p=19</guid>
		<description><![CDATA[This post comes a bit late, but I wanted to recap my experience at SXSW Interactive 2007. I decided to diverge from the typical college spring break plan and headed out to Austin, TX for the 4-day conference covering topics such as web design, usability, blogging, and other technology. Some of the panels and parties [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://2007.sxsw.com/"><img border="0" align="right" style="margin: 7px" src="http://2007.sxsw.com/img/plat.gif" /></a>This post comes a bit late, but I wanted to recap my experience at <a href="http://2007.sxsw.com/interactive/">SXSW Interactive 2007</a>.   I decided to diverge from the typical college spring break plan and headed out to Austin, TX for the 4-day conference covering topics such as web design, usability, blogging, and other technology.</p>
<p><span id="more-19"></span></p>
<p>Some of the panels and parties that I enjoyed the most:</p>
<p><strong>Saturday 3/10:</strong></p>
<ul>
<li><em>After the Brief: A Field Guide to Design Inspiration</em>.  It was great to see some examples of inspiration for designers <a href="http://www.jasonsantamaria.com/">Jason Santa Maria</a> and <a href="http://www.robweychert.com/">Rob Weychert</a> of <a href="http://www.happycog.com/">Happy Cog Studios</a></li>
<li><em>Grids Are Good and How to Design with Them</em>.  Very insightful and practical presentation about using grids in design from Mark Boulton and Khoi Vinh of Subtraction</li>
<li><em>From Tags to Riches: Life After Code</em>.</li>
</ul>
<p><strong>Sunday 3/11:</strong></p>
<ul>
<li><em>Keynote Conversation: <a href="http://www.ladyada.net/">Limor Fried</a> / Phil Torrone</em>.  They&#8217;re from <a href="http://www.makezine.com/">MAKE</a>, what else do I need to say?  It was also good to see <a href="http://brepettis.com/">Bre Pettis</a> of Make Magazine again.</li>
<li><a href="http://bowling.avalonstar.com/"><em>Avalonstar Bowling Tournament</em></a>.  Thanks Bryan Veloso, this was definitely one of my favorite parts about SXSW.  Competition+meeting others in a fun environment was a great experience.  My team, Team Pin Monkeys, came in 2nd place overall, after nearly losing to the guys from <a href="http://www.clearleft.com/">Clearleft</a>.</li>
</ul>
<p><strong>Monday 3/12:</strong></p>
<ul>
<li><em>Barenaked App: The Figures Behind the Top Web Apps</em>.  Many thanks to the founders of Freshbooks, Dropsend, and others who were willing to share exact figures in terms of development costs, gross revenue, etc for several popular web apps.  I was especially shocked to see the high monthly maintenance costs of these apps &#8211; very insightful.</li>
<li><em>The Growth and Evolution of <a href="http://microformats.org/">Microformats</a></em>.</li>
<li><em><a href="http://www.godbit.com/">Godbit</a> Dinner</em>.  Great to finally meet <a href="http://www.sonspring.com">Nathan Smith</a> and several other great people and had some really good conversations.</li>
</ul>
<p><strong>Tuesday 3/12:</strong></p>
<ul>
<li><em>Web Typography Sucks.  </em>Another great presentation on the current state of web typography.  I learned a lot in terms of letter spacing, line height, fonts, special characters, alignment, and more.</li>
</ul>
<p>All in all, I had a great experience.  While I expected to go to SXSW to learn a lot (and I did), I quickly figured out that it wasn&#8217;t really just about that.  As <a href="http://richarddcrowley.org/blog/view/118">Richard pointed out</a>, it&#8217;s more about meeting people.  No other place (arguably besides in Silicon Valley) can you find so many enthusiastic and talented designers and programmers.  I was able to just go up and introduce myself to well-known designers and bloggers, and they were always completely approachable and humble.  Being in this kind of environment definitely caused me to think about the web design and developing web apps in a different way.  SXSWi: highly recommended.</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/thoughts-and-recap-of-sxsw/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Website Launched &#8211; 24/7 Tutor</title>
		<link>http://philfreo.com/blog/new-website-launched-247-tutor/</link>
		<comments>http://philfreo.com/blog/new-website-launched-247-tutor/#comments</comments>
		<pubDate>Tue, 24 Oct 2006 04:17:58 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[College]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[UF]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.philfreo.com/blog/?p=22</guid>
		<description><![CDATA[I just completed a web design project for 24/7 Tutor &#8211; a new Gainesville-based tutoring service for UF students. They let students call them literally 24 hours a day for tutoring in a growing list of difficult classes&#8230; The site&#8217;s back-end is run by WordPress &#8211; I am very happy with using it as a [...]]]></description>
			<content:encoded><![CDATA[<p>I just completed a web design project for <a href="http://24-7-tutor.com/">24/7 Tutor</a> &#8211; a new Gainesville-based tutoring service for UF students.  They let students call them literally 24 hours a day for tutoring in a growing list of difficult classes&#8230;</p>
<p><span id="more-22"></span></p>
<p>The site&#8217;s back-end is run by WordPress &#8211; I am very happy with using it as a complete, but cost-effective, content management system (CMS) solution.  The back-end is not fool-proof (lot&#8217;s of things to click) but certainly is not too difficult for most clients.  Most importantly, being able to take advantage of a such a well-written, open-source solution enables clients to have a CMS with little additional cost.</p>
<p>In addition to using WordPress, I integrated a Google Calendar, allowing the company to add events to a good-looking calendar <em>easily</em> through Google&#8217;s existing calendar website.  Even more exciting is the fact that users of the site can then &#8220;subscribe&#8221; to the calendar, or copy specific events to their own personal Google Calendar.</p>
<p>Google Calendar is officially my second most-relied-on service by Google (search is #1, personalized home is #3).  Even though it does have its share of <a href="/blog/?p=21">problems</a>, I now rely on it to pretty much run my life, since I switched from Outlook Calendar a few weeks ago.<br />
<a href="http://24-7-tutor.com/"><img border="0" src="http://www.philfreo.com/assets/img/latestproject_tutor.jpg" /></a></p>
<p>Hopefully John, Tom, and Maxim from 24/7 Tutor are happy with the site &#8211; and hopefully it will bring them a lot of new business.</p>
<p><strong>Edit</strong>: someone asked me if there&#8217;s really that big of a market for personal tutoring for a University.  There certainly is.  <a href="http://www.tutoringzone.com/defaultuf.asp">TutoringZone</a> currently dominates the market I believe (although with a crappy web design), <a href="http://www.tutorgator.com/">TutorGator</a> looks like they just ripped off Facebook&#8217;s site design, and I know there is at least one other company.</p>
]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/new-website-launched-247-tutor/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

