<?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"
	>

<channel>
	<title>Todd Pinkerton &#187; tech</title>
	<atom:link href="http://www.toddpinkerton.com/blog/category/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.toddpinkerton.com/blog</link>
	<description>have you tried turning it off and on again?</description>
	<pubDate>Tue, 07 Oct 2008 21:06:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>from powerpoint to webapp</title>
		<link>http://www.toddpinkerton.com/blog/2008/01/01/from-powerpoint-to-webapp/</link>
		<comments>http://www.toddpinkerton.com/blog/2008/01/01/from-powerpoint-to-webapp/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 01:20:32 +0000</pubDate>
		<dc:creator>todd</dc:creator>
		
	<dc:subject>innovation</dc:subject>
	<dc:subject>philosophy</dc:subject>
	<dc:subject>tech</dc:subject>
	<dc:subject>work</dc:subject>
	<!-- AutoMeta Start -->
	<category>powerpoint</category>
	<category>conversation</category>
	<category>entrepreneur</category>
	<category>revolutionize</category>
	<category>feature</category>
	<category>detail</category>
	<category>screens</category>
	<category>involves</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.toddpinkerton.com/blog/2008/01/01/from-powerpoint-to-webapp/</guid>
		<description><![CDATA[In my consulting career, I&#8217;ve been fortunate to see similar problems multiple times &#8212; hopefully, I&#8217;ll learn from each one and not make the same mistakes the next time I encounter that particular situation.  One situation in particular involves a conversation with an entrepreneur, and it goes something like this :
Entrepreneur:  I have [...]]]></description>
			<content:encoded><![CDATA[<p>In my consulting career, I&#8217;ve been fortunate to see similar problems multiple times &#8212; hopefully, I&#8217;ll learn from each one and not make the same mistakes the next time I encounter that particular situation.  One situation in particular involves a conversation with an entrepreneur, and it goes something like this :</p>
<p><strong>Entrepreneur</strong>:  I have an idea for a web app that will revolutionize the [blank] industry, and make us bajillions!</p>
<p><strong>me</strong>:  That&#8217;s great! I can tell you are passionate and excited, and that&#8217;s critical to your success. But do you have enough cash to pay for this coffee?</p>
<p><strong>Entrepreneur</strong>: Yes, we have some funding to get started. And I have a business plan explaining our strategy, and I have a powerpoint deck of what the product does.</p>
<p><strong>Me</strong>: That&#8217;s even better! I&#8217;ll have another espresso then.</p>
<p><strong>Entrepreneur</strong>: We&#8217;d like you to get us started on our website development. Here&#8217;s our feature set for beta release. How long is this going to take? How many people, and what other stuff do we need?<br />
<br/></p>
<p><strong>Me</strong>: Ummm&#8230;.and that&#8217;s where the conversation gets difficult.  Because the business plan doesn&#8217;t go into  great detail about the product (it shouldn&#8217;t), and the powerpoint slides have a bunch of boxes and arrows but don&#8217;t show what the screens look like or what actions the user takes, we can assume <em>the founding team hasn&#8217;t thought much about how people actually use their product</em>.<br />
<br/><br />
So at this point in the conversation, I face an uphill climb. I have to explain to (and convince)  my client that they have a lot of hard work figuring out how their users are going to use this tool to accomplish their tasks, what those steps are, and what they look like.  I have to tell them I don&#8217;t know how long this is going to take, and I doubt anyone else knows either.</p>
<p>Most of these conversations end with me suggesting some homework for the founders. It&#8217;s kind of a toolkit of useful things that you probably need, but it&#8217;s definitely not everything you need.  But it&#8217;s a start.</p>
<ul>
<li>read &#8220;<a title="Getting Real" href="http://gettingreal.37signals.com/">Getting Real</a>&#8220;, the 37signals book.  PDF, online, or print version, I don&#8217;t care. Read it, and know it. When in doubt, consult this book. When not in doubt, consult this book and make sure you are still on the path. I hate to use the word &#8216;bible&#8217;, but it&#8217;s the closest thing we have. It lays out the process of building a web product, from concept to delivery and beyond.  If you&#8217;re under 25, I guess you can real <a title="paul graham" href="http://paulgraham.com">Paul Graham</a> too.</li>
<li></li>
<li>setup a server on <a title="slicehost VPS" href="http://slicehost.com">slicehost</a> for development (for rails, anyway).  Easy, cheap, and upgradeable.</li>
<li></li>
<li>likewise, set up a subversion repository to hold your source code on <a title="svnrepository.com" href="http://svnrepository.com">svnrepository.com. </a>You could host your own, but I like the peace of mind I get knowing my source is backed up and secure. As a bonus, you get a Trac instance for bug tracking, and it includes a wiki and other tools to make developing your web app easier.</li>
<li></li>
<li>hire a designer, probably a freelance one, to draw some wireframes for you. Give them lots of your time, because that&#8217;s how you&#8217;re going to figure out what exactly your app does. This is probably the most important person on your team right now, and you should be focused on this. Ideally you can find a good reference through your network, but if not post a well-crafted ad on <a title="craigslist" href="http://craigslist.org">craigslist</a> and look at their portfolios.</li>
<li></li>
<li>At the same time, you probably want a developer to start working on your site. Maybe the developer came first, and she&#8217;s found someone designer-y to work with &#8212; even better.  Just get some stuff down on paper so you can discuss it, scrutinize it, see what works and what doesn&#8217;t.  If your designer is good, and you&#8217;ve spent enough time with them describing what you want, they should have something workable.</li>
<li></li>
<li>Start building your product.  Get your developer, or outsourcer, or nephew or whatever to hack some code.</li>
<li></li>
<li>Your developers are probably following some sort of Agile process like Scrum.  You should be seeing new features and changes on a daily or weekly basis.  This is important, so you can play with your app as it is being born and give some feedback, change it, and make it better. If you&#8217;re waiting weeks or months before peeking, you&#8217;re doing it wrong. Good chefs taste as they cook.</li>
<li>Once you have something you like, and works, and does what it&#8217;s supposed to, consider doing a limited release. Announce to your friends and families, have them play with it, ask for their feedback.  If you can&#8217;t get your loved ones to pay attention to something you&#8217;ve been slaving over, well, that&#8217;s not a good sign.</li>
<li></li>
<li>While you&#8217;re at it, put some site monitoring on it like <a title="site24x7 -- site monitoring" href="http://site24x7.com">site24&#215;7.com</a> &#8212; so you&#8217;ll know if you get swamped with too much traffic from Digg or Slashdot or nytimes.com, should they write about your site.</li>
<li></li>
<li>Go slow. look how your userbase is growing, if it is at all. Get some more users &#8212; email more friends, or blog about it, or buy a few Google ads. Setup <a title="Google Analytics" href="http://www.toddpinkerton.com/blog/analytics.google.com">Google Analytics</a> to track visitors to your site, and learn what is working and what isn&#8217;t. Measure, always measure.</li>
<li></li>
<li>Get more feedback. Listen to your users. Make them happy. As your userbase starts to grow, spend some time thinking about how you can handle the extra load.</li>
</ul>
<p align="left">
<p align="left">
<p align="left">
<p align="left">
<p align="left">
<p>&#8230; and that&#8217;s about it. You&#8217;ve just built and launched an app. Hopefully, you have some users and they like it,maybe even willing to pay for it.  Maybe it sucks, and is a stupid idea. But more likely, it works, has some flaws, and could use some work. So work on it. Improve. Iterate.</p>
<p>Of course, what is considered &#8216;best practices&#8217; today may not be the preferred methods of tomorrow. So I read a lot to stay on top of where the industry is going.  A have a million feeds in my Google Reader account, but only a handful I consider invaluable &#8212; including <a title="TechCrunch" href="http://techcrunch.com">TechCrunch</a>, <a title="Found+Read" href="http://foundread.com">Found+Read</a>, <a title="Read/Write Web" href="http://readwriteweb.com">Read/Write Web</a>, and <a title="Signal vs. Noise -- 37 Signals blog" href="http://www.37signals.com/svn/">Signal vs. Noise</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toddpinkerton.com/blog/2008/01/01/from-powerpoint-to-webapp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MIT announces entrepreneur fellowships</title>
		<link>http://www.toddpinkerton.com/blog/2007/09/27/mit-announces-entrepreneur-fellowships/</link>
		<comments>http://www.toddpinkerton.com/blog/2007/09/27/mit-announces-entrepreneur-fellowships/#comments</comments>
		<pubDate>Thu, 27 Sep 2007 19:11:58 +0000</pubDate>
		<dc:creator>todd</dc:creator>
		
	<dc:subject>Boston</dc:subject>
	<dc:subject>innovation</dc:subject>
	<dc:subject>tech</dc:subject>
	<!-- AutoMeta Start -->
	<category>center</category>
	<category>seminar</category>
	<category>legatum</category>
	<category>entrepreneurship</category>
	<category>products</category>
	<category>technologies</category>
	<category>developmental</category>
	<category>efforts</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.toddpinkerton.com/blog/2007/09/27/mit-announces-entrepreneur-fellowships/</guid>
		<description><![CDATA[last week MIT announced a $50M gift to form a new entrepreneurship and development center.  The donation was made by investment firm Legatum.  The center will focus its efforts on products and technologies to solve problems in developing nations.
Joost Bonsen, who has long been involved in fostering entrepreneurial activities at MIT (including the [...]]]></description>
			<content:encoded><![CDATA[<p>last week <a title="MIT Legatum announcement" href="http://web.mit.edu/newsoffice/2007/legatum-0917.html">MIT announced a $50M gift</a> to form a <a title="Legatum Development and Entrepreneurship Center" href="http://www.lcde.org/">new entrepreneurship and development center</a>.  The donation was made by investment firm <a title="Legatum " href="http://legatum.com/">Legatum</a>.  The center will focus its efforts on products and technologies to solve problems in developing nations.</p>
<p><a title="Joost Bonsen website" href="http://web.media.mit.edu/~jpbonsen/">Joost Bonsen</a>, who has long been involved in fostering entrepreneurial activities at MIT (including the Developmental Entrepreneurship seminar, the <a title="Nuts-and-Bolts of Business Plans -- MIT 15.975" href="http://entrepreneurship.mit.edu/15975/">Nuts-and-Bolts of Business Plans</a> IAP seminar, and the <a title="MIT 100K entrepreneurial competition" href="http://www.mit100k.org/">50K /  100K competitions</a>) is on the exec team for the new center. I&#8217;m very excited for Joost, his hard work in this area deserves this kind of support.</p>
<p>I ran into Joost Monday night at the Muddy Charles pub, where he was hosting an event for MIT entrepreneurs and friends.  Also present were Cory and Erica of<a title="Intuitive Automata -- makers of Autom" href="http://intuitiveautomata.com/"> IntutiveAutomata</a>, makers of <a title="Autom -- weight-loss robot" href="http://web.media.mit.edu/~coryk/weightloss.html">Autom</a>, the weight-loss coach robot.  It&#8217;s an interesting idea, that a human-like device pushes our social and behavioral buttons in a way that keeps us motivated &#8212; more so than a website or other low-touch support system could. I&#8217;m curious to see what the results of their clinical trials are.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toddpinkerton.com/blog/2007/09/27/mit-announces-entrepreneur-fellowships/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ruby, gcc, and powerPC macs</title>
		<link>http://www.toddpinkerton.com/blog/2007/04/06/ruby-gcc-and-powerpc-macs/</link>
		<comments>http://www.toddpinkerton.com/blog/2007/04/06/ruby-gcc-and-powerpc-macs/#comments</comments>
		<pubDate>Sat, 07 Apr 2007 02:48:04 +0000</pubDate>
		<dc:creator>todd</dc:creator>
		
	<dc:subject>Uncategorized</dc:subject>
	<dc:subject>mac</dc:subject>
	<dc:subject>rails</dc:subject>
	<dc:subject>tech</dc:subject>
	<!-- AutoMeta Start -->
	<category>rails</category>
	<category>gems</category>
	<category>fixnum</category>
	<category>mac</category>
	<category>readline</category>
	<category>powerpc</category>
	<category>turns</category>
	<category>ruby</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.toddpinkerton.com/blog/2007/04/06/ruby-gcc-and-powerpc-macs/</guid>
		<description><![CDATA[I&#8217;ve been having trouble with my rails installation for a while. Tests would fail but only every so often, and occasionally a Fixnum object would show up when something else was expected, crashing my app.
It turns out, ruby compiled wth gcc 4.0 on powerPC macs &#8212; which my laptop is one &#8212; is known to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been having trouble with my rails installation for a while. Tests would fail but only every so often, and occasionally a Fixnum object would show up when something else was expected, crashing my app.</p>
<p>It turns out, ruby compiled wth gcc 4.0 on powerPC macs &#8212; which my laptop is one &#8212; is known to exhibit these strange behaviors.  David Heinemeier Hansson <cite><span class="date" /></cite> himself mentioned this in <a href="http://www.vmunix.com/mark/blog/archives/2006/04/08/ruby-gems-still-doesnt-work-on-104/">this blog post</a>.</p>
<p>Turns out, the solution is to set gcc to 3.3 mode, rebuild ruby and any dependent libraries. You can do this with &#8216;gcc_select 3.3&#8242;, then running configure, make, make install as usual.</p>
<p>On the way to finding this fix, I tried updating to Ruby 1.8.5 patchlevel 2.  To get this to work, I had to configure, make, and install, then go into the source tarball in ext/readline and  run :</p>
<pre><span style="color: #007700">cd ext/readline</span></pre>
<pre>> <span style="color: #007700">ruby extconf.rb</span></pre>
<pre>> <span style="color: #007700">make</span> <span style="color: #007700" /></pre>
<pre><span style="color: #007700">> sudo cp readline.bundle /usr/local/lib/ruby/site_ruby/1.8/powerpc-</span><span style="color: #007700">darwin8.9.0</span><span style="color: #007700" /></pre>
<pre>Those instructions came from <a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/5118">this mailing list archive.</a></pre>
<p>So if you&#8217;re running ruby patchlevel 2 &#8212; which is the latest ruby that works with rails 1.2.2 &#8212; make sure you compile with gcc 3.3, and copy over the readline bundle as described above.</p>
<p>I&#8217;m pretty disappointed this much hackery is required to get ruby working on my machine, which is a fairly standard platform.  Ruby should &#8220;just work&#8221; with gcc 4.0, and the Makefile should do the right thing with the readline module as well.  Grrr.<br />
In the near future I hope to get an Intel mac to develop on, and have access to all the latest ruby/rails goodies on that.  But at least now all my tests are passing, and I&#8217;m not getting any more strange Fixnum errors.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toddpinkerton.com/blog/2007/04/06/ruby-gcc-and-powerpc-macs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>O&#8217;reilly E-tel</title>
		<link>http://www.toddpinkerton.com/blog/2007/02/28/oreilly-e-tel/</link>
		<comments>http://www.toddpinkerton.com/blog/2007/02/28/oreilly-e-tel/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 23:35:36 +0000</pubDate>
		<dc:creator>todd</dc:creator>
		
	<dc:subject>innovation</dc:subject>
	<dc:subject>tech</dc:subject>
	<!-- AutoMeta Start -->
	<category>phone</category>
	<category>conference</category>
	<category>sunil</category>
	<category>adhearsion</category>
	<category>recording</category>
	<category>networks</category>
	<category>merging</category>
	<category>voice</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.toddpinkerton.com/blog/?p=15</guid>
		<description><![CDATA[this week I&#8217;m in San Francisco at the O&#8217;reilly Emerging Telephony conference, chaired by my good friend Surj Patel.  The conference is all about how the old-school world of telephones and phone networks are now merging with the Internet. So now, anyone who can write a web application can create a voice service.  [...]]]></description>
			<content:encoded><![CDATA[<p>this week I&#8217;m in San Francisco at the <a href="http://conferences.oreillynet.com/etel2007/">O&#8217;reilly Emerging Telephony conference</a>, chaired by my good friend Surj Patel.  The conference is all about how the old-school world of telephones and phone networks are now merging with the Internet. So now, anyone who can write a web application can create a voice service.  This is part of the inspiration behind <a title="Ringfo -- comparison shop from any phone" href="http://ringfo.com">Ringfo</a>.<br />
Some cool stuff so far :  <a title="Ahearsion" href="http://Adhearsion.com">Adhearsion</a>, a ruby on rails interface to the Asterisk PBX.  My former Colleague from Orange <a title="Q-tech memory aids" href="http://www.qtechinc.com/">Sunil Vemuri</a> has a company working on recording and searching all your phone conversations; and  Chris Sacca gave an inspiring talk about US broadband penetration and Google&#8217;s <a href="https://wifi.google.com/">muni wifi project in Mountain View.</a></p>
<p>More details when I return&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toddpinkerton.com/blog/2007/02/28/oreilly-e-tel/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MySQL tuning 101</title>
		<link>http://www.toddpinkerton.com/blog/2006/10/25/mysql-tuning-101/</link>
		<comments>http://www.toddpinkerton.com/blog/2006/10/25/mysql-tuning-101/#comments</comments>
		<pubDate>Wed, 25 Oct 2006 19:29:30 +0000</pubDate>
		<dc:creator>todd</dc:creator>
		
	<dc:subject>mysql</dc:subject>
	<dc:subject>scalability</dc:subject>
	<dc:subject>tech</dc:subject>
	<!-- AutoMeta Start -->
	<category>queries</category>
	<category>queries</category>
	<category>indexes</category>
	<category>query</category>
	<category>tune</category>
	<category>create</category>
	<category>show</category>
	<category>connections</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.toddpinkerton.com/blog/?p=6</guid>
		<description><![CDATA[In my last post, I talked about how hard it was to find good resources for newbies to learn database tuning, especially with the very popular MySQL database &#8212; the free or commercial version.
This post will talk you through the basics of database tuning. Ready? here we go:
1) hardware is important.
Ideally, your mySQL server will [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post, I talked about how hard it was to find good resources for newbies to learn database tuning, especially with the very popular MySQL database &#8212; the free or commercial version.</p>
<p>This post will talk you through the basics of database tuning. Ready? here we go:</p>
<p>1) hardware is important.</p>
<p>Ideally, your mySQL server will be on its own dedicated box.  Sharing it with Apache and the rest of your application may be fine starting off, but eventually you&#8217;ll want a dedicated machine for it. This also helps establish the right infrastructure for scalability, so you can add more webserver boxes which all connect to your database machine.</p>
<p>So of course, things like RAM (speed and amount of), disk (speed and size of), and CPU horsepower all matter. Get as much as you can.</p>
<p>2) get the right tools.  To even begin to tune the performance of your database, you need to be able to measure it.  So get some good tools like</p>
<p>* <a title="mytop" href="http://jeremy.zawodny.com/mysql/mytop/">mytop</a> (monitor mysql queries and performance)<br />
* <a title="ab -- apache benchmark" href="http://httpd.apache.org/docs/2.0/programs/ab.html">ab</a> (apache benchmark, for load-testing apache)<br />
* <a title="top" href="http://www.unixtop.org/">top</a> (cpu/memory performance, process management)<br />
* <a title="iostat" href="http://www.adminschoice.com/docs/iostat_vmstat_netstat.htm">iostat</a> (disk/cpu performance)</p>
<p>and and learn how to use them.  Test your database using whatever queries and scenarios your encounter in your &#8216;real world &#8216; application.  As you tune you want to see queries per second go up, and time per request go down.<br />
3) you run top, and find that your database is occupying 99% of the CPU.  Now what?</p>
<p>If your database is thrashing, now is the time to take action.  Start by looking at your sql queries in your application.  Turn on &#8216;<a title="slow query log" href="http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html">log slow queries</a>&#8216; in mysqldb &#8212; this will show you which sql statements are slowing down your db.  I had a situation where I was  calling &#8216;.lower()&#8217; on some columns before doing string comparisons in my application, but this was unnecessary &#8212; mySQL is case-insensitive by default, and using .lower() was causing my indexes to be ignored! So go through all your SQL statements very carefully, and pay special attention to the functions you call and any that show up in the slow queries log.<br />
4)  create good indexes.  Indexes make queries on your tables go faster.  Creating the right indexes is a fine art, but for starters create an index on everything in your WHERE clause. If there&#8217;s more than one column in your WHERE clause, create an index that covers both (or all) those columns.  Make sure your indexes are being used by running &#8216;describe&#8217; on your queries, for example : DESC select * from items;</p>
<p>This will show you what indexes are available, and which ones are being used.  Do this for every query in your application.<br />
5) Tune some mySQL parameters on the server.  Some basic ones are query-cache-type and query-cache-size (to turn on <a title="mySQL query caching" href="http://www.databasejournal.com/features/mysql/article.php/3110171">query caching</a>), and thread_cache_size (to enable <a title="mySQL thread caching" href="http://jeremy.zawodny.com/blog/archives/000173.html">thread caching</a>).  Turning on both of these should help.</p>
<p>At this point, you should have a reasonably fast database; you should also see your CPU usage for mysqld go way down.  But to make your entire app run smoothly, you&#8217;ll want to take a look at how mysql interacts with apache (httpd).  Although not everyone uses apache for their webserver, chances are you do, and if you adjust some of the apache params things will get even better.</p>
<p>For example, if Apache is set to allow 200 max connections, then your database should never get more than that number of simultaneous connections (one mysql connection per apache client), so you can scale back those attributes &#8212; which should free up ram and CPU.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toddpinkerton.com/blog/2006/10/25/mysql-tuning-101/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
