<?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/"
	>

<channel>
	<title>centresource interactive agency blog &#187; web-development</title>
	<atom:link href="http://blog.centresource.com/tag/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.centresource.com</link>
	<description>web development &#124; nashville, tn</description>
	<pubDate>Thu, 02 Sep 2010 21:55:48 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Symfony Faux Form Serialization</title>
		<link>http://blog.centresource.com/2009/07/14/symfony-faux-form-serialization/</link>
		<comments>http://blog.centresource.com/2009/07/14/symfony-faux-form-serialization/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 21:09:36 +0000</pubDate>
		<dc:creator>Brent Shaffer</dc:creator>
		
		<category><![CDATA[Doctrine]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Symfony]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[form framework]]></category>

		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://blog.centresource.com/?p=992</guid>
		<description><![CDATA[Recently, I ran into an issue when building a Symfony plugin for Slideshow renderings.  When I added the support for...]]></description>
			<content:encoded><![CDATA[<p>Recently, I ran into an issue when building a Symfony plugin for Slideshow renderings.  When I added the support for multiple libraries, in this case Google Slideshow2 and JQuery Cycle, they had drastically different configuration options.  JQuery Cycle allows you to use a list of effects, such as blindX and blindY.  These effects are great, and I want the end user to be able to easily select between them.  Google Slideshow2 allows the adding of thumbnails and traversing controls.  Neither of these settings apply to the other, and this is only two slideshow renderers.  What happens when I add another one?  Five more?  I could create multiple tables for each renderer, such as google_slideshow2_options and jquery_cycle_options.  I could also just provide a textarea for key-value pairs (effect=blindX timeout=500) that the user typed in.  I did not like either of these options, as the former struck me as over-architecting, and the latter as unusable.</p>
<p>The solution I ended up with was to use something similar to serialization techniques.  This allowed me to configure dynamic forms, add options, and keep the whole thing in a single database field.  The solution has worked great, and has only required a few extra lines of code to my form.  With tweaking, I hope to turn this code into a widget, to allow it to be added quickly to any Symfony form.</p>
<p>If you are interested in implementing this kind of functionality, you can see my code <a  href="http://brentertainment.com/2009/07/11/symfony-options-form-faux-form-serialization/">here</a>, or you can check out the code for <a  href="http://www.symfony-project.org/plugins/csDoctrineSlideshowPlugin">csDoctrineSlideshowPlugin</a> and see it in action.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.centresource.com/2009/07/14/symfony-faux-form-serialization/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Centresource Releases New Plugins to the Symfony Community</title>
		<link>http://blog.centresource.com/2009/05/09/centresource-releases-new-plugins-to-the-symfony-community/</link>
		<comments>http://blog.centresource.com/2009/05/09/centresource-releases-new-plugins-to-the-symfony-community/#comments</comments>
		<pubDate>Sat, 09 May 2009 18:39:50 +0000</pubDate>
		<dc:creator>Brent Shaffer</dc:creator>
		
		<category><![CDATA[Company News]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Software]]></category>

		<category><![CDATA[Symfony]]></category>

		<category><![CDATA[Utilities]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[Company-News]]></category>

		<category><![CDATA[Plugins]]></category>

		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://blog.centresource.com/?p=797</guid>
		<description><![CDATA[Over the last week, the developers here at CentreSource have published nine plugins for the symfony community.  The plugins have...]]></description>
			<content:encoded><![CDATA[<p>Over the last week, the developers here at CentreSource have published nine plugins for the <a  href="http://www.symfony-project.org/">symfony</a> community.  The plugins have been used in several of our internal projects and client web applications, but have been developed on a private repository.  We finally decided the plugins were properly documented and tested.  These plugins can be found <a  href="http://www.symfony-project.org/plugins/developer/brent-shaffer">here</a>.</p>
<p>1) <a  href="http://www.symfony-project.org/plugins/csDoctrineActAsAttachablePlugin">csDoctrineActAsAttachablePlugin</a> - associates various uploads with multiple models, and includes an AJAX uploading client interface.</p>
<p>2) <a  href="http://www.symfony-project.org/plugins/csDoctrineActAsCategorizablePlugin">csDoctrineActAsCategorizablePlugin</a> - associates models into nestable categories and category groups.</p>
<p>3) <a  href="http://www.symfony-project.org/plugins/csDoctrineActAsGeolocatablePlugin">csDoctrineActAsGeolocatablePlugin</a> - integrate your model with the Google Maps API to pull in geocodes based on record fields.  Supports radius and proximity searches.</p>
<p>4) <a  href="http://www.symfony-project.org/plugins/csDoctrineActAsSortablePlugin">csDoctrineActAsSortablePlugin</a> - adds a sortable behavior to your models</p>
<p>5) <a  href="http://www.symfony-project.org/plugins/csDoctrineSlideshowPlugin">csDoctrineSlideshowPlugin</a> - add and configure slideshows in your project.</p>
<p>6) <a  href="http://www.symfony-project.org/plugins/csFormTransformPlugin">csFormTransformPlugin</a> -  give your forms a web 2.0 look within a few easy steps.</p>
<p>7) <a  href="http://www.symfony-project.org/plugins/csGlossaryPlugin">csGlossaryPlugin</a> - group your models alphabetically in glossary/directory format</p>
<p>8) <a  href="http://www.symfony-project.org/plugins/csSEOToolkitPlugin">csSEOToolkitPlugin</a> - A toolkit to improve your website&#8217;s search engine optimization.</p>
<p>9) <a  href="http://www.symfony-project.org/plugins/sfSympalSlideshowPlugin">sfSympalSlideshowPlugin</a> - An advanced slideshow used for the <a  href="http://www.symfony-project.org/plugins/sfSympalPlugin">Sympal</a> Content Management Framework.</p>
<p>You can check out my plugin list <a  href="http://www.symfony-project.org/plugins/developer/brent-shaffer">here</a>.  If you are interested in using these plugins, or have any suggestions for addition useful symfony plugins, please contact me or any of the developers here at CentreSource.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.centresource.com/2009/05/09/centresource-releases-new-plugins-to-the-symfony-community/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Apple xServe: dscl, dsimport and web services aka fun!</title>
		<link>http://blog.centresource.com/2008/04/04/apple-xserve-dscl-dsimport-and-web-services-aka-fun/</link>
		<comments>http://blog.centresource.com/2008/04/04/apple-xserve-dscl-dsimport-and-web-services-aka-fun/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 16:42:49 +0000</pubDate>
		<dc:creator>Jonathan Wage</dc:creator>
		
		<category><![CDATA[Miscellaneous]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[Apple]]></category>

		<category><![CDATA[dscl]]></category>

		<category><![CDATA[ldap]]></category>

		<category><![CDATA[open-directory]]></category>

		<category><![CDATA[web-development]]></category>

		<category><![CDATA[xserve]]></category>

		<guid isPermaLink="false">http://blog2.centresource.com/2008/04/04/apple-xserve-dscl-dsimport-and-web-services-aka-fun/</guid>
		<description><![CDATA[So, recently here at CentreSource we&#8217;ve been working on a project which is using the brand spanking new xServe from...]]></description>
			<content:encoded><![CDATA[<p>So, recently here at CentreSource we&#8217;ve been working on a project which is using the brand spanking new xServe from Apple. First, let me say the server is pretty slick, but like any other software it has issues. The reason we went with the xServe was because we needed the ability to have web applications which have central authentication and calendaring data. Open Directory, CalDAV, PHP, Apache, and MySQL are just ready to go with xServe, so it made sense!Our usage is that we have these web applications on the net which will use the <a  target="_BLANK" href="http://us3.php.net/ldap">PHP LDAP Functions</a> to authenticate our users on Open Directory from our PHP web applications, we also communicate to Open Directory whenever adding or changing users passwords to keep things up-to-date. To accomplish this I have written a small web service which lives on the xServe and runs under Apache and PHP. This code talks to Open Directory via the dscl and dsimport command line utilities provided by Apple. I use dsimport for adding the initial working records, and I then use dscl to change passwords. So essentially this web service is just a web service wrapped around those two commands.</p>
<p>Now, on to the issues. I first was using dscl by generating a temporary file named commands.txt which I then piped to the dscl command. It did a few things, it authenticated with the open directory admin, changed to the users directory, authenticated to that node, then issued the command to change a users password. Below are the exact steps I took to reproduce the issue, and essentially this is the core of what my web service does. This is just a manual representation of it.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<blockquote><p>1.) Add the user dsimport -g jon.txt /LDAPv3/127.0.0.1 O -u opendiradmin -p password -y applexserveaddress.com -yrnm opendiradmin -yrpwd passwordContents of jon.txt 0&#215;0A 0&#215;5C 0&#215;3A 0&#215;2C dsRecTypeStandard:Users 6 RecordName AuthMethod Password UniqueID PrimaryGroupID RealName jon:dsAuthMethodStandard\:dsAuthClearText:password:2004:20:Jonathan H. Wage</p>
<p>2.) Testing authentication with dirt server:Users jwage$ dirt -u jon -p password</p>
<p>Call to dsGetRecordList returned count = 1 with Status : eDSNoErr : (0)</p>
<p>Call to checkpw(): Success</p>
<p>path: /LDAPv3/127.0.0.1 Username: jon Password: password Success</p>
<p>3.) Testing authentication with ldap binding&#8217; Using this PHP script: http://pastie.textmate.org/171856 Note: This is the method of authentication I will use to in my web applications.</p>
<p>This script shows &#8220;Success&#8221;&#8230;</p>
<p>4.) Changing Password with dscl</p>
<p>Contents of commands.txt</p>
<p>cd /LDAPv3/127.0.0.1 auth opendiradmin password passwd Users/jon newpass</p>
<p>Command used to change password</p>
<p>cat commands.txt | dscl -u opendiradmin -P password applexserveaddress.com</p>
<p>5.) Testing old password with dirt dirt -u jon -p password</p>
<p>Call to dsGetRecordList returned count = 1 with Status : eDSNoErr : (0)</p>
<p>Call to checkpw(): Bad Password</p>
<p>path: /LDAPv3/127.0.0.1 Username: jon Password: password Error : eDSAuthFailed : (-14090)</p>
<p>6.) Testing new password with dirt</p>
<p>dirt -u jon -p newpass Call to dsGetRecordList returned count = 1 with Status : eDSNoErr : (0)</p>
<p>Call to checkpw(): Bad Password</p>
<p>path: /LDAPv3/127.0.0.1 Username: jon Password: newpass Error : eDSAuthFailed : (-14090)</p>
<p>7.) Testing new password with: http://pastie.textmate.org/171856 Changed &#8220;password&#8221; to &#8220;newpass&#8221; in the PHP script linked to above.</p>
<p>This script shows &#8220;Failure&#8221;&#8230;</p>
<p>Attached is a file named jon.txt produced by the following command dscl /LDAPv3/127.0.0.1 read /Users/jon > ~/jon.txt<br />
<textarea><br />
Contents of jon.txt &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- dsAttrTypeNative:apple-generateduid: A4891049-44B3-466E-B38A-49190A57EEFC dsAttrTypeNative:authAuthority: ;ApplePasswordServer;0&#215;47ec5cb02b82fcae0000001700000017,1024 35 165460696124814462411611436492354879433092038102783905389795105675339122350613168014994644237932552198395261589394442778231023754518789840462560068601355183790356702635800277892727080147503108118694113781754703058183613068520410434810818614704517699376740702860179744461656638410687251764916990406937612551307 root@applexserveaddress.com:208.65.156.21 ;Kerberosv5;0&#215;47ec5cb02b82fcae0000001700000017;jon@SERVER.SOUTHWESTERNEDGE.COM;SERVER.SOUTHWESTERNEDGE.COM;1024 35 165460696124814462411611436492354879433092038102783905389795105675339122350613168014994644237932552198395261589394442778231023754518789840462560068601355183790356702635800277892727080147503108118694113781754703058183613068520410434810818614704517699376740702860179744461656638410687251764916990406937612551307 root@applexserveaddress.com dsAttrTypeNative:cn: Jonathan H. Wage dsAttrTypeNative:gidNumber: 20 dsAttrTypeNative:homeDirectory: 99 dsAttrTypeNative:objectClass: inetOrgPerson posixAccount shadowAccount apple-user extensibleObject organizationalPerson top person dsAttrTypeNative:sn: 99 dsAttrTypeNative:uid: jon dsAttrTypeNative:uidNumber: 2004 dsAttrTypeNative:userPassword: ******** AppleMetaNodeLocation: /LDAPv3/127.0.0.1 AuthenticationAuthority: ;ApplePasswordServer;0&#215;47ec5cb02b82fcae0000001700000017,1024 35 165460696124814462411611436492354879433092038102783905389795105675339122350613168014994644237932552198395261589394442778231023754518789840462560068601355183790356702635800277892727080147503108118694113781754703058183613068520410434810818614704517699376740702860179744461656638410687251764916990406937612551307 root@applexserveaddress.com:208.65.156.21 ;Kerberosv5;0&#215;47ec5cb02b82fcae0000001700000017;jon@SERVER.SOUTHWESTERNEDGE.COM;SERVER.SOUTHWESTERNEDGE.COM;1024 35 165460696124814462411611436492354879433092038102783905389795105675339122350613168014994644237932552198395261589394442778231023754518789840462560068601355183790356702635800277892727080147503108118694113781754703058183613068520410434810818614704517699376740702860179744461656638410687251764916990406937612551307 root@applexserveaddress.com GeneratedUID: A4891049-44B3-466E-B38A-49190A57EEFC LastName: 99 NFSHomeDirectory: 99 Password: ******** PrimaryGroupID: 20 RealName: Jonathan H. Wage RecordName: jon Jonathan H. Wage RecordType: dsRecTypeStandard:Users UniqueID: 2004</textarea></p></blockquote>
<p>Now as you can see above, piping the commands.txt directly to dscl does not change the password correctly and breaks, but entering the commands one at a time interactively via the terminal does work.</p>
<p>Below you can find the first draft of the web service which adds and edits username/passwords in apples open directory. Note, this code is beta and currently does not do any checking to verify things, and the delete functionality is not written yet. This is the first working draft we were able to produce. Hopefully this will help someone else get started with using this software in the same way.</p>
<p>It took an $800 dollars apple enterprise support contract for me to verify that I was not doing something wrong, and that it in fact was a bug. I was not too happy when the tech support guy told me that it was a bug and that I had to pay another 800 dollars for him to come up with a work around or for him to report it to the engineers. So, thanks Apple. I reported the bug myself and came up with a work around.</p>
<p><a  id="p685" href="http://blog2.centresource.com/wp-content/uploads/2009/01/open_directory_manager.zip">Open Directory Manager</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.centresource.com/2008/04/04/apple-xserve-dscl-dsimport-and-web-services-aka-fun/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DrupalCon 2008: Popular Science Magazine Case Study</title>
		<link>http://blog.centresource.com/2008/03/12/drupalcon-2008-popular-science-magazine-case-study/</link>
		<comments>http://blog.centresource.com/2008/03/12/drupalcon-2008-popular-science-magazine-case-study/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 14:32:11 +0000</pubDate>
		<dc:creator>Bob Marchman</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[Miscellaneous]]></category>

		<category><![CDATA[case-study]]></category>

		<category><![CDATA[CMS]]></category>

		<category><![CDATA[drupalcon]]></category>

		<category><![CDATA[popularscience]]></category>

		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://blog2.centresource.com/2008/03/12/drupalcon-2008-popular-science-magazine-case-study/</guid>
		<description><![CDATA[The folks at pingVision have posted their case study for the Popular Science Magazine website on drupal.org.
I attended this...]]></description>
			<content:encoded><![CDATA[<p>The folks at <a  href="http://pingv.com/">pingVision</a> have posted their case study for the <a  href="http://blog2.centresource.com/popsci.com">Popular Science Magazine website</a> on <a  href="http://drupal.org/node/233090#comment-766498">drupal.org</a>.</p>
<p>I attended this session and left it feeling very inspired. It was amazing to see what this small crew did with such a behemoth of a site.  Just the thought of having to migrate a 1.66GB Oracle DB into a Drupal site makes me sweat. All things considered, I felt like this was probably the best session I attended at DrupalCon 2008. It wasn&#8217;t the nerdiest, or the geekiest, and it didn&#8217;t have lots of slides of code&#8230;but for our line of work, it was incredibly valuable. Not only did they go into the &#8220;nuts-n-bolts&#8221; of how they built the site, they also touched on the project management side, and also managing client expectations with such a large project.</p>
<p>Check it out to see how one of the best Drupal sites out there came to fruition.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.centresource.com/2008/03/12/drupalcon-2008-popular-science-magazine-case-study/feed/</wfw:commentRss>
		</item>
		<item>
		<title>More DrupalCon Slides!</title>
		<link>http://blog.centresource.com/2008/03/12/more-drupalcon-slides/</link>
		<comments>http://blog.centresource.com/2008/03/12/more-drupalcon-slides/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 13:04:55 +0000</pubDate>
		<dc:creator>Bob Marchman</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[CMS]]></category>

		<category><![CDATA[drupalcon]]></category>

		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://blog2.centresource.com/2008/03/12/more-drupalcon-slides/</guid>
		<description><![CDATA[Addison Berry from Lullabot has posted the slides from his DrupalCon 2008 presentation: Contributing to Drupal: A guide for everyone....]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.lullabot.com/about/addison_berry">Addison Berry</a> from <a  href="http://www.lullabot.com">Lullabot</a> has posted the slides from his DrupalCon 2008 presentation: <a  href="http://boston2008.drupalcon.org/session/contributing-drupal-guide-everyone">Contributing to Drupal: A guide for everyone</a>.<br />
Woot!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.centresource.com/2008/03/12/more-drupalcon-slides/feed/</wfw:commentRss>
		</item>
		<item>
		<title>John VanDyk - DrupalCon 2008 Triggers and Actions and Hooks, Oh My!</title>
		<link>http://blog.centresource.com/2008/03/11/john-vandyk-drupalcon-2008-triggers-and-actions-and-hooks-oh-my/</link>
		<comments>http://blog.centresource.com/2008/03/11/john-vandyk-drupalcon-2008-triggers-and-actions-and-hooks-oh-my/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 12:45:52 +0000</pubDate>
		<dc:creator>Bob Marchman</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[CMS]]></category>

		<category><![CDATA[drupalcon]]></category>

		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://blog2.centresource.com/2008/03/11/john-vandyk-drupalcon-2008-triggers-and-actions-and-hooks-oh-my/</guid>
		<description><![CDATA[John VanDyk, author of Pro Drupal Development, and longtime Drupal developer/guru, has posted the slides and video of the presentation...]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.sysarchitects.com/blog/2">John VanDyk</a>, author of <a  href="http://www.amazon.com/Pro-Drupal-Development-John-VanDyk/dp/1590597559/ref=pd_bbs_sr_1?ie=UTF8&#038;s=books&#038;qid=1205236146&#038;sr=8-1">Pro Drupal Development</a>, and longtime Drupal developer/guru, has posted the slides and video of the presentation he gave at DrupalCon on triggers and actions. It was great presentation from one of Drupal&#8217;s founding fathers. Though centered around Drupal 6, many of the basic principals can be applied to Drupal 5&#8217;s Actions module. There is also word of backporting Triggers to Drupal 5!</p>
<p>If you missed the Boston DrupalCon 2008, don&#8217;t miss out on this wonderful session.<br />
<a  href="http://www.sysarchitects.com/node/73">Files can be downloaded here&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.centresource.com/2008/03/11/john-vandyk-drupalcon-2008-triggers-and-actions-and-hooks-oh-my/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ellie&#8217;s Run for Africa</title>
		<link>http://blog.centresource.com/2007/05/02/ellies-run-for-africa/</link>
		<comments>http://blog.centresource.com/2007/05/02/ellies-run-for-africa/#comments</comments>
		<pubDate>Wed, 02 May 2007 16:14:34 +0000</pubDate>
		<dc:creator>Chip Hayner</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[Custom-Module]]></category>

		<category><![CDATA[Donation]]></category>

		<category><![CDATA[Ellies-Run-for-Africa]]></category>

		<category><![CDATA[Nashville]]></category>

		<category><![CDATA[Web design]]></category>

		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://blog.centresource.com/2007/05/02/ellies-run-for-africa/</guid>
		<description><![CDATA[At CentreSource, we do everything we can to stay connected to the community around us.  Recently, a great opportunity arose...]]></description>
			<content:encoded><![CDATA[<p>At CentreSource, we do everything we can to stay connected to the community around us.  Recently, a great opportunity arose for us to donate our time to work with Ellie&#8217;s Run for Africa (ERFA), a 5k Race and Family Fun day that is taking place in Nashville at the end of June, that has an amazing story behind it.</p>
<p>Ellie was 10 when she heard Larry Warren, the president of African Leadership (<a  href="http://www.africanleadership.org" target="_blank">http://www.africanleadership.org</a>), speak at her church about the slums of Kibera in Nairobi, Kenya.  Something touched Ellie&#8217;s heart, and she knew that she had to do something to help the kids.  Three years later and two races later, Ellie (along with an awesome group of volunteers) have raised more than $40,000 that has been used to build four classrooms, clothe children with needed uniforms &#038; shoes, and provide school supplies for children in the Kibera Slum, and help support the Living Hope Clinic in Cape Town, South Africa.  (You can view a video of <a  href="http://www.elliesrunforafrica.org/promo" target="_blank">Ellie&#8217;s story here</a>)</p>
<p>In preparation for this year&#8217;s race (on June 23rd), ERFA was needing a website update.  Basing the website design on the amazing poster created by one of the ERFA volunteers, CentreSource used the open-source content management system Drupal for the new site (<a  href="http://www.elliesrun.org" target="_blank">http://www.elliesrun.org</a>).  Apart from utilizing some user-contributed Drupal modules, CentreSource also created a custom donation system, volunteer sign-up, and a full registration wizard according to ERFA&#8217;s needs. This site has been critical to not only getting the word out about ERFA through news updates and team-based blogging, but in assisting those volunteering with a one-stop-shop for resources like letterhead and fact sheets that are needed to make the event successful.</p>
<p>It is our hope that our work with Ellie&#8217;s Run for Africa might help to raise awareness of this amazing cause, and encourage further attendance and donations to come.  Please take the time to visit the site, learn about Ellie&#8217;s amazing story, and hopefully register to attend the event on June 23rd!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.centresource.com/2007/05/02/ellies-run-for-africa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dangers of a Bad Website</title>
		<link>http://blog.centresource.com/2007/04/09/dangers-of-a-bad-website/</link>
		<comments>http://blog.centresource.com/2007/04/09/dangers-of-a-bad-website/#comments</comments>
		<pubDate>Tue, 10 Apr 2007 04:01:41 +0000</pubDate>
		<dc:creator>Nicholas Holland</dc:creator>
		
		<category><![CDATA[Operations]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[bad]]></category>

		<category><![CDATA[dangers]]></category>

		<category><![CDATA[direction]]></category>

		<category><![CDATA[lack]]></category>

		<category><![CDATA[of]]></category>

		<category><![CDATA[poor]]></category>

		<category><![CDATA[web]]></category>

		<category><![CDATA[Web design]]></category>

		<category><![CDATA[web-development]]></category>

		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://blog.centresource.com/2007/04/09/dangers-of-a-bad-website/</guid>
		<description><![CDATA[In the early years, some could argue that having a website, albeit bad, was still superior to not having one...]]></description>
			<content:encoded><![CDATA[<p>In the early years, some could argue that having a website, albeit bad, was still superior to not having one at all.  Websites were not the ‘norm’ and having one proved that your firm was unique and cutting edge.  Fast forward 10 years and this is no longer the case – every business and organization is expected to have a website.  But times are changing again!  It is no longer acceptable to simply have a website.  Now organizations are at risk to the dangers of a bad website.</p>
<p><span id="more-524"></span></p>
<p>The first step in protecting yourself from a bad website is to determine if you have one.  Here are some questions to ask yourself when determining if you have a ‘bad’ website.</p>
<p><strong>Did you use a professional?</strong><br />
Evaluating the experience whoever created your site is an easy way to begin your analysis.  If you used your cousin who read ‘Build a website in 14 days’, there’s a good chance that your site could have problems.  Inexperienced web designers often produce ‘bad’ websites.</p>
<p><strong>How attractive is your website?</strong><br />
The quality of website design continues to increase.  More and more visitors are developing an ‘eye’ for what is good and what is bad, thus requiring all website owners to periodically evaluate their visual appeal.  Blinking text used to be cool – not anymore.</p>
<p><strong>Does your website provide value?</strong><br />
The biggest problem facing most websites lies within the ‘value’ they provide.  Too often, websites have inadequate and unfocused content that is wrought with grammatical errors.  As people become more web savvy, they expect websites to provide valuable information.</p>
<p><strong>Ask someone else?</strong><br />
The most fail-safe method is to ask an experienced web surfer, “Is my website good.”  Pay attention to any hesitations or phrases like “This could be better…”.  Seeking the opinion of a customer, vendor, or employee (read: not yourself) is an important part of determining if your website is ‘bad’.</p>
<p>Having a ‘bad’ website could be more serious than you think.  Many organizations know they need to update their site, but it consistently goes to the back-burner.  They often feel that having ‘at least something’ is better than having nothing.  In today’s day and age, that isn’t true.  Having a bad website is dangerous and can harm your organization.<br />
If you determine you have a bad website, here are some of the dangers you face:</p>
<p><strong>Damage your brand and reputation</strong><br />
Organizations spend a great deal of time focusing on their brand and reputation to promote their overall success.  A strong brand helps the community remember you and a great reputation ensures they feel good about working together.  If you have a bad website, you run the risk if destroying your brand &#038; harming your reputation.  I often ask the question, “Would you let someone representing you arrive to a meeting wearing cut-off jeans and a T-Shirt?”  The answer is always ‘no’, yet people don’t realize their website is doing just that.</p>
<p><strong>Lose business to competitors</strong><br />
In today’s competitive marketplace, organizations must remain smart and nimble to keep up with the competition.  With websites becoming a significant marketing channel, organizations can’t afford to have a bad website.  Many visitors are going online to get their first impressions and a bad website can result in loss of business and even potential employees.</p>
<p><strong>Frustrate customers and prospects</strong><br />
Bad websites often have out of date content.  Visitors will become frustrated by misinformation such as bad addresses, wrong addresses, discontinued products/services, and out-of-date employee directories.  Frustrated visitors can result in loss of business and potentially more harm through negative word-of-mouth.</p>
<p><strong>Confuse visitors and create legal risks</strong><br />
Bad websites can actually create a legal risk when they provide incorrect information to visitors.  Issues can range from false advertising to actually breaking new privacy laws.  Even if the content doesn’t actually break the law, confusing information can be just a dangerous in terms of customer service issues.</p>
<p><strong>Waste time and money</strong><br />
Websites, regardless of their quality, typically cost time and money.  If an organization invests resources into a bad website, they often find themselves re-designing the site in a short period of time.  Once someone recognizes the website as bad, the entire redesign process begins and the organization realizes they wasted time and money.</p>
<p>The facts are clear – a bad website is much worse than no website.  If you value your brand, reputation, and the experience of potential customers &#038; employees – make sure you don’t have a bad website.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.centresource.com/2007/04/09/dangers-of-a-bad-website/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Setting Client Expectations through Mock-Up Design</title>
		<link>http://blog.centresource.com/2007/02/05/setting-client-expectations-through-mock-up-design/</link>
		<comments>http://blog.centresource.com/2007/02/05/setting-client-expectations-through-mock-up-design/#comments</comments>
		<pubDate>Mon, 05 Feb 2007 19:11:50 +0000</pubDate>
		<dc:creator>Chip Hayner</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[best-practices]]></category>

		<category><![CDATA[html]]></category>

		<category><![CDATA[Usability]]></category>

		<category><![CDATA[Web design]]></category>

		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://blog.centresource.com/2007/02/05/setting-client-expectations-through-mock-up-design/</guid>
		<description><![CDATA[One of CentreSource&#8217;s strongest areas is custom application development.  We&#8217;ve worked with a number of fantastic clients who have asked...]]></description>
			<content:encoded><![CDATA[<p>One of CentreSource&#8217;s strongest areas is custom application development.  We&#8217;ve worked with a number of fantastic clients who have asked us to create a variety of applications including ones to handle <a  href="http://www.snappyauctions.com">franchise management</a>, <a  href="http://www.frugalreader.com">online book trading</a>, and <a  href="http://www.2020research.com/">qualitative research</a>.  With each of these, as well as a number of other development projects that we&#8217;ve worked on, we have had to figure out the appropriate times and methods to present a mock-up design of our work-in-progress to our clients.</p>
<p>Here&#8217;s the problem: most of the applications&#8217; bulk is in the code, that the client will never see.  What they do see is the user interface (UI) of the system, which often gets put in at the very end &#8212; at least in its final form.  Until then, the UI is often plain text and input boxes that is functional, but not <em>pretty</em>.  So what ends up happening?  The client will often judge the status of the project based on what they see in the UI.  This is what Joel Spolsky calls &#8220;The Iceburg Secret&#8221; in his post called &#8220;<a  href="http://www.joelonsoftware.com/articles/fog0000000356.html">The Iceberg Secret, Revealed</a>&#8220;.</p>
<p>Now, this is a double-edged sword.  If you are telling the client that the system is 90% done, but the UI looks 2% done, the client might assume that the application is far from complete as well.  Conversely, if you do a really great mock-up of the site, but you haven&#8217;t actually done any of the programming behind it, you can incorrectly lead your client to believe the application is much farther along than it actually is (this is often called &#8220;vaporware&#8221;).</p>
<p>Spolsky, as well as Jan Miksovsky in his blog post &#8220;<a  href="http://miksovsky.blogs.com/flowstate/2006/10/using_crude_ske.html">Matching design sketches to the desired level of design feedback</a>&#8221; and Kathy Sierra in her post &#8220;<a  href="http://headrush.typepad.com/creating_passionate_users/2006/12/dont_make_the_d.html">Don&#8217;t make the Demo look Done</a>&#8221; all talk about the importance of making sure that your UI design is reflective of your development process.  As Sierra says, &#8220;How &#8216;done&#8217; something looks should match how &#8216;done&#8217; something is.&#8221;  They all mention that one key reason for this comes during the process of requesting feedback from the client.  Writes Miksovsky: &#8220;A counter-intuitive principle of soliciting early design feedback is that people reviewing a highly polished design may concentrate on superficial details and overlook fundamental issues. In the early stages of the process, you may be able to elicit deeper feedback by striving for an unfinished look in your design representations.&#8221;</p>
<p>We are currently embarking on a new development project that has a requirement of ongoing feedback from the client.  Hopefully using the wisdom from these three, as well as others, we&#8217;ll be able to properly set our clients expectations as to the status of the project &#8212; both from a design and development point of view.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.centresource.com/2007/02/05/setting-client-expectations-through-mock-up-design/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Extreme Website Makeover</title>
		<link>http://blog.centresource.com/2006/12/18/extreme-website-makeover/</link>
		<comments>http://blog.centresource.com/2006/12/18/extreme-website-makeover/#comments</comments>
		<pubDate>Mon, 18 Dec 2006 16:40:17 +0000</pubDate>
		<dc:creator>Chip Hayner</dc:creator>
		
		<category><![CDATA[Company News]]></category>

		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[Company-News]]></category>

		<category><![CDATA[contest]]></category>

		<category><![CDATA[forawe]]></category>

		<category><![CDATA[makeover]]></category>

		<category><![CDATA[Web design]]></category>

		<category><![CDATA[web-development]]></category>

		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://blog.centresource.com/2006/12/18/extreme-website-makeover/</guid>
		<description><![CDATA[Those of you who read our newsletter know that for this Holiday season, CentreSource had a contest to find the...]]></description>
			<content:encoded><![CDATA[<p>Those of you who read <a  href="http://www.centresource.com/thesource_200612" target="_blank">our newsletter</a> know that for this Holiday season, CentreSource had a contest to find the website in the greatest need for a makeover.  Companies were able to nominate their websites, which were then filtered by the CentreSource staff down to the 10 Top Worst Websites.  Finally, the finalists were asked to launch their own grassroots campaigns and get their family, friends, and coworkers to vote for their site to win the grand prize.</p>
<p>In the end, <a  href="http://www.forawe.com" target="_blank">forAWE.com</a> beat out the <a  href="http://www.houstoncochamber.com/" target="_blank">Houston County Area Chamber of Commerce</a> by a margin of 519 to 490 votes.  </p>
<p>Congratulations to forAWE.com, who will be receiving the following from CentreSource:</p>
<ul>
<li>Design Consultation and Planning</li>
<li>Design Guide</li>
<li>2 Home Page Design with revisions</li>
<li>1 Interior Page Design with revisions</li>
<li> 1 Flash Element</li>
<li>Up to 10 pages of Content Placement &#038; Styling</li>
<li>Quality Assurance</li>
<li>Site Deployment</li>
</ul>
<p>If you&#8217;re interested in future contests, please join <a  href="http://e2ma.net/app/view:Join/signupId:6286/mailingId:350896" target="_blank">our mailing list</a>.  Congratulations again to forAWE.com!</p>
<p><a  href="http://www.centresource.com/makeover_results">See Full Results</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.centresource.com/2006/12/18/extreme-website-makeover/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
