<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>GenuineJD - ColdFusion</title>
			<link>http://www.genuinejd.com/blog/index.cfm</link>
			<description>coldfusion, flex, flash, air...and other random tech stuff</description>
			<language>en-us</language>
			<pubDate>Sun, 05 Sep 2010 08:21:58 -0500</pubDate>
			<lastBuildDate>Fri, 20 Feb 2009 12:29:00 -0500</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>jack@genuinejd.com</managingEditor>
			<webMaster>jack@genuinejd.com</webMaster>
			
			
			
			
			
			<item>
				<title>Reading Embedded XMP Packets using ColdFusion</title>
				<link>http://www.genuinejd.com/blog/index.cfm/2009/2/20/Reading-Embedded-XMP-Packets-using-ColdFusion</link>
				<description>
				
				&lt;p class=&quot;MsoNormal&quot;&gt;In working more and more on our Digital Asset Management initiatives, I&apos;ve become more involved in working with &lt;a href=&quot;http://www.adobe.com/xmp&quot; target=&quot;_blank&quot;&gt;XMP&lt;/a&gt;.&amp;nbsp; Mostly as an experiment, I wanted to see if I could read and write this embedded metadata from and to a file.&amp;nbsp; The &lt;a href=&quot;http://www.adobe.com/devnet/xmp/sdk/eula.html&quot; target=&quot;_blank&quot;&gt;Adobe XMP Toolkit&lt;/a&gt; indicates how this can be done based on the structure of specific types of files.&amp;nbsp; It also indicates that packet scanning techniques can be used when file structure is unknown, however, is not encouraged.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;I recognize it might not be the BEST way to read the XMP packet, however, all is fair in love and ColdFusion experimentation :)&amp;nbsp; It&apos;s important to note that this code looks only for the FIRST instance of the string &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;&quot;&gt;&amp;lt;x:xmpmeta&lt;/span&gt; and if there are multiple instances of XMP packets, subsequent instances are ignored.&amp;nbsp; Adobe also indicates that if there are multiple packets, there is no way to know which packet is the correct one.&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;Needless to say, using the code below, I was able to read and parse XMP packets from all the Adobe sample files included in their toolkit.&amp;nbsp; It may not be the end-all solution, and may not work for writing back to the file, but it&apos;s a start!&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;background: #DBDBDB&quot;&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cfparam&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;name=&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;&quot;&gt;&quot;URL.source&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;default=&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;&quot;&gt;&quot;xmp-asset.jpg&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cffile&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;action=&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;&quot;&gt;&quot;readbinary&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;file=&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;&quot;&gt;&quot;#ExpandPath(URL.source)#&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;variable=&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;&quot;&gt;&quot;data&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;&quot;&gt;&amp;lt;!--- encode the binary data to hex ---&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cfset&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; hex_data = &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066;&quot;&gt;BinaryEncode&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;(data,&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;&quot;&gt;&quot;hex&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;&quot;&gt;&amp;lt;!--- string indicating beginning of packet &apos;&amp;lt;x:xmpmeta&apos; ---&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cfset&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; xmp_string_begin = &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;&quot;&gt;&quot;3C783A786D706D657461&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;&quot;&gt;&amp;lt;!--- string indicating end of packet &apos;&amp;lt;/x:xmpmeta&amp;gt;&apos; ---&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cfset&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; xmp_string_end = &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;&quot;&gt;&quot;3C2F783A786D706D6574613E&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;&quot;&gt;&amp;lt;!--- find the starting index in the hex string ---&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cfset&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; idx_start = &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066;&quot;&gt;FindNoCase&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;(xmp_string_begin,hex_data) &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;&quot;&gt;&amp;lt;!--- find the ending index in the hex string ---&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cfset&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; idx_end = &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066;&quot;&gt;FindNoCase&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;(xmp_string_end,hex_data,idx_start) + &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066;&quot;&gt;Len&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;(xmp_string_end) &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;&quot;&gt;&amp;lt;!--- using the start and end indices, extract the xmp packet ---&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cfset&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; xmp_hex = &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066;&quot;&gt;Mid&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;(hex_data,idx_start,&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066;&quot;&gt;Evaluate&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;(idx_end-idx_start)) &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;&quot;&gt;&amp;lt;!--- convert the hex to readable characters ---&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cfset&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; xmp_string = &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066;&quot;&gt;ToString&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066;&quot;&gt;BinaryDecode&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;(xmp_hex,&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;&quot;&gt;&quot;hex&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;)) &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;&quot;&gt;&amp;lt;!--- parse the xml string to and xml structure ---&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cfset&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; xmp_xml = &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066;&quot;&gt;XmlParse&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;(xmp_string) &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cfcontent&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;&quot;&gt;&quot;text/xml&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;cfoutput&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;&quot;&gt;#xmp_string#&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: maroon;&quot;&gt;&amp;lt;/cfoutput&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Be sure to check out the &lt;a href=&quot;http://www.adobe.com/devnet/xmp/&quot; target=&quot;_blank&quot;&gt;Adobe XMP Developer Center&lt;/a&gt; for more information.&lt;/p&gt;
				
				</description>
						
				
				<category>XMP</category>				
				
				<category>Adobe</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 20 Feb 2009 12:29:00 -0500</pubDate>
				<guid>http://www.genuinejd.com/blog/index.cfm/2009/2/20/Reading-Embedded-XMP-Packets-using-ColdFusion</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>gpuds framework: reflections on my software developer life cycle</title>
				<link>http://www.genuinejd.com/blog/index.cfm/2008/6/28/gpuds-framework-reflections-on-my-software-developer-life-cycle</link>
				<description>
				
				&lt;p&gt;On my last trip out to LA for work, I spent some time on the plane brainstorming on the data model and abstraction for gpuds.&amp;nbsp; I basically want to take the core feature set in the current incarnation of &lt;a href=&quot;http://www.gpuds.com&quot; target=&quot;_blank&quot;&gt;gpuds&lt;/a&gt; and abstract it into a &quot;real&quot; ColdFusion application.&lt;/p&gt;
