Add expected outputs for existing tests
This commit is contained in:
@@ -0,0 +1,204 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<title>How I Turned Down $300,000 from Microsoft to go Full-Time on GitHub</title>
|
||||
<meta name="author" content="Tom Preston-Werner" />
|
||||
<link href="http://feeds.feedburner.com/tom-preston-werner" rel="alternate" title="Tom Preston-Werner" type="application/atom+xml" />
|
||||
<meta name="readability-verification" content="QCzSs992GxmRYRKVpPeZ6LE2tS8aYKxsSSQKV8YM"/>
|
||||
|
||||
<!-- syntax highlighting CSS -->
|
||||
<link rel="stylesheet" href="/css/syntax.css" type="text/css" />
|
||||
|
||||
<!-- Homepage CSS -->
|
||||
<link rel="stylesheet" href="/css/screen.css" type="text/css" media="screen, projection" />
|
||||
|
||||
<!-- Typekit -->
|
||||
<script type="text/javascript" src="http://use.typekit.com/jpd0pfm.js"></script>
|
||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- ClickTale Top part -->
|
||||
<script type="text/javascript">
|
||||
var WRInitTime=(new Date()).getTime();
|
||||
</script>
|
||||
<!-- ClickTale end of Top part -->
|
||||
|
||||
<div class="site">
|
||||
<div class="title">
|
||||
<a href="/">Tom Preston-Werner</a>
|
||||
<a class="extra" href="/">home</a>
|
||||
</div>
|
||||
|
||||
<div id="post">
|
||||
<h1 id="how-i-turned-down-300000-from-microsoft-to-go-full-time-on-github">How I Turned Down $300,000 from Microsoft to go Full-Time on GitHub</h1>
|
||||
|
||||
<p class="meta">18 Oct 2008 - San Francisco</p>
|
||||
|
||||
<p>2008 is a leap year. That means that three hundred and sixty six days ago,
|
||||
almost to the minute, I was sitting alone in a booth at Zeke’s Sports Bar and
|
||||
Grill on 3rd Street in San Francisco. I wouldn’t normally hang out at a sports
|
||||
bar, let alone a sports bar in SOMA, but back then Thursday was “I Can Has Ruby”
|
||||
night. I guess back then “I can has <strong>__</strong>_” was also a reasonable moniker to
|
||||
attach to pretty much anything. ICHR was a semi-private meeting of like minded
|
||||
Ruby Hackers that generally and willingly devolved into late night drinking
|
||||
sessions. Normally these nights would fade away like my hangover the next
|
||||
morning, but this night was different. This was the night that
|
||||
<a href="http://github.com/">GitHub</a> was born.</p>
|
||||
|
||||
<p>I think I was sitting at the booth alone because I’d just ordered a fresh Fat
|
||||
Tire and needed a short break from the socializing that was happening over at
|
||||
the long tables in the dimly lit aft portion of the bar. On the fifth or sixth
|
||||
sip, Chris Wanstrath walked in. I have trouble remembering now if I’d even
|
||||
classify Chris and I as “friends” at the time. We knew each other through Ruby
|
||||
meetups and conferences, but only casually. Like a mutual “hey, I think your
|
||||
code is awesome” kind of thing. I’m not sure what made me do it, but I gestured
|
||||
him over to the booth and said “dude, check this out.” About a week earlier I’d
|
||||
started work on a project called <a href="http://github.com/mojombo/grit">Grit</a> that
|
||||
allowed me to access Git repositories in an object oriented manner via Ruby
|
||||
code. Chris was one of only a handful of Rubyists at the time that was starting
|
||||
to become serious about Git. He sat down and I started showing him what I had.
|
||||
It wasn’t much, but it was enough to see that it had sparked something in Chris.
|
||||
Sensing this, I launched into my half-baked idea for some sort of website that
|
||||
acted as hub for coders to share their Git repositories. I even had a name:
|
||||
GitHub. I may be paraphrasing, but his response was along the lines of a very
|
||||
emphatic “I’m in. Let’s do it!”</p>
|
||||
|
||||
<p>The next night, Friday, October 19, 2007 at 10:24pm Chris made the first commit
|
||||
to the GitHub repository and sealed in digital stone the beginning of our joint
|
||||
venture. There were, so far, no agreements of any kind regarding how things
|
||||
would proceed. Just two guys that decided to hack together on something that
|
||||
sounded cool.</p>
|
||||
|
||||
<p>Remember those amazing few minutes in Karate Kid where Daniel is training to
|
||||
become a martial arts expert? Remember the music? Well, you should probably go
|
||||
buy and listen to <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=260417864&id=260417040&s=143441">You’re The
|
||||
Best</a>
|
||||
by Joe Esposito in iTunes because I’m about to hit you with a montage.</p>
|
||||
|
||||
<p>For the next three months Chris and I spent ridiculous hours planning and coding
|
||||
GitHub. I kept going with Grit and designed the UI. Chris built out the Rails
|
||||
app. We met in person every Saturday to make design decisions and try to figure
|
||||
out what the hell our pricing plan would look like. I remember one very rainy
|
||||
day we talked for a good two hours about various pricing strategies over some of
|
||||
the best Vietnamese egg rolls in the city. All of this we did while holding
|
||||
other engagements. I, for one, was employed full time at Powerset as a tools
|
||||
developer for the Ranking and Relevance team.</p>
|
||||
|
||||
<p>In mid January, after three months of nights and weekends, we launched into
|
||||
private beta mode, sending invites to our friends. In mid February PJ Hyett
|
||||
joined in and made us three-strong. We publicly launched the site on April 10th.
|
||||
TechCrunch was not invited. At this point it was still just three 20-somethings
|
||||
without a single penny of outside investment.</p>
|
||||
|
||||
<p>I was still working full time at Powerset on July 1, 2008 when we learned that
|
||||
Powerset had just been acquired by Microsoft for around $100 million. This was
|
||||
interesting timing. With the acquisition, I was going to be faced with a choice
|
||||
sooner than I had anticipated. I could either sign on as a Microsoft employee or
|
||||
quit and go GitHub full time. At 29 years old, I was the oldest of the three
|
||||
GitHubbers, and had accumulated a proportionally larger amount of debt and
|
||||
monthly expenditure. I was used to my six digit lifestyle. Further confounding
|
||||
the issue was the imminent return of my wife, Theresa, from her PhD fieldwork in
|
||||
Costa Rica. I would soon be transitioning from make-believe bachelor back to
|
||||
married man.</p>
|
||||
|
||||
<p>To muddy the waters of decision even more, the Microsoft employment offer was
|
||||
juicy. Salary + $300k over three years juicy. That’s enough money to make
|
||||
anybody think twice about anything. So I was faced with this: a safe job with
|
||||
lots of guaranteed money as a Microsoft man –or– a risky job with
|
||||
unknown amounts of money as an entrepreneur. I knew things with the other GitHub
|
||||
guys would become extremely strained if I stayed on at Powerset much longer.
|
||||
Having saved up some money and become freelancers some time ago, they had both
|
||||
started dedicating full time effort to GitHub. It was do or die time. Either
|
||||
pick GitHub and go for it, or make the safe choice and quit GitHub to make
|
||||
wheelbarrows full of cash at Microsoft.</p>
|
||||
|
||||
<p>If you want a recipe for restless sleep, I can give you one. Add one part “what
|
||||
will my wife think” with 3,000 parts Benjamin Franklin; stir in a “beer anytime
|
||||
you damn well please” and top with a chance at financial independence.</p>
|
||||
|
||||
<p>I’ve become pretty good at giving my employers the bad news that I’m leaving the
|
||||
company to go do something cooler. I broke the news to my boss at Powerset on
|
||||
the day the employment offer was due. I told him I was quitting to go work full
|
||||
time on GitHub. Like any great boss, he was bummed, but understanding. He didn’t
|
||||
try to tempt me with a bigger bonus or anything. I think deep down he knew I was
|
||||
going to leave. I may have even received a larger incentive to stay than others,
|
||||
on account of my being a flight risk. Those Microsoft managers are crafty, I
|
||||
tell you. They’ve got retention bonuses down to a science. Well, except when you
|
||||
throw an entrepreneur, the singularity of the business world, into the mix.
|
||||
Everything goes wacky when you’ve got one of those around.</p>
|
||||
|
||||
<p>In the end, just as Indiana Jones could never turn down the opportunity to
|
||||
search for the Holy Grail, I could no less turn down the chance to work for
|
||||
myself on something I truly love, no matter how safe the alternative might be.
|
||||
When I’m old and dying, I plan to look back on my life and say “wow, that was an
|
||||
adventure,” not “wow, I sure felt safe.”</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="related">
|
||||
<h2>Related Posts</h2>
|
||||
<ul class="posts">
|
||||
|
||||
<li><span>10 Nov 2016</span> » <a href="/2016/11/10/snyk.html">Snyk - Automatically Scan and Fix Ruby and Nodejs Vulnerabilities</a></li>
|
||||
|
||||
<li><span>19 Jun 2015</span> » <a href="/2015/06/19/replicated.html">Replicated - An Easier Path from SaaS to Enterprise</a></li>
|
||||
|
||||
<li><span>21 Apr 2014</span> » <a href="/2014/04/21/farewell-github-hello-immersive-computing.html">Farewell GitHub, Hello Immersive Computing</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<div class="contact">
|
||||
<p>
|
||||
Tom Preston-Werner
|
||||
<br />
|
||||
Cofounder of
|
||||
<a href="https://codestarter.org/">Codestarter</a>,
|
||||
<a href="https://github.com/">GitHub</a>
|
||||
<br />
|
||||
[email protected]
|
||||
</p>
|
||||
</div>
|
||||
<div class="contact">
|
||||
<p>
|
||||
<a href="http://github.com/mojombo/">github.com/mojombo</a><br />
|
||||
<a href="http://twitter.com/mojombo/">twitter.com/mojombo</a><br />
|
||||
</p>
|
||||
</div>
|
||||
<div class="rss">
|
||||
<a href="http://feeds.feedburner.com/tom-preston-werner">
|
||||
<img src="/images/rss.png" alt="Subscribe to RSS Feed" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="http://github.com/mojombo"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub" /></a>
|
||||
|
||||
<!-- ClickTale Bottom part -->
|
||||
<div id="ClickTaleDiv" style="display: none;"></div>
|
||||
<script type="text/javascript">
|
||||
if(document.location.protocol!='https:')
|
||||
document.write(unescape("%3Cscript%20src='http://s.clicktale.net/WRb.js'%20type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
if(typeof ClickTale=='function') ClickTale(206,0.3,"www03");
|
||||
</script>
|
||||
<!-- ClickTale end of Bottom part -->
|
||||
|
||||
<!-- Google Analytics -->
|
||||
<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
var pageTracker = _gat._getTracker("UA-6016902-1");
|
||||
pageTracker._trackPageview();
|
||||
</script>
|
||||
<!-- Google Analytics end -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
+269
@@ -0,0 +1,269 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<title>Looking back on Selling Gravatar to Automattic</title>
|
||||
<meta name="author" content="Tom Preston-Werner" />
|
||||
<link href="http://feeds.feedburner.com/tom-preston-werner" rel="alternate" title="Tom Preston-Werner" type="application/atom+xml" />
|
||||
<meta name="readability-verification" content="QCzSs992GxmRYRKVpPeZ6LE2tS8aYKxsSSQKV8YM"/>
|
||||
|
||||
<!-- syntax highlighting CSS -->
|
||||
<link rel="stylesheet" href="/css/syntax.css" type="text/css" />
|
||||
|
||||
<!-- Homepage CSS -->
|
||||
<link rel="stylesheet" href="/css/screen.css" type="text/css" media="screen, projection" />
|
||||
|
||||
<!-- Typekit -->
|
||||
<script type="text/javascript" src="http://use.typekit.com/jpd0pfm.js"></script>
|
||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- ClickTale Top part -->
|
||||
<script type="text/javascript">
|
||||
var WRInitTime=(new Date()).getTime();
|
||||
</script>
|
||||
<!-- ClickTale end of Top part -->
|
||||
|
||||
<div class="site">
|
||||
<div class="title">
|
||||
<a href="/">Tom Preston-Werner</a>
|
||||
<a class="extra" href="/">home</a>
|
||||
</div>
|
||||
|
||||
<div id="post">
|
||||
<h1 id="looking-back-on-selling-gravatar-to-automattic">Looking back on Selling Gravatar to Automattic</h1>
|
||||
|
||||
<p class="meta">23 Oct 2008 - San Francisco</p>
|
||||
|
||||
<p>For an entrepreneur, the line between horrible mistake and runaway success can
|
||||
be so thin that even Kate Moss would be envious. I lived with
|
||||
<a href="http://gravatar.com/">Gravatar</a> for nearly four years before that line even
|
||||
became thick enough to measure.</p>
|
||||
|
||||
<p>As it’s become one of my favorite parables, I’ll save the details of how I came
|
||||
up with the idea for Gravatar for a future post. What’s important to know is
|
||||
that the idea was spawned not from a business perspective, but from a desperate
|
||||
desire to create something new in the world of blogging.</p>
|
||||
|
||||
<p>Spin the clock back four years and you’ll find me sitting at my Windows desktop
|
||||
machine in my underwear with a box of Life cereal to my left and a day old Coke
|
||||
to my right. Since I’d been laid off from my job as a Java developer some months
|
||||
earlier, I’d decided to take the entrepreneurial plunge doing what I knew best:
|
||||
web design. Working in a cone of isolation, I’d become accustomed to waking up
|
||||
late, swinging my legs over the right side of the bed, and in one fluid movement
|
||||
sliding over to the ratty chair I stole from my old college dorm room. I’d spend
|
||||
most of the day working on client projects in ColdFusion or PHP. It was hard
|
||||
work and could become a bit tiresome. I needed an outlet, something that didn’t
|
||||
have a suit on the other end of a telephone telling me how blue was the wrong
|
||||
color and things would be so much better if only the photo had a slightly bigger
|
||||
border. Gravatar would become that outlet for me.</p>
|
||||
|
||||
<p>I was really big into web standards at the time, having recently read Zeldman’s
|
||||
seminal work, and became a true believer. Eric Meyers, Dan Cederholm, and Jon
|
||||
Hicks became like gods to me. I worked very hard at making relevant and witty
|
||||
comments around the right kinds of blogs. Being a part of that movement became a
|
||||
significant goal for me. My Movable Type weblog rarely went more than two days
|
||||
days without a post on design or standards.</p>
|
||||
|
||||
<p>Two weeks after I had the idea for Gravatar the first version was written and
|
||||
deployed. Every request hit the database and dynamically generated a properly
|
||||
sized gravatar via PHP’s gd2 api. Premature optimization and all that, right?
|
||||
The first thing I did after getting the system to a workable state was email all
|
||||
the bloggers I looked up to (and that had no idea who I was). Blog comments at
|
||||
the time were a pretty dreary affair and I guess Cederholm was intrigued enough
|
||||
by my idea that he linked to it in a sidebar micro-post on simplebits.com.</p>
|
||||
|
||||
<p>That single mention kicked off a slow but steady trickle of interest in the
|
||||
system. A few blogs here and there installed the plugin and the world started
|
||||
seeing avatars that mysteriously followed them around. At the same time, just as
|
||||
people must have thought Cheez Whiz was a stupid idea when it first came out,
|
||||
some bloggers started railing against Gravatar, calling it frivolous,
|
||||
inefficient, and “an abomination.” This was my first nibble at the smorgasbord
|
||||
of what was to become the “horrible mistake” aspect of Gravatar.</p>
|
||||
|
||||
<p>Due to the inherently self-advertising nature of gravatars (the “what the hell
|
||||
is that and how do I get one?” brand of advertising), Gravatar adoption
|
||||
increased at a rapid rate. Having crafted the idea for Gravatar without any
|
||||
semblance of business model or growth projection or build-out strategy, things
|
||||
took a rather dramatic dive away from “runaway success” as my server (yes,
|
||||
singular) buckled under the pressure of tens of requests per second! As it turns
|
||||
out, regenerating a gravatar on every request is not very CPU efficient.
|
||||
Gravatars worldwide suddenly turned into little red Xs. Then, in what has become
|
||||
known as the Twitter Effect, a barrage of emails hit me complaining about how
|
||||
the free service on which they had come to depend was down, and how this would
|
||||
adversely impact my well-being.</p>
|
||||
|
||||
<p>I fixed the code. Gravatar came back online with caching. All the while I’d had
|
||||
the bright idea that gravatars would be rated for content, MPAA-style. Because
|
||||
users clearly were not fit to rate their own images, I was manually rating 400
|
||||
or more avatars each day. If I missed a day, I’d have damn near a thousand
|
||||
waiting for me the next day. In addition to the angry mob, I was very fortunate
|
||||
to have an amazingly supportive group of users that volunteered to help me rate
|
||||
images. I owe them my sanity, and it freed up enough time for me to work on the
|
||||
next iteration of the site.</p>
|
||||
|
||||
<p>G2, as I called it, would be written in Rails and use lighttpd plus a convoluted
|
||||
directory structure of symlinks to enable me to pre-render every gravatar (1x1
|
||||
up to 80x80) and serve only static images. I did this to avoid having to rent or
|
||||
buy the kind of hardware necessary to hook up a properly scaled system. Up until
|
||||
the end I ran Gravatar on a maximum of two rented commodity servers that set me
|
||||
back a mere $300/month, a pittance for the kind of traffic I was serving. I say
|
||||
it was a pittance, but that’s not really true. Donations didn’t even come close
|
||||
to covering that cost.</p>
|
||||
|
||||
<p>At some point early in the development of G2, Toni Schneider, the CEO of
|
||||
Automattic (the company behind WordPress.com and Akismet) contacted me after
|
||||
hearing my <a href="http://blog.gravatar.com/2007/10/18/automattic-gravatar/">interview about the future of
|
||||
Gravatar</a> on the
|
||||
WordPress podcast. This was exciting news! How perfect a fit would it be for
|
||||
Gravatar to be bought by Automattic? I was already planning a trip up to San
|
||||
Francisco to meet with the Powerset guys, so the timing worked out perfectly for
|
||||
me to meet in person with Toni. I ended up having lunch with Toni and Matt
|
||||
Mullenweg at 21st Ammendment on 2nd Street. It was a bit intimidating to come to
|
||||
the mecca of tech startups to meet with such huge players in the blogging
|
||||
community. Turned out that both Matt and Toni are great guys and so we had
|
||||
drinks for about two hours, talking about my ideas for Gravatar and how we might
|
||||
be able to work together. Everything seemed great—I was jazzed and they
|
||||
seemed excited—but a few weeks later Toni let me know that the timing was
|
||||
wrong and they couldn’t make a play at that time. He suggested I proceed with G2
|
||||
and they’d proceed with their own avatar system. I was pretty bummed about the
|
||||
outcome, but I took their advice and kept going.</p>
|
||||
|
||||
<p>A few weeks before G2 was finished, the site imploded in a big way. One machine.
|
||||
Hundreds of requests per second. That poor CPU must have thought it was the End
|
||||
Times. Instead of wasting time on getting the existing system back up, I put on
|
||||
my headphones, turned it up to eleven, and got back to work on G2.</p>
|
||||
|
||||
<p>I’m not sure if you’ve ever had to work on a project while your users are
|
||||
publicly skewering you on your blog for allowing the service to go down, but
|
||||
it’s as close to depression as I’ve ever come. If I’d had less pride, I would
|
||||
have popped everyone a huge middle finger and let the service die, but instead I
|
||||
waded through the hundreds of comments and deleted the ones with threats,
|
||||
hatred, or my favorite, the words “fuck you” repeated 600 times. It wasn’t fair,
|
||||
I told myself, that I should be sitting here with high blood pressure trying to
|
||||
raise Gravatar from the dead while the unappreciative masses do what they do
|
||||
best on the internet. The only thing that kept me going was never being able to
|
||||
tell which side of the mistake/success boundary I was sitting on. It was hard to
|
||||
think of the situation as anything but a huge failure, but the shitstorm the
|
||||
downtime was causing indicated that people found the service valuable. I want to
|
||||
say that Twitter went through the same thing, but they suffered their downtime
|
||||
with millions of dollars in the bank. The only thing I had was a full time job
|
||||
unrelated to Gravatar and a credit card that reminded me every month of my bad
|
||||
judgment.</p>
|
||||
|
||||
<p>Finally G2 was done, deployed, and fully operational. I have no idea how many
|
||||
users I lost due to the several weeks of downtime, but I don’t think it was very
|
||||
many. There seems to be a corollary to the Twitter Effect that I’d call the
|
||||
Forgiveness Effect. It dictates that if a user enjoys a free service and that
|
||||
service is currently up, all past atrocities will be easily and quickly
|
||||
forgiven. With the site running again, things looked to be shifting back towards
|
||||
a success.</p>
|
||||
|
||||
<p>Things were not all rainbows and unicorns though. My Rube Goldbergian
|
||||
architecture had a few quirks that needed to be dealt with. The site still had
|
||||
some elusive bugs from the overly-rapid development cycle. And just like new
|
||||
lanes on freeways always fill up immediately, the two new servers I was running
|
||||
started causing expensive bandwidth overages. I had taken a job at Powerset at
|
||||
this point and the combined pressures of these two commitments started to weigh
|
||||
me down. Once again I started feeling like all the effort I put into Gravatar
|
||||
was for nothing. Like I would never benefit from any of it.</p>
|
||||
|
||||
<p>In a last ditch effort to save Gravatar from final doom, I emailed Toni and
|
||||
pitched him again on Gravatar. I figured it was a long shot, but what the hell,
|
||||
couldn’t hurt. Things must have changed in the prior 6 months because Toni was
|
||||
very receptive to the idea. We met again, at 21st Ammendment, and hashed out a
|
||||
tentative deal over drinks. I’d never sold anything like this before, so my
|
||||
technique was probably very amateurish. I’m almost certain I could have gotten a
|
||||
better deal out of it, but I had the smell of desperation about me and I really
|
||||
did want to see Gravatar end up in Automattic’s hands.</p>
|
||||
|
||||
<p>Four days later, Automattic made their official offer. On September 21st, 2007
|
||||
we inked the deal and Gravatar became both the first company that I ever sold
|
||||
and the first company that Automattic ever acquired.</p>
|
||||
|
||||
<p>I am quite satisfied with the sale to Automattic. Some will say that I should
|
||||
have pursued VC funding. Indeed, I was contacted by several firms but never
|
||||
travelled very far down that road. I always felt like Gravatar was a feature,
|
||||
and I wasn’t comfortable building a company on such a tiny foundation.
|
||||
Reinforcing this decision, no viable business model ever coalesced during the
|
||||
time I was building the site. It was also made clear by Toni that Automattic
|
||||
would maintain Gravatar as a separate brand and continue its evolution (instead
|
||||
of just absorbing it into WordPress). This appealed to my ego. Most companies
|
||||
kill or maim everything they acquire, but here was a chance for Gravatar to
|
||||
carry forward with all of Automattic’s resources behind it (instead of two
|
||||
measly servers). Part of me just wanted to see what Gravatar could become with
|
||||
time, money, and man-power moving it forward.</p>
|
||||
|
||||
<p>Things always seem so clear in retrospect. But it was pride and persistence that
|
||||
kept me in the game long enough to have anything to look back on at all. While
|
||||
the line between horrible mistake and runaway success may be difficult to see,
|
||||
you can still find it if you look hard enough.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="related">
|
||||
<h2>Related Posts</h2>
|
||||
<ul class="posts">
|
||||
|
||||
<li><span>10 Nov 2016</span> » <a href="/2016/11/10/snyk.html">Snyk - Automatically Scan and Fix Ruby and Nodejs Vulnerabilities</a></li>
|
||||
|
||||
<li><span>19 Jun 2015</span> » <a href="/2015/06/19/replicated.html">Replicated - An Easier Path from SaaS to Enterprise</a></li>
|
||||
|
||||
<li><span>21 Apr 2014</span> » <a href="/2014/04/21/farewell-github-hello-immersive-computing.html">Farewell GitHub, Hello Immersive Computing</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<div class="contact">
|
||||
<p>
|
||||
Tom Preston-Werner
|
||||
<br />
|
||||
Cofounder of
|
||||
<a href="https://codestarter.org/">Codestarter</a>,
|
||||
<a href="https://github.com/">GitHub</a>
|
||||
<br />
|
||||
[email protected]
|
||||
</p>
|
||||
</div>
|
||||
<div class="contact">
|
||||
<p>
|
||||
<a href="http://github.com/mojombo/">github.com/mojombo</a><br />
|
||||
<a href="http://twitter.com/mojombo/">twitter.com/mojombo</a><br />
|
||||
</p>
|
||||
</div>
|
||||
<div class="rss">
|
||||
<a href="http://feeds.feedburner.com/tom-preston-werner">
|
||||
<img src="/images/rss.png" alt="Subscribe to RSS Feed" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="http://github.com/mojombo"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub" /></a>
|
||||
|
||||
<!-- ClickTale Bottom part -->
|
||||
<div id="ClickTaleDiv" style="display: none;"></div>
|
||||
<script type="text/javascript">
|
||||
if(document.location.protocol!='https:')
|
||||
document.write(unescape("%3Cscript%20src='http://s.clicktale.net/WRb.js'%20type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
if(typeof ClickTale=='function') ClickTale(206,0.3,"www03");
|
||||
</script>
|
||||
<!-- ClickTale end of Bottom part -->
|
||||
|
||||
<!-- Google Analytics -->
|
||||
<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
var pageTracker = _gat._getTracker("UA-6016902-1");
|
||||
pageTracker._trackPageview();
|
||||
</script>
|
||||
<!-- Google Analytics end -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,170 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<title>How to Meet Your Next Cofounder</title>
|
||||
<meta name="author" content="Tom Preston-Werner" />
|
||||
<link href="http://feeds.feedburner.com/tom-preston-werner" rel="alternate" title="Tom Preston-Werner" type="application/atom+xml" />
|
||||
<meta name="readability-verification" content="QCzSs992GxmRYRKVpPeZ6LE2tS8aYKxsSSQKV8YM"/>
|
||||
|
||||
<!-- syntax highlighting CSS -->
|
||||
<link rel="stylesheet" href="/css/syntax.css" type="text/css" />
|
||||
|
||||
<!-- Homepage CSS -->
|
||||
<link rel="stylesheet" href="/css/screen.css" type="text/css" media="screen, projection" />
|
||||
|
||||
<!-- Typekit -->
|
||||
<script type="text/javascript" src="http://use.typekit.com/jpd0pfm.js"></script>
|
||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- ClickTale Top part -->
|
||||
<script type="text/javascript">
|
||||
var WRInitTime=(new Date()).getTime();
|
||||
</script>
|
||||
<!-- ClickTale end of Top part -->
|
||||
|
||||
<div class="site">
|
||||
<div class="title">
|
||||
<a href="/">Tom Preston-Werner</a>
|
||||
<a class="extra" href="/">home</a>
|
||||
</div>
|
||||
|
||||
<div id="post">
|
||||
<h1 id="how-to-meet-your-next-cofounder">How to Meet Your Next Cofounder</h1>
|
||||
|
||||
<p class="meta">3 Nov 2008 - San Francisco</p>
|
||||
|
||||
<p>Over the last few months I’ve seen a number of people looking for cofounders on
|
||||
Hacker News or via their own personal blogs. I think this is, at best, a highly
|
||||
inefficient way to find a cofounder and, at worst, a way to fool yourself into
|
||||
finding the <em>wrong</em> cofounder. In any case, it’s a naive approach to finding the
|
||||
person that will need to stand by your side in the coming storm that we call
|
||||
“running a startup.”</p>
|
||||
|
||||
<p>Don’t get me wrong, the internet is an amazing tool for meeting people. The
|
||||
wider the net you cast, the more likely you are to find the perfect match. But
|
||||
the internet has its limitations. I’ve had internet friends that were engaging,
|
||||
witty, and brilliant online, but in person felt awkward and boring. Conversely,
|
||||
I know people that are volatile and inflammatory online, but present an attitude
|
||||
of friendliness and caring in person. This phenomenon makes it difficult to
|
||||
gauge an individual’s personality from online interaction alone.</p>
|
||||
|
||||
<p>A far better use of the internet is to find groups of people that share your
|
||||
interests. Track down the local users group for your language or technology of
|
||||
choice. The simple fact that members of these groups take time out of their day
|
||||
to show up means that they’re more motivated and driven than the average person.
|
||||
Even if it’s a bit of a commute to get to the meetings, start showing up
|
||||
regularly. Prepare a few presentations on topics that you’re passionate about.
|
||||
Bonus points if you present on ideas related to your potential startup. Don’t
|
||||
worry about revealing your game-changing secrets; stealth mode is bullshit. Talk
|
||||
to everyone. Steer the conversation toward your interests and if someone there
|
||||
is excited about the same things, it will be clear.</p>
|
||||
|
||||
<p>It may take weeks or months, but in a good group you’ll find a handful of people
|
||||
that you really like. If at all possible, go out drinking with these people
|
||||
after the meetups. This is one of the easiest ways to go from “acquaintance” to
|
||||
“friend” and gives you free license to bring up your craziest of ideas without
|
||||
sounding like too much of a nutjob.</p>
|
||||
|
||||
<p>Of the people that you like, several may make excellent candidates for
|
||||
cofounders. Do a little research on these individuals. What does their code look
|
||||
like? Have they done much open source? Do they demonstrate an entrepreneurial
|
||||
spirit? Can they stick with a single project for a long time? Have they been
|
||||
loyal to their friends and companies in the past? A good cofounder should be
|
||||
someone with whom you feel privileged to work. And they should feel privileged
|
||||
to work with you. The two of you should be on very solid ground before you begin
|
||||
your startup adventure, because once you do, the impact of every argument is
|
||||
going to feel like it’s been multiplied by a thousand.</p>
|
||||
|
||||
<p>This all sounds like a lot of hard work. Maybe you’re wondering if it would be
|
||||
better to just go solo. I did that with Gravatar, and, in retrospect, it’s
|
||||
painfully obvious that I made a lot of stupid mistakes. When it’s just you and
|
||||
your thoughts it becomes too easy to pick the first thing that pops into your
|
||||
head. We’re programmed to think all of our ideas are good, but reality tells a
|
||||
different story. Truly good decisions are forged from the furnace of argument,
|
||||
not plucked like daisies from the pasture of a peaceful mind. A good cofounder
|
||||
tells you when your ideas are half-baked and ensures that your good ideas
|
||||
actually get implemented.</p>
|
||||
|
||||
<p>The second biggest danger with going solo is the loss of motivation. Solipsism
|
||||
might make you feel important at first, but the constant lack of feedback and
|
||||
the absence of support during tough times can easily lead to a premature end to
|
||||
your adventure. Cofounders are like workout buddies. Just when you think there’s
|
||||
no possible way you can do another rep, there they are, rooting you on toward an
|
||||
achievement that wouldn’t be possible without them.</p>
|
||||
|
||||
<p>Your choice of cofounder will affect everything you do in your startup. They’ll
|
||||
share every defeat with you and celebrate every success. They’ll help you
|
||||
understand your own ideas better by offering a different perspective. They’ll be
|
||||
the single most important decision you make during the tenure of your startup,
|
||||
so choose wisely and with extreme care.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="related">
|
||||
<h2>Related Posts</h2>
|
||||
<ul class="posts">
|
||||
|
||||
<li><span>10 Nov 2016</span> » <a href="/2016/11/10/snyk.html">Snyk - Automatically Scan and Fix Ruby and Nodejs Vulnerabilities</a></li>
|
||||
|
||||
<li><span>19 Jun 2015</span> » <a href="/2015/06/19/replicated.html">Replicated - An Easier Path from SaaS to Enterprise</a></li>
|
||||
|
||||
<li><span>21 Apr 2014</span> » <a href="/2014/04/21/farewell-github-hello-immersive-computing.html">Farewell GitHub, Hello Immersive Computing</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<div class="contact">
|
||||
<p>
|
||||
Tom Preston-Werner
|
||||
<br />
|
||||
Cofounder of
|
||||
<a href="https://codestarter.org/">Codestarter</a>,
|
||||
<a href="https://github.com/">GitHub</a>
|
||||
<br />
|
||||
[email protected]
|
||||
</p>
|
||||
</div>
|
||||
<div class="contact">
|
||||
<p>
|
||||
<a href="http://github.com/mojombo/">github.com/mojombo</a><br />
|
||||
<a href="http://twitter.com/mojombo/">twitter.com/mojombo</a><br />
|
||||
</p>
|
||||
</div>
|
||||
<div class="rss">
|
||||
<a href="http://feeds.feedburner.com/tom-preston-werner">
|
||||
<img src="/images/rss.png" alt="Subscribe to RSS Feed" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="http://github.com/mojombo"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub" /></a>
|
||||
|
||||
<!-- ClickTale Bottom part -->
|
||||
<div id="ClickTaleDiv" style="display: none;"></div>
|
||||
<script type="text/javascript">
|
||||
if(document.location.protocol!='https:')
|
||||
document.write(unescape("%3Cscript%20src='http://s.clicktale.net/WRb.js'%20type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
if(typeof ClickTale=='function') ClickTale(206,0.3,"www03");
|
||||
</script>
|
||||
<!-- ClickTale end of Bottom part -->
|
||||
|
||||
<!-- Google Analytics -->
|
||||
<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
var pageTracker = _gat._getTracker("UA-6016902-1");
|
||||
pageTracker._trackPageview();
|
||||
</script>
|
||||
<!-- Google Analytics end -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,220 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<title>Blogging Like a Hacker</title>
|
||||
<meta name="author" content="Tom Preston-Werner" />
|
||||
<link href="http://feeds.feedburner.com/tom-preston-werner" rel="alternate" title="Tom Preston-Werner" type="application/atom+xml" />
|
||||
<meta name="readability-verification" content="QCzSs992GxmRYRKVpPeZ6LE2tS8aYKxsSSQKV8YM"/>
|
||||
|
||||
<!-- syntax highlighting CSS -->
|
||||
<link rel="stylesheet" href="/css/syntax.css" type="text/css" />
|
||||
|
||||
<!-- Homepage CSS -->
|
||||
<link rel="stylesheet" href="/css/screen.css" type="text/css" media="screen, projection" />
|
||||
|
||||
<!-- Typekit -->
|
||||
<script type="text/javascript" src="http://use.typekit.com/jpd0pfm.js"></script>
|
||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- ClickTale Top part -->
|
||||
<script type="text/javascript">
|
||||
var WRInitTime=(new Date()).getTime();
|
||||
</script>
|
||||
<!-- ClickTale end of Top part -->
|
||||
|
||||
<div class="site">
|
||||
<div class="title">
|
||||
<a href="/">Tom Preston-Werner</a>
|
||||
<a class="extra" href="/">home</a>
|
||||
</div>
|
||||
|
||||
<div id="post">
|
||||
<h1 id="blogging-like-a-hacker">Blogging Like a Hacker</h1>
|
||||
|
||||
<p class="meta">17 Nov 2008 - San Francisco</p>
|
||||
|
||||
<p>Back in 2000, when I thought I was going to be a professional writer, I spent
|
||||
hours a day on LiveJournal doing writing practice with other aspiring poets and
|
||||
authors. Since then I’ve blogged at three different domains about web standards,
|
||||
print design, photography, Flash, illustration, information architecture,
|
||||
ColdFusion, package management, PHP, CSS, advertising, Ruby, Rails, and Erlang.</p>
|
||||
|
||||
<p>I love writing. I get a kick out of sharing my thoughts with others. The act of
|
||||
transforming ideas into words is an amazingly efficient way to solidify and
|
||||
refine your thoughts about a given topic. But as much as I enjoy blogging, I
|
||||
seem to be stuck in a cycle of quitting and starting over. Before starting the
|
||||
current iteration, I resolved to do some introspection to determine the factors
|
||||
that were leading to this destructive pattern.</p>
|
||||
|
||||
<p>I already knew a lot about what I <em>didn’t</em> want. I was tired of complicated
|
||||
blogging engines like WordPress and Mephisto. I wanted to write great posts, not
|
||||
style a zillion template pages, moderate comments all day long, and constantly
|
||||
lag behind the latest software release. Something like Posterous looked
|
||||
attractive, but I wanted to style my blog, and it needed to be hosted at the
|
||||
domain of my choosing. For the same reason, other hosted sites (wordpress.com,
|
||||
blogger.com) were disqualified. There are a few people directly using GitHub as
|
||||
a blog (which is very cool), but that’s a bit too much of an impedance mismatch
|
||||
for my tastes.</p>
|
||||
|
||||
<p>On Sunday, October 19th, I sat down in my San Francisco apartment with a glass
|
||||
of apple cider and a clear mind. After a period of reflection, I had an idea.
|
||||
While I’m not specifically trained as an author of prose, I <em>am</em> trained as an
|
||||
author of code. What would happen if I approached blogging from a software
|
||||
development perspective? What would that look like?</p>
|
||||
|
||||
<p>First, all my writing would be stored in a Git repository. This would ensure
|
||||
that I could try out different ideas and explore a variety of posts all from the
|
||||
comfort of my preferred editor and the command line. I’d be able to publish a
|
||||
post via a simple deploy script or post-commit hook. Complexity would be kept to
|
||||
an absolute minimum, so a static site would be preferable to a dynamic site that
|
||||
required ongoing maintenance. My blog would need to be easily customizable;
|
||||
coming from a graphic design background means I’ll always be tweaking the site’s
|
||||
appearance and layout.</p>
|
||||
|
||||
<p>Over the last month I’ve brought these concepts to fruition and I’m pleased to
|
||||
announce <a href="http://github.com/mojombo/jekyll">Jekyll</a>. Jekyll is a simple, blog
|
||||
aware, static site generator. It takes a template directory (representing the
|
||||
raw form of a website), runs it through Textile and Liquid converters, and spits
|
||||
out a complete, static website suitable for serving with Apache or your favorite
|
||||
web server. If you’re reading this on the website
|
||||
(http://tom.preston-werner.com), you’re seeing a Jekyll generated blog!</p>
|
||||
|
||||
<p>To understand how this all works, open up my <a href="http://github.com/mojombo/tpw">TPW</a>
|
||||
repo in a new browser window. I’ll be referencing the code there.</p>
|
||||
|
||||
<p>Take a look at
|
||||
<a href="http://github.com/mojombo/tpw/tree/master/index.html">index.html</a>. This file
|
||||
represents the homepage of the site. At the top of the file is a chunk of YAML
|
||||
that contains metadata about the file. This data tells Jekyll what layout to
|
||||
give the file, what the page’s title should be, etc. In this case, I specify
|
||||
that the “default” template should be used. You can find the layout files in the
|
||||
<a href="http://github.com/mojombo/tpw/tree/master/_layouts">_layouts</a> directory. If you
|
||||
open
|
||||
<a href="http://github.com/mojombo/tpw/tree/master/_layouts/default.html">default.html</a>
|
||||
you can see that the homepage is constructed by wrapping index.html with this
|
||||
layout.</p>
|
||||
|
||||
<p>You’ll also notice Liquid templating code in these files.
|
||||
<a href="http://www.liquidmarkup.org/">Liquid</a> is a simple, extensible templating
|
||||
language that makes it easy to embed data in your templates. For my homepage I
|
||||
wanted to have a list of all my blog posts. Jekyll hands me a Hash containing
|
||||
various data about my site. A reverse chronological list of all my blog posts
|
||||
can be found in <code>site.posts</code>. Each post, in turn, contains various
|
||||
fields such as <code>title</code> and <code>date</code>.</p>
|
||||
|
||||
<p>Jekyll gets the list of blog posts by parsing the files in the
|
||||
<a href="http://github.com/mojombo/tpw/tree/master/_posts">_posts</a> directory. Each post’s
|
||||
filename contains the publishing date and slug (what shows up in the URL) that
|
||||
the final HTML file should have. Open up the file corresponding to this blog
|
||||
post:
|
||||
<a href="http://github.com/mojombo/tpw/tree/master/_posts/2008-11-17-blogging-like-a-hacker.textile">2008-11-17-blogging-like-a-hacker.textile</a>.
|
||||
GitHub renders textile files by default, so to better understand the file, click
|
||||
on the
|
||||
<a href="http://github.com/mojombo/tpw/tree/master/_posts/2008-11-17-blogging-like-a-hacker.textile?raw=true">raw</a>
|
||||
view to see the original file. Here I’ve specified the <code>post</code> layout.
|
||||
If you look at that file you’ll see an example of a nested layout. Layouts can
|
||||
contain other layouts allowing you a great deal of flexibility in how pages are
|
||||
assembled. In my case I use a nested layout in order to show related posts for
|
||||
each blog entry. The YAML also specifies the post’s title which is then embedded
|
||||
in the post’s body via Liquid.</p>
|
||||
|
||||
<p>Posts are handled in a special way by Jekyll. The date you specify in the
|
||||
filename is used to construct the URL in the generated site. This post, for
|
||||
instance, ends up at
|
||||
<code>http://tom.preston-werner.com/2008/11/17/blogging-like-a-hacker.html</code>.</p>
|
||||
|
||||
<p>Files that do not reside in directories prefixed with an underscore are mirrored
|
||||
into a corresponding directory structure in the generated site. If a file does
|
||||
not have a YAML preface, it is not run through the Liquid interpreter. Binary
|
||||
files are copied over unmodified.</p>
|
||||
|
||||
<p>In order to convert your raw site into the finished version, you simply run:</p>
|
||||
|
||||
<pre class="terminal"><code>$ jekyll /path/to/raw/site
|
||||
/path/to/place/generated/site</code></pre>
|
||||
|
||||
<p>Jekyll is still a very young project. I’ve only developed the exact
|
||||
functionality that I’ve needed. As time goes on I’d like to see the project
|
||||
mature and support additional features. If you end up using Jekyll for your own
|
||||
blog, drop me a line and let me know what you’d like to see in future versions.
|
||||
Better yet, fork the project over at GitHub and hack in the features yourself!</p>
|
||||
|
||||
<p>I’ve been living with Jekyll for just over a month now. I love it. Driving the
|
||||
development of Jekyll based on the needs of my blog has been very rewarding. I
|
||||
can edit my posts in TextMate, giving me automatic and competent spell checking.
|
||||
I have immediate and first class access to the CSS and page templates.
|
||||
Everything is backed up on GitHub. I feel a lightness now when I’m writing a
|
||||
post. The system is simple enough that I can keep the entire conversion process
|
||||
in my head. The distance from my brain to my blog has shrunk, and, in the end, I
|
||||
think that will make me a better author.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="related">
|
||||
<h2>Related Posts</h2>
|
||||
<ul class="posts">
|
||||
|
||||
<li><span>10 Nov 2016</span> » <a href="/2016/11/10/snyk.html">Snyk - Automatically Scan and Fix Ruby and Nodejs Vulnerabilities</a></li>
|
||||
|
||||
<li><span>19 Jun 2015</span> » <a href="/2015/06/19/replicated.html">Replicated - An Easier Path from SaaS to Enterprise</a></li>
|
||||
|
||||
<li><span>21 Apr 2014</span> » <a href="/2014/04/21/farewell-github-hello-immersive-computing.html">Farewell GitHub, Hello Immersive Computing</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<div class="contact">
|
||||
<p>
|
||||
Tom Preston-Werner
|
||||
<br />
|
||||
Cofounder of
|
||||
<a href="https://codestarter.org/">Codestarter</a>,
|
||||
<a href="https://github.com/">GitHub</a>
|
||||
<br />
|
||||
[email protected]
|
||||
</p>
|
||||
</div>
|
||||
<div class="contact">
|
||||
<p>
|
||||
<a href="http://github.com/mojombo/">github.com/mojombo</a><br />
|
||||
<a href="http://twitter.com/mojombo/">twitter.com/mojombo</a><br />
|
||||
</p>
|
||||
</div>
|
||||
<div class="rss">
|
||||
<a href="http://feeds.feedburner.com/tom-preston-werner">
|
||||
<img src="/images/rss.png" alt="Subscribe to RSS Feed" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="http://github.com/mojombo"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub" /></a>
|
||||
|
||||
<!-- ClickTale Bottom part -->
|
||||
<div id="ClickTaleDiv" style="display: none;"></div>
|
||||
<script type="text/javascript">
|
||||
if(document.location.protocol!='https:')
|
||||
document.write(unescape("%3Cscript%20src='http://s.clicktale.net/WRb.js'%20type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
if(typeof ClickTale=='function') ClickTale(206,0.3,"www03");
|
||||
</script>
|
||||
<!-- ClickTale end of Bottom part -->
|
||||
|
||||
<!-- Google Analytics -->
|
||||
<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
var pageTracker = _gat._getTracker("UA-6016902-1");
|
||||
pageTracker._trackPageview();
|
||||
</script>
|
||||
<!-- Google Analytics end -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user