<?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>Delaware Web Designers - Inclind, Inc Internet Professionals &#187; Tech Stuff</title>
	<atom:link href="http://www.delawarewebdesigner.com/category/tech-stuff/feed" rel="self" type="application/rss+xml" />
	<link>http://www.delawarewebdesigner.com</link>
	<description>Inclind, Inc - Delaware Web Designers - Professional Delaware Web Design Since 1999</description>
	<lastBuildDate>Tue, 08 Nov 2011 13:44:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Sync Drupal Content Using Services and xmlrpc()</title>
		<link>http://www.delawarewebdesigner.com/tech-stuff/sync-drupal-content-using-services-and-xmlrpc.htm</link>
		<comments>http://www.delawarewebdesigner.com/tech-stuff/sync-drupal-content-using-services-and-xmlrpc.htm#comments</comments>
		<pubDate>Sat, 19 Dec 2009 01:52:37 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Drupal Development]]></category>
		<category><![CDATA[drupal modules]]></category>
		<category><![CDATA[How To's]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[drupal node service]]></category>
		<category><![CDATA[drupal Services API]]></category>
		<category><![CDATA[drupal services module]]></category>
		<category><![CDATA[drupal xmlrpc]]></category>
		<category><![CDATA[push content with drupal services]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/?p=427</guid>
		<description><![CDATA[Have you ever wondered how to push custom content from one Drupal site to another Drupal site? There are a handful of ways to do this. One way would be to create an external database connection, talk to it, and update the data in our database through raw PHP. But that&#8217;s not really good, not [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever wondered how to push custom content from one Drupal site to another Drupal site?</p>
<p>There are a handful of ways to do this. One way would be to create an external database connection, talk to it, and update the data in our database through raw PHP. But that&#8217;s not really good, not to mention slow, and also very <em>un</em> Drupal.</p>
<p>Another way would be to utilize Domain Access, and publish content to affiliated sites. That works in some cases, but what if these sites are independent from each other with different companies managing them? You would then have the nightmare of dealing with prefixed tables, back-end training issues, and the occasional node overlap from misconfiguring Domain Access.</p>
<p>A third way would be to utilize FeedAPI (or its successor, Feeds), to read from an RSS feed. Then you could parse and import that content at regular intervals. Sounds great, but if you plan on importing custom node types that have extensive CCK fields, files and images, prepare to sit down and code plugins and parsers galore to support CCK as data sources to target.</p>
<p>The third way is the one I thought I could get working. It seems so simple in theory that you can create an RSS/XML/JSON data structure with Views, and then tell Feeds to take that feed and parse it. True, it works if you are using a basic content type like Story or Page, but all bets are off once CCK comes into play- and who doesn&#8217;t use CCK these days? Hats off to Alex Barth / Development Seed though on Feeds, its a great start and sure to grow into a monster data consuming module. I do want to use for future projects, just not for this function.</p>
<p>One way that most people are not aware of is to take advantage of Drupal&#8217;s XML-RPC functions through the <a href="http://drupal.org/project/Services" target="_blank">Services</a> module. In short, the <a href="http://drupal.org/project/Services" target="_blank">Services</a> module provides:</p>
<blockquote><p><strong>A standardized solution of integrating external applications with Drupal. Service callbacks may be used with multiple interfaces like XMLRPC, JSON, REST, SOAP, AMF, etc. This allows a Drupal site to provide web services via multiple interfaces while using the same callback code.</strong></p></blockquote>
<p>So, then we got the idea to have the &#8216;master&#8217; Drupal site act as a SOAP server with the <a href="http://drupal.org/project/Services" target="_blank">Services</a> module, and provide our own custom services in order to get the job done. This runs once an hour, requires no user interaction, fails silently, and only requires two modules. Effectively, it also allows us to not have to use:</p>
<ul>
<li>Domain Access</li>
<li>FeedAPI/Feeds</li>
<li>Multi-site Setup</li>
</ul>
<p>The benefit of this is every site can run independently from one another and be customized various ways, while still receiving key content from the parent website. Thus is the beauty of XMLRPC/SOAP.</p>
<p>The next part was to create my own custom method so I can request a list of node ID&#8217;s from the parent server. There is no method of getting all node ID&#8217;s out of the box, but you can easily create them. Here is what I came up with:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// CODE ON PARENT SERVER</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> homes_service_service<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'#method'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'node.getAllHomes'</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'#callback'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'homes_service_node_get_all_homes'</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'#return'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'array'</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'#help'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Return a list of node id\'s that are of the Home content type.'</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> homes_service_node_get_all_homes<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> db_query<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SELECT nid FROM {node} WHERE type = &quot;%s&quot;'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'homes'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$home</span> <span style="color: #339933;">=</span> db_fetch_array<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$home</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nid'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$homes</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$home</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nid'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>	
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$homes</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// CODE ON REMOTE SERVERS</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> homes_sync_get_node_list<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// user authentication code here</span>
	<span style="color: #666666; font-style: italic;">// connect as 'services' user with 'services' role</span>
	<span style="color: #666666; font-style: italic;">// that way, drupal permissions are respected</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// user.login method used</span>
	<span style="color: #666666; font-style: italic;">// we get a successful login if the return is an array and the array values match our login information</span>
        <span style="color: #666666; font-style: italic;">// this needs a little more work so the parent server knows exactly who is requesting information       </span>
&nbsp;
	<span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'user'</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'password'</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$authenticate</span> <span style="color: #339933;">=</span> xmlrpc<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://upgrade.beracahhomes.com/services/xmlrpc'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'user.login'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$user</span><span style="color: #339933;">,</span> <span style="color: #000088;">$password</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$authenticate</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$authenticate</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'user'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">===</span> <span style="color: #000088;">$user</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$authenticate</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'user'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'status'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000088;">$node_ids</span> <span style="color: #339933;">=</span> xmlrpc<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://www.parentsite.com/services/xmlrpc'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'node.getAllHomes'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>xmlrpc_error<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> xmlrpc_error<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			watchdog<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'homes_sync'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Error getting node list from parent server. Error: @error.'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'@error'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$error</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> WATCHDOG_CRITICAL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$node_ids</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$nid</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$nodes</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$nid</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			variable_set<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'parent_home_nodes'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$nodes</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			watchdog<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'homes_sync'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Successfully retrieved node list from parent server.'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> WATCHDOG_NOTICE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	homes_sync_perform_update<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> homes_sync_perform_update<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000088;">$node_ids</span> <span style="color: #339933;">=</span> variable_get<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'parent_home_nodes'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$node_ids</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$nid</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> xmlrpc<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://www.parentsite.com/services/xmlrpc'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'node.get'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$nid</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> db_fetch_array<span style="color: #009900;">&#40;</span>db_query<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SELECT n.nid, n.title, n.type FROM {node} n WHERE n.title = &quot;%s&quot; AND n.type = &quot;%s&quot;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'homes'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>xmlrpc_error<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> xmlrpc_error<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			watchdog<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'homes_sync'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Could not perform XMLRPC request. Error: @error.'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'@error'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$error</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> WATCHDOG_CRITICAL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$node</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nid'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nid</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nid'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">type</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'type'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">uid</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">status</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'status'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">created</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'created'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">changed</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'changed'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">comment</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'comment'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">promote</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'promote'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">moderate</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'moderate'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sticky</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'sticky'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tnid</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tnid'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">translate</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'translate'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">body</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'body'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">teaser</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'teaser'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">format</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'format'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'data'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">path</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'path'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_type</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field_type'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_number_of_bathrooms</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field_number_of_bathrooms'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_number_of_bedrooms</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field_number_of_bedrooms'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_number_of_floors</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field_number_of_floors'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_square_footage</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field_square_footage'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
				node_save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>	
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> homes_sync_cron<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	homes_sync_get_node_list<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>For some reason, I can&#8217;t have two instances of wp-syntax in a single post, so bear with me. The above code is part of two seperate modules, one on the parent server, and one on the remote server (as notated with the PHP comment).</strong></p>
<p>The module code (after CODE ON PARENT SERVER)  resides on the parent server. This uses hook_service to talk to Services, and says expose node.getAllHomes as a request. That request method then calls the homes_service_node_get_all_homes function, which does a SQL query returns an array of node id&#8217;s that I am looking for.</p>
<p>I could easily return all nodes as their full node objects, but for performance reasons, I&#8217;d rather get a short list and save them on the receiving end. That way, I can create/update a handful at a time instead of all at once, which lightens the load on the database and application server.</p>
<p>On the receiving end, we need some code that creates the request that is sent to the parent server. Using hook_cron, I can send this request on an automated basis. The module code (after CODE ON REMOTE SERVERS) looks for the node list locally, and constructs single requests to retrieve node data one at a time. From there, it constructs a node object and saves it all with node_save. If the node already exists, based on type and title (our node ID&#8217;s will not match, but our title certainly will, since child sites cannot create or edit these nodes) it grabs the node ID from the local database and puts that in with the node object. node_save is a great function that can handle creating or updating data with the same structure. So, if the update runs again and passes us the same data, it will recognize it already has it, and update the record instead of create duplicates. Slick.</p>
<p>So what do we have? If we deploy the remote code on multiple remote sites, they can all sync up specific content with the parent website without anyone having to do anything special. So long as the parent site admin provides content, everyone will get it.</p>
<p>This is a quick implementation of course. I am fleshing out the authentication further as well as staggering the amount of data updated every cron run. With the core functionality in place, I can focus on security and speed. The next step is retrieving files and images using the same methods, and I will go over that in another post when I get a chance.</p>
<p>I hope fellow Drupalers found this useful, because I found that documentation on this is touch and go (and probably a reason not many utilize XMLRPC/Services). It&#8217;s a very powerful feature.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/tech-stuff/sync-drupal-content-using-services-and-xmlrpc.htm/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>I Love Twitter. You Should Too.</title>
		<link>http://www.delawarewebdesigner.com/blurbs/i-love-twitter-you-should-too.htm</link>
		<comments>http://www.delawarewebdesigner.com/blurbs/i-love-twitter-you-should-too.htm#comments</comments>
		<pubDate>Fri, 06 Nov 2009 16:00:35 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Blurbs]]></category>
		<category><![CDATA[Custom Website Design]]></category>
		<category><![CDATA[Delaware Web Design]]></category>
		<category><![CDATA[Delaware Web Designer]]></category>
		<category><![CDATA[Delaware Web Development]]></category>
		<category><![CDATA[iPhone Apps]]></category>
		<category><![CDATA[iPhone Software]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[john carmack]]></category>
		<category><![CDATA[twitter celebrities]]></category>
		<category><![CDATA[using twitter]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/?p=356</guid>
		<description><![CDATA[Twitter connects everyday people to others they normally would never have contact with. Celebrities, for example, or high profile folks in general, you would have to go through a fan club or agent, through publicists, etc before you could even think of communicating to someone. A few days ago, I took 10 seconds to fire [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com" target="_blank">Twitter</a> connects everyday people to others they normally would never have contact with. Celebrities, for example, or high profile folks in general, you would have to go through a fan club or agent, through publicists, etc before you could even think of communicating to someone.</p>
<p>A few days ago, I took 10 seconds to fire off a question to <a href="http://en.wikipedia.org/wiki/John_D._Carmack" target="_blank">John Carmack</a> of <a href="http://www.idsoftware.com" target="_blank">iD Software</a>, who basically INVENTED modern gaming as we know it, over <a href="http://twitter.com" target="_blank">Twitter</a>. This guy is solely responsible for gaming today. He created Doom, Wolfenstein 3D, and Quake (not to mention causing me to log hours and hours of gametime) and spawned countless games in their wake like Half-Life.</p>
<p><a href="http://bethblog.com/index.php/2009/11/05/john-carmack-on-doom-classic-development-fan-questions/" target="_blank">http://bethblog.com/index.php/2009/11/05/john-carmack-on-doom-classic-development-fan-questions/</a></p>
<p><a href="http://en.wikipedia.org/wiki/John_D._Carmack" target="_blank">John Carmack</a>, the legendary godfather of gaming answered my question from <a href="http://twitter.com" target="_blank">Twitter</a>. I guess I ought to put <a href="http://www.joystiq.com/2009/11/03/doom-classic-released-for-iphone-and-ipod-touch/" target="_blank">Doom on my iPhone</a> now, or at least die happy. </p>
<p>I&#8217;ve been using <a href="http://twitter.com" target="_blank">Twitter</a> to connect with industry leaders, celebrities, and everyday people. If you&#8217;d like to know how you can utilize <a href="http://twitter.com" target="_blank">Twitter</a> to build your business or online persona, we’d be happy to train you or your staff on Twitter, CoTweet, TweetDeck or a host of other <a href="http://twitter.com" target="_blank">Twitter</a> solutions. Just give us a call at 302-856-2802, or tweet us <a href="http://twitter.com/inclindinc" target="_blank">@inclindinc</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/blurbs/i-love-twitter-you-should-too.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Green is Brighter Than Blu</title>
		<link>http://www.delawarewebdesigner.com/rants-raves/green-is-brighter-than-blu.htm</link>
		<comments>http://www.delawarewebdesigner.com/rants-raves/green-is-brighter-than-blu.htm#comments</comments>
		<pubDate>Fri, 28 Aug 2009 14:47:18 +0000</pubDate>
		<dc:creator>shaun</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Rants & Raves]]></category>
		<category><![CDATA[Tech Stuff]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/?p=276</guid>
		<description><![CDATA[Today I came across an article written by Computerworld titled Blu-ray tanks in PCs. I&#8217;ve been an active follower of HD (High Definition) video and data storage for many years. I also followed the battle between Sony&#8217;s Blu-Ray and Toshiba&#8217;s HD-DVD closely for several years before the end in early 2008. Here we are, half [...]]]></description>
			<content:encoded><![CDATA[<p>Today I came across an article written by <a href="http://www.computerworld.com">Computerworld</a> titled <a href="http://www.computerworld.com/s/article/9137103/Blu_ray_tanks_in_PCs">Blu-ray tanks in PCs</a>. I&#8217;ve been an active follower of HD (High Definition) video and data storage for many years. I also followed the battle between Sony&#8217;s Blu-Ray and Toshiba&#8217;s HD-DVD closely for several years before the end in early 2008. Here we are, half way to 2010 and I&#8217;ve only seen a handful of Blu-Ray drives (not including Playstation) and movies. According to the article, cost is one of the biggest concerns that customers face when looking to make the jump. While this is true, I believe the cost comparison between storage mediums along with faster internet speeds and the push to rid our lives of junk is the root cause of the slow adoption.</p>
<h2>Cost</h2>
<p>When dealing with Blu-Ray on computers, we&#8217;re looking more into using this medium as a storage device over a video viewing device. Geeks, like myself, do watch media on our computers but the general public does not. We all, however, do use our computers as an information storage device. The amount of information that can be stored on a Blu-Ray disk was actually one of the selling points of the medium. This, along with Sony&#8217;s marketing powerhouse (with Hollywood Support), is probably what drove HD-DVD out of the market. So, our cost comparisons below are only going to show the duel layer BD&#8217;s (Blu-ray Disk), because the 25GB single layer disks are too small for the files we&#8217;ll want to use with this storage medium. According to several leading hardware sales locations, if I wanted to begin backing up information today this is what I&#8217;ll be spending:</p>
<ul>
<li>Blu-Ray Burner: $150 (LG) &#8211; $200 (Pioneer)</li>
<li>BD-r 50GB: $150 (10 Pack &#8211; Verbatim) or $20 (1 Pack &#8211; Sony)</li>
</ul>
<p>So, to store our first 50GB of information we&#8217;re already looking at a price tag of $170, using the lowest priced BD-rw and a single 50GB duel layer BD.</p>
<p>The standard hard drive has come a long way from it&#8217;s roots. There are many different styles, sizes and speeds all competing for your money. Also, with the technological introductions of USB and Solid-State drives, we&#8217;re seeing even faster price drops on the latest (sometimes greatest) hard drives. 1TB (terabyte, or 1,000 gigabytes) drives are now running around the $75-$100 price tag for the standard 7200rpm drive. Some 2TB drives, distributed by companies such as Toshiba and Seagate, are coming in around the $150 mark. To achieve the back-up potential of one of these hard drives (1TB model), you&#8217;d need to burn 20.48 disks of information. If you were to use the Verbatim disks (round down from 20.48 to 20, and assume Verbatim disks have a 100% success rate) you&#8217;d need to spend around $450. With that $450, you could of backed up nearly 6TB of information on internal hard drives; or slightly less for external hard drives.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/rants-raves/green-is-brighter-than-blu.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Announces Google Chrome OS</title>
		<link>http://www.delawarewebdesigner.com/tech-stuff/google-announces-google-chrome-os.htm</link>
		<comments>http://www.delawarewebdesigner.com/tech-stuff/google-announces-google-chrome-os.htm#comments</comments>
		<pubDate>Wed, 08 Jul 2009 15:35:06 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[google chrome os]]></category>
		<category><![CDATA[google operating system]]></category>
		<category><![CDATA[google os]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/?p=169</guid>
		<description><![CDATA[Google has announced they are working on an thin-client operating system called the Google Chrome OS. This is huge news and brings rest the rumors of Google working on its own operating system (because they are!). Speed, simplicity and security are the key aspects of Google Chrome OS. We&#8217;re designing the OS to be fast [...]]]></description>
			<content:encoded><![CDATA[<p>Google has announced they are working on an thin-client operating system called the Google Chrome OS. This is huge news and brings rest the rumors of Google working on its own operating system (because they are!).</p>
<blockquote><p><em>Speed, simplicity and security are the key aspects of Google Chrome OS. We&#8217;re designing the OS to be fast and lightweight, to start up and get you onto the web in a few seconds. The user interface is minimal to stay out of your way, and most of the user experience takes place on the web. And as we did for the Google Chrome browser, we are going back to the basics and completely redesigning the underlying security architecture of the OS so that users don&#8217;t have to deal with viruses, malware and security updates. It should just work.</em></p></blockquote>
<p>Right on. Trey and I always felt that this would happen sooner rather than later, as most people use software that is hosted in the cloud of the internet. Google, Google Apps, Gmail, Google Docs, Google Maps, Zoho, Facebook, etc&#8230; more and more software is online rather than offline, and all the user needs is a system with a browser to do their daily business.</p>
<p>This couldn&#8217;t come at a better time, with the backlash from Vista&#8217;s performance, confusing / labor intensive Linux distro,  and expense of an Apple system. I wish Google the best with this product, because it could really lower the cost of entry barrier for home PCs and internet surfers, and further drive the hot market of Netbooks right now.</p>
<p>Source: <a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html" target="_blank">Google Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/tech-stuff/google-announces-google-chrome-os.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enabling Data Tethering on the iPhone</title>
		<link>http://www.delawarewebdesigner.com/tech-stuff/enabling-data-tethering-on-the-iphone.htm</link>
		<comments>http://www.delawarewebdesigner.com/tech-stuff/enabling-data-tethering-on-the-iphone.htm#comments</comments>
		<pubDate>Wed, 01 Jul 2009 16:27:41 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[iPhone / iPod Touch]]></category>
		<category><![CDATA[iPhone Apps]]></category>
		<category><![CDATA[iPhone AppStore]]></category>
		<category><![CDATA[iPhone Development]]></category>
		<category><![CDATA[iPhone Jailbreak]]></category>
		<category><![CDATA[iPhone Software]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[enabling iPhone Tethering]]></category>
		<category><![CDATA[iPhone Internet Tethering]]></category>
		<category><![CDATA[iPhone Tethering]]></category>
		<category><![CDATA[unlocking iPhone Tethering]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/tech-stuff/enabling-data-tethering-on-the-iphone.htm</guid>
		<description><![CDATA[Inclind purchased iPhone 3Gs phones for each employee last week, launching us into the future of handheld cellular devices. I was a little sour on the phone in the past, mainly due to cost, locked-in carrier agreement and proprietary platform. Now, with the AppStore and 3.0 Firmware, the iPhone is a solid contender in the [...]]]></description>
			<content:encoded><![CDATA[<p>Inclind purchased iPhone 3Gs phones for each employee last week, launching us into the future of handheld cellular devices. I was a little sour on the phone in the past, mainly due to cost, locked-in carrier agreement and proprietary platform. Now, with the AppStore and 3.0 Firmware, the iPhone is a solid contender in the mobile market with over 30 million units sold.Hopefully I will be writing regularly about the iPhone. I spend a lot of time with the device and testing out Apps.</p>
<p>The new 3.0 Firmware introduced a lot of new features that the community has been demanding since the iPhone first went on sale.</p>
<p>You can see most of the new features here:<a href="http://www.apple.com/iphone/softwareupdate/"></a><a href="http://www.apple.com/iphone/softwareupdate/"></a></p>
<p><a href="http://www.apple.com/iphone/softwareupdate/">http://www.apple.com/iphone/softwareupdate/</a><a href="http://www.apple.com/iphone/softwareupdate/"></a><a href="http://www.apple.com/iphone/softwareupdate/"></a><a href="http://www.apple.com/iphone/softwareupdate/"></a></p>
<p>The one thing that stuck out to me as &#8216;missing&#8217; when I was looking through the phone was the Tethering functionality. Tethering lets you use an external device such as a MacBook to use your phones data connection to access the internet. Previously, that page did not say AT&amp;T was not supporting tethering, and you cannot find this option anywhere on the iPhone right now. Of course, with a jailbroken iPhone, you can access anything. That voids warranty though, so we don&#8217;t want to do that. But, there is a way to enable iPhone Tethering without jailbreaking the phone!</p>
<p>**Disclaimer: It is against AT&amp;T TOS to use data tethering, so use at your own risk!**</p>
<p><strong>On a Mac</strong>:</p>
<p>First, you need to have iTunes 8.2, an iPhone 3G or iPhone 3GS, and 10.5.x Leopard Operating System for iPhone Tethering to work.</p>
<ol>
<li>Download the <a href="http://cache.gizmodo.com/assets/iphonetetheringfile.dmg" target="_blank">AT&amp;T carrier settings file</a> (thanks <a href="http://www.gizmodo.com" target="_blank">Gizmodo</a>)</li>
<li>Connect your iPhone to your Mac via dock or USB cable</li>
<li>Copy the following text: defaults write com.apple.iTunes carrier-testing -bool TRUE</li>
<li>Open the Terminal app, and paste the text you just copied in Step 3</li>
<li>Sync your iPhone in iTunes, when it says Ok to Disconnect, hold the Option key and click Restore in iTunes</li>
<li>It will ask what file to restore. Select the ATT_US.ipcc file you downloaded in Step 1 and click Restore</li>
</ol>
<p>Now you can go into your Settings on the iPhone and see that Internet Tethering is a new option!</p>
<p>If you are using Windows, the steps are slightly different. You can view the steps over at <a href="http://www.krillr.com/blog/3DPQHBZ3/i-have-tethering-and-mms-on-my-iphone-and-yes-im-on-att" target="_blank">krillr.com</a>.</p>
<p>Be careful! AT&amp;T does not want people using iPhone Internet Tethering right now because they do not have a data plan for that, so if you go online don&#8217;t transfer a lot of data and garner attention.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/tech-stuff/enabling-data-tethering-on-the-iphone.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Drinking the Kool-Aid</title>
		<link>http://www.delawarewebdesigner.com/rants-raves/drinking-the-kool-aid.htm</link>
		<comments>http://www.delawarewebdesigner.com/rants-raves/drinking-the-kool-aid.htm#comments</comments>
		<pubDate>Mon, 09 Mar 2009 12:14:36 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[iPhone / iPod Touch]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Rants & Raves]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/rants-raves/drinking-the-kool-aid.htm</guid>
		<description><![CDATA[So, I recently purchased a MacBook out of frustration. What I thought would be a labor of love was an initial confusing 30 minute learning curve, and now I pwn that new OS. After trying to get Windows 7 to install, XP Pro to install, and after that Ubuntu (even Ubuntu failed) on an older [...]]]></description>
			<content:encoded><![CDATA[<p>So, I recently purchased a MacBook out of frustration. What I thought would be a labor of love was an initial confusing 30 minute learning curve, and now I pwn that new OS.</p>
<p>After trying to get Windows 7 to install, XP Pro to install, and after that Ubuntu (even Ubuntu failed) on an older Windows laptop, I gave up. Each one had a different bitchy reason as to why it would refuse to install. After a few hours of trying every trick in the book I basically said f it. I had really hoped Windows 7 would have installed, because I think its a GREAT effort from Microsoft, best they&#8217;ve done since XP dropped over 8 years ago. Cest la vie.</p>
<p>I guess my Mac-hating was pretty justified over the years, but now theres no reason to not consider one from Apple. The software compatibility / availability is pretty on par now, and Leopard OSX 10.5+ REALLY flies compared to their older versions. I went with the white 2.0 ghz core duo and added 4 GB of ram into it. I wasn&#8217;t concerned really about a 13&#8243; screen (its pretty big and viewable), at home I hook it into my 52&#8243; LCD if I need to see more.</p>
<p>Being 64 bit, Leopard can handle every bit of that RAM too. 32 bit OS like XP and Vista cannot use more than 3GB of ram, which was always a point of stupidity to me. Why would software have such a limitation? Now I can run what I want without worrying that I am going to run out of memory. It has BootCamp standard, which means I could install XP/Vista if I chose to for dual boot purposes. Like if I needed to use something in Windows.</p>
<p>Honestly? I haven&#8217;t even reached for an install disc, and I don&#8217;t think I am going to. I am even considering getting a 24&#8243; iMac this year to replace my aging desktop.</p>
<p>Pete and I have a feeling Microsoft will be on the way out in the next 5 or 10 years. It takes forever to explain, but using another OS for an hour like OSX or Ubuntu and its clearer to see why; it all just <strong>works</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/rants-raves/drinking-the-kool-aid.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Blazing New Trail with &#8220;Chrome&#8221;</title>
		<link>http://www.delawarewebdesigner.com/tech-stuff/google-blazing-new-trail-with-chrome.htm</link>
		<comments>http://www.delawarewebdesigner.com/tech-stuff/google-blazing-new-trail-with-chrome.htm#comments</comments>
		<pubDate>Tue, 02 Sep 2008 20:09:05 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/tech-stuff/google-blazing-new-trail-with-chrome.htm</guid>
		<description><![CDATA[At 3 PM today, Google released their brand new internet browser, aptly titled &#8220;Chrome&#8221;. (Chrome is a term that describes a viewing window of an interactive application). Based off of WebKit, a 100% standards compliant browser open source application framework which also serves as the basis for Safari and Google Android. Since its based off [...]]]></description>
			<content:encoded><![CDATA[<p>At 3 PM today, Google released their brand new internet browser, aptly titled &#8220;Chrome&#8221;. (Chrome is a term that describes a viewing window of an interactive application). Based off of WebKit, a 100% standards compliant browser open source application framework which also serves as the basis for Safari and Google Android. Since its based off of WebKit, most developers, well, competent developers, don&#8217;t have to worry about their sites breaking in this new browser. With WebKit as its base, it guarantees a near 100% compliant site, if you did it correctly.</p>
<p>I myself was a skeptic and thought oh boy, another browser. It&#8217;s difficult enough with 4 browsers (IE, Firefox, Safari, Opera) to maintain a level of consistency and future proofing of your markup and javascript to not only work now, but work a year or two from that point. I was relieved when I found out Chrome is founded on WebKit and not some proprietary engine like Internet Explorer is, which would be quite silly.</p>
<p>I tried to benchmark the loading speed of the browser, and well, I couldn&#8217;t. This little baby is faster than Opera on a good day, and at worst, Firefox on a bad day (its a good thing). I made sure to clear out all history, cache, and cookies then tried again. Still lightening fast. I tried everything I could think of that would slow me down some from Digg to Scriptaculous to Design Melt Down to Ebay and CNN. Nothing. The sites loaded up before I could blink or release the Enter key. Even some javascript heavy sites didn&#8217;t bog down this browser at all. Major points in my book.</p>
<p>So, while I had trepidation last night about the arrival of yet another browser, Google really has a homerun product here. With a stripped down browser like this, organized fairly well, it should do great on the market and generate a lot of buzz. Chrome will be replacing Firefox for me at home, and if it continues at this pace, I&#8217;ll use it as my main at the office as well. Somewhere, Steve Ballmer is exploding in anger.</p>
<p><a href="http://www.google.com/chrome" target="_blank">Learn more about Chrome &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/tech-stuff/google-blazing-new-trail-with-chrome.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dolly Parton&#8217;s Imagination Library Website Launches</title>
		<link>http://www.delawarewebdesigner.com/tech-stuff/dolly-partons-imagination-library-website-launches.htm</link>
		<comments>http://www.delawarewebdesigner.com/tech-stuff/dolly-partons-imagination-library-website-launches.htm#comments</comments>
		<pubDate>Tue, 02 Sep 2008 15:01:31 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Coldfusion Development]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Custom Website Design]]></category>
		<category><![CDATA[Delaware Web Design]]></category>
		<category><![CDATA[Delaware Website Design]]></category>
		<category><![CDATA[Graphic Design]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/tech-stuff/dolly-partons-imagination-library-website-launches.htm</guid>
		<description><![CDATA[Inclind Inc has launched Dolly Parton&#8217;s Imagination Library website. Utilizing our powerful content management system (CMS) publishing platform, managing their website is quick and painless and allows them to get their important message out. Their objective is to supply a book a month to children aged 12 months to 5 years to promote literacy at [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 5px auto" align="center"><a href="http://www.imaginationlibraryde.org/" rel="attachment" title="dolly.jpg" border="none" target="_blank"><img src="http://www.delawarewebdesigner.com/wp-content/dolly.jpg" alt="dolly.jpg" style="border: 1px solid #eeeeee; padding: 3px" border="0" /></a></p>
<p>Inclind Inc has launched <a href="http://www.imaginationlibraryde.org/" target="_blank">Dolly Parton&#8217;s Imagination Library</a> website. Utilizing our powerful content management system (CMS) publishing platform, managing their website is quick and painless and allows them to get their important message out. Their objective is to supply a book a month to children aged 12 months to 5 years to promote literacy at a crucial time in the development of young minds. Opportunity and education are cornerstones of our country and its great that foundations like this exist to help future generations get a head start.</p>
<h3>How Dolly Parton&#8217;s Imagination Library Started</h3>
<p>Dolly Parton started this program in 1996 in her home county of Sevier, Tennessee, as a way to give back to her community and to promote literacy. She personally paid for each newborn child to receive a new board book, “The Little Engine that Could” by Watty Piper. Those children were also sent one new hard back book each month until they were five years old. On their fifth birthday, they received their last book, “Look Out, Kindergarten, Here I Come” a diploma, and a personal letter from Dolly for completing the program.</p>
<h3>Here&#8217;s How it Works</h3>
<p>A community must make the program accessible to all preschool children in their area. The community pays for the books and mailing, promotes the program, registers the children, and enters the information into the database. From there The Dollywood Foundation takes over and manages the system to deliver the books to the home.</p>
<p>Since 2001, the Dollywood Foundation has helped individual communities provide millions of books to children across America. The Imagination Library now provides books to children in over 700 communities, nearly all 50 states and two other countries including Canada and the UK.</p>
<h3>About the Books</h3>
<p>Penguin Group USA is the exclusive supplier of all of the books for the program. The free books are carefully selected to help develop a child&#8217;s literacy and vocabulary skills through age appropriate, developmental reading materials. There is a national committee of individuals who meet each year to review the Library. The committee is composed of representatives from Parents as Teachers National Center, the International Reading Association, the University of Tennessee, Rutgers University, and the teaching profession. New titles are introduced each year so younger siblings will not receive the exact same books as their older siblings.</p>
<p><a href="http://www.imaginationlibraryde.org/" target="_blank">Visit Dolly Parton&#8217;s Imagination Library Website »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/tech-stuff/dolly-partons-imagination-library-website-launches.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrade Your Browser</title>
		<link>http://www.delawarewebdesigner.com/blurbs/upgrade-your-browser.htm</link>
		<comments>http://www.delawarewebdesigner.com/blurbs/upgrade-your-browser.htm#comments</comments>
		<pubDate>Thu, 22 May 2008 14:35:24 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Blurbs]]></category>
		<category><![CDATA[Coldfusion]]></category>
		<category><![CDATA[Coldfusion Development]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Custom Website Design]]></category>
		<category><![CDATA[Delaware Web Design]]></category>
		<category><![CDATA[Delaware Web Development]]></category>
		<category><![CDATA[Delaware Web Hosting]]></category>
		<category><![CDATA[Delaware Website Design]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/blurbs/upgrade-your-browser.htm</guid>
		<description><![CDATA[If you&#8217;re still using Internet Explorer, it&#8217;s primetime to upgrade your browser. Mozilla Firefox is about to release its 3rd edition of their web browser, with many enhancements, new features, higher security and more. If you&#8217;re looking to get the most out of your web experience, Mozilla Firefox 3 is -the- best browser to surf [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re still using Internet Explorer, it&#8217;s primetime to upgrade your browser. Mozilla Firefox is about to release its 3rd edition of their web browser, with many enhancements, new features, higher security and more. If you&#8217;re looking to get the most out of your web experience, Mozilla Firefox 3 is -the- best browser to surf the net.</p>
<p>Using the internet should be fun, not a hassle. It&#8217;s only going to get better from here. Lets take a look at some of the new features of Firefox 3:</p>
<p><a href="http://lifehacker.com/392160/top-10-firefox-3-features" target="_blank">From lifehacker:</a> The newest version of our favorite open source web browser, Mozilla Firefox 3, offers dozens of new features and fixes, but only a handful will make the most dramatic difference in your everyday browsing. After 17 months of alphas and betas, Mozilla&#8217;s finally made a feature-complete <a href="http://www.mozilla.com/en-US/firefox/3.0rc1/releasenotes/">release candidate</a> available, so it&#8217;s time to spotlight the biggest improvements that will make &#8220;Gran Paradiso&#8221; the browser to beat. Nearly everything in the open-source app has gotten a second look from the minds at Mozilla, from back buttons to bookmarks, address bars to add-ons, passwords to performance, and the changes will make Firefox 3 worth the upgrade come its official release date, slated for sometime next month. Let&#8217;s take a look at the 10 best upgrades in Firefox 3, and how they&#8217;ll bolster your browsing, after the jump.<em>Note:</em> Firefox 3 hasn&#8217;t been officially released yet—<a href="http://developer.mozilla.org/devnews/index.php/2008/05/16/firefox-3-release-candidate-now-available-for-download/">a public preview release is available and intended for testers only</a>. While it&#8217;s a very stable preview, only use it if you&#8217;re willing to deal with bugs and instability as the Mozilla teams ready the official release.</p>
<p>That said, our favorite Firefox 3 features include:</p>
<h3 style="font-size: 120%; margin-top: 20px">10. Souped-up Add-ons manager</h3>
<p><img src="http://lifehacker.com/assets/resources/2008/05/ff3_addons.png" alt="ff3_addons.png" class="right" align="right" height="186" width="264" />A big part of what makes Firefox so special to power users is its extensibility with extensions, add-ons, plug-ins and themes, and Firefox 3&#8242;s Add-ons dialog got the attention it deserved. The Fox&#8217;s Add-Ons menu is more robust and intuitive on at least two fronts. You can search and install extensions and themes right from the pop-up box, no browsing required. Also, a <a href="http://lifehacker.com/photogallery/Firefox-3-Tour/1000147232">new plug-in manager</a> lets you enable and disable third-party helpers like Flash, QuickTime, and anything else that makes content work (and causes you grief).</p>
<h3 style="font-size: 120%; margin-top: 20px">9. More intuitive interface overall</h3>
<p><img src="http://lifehacker.com/assets/resources/2008/05/zoom.png" alt="zoom.png" class="right" align="right" height="183" width="269" />Mozilla tweaked and updated a whole lot of little things here and there throughout Firefox 3, which amounts to a big overall boost in usability. Most noticeably when you first switch, the Back button only appears on the address bar if there is a page to go back to, and when it does, it&#8217;s bigger and easier to click. Users who want to make sites with small text more readable permanently are in luck; Firefox 3 can increase the size of images <em>and</em> text, or just the text, on hard-to-read sites. In addition, Firefox 3 applies favicons more consistently to bookmarks, you can click a site&#8217;s favicon to get extended site identification information, you can resize the search box to hold more than two words, and the find-on-page search box automatically grabs the currently selected word, just to name a few new UI improvements.<br />
In the long term, once webapps catch up, Firefox 3 will let you do really neat stuff in your browser, like register your favorite webapps to open certain file types, and access your online data even when you&#8217;re not connected to the &#8216;net. To get a taste, see how you can <a href="http://lifehacker.com/392287/set-firefox-3-to-launch-gmail-for-mailto-links">configure Firefox 3 to launch Gmail for mailto links</a>.</p>
<h3 style="font-size: 120%; margin-top: 20px">8. Stronger phishing and malware protection</h3>
<p><img src="http://lifehacker.com/assets/resources/2008/05/ff3_phishing.jpg" alt="ff3_phishing.jpg" class="right" align="right" height="98" width="220" />Firefox 3 has stronger filters and protection against malware, phishing sites, cookies, and other tools that compromise privacy and security. A malware warning shows up when you visit sites known to install malicious software, Firefox 3 doesn&#8217;t show the content of knock-off sites (like PayPal &#8220;Update Your Account&#8221; phishing scams) by default, and Firefox 3 checks against Google&#8217;s ever-growing blacklist of phishing sites. Now you can feel even better switching your less tech-aware relatives over to the open-source browser.</p>
<h3 style="font-size: 120%; margin-top: 20px">7. Improved download manager</h3>
<p><img src="http://lifehacker.com/assets/resources/2008/05/ff3_downloads.png" alt="ff3_downloads.png" class="right" align="right" height="139" width="221" />Never wonder where a download came from, or went to, again. Gran Paradiso&#8217;s download manager lets you search through recent files, resume big downloads after a crash or restart, and lets you keep an eye on your transfers in the status bar.</p>
<h3 style="font-size: 120%; margin-top: 20px">6. Native looks for every system</h3>
<p><img src="http://lifehacker.com/assets/resources/2008/05/ff3_toolbars.jpg" alt="ff3_toolbars.jpg" class="right" align="right" height="158" width="193" />Your browser is a serious part of your computer time, so having it look like nothing else on your system can be seriously annoying. Firefox&#8217;s designers made system integration a priority with this release, and it shows—even Windows XP&#8217;s and Vista&#8217;s button layouts have subtle differences in color and shading. There&#8217;s differences at deeper levels, too, with Cover Flow-type styling in the add-ons manager for OS X, transparencies in key places in Vista and OS X, and other tweaks that make your browser feel like a natural extension of your system.</p>
<h3 style="font-size: 120%; margin-top: 20px">5. Streamlined &#8220;Remember password&#8221; handling</h3>
<p><img src="http://lifehacker.com/assets/resources/2008/05/ff3_signin.png" alt="ff3_signin.png" class="right" align="right" height="74" width="227" />No more guessing whether you&#8217;re saving the right password or clicking &#8220;Cancel&#8221; on unnecessary pop-up requests. Gran Paradiso only asks you to utilize its password-saving function once you&#8217;re already in and sure everything worked, and it won&#8217;t block you from seeing the logged-out version of a page if you don&#8217;t want to sign in.</p>
<h3 style="font-size: 120%; margin-top: 20px">4. Smart bookmarks</h3>
<p><img src="http://lifehacker.com/assets/resources/2008/05/smart_bookmarks.png" alt="smart_bookmarks.png" class="right" align="right" height="97" width="233" />Much like iTunes&#8217; Smart Playlists, Firefox 3&#8242;s new Smart Bookmarks function can analyze your browsing habits and create lists of links based on it. The default bookmark toolbar only comes with three standards, &#8220;Most Visited,&#8221; &#8220;Recently Bookmarked,&#8221; and &#8220;Recent Tags&#8221; (more on that later), but it&#8217;s none too hard to <a href="http://lifehacker.com/387944/how-to-make-your-own-smart-bookmarks-in-firefox-3">make your own</a>.</p>
<h3 style="font-size: 120%; margin-top: 20px">3. Places Organizer replaces the Bookmark Manager</h3>
<p><img src="http://lifehacker.com/assets/resources/2008/05/places_organizer.png" alt="places_organizer.png" class="right" align="right" height="152" width="216" />Previous versions of Firefox&#8217;s bookmark organizer have been pretty utilitarian affairs that make you drag and drop your links around nested folders. With Firefox 3&#8242;s new Places Organizer, those with reams of URLs can find them using boolean rule searches and multi-column results, as well as keep them better organized with a tagging system. Better still, you can save those smart searches for when you next need them.</p>
<h3 style="font-size: 120%; margin-top: 20px">2. Smart Location Bar learns how you browse</h3>
<p><img src="http://lifehacker.com/assets/resources/2008/05/awesomebar.png" alt="awesomebar.png" class="right" align="right" height="130" width="220" />Like a personal assistant who telepathically knows when you&#8217;re going to need just the right phone number (or Starbucks fix), Firefox 3&#8242;s address bar, now dubbed the Smart Location Bar, helps you get to your frequently visited, or recently discovered, sites in super-quick fashion. That application you just read about on Lifehacker, but can&#8217;t remember the name? Type &#8220;li&#8221; into your address bar, and Firefox instantly pulls the relevant sites from your history. The bar also learns through repetition, so the next time you start searching with &#8220;li,&#8221; it knows you&#8217;re looking for Lifehacker, not Linux.</p>
<h3 style="font-size: 120%; margin-top: 20px">1. Insanely improved performance</h3>
<p><a href="http://lifehacker.com/assets/resources/2008/05/browser_memory_test1.php" onclick="window.open('http://lifehacker.com/assets/resources/2008/05/browser_memory_test1.php','popup','width=921,height=728,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://lifehacker.com/assets/resources/2008/05/browser_memory_test1-thumb.jpg" class="center" style="display: block; float: none" height="390" width="494" /></a> It&#8217;s not flashy, and it doesn&#8217;t have any social networking features, but Firefox 3&#8242;s actual performance is the best reason anyone should consider upgrading, or making the switch to the &#8216;fox. Firefox&#8217;s engineers claim that their third major release is 9.3 times faster than Internet Explorer 7 in JavaScript performance, and 2.7 times faster than Firefox 2. This means snappier browser performance when you&#8217;re using webapps like Gmail, Remember the Milk, and more. Even more important, especially for Mac users, is the improved memory usage and more than 15,000 improvements that make for a less crash-prone browser. I&#8217;ve seen noticeable speed-ups in page loading in Linux, XP, and Vista, but the real reason I&#8217;ve switched over to using Release Candidate 1 is that I haven&#8217;t had to cross my fingers every time a Flash-based video loads. <em>Graphed comparison of memory use amongst browsers in Vista courtesy of <a href="http://ejohn.org/blog/firefox-3-memory-use/">John Resig</a>.</em></p>
<p>As you can tell, we&#8217;re completely geeked out about the upcoming Firefox 3 release. For more about the new version of the browser, check out our continuing coverage:</p>
<ul>
<li><a href="http://lifehacker.com/376551/the-complete-field-guide-to-testing-firefox-3">The Complete Field Guide to Testing Firefox 3</a></li>
<li><a href="http://lifehacker.com/355973/make-your-extensions-work-with-the-firefox-3-beta">Make Your Extensions Work with Firefox 3</a></li>
<li><a href="http://lifehacker.com/377515/firefox-3-beta-5-easter-egg">Firefox 3 Robots Easter Egg</a></li>
<li><a href="http://lifehacker.com/392287/set-firefox-3-to-launch-gmail-for-mailto-links">Set Firefox 3 to Launch Gmail for mailto Links</a></li>
<li><a href="http://lifehacker.com/392293/firefox-3-rc-1-portable-edition-now-available">Firefox 3 RC 1 Portable Edition Now Available</a></li>
</ul>
<p>Source: <a href="http://lifehacker.com/392160/top-10-firefox-3-features" target="_blank">Lifehacker</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/blurbs/upgrade-your-browser.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User Security</title>
		<link>http://www.delawarewebdesigner.com/tech-stuff/user-security.htm</link>
		<comments>http://www.delawarewebdesigner.com/tech-stuff/user-security.htm#comments</comments>
		<pubDate>Fri, 02 May 2008 16:55:12 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Delaware Web Design]]></category>
		<category><![CDATA[Delaware Web Designer]]></category>
		<category><![CDATA[Delaware Web Development]]></category>
		<category><![CDATA[How To's]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tech Stuff]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/tech-stuff/user-security.htm</guid>
		<description><![CDATA[User security is a pretty big deal these days, and as I prep my follow up to Avoid Identity Theft I had another thought to write about. One of my favorite things to do is guess someones password. Why? Because I can usually guess it. After analyzing someones intelligence and technical prowess, you can gauge [...]]]></description>
			<content:encoded><![CDATA[<p>User security is a pretty big deal these days, and as I prep my follow up to <a href="http://www.delawarewebdesigner.com/blurbs/avoid-identity-theft-pt-1.htm" target="_blank">Avoid Identity Theft</a> I had another thought to write about.</p>
<p>One of my favorite things to do is guess someones password. Why? Because I can usually guess it. After analyzing someones intelligence and technical prowess, you can gauge how difficult their password probably is. Pete likes to throw random accounts at me and I&#8217;ll guess the password for fun. Usually get it on the third or fourth try. Ask Kevin Howett, I could regularly guess his AIM/MSN Zone passwords quite regularly back in the day.</p>
<p>Here&#8217;s the scary part. Most users in the real world day to day business use passwords that are far too weak to even have any use. You would be surprised how many people use &#8216;password&#8217; or &#8216;name123&#8242; or just &#8216;name&#8217; as a password. Tons. Or their birthdate, car, dogs name, or sports team name. This won&#8217;t protect you against anything, and choosing a password you can remember does not give you the benefits of a password at all. By just being a regular word like &#8216;toyota&#8217; or &#8216;bill123&#8242; any skilled cracker/hacker is going to get into your account no sweat.</p>
<p>Why? Well, they will tell you that choosing a password is hard. I don&#8217;t disagree with them. Having to think of something no one else is expected to discover is hard. There are services that can assist you with this.</p>
<p>A <a href="http://www.goodpassword.com/" target="_blank">good password</a> is one no one can guess, and one that would hinder even the best hacker or brute force app out there. That is why I am recommending to you to use <a href="http://www.goodpassword.com/" target="_blank">Good Password</a>. It will assist you in <a href="http://www.goodpassword.com/" target="_blank">generating a password randomly</a> or from a phrase of your liking.</p>
<p>While these may be hard for you to remember, don&#8217;t be discouraged. This is for your (and the company you work for) protection. I would suggest, if you must, to write them down and keep it in your wallet, or a place no one but you has access to.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/tech-stuff/user-security.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

