<?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>chrishowie.com &#187; Web</title>
	<atom:link href="http://www.chrishowie.com/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chrishowie.com</link>
	<description>The best laid plans are in my other pants</description>
	<lastBuildDate>Tue, 15 Nov 2011 20:20:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>VPS.NET experiences</title>
		<link>http://www.chrishowie.com/2011/11/15/vps-net-experiences/</link>
		<comments>http://www.chrishowie.com/2011/11/15/vps-net-experiences/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 19:54:32 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.chrishowie.com/?p=492</guid>
		<description><![CDATA[I&#8217;ve been using VPS.NET as my hosting provider for two years now (since October 2009). Here&#8217;s my experience, the good and the bad. The building block of the VPS offering is a node: a discrete unit of CPU time, RAM, storage, and bandwidth. These nodes can be deployed as separate servers, or combined together to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://bit.ly/-vps-net">VPS.NET</a> as my hosting provider for two years now (since October 2009).  Here&#8217;s my experience, the good and the bad.</p>
<p>The building block of the VPS offering is a node: a discrete unit of CPU time, RAM, storage, and bandwidth.  These nodes can be deployed as separate servers, or combined together to create a more powerful server.  Servers can be upgraded or downgraded by attaching and detaching nodes from them.  The CPU/bandwidth changes can be applied without rebooting, but to apply RAM and storage changes, the VPS needs to be rebooted so that the RAM reassignment can happen and so the VPS root volume can be rebuilt.  You can bill nodes per month or per day.  The daily option is more expensive, but allows you to throw an extra node or two at a server that&#8217;s being slashdotted until the traffic subsides &#8212; much cheaper in the long haul then monthly nodes.  Daily nodes are also a good choice for a throwaway server you&#8217;re going to test something on and then scrap.  The math suggests that if you&#8217;re going to be using the server for longer than two or three weeks, monthly nodes are a better deal.</p>
<p>To further sweeten the deal, nodes are portable across any of their data centers.  While you can&#8217;t easily migrate deployed VPSes, you can destroy a server in one data center and create a new one in another using the same node.  I look forward to the day when we&#8217;ll be able to live-migrate running VPSes across the country.  Hopefully someone at VPS.NET is working on that&#8230;</p>
<p>Initially I had one node and this blog was about the only thing running on the server.  Since then, I&#8217;ve expanded the services I host to my personal email server (hosting a few domains for friends too), a Git-based personal software forge, some services for Wikimedia, and a few odds and ends.  While not a feature unique to VPS.NET, having root on your own server is really nice.  Need some software?  Install it.  Want to tweak the firewall?  Go ahead.  I&#8217;m a hacker, so it&#8217;s nice to be able to use my server to just try stuff out and see what works.</p>
<p>Each VPS has CPU and network usage graphs so you can pinpoint busy times and optimize accordingly.  There&#8217;s also a console for each VPS that connects directly to the offline OS terminal, allowing you to recover from a botched network or ssh config without involving support.  While I&#8217;d like to claim that I&#8217;ve never had to make use of this feature, that would be a lie.  I don&#8217;t often need it, but it&#8217;s there when I do.</p>
<p>Uptime has been pretty good all-around.  I&#8217;ve had a few outages here and there: a SAN failure that the staff were not properly prepared for, causing a few hours of downtime; a bootloader issue with Debian caused by upgrading to squeeze (arguably not VPS.NET&#8217;s fault, as Debian decided to change the boot volume path); and most recently, volume corruption caused by upgrading my node, which the support staff remedied within minutes, but ideally should have never happened.  (This makes me a bit reluctant to upgrade again without someone over there babysitting the box to make sure it boots up correctly.)  However, these occurrences were not frequent.  That&#8217;s three distinct issues I can recall since late 2009, two if you attribute the bootloader problem to Debian.  This isn&#8217;t 100% uptime, but it&#8217;s pretty darn close to it, and support is usually quick to respond when problems happen.</p>
<p>I resell a few nodes to some friends and former business partners, and they&#8217;ve had very little issues getting started.  It takes about 10 minutes to go from purchasing a node to having a running server.  When a friend wants another server, I can deliver them their login credentials to a running server within about 15 minutes.  That&#8217;s pretty cool.</p>
<p>There are a few network-level filtering things one should be aware of.  VPS.NET monitors outgoing SMTP (port 25) connections and applies their own spam filtering, rejecting mail if it&#8217;s too spammy.  Some people might like this since it can protect them from being listed on a spam blacklist if their server gets compromised.  Since I run my own mail server and do my own filtering, I wasn&#8217;t pleased when this was deployed, especially since it was done so without any communication on their part.  Once I figured out what was going on, I was able to opt-out of this filtering by filing a support ticket.  I would have preferred more transparency about this change.  Finally, as with most hosts, IRC ports are filtered bidirectionally.  As I was wanting to use my VPS to run a service that collects data from Wikimedia&#8217;s real-time change notification IRC server (essentially just a data stream delivered via IRC) this was a bit of a bummer.  They will not budge on this policy, which is disappointing.</p>
<p>Overall, I am a happy customer.  Things don&#8217;t go wrong often, and when they do support is quick to respond.  I&#8217;d suggest trying a daily node or two if you want to see if they are a good fit for your hosting needs; they&#8217;re only a dollar per day.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrishowie.com/2011/11/15/vps-net-experiences/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gazebo: An AJAX interface to FICS</title>
		<link>http://www.chrishowie.com/2009/03/23/gazebo-an-ajax-interface-to-fics/</link>
		<comments>http://www.chrishowie.com/2009/03/23/gazebo-an-ajax-interface-to-fics/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 06:55:41 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Chess]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.chrishowie.com/?p=224</guid>
		<description><![CDATA[I&#8217;ve been getting back into chess recently, and my favorite online community is the Free Internet Chess Server (FICS). There are a wealth of free and open interfaces available for download, but they all have one thing in common: you have to download them. At my workplace this is a no-no, but over my lunch [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been getting back into chess recently, and my favorite online community is the <a href="http://freechess.org">Free Internet Chess Server</a> (FICS).  There are a wealth of free and open interfaces available for download, but they all have one thing in common: you have to download them.  At my workplace this is a no-no, but over my lunch break it would be nice to get in a few games.  If I forget my laptop then I have no way to play.</p>
<p>Enter Gazebo.  I started this project last Friday night, so it&#8217;s only been about two days.  Still, what I have right now is rather impressive for that amount of time.  At face value, the current version is not very representative of the time that&#8217;s gone into the project so far, and for a very good reason.</p>
<p>The HTTP protocol used by web servers was not engineered around the idea that you&#8217;d establish a long-lasting connection with the server.  It&#8217;s better suited for quick request-response cycles.  Because of this, the PHP web service has no good way to maintain a connection to FICS.</p>
<p>The solution I came up with for this problem is simple, yet very involved.  A daemon script (yes, written in PHP&#8230;) listens on a UNIX socket for connections from the PHP web service script.  If a new FICS session is requested, it creates a new session and returns some authentication parameters to the web service.  On every request to the service, another connection to the daemon is made over the UNIX socket, the session attached to with the authentication parameters, and some action taken, like &#8220;write this to the network socket&#8221; or &#8220;tell me when you get new data from the network socket&#8221; or even &#8220;close the network socket and destroy the session.&#8221;  The daemon essentially acts as a super-proxy that persists the network sockets and enables access to all of them from one UNIX socket.</p>
<p>Yes, it&#8217;s kinda ugly.  But it also works incredibly well.  There is still some tuning to be done, but behold the awesomeness of what is essentially in-browser, color-coded telnet:</p>
<div style="text-align:center;"><a href="http://picasaweb.google.com/cdhowie/MiscellaneousProjects?feat=embedwebsite#5316269708328510946"><img src="http://lh5.ggpht.com/_1U-UwfPfZ6A/SccvIgcXJeI/AAAAAAAAAbs/kpbN3-A6yOg/s400/gazebo.png" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.chrishowie.com/2009/03/23/gazebo-an-ajax-interface-to-fics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teh Rainbow Conspiraseez</title>
		<link>http://www.chrishowie.com/2008/09/08/teh-rainbow-conspiraseez/</link>
		<comments>http://www.chrishowie.com/2008/09/08/teh-rainbow-conspiraseez/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 18:47:26 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.chrishowie.com/?p=120</guid>
		<description><![CDATA[Saw this video in my reading list today. I don&#8217;t know what they put in the water either, but I bet Obama can fix it with his amazing super change-bad-stuff powers!]]></description>
			<content:encoded><![CDATA[<p>Saw <a href="http://www.youtube.com/watch?v=w3qFdbUEq5s">this video</a> in my reading list today.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/w3qFdbUEq5s&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/w3qFdbUEq5s&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>I don&#8217;t know what they put in the water either, but I bet Obama can fix it with his amazing super change-bad-stuff powers!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrishowie.com/2008/09/08/teh-rainbow-conspiraseez/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The new Delicious!</title>
		<link>http://www.chrishowie.com/2008/08/01/the-new-delicious/</link>
		<comments>http://www.chrishowie.com/2008/08/01/the-new-delicious/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 15:20:35 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.chrishowie.com/?p=100</guid>
		<description><![CDATA[The new version of del.icio.us (complete with a domain name change) was released yesterdayish and looks a lot nicer. Oh, but wait. About two out of three page loads: &#8220;Sorry, you&#8217;ve been temporarily blocked for accessing Delicious too rapidly.&#8221; Did Delicious hire the Twitter engineers, or what?]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://delicious.com/help/whatsnew">new version of del.icio.us</a> (complete with a domain name change) was released yesterdayish and looks a lot nicer.  Oh, but wait.  About two out of three page loads: &#8220;Sorry, you&#8217;ve been temporarily blocked for accessing Delicious too rapidly.&#8221;</p>
<p>Did Delicious hire the Twitter engineers, or what?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrishowie.com/2008/08/01/the-new-delicious/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Three-column CSS layout</title>
		<link>http://www.chrishowie.com/2008/07/07/three-column-css-layout/</link>
		<comments>http://www.chrishowie.com/2008/07/07/three-column-css-layout/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 14:40:21 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.chrishowie.com/?p=88</guid>
		<description><![CDATA[There are many established CSS layouts for doing a three-column website. They seem to work pretty well. Perhaps the most popular is the Faux Columns technique. At work we are working on an internal site that requires three columns (or to be more precise, up to two sidebars). I have never been completely satisfied with [...]]]></description>
			<content:encoded><![CDATA[<p>There are many established CSS layouts for doing a three-column website.  They seem to work pretty well.  Perhaps the most popular is the <a href="http://www.alistapart.com/articles/fauxcolumns/">Faux Columns</a> technique.</p>
<p>At work we are working on an internal site that requires three columns (or to be more precise, up to two sidebars).  I have never been completely satisfied with the many existing three-column hacks so I decided to roll my own after laying out some requirements:</p>
<ul>
<li>The unstyled page should look decent (primarily for mobile browsers).  This includes having the sidebars come <i>after</i> the main content in the HTML source.</li>
<li>The sidebar backgrounds should extend down to the header, without using any background image tricks.</li>
<li>IE7 and FF2+ must render the layout correctly.  Minor defects are ok in other browsers.</li>
</ul>
<p>The sidebar backgrounds have always been the tricky part, but I have a non-image solution for IE7 and FF2+.  It also works in Safari.</p>
<p>IE6 does not extend the background colors to the footer, but it does correctly position the sidebars at least.  After a bit of hackery anyway.  Apparently IE6 doesn&#8217;t correctly compute the correct X position for absolutely-positioned elements.  <code>left:0px</code> was making the left sidebar overlap with the content.  I replaced this with <code>float:left</code> and IE6 positioned it like the other browsers, and thankfully the other browsers continued to position it in the same place.  So as a bonus, no IE conditional comments were required.</p>
<p>Anyway, <a href="http://www.chrishowie.com/files/three-columns-1.html">here it is</a>.  I am releasing the CSS and HTML source to the public domain, but if you reuse the code a link to this post would be appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrishowie.com/2008/07/07/three-column-css-layout/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

