<?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>FuGeRTech &#187; Technology</title>
	<atom:link href="http://fugertech.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://fugertech.com</link>
	<description>Enduring, Sustainable Results</description>
	<lastBuildDate>Mon, 10 Jan 2011 23:09:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Google Voice + Family &amp; Friends = Unlimited Cell Phone Minutes</title>
		<link>http://fugertech.com/2010/08/05/google-voice-family-friends-unlimited-cell-phone-minutes/</link>
		<comments>http://fugertech.com/2010/08/05/google-voice-family-friends-unlimited-cell-phone-minutes/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 17:58:26 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://fugertech.com/?p=533</guid>
		<description><![CDATA[Google Voice has opened the flood gates to the public. I signed up for an account since my new consulting job with SNC-Services and Service-Now.com allows me to work from anywhere in the world as long as I have decent Internet connectivity and phone service. Google Voice allows you to configure a single phone number <a href='http://fugertech.com/2010/08/05/google-voice-family-friends-unlimited-cell-phone-minutes/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://google.com/voice" target="_blank">Google Voice</a> has opened the flood gates to the public. I signed up for an account since my new consulting job with <a href="http://snc-services.com/" target="_blank">SNC-Services</a> and <a href="http://www.service-now.com" target="_blank">Service-Now.com</a> allows me to work from anywhere in the world as long as I have decent Internet connectivity and phone service.</p>
<p>Google Voice allows you to configure a single phone number to route phone calls to multiple phones and/or change these phones on the fly. This is great because when I&#8217;m visiting family, I can route calls to their home phone if my cell phone battery dies and I forgot my charger. You can also dial your Google Voice number and then dial calls such that the receiver sees your Google Voice on their caller ID. I have also re-routed my cell phone to use Google Voice for voice-mail instead of the Verizon Wireless. There is a help article on this with a list of currently supported carriers. So, I have centralized my business phone number and voicemail into Google Voice.</p>
<p>I realized that I my Verizon Wireless plan offers unlimited voice minutes to Family &amp; Friends (taken from Alltel upon acquisition by VZW). So, I placed my Google Voice number in this list thinking that I would be able to check my Voicemail without using my minutes. I inadvertently discovered that all outbound calls via Google Voice are now captured by VZW as a Family &amp; Friends call. Thus, free minutes on outbound calls. Then, it hit me that I can also set my Google Voice account settings to send my Google Voice number as the caller ID instead of the caller&#8217;s number. I have hit the jackpot for unlimited minutes during peak and off-peak times with my cell phone on Verizon Wireless! Any cell phone carrier that allows you to choose numbers that are free/unlimited minutes will work with this strategy.</p>
<p>Be sure to add the <a href="http://m.google.com/voice" target="_blank">Google Voice Mobile App</a> for Android and BlackBerry or the <a href="http://m.google.com/voice" target="_blank">Mobile Website</a> for all other mobile devices. When placing calls from the Google Voice Mobile App, be sure to find the phone number that it is using to place the phone call. In my case, I found that outgoing calls are routed through 678-208-9474, but this could change at anytime.</p>
<p>Pros</p>
<ul>
<li>Unlimited cell phone minutes</li>
<li>Callers always see and use your Google Voice number</li>
<li>Privatization of your mobile number, but still available for business use</li>
<li>Google Voice allows you to set Do Not Disturb and other settings to keep pesky callers away</li>
<li>Centralized voice-mail</li>
<li>Centralized call logs</li>
</ul>
<p>Cons</p>
<ul>
<li>You cannot see who is calling you when they dial your Google Voice number</li>
<li>Issues with older, AT&amp;T based conference calls where it does not detect your access code properly or it rejects you altogether</li>
<li>There may be other conference calling technologies, automated menu systems or <a href="http://en.wikipedia.org/wiki/Interactive_voice_response" target="_blank">IVR</a> systems that fail or are highly unpredictable</li>
<li>Call quality could suffer since it is technically routing the call to Google then to the receiver. I have not experienced this yet (1 month).</li>
</ul>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ffugertech.com%2F2010%2F08%2F05%2Fgoogle-voice-family-friends-unlimited-cell-phone-minutes%2F&amp;title=Google%20Voice%20%2B%20Family%20%26%23038%3B%20Friends%20%3D%20Unlimited%20Cell%20Phone%20Minutes" id="wpa2a_2">Share/Save</a></p>]]></content:encoded>
			<wfw:commentRss>http://fugertech.com/2010/08/05/google-voice-family-friends-unlimited-cell-phone-minutes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrating Subversion Repositories</title>
		<link>http://fugertech.com/2010/05/17/migrating-subversion-repositories/</link>
		<comments>http://fugertech.com/2010/05/17/migrating-subversion-repositories/#comments</comments>
		<pubDate>Mon, 17 May 2010 22:44:56 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://fugertech.com/?p=524</guid>
		<description><![CDATA[When it rains it pours. This is the most action the blog has seen in a while. Today&#8217;s issue: migrating a sub-directory from one subversion repository to another without svnadmin access to either repo. Problem My client has a subversion repository used to store all the company applications. I have a sub-directory in this repo <a href='http://fugertech.com/2010/05/17/migrating-subversion-repositories/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">When it rains it pours. This is the most action the blog has seen in a while. Today&#8217;s issue: migrating a sub-directory from one subversion repository to another without svnadmin access to either repo.</p>
<p><span id="more-524"></span></p>
<h2>Problem</h2>
<p style="text-align: justify;">My client has a subversion repository used to store all the company applications. I have a sub-directory in this repo storing the code for my web applications. It includes CakePHP based web applications that have many folders with the svn:ignore property set to avoid tmp and other folders that have data that is not required in the repo. I do not have access to perform an svnadmin dump.</p>
<h2 style="text-align: justify;">Solution</h2>
<p style="text-align: justify;">After a few minutes of searching Google and contemplating a solution, I decided to just write some Bash scripts to solve this problem. This is the procedure that I came up with:</p>
<ol>
<li>Copy the old working sub-directory into the new working sub-directory</li>
<li>Remove all .svn from the old working sub-directory in the new working sub-directory</li>
<li>Change to the old working sub-directory in order to retrieve relative paths</li>
<li>Get a list of directories that have svn:ignore properties and put them into a file</li>
<li>Iterate through the list of directories</li>
<li>Establish a filename for storing the svn:ignore property information</li>
<li>Run the svn propget svn:ignore on the old working directory and output to the filename generated in step 3</li>
<li>Run the svn propset svn:ignore -F [filename] on the new working directory</li>
<li>Perform basic clean-up of temp files</li>
<li>Change back to directory the user was using when the script was called</li>
<li>Exit</li>
</ol>
<pre>#!/bin/bash

HOME="/path/to/home"
SRC="/path/to/old/working/directory"
DST="/path/to/new/working/directory"

cp -r "${SRC}" "${DST}"
find "${DST}" -type d -name .svn -exec rm -rf {} \;

pushd "${SRC}"

for i in `find . -type d | grep -v .svn`; do svn proplist $i | grep ^Prop | sed "s/^[^']*'\([^']*\)':/\1/"; done &gt; "${HOME}/tmp"

while read line; do
 FILENAME=`echo $line | sed 's#/#_#g'`
 svn propget svn:ignore "${SRC}/$line" &gt; "${HOME}/${FILENAME}.svnignore"
 svn propset svn:ignore -F "${HOME}/${FILENAME}.svnignore" "${DST}/$line"
 rm "${HOME}/${FILENAME}.svnignore"
done &lt; "${HOME}/tmp"
rm tmp

popd

exit 0
</pre>
<h2 style="text-align: justify;">Warning</h2>
<p style="text-align: justify;">This script was run in a Cygwin environment and has not been tested in other Unix or Linux environments. It makes the the assumption that the properties that are found are ONLY svn:ignore properties. Any others could cause issues. I only had svn:ignore properties set. At first I ran the first half of the real work in this script manually to see the outcome one step at a time. I later compiled into this single script, but without fully testing it again as my repo was already set and I did not want to destroy it.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ffugertech.com%2F2010%2F05%2F17%2Fmigrating-subversion-repositories%2F&amp;title=Migrating%20Subversion%20Repositories" id="wpa2a_4">Share/Save</a></p>]]></content:encoded>
			<wfw:commentRss>http://fugertech.com/2010/05/17/migrating-subversion-repositories/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP Sessions in Applications</title>
		<link>http://fugertech.com/2010/05/12/cakephp-sessions-in-applications/</link>
		<comments>http://fugertech.com/2010/05/12/cakephp-sessions-in-applications/#comments</comments>
		<pubDate>Wed, 12 May 2010 21:04:50 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://fugertech.com/?p=520</guid>
		<description><![CDATA[Preface I have yet to run across anyone in the Google search result world that is running a CakePHP application that contains multiple sub-applications. I have been developing multiple web-based applications in CakePHP that all reside in a single virtual host. The &#8220;master&#8221; application controls access to these applications. Each application is a sub-directory of <a href='http://fugertech.com/2010/05/12/cakephp-sessions-in-applications/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<h2>Preface</h2>
<p>I have yet to run across anyone in the Google search result world that is running a CakePHP application that contains multiple sub-applications. I have been developing multiple web-based applications in CakePHP that all reside in a single virtual host. The &#8220;master&#8221; application controls access to these applications. Each application is a sub-directory of the master APP/webroot (actually contains symlinks pointing back to the applications&#8217; APP/webroot and Apache +FollowSymLinks).</p>
<h2>Problem</h2>
<p>My Session-&gt;flash notices do not work when I call a redirect within these sub-applications. If I do NOT redirect, then the flash appears as expected. The moment I redirect, it&#8217;s gone.<span id="more-520"></span></p>
<h2>Solution</h2>
<p>I went through a lot of &#8220;solutions&#8221; according to people experiencing the similar problems. In doing so, I noticed that I had all the Session.cookie parameters configured the same in every APP/config/core.php file.</p>
<pre>Configure::write('Session.cookie', 'CAKEPHP');
</pre>
<p>I changed this for one of my sub-applications to something unique. Voila! It worked. I have not gone into the details as to why, but it seems apparent to me that the Session.cookie must be unique across the &#8220;master&#8221; application and any sub-applications residing within the &#8220;master&#8221; app. This allows individual session cookies to be started for each application to use/access. The &#8220;master&#8221; app is probably wiping the slate clean behind the scenes.</p>
<pre>Configure::write('Session.cookie', 'APP_NAME');</pre>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ffugertech.com%2F2010%2F05%2F12%2Fcakephp-sessions-in-applications%2F&amp;title=CakePHP%20Sessions%20in%20Applications" id="wpa2a_6">Share/Save</a></p>]]></content:encoded>
			<wfw:commentRss>http://fugertech.com/2010/05/12/cakephp-sessions-in-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP Custom Queries and Concatenate</title>
		<link>http://fugertech.com/2010/05/11/cakephp-custom-queries-and-concatenate/</link>
		<comments>http://fugertech.com/2010/05/11/cakephp-custom-queries-and-concatenate/#comments</comments>
		<pubDate>Tue, 11 May 2010 17:01:40 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://fugertech.com/?p=492</guid>
		<description><![CDATA[Problem I recently ran into an issue where I found it much more efficient to write a custom query to gather the data I needed to perform some processing than it was to utilize CakePHP&#8217;s model/controller normal data accessing functionality. At first, I wanted to make sure that all of my related tables gathered all <a href='http://fugertech.com/2010/05/11/cakephp-custom-queries-and-concatenate/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<h2 style="text-align: justify;">Problem</h2>
<p style="text-align: justify;">I recently ran into an issue where I found it much more efficient to write a custom query to gather the data I needed to perform some processing than it was to utilize CakePHP&#8217;s model/controller normal data accessing functionality.</p>
<p style="text-align: justify;">At first, I wanted to make sure that all of my related tables gathered all of the data from each other. This created numerous objects filled with data that I may or may not use. It also resulted in the need to loop through every array multiple times to gather the final data required.</p>
<p style="text-align: justify;">So, I decided to make a custom query  in the model that would handle joining all the tables into one array. I ran into trouble where fields were being grouped into their respective models as expected by CakePHP&#8217;s model class. This caused a headache to access the data properly again.<span id="more-492"></span></p>
<h3 style="text-align: justify;">Original Custom Query</h3>
<pre>SELECT
	environments.id,
	environments.name,
	deploy_files.name,
	web_services.name,
	CONCAT(web_services.name,\'.\',users.name,\'=\',users.password) line
FROM
	deploy_files,
	environments,
	users,
	web_services,
	users_web_services,
	users_environments,
	web_services_deploy_files
WHERE
users.id = users_web_services.user_id
AND web_services.id = users_web_services.web_service_id
AND users.id = users_environments.user_id
AND environments.id = users_environments.environment_id
AND web_services.id = web_services_deploy_files.web_service_id
AND deploy_files.id = web_services_deploy_files.deploy_file_id
AND users.active = 1
AND web_services.active = 1
AND deploy_files.active = 1
AND environments.active = 1
ORDER BY
	environments.name,
	deploy_files.name,
	web_services.name,
	users.hidden DESC,
	users.name</pre>
<h3>Original Output</h3>
<pre>array (
  0 =&gt;
  array (
    'environments' =&gt;
    array (
      'id' =&gt; '1',
      'name' =&gt; 'Production',
    ),
    'deploy_files' =&gt;
    array (
      'name' =&gt; 'test.login',
    ),
    'web_services' =&gt;
    array (
      'name' =&gt; 'WebService',
    ),
    0 =&gt;
    array (
      'line' =&gt; 'WebService.security=on',
    ),
  )
)</pre>
<p style="text-align: justify;">This output is usable, but I would have preferred to have everything simplified a bit and not grouped into sub associative arrays</p>
<h2 style="text-align: justify;">Solution</h2>
<p style="text-align: justify;">I noticed the results of the CONCAT in the original query were in their own sub-array (0, zero). So, I took every column and put them in their own CONCAT and gave them an alias.</p>
<h3 style="text-align: justify;">New Custom Query</h3>
<pre>SELECT
	CONCAT(environments.id) env_id,
	CONCAT(environments.name) env_name,
	CONCAT(deploy_files.name) file_name,
	CONCAT(web_services.name) ws_name,
	CONCAT(web_services.name,\'.\',users.name,\'=\',users.password) line
FROM
	deploy_files,
	environments,
	users,
	web_services,
	users_web_services,
	users_environments,
	web_services_deploy_files
WHERE
users.id = users_web_services.user_id
AND web_services.id = users_web_services.web_service_id
AND users.id = users_environments.user_id
AND environments.id = users_environments.environment_id
AND web_services.id = web_services_deploy_files.web_service_id
AND deploy_files.id = web_services_deploy_files.deploy_file_id
AND users.active = 1
AND web_services.active = 1
AND deploy_files.active = 1
AND environments.active = 1
ORDER BY
	environments.name,
	deploy_files.name,
	web_services.name,
	users.hidden DESC,
	users.name</pre>
<h3 style="text-align: justify;">New Output</h3>
<pre>array (
  0 =&gt;
  array (
    0 =&gt;
    array (
      'env_id' =&gt; '1',
      'env_name' =&gt; 'Production',
      'file_name' =&gt; 'test.login',
      'ws_name' =&gt; 'WebService',
      'line' =&gt; 'WebService.security=on',
    ),
  )
)</pre>
<p style="text-align: justify;">Now everything is inside the single 0 sub-array. The biggest problem I see with this is that I have concocted a custom query that breaks any CakePHP naming conventions. My controller and other data consuming components now rely on <em>KNOWING</em> these specific columns from this query. However, it is a large query that generates a lot more data than has been shown in these examples. Therefore, I think it is more efficient and memory-saving than the CakePHP natural methods or even a basic custom query like the original custom query above.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ffugertech.com%2F2010%2F05%2F11%2Fcakephp-custom-queries-and-concatenate%2F&amp;title=CakePHP%20Custom%20Queries%20and%20Concatenate" id="wpa2a_8">Share/Save</a></p>]]></content:encoded>
			<wfw:commentRss>http://fugertech.com/2010/05/11/cakephp-custom-queries-and-concatenate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Designer 2007 is Free</title>
		<link>http://fugertech.com/2009/04/14/sharepoint-designer-2007-is-free/</link>
		<comments>http://fugertech.com/2009/04/14/sharepoint-designer-2007-is-free/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 14:59:39 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[WSS 3.0]]></category>

		<guid isPermaLink="false">http://fugertech.com/?p=137</guid>
		<description><![CDATA[Microsoft is now offering SharePoint Designer 2007 for free!]]></description>
			<content:encoded><![CDATA[<p>Microsoft is now offering <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=baa3ad86-bfc1-4bd4-9812-d9e710d44f42" target="_blank">SharePoint Designer 2007 for free</a>!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ffugertech.com%2F2009%2F04%2F14%2Fsharepoint-designer-2007-is-free%2F&amp;title=SharePoint%20Designer%202007%20is%20Free" id="wpa2a_10">Share/Save</a></p>]]></content:encoded>
			<wfw:commentRss>http://fugertech.com/2009/04/14/sharepoint-designer-2007-is-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wireless Networking with Directional Antennas</title>
		<link>http://fugertech.com/2009/02/23/wireless-networking-with-directional-antennas/</link>
		<comments>http://fugertech.com/2009/02/23/wireless-networking-with-directional-antennas/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 04:06:22 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[802.11g]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[directional antenna]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[ISP]]></category>
		<category><![CDATA[Linksys]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[WAP54G]]></category>
		<category><![CDATA[Wireless]]></category>
		<category><![CDATA[WRT54G]]></category>
		<category><![CDATA[Yagi antenna]]></category>

		<guid isPermaLink="false">http://fugertech.com/?p=109</guid>
		<description><![CDATA[Over the weekend, I helped install and configure a wireless network for James, my soon to be brother-in-law. The task was to connect the Internet service from his office at the back of his property to his house at the front of his property. We incorporated some &#8220;Aggie engineering&#8221; as James, an NMSU Alumnus,  called it. It <a href='http://fugertech.com/2009/02/23/wireless-networking-with-directional-antennas/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Over the weekend, I helped install and configure a wireless network for James, my soon to be brother-in-law. The task was to connect the Internet service from his office at the back of his property to his house at the front of his property. We incorporated some &#8220;Aggie engineering&#8221; as James, an NMSU Alumnus,  called it. It wasn&#8217;t the cleanest of jobs, but it works!</p>
<p><span id="more-109"></span></p>
<h2>Problem</h2>
<p>James and his family own property that has two houses on it. The one at the back of his lot is used as his business offices. The house on the front of the lot is the family&#8217;s house. The houses are 300+ feet apart (too far for Ethernet). James would like to utilize the Internet connection from the office in his house as it is provides a higher bandwidth. In addition to that, he would also like to be able to &#8220;work from home&#8221; on his laptop.</p>
<h2>Current Configuration</h2>
<p>The business office has a 1Mbps Internet connection via wireless. A parabolic antenna receives a line-of-sight connection from a sending antenna across town. A router resides in the office that serves DHCP to the connecting PCs. One desktop PC shares folders and printers on this network. There is also one laptop that is used by James. He hard-wires into the network as there is no wireless in the office.</p>
<p>The house has a 384kbps Internet connection via DSL. A D-Link wireless router is connected to serve wireless and DHCP to the house. There is a PC hard-wired to the D-Link router. The wireless is wide open (no security at all) and serves as a connection for guests with laptops. Security is not an issue at this time as the property is far enough from dense populations, and the neighbors are not a threat.</p>
<h2>Idea Iterations</h2>
<ol>
<li>Back near the summer of 2008, James approached me with the idea of connecting the two houses in order to utilize the higher bandwidth from the office. He mentioned an old, dormant gas line between the houses that created the perfect conduit for cabling. We began to investigate using Ethernet over CAT-5e or CAT-6. He already owned a 1000&#8242; box of CAT-5e leftover from wiring the office. I knew that CAT-5e/6 Ethernet had a distance limitation of 328 ft at 100Mbps. During my next visit, we measured the distance needed to cover, and it ended up being well over this limitation. I was worried that if we did all the work to run the cable, that it would be in vain and packets would be dropped.</li>
<li>James found an acquaintance that did optical fiber work. We began to research the costs to run fiber and convert it to CAT-5e Ethernet at each end of the house. The costs to accomplish this versus the costs of CAT-5e were nearly double and outside of his budget. We returned to the drawing board.</li>
<li>I don&#8217;t recall what triggered my brain to wireless. I think it was a mixture of the struggles at my house to get maximum signal from every corner (including the garage) and my exposure to the wireless configuration at my parents&#8217; bed and breakfast. It came to me one day, and I began to research directional antennas. Within a few hours, I found multiple blogs, forum postings, etc. with people that were connecting long distances with directional antennas pointing at each other. Three times a charm?</li>
</ol>
<h2>Solution</h2>
<p><a href="http://fugertech.com/wp-content/uploads/2009/02/pmi_yagi_on_roof.jpg"><img class="alignleft size-thumbnail wp-image-123" src="http://fugertech.com/wp-content/uploads/2009/02/pmi_yagi_on_roof-150x150.jpg" alt="" width="150" height="150" /></a>I searched high and low for the best prices for wireless antennas, cabling and equipment to accomplish this project. Eventually, I found the best deal with <a href="http://www.l-com.com" target="_blank">L-Com.com</a> and their Hyperlink brand antennas. Their 2.4GHz Yagi, directional antenna and 20-foot RP-TNC to N-male cable were a perfect match for the project requirements. The antenna is a 2.4GHz 15dBi Yagi Antenna, model number <span class="defaultB">HG2415Y-NF. It is</span> shielded by a <span id="ctl00_CenterContent_bullets_ctl00_lblBullets" class="itemBullets"><span id="ctl00_CenterContent_bullets_ctl03_bullet" class="itemBullets">UV-stable &amp; UL flame rated radome. It offers a 30-degree beam-width (which means the antennas don&#8217;t have to pointed PRECISELY at each other) and DC short lightning protection. The 20-foot cable is model number </span></span><span id="ctl00_CenterContent_grdOrders_ctl03_Label9">CA-RTPNMA020. It features RP-TNC Plug and N-Male ends made with 195-series coaxial cable. This allowed us to connect the antennas to the wireless components to a place inside the buildings.</span> I read online about using the Linksys WRT54G wireless router and the WAP54G wireless access point to create a wireless bridge. Some people have obtained wireless bridges spanning up to 1.5+ miles with these Linksys products and Yagi antennas.</p>
<p>The configuration of the wireless components was fairly simple. Here is the procedure that I followed:</p>
<ol>
<li>Download and install the latest firmware for both the WRT54G and WAP54G.</li>
</ol>
<p><strong>WRT54G Information Gathering</strong></p>
<ol>
<li>Access the router&#8217;s setup page from a web browser via the default IP address (192.168.1.1)</li>
<li>Login using the User Name and Password defaults are:<br />
username &#8211; &#8220;admin&#8221;<br />
password &#8211; leave blank</li>
<li>Click the Status tab
<p><div id="attachment_124" class="wp-caption alignnone" style="width: 160px"><a href="http://fugertech.com/wp-content/uploads/2009/02/231-0011.jpg"><img class="size-thumbnail wp-image-124" title="Linksys Status Page" src="http://fugertech.com/wp-content/uploads/2009/02/231-0011-150x150.jpg" alt="Linksys Status Page" width="150" height="150" /></a><p class="wp-caption-text">Click to enlarge</p></div></li>
<li>Write down the WIRELESS MAC Address and the Channel Number values.</li>
<li>If you would like to use WEP Encryption, click the Wireless tab, then Wireless Security sub tab. Note the passphrase.<br />
<span style="text-decoration: underline;"><strong>Note:</strong></span> WPA (Wi-Fi Protected Access) is not compatible with wireless repeater mode. You must use WEP Encryption if you wish to use security options.</p>
<p><div id="attachment_125" class="wp-caption alignnone" style="width: 160px"><a href="http://fugertech.com/wp-content/uploads/2009/02/231-0021.gif"><img class="size-thumbnail wp-image-125" title="Wireless Security" src="http://fugertech.com/wp-content/uploads/2009/02/231-0021-150x150.gif" alt="Click to enlarge" width="150" height="150" /></a><p class="wp-caption-text">Click to enlarge</p></div></li>
</ol>
<p><strong>WAP54G Repeater Setup</strong></p>
<ol>
<li>Plug the WAP54G directly into one of the WRT54G&#8217;s numbered ports.</li>
<li>Access the WAP54G setup page from a web browser via the default IP Address (192.168.1.245)</li>
<li>Login using the User Name and Password defaults are:<br />
username &#8211; leave blank<br />
password &#8211; &#8220;admin&#8221;</li>
<li>On the Setup page, set the Channel value to the same channel value as the WRT54G router from step 4 above.</li>
<li>If WEP Encryption is being used, click Enable for Wireless Security. Click Edit Security Settings and enter the same Passphrase as obtained in step 5 above. Click Generate to populate the WEP key fields.
<p><div id="attachment_126" class="wp-caption alignnone" style="width: 160px"><a href="http://fugertech.com/wp-content/uploads/2009/02/231-0031.jpg"><img class="size-thumbnail wp-image-126" title="AP Channel/Security" src="http://fugertech.com/wp-content/uploads/2009/02/231-0031-150x150.jpg" alt="Click to enlarge" width="150" height="150" /></a><p class="wp-caption-text">Click to enlarge</p></div></li>
<li>Click Save Settings.</li>
<li>Next, click on the AP Mode Tab.</li>
<li>Select Wireless Repeater and enter the WIRELESS MAC Address obtained in step 4 above.</li>
</ol>
<p>Notes:</p>
<ul>
<li>This procedure was adapted from <a href="http://linksys.custhelp.com/cgi-bin/linksys.cfg/php/enduser/std_adp.php?p_faqid=231" target="_blank">Linksys by Cisco&#8217;s online Knowledge Base article #231 written on 1/26/2006</a>.</li>
<li>If MAC Filtering is configured on the WRT54G, no extra configuration is needed.  Wireless clients will still need to be added the MAC Filter list of the WRT54G, but the WAP54G does <span style="text-decoration: underline;"><strong>NOT</strong></span> have to on the list.</li>
<li>I highly recommend MAC Filtering over WEP Encryption as WEP has been cracked: <a href="http://www.google.com/search?q=cracking+WEP" target="_blank">http://www.google.com/search?q=cracking+WEP</a></li>
<li>As mentioned before, WPA (Wi-Fi Protected Access) is not compatible with wireless repeater mode. You must use WEP Encryption if you wish to use security options.</li>
</ul>
<p>Next was installation of the antennas. First, we simply placed the antennas on ladders with relative line-of-sight to test. Once we were able to establish connection, we mounted the antennas to the side of each house with the included hardware. James bought a 12&#8243; x 1-1/4&#8243; pipe and mounting plate to mount on the family house. This enabled the antenna to align with the office&#8217;s antenna which was slightly offset from the main house. The 30-degree beam-width allowed us to roughly line up the antennas without need of special alignment equipment.</p>
<p>We ran the pigtails in through existing holes in the wall into the attic of the house and the garage of the office. This is where the &#8220;Aggie engineering&#8221; took place. To get power to the router and access point, we ran extension cords across each location. The final touch was to run CAT-5e Ethernet cables to pre-existing wall plates that James had previously installed when his electrician did the initial wiring of the office.</p>
<h2>Residual</h2>
<p>We neglected to double check the printer sharing from his laptop. Unfortunately, communications to the printer did fail. James has to hard-wire into the office network when he is down there, and just deal without printing when working from the house. I will be double checking that on our next visit. Other than that, everything is running great after two days!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ffugertech.com%2F2009%2F02%2F23%2Fwireless-networking-with-directional-antennas%2F&amp;title=Wireless%20Networking%20with%20Directional%20Antennas" id="wpa2a_12">Share/Save</a></p>]]></content:encoded>
			<wfw:commentRss>http://fugertech.com/2009/02/23/wireless-networking-with-directional-antennas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LogMeIn Interface v0.1</title>
		<link>http://fugertech.com/2009/02/11/logmein-interface-v01/</link>
		<comments>http://fugertech.com/2009/02/11/logmein-interface-v01/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 00:38:30 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[LogMeIn.com]]></category>
		<category><![CDATA[remote desktop]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://fugertech.com/?p=94</guid>
		<description><![CDATA[I&#8217;ve been using LogMeIn.com&#8216;s LogMeIn Pro for about a year now and it is great for accessing my desktops and laptops at home from anywhere. With most people carrying laptops these days it seems useless as one would have his/her computer along for the ride. However, when I am at work and there is a <a href='http://fugertech.com/2009/02/11/logmein-interface-v01/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://www.logmein.com" target="_blank">LogMeIn.com</a>&#8216;s LogMeIn Pro for about a year now and it is great for accessing my desktops and laptops at home from anywhere. With most people carrying laptops these days it seems useless as one would have his/her computer along for the ride. However, when I am at work and there is a website blocked by WebSense or some other limitation that slows me down, I can jump onto my desktop at home and get something done without hassle. It also provides IT shops with the ability to manage hundreds of clients&#8217; PCs from the office. This can be extremely helpful!</p>
<p>One annoyance I have though is with the ActiveX based remote desktop. Unfortunately, I am stuck with IE6 at work. I am not allowed to install IE7, Firefox, Chrome or any other browser than IE6. I also prefer not to run the ActiveX plugin in full-screen mode. I like to be able to quickly and efficiently tab to another window on my local desktop. Running it from the browser requires me to hide/un-hide the address bar and standard buttons though. I have Visual Studio 2005 though. So, I made a very quick little tool that allows me to maximize the space in which the browser sits. It is a Windows application but has nothing except a web browser object that fills the entire window. The default URL is <a href="http://www.logmein.com" target="_blank">http://www.logmein.com</a>. It allows me to save my IE6 toolbar settings and maximize the space for my remote desktop!</p>
<p>I know, I know the tool is really simple and lame, but I figured not everyone has access to the development tools to make something like this. So, for the non-developers out there, I present FuGeRTech&#8217;s <a href="http://fugertech.com/wp-content/uploads/2009/02/logmein.zip" target="_blank">LogMeIn Interface v0.1</a>.</p>
<p>Code is released under the <a href="http://en.wikipedia.org/wiki/MIT_License" target="_blank">MIT License</a>.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ffugertech.com%2F2009%2F02%2F11%2Flogmein-interface-v01%2F&amp;title=LogMeIn%20Interface%20v0.1" id="wpa2a_14">Share/Save</a></p>]]></content:encoded>
			<wfw:commentRss>http://fugertech.com/2009/02/11/logmein-interface-v01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Log Files</title>
		<link>http://fugertech.com/2009/01/26/sharepoint-log-files/</link>
		<comments>http://fugertech.com/2009/01/26/sharepoint-log-files/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 15:30:01 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Diagnostic Logging]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft SQL Server 2005]]></category>
		<category><![CDATA[Operations]]></category>
		<category><![CDATA[Trace Log]]></category>
		<category><![CDATA[WSS 3.0]]></category>

		<guid isPermaLink="false">http://www.fugertech.com/?p=86</guid>
		<description><![CDATA[I am willing to bet that not too many people run into this issue, but it is still good to know. On, my client&#8217;s web server began to stall due to a full C: drive. Their server is an economy model and the C: drive is only 16GB. After some quick investigation, I found that <a href='http://fugertech.com/2009/01/26/sharepoint-log-files/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I am willing to bet that not too many people run into this issue, but it is still good to know. On, my client&#8217;s web server began to stall due to a full C: drive. Their server is an economy model and the C: drive is only 16GB. After some quick investigation, I found that 3.5GB were being used in the C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12LOGS folder. This is the default location for the trace log. The path must exist on all servers in the farm, too. I decided to turn down the logging, at least temporarily, to get the server running again. To complete this task, I took the following steps:</p>
<ol>
<li>Navigate to SharePoint Central Administration</li>
<li>Click Operations</li>
<li>Click Diagnostic Logging</li>
<li>Scroll to the bottom of the page to the Trace Log section</li>
<li>Change Number of log files to <strong><span style="text-decoration: underline;">1</span></strong></li>
<li>Change Number of minutes to use a log file to <strong><span style="text-decoration: underline;">5</span></strong></li>
</ol>
<p>My client&#8217;s server is back up and running again, and I should not have to worry about the Trace Log getting out of control again.</p>
<p>The downside is that my Trace Log only goes back to the last 5 minutes of work on the server. I am researching my options here. It may not be important enough though.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ffugertech.com%2F2009%2F01%2F26%2Fsharepoint-log-files%2F&amp;title=SharePoint%20Log%20Files" id="wpa2a_16">Share/Save</a></p>]]></content:encoded>
			<wfw:commentRss>http://fugertech.com/2009/01/26/sharepoint-log-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server 2005 and NTFS Compressed Folders</title>
		<link>http://fugertech.com/2009/01/08/sql-server-2005-and-ntfs-compressed-folders/</link>
		<comments>http://fugertech.com/2009/01/08/sql-server-2005-and-ntfs-compressed-folders/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 06:37:00 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[Database Administration]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[compressed folders]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[Microsoft SQL Server 2005]]></category>
		<category><![CDATA[NTFS]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.fugertech.com/?p=78</guid>
		<description><![CDATA[Summary: SQL Server 2005 does not support compressed folders. Don&#8217;t use them for database storage or backups. I had a backup process running at work that would back up my server&#8217;s databases into a compressed folder. Everything was fine until my SharePoint database and another database grew larger than 32GB. My backups began to fail <a href='http://fugertech.com/2009/01/08/sql-server-2005-and-ntfs-compressed-folders/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Summary: SQL Server 2005 does not support compressed folders. Don&#8217;t use them for database storage or backups.</p>
<p>I had a backup process running at work that would back up my server&#8217;s databases into a compressed folder. Everything was fine until my SharePoint database and another database grew larger than 32GB. My backups began to fail with an error that read:</p>
<pre class="sql" style="padding-left: 30px;">The process cannot access the file
because another process has locked
a portion of the file.</pre>
<p>I was stumped! I contacted a colleague that is a SQL Server expert, and she suggested using <a href="http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx" target="_blank">FileMon</a> to watch for intruding processes. It may be the anti-virus software requesting the file in the middle of backing up. At that time, I ran my backups manually singling out the two that were failing to backup. I noticed that they would consistently fail at the 32GB mark. That drew my suspicion, and I did some googling to find that Microsoft SQL Server 2005 does NOT support compressed folders!</p>
<p>So, I moved my backups to a regular folder and all is well again. Even my expert colleague did not know of this problem. Luckily, I have read that SQL Server 2008 will support compressed folders.</p>
<p>I hope this information gets grabbed by the web crawlers as finding this information was NOT as easy as it should be.</p>
<p>Here&#8217;s another blogger that found this problem a year earlier than me!<a href="http://clay.lenharts.net/blog/2008/01/28/backing-up-to-a-ntfs-compressed-folder/" target="_blank"></p>
<p>http://clay.lenharts.net/blog/2008/01/28/backing-up-to-a-ntfs-compressed-folder/</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ffugertech.com%2F2009%2F01%2F08%2Fsql-server-2005-and-ntfs-compressed-folders%2F&amp;title=SQL%20Server%202005%20and%20NTFS%20Compressed%20Folders" id="wpa2a_18">Share/Save</a></p>]]></content:encoded>
			<wfw:commentRss>http://fugertech.com/2009/01/08/sql-server-2005-and-ntfs-compressed-folders/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint: Recurring Events on Calendars</title>
		<link>http://fugertech.com/2008/11/21/sharepoint-recurring-events-on-calendars/</link>
		<comments>http://fugertech.com/2008/11/21/sharepoint-recurring-events-on-calendars/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 18:48:57 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[recurring]]></category>
		<category><![CDATA[WSS 3.0]]></category>

		<guid isPermaLink="false">http://www.fugertech.com/?p=60</guid>
		<description><![CDATA[While I am in the blogging mood today, I thought I would share a very helpful link. I was trying to figure out the proper way to retrieve the latest recurring events based on the current month. I Googled around for a bit before stumbling upon this: http://blogs.msdn.com/sharepoint/archive/2007/05/14/understanding-the-sharepoint-calendar-and-how-to-export-it-to-ical-format.aspx The key point is the query used: <a href='http://fugertech.com/2008/11/21/sharepoint-recurring-events-on-calendars/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>While I am in the blogging mood today, I thought I would share a very helpful link. I was trying to figure out the proper way to retrieve the latest recurring events based on the current month. I Googled around for a bit before stumbling upon this:</p>
<p><a href="http://blogs.msdn.com/sharepoint/archive/2007/05/14/understanding-the-sharepoint-calendar-and-how-to-export-it-to-ical-format.aspx">http://blogs.msdn.com/sharepoint/archive/2007/05/14/understanding-the-sharepoint-calendar-and-how-to-export-it-to-ical-format.aspx</a></p>
<p>The key point is the query used:</p>
<p><code>SPQuery query = new SPQuery();<br />
query.ExpandRecurrence = true;<br />
query.Query =<br />
    "&lt;Where&gt;" +<br />
        "&lt;DateRangesOverlap&gt;" +<br />
            "&lt;FieldRef Name='EventDate' /&gt;" +<br />
            "&lt;FieldRef Name='EndDate' /&gt;" +<br />
            "&lt;FieldRef Name='RecurrenceID' /&gt;" +<br />
            "&lt;Value Type='DateTime'&gt;&lt;Month /&gt;&lt;/Value&gt;" +<br />
        "&lt;/DateRangesOverlap&gt;" +<br />
    "&lt;/Where&gt;";<br />
// Look forward from the beginning of the current month<br />
query.CalendarDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); </code></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Ffugertech.com%2F2008%2F11%2F21%2Fsharepoint-recurring-events-on-calendars%2F&amp;title=SharePoint%3A%20Recurring%20Events%20on%20Calendars" id="wpa2a_20">Share/Save</a></p>]]></content:encoded>
			<wfw:commentRss>http://fugertech.com/2008/11/21/sharepoint-recurring-events-on-calendars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

