<?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>nick@kavassalis.com&#039;s blog</title>
	<atom:link href="http://kavassalis.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://kavassalis.com</link>
	<description>My rantings about code, carriers, cars, and cameras</description>
	<lastBuildDate>Sun, 27 Jun 2010 18:43:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Of Nick and the G20 Protests</title>
		<link>http://kavassalis.com/2010/06/of-nick-and-the-g20-protests/</link>
		<comments>http://kavassalis.com/2010/06/of-nick-and-the-g20-protests/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 12:06:48 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[g20]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[protestors]]></category>
		<category><![CDATA[rage]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[riots]]></category>
		<category><![CDATA[toronto]]></category>
		<category><![CDATA[vandalism]]></category>

		<guid isPermaLink="false">http://kavassalis.com/?p=135</guid>
		<description><![CDATA[So my security related opposition to the G20 was proved very valid. Things got much worse down here in the financial and shopping districts of Toronto that I even imagined though&#8230; Early in the afternoon on Saturday June 26th, all of the peaceful protests were in full swing in downtown Toronto. Despite having what I was told [...]]]></description>
			<content:encoded><![CDATA[<p>So my security related opposition to the G20 was proved very valid. Things got much worse down here in the financial and shopping districts of Toronto that I even imagined though&#8230;</p>
<p>Early in the afternoon on Saturday June 26th, all of the peaceful protests were in full swing in downtown Toronto. Despite having what I was told as 10,000+ police officers in the downtown core, a small group of several hundred protesters managed to break away from the marches and began rioting on Yonge St. They destroyed businesses in the name of hurting multi-nationals, Starbucks were a preferred target. Never the less they destroyed and looted many locally-owned stores like the iconic Zanzibar strip club an independent jewler on Yonge. Destruction was wreaked up Yonge from King to College for over an hour before police showed up. Where were the police? The only police I saw were cop cars on fire&#8230; Store after store was vandalized, peoples livelihoods destroyed, all afternoon and into the evening.</p>
<p>To put things in perspective for people: they literally hit every store I frequent on a daily / weekly basis (aside from our grocery store which is a bit east of the riots), and I&#8217;d been to every Starbucks destroyed, and there were many&#8230; Thankfully the Eaton Center was quickly put on lock down to prevent rioting, and for that I am grateful. Apparently anarchists are opposed to people like themselves being employed in the retail and hospitalities industries, because they surely will cause a lot of closures while places pick up the pieces this week&#8230; (Yea, guess what, destroying a Starbucks hurts more than just Starbucks Inc. in Seattle)</p>
<p>It hurts me that people would be chanting &#8216;Our Streets!&#8217; while trashing my city. That riot was a few blocks from my home, on my street, and along my walk to work. There is absolutely no chance these people are downtown Toronto residents, financial district, south of Lakeshore or otherwise. These are not their streets, they have destroyed my neighbourhood. Many people suggests they were bussed in from long distances, specifically Montreal. (Google and Twitter searches on pro-anarchist hash tags have lead me to believe a lot of this anti-G20/anti-capitalism support comes from there as well, not to single them out though&#8230;)</p>
<p>There were more such incidents, specifically one on Queen near Spadina in the evening that involving more torched police cars going unchecked for large periods of time from law enforcement. The area near the fence was completely secure, even over night, but rioting went near unchecked across our downtown core. I am very disappointed in our poor security effort, though it was a near unfathomable task by hosting it in Toronto. <a href="http://kavassalis.com/2010/06/of-nick-and-the-g20/" target="_blank">See my other article on this subject&#8230; </a></p>
<p>The protesters look mostly like white trash. Lots of these so-called &#8220;anarchists&#8221; look predictably like angry older teens and 20-somethings. If they have an agenda to push, they are stupid beyond words; but I strongly believe they are just angry kids wreaking havoc by trashing property. What it says about our society I don&#8217;t know, but it sure is sad. Thankfully many of these protesters and even the so called Black Bloc protesters were photoed, often changing out of their black masks, thanks to journalists doing their part. Publish all the photos, black list these sociopaths.</p>
<p>Aside from the actual protesters, there were huge amounts of onlookers, who I am also disgusted with. Crowds of people supporting the rioters but not causing damage themselves, crowds of people with cameras (the small DRebel-esque SLRs seemed very popular) and cell phone cameras standing around photoing destruction in the city disgust me. Nobody aside from an elderly security guard seemed to try and stop the rioting. Are we that apathetic as a society? I even saw a lot of people smiling at the chaos, even if they were only there taking photos. That too is sociopathic behaviour, and is disgusting. These people should be prosecuted as well.</p>
<p>Violence went on over night, though nothing as organized. Trains, subways and even most surface transit is closed still. Hopefully today will be better than yesterday, but I&#8217;m not that hopeful. I am saddened by the state of society that caused this havoc, and the people too apathetic to do anything but snap photos for Twitter. Now we have massive damage from King to Bloor, pretty much everywhere between Spadina and Jarvis.</p>
<p>Harper government who put the G20 in *downtown Toronto*: Terrible.  Toronto police who focused too much on protecting the fence and not the rioting: Unacceptable. The human beings who would destroy other peoples property in the name of a political agenda? The worst of all. You people do not deserve the civil and human rights you obviously take for granted in this country.</p>
]]></content:encoded>
			<wfw:commentRss>http://kavassalis.com/2010/06/of-nick-and-the-g20-protests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Of Nick and the G20</title>
		<link>http://kavassalis.com/2010/06/of-nick-and-the-g20/</link>
		<comments>http://kavassalis.com/2010/06/of-nick-and-the-g20/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 13:33:22 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[g20]]></category>
		<category><![CDATA[law]]></category>
		<category><![CDATA[police]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[toronto]]></category>

		<guid isPermaLink="false">http://kavassalis.com/?p=126</guid>
		<description><![CDATA[So again I&#8217;ve been slacking on blog posting, but things have been busy. We&#8217;d been working on getting a very large and rather-out-of-our-comfort-zone (tech-wise) campaign for the last few weeks. It&#8217;s definitely been fun and thankfully the craziness had subsided this week. Onto the matter at hand! So the G20 summit has descended into Toronto. [...]]]></description>
			<content:encoded><![CDATA[<p>So again I&#8217;ve been slacking on blog posting, but things have been busy. We&#8217;d been working on getting a very large and rather-out-of-our-comfort-zone (tech-wise) campaign for the last few weeks. It&#8217;s definitely been fun and thankfully the craziness had subsided this week. Onto the matter at hand!</p>
<p><a href="http://kavassalis.com/wp-content/uploads/2010/06/4732568741_d5262b7e6a_b.jpg"><img class="alignright size-medium wp-image-129" title="4732568741_d5262b7e6a_b" src="http://kavassalis.com/wp-content/uploads/2010/06/4732568741_d5262b7e6a_b-300x200.jpg" alt="" width="300" height="200" /></a>So the G20 summit has descended into Toronto. It does not make me happy for several reasons. The city spent the last several weeks erecting giant fences around Front Street West, around York, Bay and Yonge, around the Westin Harbour Castle, and preparing to close all of the Gardiner off ramps in the area, as well as lanes on Lakeshore. Unfortunately we are smack dab in the middle of it.</p>
<p>So the first issue as far as I&#8217;m concerned is the disruption of it all.  Anyone working in that zone, was pretty much let off work unless they were essential. Certainly for many workers especially those working the Front St hospitalities this meant lost wages for 1-3 days. Anyone working in the downtown core, or even commuting through via the TTC or GO was suggested to take the days off, work from home, etc, due to delays, protests, etc. More lost wages surely, and more importantly, massive loss of productivity. So the near $2 billion (I believe) they spent on the summit doesn&#8217;t even scratch the surface of nixing Toronto&#8217;s productivity and tourism for 3 days. Bad enough.</p>
<p>Anyone brave enough to drive into the city may have been met with random full 427 and Gardiner closures as dignitaries came through. I&#8217;m told this was going on even earlier in the week as well since many arrived early. More disruption to massive numbers of people&#8217;s lives, many whom live and work very far from the summit. Mind you, if you already were downtown, the roads were empty as nobody had any way to even get off the highway around here :) I&#8217;d have done some rallying around the once-in-a-lifetime empty downtown core if the police wouldn&#8217;t have shot me. Toronto G20 Supecial Rally Stage-o, fighto!</p>
<p>Why put it<strong> *downtown*</strong> Toronto? Why not put it out by the airport? Easier to get to <strong>*from the airport*</strong> Why not leave it in Huntsville (where the G8 was)? Sorry to the Huntsville and airport&#8217;ians but the disruptions to productivity, wages and lives would have been minimized.</p>
<p><a href="http://kavassalis.com/wp-content/uploads/2010/06/4733211394_8a7978f158_b.jpg"><img class="alignleft size-medium wp-image-128" title="4733211394_8a7978f158_b" src="http://kavassalis.com/wp-content/uploads/2010/06/4733211394_8a7978f158_b-300x200.jpg" alt="" width="300" height="200" /></a>So my second issue with the G20 here was security. I&#8217;m not really sure who the security effort was tailored to stop. Today is the day of the biggest protests, and its estimated to be under 10,000 (unlike Montreal&#8217;s 50,000, I&#8217;m not sure what that says about Montreal), which is almost half the number of police downtown for the G20. Certainly the protestors stand no chance of&#8230; disrupting anything. They are just masochists who dream of getting 15 minutes of fame from a news program. The only risk is that commuters and tourists may get caught in the scuffle, hospitals were ramping up just incase&#8230;</p>
<p>I assume the other thing that the massive security budget was for was to stop potential terrorist attacks. Of course having Obama here (and others) you are immediately running the risk of having a terrorist attack, domestic or international. This bothers me because you&#8217;ve immediately put the people and businesses at risk in the most dense area in Canada! Anyone commuting through Union Station, or even living here where we are, is at risk of some sort of attack. Frankly, if someone had wanted to do something, they could have snuck <em>something</em> or themselves into any of the buildings next to the Convention Center earlier in the week. 151 Front Street W included. Unless I&#8217;m mistaken, police did not sweep datacenters, filled with the property and equipment of tens of thousands of unknown individuals (many of whom are from overseas). Not that I&#8217;m trying to give ideas to the <em>terroristas</em>, but these are people willing to die for what they believe in, they are pretty dedicated and don&#8217;t need tips from a tech blogger. Just as someone who has worked in the area for years, I&#8217;m saying it would be trivial even with the big scary fences and police presence.</p>
<p>So my <em>other</em> problem with security is that our government <a href="http://www.cbc.ca/canada/toronto/story/2010/06/25/g20-new-powers.html" target="_blank">rather silently took away some of our civil liberties</a> during the summit anywhere near the fence to. Too bad on my walk for *coffee* I pass the fence as does anyone who uses Union Station. Better be ready to submit to search and seizure if they don&#8217;t like how you look. Thankfully they did not attempt to take my camera when I visited it, but I was certainly escorted off by 5 officers for taking photos. Scariest bit: <em>The regulation also says that if someone has a dispute with an officer and it goes to court &#8220;the police officer&#8217;s statement under oath is considered conclusive evidence under the act.&#8221; </em>Thank god this is only 3 days&#8230; but seriously Canada, you are regressing! Again, the government is certainly not acting with the will of the people in mind.</p>
<p>So as far as I can tell, security would have been cheaper and easier <strong>*anywhere*</strong> other than downtown Toronto. Lot&#8217;s of nearby tall buildings, tall buildings that have lots of places to hide a person or tool of evil. The risk to the population of downtown is the highest anywhere in Canada because we are the most dense, and the risk to businesses is highest because this is where all the commerce (and telecommunications!) are. What the hell was going through the heads of the Harper government when they chose downtown Toronto?</p>
<p>The choice of downtown Toronto does not benefit anybody. If Canada really had to host the G20 (and that&#8217;s a geopolitical question for people other than myself), why the hell would you host it downtown?  By the aiport, in Huntsville (like the G8 from earlier in the week), ANYWHERE would have been better than here. By putting it here you ensure that you disrupt the most peoples lives, most people&#8217;s livelihoods, and put the most people at risk, by increasing the cost of security dramatically, while lowering the effectiveness of you security.</p>
<p>It&#8217;s early in the morning, I&#8217;ll likely revise the grammar of this post when I&#8217;m more awake, but fuck the Harper Government anyway.</p>
]]></content:encoded>
			<wfw:commentRss>http://kavassalis.com/2010/06/of-nick-and-the-g20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Of Nick and domain spammers</title>
		<link>http://kavassalis.com/2010/05/of-nick-and-domain-spammers/</link>
		<comments>http://kavassalis.com/2010/05/of-nick-and-domain-spammers/#comments</comments>
		<pubDate>Fri, 28 May 2010 13:30:59 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://kavassalis.com/?p=103</guid>
		<description><![CDATA[As far as I&#8217;m concerned, there is nothing worse than those who crawl through domain whois records for the purpose of emailing me. I get a lot of it. Funny thing is, it&#8217;s strictly forbidden in ICANN&#8217;s (the sole registrar accreditation body) rules. ICANN&#8217;s Registrar Accreditation Agreement section 3.3.6.3 states: &#8220;Registrar&#8217;s access agreement shall require the [...]]]></description>
			<content:encoded><![CDATA[<p>As far as I&#8217;m concerned, there is nothing worse than those who crawl through domain whois records for the purpose of emailing me. I get a lot of it. Funny thing is, it&#8217;s strictly forbidden in ICANN&#8217;s (the sole registrar accreditation body) rules. ICANN&#8217;s <a href="http://www.icann.org/en/registrars/ra-agreement-21may09-en.htm#3" target="_blank">Registrar Accreditation Agreement section 3.3.6.3</a> states:</p>
<blockquote><p>&#8220;Registrar&#8217;s access agreement shall require the third party to agree not to use the data to allow, enable, or otherwise support any marketing activities, regardless of the medium used. Such media include but are not limited to e-mail, telephone, facsimile, postal mail, SMS, and wireless alerts.&#8221;</p></blockquote>
<p><a href="http://www.icann.org/en/gnso/whois-tf/report-19feb03.htm#II" target="_blank">In fact this has been on the books since 2003.</a> Yet on a daily basis I receive whois-crawled spam. Now yes, you can definitely whois any domain and readily spam the owner. But these people are not just spamming one or two domains, they&#8217;re spamming thousands, if not tens of thousands at a time. (As with all spam, you&#8217;ve got to fish a lot to catch anything). Access to this requires what ICANN calls &#8216;bulk whois&#8217;, which pretty much any registrar with an API will provide you. However it is up to them to prevent people from using this as a means to spam people. While I realize it is not trivial to track the spam back to the registrar allowing the mass harvest, it&#8217;s not like there is an infinite number of registrars. Tracking down the people providing this information to spammers would not be impossible. Considering ICANN is pretty much useless for everything else (it took them how long to stop turning a blind eye to domain tasting? oh right, 10 years), they could at least enforce this policy, track down offending registrars and remove their accreditation. (I kid, ICANN will never do this, their rules are pretty much toothless, and this article is really just to ridicule spammers who take themselves seriously)</p>
<p>Now, whois-crawled spam is a bit different than your usual spam. No viagra, OEM software or luxury watches. No, whois spammers usual take themselves a lot more seriously, which makes it all the funnier because they&#8217;re just as pathetic as the guy selling Chinese V1ag4ra. Let&#8217;s look at a few of  the types of assholes who take part in this practice. (and some of my favourite examples)</p>
<p><em><strong>Web hosts offering quality web hosting at low low prices:<br />
</strong></em><a href="http://kavassalis.com/wp-content/uploads/2010/05/hosting-spam.jpg" target="_blank"><img class="alignnone size-medium wp-image-105" title="hosting-spam" src="http://kavassalis.com/wp-content/uploads/2010/05/hosting-spam-300x167.jpg" alt="" width="300" height="167" /><br />
</a>(Click to expand)</p>
<p>The idea behind this type of domain spammer is pretty simple. You own a domain name, everyone who owns a domain name has some sort of hosting for it, everyone likes cheaper hosting. Amusingly sales@ and abuse@ evul.net get *tons* of it, which is usually very poorly targeted (and ironic when it goes to abuse@). However, the spam pictured above was actually <em>well targeted</em>, because its offering local large scale hosting, the kind that evul.net might want. However there in lies the problem, why as a web site owner (or a web host like evul.net) would you ever want hosting from a <strong>*spammer*</strong>. It immediately calls into question the ethics, let alone the quality of such a provider. They all end up getting spamcop&#8217;d and in the case of this one, I wrote to the idiots to personally express my disgust, they are locally known and slimy. Hopefully enough spamcop reports will get these wannabe providers upstreams to slap them, as they&#8217;re almost always sent from North America.</p>
<p><em><strong>SEO/marketing experts asking for links:<br />
</strong></em><a href="http://kavassalis.com/wp-content/uploads/2010/05/SEO-spam.jpg" target="_blank"><img class="alignnone size-medium wp-image-104" title="SEO-spam" src="http://kavassalis.com/wp-content/uploads/2010/05/SEO-spam-300x90.jpg" alt="" width="300" height="90" /></a><br />
(Click to expand)</p>
<p>This one gets me. It&#8217;s pretty brainless. We get a ton of these at work for any blog that we have our email address on the whois for. The idea is that if you ask nicely enough for a link (they *always* come from female, likely fake, names) someone will give you that link, and your google pagerank will be increased! In reality you are a spammer. It must work enough of the time that it makes it worth while for these people to do it. I try and spamcop these guys, but it&#8217;s like pissing in the ocean: the email sources and spamvertised sites are almost always in South America, Asia or eastern Europe. (This particular one came from some ISP in Argentina) I have a feeling they are usually fronts for something else, (get a pseudo legit page pageranked up, use it to then push other pages up) as no legit page bulk emails out begging for links.</p>
<p><strong><em>People selling ads/ad network services:<br />
</em></strong><a href="http://kavassalis.com/wp-content/uploads/2010/05/ad-spam.jpg" target="_blank"><img class="alignnone size-medium wp-image-110" title="ad-spam" src="http://kavassalis.com/wp-content/uploads/2010/05/ad-spam-300x84.jpg" alt="" width="300" height="84" /></a><br />
(Click to expand)</p>
<p>I save the best for last. These are the most ironic and we get them from time to time at work. People spam our own sites essentially offering their own advertising services. It&#8217;s even better (ironic), like in the above example, when they are spamming an obvious campaign site, showing there is likely no human intervention in the spam. They&#8217;re just looking for well pageranked sites and spamming the owners. This again begs the question, who actually receives one of these and takes them up on their most reputable (lol) offers. Sadly some people must to make it worth while. Since these are all pseudo legit (wannabe) marketing companies, they&#8217;re almost always in the US, so spamcop for great justice.</p>
<p>We received a good one from a company selling a Twitter trending solution recently, again well targeted against an actual twitter-based campaign site, but it begs the question of how new are these people to the internet. How is it, that in 2010 there are people out there who still believe their business has any legitimacy as soon as they send out unsolicited-bulk email to the same people who have been fighting such email for nearly *20 years*. In short, stop buying services/products you see in spam, have sweet dreams of useless ICANN actually enforcing the bulk-whois-marketing rule instead of ignoring registrars who allow it willy-nilly, and <a href="http://spamcop.net" target="_blank">spamcop</a> everything for great justice.</p>
<p><img class="alignnone size-full wp-image-112" title="SpamCop.net - Welcome registered user" src="http://kavassalis.com/wp-content/uploads/2010/05/SpamCop.net-Welcome-registered-user.jpg" alt="" width="348" height="46" /></p>
<p>And to &#8220;Data Centers Canada Inc.&#8221;, &#8220;Comodus&#8221; and &#8220;Linkstar&#8221;, congrats you are spammers, any hopes you had of every being taken seriously as legit businesses went down the drain when you sent out unsolicited bulk email to domain owners, no matter how well targeted it was.</p>
]]></content:encoded>
			<wfw:commentRss>http://kavassalis.com/2010/05/of-nick-and-domain-spammers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lack of updates, link aggregation</title>
		<link>http://kavassalis.com/2010/05/lack-of-updates-link-aggregation/</link>
		<comments>http://kavassalis.com/2010/05/lack-of-updates-link-aggregation/#comments</comments>
		<pubDate>Wed, 05 May 2010 14:06:19 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://kavassalis.com/?p=81</guid>
		<description><![CDATA[So first off I apologize for a lack of blogging. It always seems to fall to the side when life gets busy. My main priority right now is working on (and eventually) finishing going through Florida pictures, but everything seems to get in the way including taking more pics to add to the queue. One [...]]]></description>
			<content:encoded><![CDATA[<p>So first off I apologize for a lack of blogging. It always seems to fall to the side when life gets busy. My main priority right now is working on (and eventually) finishing going through Florida pictures, but everything seems to get in the way including taking more pics to add to the queue.</p>
<p>One thing I&#8217;ve wanted to do for awhile though is have a way to manage my interesting links. I read a lot of tech and science news in the morning and like to share said articles with family and friends. So I generally share them with Facebook, or Twitter (which in turn *usually* trickles back to Facebook unless their plugin is broken), but neither is really a trust worthy place to put any information you care about. I really like the way <a href="http://justinsomnia.org/" target="_blank">Justin does it</a>, but also wanted to tie a quick push to Twitter (and thus Facebook) in.  So I figured I might as well write a little social bookmarking thing.</p>
<p>The entire hack took about 30 minutes, including the time to register a cheap (i.e. not taken) and very short (3.2) domain name (k4v.ca) for my built in URL shortener as using kavassalis.com?blah seemed a touch long. I have yet to display my links in the blog layout, but I will probably whip up a widget tomorrow morning to appear on the right side of all the pages with the last N links. Anyway the code is pretty ugly and basic but here it is:</p>
<p>The actual link forwarder: (l.php)<br />
<code><br />
if (sizeof($_GET)!=1) { header("Location: http://kavassalis.com/"); }<br />
$code = key($_GET);</code></p>
<p><code> </code></p>
<p><code>$dbUser = "abc";<br />
$dbPass = "xyz";<br />
$dbName = "nick_blog";<br />
$dbHost = "127.0.0.1";</p>
<p>@mysql_connect($dbHost, $dbUser, $dbPass) or header("Location: http://kavassalis.com/");<br />
@mysql_select_db($dbName) or header("Location: http://kavassalis.com/");</p>
<p>$result = mysql_query("SELECT link FROM links where code='$code'");<br />
$rows = mysql_num_rows($result) ;</p>
<p></code></p>
<p><code>if ($rows == 1) {<br />
$link = mysql_result($result,0,"link");<br />
header("Location: $link");<br />
} else { header("Location: http://kavassalis.com/"); }<br />
</code></p>
<p>(The obvious flaw is that it doesn&#8217;t give an error to the user if the database is down, but I didn&#8217;t feel like doing that so&#8230;)</p>
<p>and here is the link creator: (bookmark.php)<br />
<code><br />
function mkCookie()<br />
{<br />
$pool = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';<br />
for ($i = 0; $i &lt; 3; $i++)<br />
{ $result .= $pool{rand(0, 61)}; }<br />
return $result;<br />
}</code></p>
<p><code> </code></p>
<p><code>if (!isset($_GET['link']) || !isset($_GET['blurb'])) {<br />
     *** FORM HTML WOULD APPEAR HERE, THANKS WORDPRESS ***<br />
} else {</p>
<p>$blurb = $_GET['blurb'];<br />
$link = $_GET['link'];</p>
<p>$dbUser = "abc";<br />
$dbPass = "xyz";<br />
$dbName = "nick_blog";<br />
$dbHost = "127.0.0.1";</p>
<p>@mysql_connect($dbHost, $dbUser, $dbPass) or die("Bah, cannot connect to my DB...");<br />
@mysql_select_db($dbName) or die("Bah, cannot select my database...");</p>
<p>// make sure we dont dupe codes, even though the code space is huge (62*62*62)<br />
while (1) {<br />
        $code = mkCookie();<br />
        $result = mysql_query("SELECT id FROM links where code='$code'");<br />
        $rows = mysql_num_rows($result) ;<br />
        if ($rows < 1) break;<br />
}</p>
<p>$result = mysql_query("INSERT INTO links (code,link,blurb) VALUES('$code','$link','$blurb')");<br />
$url = "http://k4v.ca/l?$code";<br />
header("Location: http://twitter.com/home?status=$blurb> $url");<br />
}<br />
?></p>
<p></code></p>
<p>Amusingly the WordPress &lt; code &gt; block really seems to detest HTML, i.e. WordPress renders it even though its inside the block, that just makes no sense&#8230; Too lazy to figure out how to do it for a 4 line form. So yea, thats the code. No URL tracking/stats, but thats not really what I was going after. I just wanted an easy one click way to share URLs everywhere at once, and store them somewhere safe.</p>
<p>Things have been generally busy work wise, home wise. I am going to try and blog more again. Today being May 5th means that Mucho Burrito has $5 12&#8243; burritos and I&#8217;m going to go and see if I can&#8217;t manage to consume two between now and dinner. Toodles!</p>
]]></content:encoded>
			<wfw:commentRss>http://kavassalis.com/2010/05/lack-of-updates-link-aggregation/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Of Nick and Google, again&#8230;</title>
		<link>http://kavassalis.com/2010/03/of-nick-and-google-again/</link>
		<comments>http://kavassalis.com/2010/03/of-nick-and-google-again/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 19:59:09 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://kavassalis.com/?p=77</guid>
		<description><![CDATA[Ugh! I totally forgot something important in my article about Google this morning. Though thats okay because it was a pretty long rant already, however at this point I am posting an abnormal number of times in a single day&#8230; Some Italian high school students uploaded a video of an autistic classmate to Google video. [...]]]></description>
			<content:encoded><![CDATA[<p>Ugh! I totally forgot something important in my <a href="http://kavassalis.com/2010/03/of-nick-and-google/" target="_blank">article about Google this morning</a>. Though thats okay because it was a pretty long rant already, however at this point I am posting an abnormal number of times in a single day&#8230;</p>
<p>Some Italian high school students uploaded a video of an autistic classmate to Google video. Let me start by saying this is terrible and cruel, and I cannot even imagine how cruel bullying must be in a post internet world. Google complied with the Italian law enforcement and handed over the details of the users who uploaded it. This is correct practice. If someone breaks the law, even if its over the internet, they are prosecutable, and content hosts are responsible to comply with law enforcement. I have done this many times and complied with Canadian law enforcement on some very interesting cases.</p>
<p>Apparently though this is not enough in Italy. Four Google Italy employees, including one who had left the company in 2008 were arrested, of which 3 were convicted of violating the videoed boy&#8217;s privacy rights. The courts demand that Google should have vetted the privacy of the content that was uploaded before sharing it with the world. <strong>REALLY?</strong> I mean are they serious? I&#8217;m sure they must realize how many videos are uploaded to Google/Youtube/etc every minute of every day? And to check to make sure EVERYONE in the video has signed a release as to their privacy? Heck its not feasible at a few videos per day, let alone <strong>the 20 hours of video uploaded to Youtube alone every minute of every day</strong>. This would be stupid coming from an armchair politician bitching on an internet forum, let alone the policy makers of an entire country. Seriously this worries me about the sanity of the law makers and future of the country.</p>
<p>It doesn&#8217;t stop at video, it could be pictures uploaded to Facebook, of which <strong>there are over a hundred million PER DAY. </strong>Should Facebook <strong>check EVERY photo to make sure nobodies privacy is being encroached</strong> upon? Get a clue!</p>
<p>My other complaint is why does every local government think they should be able to police the internet? I think Google should just pull its local offices out of Italy and then just let Italy decide if they want to block Google or not. Let all these insane countries play internet nanny for their citizens, maybe they can get a bulk deal on Cisco gear along with China and Australia&#8230; Hey Italy thanks for Ferrari but no thanks for your draconian attempts at internet policy!</p>
<p><a href="http://googleblog.blogspot.com/2010/02/serious-threat-to-web-in-italy.html" target="_blank">Read Google&#8217;s own blog post on the matter&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kavassalis.com/2010/03/of-nick-and-google-again/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Of Nick and DRM&#8230;</title>
		<link>http://kavassalis.com/2010/03/of-nick-and-drm/</link>
		<comments>http://kavassalis.com/2010/03/of-nick-and-drm/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 18:12:43 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[cracking]]></category>
		<category><![CDATA[DRM]]></category>

		<guid isPermaLink="false">http://kavassalis.com/?p=72</guid>
		<description><![CDATA[So I didn&#8217;t think I had an essay in me today, but after reading about how Ubisoft&#8217;s new uncrackable DRM was cracked in a day I just had to rant a bit. A bit of background first. Ubisoft is a game developer who makes games that I largely don&#8217;t care about. Their most recent DRM [...]]]></description>
			<content:encoded><![CDATA[<p>So I didn&#8217;t think I had an essay in me today, but after reading about how Ubisoft&#8217;s new uncrackable DRM was cracked in a day I just had to rant a bit.</p>
<p>A bit of background first. Ubisoft is a game developer who makes games that I largely don&#8217;t care about. Their most recent DRM (Digital Rights Management, previously known as copy-protection) required a constant connection to Ubisoft&#8217;s server farm while playing. If the connection dropped, your game would be paused until it came back. That means if your connection is flakey, you aren&#8217;t going to have a good time; if Ubisoft connection is flakey, you aren&#8217;t going to have a good time; if there is a major internet deroute, you aren&#8217;t going to have a good time. I chose to ignore those who don&#8217;t have a persistent internet connection because this is 2010 and thats just barbaric!<strong> It&#8217;s awful DRM and makes for an awful user experience. </strong></p>
<p>DRM in the PC world is largely anti-user. PC game publishers deliver games with compatibility issues solely due to DRM, and in that sense, DRM is awful. However I have a problem with the crowd that thinks DRM is bad because piracy is good and that software should be free.</p>
<p>More background though. I spent my early years in the pre-internet days trading cracked games on BBS&#8217;, followed by my high school and university years spent in a top-level cracking group releasing video games. This may seem hypocritical to now have a problem with software piracy but let me explain. Back in the day, the cracking scene was a very small group of individuals, at first hundreds, then thousands. They were kids competing to see who could crack a game first. It wasn&#8217;t really about free software, it was a game itself. A mere drop in the bucket compared to the hundreds of millions of people who steal software nowadays. Thats the problem. <strong>Piracy is ubiquitous with software and media amongst the current generation of high school and university students.</strong></p>
<p>A generation of kids have grown up consuming all the software and media they can handle for free. Movie rentals? Why bother, just hit up a torrent site. Borrow a friends CD to see if you like it? Why bother, hit up any number of p2p sources. Need a new distraction from exams? Just download a dozen new games and see if you like any of them. The problem is that people expect everything for free on the internet. Many people argue that these people stealing the software/media wouldn&#8217;t have purchased it anyway. This is partially true, people now consume a lot more media and software than they&#8217;d purchase, but they would have purchased some. The problem is that piracy has become so pervasive in the internet culture, many people aren&#8217;t buying anything. Adults who pirate games will buy the ones they like, but thats our generation. <strong>The younger generation has grown up not buying media, they will continue to buy nothing. </strong>Thats right, I am asserting that this current generation is not pirating games as a form of try-before-buy, they just want free games&#8230;</p>
<p>People get angry that PS3/Xbox360 games are too expensive, they are not. SNES and N64 games reached $90-100+ CAD in the mid 90s. $100 10-15 years ago was a lot more money than it is today, so $70 in 2010 money isn&#8217;t really that bad&#8230; It is suggested that another business model is required. High quality games cost money to develop, a lot of money. More money than could be generated through ad supported software, so that model won&#8217;t work. The open source model has worked for amazing software packages like Linux, Apache and MySQL, and indeed would work for decent games given you could find talented artists, musicians and writers with enough free time; but the bulk of people are going to reach an age where they want to use their free time for something other than another job.</p>
<p>So my argument is that people nowadays just steal too much, and too many people just buy nothing. Maybe another business model is required for software sales, but that model does not exist. We are a capitalist society, most of us earning a living enjoy that, whether we are empathetic or not to those who don&#8217;t. <strong>The real problem is that PC DRM in its current incarnations are not the answer. </strong></p>
<p>DRM on the PS3 is great. People argue that it stops homebrew and personal backups, but these are niche. Homebrew is nice, but there are lots of great platforms to write emulators and run linux on. The greatest of these is known as the PC, you already have one. After all, your PS3 was sold to you as a video game console, not a personal computer. Personal backups is a term heavily abused. Some people have this notion of personal backups that dates back to the time of floppy discs, which did readily wear out. DVDs, don&#8217;t, unless there is something drastically wrong with your hardware. However the majority of people who claim to desire personal backups just are saying they want to pirate games.</p>
<p>In the end I obviously don&#8217;t have a solution. My only point is that both sides demonize the other stupidly. Wide spread piracy is not acceptable, nor is DRM that does nothing but hurt legit consumers. Another sales model for games would be acceptable, but changing the culture that demands everything for free is likely a better solution. Until then, PC gaming will continue to die.</p>
<p>(Sorry for the bold, I just feel ranty)</p>
]]></content:encoded>
			<wfw:commentRss>http://kavassalis.com/2010/03/of-nick-and-drm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Of Nick and Google&#8230;</title>
		<link>http://kavassalis.com/2010/03/of-nick-and-google/</link>
		<comments>http://kavassalis.com/2010/03/of-nick-and-google/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:07:56 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[bmw]]></category>
		<category><![CDATA[Cars]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[phones]]></category>

		<guid isPermaLink="false">http://kavassalis.com/?p=49</guid>
		<description><![CDATA[I don&#8217;t have a really good idea for an essay like blog post, this week has been quite busy and my brain is a bit scattered. I&#8217;ll throw out some short anecdotes and blerbs about Google though. First off, I migrated my personal email over to Google&#8217;s hosted domain service. This is something I had [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t have a really good idea for an essay like blog post, this week has been quite busy and my brain is a bit scattered. I&#8217;ll throw out some short anecdotes and blerbs about Google though.</p>
<p>First off, I migrated my personal email over to Google&#8217;s hosted domain service. This is something I had wanted to do for a long time, but laziness had prevent<img class="alignright size-full wp-image-50" title="mail" src="http://kavassalis.com/wp-content/uploads/2010/03/mail.png" alt="" width="376" height="201" />ed the migration. To be fair I had been forwarding my email through Google for their superior spam filtering prowess for years anyway. The interface for creating and maintaining services in Google Apps is, as expected, very polished. I was mostly impressed with the way Google handles distribution lists, which they call groups. A lot more powerful than our old vpopmail alias. And as anyone who has ever used Google&#8217;s hosted mail will tell you, they have seven MX servers, a touch more reliable than my single qmail install on an ancient webserver. Plus admining mailservers is rubbish work! Just ask anyone who has had the misfortune of doing it professionally&#8230;</p>
<p><a href="http://kavassalis.com/wp-content/uploads/2010/03/kava.png" target="_blank"><img class="alignleft size-medium wp-image-51" title="kava" src="http://kavassalis.com/wp-content/uploads/2010/03/kava-300x242.png" alt="" width="300" height="242" /></a>So one of the things I&#8217;ve enjoyed for years is vanity searching, ego searching, whatever you want to call Googling (previously Altavista&#8217;ing and previously Yahoo&#8217;ing) my own name. Sarah, Tom and I also have a bit of search result rivalry. I generally win the top search result for Kavassalis (though this differs depending on search location). This is mostly due to the fact that Google likes me hoarding and cross linking all the Kavassalis.* domains. It also loves me due to some links from blogs and stuff like flickr and other social networking junk. Amusingly though, Sarah is the top search suggestion, followed by Tom, followed by a conspiracy nut who&#8217;s name is unfortunately often dislexic-ally misspelled as Kavassalis. This by my logic means that Sarah&#8217;s site should come up first, since thats most likely what someone will be looking for. So obviously Google&#8217;s metric is not quite perfect. I am pleased however that (in .ca) kavas is enough to get kavassalis as a suggestion. Ah the joys of having a last name that really does just belong to members of your own family&#8230;<br />
<img class="alignnone size-full wp-image-64" title="kava2" src="http://kavassalis.com/wp-content/uploads/2010/03/kava21.png" alt="" width="512" height="263" /></p>
<p>Now onto the buzziest Google product of late, the Android. I really don&#8217;t like the Android. Well maybe thats a bit harsh. I am disappointed with Android. Let me start by explaining why before the cult of (XYZ phone/operating system/game console) groupies flood my inbox with emails telling me how stupid I am. Lets segway to video games for a second. Console gaming and PC gaming have always had a vast gap in overall experience in a post DOS/Amiga world. Simply put, console games just work. There is no weird artifacting because you a strange video card, there is no slow down because you don&#8217;t have the newest CPU, and there are no random crashes because it doesn&#8217;t like some random driver. Common hardware, common resolutions == better development and user experience.</p>
<p>Back to phones though, Android&#8217;s spec should have included classifications on CPU, GPU power and screen size. Maybe call those early 320 x 480 528mhz devices Android Class1, and these 600 x 854 600mhz devices Android Class2. Device capability fragmentation is going to make the overall Android experience limited, and certainly will not allow it to become a casual gaming and consumer software consumption platform the way the iPhone has. Some phones like the Motorola Droid are absolutely phenomenal. But even if you follow the proper non pixel based UI procedures, you may produce apps that are unreadable or too slow on something like a lesser HTC Dream. (I mean the res gap on some Android phones is the same 2x factor between most netbooks and some higher-end 15&#8243; laptops) For tech savvy users this won&#8217;t be a problem, we&#8217;ll understand why something isn&#8217;t working well or looking right, but we aren&#8217;t the bulk of consumers, we don&#8217;t push a platform to prominence. Remember, where there are consumers there will be good software. Don&#8217;t get me wrong, I don&#8217;t think the Android has bad software, Google&#8217;s first party apps are fantastic in fact, but I&#8217;m not going to see the plethora of high quality third party software without a big user base willing to buy software. Android will become the #1 phone platform, without a doubt, but if users don&#8217;t feel confident that software they buy will work right, they aren&#8217;t going to bring the dollars. Open source projects will always be more prominent on the Android platform than others due to the nature of how the Android project is maintained, but before I am flooded with hate mail from the Slashdot crowd, the majority of open source mobile/desktop apps are just not up to UI snuff with their commercial counter parts. Fact. (GIMP sucks, ok?)</p>
<p>I&#8217;m very interested in seeing how (if) Apple will tackle this problem, and I think it may end up causing some heartache in iPhone land. Already there is a good memory and small CPU bump between the 3G and 3GS, while developers can detect and profile their code for each phone, most don&#8217;t. And frankly doing so is a great deal of added work, plus users really aren&#8217;t going to like a heavily degraded experience either. This means that on most cutting edge apps, there will be tons of bad reviews from 3G and a plethora of iPod touch owners complaining of lag and stutter. Fast forward to the next gen iPhone. I full well assume Apple is going to up the game and release a phone with the same chip as in the iPad, the 1ghz ARM7, Apple a4 or whatever it&#8217;s called. I believe they will have institute requirements/recommended flags in the Appstore, which sucks, but frankly leaving it completely up to developers isn&#8217;t really going to be a very good user experience either. This problem is 10-fold more difficult on the Android since there are TONS of third party phones. I&#8217;m not sure there really is a good solution. The phone market unfortunately won&#8217;t be happy with the same CPU/GPU/screen size in a device for 5-10 years like handheld gaming markets&#8230;</p>
<p>Really I&#8217;m not slagging the Android that much, there are great Android phones, and I&#8217;d certainly love a Motorola Droid as a dev platform, ssh client, email platform if it weren&#8217;t CDMA&#8230; The experience will be frankly no issue for savvy users, but I&#8217;d not buy my mom an Android, but I do plan on buying her an iPhone.</p>
<p>I guess thats all I have to say about Google and Google products for one day. I&#8217;ll close by saying my car shopping <a href="http://kavassalis.com/wp-content/uploads/2010/03/engines.png" target="_blank"><img class="alignright size-medium wp-image-53" title="engines" src="http://kavassalis.com/wp-content/uploads/2010/03/engines-300x38.png" alt="" width="300" height="38" /></a>is weighing on my mind. However a new and stand-out choice in the world of very fast, 50/50 weight distributed, RWD sports vehicles has arisen. 2007 550i are only slightly more expensive than 2007 335Ci due to the magic of disproportional depreciation, packing in more power and WAY more tech and luxury. I&#8217;d definitely be happy with a 550i, nothing says eco and gas friendly like a big v8&#8230; nothing quite sounds like it either!</p>
<p>(Included photo is IEOY winners, illustrating they&#8217;re all either small and economical or wonderful BMW engines :P)</p>
]]></content:encoded>
			<wfw:commentRss>http://kavassalis.com/2010/03/of-nick-and-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Of Nick and hosting geo-diversity&#8230;</title>
		<link>http://kavassalis.com/2010/02/of-nick-and-hosting-geo-diversity/</link>
		<comments>http://kavassalis.com/2010/02/of-nick-and-hosting-geo-diversity/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 15:55:27 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[telecom]]></category>

		<guid isPermaLink="false">http://kavassalis.org/?p=29</guid>
		<description><![CDATA[If you look at the biggest websites and internet applications, you can pretty much divide them into two groups. Those that are geographically diverse and those that aren&#8217;t. It&#8217;s kinda shocking that in 2010, the majority of major internet properties still are located in a single (large) datacenter. Though to be fair there is a [...]]]></description>
			<content:encoded><![CDATA[<p>If you look at the biggest websites and internet applications, you can pretty much divide them into two groups. Those that are geographically diverse and those that aren&#8217;t. It&#8217;s kinda shocking that in 2010, the majority of major internet properties still are located in a single (large) datacenter. Though to be fair there is a good reason for that, geo-diversity has many challenges. Problems like directing traffic to the fastest/closest/cheapest/most available location are pretty easy to solve: most people go with BGP AnyCast, targeted DNS responses, or a combination of both. The real challenge though is making sure your actual served content is coherent among all the locations. It would be terrible for a user to upload a photo, sent the URL to their friends, only for the friends to see nothing or worse, the wrong image.</p>
<p>For static content, this is easy, even RSYNCs will be scalable to push out changes to your content amongst your farm. User uploaded content is quite a bit trickier. Within a single datacenter you can efficiently (though not always affordably) solve this using shared storage, iSCSI or NFS. Then applications pretty much can work as if they&#8217;re on a single server, session management can be tackled by using cookie or host persistence on the load balancers to make sure a user stays on the same server. What about servers in different locations though? NFS and iSCSI will not be terribly effective over transit.</p>
<p>You will have to push content between your locations then. If you are trying to geographically distribute your own application, you would just write functionality in to immediately push any user uploaded content out to other locations as its created.  Google/Youtube are great examples of this. When you hit content they&#8217;ve hosted, it isn&#8217;t even hosted on every server, and they direct you to the closest server that has said content. If that content isn&#8217;t available locally to you yet, or at all, they can stream it over their own fiber backhaul and out your closest Google POP.</p>
<p>But what if you are hosting a variety of 3rd party software. To my knowledge none of the popular blog packages, forum software, etc has any sort of geo-diversity designed into them. You could of course fork them and write your own, but then you end up supporting N different software packages for your N clients, not affordable or reasonable.  Rsync would do this task but unfortunately it is very intensive and doesn&#8217;t scale particularly well because it md5&#8242;s your entire tree constantly to see if things changed. As your content scales, the rsyncs would get slower and slower just seeing if changes occurred, eventually leading to massive delays on syncing out user created content.</p>
<p>In the end, its a cool problem, a problem that not too many people have tackled so far. We came up with our own solution, which I unfortunately probably shouldn&#8217;t disclose. I wrote the basis of the software last month, though it still needs some bug fixes, testing and more modules to be written for it. It is a difficult problem to tackle, but having worked in telecommunications, no facility is bullet proof, no power is bullet proof, no connectivity is bullet proof, no hardware is bullet proof: geo-diversity is a must going forward in this highly demanding world where everyone expects connectivity and content 24/7</p>
]]></content:encoded>
			<wfw:commentRss>http://kavassalis.com/2010/02/of-nick-and-hosting-geo-diversity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Of Nick and UI&#8230;</title>
		<link>http://kavassalis.com/2010/02/of-nick-and-ui/</link>
		<comments>http://kavassalis.com/2010/02/of-nick-and-ui/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 15:50:46 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Federated Media]]></category>
		<category><![CDATA[FM]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://kavassalis.org/?p=21</guid>
		<description><![CDATA[So my true weakness when it comes to end-to-end application development is always the UI. I think like a developer, am happy with terminals and verbose logging, I nitpick positioning and sizing endlessly, and I generally am never too happy with what I generate. Now the beauty of the iPhone SDK is that it uses [...]]]></description>
			<content:encoded><![CDATA[<p>So my true weakness when it comes to end-to-end application development is always the UI. I think like a developer, am happy with terminals and verbose logging, I nitpick positioning and sizing endlessly, and I generally am never too happy with what I generate.</p>
<p>Now the beauty of the iPhone SDK is that it uses XCode&#8217;s interface builder, and Cocoa / CocoaTouch support directly loading polished NIB at runtime.  NIB is of course NextStep Interface Builder, and though they actually use a .xib (XCode Interface Builder) file while you develop them, at runtime and pretty much everywhere else they&#8217;re called NIB files. (Because Cocoa *IS* NextStep)</p>
<p>So back to the topic at hand. I have always liked the way Visual Studio did interface building, as it took the coding out of creating a UI and let it be about what it should be, an art*. XCode offers the same experience but with a bit more of a learning curve. The real challenge though is that on the iPhone, you have a lot to live up to. There are a lot of very attractive apps out there. Creating a tool for sysadmins to receive and handle alerts doesn&#8217;t require the polish and pizzaz of lets say a Twitter client, but it can&#8217;t be ugly or clunky either.</p>
<p><img class="alignleft size-medium wp-image-22" title="navigation-controller-example" src="http://kavassalis.org/wp-content/uploads/2010/02/navigation-controller-example-191x300.jpg" alt="" width="191" height="300" /></p>
<p>So in Cocoa Touch we have the Navigation Controller (UINavigationController, which provides a bar at the top with text a button on the left and right to navigate through views) and the Tab Bar Controller (UITabBarController, which provides a bar across the bottom with any number of iconable tabs that represent different views) Of course you have the freedom to come up with whatever UI you want outside these, however these conform to Apple&#8217;s User Interface Guidelines (a fascinating read, and the iPad guidelines were an even cooler read) and match the look and feel of the iPhone, making it easier for users to navigate. In fact you can even combine the two types and create navigated views within a tab, or a set of tabs within a navigated view. The sky is the limit and its easy to do, which is whats the most fun about XCode and Cocoa Touch.</p>
<p><img class="alignright size-medium wp-image-23" title="tabbar-controller-example" src="http://kavassalis.org/wp-content/uploads/2010/02/tabbar-controller-example-200x300.jpg" alt="" width="200" height="300" /></p>
<p>So I decided to go with the Tab Bar. We are dealing with alert handling here, I know from experience that there are only a finite number of tasks that are required after hours, so we can stuff those as tabs a long the bottom. On Ken&#8217;s advice I added a More&#8230; tab which contains lesser used but still useful utilities like short cuts to compose emails to common distribution lists @FM, a long with access to the two ticketing systems outside of our department.  Throw in a Core Animation page flip between tabs (the code for animation in Cocoa Touch is really quite impressive) and you have something that looks decent (I think) and is fairly functional.  On a slightly side note, I kept the animation to a quarter of a second, that way it looks flashy but doesn&#8217;t slow down work flow, thats important to me. I&#8217;ve likely disabled every animation OS X has to offer on my computers after all..</p>
<p>I&#8217;ll likely write a follow up discussing my experience with some of the other UI widgets at a later time, but I wanna touch briefly on the spinning selector as seen in my Tab Bar screen shot. The iPhone&#8217;s user experience is superior to any other touch phone. (Android, Pre, Storm, I&#8217;m looking at you guys) I was very reluctant to use a touch screen interface because they usually annoy me long after the cool factor wears off. Apple has gone to great lengths to design the user interface of their own apps to work really well with fingers. The spinning selector is a great example of that. On the desktop, we normally select a choice of one from many in a drop down box. This works great, but is a tad annoying on something like an Android phone. The spinning selector is more of a wheel you spin with your finger that has very intuitive acceleration and deceleration such that its very easy to use. Because Apple makes it so easy to deploy these widgets in your own applications, you are very unlikely to see kludgy desktop-esque UI on the iPhone, making the user experience of 3rd party apps all the more familiar and better. That and they theoretically could stop you from publishing apps that don&#8217;t conform to the user interface guidelines, though in practice they pretty much only ban apps for their own dirty anti-competitive purposes&#8230;</p>
<p>*Design is an art, and UI design is at the forefront of that these days. Just look at all Apple products. You may not like their design (lord knows I&#8217;ve stripped OSX so bare its just a tiny bar on the right, no desktop and the Finder process isn&#8217;t running most of the time), but its still intuitive and attractive. In the end Apple is a design company. A PC is just a PC until its in a sleek, durable unibody aluminum case, then its a Mac. BSD is just a server operating system until its got an attractive, intuitive user interface, then its OS X.</p>
]]></content:encoded>
			<wfw:commentRss>http://kavassalis.com/2010/02/of-nick-and-ui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Of Nick and the APNS&#8230;</title>
		<link>http://kavassalis.com/2010/02/of-nick-and-the-apns/</link>
		<comments>http://kavassalis.com/2010/02/of-nick-and-the-apns/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 16:44:45 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[APNS]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Federated Media]]></category>
		<category><![CDATA[FM]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://kavassalis.org/?p=17</guid>
		<description><![CDATA[So on Sunday I got the inspiration for my second iPhone app, fmNotify. (the first was a simple multi-tab webkit integration for a friends website that made use of some clever code to hide the tab and status bars when rotated as well as the shake gesture to go back on the current page) fmNotify [...]]]></description>
			<content:encoded><![CDATA[<p>So on Sunday I got the inspiration for my second iPhone app, fmNotify. (the first was a simple multi-tab webkit integration for a friends website that made use of some clever code to hide the tab and status bars when rotated as well as the shake gesture to go back on the current page)</p>
<p>fmNotify will be (ok I&#8217;m being a tad presumptuous but I have faith :&gt;) our internal notification service for emergency alerts. It utilizes Apple&#8217;s fantastic push notification service (APNS, APN or APS depending where you read it) and some clever UI to streamline alert handling. Basically alerts and phone registration is handled by PHP code running on a server(s, easily redundant using mySQL replication) inside our network, stored in an SQL database. This allows for  pretty extensible triggering of alerts, everything from Nagios, email via procmail, and our own internally developed software.</p>
<p>The real thing I wanted to talk about is how impressed I am in the APNS bits of the SDK. iPhone SDK 3.x is really where the iPhone hit its stride, and the push SDK is a big part of that. (Prior to 3.x it was a pretty disappointing device IMO and more than a fancy toy for teenagers than anything workable.) OS 3.x makes the device a powerful device for any industry. (Though MobileMail.app is still so woefully inferior to the Blackberry)</p>
<p>BUT I DIGRESS. Working with APNS is a coders dream. When your app is setup with Apple for push support, you get a cert that can be used to connect to the APNS cloud with. APNS requires a connection via TLS or SSL, which of course can be done easily with libopenssl in C or in this case PHP. From there all you need to do is send json blobs that contain: the device id of the handset, the alert text you want to display, the badge number to show on the app (if desired) and the sound to play (if desired). Beyond that you can include whatever other custom data you want, within 256bytes. This may seem like a rather limited amount of data to work with, but its really just to trigger your app to connect to you own servers, which can then pull down whatever data you want.</p>
<p>So while your app isn&#8217;t running and a notification comes in, a popup will occur with vibration/sound if desired, and a link to automatically launch your app.  While it is running an event is triggered within the app delegate and you can handle it however you want. Pretty awesome. Throw that all together with a nice GUI and you have a really streamlined alert / alert handling work flow!</p>
<p>So the app itself is pretty simple. Just a basic UI for seeing alerts / alert history, and then panels for dealing with common alerts.  The backend is basic PHP / mySQL / simple JSON / openssl integration to handle registration (including the device id and desired alert sound) for each phone, and directing of alerts to whoever is oncall. I really look forward to future projects using APNS, considering this took less than a day to throw together, the sky is the limit!</p>
]]></content:encoded>
			<wfw:commentRss>http://kavassalis.com/2010/02/of-nick-and-the-apns/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://kavassalis.com/2010/02/hello-world/</link>
		<comments>http://kavassalis.com/2010/02/hello-world/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 19:43:38 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://kavassalis.com/dotorg/?p=1</guid>
		<description><![CDATA[So I&#8217;ve decided to catalog some of my development projects / experiments as well as make my general rants bigger than the SMS sized text field twitter allows. So for the 800th time, I&#8217;m launching a blog. So far I think I&#8217;m going to approve comments by hand, but once someone has an approved comment [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve decided to catalog some of my development projects / experiments as well as make my general rants bigger than the SMS sized text field twitter allows. So for the 800th time, I&#8217;m launching a blog.</p>
<p>So far I think I&#8217;m going to approve comments by hand, but once someone has an approved comment they can post instantly. That shouldn&#8217;t be too much effort, but we&#8217;ll see how it goes. I&#8217;m feeling too lazy (it is Sunday morning after all) to dig up some captcha plugin and install it. WordPress is always very enjoyable to install, its quick and painless. The photo I threw uptop was taken last Fall in Mississauga&#8217;s Port Credit. <a href="http://www.flickr.com/photos/nkavassalis/3757915679/in/set-72157620959858174/" target="_blank">Here it is in its entirety.</a> I chose it due to fairly similar colors to the theme I chose. I will likely change it in the near future.</p>
<p>(I did however throw up a Twitter plugin to syndicate all my rants to my various social media outlets. I apologize for any perceived spam in advance!)</p>
<p>Don&#8217;t have too much to say other than that, it is Sunday morning after all. Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://kavassalis.com/2010/02/hello-world/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
