<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>trevoro.ca &#124; blog</title>
	<atom:link href="http://trevoro.ca/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://trevoro.ca/blog</link>
	<description>Elegant Solutions to Complex Problems</description>
	<lastBuildDate>Tue, 12 Jul 2011 21:30:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>In Defense of the Intrapreneur</title>
		<link>http://trevoro.ca/blog/2011/07/12/in-defense-of-the-intrapreneur/</link>
		<comments>http://trevoro.ca/blog/2011/07/12/in-defense-of-the-intrapreneur/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 19:19:03 +0000</pubDate>
		<dc:creator>Trevor Orsztynowicz</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevoro.ca/blog/?p=504</guid>
		<description><![CDATA[I read a rather harsh criticism on Hacker News today about &#8220;Intrapreneurs&#8221;. The Intrapreneur is an &#8220;Internal Entrepreneur&#8221; who starts up new projects, ideas, etc, but from within an established company. I personally feel this criticism is rather misguided. The key to the argument was that Intrapreneurs take no risk, and therefore do not deserve [...]]]></description>
			<content:encoded><![CDATA[<p>I read a rather <a href="http://www.chubbybrain.com/blog/intrapreneur-entrepreneur-no-similarity/">harsh criticism</a> on Hacker News today about &#8220;Intrapreneurs&#8221;. The Intrapreneur is an &#8220;Internal Entrepreneur&#8221; who starts up new projects, ideas, etc, but from within an established company. I personally feel this criticism is rather misguided. The key to the argument was that Intrapreneurs take no risk, and therefore do not deserve to be associated with any deviation of the word &#8220;Entrepreneur&#8221;. <b>Update</b>: My colleague <a href="http://twitter.com/#!/bcantrill">Bryan</a> has also written his thoughts on the subject. You can read them <a href="http://dtrace.org/blogs/bmc/2011/07/12/in-defense-of-intrapreneurialism/">here</a>.</p>
<p>As an entrepreneur who has done both, here&#8217;s why you&#8217;re wrong. You can follow along with the <a href="http://www.chubbybrain.com/blog/intrapreneur-entrepreneur-no-similarity/">original article</a> if you care at all.</p>
<p><strong>&#8220;Intrapreneurs take no REAL risk&#8221;</strong> &#8211; Entrepreneurs take great risks at the benefit of great possible reward. A successful entrepreneur can make his entire career by taking a chance. You&#8217;re confusing someone who drives internal product direction with someone who just shoves paper all day. Innovative products that come out of companies (like the iPod, Motorola Razr, Kinect, etc) were all driven by internal entrepreneurs. You may feel that the term &#8220;entrepreneur&#8221; is being trodden upon by these lowly individuals who have chosen not to go bankrupt. Sometimes that&#8217;s just not an option. But an entrepreneur by definition is someone who works on a new idea and is held accountable. Have you ever failed a multi-million dollar project? That&#8217;s a risk and responsibility very few people are willing to take.</p>
<p><strong>&#8220;Little Accountability&#8221;</strong> &#8211; Entrepreneurs blame all sorts of things when their startups fail. The market conditions weren&#8217;t right. We couldn&#8217;t get enough investment. Johnny should have written our webapp in Python instead of PHP. At the end of the day, that&#8217;s not an &#8220;intrapreneur&#8221; vs entrepreneur issue. That&#8217;s a goddamned character flaw. Intrapreneurs rarely get a second or third chance to start over. Entrepreneurs usually flee with their tail between their legs. In either case, it takes balls to do it over again.</p>
<p><strong>&#8220;Little Upside&#8221;</strong> &#8211; 10k in bonus money? If you come up with the next iPhone and you get stuck with a 10K bonus then you&#8217;re an idiot &#8211; not a hesitant entrepreneur. Stock options, bonuses, a career, a significantly higher salary. Again, this is a risk vs reward scenario. For many serial entrepreneurs, they aren&#8217;t in it &#8220;for the money&#8221; they&#8217;re in it for the experience. Building something new is (and arguably should be) its own reward. The money is a bonus.</p>
<p><strong>&#8220;Intrapreneurs dont call the shots&#8221;</strong> &#8211; If you&#8217;ve started or a project that would be significant enough to justify calling yourself an &#8220;intrapreneur&#8221; then by definition you&#8217;re calling the shots. How many entrepreneurs are great at press releases anyway? I can tell you straight up that the number is pretty low. Sometimes having an entire department to spruce up some product documentation would be nice. Is the process a pain &#8211; sure. But if i&#8217;ve built something good enough this issue is moot.</p>
<p><strong>&#8220;Scarcity of Resources&#8221;</strong> &#8211; Yes. Yes there is. It&#8217;s called a budget. Sometimes you go over your budget and you have to beg for more money. I&#8217;m not saying it&#8217;s glamorous. It&#8217;s certainly not as &#8220;glamorous&#8221; as asking a VC for more money, but it&#8217;s real. Just because you work for a big company, doesn&#8217;t mean you get to piss that money away on catered lunches and sparkling water.</p>
<p><strong>&#8220;Knowing, Not Doing&#8221;</strong> &#8211; It&#8217;s incorrect (if not downright delusional) to believe that after raising money internally an &#8220;Intrapreneur&#8221; can sit back and watch everything magically happen. Again &#8211; we come back to risk vs reward. No VC is going to throw their money into a project that has no traction with an inexperienced team. But many times, a kick-ass team and a great idea, and a track record will get you seed financing in the millions of dollars range. You&#8217;re wrong.</p>
<p><strong>&#8220;Intrapreneurs piggy back on a Brand&#8221;</strong> &#8211; Companies of the size you&#8217;re describing as so massive that the &#8220;shared resources&#8221; benefit is not really a benefit at all. It&#8217;s more of a cost. The brand very often has nothing to do with the quality of a product. It gives you a little bit of marketing money, but at the end of the day that doesn&#8217;t necessarily result in sales. Most recent example of this is the Blackberry Playbook. All the marketing money in the world won&#8217;t save them from the fact that nobody cares about having Flash if the thing doesn&#8217;t have email. Bad products are not made good by means of a logo. Startup or not.</p>
<p><strong>&#8220;Luxury to Specialize&#8221;</strong> &#8211; Yes. The Marketing, Finance or Tech people have specific functions. But by your very definition, they&#8217;re not &#8220;Intrapreneurs&#8221; if they just go to work and do their very specific pigeon-holed jobs. That&#8217;s called &#8220;Having a job&#8221; and there&#8217;s nothing wrong with it. If you want to start up a new idea at your company, you have to learn a whole bunch of other &#8220;Entreprenerial&#8221; skills. How to sell your idea, how to write a presentation, how to socialize with people who decide if you get your money or not, how to run a team, etc. If you&#8217;re an entrepreneur who is worrying about writing contracts, and how to do all your taxes then you&#8217;re doing it wrong.</p>
]]></content:encoded>
			<wfw:commentRss>http://trevoro.ca/blog/2011/07/12/in-defense-of-the-intrapreneur/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to do Prototype Validation in Javascript</title>
		<link>http://trevoro.ca/blog/2010/11/24/how-to-do-prototype-validation-in-javascript/</link>
		<comments>http://trevoro.ca/blog/2010/11/24/how-to-do-prototype-validation-in-javascript/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 17:42:48 +0000</pubDate>
		<dc:creator>Trevor Orsztynowicz</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevoro.ca/blog/?p=512</guid>
		<description><![CDATA[I hacked together a quick model for a prototype REST API written in Node.js, and wanted to validate an object prior to saving it to a database. I didn&#8217;t want or need some wacky full blown ORM but I did want to ensure that the records I was storing were consistent. Validating in Javascript can [...]]]></description>
			<content:encoded><![CDATA[<p>I hacked together a quick model for a prototype REST API written in Node.js, and wanted to validate an object prior to saving it to a database. I didn&#8217;t want or need some wacky full blown ORM but I did want to ensure that the records I was storing were consistent.</p>
<p>Validating in Javascript can be done in many ways but this is a method I came up with after a couple iterations. Let&#8217;s take a look at the code.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">PictureValidations <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009966; font-style: italic;">/^[A-Za-z0-9_-]{8,64}$/</span>.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">type</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>type<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009966; font-style: italic;">/^(jpeg|png|gif|bmp)$/</span>.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>type<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">tags</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>tags<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #000066; font-weight: bold;">in</span> tags<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/^[A-Za-z0-9]+$/</span>.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>tags<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
exports.<span style="color: #660066;">Picture</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span> <span style="color: #339933;">=</span>  options.<span style="color: #000066;">name</span> <span style="color: #339933;">||</span><span style="color: #3366CC;">&quot;unassigned&quot;</span> <span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">tags</span> <span style="color: #339933;">=</span> options.<span style="color: #660066;">tags</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">description</span> <span style="color: #339933;">=</span> options.<span style="color: #660066;">description</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">created_on</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
exports.<span style="color: #660066;">Picture</span>.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">valid</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> validations <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> PictureValidations<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> valid <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>v <span style="color: #000066; font-weight: bold;">in</span> validations<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    valid <span style="color: #339933;">=</span> validations<span style="color: #009900;">&#91;</span>v<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#91;</span>v<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>valid <span style="color: #339933;">==</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">break</span> <span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// stop checking on first failure</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">return</span> valid
<span style="color: #009900;">&#125;</span></pre></div></div>

<h3>How it works</h3>
<p>We&#8217;ve defined a new Object called Picture which has all the properties associated with it, as well as some defaults.</p>
<p>We also specify another object called PictureValidations which contains a bunch of functions. Each function is named after the properties in the Picture that we want to validate. Each function will return either True or False when it is called with the valid() method which has been added to the Picture prototype. The key is the line that says:</p>
<p><code><br />
valid = validations[v](this[v]);<br />
</code></p>
<p>This is storing the status returned from the function in the validations Object we&#8217;ve instantiated with the value of the current objects properties (this).<br />
It will then check to see whether or not it passed or failed.</p>
<p>The nice thing about this method is that you can write a function that does just about anything to determine whether or not something is valid.</p>
<p>Anyway, it seems to work, but I&#8217;d appreciate any feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://trevoro.ca/blog/2010/11/24/how-to-do-prototype-validation-in-javascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to learn Node.js from Scratch</title>
		<link>http://trevoro.ca/blog/2010/11/23/how-to-learn-node-js-from-scratch/</link>
		<comments>http://trevoro.ca/blog/2010/11/23/how-to-learn-node-js-from-scratch/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 03:26:09 +0000</pubDate>
		<dc:creator>Trevor Orsztynowicz</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[engineer]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://trevoro.ca/blog/?p=503</guid>
		<description><![CDATA[Server-side Javascript has appealed to me for quite a awhile, and while watching from the sidelines was interesting, I still never had the time to really get my feet wet and see how the language really worked. That changed after joining Joyent, of course. We&#8217;re the proud home of Node.js, and it would be wrong unforgivable if [...]]]></description>
			<content:encoded><![CDATA[<p>Server-side Javascript has appealed to me for <a href="http://trevoro.ca/blog/2009/02/05/why-serverside-javascript-matters/">quite a awhile</a>, and while watching from the sidelines was interesting, I still <a href="http://trevoro.ca/blog/2010/07/15/layerboom-acquired-by-joyent/">never had the time</a> to really get my feet wet and see how the language really worked. That changed after joining Joyent, of course. We&#8217;re the proud home of Node.js, and it would be wrong unforgivable if I didn&#8217;t know how to write JS.</p>
<p>It turns out that learning Javascript has been quite fun, and really easy. There are numerous resources on the internet for learning how to manipulate the DOM, and do ridiculous stuff with JQuery. But I&#8217;ve never been a UI person. I&#8217;m a server and network guy, through and through. It turns out, the hardest part about learning Javascript is finding decent documentation. Most of my learning experience has been through reading other peoples wacky, sometimes incomprehensible code, and then going through lists of tutorials that I wrote for myself. Breaking things seems to be the best way to learn how to write stuff. I also was able to rely on some of my brilliant co-workers who are full time software engineers.</p>
<p>Here&#8217;s a list of resources I found helpful, which don&#8217;t necessarily show up at the top of your Google search results.</p>
<h3><a href="http://nodetuts.com/  "><span style="color: #000000;">NodeTuts</span></a></h3>
<p>A decent list of tutorials as screencasts. They can be a little on the long side, but there are a few gems. Check out the one about learning how Sys.pump (util.pump) works. Once you understand how it works you&#8217;ll kind of be blown away at how easily you wrote something so powerful</p>
<h3><a href="http://nodejs.org/docs/  "><span style="color: #000000;"><span style="color: #000000;">Node.Js Documentation</span></span></a></h3>
<p>The API documentation for node is extremely well written, a testament to <a href="https://github.com/ry">Ryan&#8217;s</a> <a href="http://en.wikipedia.org/wiki/Benevolent_Dictator_For_Life">Benevolent Dictator for Life</a> mentality, which is a really good thing.</p>
<h3><a href="http://javascript.crockford.com/  "><span style="color: #000000;"><span style="color: #000000;">Crockford on Javascript</span></span></a></h3>
<p>Douglas Crockford has a ton of really well written examples, standards, &#8220;best practices&#8221;, and videos. If you&#8217;re interested, check out &#8220;Javascript &#8211; The Good Parts&#8221; <a href="http://yuiblog.com/blog/2007/06/08/video-crockford-goodstuff/">post</a>, hosted on the Yahoo! developer network (Mirror please&#8230;)</p>
<h3><a href="https://developer.mozilla.org/en/JavaScript/Reference  "><span style="color: #000000;"><span style="color: #000000;">Mozilla Developer Network Javascript Reference</span></span></a></h3>
<p>I don&#8217;t know why this wasn&#8217;t the first result I found when I searched for things like &#8220;Javascript Object&#8221; or &#8220;Javascript Array&#8221;, but this is the best resource that explains what the native objects are, what methods they include, and provides some decent examples on their usage. A MUST read.</p>
<h3><a href="http://ejohn.org/apps/learn/"><span style="color: #000000;">Learning Advanced Javascript</span></a></h3>
<p>John Resig is putting together a book on the Secrets of Javascript, and it has something to do with Ninjas. But this part of the book is available for people to read today, and it&#8217;s pretty cool. After you nail down a lot of the style, prototyping, and closure stuff, be sure to check out this list of examples on advanced JS.</p>
]]></content:encoded>
			<wfw:commentRss>http://trevoro.ca/blog/2010/11/23/how-to-learn-node-js-from-scratch/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Layerboom Acquired by Joyent!</title>
		<link>http://trevoro.ca/blog/2010/07/15/layerboom-acquired-by-joyent/</link>
		<comments>http://trevoro.ca/blog/2010/07/15/layerboom-acquired-by-joyent/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 15:12:05 +0000</pubDate>
		<dc:creator>Trevor Orsztynowicz</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevoro.ca/blog/?p=488</guid>
		<description><![CDATA[I&#8217;m happy to announce that my company Layerboom has been acquired by Joyent, a leading provider of Cloud Computing services and solutions. Here&#8217;s the press announcement. Layerboom &#38; Cloud Computing is something I&#8217;ve been working on for 2 years but I&#8217;ve been thinking about cloud since school. Startups require quite a bit of sacrifice, and this definitely [...]]]></description>
			<content:encoded><![CDATA[<div>
<p><a href="http://blog.layerboom.com/wp-content/uploads/2010/07/joyent-layerboom3.png"><img title="joyent-layerboom" src="http://blog.layerboom.com/wp-content/uploads/2010/07/joyent-layerboom3.png" alt="" width="600" height="95" /></a></p>
<p><a href="http://blog.layerboom.com/wp-content/uploads/2010/07/joyent-layerboom1.png"></a>I&#8217;m happy to announce that my company <a href="http://layerboom.com" target="_blank">Layerboom</a> has been acquired by <a href="http://www.joyent.com" target="_blank">Joyent</a>, a leading provider of Cloud Computing services and solutions. Here&#8217;s the <a href="http://gigaom.com/2010/07/15/joyent-buys-layerboom-to-offer-enterprises-easier-transition-to-the-cloud/">press announcement</a>.</p>
<p>Layerboom &amp; Cloud Computing is something I&#8217;ve been working on for 2 years but I&#8217;ve been thinking about cloud since school. Startups require quite a bit of sacrifice, and this definitely wasn&#8217;t an exception. I had to give up a lot for the opportunity to try and for that reason I have a ton of people to thank. Most of you I&#8217;ve thanked in person already, but here it is again for &#8216;the record&#8217;.</p>
<p>A big thanks to our Investors for taking a chance on a couple guys with a laptop and an idea, and a big congratulations to the rest of the guys on the <a href="http://layerboom.com">Layerboom</a> team for being persistent, forward thinking, and above all a pleasure to work with.</p>
<p>I also have to thank my Friends for being really supportive and putting up with my bullshit over the last 2 years; You&#8217;re like family to me and in case there was any doubt, you&#8217;re worth more to me than anything.</p>
<p>As part of our deal I&#8217;ve taken a job at Joyent and I&#8217;m really happy to be working for a company with excellent leadership and vision . We can&#8217;t wait to show everyone the projects we&#8217;re working on!</p>
<p>ps We&#8217;re hiring, so if you&#8217;re a developer and you&#8217;re looking for a killer opportunity <a href="mailto:trevoro@joyent.com">send me</a> an email.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://trevoro.ca/blog/2010/07/15/layerboom-acquired-by-joyent/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mobilicity Launches&#8230; on GoDaddy</title>
		<link>http://trevoro.ca/blog/2010/05/14/mobilicity-launches-on-godaddy/</link>
		<comments>http://trevoro.ca/blog/2010/05/14/mobilicity-launches-on-godaddy/#comments</comments>
		<pubDate>Fri, 14 May 2010 19:28:27 +0000</pubDate>
		<dc:creator>Trevor Orsztynowicz</dc:creator>
				<category><![CDATA[Canada]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[wtf]]></category>
		<category><![CDATA[mobilicity fail]]></category>

		<guid isPermaLink="false">http://trevoro.ca/blog/?p=463</guid>
		<description><![CDATA[Mobilicity, a new mobile phone carrier is launching in Canada on May 15th, 2010. Starting in Toronto, then covering other major cities like Vancouver, and Montreal, the service is competitively priced with unlimited plans for calling and text messages at around $35 dollars (CAD) a month, which is pretty sweet. After seeing some buzz on [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mobilicity.ca">Mobilicity</a>, a new mobile phone carrier is launching in Canada on May 15th, 2010. Starting in Toronto, then covering other major cities like Vancouver, and Montreal, the service is competitively priced with unlimited plans for calling and text messages at around $35 dollars (CAD) a month, which is pretty sweet.</p>
<p>After seeing <a href="http://search.twitter.com/search?q=mobilicity">some buzz</a> on Twitter about Mobilicity, I went to their <a href="http://mobilicity.ca">website</a>, which was so slow I thought I was on dial-up.</p>
<p>This amateur stuff from a Telecom?<br />
No&#8230; It can&#8217;t be.</p>
<p>But after seeing a database connection error (This means shit is broken for all your non-techies) I realized something was really up.</p>
<p style="text-align: center;"><a href="http://trevoro.ca/blog/wp-content/uploads/2010/05/Screen-shot-2010-05-14-at-12.00.05-PM.png"><img class="aligncenter size-medium wp-image-478" title="Mobilicity MySQL Connection Errror" src="http://trevoro.ca/blog/wp-content/uploads/2010/05/Screen-shot-2010-05-14-at-12.00.05-PM-300x46.png" alt="" width="300" height="46" /></a></p>
<p>Check this out:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># host www.mobilicity.ca</span>
www.mobilicity.ca has address 173.201.38.96
<span style="color: #666666; font-style: italic;"># host 173.201.38.96</span>
96.38.201.173.in-addr.arpa domain name pointer ip-<span style="color: #000000;">173</span>-<span style="color: #000000;">201</span>-<span style="color: #000000;">38</span>-<span style="color: #000000;">96</span>.ip.secureserver.net.</pre></div></div>

<p>Huh? Secureserver.net is&#8230;.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># whois 173.201.38.96</span>
&nbsp;
OrgName:    GoDaddy.com, Inc.
OrgID:      GODAD
Address:    <span style="color: #000000;">14455</span> N Hayden Road
Address:    Suite <span style="color: #000000;">226</span>
City:       Scottsdale
StateProv:  AZ
PostalCode: <span style="color: #000000;">85260</span>
Country:    US
&nbsp;
NetRange:   173.201.0.0 - 173.201.255.255
CIDR:       173.201.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span>
OriginAS:   AS26496
NetName:    GO-DADDY-SOFTWARE-INC
NetHandle:  NET-<span style="color: #000000;">173</span>-<span style="color: #000000;">201</span>-<span style="color: #000000;">0</span>-<span style="color: #000000;">0</span>-<span style="color: #000000;">1</span>
Parent:     NET-<span style="color: #000000;">173</span>-<span style="color: #000000;">0</span>-<span style="color: #000000;">0</span>-<span style="color: #000000;">0</span>-<span style="color: #000000;">0</span>
NetType:    Direct Allocation
NameServer: CNS1.SECURESERVER.NET
NameServer: CNS2.SECURESERVER.NET
NameServer: CNS3.SECURESERVER.NET
Comment:    Please send abuse complaints to abuse<span style="color: #000000; font-weight: bold;">@</span>godaddy.com
RegDate:    <span style="color: #000000;">2009</span>-09-<span style="color: #000000;">18</span>
Updated:    <span style="color: #000000;">2009</span>-09-<span style="color: #000000;">18</span></pre></div></div>

<p>Its GoDaddy. A telecom that hosts its website on GoDaddy.</p>
<p>Yikes.</p>
]]></content:encoded>
			<wfw:commentRss>http://trevoro.ca/blog/2010/05/14/mobilicity-launches-on-godaddy/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>This man is my Hero</title>
		<link>http://trevoro.ca/blog/2010/05/02/this-man-is-my-hero/</link>
		<comments>http://trevoro.ca/blog/2010/05/02/this-man-is-my-hero/#comments</comments>
		<pubDate>Mon, 03 May 2010 04:29:02 +0000</pubDate>
		<dc:creator>Trevor Orsztynowicz</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevoro.ca/blog/?p=455</guid>
		<description><![CDATA[Yvon Chouinard has got a pretty amazing story. This video is him speaking at UC Santa Barbara about turning Patagonia into a more sustainable business.]]></description>
			<content:encoded><![CDATA[<p>Yvon Chouinard has got a pretty amazing story. This video is him speaking at UC Santa Barbara about turning Patagonia into a more sustainable business. </p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/NVfy2T0rzMc&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/NVfy2T0rzMc&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://trevoro.ca/blog/2010/05/02/this-man-is-my-hero/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Clouds and The Fate of the Help Desk</title>
		<link>http://trevoro.ca/blog/2010/04/30/clouds-and-the-fate-of-the-help-desk/</link>
		<comments>http://trevoro.ca/blog/2010/04/30/clouds-and-the-fate-of-the-help-desk/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 18:37:19 +0000</pubDate>
		<dc:creator>Trevor Orsztynowicz</dc:creator>
				<category><![CDATA[Brainstorming]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[cio]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[cto]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://trevoro.ca/blog/?p=444</guid>
		<description><![CDATA[As an efficiency nut there&#8217;s one thing that makes me really happy about Tablets: The Help Desk will be going away. It&#8217;s important to understand the meaning of the term &#8220;Help Desk&#8221;. I don&#8217;t just mean people who sit around all day with headsets, answering phone calls. It turns out there are a *lot* of [...]]]></description>
			<content:encoded><![CDATA[<p>As an efficiency nut there&#8217;s one thing that makes me really happy about Tablets:</p>
<p>The Help Desk will be going away.</p>
<p>It&#8217;s important to understand the meaning of the term &#8220;Help Desk&#8221;. I don&#8217;t just mean people who sit around all day with headsets, answering phone calls. It turns out there are a *lot* of people employed in IT whose job it is to just keep the lights on. Vendors, Integration specialists, Sysadmins, and the guy whose entire job it is to  click the right button to clear the printer queue. Entire countries have devoted a lot of resources to greasing the gears of computers. They all work in a Helpdesk somehow.</p>
<p>CTO&#8217;s and CIO&#8217;s are starting to appreciate that their function at a company isn&#8217;t about technology <em>implementation</em> &#8211; it&#8217;s about how technology can help their business. Who cares if your OS is running Windows or Linux if all you need is a Word processor (and Solitaire). It&#8217;s become totally irrelevant.</p>
<p>What matters is the applications that are delivered to the end user; everything else is just implementation dogma. The people doing these implementations are Help Desks too, they&#8217;re just a few degrees removed from the end-user and prefer snazzier titles like &#8216;Application Services Engineer.&#8217;</p>
<p>It&#8217;s gonna take awhile. The PC will be around for a long time and <a href="http://www.ilounge.com/index.php/reviews/entry/apple-ipad-keyboard-dock/">people still need to type</a>. But as we shift to tiny, integrated, crash-proof devices we need help desks less and less. The intuitive nature of the computer will suggest that it&#8217;s no longer important to be adept at using them. Not only that, but as we cycle through generations of people, the technical citizens will supplant the <a href="http://en.wikipedia.org/wiki/Baby_boomer">technical immigrants</a></p>
]]></content:encoded>
			<wfw:commentRss>http://trevoro.ca/blog/2010/04/30/clouds-and-the-fate-of-the-help-desk/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Dangers of Building on Someone Else&#8217;s Platform</title>
		<link>http://trevoro.ca/blog/2010/04/12/the-dangers-of-building-on-someone-elses-platform/</link>
		<comments>http://trevoro.ca/blog/2010/04/12/the-dangers-of-building-on-someone-elses-platform/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 06:30:39 +0000</pubDate>
		<dc:creator>Trevor Orsztynowicz</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevoro.ca/blog/?p=445</guid>
		<description><![CDATA[Sometimes we hear about how M&#38;A is the new R&#38;D. Sometimes I wonder if Embrace &#38; Extend is the new R&#38;D. A lot of startup business models involve building products that fill gaps in existing platforms. There is absolutely nothing wrong with that, and there have been a few success stories. But if you don&#8217;t own [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes we hear about how M&amp;A is the new R&amp;D.</p>
<p>Sometimes I wonder if <a href="http://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish" target="_blank">Embrace &amp; Extend</a> is the new R&amp;D.</p>
<p>A lot of startup business models involve building products that fill gaps in existing platforms. There is absolutely nothing wrong with that, and there have been a few <a href="http://blog.twitter.com/2008/07/finding-perfect-match.html" target="_blank">success</a> stories. But if you don&#8217;t own the platform, or if you aren&#8217;t wildly successful at filling the gap you&#8217;re taking a really big risk.</p>
<p>If you fill a gap in someone elses platform and you are moderately successful, then it means there is demand. You have done a fantastic job of demonstrating peoples willingness to pay for something. Twitter needed search functionality and acquired the company that was doing that, but instead of buying <a href="http://www.rightscale.com/">an existing control panel</a>, Amazon just built their own. There isn&#8217;t a reason why the platform itself will buy you rather than implement the features you&#8217;ve spent all your time building.</p>
<p>The issue seems to be the massive amounts of startups going after &#8216;low hanging fruit&#8217;. It&#8217;s one thing to be lean and get a product out the door, but it&#8217;s entirely another to be able to sustain your market for any reasonable amount of time. Perhaps one of the issues with the low hanging fruit, is that they are problems which are (relatively) easily solved, but the market hasn&#8217;t been proven, or a set of &#8216;best practices&#8217; has not yet been established.</p>
<p>The new model for services &amp; platform companies (which includes companies like Twitter and Apple) seems to be</p>
<p>1) Create an ecosystem<br />
2) Let the ecosystem figure out what your product is and how its being used<br />
3) Cannibalize the features your ecosystem created for you.</p>
<p>It goes without saying that if you want to solve an Easy problem then you&#8217;re going to have a lot of competition (link shorteners, anyone?), and your chances for acquisition are actually much much lower. If you&#8217;re trying to solve a Hard problem then you will have less competition but you have to be careful &#8211; if you build your solution using someone else&#8217;s platform, what&#8217;s to stop them from taking your idea and just using it themselves? Does your idea work better as a Feature in an existing product, or would stand on its own? There&#8217;s nothing wrong with being a feature, but it&#8217;s really important that you know the answer.</p>
]]></content:encoded>
			<wfw:commentRss>http://trevoro.ca/blog/2010/04/12/the-dangers-of-building-on-someone-elses-platform/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How to Live Forever</title>
		<link>http://trevoro.ca/blog/2010/04/02/how-to-live-forever/</link>
		<comments>http://trevoro.ca/blog/2010/04/02/how-to-live-forever/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 18:53:04 +0000</pubDate>
		<dc:creator>Trevor Orsztynowicz</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevoro.ca/blog/?p=332</guid>
		<description><![CDATA[The other day I was speaking with an acquaintance who&#8217;s grandfather had recently passed away. Most people have trouble talking about the subject, and all while the subject is generally sad, this story had a an interesting twist. You &#38; Mii A few months ago Susan* and her Grandfather were playing Wii. As every gamer [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I was speaking with an acquaintance who&#8217;s grandfather had recently passed away. Most people have trouble talking about the subject, and all while the subject is generally sad, this story had a an interesting twist.</p>
<h4>You &amp; Mii</h4>
<p>A few months ago Susan* and her Grandfather were playing Wii. As every gamer knows, its not quite the same to play a Wii game without a <a href="http://images.google.com/images?hl=en&amp;source=hp&amp;q=mii&amp;gbv=2&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=&amp;gs_rfai=" target="_blank">Mii</a> character. So Susan opted to create her Grandfather his very own avatar &#8211; at his discretion of course. After 30 minutes they&#8217;d perfected the essence of the man (playful in nature but I&#8217;m told had serious eyebrows).They then proceeded to bowl and golf in the usual fashion. They even managed a couple games of Tennis. All in all a great visit.</p>
<p>But Susans Grandfather got sick, and instead of getting better things got worse.</p>
<p>Dealing with the death of a loved one is difficult in most circumstances but this was particularily difficult for his family. The central figure in their family, he would often be the resolver of disputes, and the reason for their getting together. They attended the funeral grief stricken but mildly comforted by the understanding that a man with such a persistent sense of youth would no longer have to deal with the burdens of an ageing body.</p>
<p>A few weeks later Susans family was over for a relatives birthday. After catching up and eating dinner a few of them decided to fire up the Wii. To their amazement the character that kept popping up the most often was her Grandfather.</p>
<p>&#8220;It was as if he was still around, playing games with us&#8221;, she recalled.</p>
<p>&#8220;As if he would live forever.&#8221;</p>
<h4>Perpetual Consciousness</h4>
<p>If we could live forever what would that look like? While modern technologies may make it possible to sustain our bodies much longer than in the past, the fact is that our bodies are beautiful machines that eventually break down. Phillosophers and scientists have asked these same questions for quite a long time, and many movies and books have been based on the idea that a computer could actually contain your consciousness forever.</p>
<p>For technology extremists the moment that makes this possible is a predicted <a href="http://en.wikipedia.org/wiki/Rapture">Rapture</a>-like event dubbed The Singularity. The <a href="http://en.wikipedia.org/wiki/The_Singularity_Is_Near" target="_blank">singularity</a> is a point in the future where technology is able to make improved copies of itself. The concept is that once something smarter than a human can make copies of other &#8216;beings&#8217; smarter than people then &#8220;all bets are off&#8221; &#8211; there is no way to predict what will happen beyond this point because anything can happen. The singularity is in effect a moment where a machine can actually be conscious, and could contain other consciousnesses.</p>
<p>What does this have to do with living forever? Many people suggest that we will be able to upload our consciousness into some &#8216;brain&#8217; and in effect &#8216;live&#8217; in a machine. Whether or not its possible is pretty tough to answer. The singularity, much like The Rapture or Alien Abduction, is one of those things that cannot be verified by the living.</p>
<p>Perhaps the experience of the living is the only element that we should really be concerned with. If the memory is almost as effective as the real thing then perhaps an avatar is enough to feel a presence.</p>
<p>For Susan and her family, her Grandfather was still very much a part of their lives &#8211; able to play tennis with them at the press of a button.</p>
]]></content:encoded>
			<wfw:commentRss>http://trevoro.ca/blog/2010/04/02/how-to-live-forever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sysadmins are Dead. Long live Devops!</title>
		<link>http://trevoro.ca/blog/2010/04/01/sysadmins-are-dead-long-live-devops/</link>
		<comments>http://trevoro.ca/blog/2010/04/01/sysadmins-are-dead-long-live-devops/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 23:28:56 +0000</pubDate>
		<dc:creator>Trevor Orsztynowicz</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://trevoro.ca/blog/2010/04/01/sysadmins-are-dead-long-live-devops/</guid>
		<description><![CDATA[You&#8217;re starting a company, or you&#8217;re managing and IT department. Someone needs to keep the lights on, so you look to hire a Sysadmin, or a managed service provider (which is just a bunch of sysadmins paired with people who dont know how to speak Klingon) Pause, and ask yourself the following question: &#8220;Do I [...]]]></description>
			<content:encoded><![CDATA[<p>You&#8217;re starting a company, or you&#8217;re managing and IT department.<br />
Someone needs to keep the lights on, so you look to hire a Sysadmin, or a managed service provider (which is just a bunch of sysadmins paired with people who <i>dont</i> know how to speak Klingon)</p>
<p>Pause, and ask yourself the following question:</p>
<p>&#8220;Do I want a Sysadmin? Or do I want a Developer who knows how to be a Sysadmin?&#8221;</p>
<p>Turns out there are quite a few developers who also know how to do operations work and do so really effectively. The people who do this kind of work have had all sorts of titles: Systems Engineers, Systems Administrators, Unlucky Developers, Operations, etc. </p>
<p>You want someone who can automate backups, and testing of those backups in a way that removes themselves as bottlenecks. You want someone who can write the API you need for your developers to push code updates <i>every single hour</i> to QA and production, and do so in a reliable fashion (with rollback)</p>
<p>These are the people you want to hire.<br />
Trust me.</p>
<p>The key question you have to ask yourself is this:<br />
&#8220;How many people does it take to keep my operation up and running 24&#215;7?&#8221;</p>
<p>A &#8216;decent&#8217; sysadmin can handle more than 50 computers on their own<br />
A &#8216;good&#8217; sysadmin can handle more than 200<br />
An &#8216;Awesome&#8217; sysadmin can handle more than 1000. </p>
<p>The new name for this role is is &#8216;DevOps&#8217; for Developer + Operations. They&#8217;re people who keep lights on, and ensure that you&#8217;ll keep the lights on if you get 1,000,000 customers tomorrow. The kind of people who will work themselves out of a job because they&#8217;ve automated *everything*. The kind of people who actually enjoy writing code that manages other computers. Yep. They actually exist.</p>
<p>Stop asking for what you think you want. There&#8217;s a whole other class of developer out there &#8211; begging for a challenge.</p>
]]></content:encoded>
			<wfw:commentRss>http://trevoro.ca/blog/2010/04/01/sysadmins-are-dead-long-live-devops/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

