<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.0.1" --><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>groogsblog</title>
	<link>http://gregmaclellan.com/blog</link>
	<description>stuff about anything</description>
	<pubDate>Thu, 29 May 2008 07:01:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/groogs" /><feedburner:info uri="groogs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
		<title>SvnMergeGui</title>
		<link>http://gregmaclellan.com/blog/svnmergegui/</link>
		<comments>http://gregmaclellan.com/blog/svnmergegui/#comments</comments>
		<pubDate>Thu, 29 May 2008 07:01:13 +0000</pubDate>
		<dc:creator>groogs</dc:creator>
		
	<category>General</category>
	<category>Computers</category>
	<category>Code</category>
		<guid isPermaLink="false">http://gregmaclellan.com/blog/svnmergegui/</guid>
		<description><![CDATA[<p>I just created a Google Code project for a quick and dirty little app I built, <a href="http://svnmergegui.googlecode.com/">SvnMergeGui</a>. As you may suspect, it&#8217;s a GUI to <a href="http://www.orcaware.com/svn/wiki/Svnmerge.py">SvnMerge</a>.</p>
<p>It uses ClickOnce for the installation (because it was really easy to do from VisualStudio), and is pointed at the svn repository for updates - so although I&#8217;ve never tried it, the theory is that it will have automatic updates built-in. You can download the install files from the project page linked above.</p>
<p><a href="http://svnmergegui.googlecode.com/"><img src="http://svnmergegui.googlecode.com/svn/wiki/mainscreen-small.png" /></a>
</p>
]]></description>
			<content:encoded><![CDATA[<p>I just created a Google Code project for a quick and dirty little app I built, <a href="http://svnmergegui.googlecode.com/">SvnMergeGui</a>. As you may suspect, it&#8217;s a GUI to <a href="http://www.orcaware.com/svn/wiki/Svnmerge.py">SvnMerge</a>.</p>
<p>It uses ClickOnce for the installation (because it was really easy to do from VisualStudio), and is pointed at the svn repository for updates - so although I&#8217;ve never tried it, the theory is that it will have automatic updates built-in. You can download the install files from the project page linked above.</p>
<p><a href="http://svnmergegui.googlecode.com/"><img src="http://svnmergegui.googlecode.com/svn/wiki/mainscreen-small.png" /></a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://gregmaclellan.com/blog/svnmergegui/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>UI First Design</title>
		<link>http://gregmaclellan.com/blog/ui-first-design/</link>
		<comments>http://gregmaclellan.com/blog/ui-first-design/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 05:24:51 +0000</pubDate>
		<dc:creator>groogs</dc:creator>
		
	<category>Computers</category>
	<category>Code</category>
		<guid isPermaLink="false">http://gregmaclellan.com/blog/ui-first-design/</guid>
		<description><![CDATA[<p>Often when I am writing software I design the user interface first, or at least separately, from the rest of the code. Jeff Atwood describes <a href="http://www.codinghorror.com/blog/archives/001091.html">UI First software development</a> on his blog:</p>
<blockquote><p>Of course, UI is hard, far harder than coding for developers. It&#8217;s tempting to skip the tough part and do what comes naturally &#8212; start banging away in a code window with no real thought given to how the user will interact with the features you&#8217;re building.</p>
<p>Remember, to the end user, the interface is the application. Doesn&#8217;t it make sense to think about that before firing up the compiler? </p></blockquote>
<p>I found this particularly interesting and timely in light of the topic being the brunt of a recent <a href="http://thedailywtf.com/Articles/FrontAhead-Design.aspx">April fool&#8217;s day joke</a> on The Daily WTF. When I read that post, I actually found it surprising that programmers would think it satirical to consider designing the user interface first. Of course, the rest of the post gets a bit more crazy but I won&#8217;t touch that part.</p>
<p>Jeff talks more about the benefits of <a href="http://www.alistapart.com/articles/paperprototyping">paper prototyping</a>:</p>
<blockquote><p>Paper prototypes are usually pitched in terms of doing low-fi usability studies, and rightly so. But I find a paper prototype tremendously helpful even if I&#8217;m the only one that ever sees it. I need to create an image in my mind of what I&#8217;m building, as it will be seen by the world, before I start pouring the concrete to make it real.</p></blockquote>
<p>Figuring out the GUI definitely helps you get into the guts of what you need to accomplish in the end, and so it is definitely a helpful task. I think there is another tremendous benefit that to this however: developing a nice user interface.</p>
<p>Okay, so this seems like a less than earth-shattering revelation. Many programmers totally miss the mark on this though. Consider the traditional approach: write a command-line app or hardcode everything in, get the code working, and then write a GUI on top of it to expose to the end user. By doing this, you automatically box yourself into writing a GUI based on your underlying API or database layout. </p>
<p>I think there is a big benefit to taking a step back, totally forgetting about all the underlying API stuff you did, and think up a design for the best possible UI that you can for the problem you&#8217;re trying to solve. Pretend <a href="http://www.joelonsoftware.com/articles/fog0000000012.html">you&#8217;ll be the one using it</a> every day for the rest of your life. </p>
<p>What you come up with may be totally incompatible with your API; that is okay. In fact, it may even point out fundamental flaws with the way you&#8217;ve done things (hence the benefit of the initial paper prototype..). It may work exactly with your code. It may require a translation layer of sorts, to convert what the underlying code is doing to how things are represented in the UI. It may also require compromises in the UI to be able to write a translation layer. All of these are good outcomes though because the end result is you generally have a much nicer UI than you would get if you just stick a pretty face on the raw API. </p>
<p>To use a simple example, consider the <a href="https://www.google.com/accounts/ServiceLogin?service=local&#038;nui=1&#038;continue=http:%2F%2Fmaps.google.ca%2Fmaps%2Fms%3Fie%3DUTF8%26lr%3Dlang_en%26hl%3Den%26msa%3D2&#038;hl=en&#038;gl=ca">Google MyMaps</a> interface. Underneath, the database is storing locations using their latitude and longitude, and assigning a name to them. The ultimate simple interface to this would be: </p>
<p><img id="image82" src="http://gregmaclellan.com/blog/wp-content/ui-first-simple.PNG" alt="Simple &quot;add a point&quot; UI" /></p>
<p>Of course, what Google actually did makes much more sense - even though it involves a whole lot of code that translates mouse clicks on the screen into map pixel offsets, and then those into latitude/longitude:</p>
<p><img id="image83" src="http://gregmaclellan.com/blog/wp-content/ui-first-map.PNG" alt="Good &quot;add a point&quot; UI" /></p>
<p>In a lot of situations, the success of your software can come down to how nice and/or easy to use the GUI is, regardless of how powerful it is underneath (I&#8217;m sure you can think up many examples of this .. perhaps in say, the operating system world). Whether or not you actually design the UI first is inconsequential - ultimately you need to design the UI for the end users, not for the API.</p>
]]></description>
			<content:encoded><![CDATA[<p>Often when I am writing software I design the user interface first, or at least separately, from the rest of the code. Jeff Atwood describes <a href="http://www.codinghorror.com/blog/archives/001091.html">UI First software development</a> on his blog:</p>
<blockquote><p>Of course, UI is hard, far harder than coding for developers. It&#8217;s tempting to skip the tough part and do what comes naturally &#8212; start banging away in a code window with no real thought given to how the user will interact with the features you&#8217;re building.</p>
<p>Remember, to the end user, the interface is the application. Doesn&#8217;t it make sense to think about that before firing up the compiler? </p></blockquote>
<p>I found this particularly interesting and timely in light of the topic being the brunt of a recent <a href="http://thedailywtf.com/Articles/FrontAhead-Design.aspx">April fool&#8217;s day joke</a> on The Daily WTF. When I read that post, I actually found it surprising that programmers would think it satirical to consider designing the user interface first. Of course, the rest of the post gets a bit more crazy but I won&#8217;t touch that part.</p>
<p>Jeff talks more about the benefits of <a href="http://www.alistapart.com/articles/paperprototyping">paper prototyping</a>:</p>
<blockquote><p>Paper prototypes are usually pitched in terms of doing low-fi usability studies, and rightly so. But I find a paper prototype tremendously helpful even if I&#8217;m the only one that ever sees it. I need to create an image in my mind of what I&#8217;m building, as it will be seen by the world, before I start pouring the concrete to make it real.</p></blockquote>
<p>Figuring out the GUI definitely helps you get into the guts of what you need to accomplish in the end, and so it is definitely a helpful task. I think there is another tremendous benefit that to this however: developing a nice user interface.</p>
<p>Okay, so this seems like a less than earth-shattering revelation. Many programmers totally miss the mark on this though. Consider the traditional approach: write a command-line app or hardcode everything in, get the code working, and then write a GUI on top of it to expose to the end user. By doing this, you automatically box yourself into writing a GUI based on your underlying API or database layout. </p>
<p>I think there is a big benefit to taking a step back, totally forgetting about all the underlying API stuff you did, and think up a design for the best possible UI that you can for the problem you&#8217;re trying to solve. Pretend <a href="http://www.joelonsoftware.com/articles/fog0000000012.html">you&#8217;ll be the one using it</a> every day for the rest of your life. </p>
<p>What you come up with may be totally incompatible with your API; that is okay. In fact, it may even point out fundamental flaws with the way you&#8217;ve done things (hence the benefit of the initial paper prototype..). It may work exactly with your code. It may require a translation layer of sorts, to convert what the underlying code is doing to how things are represented in the UI. It may also require compromises in the UI to be able to write a translation layer. All of these are good outcomes though because the end result is you generally have a much nicer UI than you would get if you just stick a pretty face on the raw API. </p>
<p>To use a simple example, consider the <a href="https://www.google.com/accounts/ServiceLogin?service=local&#038;nui=1&#038;continue=http:%2F%2Fmaps.google.ca%2Fmaps%2Fms%3Fie%3DUTF8%26lr%3Dlang_en%26hl%3Den%26msa%3D2&#038;hl=en&#038;gl=ca">Google MyMaps</a> interface. Underneath, the database is storing locations using their latitude and longitude, and assigning a name to them. The ultimate simple interface to this would be: </p>
<p><img id="image82" src="http://gregmaclellan.com/blog/wp-content/ui-first-simple.PNG" alt="Simple &quot;add a point&quot; UI" /></p>
<p>Of course, what Google actually did makes much more sense - even though it involves a whole lot of code that translates mouse clicks on the screen into map pixel offsets, and then those into latitude/longitude:</p>
<p><img id="image83" src="http://gregmaclellan.com/blog/wp-content/ui-first-map.PNG" alt="Good &quot;add a point&quot; UI" /></p>
<p>In a lot of situations, the success of your software can come down to how nice and/or easy to use the GUI is, regardless of how powerful it is underneath (I&#8217;m sure you can think up many examples of this .. perhaps in say, the operating system world). Whether or not you actually design the UI first is inconsequential - ultimately you need to design the UI for the end users, not for the API.</p>
]]></content:encoded>
			<wfw:commentRSS>http://gregmaclellan.com/blog/ui-first-design/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Hacking RFID-enabled credit cards.. For $8</title>
		<link>http://gregmaclellan.com/blog/hacking-rfid-enabled-credit-cards-for-8/</link>
		<comments>http://gregmaclellan.com/blog/hacking-rfid-enabled-credit-cards-for-8/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 18:43:52 +0000</pubDate>
		<dc:creator>groogs</dc:creator>
		
	<category>General</category>
		<guid isPermaLink="false">http://gregmaclellan.com/blog/hacking-rfid-enabled-credit-cards-for-8/</guid>
		<description><![CDATA[<p>I&#8217;ve talked to a few of my friends about the stupidity of the non-contact credit cards (that use RFID) before, but at the time I couldn&#8217;t find any practical examples showing that it was actually possible to steal credit card information just by walking past people. Well, now you can watch it in action:</p>
<p><embed class='castfire_player' id='cf_4a893' name='cf_4a893' width='400' height='400' src='http://p.castfire.com/Xu7m0/video/8913/bbtv_2008-03-18-195242.flv' type='application/x-shockwave-flash' allowFullScreen='true'></embed></p>
<p><a href="http://tv.boingboing.net/2008/03/19/how-to-hack-an-rfide.html">Via BoingBoing</a>
</p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve talked to a few of my friends about the stupidity of the non-contact credit cards (that use RFID) before, but at the time I couldn&#8217;t find any practical examples showing that it was actually possible to steal credit card information just by walking past people. Well, now you can watch it in action:</p>
<p><embed class='castfire_player' id='cf_4a893' name='cf_4a893' width='400' height='400' src='http://p.castfire.com/Xu7m0/video/8913/bbtv_2008-03-18-195242.flv' type='application/x-shockwave-flash' allowFullScreen='true'></embed></p>
<p><a href="http://tv.boingboing.net/2008/03/19/how-to-hack-an-rfide.html">Via BoingBoing</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://gregmaclellan.com/blog/hacking-rfid-enabled-credit-cards-for-8/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Jango</title>
		<link>http://gregmaclellan.com/blog/jango/</link>
		<comments>http://gregmaclellan.com/blog/jango/#comments</comments>
		<pubDate>Thu, 07 Feb 2008 22:46:34 +0000</pubDate>
		<dc:creator>groogs</dc:creator>
		
	<category>General</category>
		<guid isPermaLink="false">http://gregmaclellan.com/blog/jango/</guid>
		<description><![CDATA[<p>So it&#8217;s been a while - almost a year! - since I updated this site, which probably also means no one pays attention anymore, but oh well. I just thought I&#8217;d make a little post about a new service I&#8217;ve been using over the last couple of days called <a href="http://www.jango.com">Jango</a>. It&#8217;s basically personalized radio stations, along the lines of Pandora, but it&#8217;s a bit more social, and (the biggest thing for me) it works in Canada.</p>
<p>Each user can create a number of stations, and for each of them, you can add artists to it, control how much variety it plays, and rate songs as they play.</p>
<p>An interesting feature is you can search for and play songs on demand - but what happens is it shows songs that are currently playing on other user&#8217;s stations, and then tunes you into that station. The song starts at the beginning, but if you continue listening, the next song that plays is determined by the station. In this sense, &#8220;stations&#8221; are more like dynamic playlists - it&#8217;s an interesting concept.<br />
My stations are at: <a href="http://www.jango.com/users/3393756">http://www.jango.com/users/3393756</a>. Enjoy!
</p>
]]></description>
			<content:encoded><![CDATA[<p>So it&#8217;s been a while - almost a year! - since I updated this site, which probably also means no one pays attention anymore, but oh well. I just thought I&#8217;d make a little post about a new service I&#8217;ve been using over the last couple of days called <a href="http://www.jango.com">Jango</a>. It&#8217;s basically personalized radio stations, along the lines of Pandora, but it&#8217;s a bit more social, and (the biggest thing for me) it works in Canada.</p>
<p>Each user can create a number of stations, and for each of them, you can add artists to it, control how much variety it plays, and rate songs as they play.</p>
<p>An interesting feature is you can search for and play songs on demand - but what happens is it shows songs that are currently playing on other user&#8217;s stations, and then tunes you into that station. The song starts at the beginning, but if you continue listening, the next song that plays is determined by the station. In this sense, &#8220;stations&#8221; are more like dynamic playlists - it&#8217;s an interesting concept.<br />
My stations are at: <a href="http://www.jango.com/users/3393756">http://www.jango.com/users/3393756</a>. Enjoy!
</p>
]]></content:encoded>
			<wfw:commentRSS>http://gregmaclellan.com/blog/jango/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Two Days to LNP</title>
		<link>http://gregmaclellan.com/blog/two-days-to-lnp/</link>
		<comments>http://gregmaclellan.com/blog/two-days-to-lnp/#comments</comments>
		<pubDate>Tue, 13 Mar 2007 02:08:38 +0000</pubDate>
		<dc:creator>groogs</dc:creator>
		
	<category>General</category>
	<category>Telephony</category>
	<category>VoIP</category>
		<guid isPermaLink="false">http://gregmaclellan.com/blog/two-days-to-lnp/</guid>
		<description><![CDATA[<p>Well finally <a href="http://www.wirelessnumberportability.ca">wireless number portability</a> is coming to Canada on March 14th. This means you will be able to transfer your wireless number to wireless another carrier, to a landline, or your landline to a wireless carrier. Transfers between wireless carriers should take 2.5 hours, transfers between wireless and landline could take up to two days, and fees for doing a transfer are left up to individual providers. I haven&#8217;t yet found out if transfers from wireless or landline to VoIP carriers will be possible, although I don&#8217;t see why it wouldn&#8217;t be.</p>
<p>On that note, I recently had to switch my home phone number. It&#8217;s not really a big deal since most people call my cell phone anyways, but basically <a href="http://unlimitel.ca">Unlimitel</a> pulled out of operating in Kingston. I am now with <a href="http://les.net">les.net</a> (which has a really nice interface by the way - letting you pick and add DIDs to your account in seconds, see your balance, automatically send you a reminder when your balance is low, etc). I looked into porting my number over, but was told that I would be charged a $150 fee to port - I have to wonder if that would still be the case in a couple of days?
</p>
]]></description>
			<content:encoded><![CDATA[<p>Well finally <a href="http://www.wirelessnumberportability.ca">wireless number portability</a> is coming to Canada on March 14th. This means you will be able to transfer your wireless number to wireless another carrier, to a landline, or your landline to a wireless carrier. Transfers between wireless carriers should take 2.5 hours, transfers between wireless and landline could take up to two days, and fees for doing a transfer are left up to individual providers. I haven&#8217;t yet found out if transfers from wireless or landline to VoIP carriers will be possible, although I don&#8217;t see why it wouldn&#8217;t be.</p>
<p>On that note, I recently had to switch my home phone number. It&#8217;s not really a big deal since most people call my cell phone anyways, but basically <a href="http://unlimitel.ca">Unlimitel</a> pulled out of operating in Kingston. I am now with <a href="http://les.net">les.net</a> (which has a really nice interface by the way - letting you pick and add DIDs to your account in seconds, see your balance, automatically send you a reminder when your balance is low, etc). I looked into porting my number over, but was told that I would be charged a $150 fee to port - I have to wonder if that would still be the case in a couple of days?
</p>
]]></content:encoded>
			<wfw:commentRSS>http://gregmaclellan.com/blog/two-days-to-lnp/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>VoIP, Security systems, and FUD</title>
		<link>http://gregmaclellan.com/blog/voip-security-systems-and-fud/</link>
		<comments>http://gregmaclellan.com/blog/voip-security-systems-and-fud/#comments</comments>
		<pubDate>Thu, 15 Feb 2007 06:31:57 +0000</pubDate>
		<dc:creator>groogs</dc:creator>
		
	<category>Telephony</category>
	<category>Rants</category>
	<category>VoIP</category>
		<guid isPermaLink="false">http://gregmaclellan.com/blog/voip-security-systems-and-fud/</guid>
		<description><![CDATA[<p>I felt compelled to respond to an article NetworkWorld published (which made <a href="http://slashdot.org/article.pl?sid=07/02/14/2344208">Slashdot</a>) that talks about how <a href="http://www.networkworld.com/community/?q=node/11523">VoIP and security systems are incompatible</a> (as in home or business burglar alarms), and is apparently based on an <a href="http://www.cbc.ca/consumer/story/2007/02/09/voip-security.html">article published by CBC</a>. It does raise some valid points, but mostly it is sensational garbage.</p>
<p>First off, as the article correctly points out, VoIP does require power, so if you lose power, then you lose your phone line. This can be dealt with by getting a UPS (battery backup), and in fact, I&#8217;ve seen some providers that build batteries in to their modems/analog telephony adapters (though unfortunately, it&#8217;s not very common). It&#8217;s also true that your broadband connection is probably not as reliable as your PSTN lines - there are simply more things that can go wrong.</p>
<p>However, the article falls apart at this point, and starts arguing about how software changes to the security system could break everything (because on a PSTN they couldn&#8217;t? why are you upgrading your alarm system remotely/autonomously?), and how your TiVo, fax machine and conventional modem won&#8217;t work. I&#8217;m not quite sure what that has to do with security, nor am I sure why you&#8217;re using a conventional modem when you have a broadband internet connection.</p>
<p>The CBC article points out that one user went for a year and a half before noticing his alarm didn&#8217;t work. This is entirely his own fault. If you change your wiring, your service provider, or anything else, it&#8217;s just common sense to test the equipment hooked up to it. Surely if he added a new jack he would have picked up the phone to see if there was a dialtone instead of assuming everything worked. This is above and beyond the fact that most alarm systems suggest you test them at least monthly, ensuring that the sensors and sirens and phone connections are all working.</p>
<hr /><br />
<p style="margin-left: 40px">On a bit of a tangent, I&#8217;d also like to note how ineffective alarm signalling usually is: unconfirmed alarms are basically the lowest priority calls police will go on, so they often will not drive to your house until long after the alarm went off, if they even bother to show up at all. Here, the police charge businesses $60 for the second false alarm, $120 for the next, and so on (I&#8217;m not sure what they do for residences). Not to say that alarm dialing is useless, because the panic buttons should still get someone there pretty fast (it requires a human, as opposed to a motion sensor which can be a malfunction or pet), but if you think that the SWAT team arrives seconds after the alarm goes off with guns drawn, you&#8217;re sadly mistaken.</p>
<p style="margin-left: 40px">The best defence is to have neighbours that will hear your alarm going off (loud outdoor sirens help), notice the kids moving your big screen TV into a black van parked in the driveway, and call the police. Or get a big dog.<br />
<hr /><br />
In my mind though, what these articles are really showing is how far behind the times everything else is. Yes, there are some major issues with VoIP that need to be addressed (911), but the benefits it has (the ability to have multiple phone numbers anywhere in the world, lower cost, multiple simultaneous calls..) are too much to ignore. To begin with, why don&#8217;t security systems call in periodically (weekly or monthly) to basically say &#8220;I&#8217;m alive!&#8221;? If they miss their call in, the security company can call the owner and say it missed its check-in. More sophisticated alarm systems usually have a special loop line, where the monitoring center actually sees immediately that they went offline, and can respond appropriately, this would be just a simpler version of that - although no emergency response would be mounted.Going forward, why are security systems still using phone lines? Why don&#8217;t they just get ethernet connections, and plug right into your broadband connection along with your PC? This would allow far more capabilities, including the constant monitoring mentioned above (but checking in every few seconds), remote access by the home owner, and the ability of the response center to save some money by ditching their banks of modems and PSTN lines in favour of running a few servers. Same thing goes for TiVos and satellite connections. To migrate existing non-ethernet devices, they could actually make another box that has an fxs port (which looks like a normal phone line to the TiVo) like a VoIP adapter, but actually be designed to emulate the head-end, and communicate via regular TCP/IP over the broadband connection back to the satellite/TiVo&#8217;s main office).</p>
<p>Based on the tone and conclusion (&#8221;But hardwired land lines seem to be the most solid answer for now anyway.&#8221;) of the original article, it sounds more like some Slashdot readers speculated - that the phone company is pushing for this drivel to be published because they&#8217;re starting to feel the sting of VoIP on their bottom line. I pay under $10 a month for my home phone service, have all the &#8220;features&#8221; that cost extra on PSTN lines, and can make multiple calls simultaneously if I want to - even a basic line with the telco is $25+, and if I were to get 4 or 5 lines with all the features active, I would be in the hundreds of dollars per month.</p>
<p>It would be great if the phone companies would leverage their existing (more reliable) network to basically run a second VoIP-only internet alongside the existing internet infrastructure, bringing the best of both worlds together - but unfortunately this will never happen because it would be too easy to use other providers, not pay outrageous long distance charges, etc.</p>
]]></description>
			<content:encoded><![CDATA[<p>I felt compelled to respond to an article NetworkWorld published (which made <a href="http://slashdot.org/article.pl?sid=07/02/14/2344208">Slashdot</a>) that talks about how <a href="http://www.networkworld.com/community/?q=node/11523">VoIP and security systems are incompatible</a> (as in home or business burglar alarms), and is apparently based on an <a href="http://www.cbc.ca/consumer/story/2007/02/09/voip-security.html">article published by CBC</a>. It does raise some valid points, but mostly it is sensational garbage.</p>
<p>First off, as the article correctly points out, VoIP does require power, so if you lose power, then you lose your phone line. This can be dealt with by getting a UPS (battery backup), and in fact, I&#8217;ve seen some providers that build batteries in to their modems/analog telephony adapters (though unfortunately, it&#8217;s not very common). It&#8217;s also true that your broadband connection is probably not as reliable as your PSTN lines - there are simply more things that can go wrong.</p>
<p>However, the article falls apart at this point, and starts arguing about how software changes to the security system could break everything (because on a PSTN they couldn&#8217;t? why are you upgrading your alarm system remotely/autonomously?), and how your TiVo, fax machine and conventional modem won&#8217;t work. I&#8217;m not quite sure what that has to do with security, nor am I sure why you&#8217;re using a conventional modem when you have a broadband internet connection.</p>
<p>The CBC article points out that one user went for a year and a half before noticing his alarm didn&#8217;t work. This is entirely his own fault. If you change your wiring, your service provider, or anything else, it&#8217;s just common sense to test the equipment hooked up to it. Surely if he added a new jack he would have picked up the phone to see if there was a dialtone instead of assuming everything worked. This is above and beyond the fact that most alarm systems suggest you test them at least monthly, ensuring that the sensors and sirens and phone connections are all working.</p>
<hr /><br />
<p style="margin-left: 40px">On a bit of a tangent, I&#8217;d also like to note how ineffective alarm signalling usually is: unconfirmed alarms are basically the lowest priority calls police will go on, so they often will not drive to your house until long after the alarm went off, if they even bother to show up at all. Here, the police charge businesses $60 for the second false alarm, $120 for the next, and so on (I&#8217;m not sure what they do for residences). Not to say that alarm dialing is useless, because the panic buttons should still get someone there pretty fast (it requires a human, as opposed to a motion sensor which can be a malfunction or pet), but if you think that the SWAT team arrives seconds after the alarm goes off with guns drawn, you&#8217;re sadly mistaken.</p>
<p style="margin-left: 40px">The best defence is to have neighbours that will hear your alarm going off (loud outdoor sirens help), notice the kids moving your big screen TV into a black van parked in the driveway, and call the police. Or get a big dog.<br />
<hr /><br />
In my mind though, what these articles are really showing is how far behind the times everything else is. Yes, there are some major issues with VoIP that need to be addressed (911), but the benefits it has (the ability to have multiple phone numbers anywhere in the world, lower cost, multiple simultaneous calls..) are too much to ignore. To begin with, why don&#8217;t security systems call in periodically (weekly or monthly) to basically say &#8220;I&#8217;m alive!&#8221;? If they miss their call in, the security company can call the owner and say it missed its check-in. More sophisticated alarm systems usually have a special loop line, where the monitoring center actually sees immediately that they went offline, and can respond appropriately, this would be just a simpler version of that - although no emergency response would be mounted.Going forward, why are security systems still using phone lines? Why don&#8217;t they just get ethernet connections, and plug right into your broadband connection along with your PC? This would allow far more capabilities, including the constant monitoring mentioned above (but checking in every few seconds), remote access by the home owner, and the ability of the response center to save some money by ditching their banks of modems and PSTN lines in favour of running a few servers. Same thing goes for TiVos and satellite connections. To migrate existing non-ethernet devices, they could actually make another box that has an fxs port (which looks like a normal phone line to the TiVo) like a VoIP adapter, but actually be designed to emulate the head-end, and communicate via regular TCP/IP over the broadband connection back to the satellite/TiVo&#8217;s main office).</p>
<p>Based on the tone and conclusion (&#8221;But hardwired land lines seem to be the most solid answer for now anyway.&#8221;) of the original article, it sounds more like some Slashdot readers speculated - that the phone company is pushing for this drivel to be published because they&#8217;re starting to feel the sting of VoIP on their bottom line. I pay under $10 a month for my home phone service, have all the &#8220;features&#8221; that cost extra on PSTN lines, and can make multiple calls simultaneously if I want to - even a basic line with the telco is $25+, and if I were to get 4 or 5 lines with all the features active, I would be in the hundreds of dollars per month.</p>
<p>It would be great if the phone companies would leverage their existing (more reliable) network to basically run a second VoIP-only internet alongside the existing internet infrastructure, bringing the best of both worlds together - but unfortunately this will never happen because it would be too easy to use other providers, not pay outrageous long distance charges, etc.</p>
]]></content:encoded>
			<wfw:commentRSS>http://gregmaclellan.com/blog/voip-security-systems-and-fud/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>PHP mail() logging</title>
		<link>http://gregmaclellan.com/blog/php-mail-logging/</link>
		<comments>http://gregmaclellan.com/blog/php-mail-logging/#comments</comments>
		<pubDate>Wed, 17 Jan 2007 17:33:24 +0000</pubDate>
		<dc:creator>groogs</dc:creator>
		
	<category>General</category>
	<category>Computers</category>
	<category>Code</category>
	<category>PHP</category>
		<guid isPermaLink="false">http://gregmaclellan.com/blog/php-mail-logging/</guid>
		<description><![CDATA[<p>I&#8217;ve posted my <a href="http://gregmaclellan.com/blog/sendmail-wrapper/">php sendmail wrapper</a> before, but I just noticed that <a href="http://ilia.ws/">Ilia Alshanetsky</a> has written a <a href="http://ilia.ws/archives/149-mail-logging-for-PHP.html">php mail logging patch</a> that essentially does the same thing, but from within PHP itself. This is nice because it can log the full path of the file and line where mail() was called, whereas my script can only log as much info as PHP passes to sendmail (which isn&#8217;t very much) and what it can get from the environment. The downside is since it&#8217;s a patch, it requires recompiling - my script can be dropped into any installation (PHP4/5, and maybe even 3) and just requires a simple php.ini change.</p>
<p>I should also point out that if you&#8217;re using this, you should be sure that you don&#8217;t &#8220;whitelist&#8221; localhost in your mail server, or otherwise people can just connect to your SMTP server locally, and send mail without requiring a username or password. If they use SMTP you can&#8217;t see what script or virtual host sent the mail either way, but at least if you require authentication you can see what account is being used if it becomes an issue.
</p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve posted my <a href="http://gregmaclellan.com/blog/sendmail-wrapper/">php sendmail wrapper</a> before, but I just noticed that <a href="http://ilia.ws/">Ilia Alshanetsky</a> has written a <a href="http://ilia.ws/archives/149-mail-logging-for-PHP.html">php mail logging patch</a> that essentially does the same thing, but from within PHP itself. This is nice because it can log the full path of the file and line where mail() was called, whereas my script can only log as much info as PHP passes to sendmail (which isn&#8217;t very much) and what it can get from the environment. The downside is since it&#8217;s a patch, it requires recompiling - my script can be dropped into any installation (PHP4/5, and maybe even 3) and just requires a simple php.ini change.</p>
<p>I should also point out that if you&#8217;re using this, you should be sure that you don&#8217;t &#8220;whitelist&#8221; localhost in your mail server, or otherwise people can just connect to your SMTP server locally, and send mail without requiring a username or password. If they use SMTP you can&#8217;t see what script or virtual host sent the mail either way, but at least if you require authentication you can see what account is being used if it becomes an issue.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://gregmaclellan.com/blog/php-mail-logging/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>freePBX 2.2.0</title>
		<link>http://gregmaclellan.com/blog/75/</link>
		<comments>http://gregmaclellan.com/blog/75/#comments</comments>
		<pubDate>Tue, 09 Jan 2007 07:21:34 +0000</pubDate>
		<dc:creator>groogs</dc:creator>
		
	<category>General</category>
	<category>Computers</category>
	<category>Telephony</category>
		<guid isPermaLink="false">http://gregmaclellan.com/blog/75/</guid>
		<description><![CDATA[<p>I haven&#8217;t posted here in a while, so I just thought I&#8217;d mention something about <a href="http://freepbx.org/">freePBX</a> 2.2.0, which was <a href="http://www.freepbx.org/2007/01/05/freepbx-220-is-here-finally/">just released a couple days ago</a>. For those that don&#8217;t know, freePBX is an open source configuration and web-based interface to Asterisk, which allows you to configure and run a PBX that has the equivalent functionality to commercial PBXs costing several thousands of dollars (or more). I&#8217;ve been involved with the freePBX project since December 2004 (when it was called AMPortal, or AMP for short), and minus a 6 month hiatus in early 2006, I have been contributing to the project ever since.</p>
<p>2.2.0 is a fairly signifigant release, adding a fair chunk of new functionality, fixing lots of bugs (over 200) including some long-standing bugs that have been around since the 1.x series. Among these are some bugs in the call handling that dealt with certain situations where you pass a call from a queue to a ring group, or going to a cell phone, and then forwarded back to another extension, etc, that were sometimes causing voicemail to never pick up, and some other strange behaviour. I was busy rewriting the modules API to make everything a bit more solid, and wrote a fancy new module administration interface. I also ported a nice new design done by <a href="http://www.sfischerdesign.com/">Steven Fischer</a>, which was a much needed upgrade from the basic look that the interface had from the start. I&#8217;ve also written some new modules (announcements, phonebook directory, misc applications, speeddial) and done some work on a half dozen others. Overall, we&#8217;re quite happy with this release and definately suggest that anyone using 2.x upgrades.</p>
<p>Going forward, there&#8217;s a few things I&#8217;d really like to do - write some hooks to use QuickForm, to make writing GUI code a lot simpler; finish my <a href="http://freepbx.org/trac/wiki/TextToSpeech">text-to-speech</a> and <a href="http://freepbx.org/trac/ticket/958">manualconditions</a> modules (which I&#8217;ve started on already); finish the daemon to write config files (instead of having the web server invoke a script); write the framework for a <a href="http://freepbx.org/trac/wiki/UserPortal">user portal</a>; and add a <a href="http://freepbx.org/trac/wiki/VoicemailMenu">menu before going to voicemail</a> to allow callers to do various things besides leave voicemail.</p>
<p>Now, if I just had a clone or two that could my other day-to-day tasks like go to work, I would be set.
</p>
]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t posted here in a while, so I just thought I&#8217;d mention something about <a href="http://freepbx.org/">freePBX</a> 2.2.0, which was <a href="http://www.freepbx.org/2007/01/05/freepbx-220-is-here-finally/">just released a couple days ago</a>. For those that don&#8217;t know, freePBX is an open source configuration and web-based interface to Asterisk, which allows you to configure and run a PBX that has the equivalent functionality to commercial PBXs costing several thousands of dollars (or more). I&#8217;ve been involved with the freePBX project since December 2004 (when it was called AMPortal, or AMP for short), and minus a 6 month hiatus in early 2006, I have been contributing to the project ever since.</p>
<p>2.2.0 is a fairly signifigant release, adding a fair chunk of new functionality, fixing lots of bugs (over 200) including some long-standing bugs that have been around since the 1.x series. Among these are some bugs in the call handling that dealt with certain situations where you pass a call from a queue to a ring group, or going to a cell phone, and then forwarded back to another extension, etc, that were sometimes causing voicemail to never pick up, and some other strange behaviour. I was busy rewriting the modules API to make everything a bit more solid, and wrote a fancy new module administration interface. I also ported a nice new design done by <a href="http://www.sfischerdesign.com/">Steven Fischer</a>, which was a much needed upgrade from the basic look that the interface had from the start. I&#8217;ve also written some new modules (announcements, phonebook directory, misc applications, speeddial) and done some work on a half dozen others. Overall, we&#8217;re quite happy with this release and definately suggest that anyone using 2.x upgrades.</p>
<p>Going forward, there&#8217;s a few things I&#8217;d really like to do - write some hooks to use QuickForm, to make writing GUI code a lot simpler; finish my <a href="http://freepbx.org/trac/wiki/TextToSpeech">text-to-speech</a> and <a href="http://freepbx.org/trac/ticket/958">manualconditions</a> modules (which I&#8217;ve started on already); finish the daemon to write config files (instead of having the web server invoke a script); write the framework for a <a href="http://freepbx.org/trac/wiki/UserPortal">user portal</a>; and add a <a href="http://freepbx.org/trac/wiki/VoicemailMenu">menu before going to voicemail</a> to allow callers to do various things besides leave voicemail.</p>
<p>Now, if I just had a clone or two that could my other day-to-day tasks like go to work, I would be set.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://gregmaclellan.com/blog/75/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Now on sale..</title>
		<link>http://gregmaclellan.com/blog/now-on-sale/</link>
		<comments>http://gregmaclellan.com/blog/now-on-sale/#comments</comments>
		<pubDate>Wed, 29 Nov 2006 03:37:31 +0000</pubDate>
		<dc:creator>groogs</dc:creator>
		
	<category>General</category>
		<guid isPermaLink="false">http://gregmaclellan.com/blog/now-on-sale/</guid>
		<description><![CDATA[<p>I grabbed this picture on my cell phone a couple of weeks ago. I&#8217;m really not quite sure what to make of it..</p>
<p><img alt="breast-cancer-on-sale" id="image73" src="http://gregmaclellan.com/blog/wp-content/29-09-061858-cropped.JPG" />
</p>
]]></description>
			<content:encoded><![CDATA[<p>I grabbed this picture on my cell phone a couple of weeks ago. I&#8217;m really not quite sure what to make of it..</p>
<p><img alt="breast-cancer-on-sale" id="image73" src="http://gregmaclellan.com/blog/wp-content/29-09-061858-cropped.JPG" />
</p>
]]></content:encoded>
			<wfw:commentRSS>http://gregmaclellan.com/blog/now-on-sale/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Great Error Messages</title>
		<link>http://gregmaclellan.com/blog/great-error-messages/</link>
		<comments>http://gregmaclellan.com/blog/great-error-messages/#comments</comments>
		<pubDate>Wed, 20 Sep 2006 17:19:48 +0000</pubDate>
		<dc:creator>groogs</dc:creator>
		
	<category>General</category>
	<category>Asides</category>
		<guid isPermaLink="false">http://gregmaclellan.com/blog/great-error-messages/</guid>
		<description><![CDATA[<p>Here are some <a href="http://thedailywtf.com/forums/thread/90530.aspx">great error messages</a> that should remind programmers to put some effort into what they display, and always check for those impossible situations that can &#8220;never happen&#8221; &#8212; otherwise you, too, may find yourself lost at the subway station &#8220;Integer divide by 0&#8243;.
</p>
]]></description>
			<content:encoded><![CDATA[<p>Here are some <a href="http://thedailywtf.com/forums/thread/90530.aspx">great error messages</a> that should remind programmers to put some effort into what they display, and always check for those impossible situations that can &#8220;never happen&#8221; &#8212; otherwise you, too, may find yourself lost at the subway station &#8220;Integer divide by 0&#8243;.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://gregmaclellan.com/blog/great-error-messages/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>

