<?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>Xangelo</title>
	<atom:link href="http://xangelo.ca/feed/" rel="self" type="application/rss+xml" />
	<link>http://xangelo.ca</link>
	<description>musings++</description>
	<lastBuildDate>Mon, 17 Jun 2013 16:00:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Decoupling architecture with Queues</title>
		<link>http://xangelo.ca/2013/06/decoupling-architecture-with-queues/</link>
		<comments>http://xangelo.ca/2013/06/decoupling-architecture-with-queues/#comments</comments>
		<pubDate>Mon, 17 Jun 2013 16:00:04 +0000</pubDate>
		<dc:creator>xangelo</dc:creator>
				<category><![CDATA[Application Architecture]]></category>
		<category><![CDATA[Product Design]]></category>

		<guid isPermaLink="false">http://xangelo.ca/?p=131</guid>
		<description><![CDATA[Understanding Queues I find that a lot of devs have problems with thinking about queues and planning their architecture with them in mind. They get lost in the technical details and fail to see how queues really should be planned &#8230; <a href="http://xangelo.ca/2013/06/decoupling-architecture-with-queues/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p class="pConcord">Understanding Queues</p>
<ul class="ulConcord">
<li class="liConcord liLevel3" style="list-style-type: none;">I find that a lot of devs have problems with thinking about queues and planning their architecture with them in mind. They get lost in the technical details and fail to see how queues really should be planned and organized to get the most out of them.</li>
<li class="liConcord liLevel3" style="list-style-type: none;">Imagine you&#8217;re at a grocery store with a single checkout counter and a single queue, where all the shoppers are lining up. You go up to the queue, and join the back &#8211; after all, all these people have been waiting before you, don&#8217;t be rude. The check out counter then calls the first person in line forward.
<ul class="ulConcord">
<li class="liConcord liLevel5" style="list-style-type: none;">The person manning the counter scans all the groceries</li>
<li class="liConcord liLevel5" style="list-style-type: none;">They charge the customer</li>
<li class="liConcord liLevel5" style="list-style-type: none;">The customer pays</li>
<li class="liConcord liLevel5" style="list-style-type: none;">The customer bags their groceries (or the groceries are bagged for them)</li>
<li class="liConcord liLevel5" style="list-style-type: none;">They leave and the person manning the counter calls the next person forward.\</li>
</ul>
</li>
<li class="liConcord liLevel3" style="list-style-type: none;">This process will continue to repeat for as long as there are people in the queue. As soon as everyone in the queue is gone, the person at the counter will just sit there and wait until someone shows up. That&#8217;s their job as a worker.</li>
<li class="liConcord liLevel3" style="list-style-type: none;">Notice that the queue didn&#8217;t exist at the checkout counter itself, it existed BEFORE the checkout counter. This is the biggest benefit of having a queue system. Now, if we open a second counter next to the first, they can utilize the same queue and ideally get twice as much work done. Add a third, and three times the work gets done.</li>
<li class="liConcord liLevel3" style="list-style-type: none;">However! That only works when the counters never need to talk to each other. The minute a counter needs to talk to another counter to verify something BOTH counters need to stop working to talk before they can go back to whatever they were doing. This is where a lot of problems happen, and causes slowdowns and forces the queues to backup. Each counter needs to function completely independently for the best performance.</li>
</ul>
<p class="pConcord">Pros</p>
<ul class="ulConcord">
<li class="liConcord liLevel3" style="list-style-type: none;">It provides an easy way to measure when you need to start looking at scaling your system. If you notice the length of your queue start growing, it means you&#8217;re not able to work through your data fast enough, so you can easily add a few more workers to help with the load. And because you&#8217;re using a queue&#8230;</li>
<li class="liConcord liLevel3" style="list-style-type: none;">Your workers don&#8217;t need to reside on the same servers! You can have any number/spec of servers with their own number of workers each and they can all still interact with the same queue. You&#8217;ve now allowed your system to scale both horizontally (more systems) AND vertically (better systems).</li>
<li class="liConcord liLevel3" style="list-style-type: none;">One of the favourite features of Queues seems to be overlooked a lot of the time. Queues provide a place for data to wait until you get to processing it. This means that if your processing side ever breaks, or needs to be taken offline temporarily YOU&#8217;RE NOT LOSING USER DATA. Data is still being collected in the queue and when your workers come back online they can get right back to work retroactively processing the data that was waiting for them.</li>
</ul>
<p class="pConcord">Cons</p>
<ul class="ulConcord">
<li class="liConcord liLevel3" style="list-style-type: none;">Of course, with every new component there is some overhead. You will need to devote some resources to just handling the queue. It&#8217;s another component you need to manage from an infrastructure point of view.</li>
<li class="liConcord liLevel3" style="list-style-type: none;">Ideally, the queue would be its own server which means there&#8217;s additional latency when pushing/pulling data to a queue.</li>
</ul>
<p class="pConcord">Tools for queuing</p>
<ul class="ulConcord">
<li class="liConcord liLevel3" style="list-style-type: none;">While you can write your own queue service fairly simply (for example, piggy backing on Redis) there are also some great tools for you to use and incorporate into your projects right away. I&#8217;ll be honest, I don&#8217;t feel comfortable giving a full review of them because I&#8217;ve only ever used SQS. Instead, I&#8217;d recommend you just do some research and figure out what makes sense for you.</li>
<li class="liConcord liLevel3" style="list-style-type: none;">RabbitMQ &#8211; <a href="http://www.rabbitmq.com/">http://www.rabbitmq.com/</a></li>
<li class="liConcord liLevel3" style="list-style-type: none;">IronMQ &#8211; <a href="http://www.iron.io/mq">http://www.iron.io/mq</a></li>
<li class="liConcord liLevel3" style="list-style-type: none;">SQS &#8211; <a href="http://aws.amazon.com/sqs/">http://aws.amazon.com/sqs/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://xangelo.ca/2013/06/decoupling-architecture-with-queues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better Fargo/WordPress integration</title>
		<link>http://xangelo.ca/2013/06/better-fargowordpress-integration/</link>
		<comments>http://xangelo.ca/2013/06/better-fargowordpress-integration/#comments</comments>
		<pubDate>Wed, 05 Jun 2013 19:37:27 +0000</pubDate>
		<dc:creator>xangelo</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://xangelo.ca/?p=128</guid>
		<description><![CDATA[Every so often I change up my website. I normally throw out all the work I&#8217;ve done on the site to date and start fresh, alternating between a custom blog system and custom themes for WordPress. This time, however, I &#8230; <a href="http://xangelo.ca/2013/06/better-fargowordpress-integration/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p class="pConcord">Every so often I change up my website. I normally throw out all the work I&#8217;ve done on the site to date and start fresh, alternating between a custom blog system and custom themes for WordPress. This time, however, I decided to try something a bit different.</p>
<p class="pConcord">I&#8217;m going to be writing a plugin for WordPress that adds better support for Fargo.io. Basically, now when you set the attributes for a node you can add some additional attributes to customize when/where the post appears.</p>
<ul class="ulConcord">
<li class="liConcord liLevel3" style="list-style-type: none;">There are a few post related attributes that I want to support
<ul class="ulConcord">
<li class="liConcord liLevel5" style="list-style-type: none;">category
<ul class="ulConcord">
<li class="liConcord liLevel7" style="list-style-type: none;">A list of comma-separated values for the categories that you want this post to appear in</li>
</ul>
</li>
<li class="liConcord liLevel5" style="list-style-type: none;">private
<ul class="ulConcord">
<li class="liConcord liLevel7" style="list-style-type: none;">If private is set and is true, then the post is NOT made public. By default, private is NOT set which means any posts are public</li>
</ul>
</li>
<li class="liConcord liLevel5" style="list-style-type: none;">post-date
<ul class="ulConcord">
<li class="liConcord liLevel7" style="list-style-type: none;">If this is manually set then the post is scheduled for the date that you specify.</li>
</ul>
</li>
</ul>
</li>
</ul>
<p class="pConcord">The plugin will also support &#8220;Pages&#8221;. By adding the &#8220;page&#8221; attribute to a node everything underneath is passed to the page and it overwrites the existing contents of the page.</p>
<p class="pConcord">In addition to the plugin there will be some code that needs to be added to Fargo to add the new post button to the sidebar.</p>
<p class="pConcord">The idea behind this new plugin/fargo integration is simple: I want to power by blog with Fargo.io. I think having full control of my content at ALL times this way is very powerful and the ability to have a custom domain associated with my outlines even more so.</p>
<p class="pConcord">Eventually I&#8217;ll have to add support for multiple WordPress installs, but to start it will only support one.</p>
]]></content:encoded>
			<wfw:commentRss>http://xangelo.ca/2013/06/better-fargowordpress-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t be an API company</title>
		<link>http://xangelo.ca/2013/05/api-company/</link>
		<comments>http://xangelo.ca/2013/05/api-company/#comments</comments>
		<pubDate>Mon, 20 May 2013 16:00:11 +0000</pubDate>
		<dc:creator>xangelo</dc:creator>
				<category><![CDATA[Product Design]]></category>
		<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://xangelo.ca/?p=97</guid>
		<description><![CDATA[Last year I was part of a hackathon called AngelHack. It was the first time that AngelHack made it out to Toronto and I joined a group of friends to participate. We developed an API meta-layer over cloud storage. By &#8230; <a href="http://xangelo.ca/2013/05/api-company/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Last year I was part of a hackathon called <a href="http://angelhack.com">AngelHack</a>. It was the first time that AngelHack made it out to Toronto and I joined a group of friends to participate. We developed an API meta-layer over cloud storage. By using us you could integrate every cloud storage system we supported into your application. Not being content with just that we built a few tools that ran on top of our API that would allow someone who wasn&#8217;t very technical to add some cloud-capabilities to their website. We allowed them (with a couple lines of code) to modify every file upload button on their website to our interface that would let them select any service we supported and select files from there. We could also do the reverse &#8211; allow a website to push files down to the cloud storage account that a user selected.</p>
<p><a href="http://xangelo.ca/wp-content/uploads/2013/05/Airpost-Web-Popup.png"><img src="http://xangelo.ca/wp-content/uploads/2013/05/Airpost-Web-Popup-300x159.png" alt="Airpost Web-Popup" width="300" height="159" class="aligncenter size-medium wp-image-98" /></a></p>
<p>But we were an API company. The tools were provided were meant to allow for mass adoption of our API&#8217;s but unless you wanted something vanilla you would need to dive into our API.</p>
<p>After a lot of market research, and even some successful pilots we decided to stop playing in the API space. See the problem is that our market segment was very niche. We thought it was a lot bigger than it was. Our market segment was really programmers who were building something that was technical enough that they needed this functionality, but non technical enough that they were able to waste time building it all themselves. We required that a company be working on a consumer facing application, wanted to tie in to various cloud storage services but didn&#8217;t want to do it themselves. Oh, and the company couldn&#8217;t be TOO big because then they&#8217;d do it themselves, and they couldn&#8217;t be too small or then they would HAVE to do it themselves.</p>
<p>But see, that&#8217;s the problem with API companies. They tend to be niche products that will have some success in their niche, and that&#8217;s it.</p>
<p>I wondered why for some time &#8211; why aren&#8217;t there any big API companies? What stops that from happening? And then I realized &#8211; As an API company, what we are selling are some awesome made Lego bricks. We even sell them in a pastic bag, so you can take a look at our bricks and see how awesome they are. We provide you instructions on how to use the bricks. We even show you how some bricks work. But you&#8217;re not trying to create something from it. You buy our bag of bricks because you saw a brick that you needed and you figured it&#8217;s easier to get it from us than actually making your own bricks. We missed the whole point of the bricks.</p>
<p>See Lego doesn&#8217;t sell the bricks. They sell the picture on the box. The bricks are just a mechanism to achieving what you want &#8211; the picture.</p>
<p>API companies, because of the nature of what they do, don&#8217;t provide this picture. That&#8217;s not what they do. Instead API company founders tend to be very smart, technical people who see the true beauty of the bricks. They revel in the bricks. In their minds eye that can twist and contort any number of the bricks. They can fit them together and build any number of amazing things. They get caught up in the bricks themselves. They never sell the amazing things that you can build with the bricks &#8211; they sell to other programmers and leave it to them to build the products.</p>
<p><a href="http://xangelo.ca/wp-content/uploads/2013/05/lego_box.jpg"><img src="http://xangelo.ca/wp-content/uploads/2013/05/lego_box-300x225.jpg" alt="Lego" width="300" height="225" class="aligncenter size-medium wp-image-100" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://xangelo.ca/2013/05/api-company/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fargo.io OPML to JSON</title>
		<link>http://xangelo.ca/2013/05/fargo-io-opml-to-json/</link>
		<comments>http://xangelo.ca/2013/05/fargo-io-opml-to-json/#comments</comments>
		<pubDate>Fri, 17 May 2013 19:00:35 +0000</pubDate>
		<dc:creator>xangelo</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://xangelo.ca/?p=124</guid>
		<description><![CDATA[I love the idea of being in control of all of the content I generate in my Outliner. This is one of the primary reasons I hopped off Workflowy and moved to Fargo.io. I get to keep all the content &#8230; <a href="http://xangelo.ca/2013/05/fargo-io-opml-to-json/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p class="pConcord">I love the idea of being in control of all of the content I generate in my Outliner. This is one of the primary reasons I hopped off <a href="http://workflowy.com">Workflowy</a> and moved to <a href="http://fargo.io">Fargo.io</a>. I get to keep all the content I generate and am free to do with it as I want.</p>
<p class="pConcord">One of the things that I want to do with my OPML feed is to keep all my thoughts on various projects together. I use Fargo to keep track of all my thoughts on my projects, and when I DO release project to the public I&#8217;m using it to power the &#8220;updates&#8221; section.</p>
<p class="pConcord">One easy way to do this is to utilizing the new &#8220;Names&#8221; functionality that was introduced with <a href="http://worknotes.smallpicture.com/may2013/fargo061Identity">version 0.61</a>. It allows me to publish my OPML document right on Small Pict and have a public link to it that I can share with users. Of course, this isn&#8217;t idea for two reasons.</p>
<ul class="ulConcord">
<li class="liConcord liLevel3" style="list-style-type: none;">I&#8217;m using up valuable sub-domains that other users may serve other users better. Not to mention the fact that right now sub-domains are free and I would prefer not needing to impose a payment scheme on it.</li>
<li class="liConcord liLevel3" style="list-style-type: none;">I like controlling the content that I&#8217;m creating.</li>
</ul>
<p class="pConcord">That last point is very powerful. As I said, it&#8217;s what led me to start using Fargo. So, what I did was write a small script (literally a single function in PHP) that you point at an OPML feed and it will return a `JSON` or `array` structure that you can consume as you want. I&#8217;m linking directly to the OPML document in my dropbox folder that I&#8217;ve made public.</p>
<p class="pConcord">Want to see it in action?<a href="http://risinglegends.net/game/updates"> http://risinglegends.net/game/updates</a></p>
<p class="pConcord">Gist: <a href="https://gist.github.com/AngeloR/5601095">https://gist.github.com/AngeloR/5601095</a></p>
]]></content:encoded>
			<wfw:commentRss>http://xangelo.ca/2013/05/fargo-io-opml-to-json/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I&#8217;m blogging with Fargo</title>
		<link>http://xangelo.ca/2013/05/why-im-blogging-with-fargo/</link>
		<comments>http://xangelo.ca/2013/05/why-im-blogging-with-fargo/#comments</comments>
		<pubDate>Fri, 17 May 2013 01:49:48 +0000</pubDate>
		<dc:creator>xangelo</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://xangelo.ca/?p=120</guid>
		<description><![CDATA[I like WordPress. It&#8217;s a good blogging engine, and one of the nice things about it is that I never have to worry about people visiting my site. I don&#8217;t need to worry about whether or not something will work &#8230; <a href="http://xangelo.ca/2013/05/why-im-blogging-with-fargo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p class="pConcord">I like WordPress. It&#8217;s a good blogging engine, and one of the nice things about it is that I never have to worry about people visiting my site. I don&#8217;t need to worry about whether or not something will work for them. I know that when they come to my site they&#8217;ll be able to get whatever they want from it. I know that I&#8217;ll be able to either create a good theme, or find one that I really like and use that. WordPress gives me peace of mind.</p>
<p class="pConcord">However, one of the things that I worry about is when I eventually get bored of WordPress and decide to try and build something. Or what happens when there&#8217;s a new blogging engine out there that&#8217;s a lot better than WordPress? Do I have to rely on the next tool builder (me or someone else) to create a WordPress importer so that I don&#8217;t lose all my content?</p>
<p class="pConcord">I am also very forgetful. Not a &#8220;Did I leave the stove on?&#8221; forgetful, but the &#8220;Have I eaten today?&#8221; kind. As such, I need to write down everything I do. If I don&#8217;t, I&#8217;m pretty much guaranteed to forget it. I have a bunch of ways that I keep track of things. I use Evernote to capture all of my meetings and ideas and to have references to things. I&#8217;ve tried using it to organize what I need to do, or even to organize my thoughts, but my mind doesn&#8217;t work that way. I find that old-school Outliners really work the way I think. Multiple thoughts and details can quickly be added without needing to worry about things.</p>
<p class="pConcord">I&#8217;ve tried a bunch of different outliners before settling on Workflowy a few months ago. It provides a super simply, web-based outliner that lets me do what I need. They offer me the ability to export my data and link to specific nodes and share things &#8211; which is awesome. However, something still irked me about it and always stayed my hand from actually paying for it.</p>
<p class="pConcord">I have no idea why &#8211; but I was always hesitant about it.</p>
<p class="pConcord">But yes, back to why i&#8217;m blogging with Fargo.</p>
<p class="pConcord"><a href="http://fargo.io">Fargo.io</a> is a new tool released by Dave Winer &#8211; the same man who inspired my <a href="http://newsriver.ca">NewsRiver</a> project. It&#8217;s a web interface that writes to YOUR Dropbox account. Basically I can hop in to Fargo from ANY internet connected device (thanks to Bootstrap as well for that functionality) and I can write and organize my thoughts in an Outliner that saves itself to my Dropbox account.</p>
<p class="pConcord">I&#8217;ve been using it for a bit transitioning all my stuff out of Workflowy into Fargo and I&#8217;m already liking it a lot more. A lot of customization options (Custom CSS? Yes please!) as well as the ability to post right from my outliner to WordPress. That&#8217;s right &#8211; this post is written in Fargo.io and with a couple clicks it&#8217;s imported right in to my WordPress powered site.</p>
<p class="pConcord">Of course &#8211; now that the thing that powers my website is no longer locked to WordPress, maybe it&#8217;s time to investigate writing my own blogging system that integrates a bit better with Fargo.</p>
]]></content:encoded>
			<wfw:commentRss>http://xangelo.ca/2013/05/why-im-blogging-with-fargo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prepping for a pilot that isn&#8217;t on the web</title>
		<link>http://xangelo.ca/2013/05/prepping-pilot-web/</link>
		<comments>http://xangelo.ca/2013/05/prepping-pilot-web/#comments</comments>
		<pubDate>Mon, 13 May 2013 16:00:43 +0000</pubDate>
		<dc:creator>xangelo</dc:creator>
				<category><![CDATA[Application Architecture]]></category>

		<guid isPermaLink="false">http://xangelo.ca/?p=95</guid>
		<description><![CDATA[My time with the start-up I&#8217;m at now has seen a lot of product changes. We went from an API company (don&#8217;t be an API company) to a cloud storage amalgamation utility to a security cloud storage system. Finally we &#8230; <a href="http://xangelo.ca/2013/05/prepping-pilot-web/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>My time with the start-up I&#8217;m at now has seen a lot of product changes. We went from an API company (don&#8217;t be an API company) to a cloud storage amalgamation utility to a security cloud storage system. Finally we found our spot in data leakage auditing, monitoring and reporting. We&#8217;re the guys your GRC departments (Governance, Risk and Compliance) will rely on to not only help you be more productive, but to secure the data at your company in ways that make sense.</p>
<p>From a technical point of view, imagine big-data style analytics in real-time. We&#8217;re not machine learning &#8211; that is better left to people with PhD&#8217;s and research papers. Instead what we do is get down into the nitty-gritty details of your network. We run passively on your network sniffing out everything and then perform analytics on what&#8217;s happening to provide you a list of services that your employees are currently using. Of course, the benefit of using our tool is that we provide a way for you find out about new services as soon as they might begin to impact your company.</p>
<p>Forget storing data on the every service out there on the web &#8211; that&#8217;s a full time job that is better left to Google. We focus on what is impacting you and your company.</p>
<p>However, our solution is a single piece of software (and at some point, possibly hardware) that gets installed on premises at your company. We don&#8217;t ever see any of your data &#8211; that&#8217;s what real privacy looks like. Of course, with that comes its own set of problems. My big question right now is pretty simple:</p>
<p><strong>How do I keep the software updated with bug fixes, security updates and features without forcing you to do anything?</strong></p>
<p>One of the ideas that I&#8217;m really interested in is this:</p>
<p>We&#8217;re currently using git for our VCS. Does it make sense to keep our master branch releases with branches for security, bugs and features? This way we can merge them back to a test branch when everything is ready for testing. Once that passes we move things to a &#8216;pre-production&#8217; branch which just sits there for most of the week. Perhaps once a week it merges pre-production and master. This way, the app can simply git-pull against our master branch whenever it feels like it? Perhaps on a scheduled basis once a week it can pull from the branch.</p>
<p>The benefits of this is that we can provide custom SSH keys for each installation of the application. Once a users license has expired or run out, we can simply de-auth them against git and then they no longer get any updates &#8211; without impacting their current service.</p>
<p>Another benefit is that if there WAS a bug with a new release we can configure the updater to simply roll-back to a previous version.</p>
<p>Because of our market size our customers will more than likely have their own labs set up where they would like to test updates. The git distribution system will allow us to roll out new updates to test labs if a customer desires. From this point they can easily configure and figure out what updates they want to release internally before pointing the application at their git server internally.</p>
<p>Unfortunately for me &#8211; I&#8217;m such a big proponent of the system that I can&#8217;t really see the downsides. That&#8217;s where I&#8217;m sort of hoping that you on the internet come to my rescue.</p>
<p><strong>What are some potential problems that you see with using git as a method to update your software applications?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://xangelo.ca/2013/05/prepping-pilot-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NewsRiver v0.8</title>
		<link>http://xangelo.ca/2013/05/newsriver-v0-8/</link>
		<comments>http://xangelo.ca/2013/05/newsriver-v0-8/#comments</comments>
		<pubDate>Mon, 06 May 2013 19:02:01 +0000</pubDate>
		<dc:creator>xangelo</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://xangelo.ca/?p=86</guid>
		<description><![CDATA[A little while ago I mentioned the idea of programmer burnout and some suggestions on how to avoid it. One of the things that I forgot to mention at the time is that one of my hobbies is to have &#8230; <a href="http://xangelo.ca/2013/05/newsriver-v0-8/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>A little while ago I mentioned the idea of <a href="http://xangelo.ca/2013/03/how-to-avoid-programmer-burnout/">programmer burnout</a> and some suggestions on how to avoid it. One of the things that I forgot to mention at the time is that one of my hobbies is to have multiple projects happening that I can swap between to stay fresh. I ensure that they&#8217;re different toolsets and the spaces are different enough that switching modes really helps.</p>
<p>One of the things that I&#8217;ve been working on is <a href="http://newsriver.ca">NewsRiver</a>. It&#8217;s a new way to read your feeds that really helped me eliminate the problems I was having with reading hundreds of articles a day. The problem with traditional RSS readers is that they make you feel guilty. When I log in to Google Reader after a couple days off and see THOUSANDS of feeds unread, it&#8217;s easier for me to just sheepishly mark them all as read and start from scratch. But if I&#8217;m going to be doing that, why does it matter that all my feeds are stored in that manner?</p>
<p>The nice thing about important news is that it doesn&#8217;t just show up once. Many sites will pick up the article and publish it with their own opinions. NewsRiver capitalizes on this by NOT storing or sorting your feeds. Instead of accumulating large amounts of items that you&#8217;ll never actually read NewsRiver streams the items by you as they happen. If you&#8217;re not around when it occurs then NewsRiver assumes that you&#8217;re busy with something else. If the news is important enough, it will make its way around again.</p>
<p>If you haven&#8217;t played around with it yet, I&#8217;d highly suggest taking a look. <a href="http://newsriver.ca">NewsRiver</a> has been around for some time, but it&#8217;s always been something I&#8217;ve used personally &#8211; never really marketing it. Today, however,  I&#8217;m happy to announce that I&#8217;ve been working with <a href="http://www.cochranmedia.com/">Cochran Media</a> on product roadmaps, design, marketing strategies and product positioning.</p>
<p>We&#8217;re hoping that together we&#8217;ll be able to take this product from a great hobby to something that really solves a need with the demise of Google Reader.</p>
]]></content:encoded>
			<wfw:commentRss>http://xangelo.ca/2013/05/newsriver-v0-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t talk to your customers, what do they know anyways?</title>
		<link>http://xangelo.ca/2013/04/72/</link>
		<comments>http://xangelo.ca/2013/04/72/#comments</comments>
		<pubDate>Tue, 02 Apr 2013 16:00:09 +0000</pubDate>
		<dc:creator>xangelo</dc:creator>
				<category><![CDATA[Product Design]]></category>

		<guid isPermaLink="false">http://xangelo.ca/?p=72</guid>
		<description><![CDATA[I want to preface this by saying this is a rather highly opinionated article. I&#8217;m sure a lot of people won&#8217;t agree, but hey, whatever. Choice is a funny thing. We all want it. We want to know that whatever &#8230; <a href="http://xangelo.ca/2013/04/72/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><em>I want to preface this by saying this is a rather highly opinionated article. I&#8217;m sure a lot of people won&#8217;t agree, but hey, whatever.</em></p>
<hr />
<p>Choice is a funny thing. We all want it. We want to know that whatever happens it was our choice that it happened. We like knowing that we controlled the outcome. We like knowing that it was up to us that something happened. We like choice. We believe choice gives us power.</p>
<p>The problem is, every choice we are given paralyzes us. Every time we are faced with a decision we must sit and think. We have to evaluate our options based on the choices at hand. And every choice given adds more time to our decision process &#8211; it decreases our conversion rate if you will.</p>
<p>I propose that in product design, despite when a user says that they WANT choice and they WANT features, what they really want is you to tell them what they want. And I think there&#8217;s a very good reason for this.</p>
<p>When a user arrives at your application they are not a new user. They have habits that they&#8217;ve picked up along the way. Maybe they used similar software to yours before, maybe they only learnt how to use a mouse last week. Either way, they come with baggage. Every choice you offer your users forces them to go through this baggage and figure out what the best option for them is. And every choice you give a user forces that user to evaluate whether or not it is even worth it for them to go through this baggage and decide what to do next.</p>
<p>This is not a good way to run a business and the underlying problem of asking users what they want simply exacerbates it. When you ask a user what they would like to do, they shuffle through their baggage and pull out a few problem points that they have. Then they rank them and tell you the biggest problem they face with their current tool-set. And then you research their current tool-set and accordingly make decisions about your product.</p>
<p>I urge you to look at companies that truly revolutionized an industry &#8211; how many of them conducted &#8216;focus groups&#8217;? How many of them did &#8216;market research&#8217;? I think that companies that do &#8216;focus groups&#8217; to help them drive product innovation are really driving product evolution. They are taking a product and moving it to its next, logical stage. But evolution is a lumbering beast. Evolution of a product takes years of development and the end result is only marginally different. Look at the difference between v2 and v3 of a product. Was it really that different? Did anything  REALLY change?</p>
<p>Conversely, look at v1 of a truly revolutionizing product &#8211; the lightbulb, the steam engine, the internal combustion engine and radio. There was nothing like them before. They weren&#8217;t born out of &#8216;market research&#8217;. No one interviewed a bunch of people to find out what they wanted next. If you HAD interviewed someone before the lightbulb, isn&#8217;t it conceivable to say that they would have asked for a longer burning lamp?</p>
<p>I think what I&#8217;m trying to say is that no one remembers the middle-grounds of evolution &#8211; they remain lost in the annals of history. Instead we remember the beginning.</p>
<h3>Don&#8217;t strive to evolve a product to its next stage &#8211; revolutionize an industry.</h3>
<blockquote>
<p>Breeding homing pigeons that could cover a given space with ever<br />
  increasing rapidity did not give us the laws of telegraphy, nor did<br />
  breeding faster horses bring us the steam locomotive.<br />
  &#8211; Edward J. v. K. Menge, &#8220;The Quarterly Review of Biology&#8221;</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://xangelo.ca/2013/04/72/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The flawed system of Venture Capitalists</title>
		<link>http://xangelo.ca/2013/03/flawed-system-venture-capitalists/</link>
		<comments>http://xangelo.ca/2013/03/flawed-system-venture-capitalists/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 16:00:58 +0000</pubDate>
		<dc:creator>xangelo</dc:creator>
				<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://xangelo.ca/?p=64</guid>
		<description><![CDATA[I swore at some point I would rant about this, and today seems to be as good a day as any. For those of you outside of the startup life, VCs are essentially a bunch of gamblers. Their business is &#8230; <a href="http://xangelo.ca/2013/03/flawed-system-venture-capitalists/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I swore at some point I would rant about this, and today seems to be as good a day as any. For those of you outside of the startup life, VCs are essentially a bunch of gamblers. Their business is simply investing some financial capital into companies that are just starting out. They normally take some equity in the company so that when you make it big and sell your company or turn it into a multi-million dollar business, they can get a nice payout.</p>
<p>Rather than focusing on how a VC fund works, I want to talk about how they choose companies for funding, and why that system is flawed.</p>
<h3>Motivation</h3>
<p>The current VC system is focused around making money. But not just making money, specifically making a ton of money with as little input as possible. A VC firm will have a bunch of partners who have to spend X million dollars. They have two options here:</p>
<ol>
<li>Make an educated guess as to what will take off, so they can get the most return for the least effort</li>
<li>Throw money at everyone and hope someone (or everyone) makes it big</li>
</ol>
<p>The problem is that the first situation takes too much time. In order for a VC to make an &#8220;educated&#8221; guess, they need a lot of information. They need to know a lot about you starting a company, they need to know a lot about the space, they need to know a lot about other companies that made it and didn&#8217;t. This method, as awesome as it sounds, just isn&#8217;t feasible. And I agree 100%. There may be a few founders-turned-VCs who HAD knowledge about the space at one point, but by that very nature they are biased. You&#8217;ll notice that these people tend to be narcissistic in investments. They invest in people who remind them of themselves, and whose ideas align with theirs. This is a problem, and I think that most VC&#8217;s and founders have figured this part out.</p>
<p>The second situation makes a lot more sense. You stop being a strategic thinker and instead rely on numbers. If you invest in 100 companies there&#8217;s a much higher chance of success than if you invest in 2. It makes sense from a mathematical point of view, as well as from a time point of view. Now you can just spray investments across the board quickly and sit back and wait for something to happen. Because something is almost guaranteed to happen.</p>
<h3>The Approach</h3>
<p>Since there is no real way to judge whether a company will succeed or fail, VCs do what everyone else would do. They look back at previous successful companies in the same space as you and try and figure out if you fit that criteria. They look at you as a person and they try and compare you to people who are already successful. It&#8217;s called pattern matching and you learn it in <a href="http://www.turtlediary.com/preschool-games/math-games/pattern-match.html">pre-school</a>. See the <strong>flawed system</strong> that I believe VCs use is simply that they believe pattern matching will give them the results they want. After all, if it looks like a duck and acts like a duck, it&#8217;s probably a duck.</p>
<p>The problem, however, is that you shouldn&#8217;t be looking for a duck.</p>
<p>The easiest way to explain a VCs investment process is simply a standard data-set distribution of people who are successful. Just take a bunch of data-points, throw them on a graph and see where they clump together. Then ignore the points outside and focus on people who fit within the clump &#8211; after all if 75/100  successful people have similar traits you would think that the next successful person will have similar traits right?</p>
<h3>The Turkey Problem</h3>
<p>First off let me say that this example is ENTIRELY lifted from one of the smartest men I&#8217;ve heard of. Never met the man, but if someone can get me an introduction it would be most appreciated &#8211; and I will send you a pizza.</p>
<p>Nassim Talib puts forth a very interesting argument to pattern matching. Imagine a turkey, being raised on a farm. Every day that turkey is fed, it&#8217;s given a place to sleep and is completely protected from all predators. That turkey has it pretty good. If this happens every day, that turkey will continue to believe that being a turkey is pretty awesome. Infact, that turkey will ALWAYS believe that it has it pretty awesome. Until thanksgiving. Then some event that the turkey can&#8217;t even comprehend will occur, and the turkey is done for. However, up until thanksgiving if you could talk to a turkey, it would believe that being a turkey is pretty awesome. Someone takes care of you ALL the time, why WOULDN&#8217;T you want to be a turkey?</p>
<h3>The Simple Solution</h3>
<p>So how do turkeys apply to VCs? Simple. The turkey is essentially doing the same thing the VC is. They look back at historical &#8220;evidence&#8221; and try and fit the future in to it. The problem is this: That outlook only works until it doesn&#8217;t. But it&#8217;s considered a &#8220;statistical anomaly&#8221;. It&#8217;s not part of the pattern so we ignore it and move forward. The problem is that these statistical anomalies account for the MOST change. What VCs are hoping for are big payouts, but they ignore the outliers that can cause the GREATEST change.</p>
<p>We&#8217;re literally held at the mercy of the outliers, but after they happen we either choose to ignore them or we make them the norm. The problem is that the very nature of an outlier means that we never see them coming.</p>
<h3>What does this mean to our VC problem?</h3>
<p>VCs need to stop using an average to figure out if a company will be successful. They need to start looking at the outliers on either side of the spectrum. Either the ones who will be amazingly famous, or the ones that will fall flat on their face. The thing is, statistically, the companies that you want to invest in are the ones that either closely mirror the outliers or doesn&#8217;t mirror anything on the market at all. Those are what will have the potential to give you the most return on your investment.</p>
<p>PS. I hate statistics. I don&#8217;t understand how a branch of study can exist PURELY to ignore the things that cause the most change? It&#8217;s like a study in how to remain mediocre. But at the same time I absolutely adore that there&#8217;s a branch of math dedicated to the mediocre so that we can flip the suggestions on its head and ignore the mediocre.</p>
]]></content:encoded>
			<wfw:commentRss>http://xangelo.ca/2013/03/flawed-system-venture-capitalists/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Educational Revolution</title>
		<link>http://xangelo.ca/2013/03/educational-revolution/</link>
		<comments>http://xangelo.ca/2013/03/educational-revolution/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 19:03:46 +0000</pubDate>
		<dc:creator>xangelo</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://xangelo.ca/?p=49</guid>
		<description><![CDATA[I wrote a post a few months ago talking about how I think there&#8217;s a serious problem with education and where I feel like those problems stem from. Even though I spend 15 or 16 hours a day working, I &#8230; <a href="http://xangelo.ca/2013/03/educational-revolution/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I wrote a post a few months ago talking about how I think there&#8217;s a serious problem with education and where I feel like those problems stem from. Even though I spend 15 or 16 hours a day working, I still find time to turn this idea around in my head &#8211; and I want to clarify a few things.</p>
<p>I stated that I feel part of the problem lies in the strange importance that an entire generation has placed on the &#8220;degree&#8221;. I feel like I need to clarify why I think that and what needs to happen &#8211; mostly because it isn&#8217;t what I thought it would be.</p>
<p>I think the core of the problem is really the commoditization of knowledge. Knowledge is clearly power, but rather than working to bring that knowledge to everyone, they&#8217;re locking it away. Don&#8217;t get me wrong, I&#8217;ve always said &#8211; and I stand by it &#8211; that I don&#8217;t believe that an industry can exist without people making money. We&#8217;re a capitalist society, and a capitalistic society drives innovation. However, lets explore that idea briefly and see how it affects us.</p>
<p><img src="http://upload.wikimedia.org/wikipedia/commons/8/8c/Standard_deviation_diagram.svg" width="400" height="200" class="aligncenter" /></p>
<p>Above you&#8217;ll find outlined the standard deviation on bell curve. The numbers themselves are not that important, but rather the idea of the bell curve. In any non-biased distribution, after you ignore the outliers (that&#8217;s why I hate statistics by the way, perhaps I&#8217;ll cover that another day), what you&#8217;re left with is the above representation. There are a few people that fall to the left, the majority in the middle, and then the rest to the right. The left and right simply refer to the lower and upper bounds of your scale. In our case (capitalism), our bounds simply measure money.</p>
<p>In a theoretical capitalistic society we can expect either a standard deviation bell curve, or a curve that&#8217;s slanted slightly to the right. But, ideally, it would be a standard deviation. There are a lot of reasons for this, mostly economical &#8211; you can&#8217;t have an entirely high-income society. The difference is that the bounds would be a lot higher. However, we all know that pure models only work when we remove human stupidity so what we&#8217;re left with is the more practical distribution of capitalism.</p>
<p><a href="http://xangelo.ca/wp-content/uploads/2013/03/Double-Bell-Curve.jpg"><img src="http://xangelo.ca/wp-content/uploads/2013/03/Double-Bell-Curve-300x115.jpg" alt="Double Bell Curve" width="300" height="115" class="alignnone size-medium wp-image-50" /></a></p>
<p>Ahh the double bell curve.</p>
<p>I feel that as soon as you add humans to the situation, capitalism looks more the double bell curve &#8211; sure the bounds are higher, but there is no middle ground. This is exactly what we are seeing today with people talking about the disappearance of the &#8220;middle class&#8221;, this is what they mean. They&#8217;re talking about this distribution specifically. We see more people who would be considered &#8220;well off&#8221;, and more that would be considered &#8220;poor&#8221;. There&#8217;s more to it than just this of course (to really research this phenomenon we&#8217;d have to look at economic changes, lifestyle changes and behavioral changes), but the end goal is that practical capitalism forces the distribution noticed above.</p>
<p>I think I&#8217;ve managed to convey a brief understanding of my view on capitalism, lets bring that back around to how it affects knowledge.</p>
<p>Knowledge lockers exist to enforce the divide. Conspirational? I don&#8217;t think so (if you do, drop me an email, I&#8217;d love to hear your thoughts). However, I don&#8217;t blame either side for the creation of the divide. I think it was just a natural progression based on human nature. If we look back through history we can see a clear rising where there are some who have, and some who have not and the tension that creates. And those who have, have more access to knowledge.</p>
<p>Degrees, in their purest form, represent a person who has attained a certain amount of knowledge in a particular topic. In order to receive said knowledge we&#8217;ve engineered a system where you need to be on the right side of our wealth distribution curve. We&#8217;ve turned learning into a business &#8211; and <a href="http://blog.priceonomics.com/post/45768546804/diamonds-are-bullshit">this</a> is what happens when a business can manufacture demand and is put in command of the supply.</p>
<p>That&#8217;s why I feel like educational reform, and all the companies that are trying to bring about education innovation are not helping. They&#8217;re not making things better, they&#8217;re simply trying to inject themselves into the profit that these knowledge lockers are bringing in.</p>
<p>What I want to advocate is Educational Revolution, throwing away the standard the idea that we need to turn this current commoditization of knowledge on its head and start giving it back to people. We need to bring back the &#8220;middle&#8221; class, but we can do that, while shifting our bounds upwards.</p>
]]></content:encoded>
			<wfw:commentRss>http://xangelo.ca/2013/03/educational-revolution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
