<?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; Content Management</title>
	<atom:link href="http://www.delawarewebdesigner.com/category/content-management/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>Looking to start a business? Go to Delaware LLC!</title>
		<link>http://www.delawarewebdesigner.com/websites/looking-to-start-a-business-go-to-delaware-llc.htm</link>
		<comments>http://www.delawarewebdesigner.com/websites/looking-to-start-a-business-go-to-delaware-llc.htm#comments</comments>
		<pubDate>Fri, 22 Jan 2010 21:11:18 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Custom Website Design]]></category>
		<category><![CDATA[Delaware Web Designer]]></category>
		<category><![CDATA[Delaware Web Developer]]></category>
		<category><![CDATA[Drupal 6.x]]></category>
		<category><![CDATA[Drupal Development]]></category>
		<category><![CDATA[drupal modules]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[create an llc in delaware]]></category>
		<category><![CDATA[delaware llc]]></category>
		<category><![CDATA[form an llc in delaware]]></category>
		<category><![CDATA[franchise tax]]></category>
		<category><![CDATA[harvard business services]]></category>
		<category><![CDATA[make an llc in delaware]]></category>
		<category><![CDATA[start a business in delaware]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/?p=522</guid>
		<description><![CDATA[Are you interested in starting a business in 2010? Why not! Start an LLC, it&#8217;s easy, and Rick Bell and the folks at Harvard Business Services can get you jumpstarted into forming your own LLC right away at Delaware LLC (http://www.delawarellc.com). What is an LLC? A limited liability company or a company with limited liability [...]]]></description>
			<content:encoded><![CDATA[<p>Are you interested in starting a business in 2010? Why not! Start an LLC, <a href="http://www.delawarellc.com" target="_blank">it&#8217;s easy</a>, and Rick Bell and the folks at Harvard Business Services can get you jumpstarted into <a href="http://www.delawarellc.com" target="_blank">forming your own LLC</a> right away at <a href="http://www.delawarellc.com" target="_blank">Delaware LLC (http://www.delawarellc.com)</a>.</p>
<p><a href="http://www.delawarellc.com" target="_blank"><img src="http://www.delawarewebdesigner.com/wp-content/delawareinc.jpg" alt="" title="delawareinc" width="550" height="339" class="aligncenter size-full wp-image-532" /></a></p>
<p>What is an <a href="http://en.wikipedia.org/wiki/Limited_liability_company" target="_blank">LLC</a>?</p>
<p><em>A limited liability company or a company with limited liability (abbreviated L.L.C. or LLC or W.L.L) in the law of the vast majority of United States jurisdictions is a legal form of business company that provides limited liability to its owners. Often incorrectly called a &#8220;limited liability corporation&#8221; (instead of company), it is a hybrid business entity having certain characteristics of both a corporation and a partnership or sole proprietorship (depending on how many owners there are). An LLC, although a business entity, is a type of unincorporated association and is not a corporation. The primary characteristic an LLC shares with a corporation is limited liability, and the primary characteristic it shares with a partnership is the availability of pass-through income taxation. It is often more flexible than a corporation and it is well-suited for companies with a single owner.</em></p>
<p><a href="http://www.delawarellc.com" target="_blank">Delaware LLC</a> is built on our custom Drupal CMS package. It was designed from the ground up by Creative Director Kevin Howett, and put together in a collaborative effort between newcomer Matt Oseland, Kevin Howett and Bryan Cordrey. Efforts were focused on a pleasing, business-minded design, effective search engine optimization, and funneling/encouraging customers to begin the process of <a href="http://www.delawarellc.com" target="_blank">forming an LLC in Delaware</a>.</p>
<p>As Rick&#8217;s customers go to him and Harvard Business Services for their LLC/incorporation expertise, Rick came to <a href="http://www.inclind.com" target="_blank">Inclind</a> for our expertise in clean, effective websites and powerful web application development under Drupal and our deep knowledge of content management systems such as Drupal. We also got to flex our system integration skills with Drupal, PHP and Coldfusion.</p>
<p><strong>About Delaware LLC &#038; Harvard Business Services</strong></p>
<p>With more than 25 years of experience, over 20,000 clients worldwide, and offices in both the United States and Europe, Harvard Business Services, Inc. is the premier provider of registered agent and business formation solutions. </p>
<p>Rick Bell formed Harvard Business Services, Inc. in March, 1981. Competitors then were big and well established. But Rick conducted business with a philosophy that allowed Harvard not just to survive but to thrive, emerging over time to become an acknowledged leader in the business formation industry.</p>
<p>His philosophy focused on a highly personalized style of customer service, understanding that beyond the mechanics of forming a business there were dreams and aspirations. A customer’s individual questions and concerns were important and special, and that’s how they were treated.</p>
<p>Rick also decided that a customer’s business formation costs should be fixed, predictable, affordable, and customers should get a lot of value for their money.</p>
<p>After almost 30 years and tens of thousands of business formations later, that same approach is still the signature of our culture and way of doing business: speed, efficiency, expertise and affordability, all delivered with the Harvard legacy of personal service.</p>
<p>Headquartered in Lewes, DE, Harvard Business Services, Inc. today is the leading provider of business formation services. Along with the Harvard Business Services brand of fast, personalized service, customers soon discover a number of other traits that set Harvard Business Services, Inc. far apart from the rest.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>If you have any questions regarding content management systems, Drupal, Coldfusion or systems integration, we are here to help. Give us a call at 302-856-2802, send us a tweet <a href="http://twitter.com/inclindinc" target="_blank">@inclindinc</a>, or stop by our office. We have been the leading web development firm in the area for over 10 years running and have fourty years of combined web experience under one roof.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/websites/looking-to-start-a-business-go-to-delaware-llc.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sync Files in Drupal Using Services and xmlrpc()</title>
		<link>http://www.delawarewebdesigner.com/how-tos/sync-files-in-drupal-using-services-and-xmlrpc.htm</link>
		<comments>http://www.delawarewebdesigner.com/how-tos/sync-files-in-drupal-using-services-and-xmlrpc.htm#comments</comments>
		<pubDate>Tue, 05 Jan 2010 14:24:08 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Custom Website Design]]></category>
		<category><![CDATA[Drupal Development]]></category>
		<category><![CDATA[drupal modules]]></category>
		<category><![CDATA[How To's]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[content distributing in drupal]]></category>
		<category><![CDATA[sync files with drupal xmlrpc]]></category>
		<category><![CDATA[using drupal xmlrpc]]></category>
		<category><![CDATA[using Services module in drupal]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/?p=486</guid>
		<description><![CDATA[In a previous entry we explored content syncing/distributing using the Services module and XMLRPC in Drupal. We learned how to create a method, its callback, how to invoke it through xmlrpc from another server, and how to create or update a node based on that data. Lets take a look at how you bring in [...]]]></description>
			<content:encoded><![CDATA[<p>In a <a href="http://www.delawarewebdesigner.com/tech-stuff/sync-drupal-content-using-services-and-xmlrpc.htm">previous entry</a> we explored content syncing/distributing using the <a href="http://www.drupal.org/project/services" target="_blank">Services</a> module and XMLRPC in Drupal. We learned how to create a method, its callback, how to invoke it through xmlrpc from another server, and how to create or update a node based on that data.</p>
<p>Lets take a look at how you bring in files as part of that node as well. From the previous example, before calling node_save($node), I call another function to process files. Name it however you wish. My module is called homes_sync, so my hooks and functions begin with that as per Drupal standards.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">homes_sync_get_files<span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">,</span> <span style="color: #000088;">$nid</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sessid</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// save the node object</span>
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></pre></td></tr></table></div>

<p>homes_sync_get_files() is passed the $node object and will return it after adding (or removing) data. To have a reliable file sync, we need to only update files if they are newer, and remove them if they no longer exist.</p>
<p>In this specific example, the project I am working on has two CCK file fields. One is for a floorplan (a PDF) and the other is an image field. In a node, there is only 1 floorplan, but can be up to 2 dozen images. If you had a more generic node that just has a CCK filefield of &#8216;client_files&#8217; for example, your code would be slightly different.</p>
<p>Before we add any files to the node, the first thing we should do is compare the list of files from the remote site to the local site. We start that off by getting $files via xmlrpc, and loading the node object if $node->nid is present. If any are found on the local site, and not the remote site, we can safely remove them from the node object. The two arrays are iterated over and remove files if necessary.</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
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> homes_sync_get_files<span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">,</span> <span style="color: #000088;">$nid</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sessid</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000088;">$files</span> <span style="color: #339933;">=</span> xmlrpc<span style="color: #009900;">&#40;</span>REMOTE_SERVICES_URL<span style="color: #339933;">,</span> <span style="color: #0000ff;">'file.getHomeFiles'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sessid</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: #666666; font-style: italic;">// first, compare list of files from parent server with local files</span>
	<span style="color: #666666; font-style: italic;">// if our local files has something the parent server doesnt have</span>
	<span style="color: #666666; font-style: italic;">// it was probably deleted. so we need to unset it from the node object</span>
	<span style="color: #666666; font-style: italic;">// when it gets passed back through node_save, cck should delete it proper</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nid</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000088;">$current_files</span> <span style="color: #339933;">=</span> node_load<span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nid</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: #000088;">$current_files</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #000088;">$files</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// we have files locally, but none on the parent server. 	</span>
			<span style="color: #666666; font-style: italic;">// remove all</span>
			<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_floorplan</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_image</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;">'Remote copy of @node no longer has files. Removing all local files for @node.'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'@node'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</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: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$current_files</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$files</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// build comparison arrays</span>
&nbsp;
			<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$files</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$remote_file</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$remote_files</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$remote_file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$current_files</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_floorplan</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$local_floorplan_file</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$local_files</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$local_floorplan_file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$current_files</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_image</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$local_image_file</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$local_files</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$local_image_file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// now lets see whats missing</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;">$local_files</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$remote_files</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
				<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$local_files</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$local_file</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: #339933;">!</span><span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$local_file</span><span style="color: #339933;">,</span> <span style="color: #000088;">$remote_files</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
						<span style="color: #666666; font-style: italic;">// parent site does not have this file in the node anymore</span>
						<span style="color: #000088;">$files_to_delete</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$local_file</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$files_to_delete</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$files_to_delete</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$files_to_delete</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$file_to_delete</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
						<span style="color: #666666; font-style: italic;">// CCK field arrays exist in node objects even if they have no data</span>
						<span style="color: #666666; font-style: italic;">// we can assume if the first record is NULL, there is no data</span>
&nbsp;
						<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_floorplan</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #009900; font-weight: bold;">NULL</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
							<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_floorplan</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$file_key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$floorplan</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;">$file_to_delete</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$floorplan</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
									watchdog<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'homes_sync'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'@file file does not exist on parent server anymore for @node. Removing.'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'@file'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$floorplan</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'@node'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</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: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_floorplan</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$file_key</span><span style="color: #009900;">&#93;</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>
&nbsp;
						<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_image</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #009900; font-weight: bold;">NULL</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
							<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_image</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$image_key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$image</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;">$file_to_delete</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$image</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
									watchdog<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'homes_sync'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'@image image does not exist on parent server anymore for @node. Removing.'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'@image'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$image</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'@node'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</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: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_image</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$image_key</span><span style="color: #009900;">&#93;</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: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$floorplan</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$image</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$remote_files</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$local_files</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Now that we are through with our deletion process, we can begin processing the remote files. For each file id ($fid) we call xmlrpc and get all the data and the file itself and bring it down to our local site. Based on the file extension, we begin building a query so we can look to see if this file exists locally, and what its last timestamp was. We do this so we know if a file should be replaced or not. For example, if you have MyHome.PDF on your local site, and a new version is uploaded on the remote site, simply comparing file names is not good enough. With a filename and a timestamp comparison, you are certain that it should be processed.</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
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$files</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$files</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$fid</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$remote_file</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> xmlrpc<span style="color: #009900;">&#40;</span>REMOTE_SERVICES_URL<span style="color: #339933;">,</span> <span style="color: #0000ff;">'file.get'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sessid</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fid</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: #000088;">$file</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #666666; font-style: italic;">// set filepath to save to</span>
				<span style="color: #666666; font-style: italic;">// decode our content file</span>
&nbsp;
				<span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filepath'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> file_directory_path<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">.</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$file_data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">base64_decode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'file'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #666666; font-style: italic;">// set content type db table, and field to search on.</span>
				<span style="color: #666666; font-style: italic;">// Load up the CCK field</span>
&nbsp;
				<span style="color: #000088;">$filetype</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'.'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</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: #000088;">$filetype</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'pdf'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #000088;">$content_table</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'content_type_homes'</span><span style="color: #339933;">;</span>
					<span style="color: #000088;">$fid_field</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'field_floorplan_fid'</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: #000088;">$content_table</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'content_field_image'</span><span style="color: #339933;">;</span>
					<span style="color: #000088;">$fid_field</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'field_image_fid'</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #000088;">$file_details</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>
&nbsp;
				<span style="color: #666666; font-style: italic;">// check if it's the same file coming over</span>
				<span style="color: #666666; font-style: italic;">// only applies if the node exists in the first place. otherwise its a new import on a new home</span>
				<span style="color: #666666; font-style: italic;">// if there is a file match we dont want to do anything but skip the creation</span>
				<span style="color: #666666; font-style: italic;">// i think if you dont keep the node-&gt;file field prefilled, and returns those fields empty, it causes the file deletion on the server</span>
&nbsp;
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nid</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
					<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> db_query<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT f.filename, f.fid, f.filepath, f.timestamp FROM {files} f
											INNER JOIN {<span style="color: #009933; font-weight: bold;">%s</span>} ctype ON f.fid = ctype.<span style="color: #009933; font-weight: bold;">%s</span>
										WHERE f.filename = '<span style="color: #009933; font-weight: bold;">%s</span>'&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content_table</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fid_field</span><span style="color: #339933;">,</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
&nbsp;
					<span style="color: #000088;">$file_details</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: #339933;">;</span>
&nbsp;
				<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$file_details</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$file_details</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'timestamp'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'timestamp'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
					<span style="color: #666666; font-style: italic;">// if file exists and has not changed remotely, skip it</span>
&nbsp;
					watchdog<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'homes_sync'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'@file already exists for @home. Skipping.'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'@file'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$file_details</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'@home'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</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>
&nbsp;
				<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> 
&nbsp;
					<span style="color: #666666; font-style: italic;">// save file</span>
					<span style="color: #666666; font-style: italic;">// REPLACE because we can be certain we will not have duplicate files</span>
					<span style="color: #666666; font-style: italic;">// so we will only ever receive unique ones here</span>
&nbsp;
					file_save_data<span style="color: #009900;">&#40;</span><span style="color: #000088;">$file_data</span><span style="color: #339933;">,</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filepath'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> FILE_EXISTS_REPLACE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
					<span style="color: #666666; font-style: italic;">//write record in files table</span>
					drupal_write_record<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'files'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$file</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_query<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT fid,filepath FROM {files} WHERE filename = '<span style="color: #009933; font-weight: bold;">%s</span>'&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #000088;">$file_details</span> <span style="color: #339933;">=</span> db_fetch_object<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
					<span style="color: #000088;">$file_data</span> <span style="color: #339933;">=</span> field_file_load<span style="color: #009900;">&#40;</span><span style="color: #000088;">$file_details</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fid</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
					watchdog<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'homes_sync'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Uploaded @file into @home.'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'@file'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$full_file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filename'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'@home'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</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>
&nbsp;
					<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$file_data</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
						<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$filetype</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'pdf'</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;">field_floorplan</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$file_data</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: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">field_image</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$file_data</span><span style="color: #339933;">;</span>
						<span style="color: #009900;">&#125;</span>
&nbsp;
					<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$node</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>After the file is saved to the file system and database, <a href="http://api.lullabot.com/field_file_load" target="_blank">field_file_load()</a> is called to load the file data. With a populated array now, we can add that to our node object by simply putting $node->field_floorplan[] = $file_data or $node->field_image[] = $file_data to append the existing array with data. The $node object is returned, and node_save($node) is immediately called, and our node data and file data are saved. Just like that, we have a simple content distribution system from one parent site to potentially many remote sites.</p>
<p>This is just a simple example, your mileage may vary. We are utilizing this technology to hook companies together under different Drupal installations on different servers. Using <a href="http://www.drupal.org/project/services" target="_blank">Services</a> you could also distribute <a href="http://www.drupal.org/project/views" target="_blank">Views</a> configurations, users, and system settings.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/how-tos/sync-files-in-drupal-using-services-and-xmlrpc.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Choose Drupal, Not Proprietary</title>
		<link>http://www.delawarewebdesigner.com/web-applications/choose-drupal-not-proprietary.htm</link>
		<comments>http://www.delawarewebdesigner.com/web-applications/choose-drupal-not-proprietary.htm#comments</comments>
		<pubDate>Sat, 02 Jan 2010 21:10:30 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Drupal Development]]></category>
		<category><![CDATA[drupal modules]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[open source cms]]></category>
		<category><![CDATA[proprietary cms are bad]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/?p=463</guid>
		<description><![CDATA[Near the end of 2008, Shaun and I sat down and made the collective decision to change direction in how we develop solutions for clients. It was becoming more obvious as the economy started going downhill, we needed to find a way to decrease development costs and increase efficiency to stay relevant. To do this, [...]]]></description>
			<content:encoded><![CDATA[<p>Near the end of 2008, Shaun and I sat down and made the collective decision to change direction in how we develop solutions for clients. It was becoming more obvious as the economy started going downhill, we needed to find a way to decrease development costs and increase efficiency to stay relevant. To do this, we knew we had to find a way to get things done faster and to stop reinventing the wheel.</p>
<p>Up to that point, we had done every project in Coldfusion hosted on Windows (and eventually Linux). There is a price tag that came with that though, whether it be hosting, Coldfusion licensing/upgrading, or development costs. As people were let go due to the economy, we also realized that it is difficult to support proprietary code for a proprietary solution someone else wrote. Why? Because that person is <strong>the only person</strong> in the world who knows why they made the application/code that way. When something goes wrong, you spend hours trying to find the issue, and even more time coming up with a tested reliable solution.</p>
<p>Proprietary solutions are sold as the best thing since sliced bread, but what customers don&#8217;t know is that they are getting locked in to that company. You can&#8217;t easily cut ties with a firm and take your site someplace else. Proprietary applications are the brainchild of whoever developed it. Therefore, when you need support, you won&#8217;t get it. That developer is long gone, but you are stuck with their code. These firms put you in a box and want to keep you there- that is the whole point of proprietary systems. Why do you think you can&#8217;t install OSX on a PC? Why do you think video games are built only for Windows, and not Linux or Mac? It&#8217;s all about client retention.</p>
<p>With that, we decided to start fresh and drop our proprietary Coldfusion CMS and Ecommerce platforms. Everyday we were tied up in fixing Inclind Commerce, or trying to meet the needs of each client for Inclind CMS. Pete and I went as fast as we could, but we pretty much knew there was no way to compete with the rest of the world. We turned to open source solutions to provide us a solid base to build off of, instead of starting each project from scratch (which all essentially had the same core functionality as it were). Developing Coldfusion in Fusebox framework is/was an absolute nightmare and probably still is. It is a disjointed unauthentic implementation of MVC style framework despite what they say, and requires you to hold its hand every step of the development process.</p>
<p>We knew WordPress would not be a solution at all. At best, it is a blogging platform and nothing more. You may read lots of articles that say how awesome WordPress is and is a CMS, but <strong>it is not a CMS</strong>. You&#8217;ll also see that those articles are written by designers too, not developers. It&#8217;s a pain in the ass to develop for, it has patches every other week, plugins are prone to XSS attacks or theme hacking, and cannot sustain the level of development we perform. It is not a prime-time application for websites.</p>
<p>We also tried Joomla. Knowing it was based around Mambo, my expectations were low for it based on the experience I had working with Mambo. Even 5 years later, it had an ugly backend, scattered developer community, and little support. The developer area is full of confusing rules, practices and jargon. Take this for example, from the Joomla extensions page:</p>
<blockquote><ul>
<li>Component &#8211; Mini-application to render the main page body.</li>
<li>Module &#8211; Renders small html blocks on any page.</li>
<li>Plugin &#8211; Changes code behavior dynamically.</li>
<li>Language &#8211; Provides language translation.</li>
<li>Ext. Specific Addon &#8211; Specific addon that requires another ext. to operate.</li>
<li>Tool &#8211; External application that helps with creating or managing Joomla! site.</li>
</ul>
</blockquote>
<p>What the hell is the difference? All 6 bullet points say the same thing, yet they are 6 different kinds of extensions for Joomla. We couldn&#8217;t see ourselves training clients around the confusing backend or having lowered development time with their overly complicated extension system and scary licensing rules.</p>
<p>We came to Drupal. I had heard about this one on and off in various circles, generally more good than bad. After a week of successful proof of concepts for different kinds of websites, we decided Drupal was the best solution for us in terms of what we needed to accomplish.</p>
<p>Out of the box, Drupal provides:</p>
<ul>
<li>Database abstraction</li>
<li>Auto-discovery of custom modules</li>
<li>Managed workflow</li>
<li>Robust Development API</li>
<li>Experienced and organized developer community</li>
<li>Intuitive administrative backend</li>
<li>Easy integration of custom modules through the hook system</li>
</ul>
<p>There is a solution for just about any scenario in the Drupal world. They have a very good approval process for modules. For example, if a module has security loopholes or bad coding practices, it will not be accepted until those are corrected (I don&#8217;t see this happening in other projects). If someone is trying to submit a module that already exists in some form, they are encouraged to merge efforts so the community isn&#8217;t littered with duplicate modules with the same functionality. It is differences like these that make Drupal the most widely used, highly regarded, best open source CMS bar none.</p>
<p>Our choice was the right one, proving vital in our relevance to custom web development and is a reason why we are still here and still the top choice for web design / web development / website building on the peninsula. We are able to deploy websites with a consistent codebase and backend in rapid succession. Clients are pleased with the added functionality and easier administrative UI. We&#8217;re at the point now where we can take Drupal and make it do anything we need it to do, big or small. We&#8217;ve been able to provide scalable solutions from the collaboration of many people providing a solid product. Instead of a couple of people making an in-house solution, we&#8217;re working with hundreds on a more polished result. We changed our entire development process so we could have a streamlined workflow and tighter communication between ourselves and the client with great results.</p>
<p>We have some pretty cool projects in the pipeline for 2010 utilizing Drupal and hope to have some things to show off in the next few months. iPhones, region-free real estate integration, content distribution, big boy stuff. Lookout.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/web-applications/choose-drupal-not-proprietary.htm/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Module Compatibility Issue(s) with Drupal Installation Profiles</title>
		<link>http://www.delawarewebdesigner.com/web-applications/make-a-drupal-module-compatible-with-install-profiles.htm</link>
		<comments>http://www.delawarewebdesigner.com/web-applications/make-a-drupal-module-compatible-with-install-profiles.htm#comments</comments>
		<pubDate>Mon, 30 Nov 2009 21:39:18 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Custom Website Design]]></category>
		<category><![CDATA[Delaware Website Design]]></category>
		<category><![CDATA[Drupal Development]]></category>
		<category><![CDATA[drupal modules]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[bug in drupal module?]]></category>
		<category><![CDATA[drupal install profile]]></category>
		<category><![CDATA[drupal install profile help]]></category>
		<category><![CDATA[drupal install profiles]]></category>
		<category><![CDATA[drupal installation profile]]></category>
		<category><![CDATA[program a drupal module]]></category>
		<category><![CDATA[write a drupal module]]></category>
		<category><![CDATA[writing install profile for drupal]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/?p=404</guid>
		<description><![CDATA[Drupal ships with a powerful method of packaging and redistributing your platform configuration called Install Profiles. It is similar to how Linux distro&#8217;s work, where you have the same core operating system, but extensive customization results in a different experience (Fedora, Ubuntu, Debian, etc). This allows us to employ rapid application development (RAD) after finalizing [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.drupal.org" target="_blank">Drupal</a> ships with a powerful method of packaging and redistributing your platform configuration called Install Profiles. It is similar to how Linux distro&#8217;s work, where you have the same core operating system, but extensive customization results in a different experience (Fedora, Ubuntu, Debian, etc). This allows us to employ rapid application development (RAD) after finalizing a build of a customized <a href="http://www.drupal.org" target="_blank">Drupal application</a>.</p>
<p>There are some &#8216;gotchas&#8217; though if you develop custom <a href="http://www.drupal.org" target="_blank">Drupal</a> modules like we do. During the install process, <a href="http://www.drupal.org" target="_blank">Drupal</a> only bootstraps the bare minimum to get the job done. I&#8217;ve noticed that if a module&#8217;s install routine calls functions outside of the .install file, the expected result tends to fail because files other than .install are not included during this loading process. It seems there is a special case for the file to be included, or you have to specify in your install profile to explicitly include the file (which takes a lot of time to do). To be specific, I have seen this happen with <a href="http://www.drupal.org/project/boost" target="_blank">Drupal Boost</a>, <a href="http://www.drupal.org/project/gallery_assist" target="_blank">Drupal Gallery Assist</a>, and our custom module <a href="http://www.delawarewebdesigner.com/web-applications/billboard-management-now-available.htm">Billboard</a>, which tipped me off to this problem. The issue has since been fixed in <a href="http://www.drupal.org/project/boost" target="_blank">Boost</a> (and <a href="http://www.delawarewebdesigner.com/web-applications/billboard-management-now-available.htm">Billboard</a>).</p>
<p>For us, the issue was creating custom <a href="http://www.drupal.org/project/imagecache" target="_blank">ImageCache</a> presets during a module&#8217;s install routine. This worked perfectly if you were going to the <a href="http://www.drupal.org" target="_blank">Drupal</a> Modules page and enabling <a href="http://www.delawarewebdesigner.com/web-applications/billboard-management-now-available.htm">Billboard</a>. What happens was the hook_install() function fired, included a definition file, and created presets based on that file. This fails during a <a href="http://www.drupal.org" target="_blank">Drupal</a> install profile, where you use a script to install and configure <a href="http://www.drupal.org" target="_blank">Drupal</a> automatically. This same issue occurs in <a href="http://www.drupal.org/project/gallery_assist" target="_blank">Gallery Assist</a>, and here is how I got around it:</p>
<p>It was pretty apparent that the code needed to come out of the install function. However, I needed to be sure that where I put the code would be compatible to the module loading process, and I&#8217;d need to be sure <a href="http://www.drupal.org/project/imagecache" target="_blank">ImageCache</a> was both installed and loaded before running the following code. Otherwise it would error out, and no <a href="http://www.drupal.org/project/imagecache" target="_blank">ImageCache</a> presets would be created.</p>
<p><a href="http://www.drupal.org" target="_blank">Drupal</a> has a crucial hook for modules. hook_init() allows you to perform tasks every time the module is loaded. In this case, I wanted to tell it to run a function and check for two default <a href="http://www.drupal.org/project/imagecache" target="_blank">ImageCache</a> presets. If they didn&#8217;t exist, create them. This approach solves three issues:</p>
<ol>
<li>Getting around install profile limitations</li>
<li>Provide default <a href="http://www.drupal.org/project/imagecache" target="_blank">ImageCache</a> presets for Billboard module when it is enabled</li>
<li>Recreate the <a href="http://www.drupal.org/project/imagecache" target="_blank">ImageCache</a> presets if they are accidentally deleted by the user (or developer <img src='http://www.delawarewebdesigner.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</li>
</ol>

<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
</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: #000000; font-weight: bold;">function</span> mymodule_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    mymodule_create_default_imagecache_presets<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> mymodule_create_default_imagecache_presets<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000088;">$default_size</span> <span style="color: #339933;">=</span> imagecache_preset_by_name<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mymodule-default'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$thumb_size</span> <span style="color: #339933;">=</span> imagecache_preset_by_name<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mymodule-thumb'</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;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$default_size</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">||</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$thumb_size</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</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: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$default_size</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
            <span style="color: #000088;">$mymodule_default_size</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;600&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$mymodule_thumbnail_size</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;80&quot;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #000088;">$presets</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>
&nbsp;
            <span style="color: #666666; font-style: italic;">// Default size.</span>
            <span style="color: #000088;">$presets</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span> <span style="color: #009900;">&#40;</span>
            <span style="color: #0000ff;">'presetname'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'mymodule-default'</span><span style="color: #339933;">,</span>
            <span style="color: #0000ff;">'actions'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span> <span style="color: #009900;">&#40;</span>
&nbsp;
                  <span style="color: #0000ff;">'weight'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'0'</span><span style="color: #339933;">,</span>
                  <span style="color: #0000ff;">'module'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'mymodule'</span><span style="color: #339933;">,</span>
                  <span style="color: #0000ff;">'action'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'imagecache_scale'</span><span style="color: #339933;">,</span>
                  <span style="color: #0000ff;">'data'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span> <span style="color: #009900;">&#40;</span>
                    <span style="color: #0000ff;">'width'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$mymodule_default_size</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'height'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'upscale'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>
                  <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&nbsp;
              <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
            <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            imagecache_preset_save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$presets</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$presets</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'actions'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'presetid'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> db_last_insert_id<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'imagecache_preset'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'presetid'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            imagecache_action_save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$presets</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'actions'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            imagecache_preset_flush<span style="color: #009900;">&#40;</span><span style="color: #000088;">$presets</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            imagecache_presets<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$default_size</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
            <span style="color: #000088;">$presets</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'thumb'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span> <span style="color: #009900;">&#40;</span>
            <span style="color: #0000ff;">'presetname'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'mymodule-thumb'</span><span style="color: #339933;">,</span>
            <span style="color: #0000ff;">'actions'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span> <span style="color: #009900;">&#40;</span>
&nbsp;
                  <span style="color: #0000ff;">'weight'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'0'</span><span style="color: #339933;">,</span>
                  <span style="color: #0000ff;">'module'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'mymodule'</span><span style="color: #339933;">,</span>
                  <span style="color: #0000ff;">'action'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'imagecache_resize'</span><span style="color: #339933;">,</span>
                  <span style="color: #0000ff;">'data'</span> <span style="color: #339933;">=&gt;</span> 
                    <span style="color: #990000;">array</span> <span style="color: #009900;">&#40;</span>
                      <span style="color: #0000ff;">'width'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$mymodule_thumbnail_size</span><span style="color: #339933;">,</span>
                      <span style="color: #0000ff;">'height'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$mymodule_thumbnail_size</span><span style="color: #339933;">,</span>
                      <span style="color: #0000ff;">'upscale'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>
                  <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&nbsp;
              <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
            <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            imagecache_preset_save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$presets</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'thumb'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$presets</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'thumb'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'actions'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'presetid'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> db_last_insert_id<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'imagecache_preset'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'presetid'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            imagecache_action_save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$presets</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'thumb'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'actions'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            imagecache_preset_flush<span style="color: #009900;">&#40;</span><span style="color: #000088;">$presets</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'thumb'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            imagecache_presets<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #b1b100;">return</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>What that says basically is &#8216;hey, do our default <a href="http://www.drupal.org/project/imagecache" target="_blank">ImageCache</a> presets exist?&#8217; if not, it will create them at runtime.</p>
<p>I have tested this a handful of times with positive results, and, it works with install profiles since hook_init() is called after <a href="http://www.drupal.org" target="_blank">Drupal</a> loads. Food for thought for all you <a href="http://www.drupal.org" target="_blank">Drupal</a> developers out there. If there is a better way to achieve this feel free to leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/web-applications/make-a-drupal-module-compatible-with-install-profiles.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Billboard Management Now Available</title>
		<link>http://www.delawarewebdesigner.com/web-applications/billboard-management-now-available.htm</link>
		<comments>http://www.delawarewebdesigner.com/web-applications/billboard-management-now-available.htm#comments</comments>
		<pubDate>Fri, 30 Oct 2009 05:38:21 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Delaware Web Design]]></category>
		<category><![CDATA[Delaware Web Designer]]></category>
		<category><![CDATA[Delaware Web Developer]]></category>
		<category><![CDATA[Delaware Web Development]]></category>
		<category><![CDATA[Delaware Web Hosting]]></category>
		<category><![CDATA[Delaware Website Design]]></category>
		<category><![CDATA[Drupal Development]]></category>
		<category><![CDATA[drupal modules]]></category>
		<category><![CDATA[Showcase]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[billboard]]></category>
		<category><![CDATA[custom programming]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[drupal module development]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/?p=327</guid>
		<description><![CDATA[Billboards (renamed from &#8216;Banners&#8217;) is a brand new feature we have been rolling out in the last week for clients with very positive feedback. It is a self-contained Drupal module we built that requires only Imagecache. There are no real modules to facilitate managing header area images, other than HeaderImage and Ads. HeaderImage is &#8216;okay&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>Billboards (renamed from &#8216;Banners&#8217;) is a brand new feature we have been rolling out in the last week for clients with very positive feedback. It is a self-contained Drupal module we built that requires only Imagecache. There are no real modules to facilitate managing header area images, other than HeaderImage and Ads. HeaderImage is  &#8216;okay&#8217; but becomes too cumbersome from adding block after block, and Ads is entirely too beastly to achieve a simple implementation. Previously, it took knowledge of image gallery, taxonomy, blocks, images and paths to tie everything together to get a banner to appear. Even some of the more popular modules require you to create a View per banner. That is way too much to ask a client to do who is busy trying to run a successful business.</p>
<p>What are billboards (banners, header images, et al) you ask? Billboards are the large images you see on various websites that cover the header area. They typically contain marketing statements and imagery relevant to the websites purpose or page content.</p>
<p>Here are is one of my favorite examples:</p>
<p><a href="http://www.visitsoutherndelaware.com/" target="_blank">Visit Southern Delaware Tourism Website</a></p>
<p>See that set of images just above the content, fading in and out? That is a billboard. With this module, you can create those in a matter of seconds.</p>
<p>After some brainstorming between Shaun and myself, we set out to create something simple, as simple as creating a Page node, without all the aforementioned hassle. After a week of coding, testing, testing and testing, we achieved just that. Now all you have to do is say, I want to create a Billboard, drop in your images (with a cool AJAX in-place uploader, you don&#8217;t even have to leave the page), and tell it what pages to display on and you&#8217;re done! It couldn&#8217;t be any simpler. You also have additional options available to you such as changing how the images display (random image, or fade in/out between images), setting ALT and Title tags for SEO (Search Engine Optimization), and select a resize option to size the billboard to (which is controlled and hooked into ImageCache!). Oh, on top of all of that, it&#8217;s all output via a single block. That&#8217;s right, you can have 100 billboards and just one block. Once you place it in the region, depending on your site theme, it&#8217;s ready to go. In the future you will be able to add blocks so you can have a billboard in the header, and also the footer or sidebar if you wish.</p>
<p>We have been taking feedback from our clients over the months, taking notes during training meetings, and analyzing massive amounts of performance data from our servers. It&#8217;s been pretty quiet in the blog, Facebook and our Twitter and it&#8217;s because we&#8217;ve been very hard at work. Over the last few weeks Inclind has been working at refining what we do in order to better serve, better train, and better our clients online presence. The Billboard module is just the tip of the iceberg, a precursor to the ultra-streamlined CMS package we have been putting together. There is so much going on, I couldn&#8217;t even begin to write up what will be coming in the next few months.</p>
<p>We&#8217;re here to serve you, to help you get things done faster, and make it so you don&#8217;t need a PHd to manage your site.</p>
<p>If you have any questions regarding Billboards, Drupal, our refined CMS package or need help managing your content, we are here to help. Give us a call at 302-856-2802, send us a tweet <a href="http://twitter.com/inclindinc">@inclindinc</a>, or stop by our office.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/web-applications/billboard-management-now-available.htm/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Moonfruit? How about some Drupal.</title>
		<link>http://www.delawarewebdesigner.com/search-engine-optimization/moonfruit-how-about-some-drupal.htm</link>
		<comments>http://www.delawarewebdesigner.com/search-engine-optimization/moonfruit-how-about-some-drupal.htm#comments</comments>
		<pubDate>Wed, 01 Jul 2009 23:43:04 +0000</pubDate>
		<dc:creator>shaun</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[moonfruit]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/?p=142</guid>
		<description><![CDATA[So Moonfruit is actively conducting a twitter campaign (@moontweet). They are giving away a Macbook Pro everyday for 10 days. All just for tweeting them up a little. The timing couldn&#8217;t be any better given the successive news stories of Iran&#8217;s elections, Michael Jackson (and Billy Mays) death. There are tweeps buzzing around the twit-o-sphere [...]]]></description>
			<content:encoded><![CDATA[<p>So <a href="http://www.moonfruit.com">Moonfruit</a> is actively conducting a twitter campaign (@moontweet). They are giving away a Macbook Pro everyday for 10 days. All just for tweeting them up a little. The timing couldn&#8217;t be any better given the successive news stories of Iran&#8217;s elections, Michael Jackson (and Billy Mays) death. There are tweeps buzzing around the twit-o-sphere like spastic eight year-olds. A majority of which had no idea what Moonfruit even is:</p>
<blockquote><p><a href="http://twitter.com/zennette">zennette</a> is #moonfruit even a FRUIT?</p></blockquote>
<blockquote><p><a href="http://twitter.com/abllo">abllo</a> wots with all this #moonfruit buzz?</p></blockquote>
<p>Some are even formulating conspiracy theories:</p>
<blockquote><p><a href="http://twitter.com/SatansPuppet">SatansPuppet</a> #moonfruit sounds like a filthy hippy movement it&#8217;s just as bad as communism!!</p></blockquote>
<p>I am sitting back admiring Moonfruit&#8217;s marketing prowess and appreciating their product offerings. The <a href="http://en.wikipedia.org/wiki/DIY">DIY</a> website template systems have come a long way in the 10 years I&#8217;ve been building websites. At this point, I believe there are only a couple of systems capable of providing you with the tools you need to not only build a basic site but also extend it. Drupal and WordPress are the cream of the crop of base content management systems. Being built on PHP they are lightning fast, and also being open source allow you to customize and add on to the code providing your own solution. For example, integrating ecommerce with inventory management capabilities of <a href="http://www.microsoft.com/dynamics/default.mspx" target="_blank">Microsoft Dynamics</a>, like we did with <a href="http://www.dogfish.com" target="_blank">Dogfish Head Craft Brewery&#8217;s</a> new ecommerce store (<a href="https://www.dogfish.com/store/index.htm" target="_blank">https://www.dogfish.com/store/index.htm</a>).</p>
<p>But hats off to <a href="http://www.moonfruit.com" target="_blank">Moonfruit</a> for a smart marketing campaign.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/search-engine-optimization/moonfruit-how-about-some-drupal.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Carver City Tracklisting Revealed</title>
		<link>http://www.delawarewebdesigner.com/websites/carver-city-tracklisting-revealed.htm</link>
		<comments>http://www.delawarewebdesigner.com/websites/carver-city-tracklisting-revealed.htm#comments</comments>
		<pubDate>Sun, 22 Mar 2009 16:08:09 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Custom Website Design]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/websites/carver-city-tracklisting-revealed.htm</guid>
		<description><![CDATA[01. Hellions On Parade 02. …And She Never Returned 03. Rats In The Infirmary 04. Imaginary Threats 05. The Boardwalk Body 06. Plagued By Images 07. Karmaworks 08. Woe Is Me 09. A#1 Roller Rager 10. Old Carver’s Bones 11. The Era Of An End 12. Fisherman’s Wharf, Part One 13. Fisherman’s Wharf, Part Two [...]]]></description>
			<content:encoded><![CDATA[<p><strong>01. Hellions On Parade<br />
02. …And She Never Returned<br />
03. Rats In The Infirmary<br />
04. Imaginary Threats<br />
05. The Boardwalk Body<br />
06. Plagued By Images<br />
07. Karmaworks<br />
08. Woe Is Me<br />
09. A#1 Roller Rager<br />
10. Old Carver’s Bones<br />
11. The Era Of An End<br />
12. Fisherman’s Wharf, Part One<br />
13. Fisherman’s Wharf, Part Two<br />
14. Doubled Up On Trauma<br />
15. Stripped Your Speech</strong></p>
<p>This will be the first time the band has released a studio album with more than 11 tracks. It is expected that the total length of the album will also exceed 35 minutes, another first for the band, with potentially two instrumentals.</p>
<blockquote><p>What happens when four exceedingly different and distinct personalities come together to create heated, inspired music? Well, as CKY have shown over their ten plus years as a rock and roll force, it can lead to intelligent, provoking riffs and lyrics, meticulously detailed production combined with magical multi-textured melodies and heady drumming. But, “it also creates tension, tension that must be let off,” says the band’s singer/guitarist, Deron Miller.</p>
<p>Not too long ago, ten years of tension caught up with the West Chester, Pennsylvania outfit. Producer/guitarist Chad I Ginsburg says the band “ended up physically beating each other up at once on their tour bus,” CKY decided to take an extended timeout. “We needed a break, more than just the kind of break you think,” explained Miller. A break leaving drummer Jess Margera and bassist Matt Deis wondering what future, if any, there would be for CKY.”</p>
<p>The band were halfway through the writing of their forthcoming album, Carver City (which was recorded and produced by Ginsburg at his new Studio CIG in Pennsylvania), CKY found itself unable to resolve internal issues, resulting in the band being put on the backburner. For an entire year, Ginsburg and Miller did not speak, nor did Miller and Margera. This extremely uncomfortable time away from the thing they loved most would allow the band to overcome the many lingering obstacles standing in the way of their greatest effort to date, Carver City, which hits stores May 19.</p>
<p>“We could have just said, ‘F**k it. We’re not going to finish the record.’ But no one could make that decision.” says Ginsburg. “When we finally got together to resume the sessions, we didn’t talk about the past or what had happened. We didn’t look back. The passion came back blazing, in a distinctly different, effective and inspiring way. Yeah, We took a year off by accident. But, I really think it helped the music greatly.”</p>
<p>Carver City is CKY’s first album of new material since 2005’s An Answer Can Be Found, and the band’s first studio offering since its split from Island Records in 2006. “Having a studio at my house, gave me the ability to work on [Carver City] for literally several thousand hours, for two years straight,” Ginsburg says. “We added a ton of new textures. Layering has always been something we’ve been into; guitar textures alone tend to bore us, [Carver City] is sonically, our best effort to date.”</p>
<p>Thematically, Carver City is part fantasy, part autobiography. To assist in the completion of the album, CKY concocted the fictional town of Carver City to help them. Miller and Ginsburg inhabited this imagined municipality with notoriously bad luck with dozens of illusory characters, and even created an elaborate history behind Carver. At its heart, Carver City is a late 1970’s/early 80’s-era seaside resort town, much like Wildwood, New Jersey &#8211; a place Miller visited often with his family when he was a child. The song “The Boardwalk Body” was directly inspired by one such visit, when Miller says police discovered a corpse underneath the boardwalk. “Lyrically and musically, it all reminded us of that nostalgic beach vacation feeling,” Miller says.</p>
<p>Carver City (which features album art by Travis Smith) is perhaps CKY’s most challenging and creatively gratifying endeavor to date. Conceiving Carver City and its folklore helped the band complete what was becoming an exhaustive writing/recording process, at a time when they were still recovering from their near-meltdown. The band is back on solid ground again, back with a vengeance and a record that the band’s allegiant fans will appreciate. As Ginsburg puts it “the world didn’t end, CKY still exist and are better than ever.” “Trying to please each other and ourselves…that’s always the challenge,” says Ginsburg. “We wouldn’t release a note at this point if we didn’t dig what we were doing. This whole record was done basically without speaking to each other. It was just the music, and work, work, work all the time, with no bullshit. Learning to solely communicate through the music alone was tough but I know we did the right thing taking our time with Carver City.” This summer, to coincide with the resurgence of CKY and the release of Carver City, Ginsburg, Miller, Margera and Deis will be hitting the road bringing the unique energy and atmosphere that only a CKY show can.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/websites/carver-city-tracklisting-revealed.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>And It Just Keeps Getting Better&#8230;</title>
		<link>http://www.delawarewebdesigner.com/victories/and-it-just-keeps-getting-better.htm</link>
		<comments>http://www.delawarewebdesigner.com/victories/and-it-just-keeps-getting-better.htm#comments</comments>
		<pubDate>Thu, 12 Mar 2009 00:32:49 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Custom Website Design]]></category>
		<category><![CDATA[Showcase]]></category>
		<category><![CDATA[Victories]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/victories/and-it-just-keeps-getting-better.htm</guid>
		<description><![CDATA[First week of the Dogfish relaunch and their traffic has already doubled in size according to Google Analytics. After a few training sessions in-house as well as with sales staff from the Midwest via Cisco WebEx, all staff have raved how great their new set of wheels are. We are continuing to tweak their server [...]]]></description>
			<content:encoded><![CDATA[<p>First week of the <a href="http://www.dogfish.com" target="_blank">Dogfish relaunch</a> and their traffic has already doubled in size according to Google Analytics. After a few training sessions in-house as well as with sales staff from the Midwest via <a href="http://www.webex.com/" target="_blank">Cisco WebEx</a>, all staff have raved how great their new set of wheels are. We are continuing to tweak their server to handle all the incoming traffic and address other things that need adjusting now that we see how people are using the site. Once we have completed setting up their <a href="http://en.wikipedia.org/wiki/Content_Delivery_Network" target="_blank">Content Delivery Network (CDN)</a> and <a href="http://en.wikipedia.org/wiki/Cloud_computing" target="_blank">Cloud Computing</a> solution, things should really fly and we will be able to launch all the media aspects of the site (audio, video, HD content).</p>
<p>John, one of their sales guys out west, remarked how innovative, easy and exciting their new site is in terms of marketing, and &#8220;he&#8217;s been doing this for a very long time&#8221;.</p>
<p>We do all of our training sessions and troubleshooting via <a href="http://www.webex.com/" target="_blank">Cisco WebEx</a>, which allows us to teleconference via phone multiple people at once and share computer screens. That way we can walk people through managing their site in real time, from wherever. Additionally, via screen share, we can switch at any time and let them show us any problem areas they may be seeing, which is essential in a mixed browser, mixed PC/MAC hardware environment where static development environment variables cannot be guaranteed.</p>
<p>You&#8217;d be surprised at the differences in javascript handling alone between Safari (common on Mac) and Internet Explorer are (common on PCs), let alone rendering HTML and CSS. Which is why it&#8217;s also important that we stick as close to web standards as possible, so everyone has the same exact experience when using a website. Well, everyone but Internet Explorer 6 users. We do all we can to help you, but <a href="http://en.wikipedia.org/wiki/List_of_web_browsers" target="_blank">please upgrade your browsers</a>!</p>
<p>Of course, you don&#8217;t have to be Dogfish Head to enjoy the same level of service. We offer the same service to all our clients and/or future clients who are in need of a web design / web developement company of a higher calibre.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/victories/and-it-just-keeps-getting-better.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jiffy Lube, Undercutters, the Web, and You</title>
		<link>http://www.delawarewebdesigner.com/rants-raves/jiffy-lube-undercutters-the-web-and-you.htm</link>
		<comments>http://www.delawarewebdesigner.com/rants-raves/jiffy-lube-undercutters-the-web-and-you.htm#comments</comments>
		<pubDate>Sun, 08 Mar 2009 23:44:27 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<category><![CDATA[Blurbs]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Custom Website Design]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Rants & Raves]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/rants-raves/jiffy-lube-undercutters-the-web-and-you.htm</guid>
		<description><![CDATA[So we&#8217;ve returned safe and sober from the 2009 Drupalcon convention held in Washington, DC. I am kind of disappointed we didn&#8217;t whip up a cool seminar and show off some of the things we had worked on, or are working on. Next time we definately will. Though, who is going to spring for the [...]]]></description>
			<content:encoded><![CDATA[<p>So we&#8217;ve returned safe and sober from the 2009 Drupalcon convention held in Washington, DC. I am kind of disappointed we didn&#8217;t whip up a cool seminar and show off some of the things we had worked on, or are working on. Next time we definately will. Though, who is going to spring for the trip to Drupalcon Paris? Well, we&#8217;ll figure that out.</p>
<p>I had a lot of time to think during the convention, comparing and contrasting us from other developers. It wasn&#8217;t until I took my car into Jiffy Lube this weekend that I put it all together.<br />
<span id="more-133"></span><br />
You see, like Jiffy Lube, we provide a service. You bring your car to them, they dissect and analyze the cars performance, problem areas, etc, and discuss the solutions with you. They complete all of this in under a half hour. You can take your beater, BMW, or tricycle. They are qualified to service any vehicle. In a way, its not that different from developing websites.</p>
<p>When a client comes in the door, they have an idea. Whether its big or small, its an idea. We&#8217;re here to help that idea become a reality, to provide a value added service for you. Of which, we employ many of our programming toolsets and human talent in order to execute the idea to its fullest extent. It doesn&#8217;t matter what idea you bring to us, we&#8217;re going to pursue every possibility in building a solid, stable working relationship with the client so that both parties get what they want and more importantly, have fun while doing it. Everyone working in unison, a well oiled machine, just like a Jiffy Lube team.</p>
<h2>When this baby hits 88 miles per hour, you&#8217;re going to see some serious shit.</h2>
<p>Small town, small company. Big talent, big ideas. You don&#8217;t have to be some fifty plus sized company in a NYC loft to be big time.</p>
<p>If you think small, you&#8217;ll be small.</p>
<p>Folks know value when they see it too, which is why they come to us. There are a lot of patchwork web companies around the world. What is a patchwork web company? Well, in simplest terms, a patchwork web company is one that slaps together images and premade code for a cheaper price just to complete a contract. This leaves the customer unsatisfied long term, and their website is a house of cards waiting to implode. For example, most people are content getting by by selling someone a WordPress site with a design template for $2000 or less. Short term, it pays the bills for the shop, and feels good for the client to pay so little. But as time moves on, they will see they got what they paid for. Locked into the framework unable to scale or adapt new ideas, unreliable hosting uptime, and no true &#8216;ownership&#8217; of their website.</p>
<p>If you can&#8217;t change aspects of the site, then you don&#8217;t really own it!</p>
<p>In these terms, it always reminds me of my favorite Tom Green skit, Undercutters Pizza.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Mm55ZIc9M0o&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Mm55ZIc9M0o&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>There&#8217;s always someone out there somewhere, ambulance chasing, bidding low to win your favor and screwing you in the end.</p>
<h2>That&#8217;s heavy, Doc.</h2>
<p>Right. So what does it all mean? Caveat emptor, you get what you pay for. We may be a little bit higher than other companies, but we&#8217;re going to stand behind you and your site because that&#8217;s what you deserve. Inclind has a vested interest in your future, not hitting the road once you&#8217;ve paid us. Your future is our future. It&#8217;s a symbiotic relationship.</p>
<p>We&#8217;re poised for big things this year. You&#8217;re welcome to join us.</p>
<p>Hit it, Marty.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/oYBGx8uKQLA&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/oYBGx8uKQLA&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/rants-raves/jiffy-lube-undercutters-the-web-and-you.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dogfish Head Brewery Site Launches; Team Heads to Washington DC</title>
		<link>http://www.delawarewebdesigner.com/web-applications/dogfish-head-brewery-site-launches-team-heads-to-washington-dc.htm</link>
		<comments>http://www.delawarewebdesigner.com/web-applications/dogfish-head-brewery-site-launches-team-heads-to-washington-dc.htm#comments</comments>
		<pubDate>Wed, 04 Mar 2009 19:22:19 +0000</pubDate>
		<dc:creator>Kevin Quillen</dc:creator>
				<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[Graphic Design]]></category>
		<category><![CDATA[iPhone Apps]]></category>
		<category><![CDATA[iPhone Development]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Showcase]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Teamwork]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.delawarewebdesigner.com/web-applications/dogfish-head-brewery-site-launches-team-heads-to-washington-dc.htm</guid>
		<description><![CDATA[On March 3rd, 2009, Inclind Inc launched the brand new front and back end for Dogfish Head Brewery. It&#8217;s almost a year to the day that Inclind began planning the new Dogfish Head Brewery website and the features it would include in the first phase of the launch. The end result is a culmination of [...]]]></description>
			<content:encoded><![CDATA[<p>On March 3rd, 2009, Inclind Inc launched the brand new front and back end for <a href="http://www.dogfish.com" target="_blank">Dogfish Head Brewery</a>. It&#8217;s almost a year to the day that Inclind began planning the new <a href="http://www.dogfish.com" target="_blank">Dogfish Head Brewery</a> website and the features it would include in the first phase of the launch. The end result is a culmination of a years worth of blood, sweat, pizza and tears of hard work and dedication.</p>
<p>Their new site has everything they have been wanting and more. <a href="http://www.dogfish.com" target="_blank">Dogfish Head Brewery</a> can now easily manage their 800 page (and growing!) website, all its users, media, newsletters, news articles, events, RSS feeds, and comments. They can add/remove &#8216;locations&#8217; of where their product is sold, served, or distributed. This allows customers to log in and see where they can find Dogfish on the &#8216;<a href="http://www.dogfish.com/community/fish-findin.htm" target="_blank">Fish Finder</a>&#8216;. Try it out!</p>
<p>With that, the new site features a fully functioning community section and social network. Users can register on the website for an account, after which they can create a basic profile. From there, they have access to submit a map location to their Fish Finder, add or comment on threads in the Forum, submit questions to Dogfish staff in Ask Dogfish, comment on Dogfish staff blogs (Blogfish), and connect with other Dogfish loving fans. All applicable content is able to be sent instantly through Twitter/Digg/MySpace/Facebook/etc in a single click of the &#8216;Share&#8217; button. We really went all out to flesh out the community side and give users stuff to do in between staff blogs and answering questions.</p>
<p>Our new system that was used on <a href="http://www.dogfish.com" target="_blank">Dogfish Head Brewery</a> has no official name yet, or I&#8217;d tell you what it is ha. We hope to have that nailed down soon. What I can tell you is that its the most feature complete, stable and scalable CMS you are going to find on the east coast. I would put it up against anything the competition has to offer from Maine to Florida with confidence ours is as on par or better than what else is available. Since the code is modular, its not coded for 1 strict specific project (as we used to) but rather, any client who comes in the door can have the same power, accessibility, UI and functionality of big time folk like Dogfish. In other words, it makes our platform highly scalable and consistent.</p>
<p>All ya gotta do is <a href="http://www.inclind.com/contact.htm">ask us</a>.</p>
<p>As for the rest of the week, Pete, Trey and Kevin are representing Inclind at DrupalCon in Washington DC. They will be talking to fellow developers and programmers and sharing / showing off work. You can follow what we&#8217;re up to on our <a href="http://twitter.com/inclindinc" target="_blank">Twitter</a> (either by going to the <a href="http://twitter.com/inclindinc" target="_blank">Twitter</a> site, or the side of our page on this site, or adding us <a href="http://twitter.com/inclindinc" target="_blank">inclindinc</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delawarewebdesigner.com/web-applications/dogfish-head-brewery-site-launches-team-heads-to-washington-dc.htm/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