&lt;p&gt;I&apos;m starting to realize that most of the ColdFusion development I&apos;ve done in my career, starting back with CF 4.5 (I think), hasn&apos;t really evolved with the evolution of ColdFusion itself.&amp;nbsp; I&apos;m still writing html/page based apps that require a lot of tedious maintenance and aren&apos;t very scalable.&amp;nbsp; In working more and more with &lt;a href=&quot;http://blogcfc.riaforge.org/&quot; target=&quot;_blank&quot;&gt;BlogCFC&lt;/a&gt; and &lt;a href=&quot;http://www.mangoblog.org/&quot; target=&quot;_blank&quot;&gt;Mango Blog&lt;/a&gt;, I&apos;m realizing some of benefits of CF 7 and 8.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I think that I knew all along, in theory, how great CFMX was, but never from a practical perspective until I started working on the gpuds framework.&amp;nbsp; I can&apos;t even remember when CFCs were introduced, but aside from facilitating communication from the Flash player to the server, I think I&apos;ve really been ignorant on why they are so important.&lt;/p&gt;
&lt;p&gt;I don&apos;t think my applications were ever bad, but they could have been better.&amp;nbsp; The nature of ColdFusion as a Rapid Application Development platform is what perpetuated my continual use of less-than-efficient application design.&amp;nbsp; My applications worked and I could crank them out quickly, so why would I bother with any other approach or even framework?&lt;/p&gt;
&lt;p&gt;I also think the fact that I&apos;m doing much less development now and more project management is why I&apos;m able to see these things.&amp;nbsp; I always had a deadline or projects piling up, leaving little time for analysis or post-mortem.&amp;nbsp; Now that I see these things from a different perspective, I can see all the shortcomings of my approach.&lt;/p&gt;
&lt;p&gt;It&apos;s amazing to me that I&apos;ve &quot;discovered&quot; all this in just the scope of working on my gpuds framework, especially considering that I&apos;ve only just begun!&lt;/p&gt;
				
				</description>
						
				
				<category>My Website</category>				
				
				<category>Open Source</category>				
				
				<category>Photos</category>				
				
				<category>ColdFusion</category>				
				
				<category>Frameworks</category>				
				
				<pubDate>Sat, 28 Jun 2008 04:12:00 -0500</pubDate>
				<guid>http://www.genuinejd.com/blog/index.cfm/2008/6/28/gpuds-framework-reflections-on-my-software-developer-life-cycle</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>CFML: Moving ColdFusion Forward</title>
				<link>http://www.genuinejd.com/blog/index.cfm/2008/6/23/CFML-Moving-ColdFusion-Forward</link>
				<description>
				
				&lt;p&gt;Ben Forta wrote a &lt;a href=&quot;http://www.forta.com/blog/index.cfm/2008/6/19/Thoughts-On-The-CFML-Language-Advisory-Committee&quot; target=&quot;_blank&quot;&gt;very interesting blog&lt;/a&gt; the other day about the newly created CFML Language Advisory Committee.&amp;nbsp; This post is great for two reasons.&amp;nbsp; One, it outlines how this new committee will hopefully benefit CFML in and amongst the ColdFusion community in the long run.&amp;nbsp; Two, he comments on how and why opening a language up to a community can impact that community in both positive and negative ways, not just on CFML.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A great read for any developer.&lt;/p&gt;
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Mon, 23 Jun 2008 14:11:00 -0500</pubDate>
				<guid>http://www.genuinejd.com/blog/index.cfm/2008/6/23/CFML-Moving-ColdFusion-Forward</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>gpuds framework: planning stages</title>
				<link>http://www.genuinejd.com/blog/index.cfm/2008/6/5/gpuds-framework-planning-stages</link>
				<description>
				
				&lt;p&gt;Lately I&apos;ve been thinking about taking my personal &lt;a href=&quot;http://www.gpuds.com/&quot; target=&quot;_blank&quot;&gt;photo sharing&lt;/a&gt; website and creating a open-source framework version of it.&amp;nbsp; Why would I bother wasting time on this when sites like Flickr, Snapfish and Photobucket exist?&amp;nbsp; I feel as if they are still lacking many features that photo sites should include, like original high-resolution file downloads and group file uploading into the same album.&amp;nbsp; To me it only makes sense.&amp;nbsp; Say you&apos;re at a family reunion and everyone is taking pictures.&amp;nbsp; What sense does it make for everyone to have their own photo albums on different sites, with pictures of the same thing?&lt;/p&gt;
&lt;p&gt;Additionally, I&apos;ve had a couple people ask me if they can have their own version of &lt;a href=&quot;http://www.gpuds.com/&quot; target=&quot;_blank&quot;&gt;gpuds&lt;/a&gt; to put on a site for themselves.&amp;nbsp; I&apos;ve spent a decent amount of time lately looking at open-source blogging software like Mango Blog and BlogCFC, I thought I&apos;d take a shot at developing something myself for photo sharing since I already have done a lot of the work in the form of gpuds.&lt;/p&gt;
				
				</description>
						
				
				<category>My Website</category>				
				
				<category>Open Source</category>				
				
				<category>Photos</category>				
				
				<category>ColdFusion</category>				
				
				<category>Frameworks</category>				
				
				<pubDate>Thu, 05 Jun 2008 13:11:00 -0500</pubDate>
				<guid>http://www.genuinejd.com/blog/index.cfm/2008/6/5/gpuds-framework-planning-stages</guid>
				
			</item>
			
		 	
			</channel></rss>