<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Lead Thinking</title>
	
	<link>http://leadthinking.com</link>
	<description>The Business of Software Development</description>
	<lastBuildDate>Mon, 31 Aug 2009 10:34:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Eribium" type="application/rss+xml" /><feedburner:emailServiceId>Eribium</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>P2P using TCP &amp; Ruby</title>
		<link>http://feedproxy.google.com/~r/Eribium/~3/nxJ8xuHdwCQ/213-p2p-using-tcp-ruby</link>
		<comments>http://leadthinking.com/213-p2p-using-tcp-ruby#comments</comments>
		<pubDate>Mon, 31 Aug 2009 10:33:33 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Machsend]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=213</guid>
		<description><![CDATA[This is going to be a fairly technical post about the technologies behind Machsend and using P2P over TCP rather than UDP. I&#8217;v written a lot of context to the problem, so if you want to skip to the juicy protocol details look for the set of bullet points.
We recently launched Machsend, which enables people to send [...]]]></description>
			<content:encoded><![CDATA[<p>This is going to be a fairly technical post about the technologies behind <a href="http://machsend.com">Machsend</a> and using P2P over TCP rather than UDP. I&#8217;v written a lot of context to the problem, so if you want to skip to the juicy protocol details look for the set of bullet points.</p>
<p>We recently launched <a href="http://machsend.com">Machsend</a>, which enables people to send unlimited amounts of data from inside the browser. You literally drag a file onto the site, send the recipient a link, and they can download it straight away. Machsend uses TCP P2P connections to transfer data between clients.<br />
<span id="more-213"></span></p>
<p>Most of the packets on the internet are controlled by <a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a> which provides a reliable, ordered delivery of a stream of bytes between two endpoints. The alternative is <a href="http://en.wikipedia.org/wiki/User_Datagram_Protocol">UDP</a> which is much lower level than TCP &#8211; information isn&#8217;t guaranteed to reach its destination. Most P2P implementations use UDP to communicate (for reasons we&#8217;ll come to later), but I&#8217;m going to show you how to get the flow control and reliability of TCP in P2P connections.</p>
<p>Routers (combined with firewalls) are both critical to the stability of the internet, and an enemy to P2P connections. Networks can have lots of computers behind a single IP using a router &#8211; and the router will make sure the right packets get to the right computers, AKA <a href="http://en.wikipedia.org/wiki/Network_address_translation">NAT</a>. However,  I guess they just weren&#8217;t designed with P2P in mind &#8211; so most require a bit of coaxing/trickery to set up P2P connections.</p>
<p>With UDP it&#8217;s fairly straight forward &#8211; that&#8217;s why it&#8217;s so commonly used in P2P software.<br />
Client A sends a packet to Client B, opening a hole in Client A&#8217;s firewall. That packet will be discarded by Client B&#8217;s firewall, but that doesn&#8217;t matter. Client B then does the reverse, sending a packet back Client A &#8211; now there&#8217;s a hole in both firewalls and a P2P connection. I&#8217;m glossing over some of the more technical details, such as <a href="http://en.wikipedia.org/wiki/STUN">STUN</a> and port prediction, but that&#8217;s the general gist. <a href="http://www.h-online.com/security/How-Skype-Co-get-round-firewalls--/features/82481/0">Here&#8217;s</a> a good article on how Skype uses UDP P2P techniques to traverse firewalls.</p>
<p style="text-align: center;"><img class="size-full wp-image-220 aligncenter" title="Machsend1" src="http://leadthinking.com/wp-content/uploads/2009/08/Machsend1.jpg" alt="Machsend1" width="453" height="146" /></p>
<p>UDP is perfect for Skype, for example, since you don&#8217;t care that much about reliability when delivering audio &amp; video &#8211; but rather responsiveness. The data is very time dependent and needs to get to its destination quickly. However, with most other data transfers we care that all the data reaches the destination properly. If you&#8217;re transferring a picture to someone, you want to be sure all of it reaches the recipient.</p>
<p>I have actually created a UDP protocol for data transfer that&#8217;s as reliable as TCP, yet is also faster. That, however, is the subject of another post.</p>
<p>While routers don&#8217;t meddle with UDP connections too much, that&#8217;s not the case for TCP ones. Routers will enforce TCP standards and prevent you from accepting random incoming TCP connections. On top of that, most operating systems require root access to create raw sockets, which you need to manipulate TCP streams at the packet level.</p>
<p>So, it&#8217;s a bit of a pickle &#8211; on hand you&#8217;ve got proper P2P connections with UDP, but you have to implement your own flow control and reliability algorithms. On the other hand, TCP P2P connections seem very tricky to setup and aren&#8217;t supported on many routers.</p>
<p>Most people presented with this problem, will either use <a href="http://en.wikipedia.org/wiki/Universal_Plug_and_Play">UPnP</a>, a protocol for programs to configure routers, or tell people to configure their routers manually.<br />
Obviously, this is far from ideal, both approaches have major caveats, but unfortunately it&#8217;s going to be the status quo for a while.</p>
<p>I was in the aforementioned situation, until I found a <a href="http://nutss.gforge.cis.cornell.edu/pub/imc05-tcpnat.pdf">paper</a> titled <em>Characterization and Measurement of TCP Traversal through NATs and Firewalls</em>. The students tested about 7 methods of TCP P2P traversals, and advocated a fairly simple one that works with about 80% of the firewalls they tested.</p>
<p>To save you reading the paper, I&#8217;ll elaborate. The TCP protocol starts with a 3 way handshake of SYN and ACK packets. However, although it&#8217;s an unlikely combination, most routers will let through incoming SYN packets, if an outgoing SYN packet has been sent to exactly the same ip and port combination. So, to sum up:</p>
<ul>
<li>Client A sends a SYN packet to Client B</li>
<li>Client A starts listening on exactly the same port the previous SYN packet was sent on</li>
<li>Client B then creates a normal TCP connection to Client A, to exactly the same local port Client A used to send the SYN, binding locally to exactly the same port that Client A sent the SYN packet too.</li>
</ul>
<p style="text-align: center;"><img class="size-full wp-image-221 aligncenter" title="Machsend2" src="http://leadthinking.com/wp-content/uploads/2009/08/Machsend2.jpg" alt="Machsend2" width="451" height="146" /></p>
<p>And that&#8217;s all there is to TCP P2P &#8211; those three steps.</p>
<p>To send a SYN packet without using raw sockets you just open a socket to an address, and then immediately close it.</p>
<p>To open a socket on a particular local port, since it&#8217;s usually chosen for you, you just need to set some options. If you enable SO_REUSEADDR and SO_REUSEPORT the operating system shouldn&#8217;t complain.</p>
<p>The document for Ruby&#8217;s Socket class is fairly sparse, so here&#8217;s an abstraction over it:</p>
<p><script src="http://gist.github.com/178025.js"></script> </p>
<p>To accept connections from Client B, Client A sends a SYN packet, and then listens:    </p>
<p><script src="http://gist.github.com/178028.js"></script></p>
<p>Client B&#8217;s connection to Client A looks like this:</p>
<p><script src="http://gist.github.com/178026.js"></script></p>
<p>If the connection fails, try reversing Client A and B, so Client B makes the connection to Client A &#8211; this usually works.</p>
<p>So, you might be asking yourself &#8211; how does Client A know Client B&#8217;s IP &amp; port, and vica versa? Who&#8217;s controlling it? Well, for that you need a third party server known to both endpoints &#8211; usually called a STUN server, or with TCP traversal, STUNT. For Machsend, we built a JSON RPC server using Event Machine .</p>
<p>At the moment we haven&#8217;t implemented any port  prediction since I&#8217;ve noticed most of the routers keep the same ports that the computers choose. However, to improve reliability, that could certainly be implemented.</p>
<p>As well as the previously linked paper, there&#8217;s a good article on the subject <a href="http://www.bford.info/pub/net/p2pnat/">here</a>.</p>
<img src="http://feeds.feedburner.com/~r/LeadThinking/~4/ZT-LJ5iM26M" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/Eribium/~4/nxJ8xuHdwCQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/213-p2p-using-tcp-ruby/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://leadthinking.com/213-p2p-using-tcp-ruby</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/LeadThinking/~3/ZT-LJ5iM26M/213-p2p-using-tcp-ruby</feedburner:origLink></item>
		<item>
		<title>Bowline Roadmap – Call for contributors</title>
		<link>http://feedproxy.google.com/~r/Eribium/~3/epHznWdrbLs/208-bowline-roadmap-call-for-contributers</link>
		<comments>http://leadthinking.com/208-bowline-roadmap-call-for-contributers#comments</comments>
		<pubDate>Sun, 30 Aug 2009 12:52:54 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Bowline]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=208</guid>
		<description><![CDATA[I&#8217;ve been fairly overwhelmed in the amount of coverage my last post on Bowline got, more than 10,000 hits and in the top 50 Delicious links for the day &#8211; it&#8217;s great to see the Ruby community&#8217;s support for building desktop applications. This post is just to put out a brief roadmap and show any [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been fairly overwhelmed in the amount of coverage my <a href="http://leadthinking.com/191-bowline-a-ruby-gui-framework">last</a> post on Bowline got, more than 10,000 hits and in the top 50 Delicious links for the day &#8211; it&#8217;s great to see the Ruby community&#8217;s support for building desktop applications. This post is just to put out a brief roadmap and show any potential contributers how to get involved.</p>
<p>Currently I&#8217;m working on getting Ruby Threads working, Bowline would be a bit useless if it locked up every time you called out to Ruby. This involves upgrading upgrading Titanium&#8217;s Ruby version to 1.9, and using a rather obscure API for blocking the threads when Titanium calls Ruby (since Ruby isn&#8217;t thread safe). You can find the ticket <a href="http://appcelerator.lighthouseapp.com/projects/25719/tickets/46-ruby-thread-problems">here</a> &#8211; if you&#8217;ve any experience with C++ please feel free to weigh in and help. This is the one major bottleneck to Bowline development &#8211; once it&#8217;s resolved we can get on with more interesting things.</p>
<p>I&#8217;m also working on closing the <a href="http://github.com/maccman/bowline/issues">tickets</a> &#8211; most of them to do with Windows support. At the moment I don&#8217;t have a Windows environment, just Linux and OSX &#8211; so more testers are welcomed.</p>
<p>I&#8217;ll be writing more documentation, tutorials, and a website. You can also expect a &#8220;twitter client in 5 minutes&#8221; screencast.</p>
<p>I&#8217;ve started up a Google Group for Bowline development <a href="http://groups.google.com/group/bowline-dev">here</a>. This is one of the best times to contribute since the project is fairly young and can accommodate API changes without  any issues.</p>
<img src="http://feeds.feedburner.com/~r/LeadThinking/~4/sNeoONvc0HI" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/Eribium/~4/epHznWdrbLs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/208-bowline-roadmap-call-for-contributers/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://leadthinking.com/208-bowline-roadmap-call-for-contributers</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/LeadThinking/~3/sNeoONvc0HI/208-bowline-roadmap-call-for-contributers</feedburner:origLink></item>
		<item>
		<title>Bowline – A Ruby GUI framework</title>
		<link>http://feedproxy.google.com/~r/Eribium/~3/rCO-kjXWWvc/191-bowline-a-ruby-gui-framework</link>
		<comments>http://leadthinking.com/191-bowline-a-ruby-gui-framework#comments</comments>
		<pubDate>Tue, 04 Aug 2009 10:43:55 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Bowline]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=191</guid>
		<description><![CDATA[Recently I&#8217;ve been working on a Ruby GUI framework called Bowline.
In a nutshell, Bowline lets you build cross platform desktop applications with Ruby, HTML and JavaScript. The idea is to make building desktop apps as simple (and fun) as building Rails websites.
Bowline is built on top of Titanium, a desktop SDK which essentially provides a [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been working on a Ruby GUI framework called <a href="http://github.com/maccman/bowline">Bowline</a>.</p>
<p>In a nutshell, Bowline lets you build cross platform desktop applications with Ruby, HTML and JavaScript. The idea is to make building desktop apps as simple (and fun) as building Rails websites.</p>
<p>Bowline is built on top of <a href="http://www.appcelerator.com/products/titanium-desktop/">Titanium</a>, a desktop SDK which essentially provides a Webkit window (and loads of useful APIs). The fact that Titanium uses Webkit (and a fairly edge version at that) means that you can take advantage of all those nice CSS3 and HTML5 features, and you can design for one browser.</p>
<p>On top of Titanium, Bowline provides:</p>
<ul>
<li>A way of binding up Ruby and HTML</li>
<li>MVC development</li>
<li>Helpers, Models etc</li>
<li>Gem packaging</li>
<li>Generators, console &amp; more</li>
</ul>
<p>In a desktop app you don&#8217;t have the request/response cycle that web frameworks, like Rails, are built around. So, to replace that, Bowline has the idea of &#8216;Binders&#8217; &#8211; Ruby classes that you can bind HTML to &#8211; so when the Ruby class changes, the HTML automatically updates.</p>
<p>Additionally I&#8217;ve <a href="http://ajaxian.com/archives/aristo-look-and-feel-via-css3">ported</a> the beautiful <a href="http://cappuccino.org/aristo/showcase/">Aristo</a> theme to CSS3, you can find it on Github <a href="http://github.com/maccman/aristo">here</a>.</p>
<p>Using Titanium&#8217;s Developer tool, you can package your applications up for all three OSes, it&#8217;ll be sent up to the cloud and built.</p>
<p><img style="border: 0px initial initial;" title="Titanium" src="http://leadthinking.com/wp-content/uploads/2009/07/Picture-28-542x343.png" alt="Titanium" width="542" height="343" /></p>
<p>The rule is show, don&#8217;t tell &#8211; so <a href="http://github.com/maccman/bowline-twitter">here&#8217;s</a> a basic Twitter client I&#8217;ve written with Bowline. Download the app (OSX only at the moment) <a href="http://maccman.s3.amazonaws.com/Twitter.zip">here</a>.</p>
<p>Twitter clients are truly the new &#8216;Hello World&#8217;.</p>
<p><img class="alignnone size-full wp-image-192" title="Bowline Twitter" src="http://leadthinking.com/wp-content/uploads/2009/07/Picture-25.png" alt="Bowline Twitter" width="509" height="536" /></p>
<p>It&#8217;s early days for both Bowline and Titanium, but progress is quick and I hope we&#8217;ll have a fully fledged desktop framework soon.</p>
<img src="http://feeds.feedburner.com/~r/LeadThinking/~4/if-uFH-fTHg" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/Eribium/~4/rCO-kjXWWvc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/191-bowline-a-ruby-gui-framework/feed</wfw:commentRss>
		<slash:comments>50</slash:comments>
		<feedburner:origLink>http://leadthinking.com/191-bowline-a-ruby-gui-framework</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/LeadThinking/~3/if-uFH-fTHg/191-bowline-a-ruby-gui-framework</feedburner:origLink></item>
		<item>
		<title>Machsend release – P2P file transfers inside the browser</title>
		<link>http://feedproxy.google.com/~r/Eribium/~3/Jc6vBCng1Ig/186-machsend-release-p2p-file-transfers-inside-the-browser</link>
		<comments>http://leadthinking.com/186-machsend-release-p2p-file-transfers-inside-the-browser#comments</comments>
		<pubDate>Fri, 24 Jul 2009 13:42:20 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Machsend]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=186</guid>
		<description><![CDATA[After a private beta of Machsend, it&#8217;s now being released publicly &#8211; check it out.
Machsend lets you send files to people without any size restrictions. Files are sent in a P2P fashion, straight from one client to another &#8211; which means transfers are faster, and you don&#8217;t have to trust a third party with your [...]]]></description>
			<content:encoded><![CDATA[<p>After a private beta of <a href="http://machsend.com">Machsend</a>, it&#8217;s now being released publicly &#8211; <a href="http://machsend.com">check it out</a>.</p>
<p>Machsend lets you send files to people without any size restrictions. Files are sent in a P2P fashion, straight from one client to another &#8211; which means transfers are faster, and you don&#8217;t have to trust a third party with your data.</p>
<p>If you&#8217;re on the same LAN, files are sent directly. Otherwise a type of firewall traversal  allows the two clients connect (which works on about 80% of firewalls). There are few good papers that explain more <a href="http://nutss.gforge.cis.cornell.edu/pub/imc05-tcpnat.pdf">here</a> and <a href="http://www.bford.info/pub/net/p2pnat/">here</a>.</p>
<p>Machsend uses Yahoo! <a href="http://browserplus.yahoo.com">BrowserPlus</a> to perform this TCP magic.</p>
<p>Data transfers are unlimited &#8211; I&#8217;ve sent gigabytes over the system without any trouble.</p>
<p>Machsend works on OSX and Windows. Unfortunately there isn&#8217;t a version of BrowserPlus for Linux yet, but one is being developed.</p>
<p>There are a few more details on the &#8216;<a href="http://machsend.com/about.html">about</a>&#8216; page.</p>
<p><a href="http://machsend.com"><img class="alignnone size-medium wp-image-187" title="Machsend" src="http://leadthinking.com/wp-content/uploads/2009/07/Picture-23-542x328.png" alt="Machsend" width="542" height="328" /></a></p>
<img src="http://feeds.feedburner.com/~r/LeadThinking/~4/qYQh_ZZijmg" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/Eribium/~4/Jc6vBCng1Ig" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/186-machsend-release-p2p-file-transfers-inside-the-browser/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://leadthinking.com/186-machsend-release-p2p-file-transfers-inside-the-browser</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/LeadThinking/~3/qYQh_ZZijmg/186-machsend-release-p2p-file-transfers-inside-the-browser</feedburner:origLink></item>
		<item>
		<title>An Entrepreneur’s Top 5 Practical Books</title>
		<link>http://feedproxy.google.com/~r/Eribium/~3/4_Jks52LzC0/149-an-entrepreneurs-top-5-practical-books</link>
		<comments>http://leadthinking.com/149-an-entrepreneurs-top-5-practical-books#comments</comments>
		<pubDate>Tue, 07 Jul 2009 09:05:09 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Startup]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=149</guid>
		<description><![CDATA[I find that a lot of business books I&#8217;ve read are far too high level to be useful, and although they might give you some indication of what&#8217;s to come ahead, they provide little advice on how to tackle problems or any nuances you should take into account.
There&#8217;s a reason why few practical business books [...]]]></description>
			<content:encoded><![CDATA[<p>I find that a lot of business books I&#8217;ve read are far too high level to be useful, and although they might give you some indication of what&#8217;s to come ahead, they provide little advice on how to tackle problems or any nuances you should take into account.</p>
<p>There&#8217;s a reason why few practical business books have been written, and that&#8217;s because it&#8217;s a hard balancing keeping the content applicable and useful, without making it too case specific.</p>
<p>However, there <em>are</em> some out there. The following are list of books that fulfill the criteria of being both practical and useful. If you&#8217;ve got any favorites of your own, please suggest them in the comments.</p>
<p><strong>1. The Entrepreneur&#8217;s Guide to Business Law</strong></p>
<p>As an entrepreneur, you have to be pretty clued up on the legal side of things, to try and prevent making any fatal mistakes. In my opinion, this is one of the most valuable books in an entrepreneur&#8217;s arsenal and covers topics such as incorporation, intellectual property, venture capital and contract law.</p>
<p><a href="http://amzn.com/0314223169"><img class="size-full wp-image-169 alignnone" title="Business Law" src="http://leadthinking.com/wp-content/uploads/2009/07/business-law.png" alt="Business Law" width="222" height="331" /></a></p>
<p><span id="more-149"></span></p>
<h3>2. Eric Sink on the Business of Software</h3>
<p>This book is geared towards Micro ISVs (very small businesses), but should be useful to anyone starting a startup. Amongst other things, the book covers hiring, finance, marketing and sales.</p>
<p><a href="http://amzn.com/1590596234"><img class="size-full wp-image-170 alignnone" title="Business of Software" src="http://leadthinking.com/wp-content/uploads/2009/07/business-of-software.png" alt="Business of Software" width="222" height="331" /></a></p>
<h3>3. Secrets of Power Negotiating</h3>
<p>Ignore the cheesy cover, this book has lots negotiating tactics and counter-negotiating tactics. You really should read this before signing any contracts.</p>
<p><a href="http://amzn.com/1564144984"><img class="alignnone size-full wp-image-173" title="Power Negotiating" src="http://leadthinking.com/wp-content/uploads/2009/07/power-negotiating.png" alt="Power Negotiating" width="222" height="331" /></a></p>
<h3>4. Limited Liability Companies for Dummies</h3>
<p>It amazes me how few good books there are out there on basic incorporation. This is one of the best and Jennifer Reuting leads you through the entire process.</p>
<p><a href="http://amzn.com/0470173289"><img class="alignnone size-full wp-image-181" title="Limited Liability Companies for Dummies" src="http://leadthinking.com/wp-content/uploads/2009/07/Picture-10.png" alt="Limited Liability Companies for Dummies" width="237" height="297" /></a></p>
<h3 style="font-size: 1.17em;">5. The Art of the Start</h3>
<p>To be honest, much of this book is common sense, but there are some useful bits, especially on hiring. Also it&#8217;s worth noting that <a href="http://www.guykawasaki.com/">Guy Kawasaki</a> concentrates on VCs (which is not surprising considering he is one).</p>
<p><a href="http://amzn.com/1591840562"><img style="border: 0px initial initial;" title="Art of the Start" src="http://leadthinking.com/wp-content/uploads/2009/07/art-of-the-start.png" alt="Art of the Start" width="205" height="331" /></a></p>
<h3>And a bonus one: Founders at Work</h3>
<p>This book describes the trials and tribulations that a lot founders go through. It&#8217;s fascinating stuff, and is probably the hardest to put down out of all of these.</p>
<p><a href="http://amzn.com/1590597141"><img class="alignnone size-full wp-image-171" title="Founders at Work" src="http://leadthinking.com/wp-content/uploads/2009/07/founders-at-work.png" alt="Founders at Work" width="219" height="332" /></a></p>
<p>If you&#8217;ve got any suggestions, post them in the comments.</p>
<img src="http://feeds.feedburner.com/~r/LeadThinking/~4/rqpxlVm48lw" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/Eribium/~4/4_Jks52LzC0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/149-an-entrepreneurs-top-5-practical-books/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://leadthinking.com/149-an-entrepreneurs-top-5-practical-books</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/LeadThinking/~3/rqpxlVm48lw/149-an-entrepreneurs-top-5-practical-books</feedburner:origLink></item>
		<item>
		<title>Socialmod moderates Audi’s new site</title>
		<link>http://feedproxy.google.com/~r/Eribium/~3/imyP1zo9f-g/151-socialmod-moderates-audis-new-site</link>
		<comments>http://leadthinking.com/151-socialmod-moderates-audis-new-site#comments</comments>
		<pubDate>Mon, 06 Jul 2009 09:40:29 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=151</guid>
		<description><![CDATA[
Audi have launched a new site for the Goodwood Festival of Speed.
Along with photos and videos, Audi are interacting with their community by embedding a moderated Twitter feed into their site.
Any tweet with the hash tag #audifos is put on a Socialmod queue and, once moderated, is displayed on Audi&#8217;s site.

]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-159" title="Audi" src="http://leadthinking.com/wp-content/uploads/2009/07/Picture-7.png" alt="Audi" width="151" height="85" /></p>
<p>Audi have launched a new site for the Goodwood Festival of Speed.</p>
<p>Along with photos and videos, Audi are interacting with their community by embedding a moderated Twitter feed into their site.</p>
<p>Any tweet with the hash tag #audifos is put on a <a href="http://socialmod.com">Socialmod</a> queue and, once moderated, is displayed on Audi&#8217;s site.</p>
<p><a href="http://live.audi.co.uk/"><img class="alignnone size-medium wp-image-160" title="Audi at Goodwood" src="http://leadthinking.com/wp-content/uploads/2009/07/Picture-9-542x280.png" alt="Audi at Goodwood" width="542" height="280" /></a></p>
<img src="http://feeds.feedburner.com/~r/LeadThinking/~4/mrvT_mTJoxs" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/Eribium/~4/imyP1zo9f-g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/151-socialmod-moderates-audis-new-site/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://leadthinking.com/151-socialmod-moderates-audis-new-site</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/LeadThinking/~3/mrvT_mTJoxs/151-socialmod-moderates-audis-new-site</feedburner:origLink></item>
		<item>
		<title>Socialmod moderates BET.com Awards</title>
		<link>http://feedproxy.google.com/~r/Eribium/~3/CrNkIqOmtOo/139-socialmod-moderates-bet-com-awards</link>
		<comments>http://leadthinking.com/139-socialmod-moderates-bet-com-awards#comments</comments>
		<pubDate>Fri, 03 Jul 2009 14:27:24 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=139</guid>
		<description><![CDATA[
Last weekend was the BET Awards which over 5.8 million people tuned into.
BET ran a coordinated website to the awards, which they updated throughout the ceremony. They also had a &#8216;Wall of Tweets&#8216;, showing all the Twitter commentary mentioning their awards, and tweets from selected artists and celebrities.
Socialmod did the moderation for all the &#8216;tweets&#8217;, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-154 alignright" title="bet logo" src="http://leadthinking.com/wp-content/uploads/2009/07/Picture-6.png" alt="bet logo" width="211" height="98" /></p>
<p>Last weekend was the <a href="http://www.bet.com/Specials/betawards09/">BET Awards</a> which over 5.8 million people tuned into.</p>
<p><a href="http://bet.com">BET</a> ran a coordinated website to the awards, which they updated throughout the ceremony. They also had a &#8216;<a href="http://www.bet.com/Specials/betawards09/betawards09_getinvolved/betawards09_getinvolved_walloftweets.htm">Wall of Tweets</a>&#8216;, showing all the Twitter commentary mentioning their awards, and tweets from selected artists and celebrities.</p>
<p><a href="http://socialmod.com">Socialmod</a> did the moderation for all the &#8216;tweets&#8217;, preventing any libelous or objectionable content appearing on their website.</p>
<p>At one stage the top 9 trending topics on Twitter all referred to the BET Awards, so we had many thousands of tweets to process. Their moderators were working throughout the awards to try and get people&#8217;s tweets displayed as soon as possible.</p>
<p>We received about 1.3 million hits during the awards, so we had to provision a few more servers. However, our server setup is elastic, which means we easily scaled with the extra demand.</p>
<p><img class="size-medium wp-image-140 alignnone" title="Wall of Tweets" src="http://leadthinking.com/wp-content/uploads/2009/06/Picture-4-542x281.png" alt="Wall of Tweets" width="542" height="281" /></p>
<p><img class="alignnone size-medium wp-image-141" title="celebrity tweets" src="http://leadthinking.com/wp-content/uploads/2009/06/celebrity-tweets-542x268.png" alt="celebrity tweets" width="542" height="268" /></p>
<img src="http://feeds.feedburner.com/~r/LeadThinking/~4/9Lfo_hEN2lc" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/Eribium/~4/CrNkIqOmtOo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/139-socialmod-moderates-bet-com-awards/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://leadthinking.com/139-socialmod-moderates-bet-com-awards</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/LeadThinking/~3/9Lfo_hEN2lc/139-socialmod-moderates-bet-com-awards</feedburner:origLink></item>
		<item>
		<title>Machsend – P2P file sharing in the browser</title>
		<link>http://feedproxy.google.com/~r/Eribium/~3/MuXmU2Zo8BA/89-machsend-p2p-in-the-browser</link>
		<comments>http://leadthinking.com/89-machsend-p2p-in-the-browser#comments</comments>
		<pubDate>Wed, 01 Jul 2009 04:00:06 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Machsend]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=89</guid>
		<description><![CDATA[Recently I&#8217;ve been developing a project called Machsend which enables P2P file transfers from inside the browser.

The process goes:

Bob navigates to the site, and drags files onto it
Bob then sends his uniquely generated link to Alice
Alice opens the link, can see Bob&#8217;s shared files, and downloads them

The file transfer is direct between users &#8211; it [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been developing a project called Machsend which enables P2P file transfers from inside the browser.</p>
<p><img class="alignnone size-medium wp-image-120" title="Full" src="http://leadthinking.com/wp-content/uploads/2009/06/Picture-13-542x262.png" alt="Full" width="542" height="262" /></p>
<p>The process goes:</p>
<ul>
<li>Bob navigates to the site, and drags files onto it</li>
<li>Bob then sends his uniquely generated link to Alice</li>
<li>Alice opens the link, can see Bob&#8217;s shared files, and downloads them</li>
</ul>
<p>The file transfer is direct between users &#8211; it isn&#8217;t sent to any third party servers. This means it&#8217;s fast, and secure.</p>
<p>Files on the same network will transfer locally, greatly speeding up the process.</p>
<p>It also means there are no bandwidth bills to host the application, so it&#8217;ll be offered free, for unlimited size transfers (Machsend can transfer gigabytes without a problem).</p>
<p>Machsend is cross platform, and will work with about 85% of routers. It uses Yahoo BrowserPlus, which can be installed from within the browser, without a restart.</p>
<p><strong>I&#8217;m looking for Beta Testers &#8211; so if you&#8217;re interested, please <a href="http://groups.google.com/group/machsend-beta">join the Google Group</a>.</strong></p>
<img src="http://feeds.feedburner.com/~r/LeadThinking/~4/5spGOAVWTJQ" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/Eribium/~4/MuXmU2Zo8BA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/89-machsend-p2p-in-the-browser/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://leadthinking.com/89-machsend-p2p-in-the-browser</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/LeadThinking/~3/5spGOAVWTJQ/89-machsend-p2p-in-the-browser</feedburner:origLink></item>
		<item>
		<title>Creating a LLC – Getting your EIN</title>
		<link>http://feedproxy.google.com/~r/Eribium/~3/IL06nCtE7LQ/73-creating-a-llc-getting-your-ein</link>
		<comments>http://leadthinking.com/73-creating-a-llc-getting-your-ein#comments</comments>
		<pubDate>Mon, 29 Jun 2009 15:58:34 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Startup]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=73</guid>
		<description><![CDATA[What is an EIN?
EIN stands for &#8220;Employer Identification Number&#8221;, but in reality it&#8217;s deals with a lot more than just employees.
It&#8217;s basically your companies identification number with the IRS.
Why do I need one?
You&#8217;ll need one to do almost anything with your company. Banks will require one, as will Merchant/Gateway accounts.
How to get an EIN if [...]]]></description>
			<content:encoded><![CDATA[<h3>What is an EIN?</h3>
<p>EIN stands for &#8220;Employer Identification Number&#8221;, but in reality it&#8217;s deals with a lot more than just employees.</p>
<p>It&#8217;s basically your companies identification number with the IRS.</p>
<h3>Why do I need one?</h3>
<p>You&#8217;ll need one to do almost anything with your company. Banks will require one, as will Merchant/Gateway accounts.</p>
<h3>How to get an EIN if I&#8217;m a US Citizen</h3>
<p>Although your incorporation company might offer to get you one (for a fee), you don&#8217;t need to go down that route.<br />
Instead, you can apply free online at the <a href="http://www.irs.gov/businesses/small/article/0,,id=102767,00.html">IRS website</a>.</p>
<h3>How to get an EIN if I&#8217;m not a US Citizen</h3>
<p>This is a bit more tricky as the online service only accepts US citizens.</p>
<p>You&#8217;ll need an ITIN (Individual Taxpayer Identification Number) which is a tax processing number for people without Social Security numbers. You should be able to get one in your countries US Embassy (check their website first). Take two forms of photo id (passport &amp; driving license) and your incorporation documents. Once you&#8217;ve got an ITIN you can apply online for your EIN.</p>
<p>If you&#8217;re in a hurry, you can pay your incorporation company to get one for you. However, you&#8217;ll need to apply for an ITIN at some point, as you&#8217;ll need it when you file your personal tax return.</p>
<img src="http://feeds.feedburner.com/~r/LeadThinking/~4/7V7MYii-N7c" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/Eribium/~4/IL06nCtE7LQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/73-creating-a-llc-getting-your-ein/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://leadthinking.com/73-creating-a-llc-getting-your-ein</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/LeadThinking/~3/7V7MYii-N7c/73-creating-a-llc-getting-your-ein</feedburner:origLink></item>
		<item>
		<title>Creating a LLC – Operating Agreement</title>
		<link>http://feedproxy.google.com/~r/Eribium/~3/kAYXCyc9ABI/66-creating-a-llc-operating-agreement</link>
		<comments>http://leadthinking.com/66-creating-a-llc-operating-agreement#comments</comments>
		<pubDate>Sun, 28 Jun 2009 11:13:35 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Startup]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=66</guid>
		<description><![CDATA[In my last two posts, I explained corporation types and the initial incorporation.
However, once your company is incorporated, you need to get the members to sign the Operating Agreement.
I&#8217;ve &#8220;open sourced&#8221; our Operating Agreement (links at the end of the article).
The Operating Agreement is a legally binding contract between the members of the LLC. Although [...]]]></description>
			<content:encoded><![CDATA[<p>In my last two posts, I explained <a href="http://leadthinking.com/63-creating-a-startup-choosing-a-company-type">corporation types</a> and the <a href="http://leadthinking.com/68-incorporating-a-llc">initial incorporation</a>.<br />
However, once your company is incorporated, you need to get the members to sign the <a href="http://smallbusiness.findlaw.com/business-structures/llc/forming-llc-operating-agreement.html">Operating Agreement</a>.</p>
<p><strong>I&#8217;ve &#8220;open sourced&#8221; our Operating Agreement (links at the end of the article).</strong></p>
<p>The Operating Agreement is a legally binding contract between the members of the LLC. Although many states do not require LLCs to have an Operating Agreement, you should see it as a legal requirement (even if there&#8217;s only one member).</p>
<p>An Operating Agreement will give you credibility in court, and it&#8217;ll be harder to pierce the corporate veil (i.e. sue you personally) if you&#8217;ve got one in place. So essentially you need a Operating Agreement to protect your Limited Liability. It&#8217;s also for this reason that if you&#8217;re a single member LLC, it&#8217;s even more imperative that have a Operating Agreement as it may be that much harder to protect your Limited Liability.</p>
<p>Practically, an Operating Agreement is designed to get all the Members on the same page, and try to prevent disagreements later on down the line. If there are any problems, you and the courts will look to the Operating Agreement for guidance.</p>
<p><span id="more-66"></span></p>
<h3>Default Rules</h3>
<p>Most of the states passed a body of law which aims to codify a common body of laws. These are called the &#8220;default rules&#8221;.</p>
<p>However, your operating agreement can override the default rules, and it&#8217;s a good idea too &#8211; even if it&#8217;s just for the sake of clarification. Additionally, some of the default rules are definitely not what you want &#8211; like equal dividend allocation regardless of ownership in the company.</p>
<h3>General Provisions</h3>
<p>All Operating Agreements should contain provision that deal with the following topics:</p>
<ul>
<li>Governing Law</li>
<li>Non-compete</li>
<li>Limited Liability for Members</li>
<li>Voting power</li>
<li>Buy-sell provisions</li>
<li>Dissolution</li>
</ul>
<h3>Membership Interests</h3>
<p>A Membership interest is a lot like a share in a normal company &#8211; it&#8217;s basically a percentage of ownership in the company. Dividends are usually linked to your Membership interest (but again, this can be overridden if necessary).</p>
<p>Depending on your Operating Agreement, certain Membership shares may not carry a voting right &#8211; a bit like the non-voting shares issued by some companies. LLCs are flexible, you can give members as few, or as many, responsibilities as you want.</p>
<h3>Manager Managed</h3>
<p>Manager Managed LLCs give you a bit more flexibility. A lot of businesses have silent partners who aren&#8217;t involved in the running of things, and it&#8217;s usually preferable to prevent them meddling with your daily operations.</p>
<p>This means you have have two types of membership rights, voting an non-voting. Then you specify that the voting members will have management rights, and the non-voting members no managerial rights.</p>
<h3>Appendixes</h3>
<p>They should also contain a appendix of Members, their membership share, and the type of contribution they made when joining the company, and its value.</p>
<p>Also, if the company is Manager Managed, you&#8217;ll need an appendix of managers.</p>
<h3>New Members</h3>
<p>It&#8217;s important that all new &lt;embers have to sign the agreement. If a Members&#8217; shares are seized by a creditor, then you&#8217;ll want to enforce the same rules over the creditor, who&#8217;s interests won&#8217;t necessarily be aligned with yours.</p>
<p>You&#8217;ll also need to decide whether new Members need to be approved by a majority or unanimous vote by the current voting Members.</p>
<h3>Transfer of Membership Interest</h3>
<p>Your Operating Agreement should contain provisions dealing with how Membership interests get transferred. Most LLCs don&#8217;t allow Membership interests to get transferred, by rather assigned. For example, a Member could sell the interest to another party, who would subsequently receive future dividends, but have no voting rights. It would require another vote by the Members to actually make the new party a full voting member. This is another advantage of Manager Managed LLCs and is called &#8216;charging order protection&#8217; &#8211; google it for more information.</p>
<h3>Other Provisions</h3>
<p>There are a lot of other provisions I haven&#8217;t mentioned here &#8211; for sake of terseness. These include dissolution, dispute resolution, voting &amp; quorums, management &amp; duties and allocations of profits/losses.</p>
<p>I really recommend <a href="http://www.amazon.com/Limited-Liability-Companies-Business-Personal/dp/0470173289">Jennifer Reuting&#8217;s book</a>, which is much more comprehensive. There is also a <a href="http://smallbusiness.findlaw.com/business-structures/llc/forming-llc-operating-agreement.html">good article</a> on findlaw.com about Operating Agreements.</p>
<p>Here is an Operating Agreement you can use as a template:</p>
<ul>
<li><a href="http://docs.google.com/View?id=dhdbd8mx_24c6h894gc">Operating Agreement</a></li>
<li><a href="http://docs.google.com/View?id=dhdbd8mx_25x7vjs4hh">Appendix A</a></li>
<li><a href="http://docs.google.com/View?id=dhdbd8mx_26hcjxbzfh">Appendix B</a></li>
</ul>
<p>The next post will be on how to get an IRS EIN.</p>
<img src="http://feeds.feedburner.com/~r/LeadThinking/~4/tnKiowSVfYo" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/Eribium/~4/kAYXCyc9ABI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/66-creating-a-llc-operating-agreement/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://leadthinking.com/66-creating-a-llc-operating-agreement</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/LeadThinking/~3/tnKiowSVfYo/66-creating-a-llc-operating-agreement</feedburner:origLink></item>
	</channel>
</rss>
