<?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>Ready Fire Aim &#187; Projects</title>
	<atom:link href="http://www.billda.com/category/projects/feed" rel="self" type="application/rss+xml" />
	<link>http://www.billda.com</link>
	<description>Ramblings on Entrepreneurship, Technology, and Web Design</description>
	<lastBuildDate>Tue, 01 Jun 2010 21:46:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>New: A Mobile Version of 37Signals&#8217; Highrise CRM</title>
		<link>http://www.billda.com/new-a-mobile-version-of-37signals-highrise-crm</link>
		<comments>http://www.billda.com/new-a-mobile-version-of-37signals-highrise-crm#comments</comments>
		<pubDate>Fri, 22 Feb 2008 04:36:28 +0000</pubDate>
		<dc:creator>Bill D'Alessandro</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.billda.com/new-a-mobile-version-of-37signals-highrise-crm</guid>
		<description><![CDATA[WhoBook MOBI is a version of Highrise optimized for mobile phones. If you haven&#8217;t heard of Highrise, 37Signals&#8217; dead simple CRM web app, you should check it out. Basically it&#8217;s an online contacts database, with support for notes about contacts (&#8220;Left him a voicemail Tuesday&#8221;), tasks (&#8220;Follow up with John&#8221;), and cases (for organizing multiple [...]]]></description>
			<content:encoded><![CDATA[<p><img class="post-image-right" src='http://www.billda.com/wp-blog/wp-content/uploads/2008/02/logo.thumbnail.gif' /><a href="http://whobook.mobi">WhoBook MOBI</a> is a version of Highrise optimized for mobile phones. If you haven&#8217;t heard of <a href="http://highrisehq.com">Highrise</a>, 37Signals&#8217; dead simple CRM web app, you should check it out. Basically it&#8217;s an online contacts database, with support for notes about contacts (&#8220;Left him a voicemail Tuesday&#8221;), tasks (&#8220;Follow up with John&#8221;), and cases (for organizing multiple people on a project). There are tons of uses for Highrise &#8211; it&#8217;s used by many small business to keep track of customer relationships, and even by one local pastor to keep track of interactions with his congregation. I used Highrise extensively in my job search &#8211; as I interviewed at multiple companies, in multiple rounds, all those faces started to blend together. I had amassed a huge stack of business cards with short handwritten notes on the back. I needed a way to organize it all.</p>
<p>Enter Highrise. I spent two hours one day typing all those contacts into Highrise. Now I can search by name, by company, or even by industry (I&#8217;ve tagged all my contacts with the industry they work in). Highrise also keeps track of every email I&#8217;ve ever exchanged with that contact, as well as any notes that I&#8217;ve added to help me remember who they are (&#8220;John loves the Giants&#8221; or &#8220;Steve has red hair and looks like Ron Howard&#8221;). In fact, my story and use case has been <a href="http://37signals.blogs.com/products/2008/03/college-senior.html">featured on the 37Signals Product Blog</a>.</p>
<p>I became so dependent on having my Highrise contacts that I soon realized the biggest shortcoming of the application: no mobile version. Luckily, Highrise has a <a href="http://developer.37signals.com/highrise/">robust API</a>, so I was able to program exactly the <a href="http://whobook.mobi">mobile version that I needed to get my Highrise contacts onto my cell phone</a>.</p>
<p>The result is <a href="http://whobook.mobi">WhoBook MOBI</a>. It&#8217;s built specifically for Blackberry and older mobile phones with WAP-based browsers, and provides read-only access to your Highrise contacts. Simply search for their name, and you&#8217;ll get back their contact information (with one-click dialing on the phone numbers) as well as any notes you&#8217;ve written about them. In addition to the mobile web interface, <a href="http://whobook.mobi">WhoBook MOBI</a> also has SMS support &#8211; send a text to 41411 in the form &#8220;WHOBOOK john&#8221; and you&#8217;ll receive a text back with John&#8217;s phone number(s).</p>
<p>WhoBook MOBI is free, unlike some other websites out there that do similar things. I&#8217;m also pretty sure that it&#8217;s the only way to access your Highrise contacts via SMS that exists. If you find it useful or have any feature requests, I&#8217;d really appreciate any feedback at <a href="mailto:feedback@whobook.mobi">feedback@whobook.mobi</a> or in the comments here.</p>
<p><em><strong>UPDATE 4/11/2010:</strong> Since I wrote this post, 37Signals has released an <a href="http://highrisehq.com/iphone">iPhone app for Highrise</a>. The official app works great for those with iPhones, but if you&#8217;re in the 90% of mobile phone users who don&#8217;t own an iPhone, there is still no official Highrise mobile app for you. That&#8217;s where WhoBook MOBI comes in &#8211; it&#8217;s entirely text-based and optimized for the basic WAP browsing available on old school Blackberries and &#8220;regular&#8221; mobile phones. I&#8217;ve just done a scrub of the codebase and added a few new features, so <a href="http://www.whobook.mobi">check out WhoBook MOBI</a> if you&#8217;re not a member of the iPhone crowd and want to access your Highrise contacts on the go.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.billda.com/new-a-mobile-version-of-37signals-highrise-crm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP: Remote Kill Switch &#8211; Make Sure You Get Paid</title>
		<link>http://www.billda.com/php-remote-kill-switch</link>
		<comments>http://www.billda.com/php-remote-kill-switch#comments</comments>
		<pubDate>Wed, 07 Nov 2007 04:22:48 +0000</pubDate>
		<dc:creator>Bill D'Alessandro</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[xml-rpc]]></category>

		<guid isPermaLink="false">http://www.billda.com/php-remote-kill-switch</guid>
		<description><![CDATA[Web Developers: Have you ever gotten to the end of a project, and had a client withhold the last of your fee to exact additional changes or features that were not in the original plan? Perhaps a client that decided your work &#8220;wasn&#8217;t what we expected&#8221; and tried to withhold payment? Well worry no more. [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.billda.com/wp-blog/wp-content/uploads/2007/11/Push_Button_Switch.jpg' class="post-image-right" />Web Developers: Have you ever gotten to the end of a project, and had a client withhold the last of your fee to exact additional changes or features that were not in the original plan? Perhaps a client that decided your work &#8220;wasn&#8217;t what we expected&#8221; and tried to withhold payment? </p>
<p>Well worry no more. Put the power back in your hands with a Remote Kill Switch. The idea is this: you build into their website a small function that checks with a server you control to make sure the client&#8217;s account is in good standing. If it is, the site loads as normal. If not, their site doesn&#8217;t load, and they get a message asking for payment.</p>
<p>We&#8217;ll accomplish this with a little PHP and a protocol called XML-RPC (remote procedure call). Your client&#8217;s server will transmit an XML encoded, unique string identifying itself to your server. Your server will check to see if that unique string is one you&#8217;ve specified as disabled. If there is a match, it responds with a XML encoded string telling the client&#8217;s server to disable the application.</p>
<p>Sound like something you&#8217;d want to implement? Here&#8217;s how it breaks down:</p>
<p><strong>Part One:</strong> Your server. You&#8217;ll need a fairly reliable host, and a fast one at that. You don&#8217;t want to slow down the remote application load with requests to your server. However, the below code is set to continue loading the remote application even if it does not receive a response from your server, ensuring that downtime on your end does not cause downtime on their end.</p>
<p><strong>Part Two:</strong> The code on your end. Also known as the RPC server. Create a new file and paste the following:</p>
<pre>
	require('XMLRPC.inc.php');
	function checkapp($the_app)
	{
		$deactivateMe = ""; // to disable a webapp, enter it's short code here
		if (isset($the_app) &#038;&#038; $the_app == $deactivateMe)
			return true; // Application Disabled
		else
			return false; // All systems go
	}
	$server = new IXR_Server(array('activation.checkapp' => 'checkapp'));
</pre>
<p>You&#8217;ll also need to <a href="http://www.billda.com/wp-blog/wp-content/uploads/2007/11/xmlrpcinc.phpp">download XMLRPC.inc.php</a> and upload it to your webserver in the same directory as the file you created above. You will need to change the file extension from .phpp to .php.</p>
<p><strong>Part Three:</strong> The client code. Also known as the RPC client. Insert this code in your client&#8217;s site, preferably toward the beginning of execution:</p>
<pre>
	require('XMLRPC.inc.php');
	$appname = "UNIQUE_APP_SHORTCODE";
	$client = new IXR_Client('http://path_to_file_created_earlier.php');
	if (!$client->query('activation.checkapp', $appname)) {
		if($client->getResponse() )
		{
			die("Application Disabled. Please pay your web developer.");
		}
	}
</pre>
<p>Again, <a href="http://www.billda.com/wp-blog/wp-content/uploads/2007/11/xmlrpcinc.php">download XMLRPC.inc.php</a> and upload it to the server in the same directory as the file you created above. This library is required both by the client to make the request, and the server to respond to it.</p>
<p><strong>That&#8217;s it!</strong> If the client ever doesn&#8217;t pay you, and you want to shutdown the site you developed for them, just set $deactivateMe in Step 1 to the &#8220;UNIQUE_APP_SHORTCODE&#8221; you entered in the code in Step 3.</p>
<p>You can see that the above setup allows you to protect multiple web apps at once, just remember what shortcodes you assigned at what sites! I recommend keeping them in comments at the top of your XML-RPC server PHP file. However, a limitation of my code is that you can only disable one remote site at a time. I&#8217;m sure my code could be expanded to use an array that would allow you to disable multiple sites at once.</p>
<p>I realize that this is significantly more technical than my typical fare (which I will return to next post), but I hope it&#8217;s helpful to some people, if only as a demonstration. Feel free to rip my code apart in the comments, I&#8217;m sure I&#8217;ve left something out.</p>
<div style="font-size: .9em;"><strong>Disclaimers and warnings:</strong> You use the above code at your own risk. It is probably buggy and insecure (though it does work). I take no liability for any harm that should befall your data, your bank account, or your person as a result of implementing this idea. You should obviously remove the activation check as soon as the client has paid you for your work. It&#8217;s definitely unethical (and insecure) to leave this backdoor in place after you have finished the project. Also, this kind of system won&#8217;t work against someone who knows anything about how their site is programmed. But then again, those people probably wouldn&#8217;t be hiring freelance web developers would they?</div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.billda.com/php-remote-kill-switch/feed</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>Add WFU Specific Search to your Firefox</title>
		<link>http://www.billda.com/add-wfu-specific-search-to-your-firefox</link>
		<comments>http://www.billda.com/add-wfu-specific-search-to-your-firefox#comments</comments>
		<pubDate>Fri, 03 Nov 2006 15:47:26 +0000</pubDate>
		<dc:creator>Bill D'Alessandro</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.billda.com/add-wfu-specific-search-to-your-firefox</guid>
		<description><![CDATA[Here&#8217;s a quickie, but I think a number of Wake Forest students will appreciate it. I&#8217;ve programmed a plugin for Firefox to add a Wake Forest site-specific search to the upper right search box. Just click the little arrow next to the Google logo, and pick the &#8220;WF&#8221; logo, and your search will be restricted [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a quickie, but I think a number of Wake Forest students will appreciate it. I&#8217;ve programmed a plugin for <a target="_blank" href="http://www.getfirefox.com">Firefox</a> to add a Wake Forest site-specific search to the upper right search box. Just click the little arrow next to the Google logo, and pick the &#8220;WF&#8221; logo, and your search will be restricted to the <a target="_blank" href="http://www.googlesyndicatedsearch.com/u/wfu?q=&#038;sa.x=16&#038;sa.y=12&#038;domains=wfu.edu&#038;sitesearch=wfu.edu">Wake Forest website</a>. It&#8217;s great for finding things like <a target="_blank" href="http://ogb.wfu.edu">OGB</a> articles and a link to the PDF of the course catalog that you misplaced. Just go to the link below to install it.</p>
<p><a target="_blank" href="http://www.billda.com/searchplugin/"> http://www.billda.com/searchplugin/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.billda.com/add-wfu-specific-search-to-your-firefox/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIM Blocker</title>
		<link>http://www.billda.com/aim-blocker</link>
		<comments>http://www.billda.com/aim-blocker#comments</comments>
		<pubDate>Fri, 15 Sep 2006 19:17:52 +0000</pubDate>
		<dc:creator>Bill D'Alessandro</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.billda.com/wp-blog/?p=20</guid>
		<description><![CDATA[This program is just a little something I threw together because I was tired of my brothers being on AIM all the time monopolizing the computer. Basically what it does is modify the hosts file (I believe this only works in NT/2000/XP) to redirect all requests for the AIM logon server back to localhost, effectively [...]]]></description>
			<content:encoded><![CDATA[<p>This program is just a little something I threw together because I was tired of my brothers being on AIM all the time monopolizing the computer. Basically what it does is modify the hosts file (I believe this only works in NT/2000/XP) to redirect all requests for the AIM logon server back to localhost, effectively preventing communication with the logon server, and therefore disabling access to AIM.</p>
<p>When the program is run, it checks to see if the hosts file has already been modified. If it hasn&#8217;t, it modifies the file (blocking access to AIM) and exits. If it detects that AIM is already blocked, it prompts the user for the password to unblock. If the password is correct, the blocking entries are removed, if not, the program exits.</p>
<p>Links to the source code (with comments) and a compiled executable are below. Feel free to use them in your own home/office, just please give me credit, or drop me a line saying how helpful this program was at <a href="mailto:bill@billda.com">bill@billda.com</a></p>
<p align="center"><a href="http://www.billda.com/wp-blog/wp-content/my_files/AIMthing.cpp">AIMBlocker source code (AIMthing.cpp)</a></p>
<p align="center"><a href="http://www.billda.com/wp-blog/wp-content/my_files/AIMthing.exe">Compiled AIMBlocker software for Win32 (AIMthing.exe)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.billda.com/aim-blocker/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
