<rss version="2.0"><channel><title>RSS feed for InstantSpot site EdomGroup Blog</title><link>http://edomgroup.instantspot.com</link><description>ColdFusion, Java, Computer Science, and the musings of inspired developers...</description><language>en-us</language><copyright>This work is Copyright &#xA9; 2008 by EdomGroup Blog</copyright><generator>RSSVille ColdFusion FeedMaker, version 1.0</generator><pubDate>Thu, 21 Aug 2008 14:19:13 GMT</pubDate><item><title>Simple regex assist</title><link>http://edomgroup.instantspot.com/blog/2007/11/01/Simple-regex-assist</link><description>&lt;p&gt;
If you&amp;#39;re still writing some sql create and update statements by hand these may help you. Mainly, I wanted to post these so I wouldn&amp;#39;t forget them.
&lt;/p&gt;
&lt;p&gt;
Create a list of cfqueryparam&amp;#39;s from a list of cfargumen&amp;#39;s. If you don&amp;#39;t do any column renaming in your code then this is straight forward:
&lt;/p&gt;
Find: &amp;lt;cfargument name=&amp;quot;(\w+)&amp;quot; type=&amp;quot;(\w+)&amp;quot; [^&amp;gt;]+&amp;gt;&lt;br /&gt;
Replace With: &amp;lt;cfqueryparam value=&amp;quot;Arguments.$1&amp;quot; cfslqtype=&amp;quot;cf_sql_$2&amp;quot; /&amp;gt;,&lt;br /&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
This next one will create all the values of an update statement from the list of cfqueryparam&amp;#39;s, again if no column renaming has been done this is a one shot find/replace: 
&lt;/p&gt;
Find: (&amp;lt;cfqueryparam value=&amp;quot;Arguments.([^&amp;quot;]+)&amp;quot; [^&amp;gt;]+&amp;gt;,?)&lt;br /&gt;
&lt;br /&gt;
Replace With: $2 = $1&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;br /&gt;
</description><pubDate>Thu, 01 Nov 2007 18:55:51 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2007/11/01/Simple-regex-assist</guid><category>ColdFusion</category></item><item><title>Configuring SQL Server Express 2005 For Remote Connections</title><link>http://edomgroup.instantspot.com/blog/2007/08/11/Configuring-SQL-Server-Express-2005-For-Remote-Connections</link><description>&lt;p&gt;
This is a reference guide to change the settings in SQL Express Server to allow remote conections. I found most of my information at &lt;a href=&quot;http://www.datamasker.com/SSE2005_NetworkCfg.htm&quot;&gt;http://www.datamasker.com/SSE2005_NetworkCfg.htm&lt;/a&gt; , and I will be trying to simplify what is said there.
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Configure SQL to use TCP/IP connections as well as local connections in the  &lt;strong&gt;Surface Area Configuration Utility&lt;/strong&gt;.&lt;br /&gt;
	Select the &lt;strong&gt;Services and Connections&lt;/strong&gt; section.&lt;br /&gt;
	Under &lt;strong&gt;Database Engine -&amp;gt; Remote Connections&lt;/strong&gt; choose to use local and remote connections (TCP/IP only or TCP/IP and named pipes).
	You can also do this in the &lt;strong&gt;SQL Server Configuration Manager&lt;/strong&gt; tool under:&lt;br /&gt;
	&lt;strong&gt;SQL Server 2005 Network Configuration -&amp;gt; Protocols for SQL Express&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;Now &lt;strong&gt;restart/start the SQL Server service&lt;/strong&gt;.&lt;/li&gt;
	&lt;li&gt;You now need to &lt;strong&gt;configure Windows Firewall&lt;/strong&gt; (only if you have it running) to exempt  SQL Server and SQL Server Browser. To do this you simply need to add sqlservr.exe and sqlbrowser.exe to the exceptions.&lt;br /&gt;
	&lt;br /&gt;
	The files can be found at:&lt;br /&gt;
	&lt;strong&gt;&lt;font size=&quot;0&quot;&gt;C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\&lt;/font&gt;sqlservr.exe&lt;br /&gt;
	&lt;/strong&gt;&lt;strong&gt;&lt;font size=&quot;0&quot;&gt;C:\Program Files\Microsoft SQL Server\90\Shared\&lt;/font&gt;sqlbrowser.exe&lt;/strong&gt;.
	&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
You should have a successfully configured SQL Server, so start trying to connect to it remotely. If you are still having issues it may be necessary to restart the computer for all changes to take place. 
&lt;/p&gt;
&lt;p&gt;
Craig. 
&lt;/p&gt;
</description><pubDate>Sat, 11 Aug 2007 15:01:57 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2007/08/11/Configuring-SQL-Server-Express-2005-For-Remote-Connections</guid><category>SQL Server</category></item><item><title>Firefox Developer Extensions</title><link>http://edomgroup.instantspot.com/blog/2007/06/29/Firefox-Developer-Extensions</link><description>&lt;p&gt;
			This is just a reference post that I thought others may find valuable
as well, but until I get an app that installs them all for me, here is
a shopping list of all the Firefox extensions I like to use in my
development setup.
&lt;/p&gt;
&lt;h2&gt;Backup &amp;amp; Restore
&lt;/h2&gt;
&lt;p&gt;
Since we have a lot of extensions we use, first lets cover the extensions to backup and restore our extensions :-P 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Firefox Extension Backup Extension (FEBE)&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/2109&quot; target=&quot;_blank&quot;&gt;https://addons.mozilla.org/en-US/firefox/addon/2109&lt;/a&gt;&lt;br /&gt;
This extension backs up all your installed extensions in FF.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Compact Library Extension Organizer (CLEO)&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/2942&quot; target=&quot;_blank&quot;&gt;https://addons.mozilla.org/en-US/firefox/addon/2942&lt;/a&gt;&lt;br /&gt;
Your restore mechanism :-) From the description:&lt;br /&gt;
&amp;quot;CLEO is a Firefox extension that works with FEBE* to package any number
of extensions/themes into a single, installable .xpi file...&amp;quot; 
&lt;/p&gt;
&lt;h2&gt;General&lt;/h2&gt;  
&lt;p&gt;
&lt;strong&gt;Web Developer Toolbar&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/firefox/60/&quot;&gt;https://addons.mozilla.org/firefox/60/&lt;/a&gt;&lt;br /&gt;
Probably the most popular web developer extension. This extension has
everything from quick access to view source and cookie management
functions to validation and CSS / display analysis functions. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Live HTTP Headers&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/firefox/3829/&quot;&gt;https://addons.mozilla.org/firefox/3829/&lt;/a&gt;&lt;br /&gt;
Great for viewing HTTP headers and Requests being made to the server via HTML, Javascript, or Flash / Flex.  
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;FireFTP&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/firefox/684/&quot;&gt;https://addons.mozilla.org/firefox/684/&lt;/a&gt;&lt;br /&gt;
An FTP client for FireFox.  
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Download Statusbar&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/firefox/26/&quot;&gt;https://addons.mozilla.org/firefox/26/&lt;/a&gt;&lt;br /&gt;
A great replacement for Firefox&amp;#39;s download manager window.  
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Google Browser Sync&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.google.com/tools/firefox/browsersync/&quot;&gt;http://www.google.com/tools/firefox/browsersync/&lt;/a&gt;  &lt;br /&gt;
Useful for synchronizing bookmarks, etc. across computers.  
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Minimize To Tray&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/2110&quot; target=&quot;_blank&quot;&gt;https://addons.mozilla.org/en-US/firefox/addon/2110&lt;/a&gt;&lt;br /&gt;
Allows Firefox (and Thunderbird if installed for it) to be minimized to an icon on the task bar. 
&lt;/p&gt;
&lt;h2&gt;CSS / HTML&lt;/h2&gt;  
&lt;p&gt;
&lt;strong&gt;CSS Viewer&lt;/strong&gt;  &lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/firefox/2104/&quot;&gt;https://addons.mozilla.org/firefox/2104/&lt;/a&gt;  &lt;br /&gt;
A great extension to help you see exactly what properties are being applied to any element under your mouse cursor.  
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;ColorZilla&lt;/strong&gt;  &lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/firefox/271/&quot;&gt;https://addons.mozilla.org/firefox/271/&lt;/a&gt;  &lt;br /&gt;
Gets and copies and color from a page.  
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;MeasureIt!&lt;/strong&gt;  &lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/firefox/539/&quot;&gt;https://addons.mozilla.org/firefox/539/&lt;/a&gt;  &lt;br /&gt;
Allows you to easily measure anything by drawing a square on the page.  
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;IE View&lt;/strong&gt;  &lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/firefox/1429/&quot;&gt;https://addons.mozilla.org/firefox/1429/&lt;/a&gt;  &lt;br /&gt;
A quick way to open Internet Explorer to the current page via right-click.  
&lt;/p&gt;
&lt;h2&gt;ColdFusion&lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;ColdFire&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://coldfire.riaforge.org/&quot; target=&quot;_blank&quot;&gt;http://coldfire.riaforge.org/&lt;/a&gt;&lt;br /&gt;
A Firefox extension and CF debugging template that allows you to view your debugging info inside the Firebug extension. This is great to have all your debugging info in one place and the debugging info won&amp;#39;t mess up your HTML layouts anymore when it is dropped into the page normally. 
&lt;/p&gt;
&lt;h2&gt;Javascript&lt;/h2&gt;  
&lt;p&gt;
&lt;strong&gt;FireBug&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/firefox/1843/&quot;&gt;https://addons.mozilla.org/firefox/1843/&lt;/a&gt;&lt;br /&gt;
FireBug is the most valuable extension for Firefox and Javascript
development. It has a great JS debugger, inline console, and reviewing
of AJAX requests. Beautiful. 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h2&gt;Internationalization&lt;/h2&gt;  
&lt;p&gt;
&lt;strong&gt;Quick Locale Switcher&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/firefox/1333/&quot;&gt;https://addons.mozilla.org/firefox/1333/&lt;/a&gt;&lt;br /&gt;
The name says it all.  
&lt;/p&gt;
</description><pubDate>Fri, 29 Jun 2007 05:00:00 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2007/06/29/Firefox-Developer-Extensions</guid><category>Web Development</category></item><item><title>Mozilla Thunderbird Update Not Completing</title><link>http://edomgroup.instantspot.com/blog/2007/06/15/Mozilla-Thunderbird-Update-Not-Completing</link><description>&lt;p&gt;
Recently, I had an issue with Mozilla Thunderbird not being able to update. It would download the update, but not be able to install it saying it could not update some files. This would pretty much render Thunderbird useless because the update would try to run every time I started it and I would never be able to get into it.
&lt;/p&gt;
&lt;h2&gt;The Fix - Stop Logitech QuickCam Software &lt;/h2&gt;
&lt;p&gt;
Apparently, having a Logitech Webcam running can cause the updates to fail which is a freak compatibility issue I guess, but stopping QuickCam10.exe in my task manager sure enough allowed the update to run.
&lt;/p&gt;
&lt;p&gt;
Just thought I would share this in case anyone else is Googling this issue without success.
&lt;/p&gt;
&lt;p&gt;
Mike. &lt;br /&gt;
&lt;/p&gt;
</description><pubDate>Fri, 15 Jun 2007 14:35:00 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2007/06/15/Mozilla-Thunderbird-Update-Not-Completing</guid><category>Miscellaneous</category></item><item><title>The Service Layer</title><link>http://edomgroup.instantspot.com/blog/2007/05/12/The-Service-Layer</link><description>&lt;p&gt;
Lately I have read a few blog posts and talked to a few developers that either disagree with or are unfamiliar with the reasons for using a service layer in web applications. After posting this as a comment on &lt;a href=&quot;http://www.pbell.com/index.cfm/2007/5/12/Are-Service-Classes-Communist-Bureaucracy-As-Well&quot;&gt;the great Peter Bell&amp;#39;s blog&lt;/a&gt; , where he references the discussion, I realized I might be better off cleaning it up and posting it here. While I don&amp;#39;t go into detail about how I use service objects, I will save that for a later post if anyone says they are interested.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
What
I usually do is create a service layer for all gateways, DAOs and many
other types of handlers including an email service that can prioritize
outbound emails in an email queue. Some may argue that I even overuse
the service pattern, but in all truth, I think it is very underused in
web applications. 
&lt;/p&gt;
&lt;p&gt;
These are my explanations of why I feel the service layer can be a great benefit to both the developer and the resulting application (in terms of performance and stability). 
&lt;/p&gt;
&lt;h2&gt;The Developer &lt;/h2&gt;
&lt;p&gt;
Having services is often the more logical way for a programmer to think...It
often puts things in a very real world perspective. For instance, why
do i see so many implementations of a shopping cart that not only
contain items, but calculate all the invoice totals, manage taxes,
shipping, etc. Doesn&amp;#39;t it seem a little more logical to take the cart,
along with coupons, etc. to a single register (similar to what you
would do in real life)? I find it very easy to deal with a large set of
requirements this way (no memorizing URL diagrams or looking at classes
with 400 functions). With DAOs and gateways for a typical bean I like
having the service layer to say, &amp;quot;Hey, go put this thing in storage for
me&amp;quot; which could be totally different places (database, xml, etc.) any
time I use the same bean. On the other hand, I can enjoy the active
record type pattern by using ColdSpring to pass my beans a dao and give
them an incredibly simple save method.
&lt;/p&gt;
&lt;h2&gt;The Application &lt;/h2&gt;
&lt;p&gt;
The application
becomes incredibly solid with the use of the service layer...I love
knowing that my application loads and 90% of the memory it will ever
use is set and ready to go (and it is much smaller than reinstantiating
a bunch of large objects on every request). My applications rarely
bounce up and down by massive percentages of processor and memory usage
because a few more or less users are on. It becomes very easy to spot
when something is awry because I know what to expect. Alternatively, with tools like Spring, ColdSpring, etc. I can load objects every time, or as a singleton when first needed, or anyway I like with a few keystrokes. 
&lt;/p&gt;
&lt;h2&gt;Conclusions&lt;/h2&gt;
&lt;p&gt;
I think sometimes we get a little too
radical for our own good. It seems fairly often lately that I run into &amp;quot;Why the heck do we need X debates?&amp;quot; that claim much less complexity, removing item X allows the developer more creativity, and the application more flexibility. While I think these debates are healthy, I try to remember one thing...programming is about us...if it wasn&amp;#39;t, then why didn&amp;#39;t someone just come up with a cross-platform assembly language so we could stop there. The service layer is a tool for making things easier for us to understand and manage...it is also incredibly flexible.
&lt;/p&gt;
&lt;p&gt;
My reading lately brought me to asking myself:
&lt;/p&gt;
&lt;p&gt;
How much more work is it to have a service object than to embed this into my objects as they are?
&lt;/p&gt;
&lt;p&gt;
Is adding more types by having a bean and DAO singleton over complicating something?
&lt;/p&gt;
&lt;p&gt;
I&amp;#39;ve come to the conclusion that the difference if there is one is probably within minutes of eachother, and I could see the service layer even winning out quite often only because I think it is often &amp;quot;more human&amp;quot; for the developer to think of many problems that way. Does every customer get a cash register at a store? Do we all have our very own post office? Makes it very easy to have a flexible application and not have to memorize a complicated UML diagram in my head at least. That answers both questions for me at least.  
&lt;/p&gt;
&lt;p&gt;
It is easy for us to use tools like the service layer in dynamic languages and we deserve that benefit for as little work as
it is now to implement. That being said, if you don&amp;#39;t think its the right tool for the job, don&amp;#39;t use it...we all have paid the price for using the wrong tool before and we learn from those experiences differently. 
&lt;/p&gt;
&lt;p&gt;
Mike.
&lt;/p&gt;
</description><pubDate>Sun, 13 May 2007 01:17:14 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2007/05/12/The-Service-Layer</guid><category>Web Development</category></item><item><title>I&apos;m A CFEclipse committer!</title><link>http://edomgroup.instantspot.com/blog/2007/04/30/Im-A-CFEclipse-committer</link><description>&lt;p&gt;
So, while I&amp;#39;ve been kind of a &amp;quot;sleeper&amp;quot; contributor to CFE, I have been ramping it up a bit lately and doing a little more than just keeping Mark Drew company and providing awkwardly humorous conversation. It&amp;#39;s always wierd because you can&amp;#39;t hear the person on the other end laughing with you...after years of messaging, I&amp;#39;m still self concious :-P
&lt;/p&gt;
&lt;p&gt;
Anyway, more on the subject of this post, Mark Drew has decided that I&amp;#39;m finally worth the honor of having commit rights to the CFEclipse Subversion repository. Mainly this means two things to me:&lt;br /&gt;
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Mark Drew doesn&amp;#39;t think I&amp;#39;m gonna blow it up (or that the odds are better that I won&amp;#39;t)&lt;/li&gt;
	&lt;li&gt;I feel like it means I have contributed some use be it in little bits to the project. I&amp;#39;m eager to see this contribution grow.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Anyway, whether you have been considering helping out with CFEclipse or not, I would like to reiterate how exciting it is to get to work with Mark even on the days I&amp;#39;m not able to do much more than discuss things with him. He has a way of making great things happen with CFE and making the entire process interesting and a lot of fun.
&lt;/p&gt;
&lt;p&gt;
If you would be interested in experiencing the good and rewarding time that I&amp;#39;ve been getting, might I suggest contacting Mark to share your skills and see if there is something you&amp;#39;d like to do.
&lt;/p&gt;
&lt;p&gt;
I&amp;#39;m not sure if this was an item everyone would be excited to hear about, but I&amp;#39;m very happy about it and I have noone nerdy to share this information with right now.
&lt;/p&gt;
&lt;p&gt;
Thanks for putting up with me :-P
&lt;/p&gt;
&lt;p&gt;
Mike Kelp&amp;nbsp;
&lt;/p&gt;
</description><pubDate>Mon, 30 Apr 2007 21:10:49 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2007/04/30/Im-A-CFEclipse-committer</guid><category>CFEclipse</category></item><item><title>Query Analyzer Auto-Complete...Woot!</title><link>http://edomgroup.instantspot.com/blog/2007/04/04/Query-Analyzer-AutoCompleteWoot</link><description>&lt;p&gt;
This is something I&amp;#39;ve wanted for a very long time, but did not have the room in my budget to purchase a tool for.
&lt;/p&gt;
&lt;p&gt;
A company called Red Gate (http://www.red-gate.com/products/SQL_Prompt/index.htm) has a nice piece of software that provides a whole bunch of features for SQL Server and looks to be very much worth its $195.00 price tag.
&lt;/p&gt;
&lt;p&gt;
Apparently though, they released an older version of their tool for free that is still available here:
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.bustercollings.com/blog/2006/06/14/m-sql-query-analyzer-auto-complete-intellisense/&quot;&gt;http://www.bustercollings.com/...&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
If you&amp;#39;ve been dreaming for autocomplete in Query Analyzer, then definitely check this thing out. It is a little annoying that it does have to make a seperate connection to the SQL Server to get the database metadata, but very quick and painless. And it makes it so easy to get all your tables / columns while you type.
&lt;/p&gt;
&lt;p&gt;
Enjoy!
&lt;/p&gt;
&lt;p&gt;
Mike. &lt;br /&gt;
&lt;/p&gt;
</description><pubDate>Wed, 04 Apr 2007 12:51:50 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2007/04/04/Query-Analyzer-AutoCompleteWoot</guid><category>SQL Server</category></item><item><title>EdomGroup Now On InstantSpot</title><link>http://edomgroup.instantspot.com/blog/2007/03/30/EdomGroup-Now-On-InstantSpot</link><description>&lt;p&gt;
Well, we finally caved in to the peer pressure we have received from so many of the developers we admire. We, like many of them have decided to move our blog here to InstantSpot.
&lt;/p&gt;
&lt;p&gt;
Actually, we weren&amp;#39;t really pressured. We do however know Aaron Lynch and Dave Shuck, the creators of InstantSpot, and know how passionate they are about making InstantSpot a great community and resource. Just talking to Aaron and Dave, it&amp;#39;s hard not to be interested in what they&amp;#39;ve done here and where they wish to take it.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
So far, we are really happy with the decision. I have gotten all of our post moved over, but haven&amp;#39;t figured out how we&amp;#39;ll do the comments yet, so we apologize, but you won&amp;#39;t get the value from our older posts that commenters have added.
&lt;/p&gt;
&lt;h2&gt;InstantSpot Hello&amp;#39;s&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;
We&amp;#39;d like to give a couple shoutouts to some of our friends who have been on InstantSpot a while, or plan on joining up soon, and encourage anyone reading this blog to check them out. We are very lucky to know plenty of intelligent, kind, and hilarious people. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://kari.instantspot.com&quot;&gt;&lt;strong&gt;Kari&lt;/strong&gt;&lt;/a&gt;  - Sup? We are &amp;quot;keen&amp;quot; to learn much great baby knowledge from you despite our current lack of babies to try it on. It&amp;#39;s probably a good thing, we haven&amp;#39;t quite figured out how they work yet anyway. They seem to suffer from a lack of good documentation. Thanks for working to fix that. :-)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Chau&lt;/strong&gt; - My girlfriend and my inspiration for almost everything I do, especially how hard I work haha. She&amp;#39;s considering joining us on InstantSpot and I hope she does so more people can realize just how cool she is. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://conrad.instantspot.com&quot;&gt;&lt;strong&gt;Conrad Davis&lt;/strong&gt;&lt;/a&gt;  - One of the coolest developers around, Conrad is a man I&amp;#39;ve been honored to know and work with in the past.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://daveshuck.instantspot.com&quot;&gt;&lt;strong&gt;Dave Shuck&lt;/strong&gt;&lt;/a&gt;  - Manager of the CFUG, InstantSpot creator, and someone who manages to inspire you know matter how little you may get to talk to him.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://ajlcom.instantspot.com&quot;&gt;&lt;strong&gt;Aaron Lynch&lt;/strong&gt;&lt;/a&gt;  - Man of random hilarity, InstantSpot creator, and an excellent ColdFusionista / CFUG participant. A good man, indeed.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Anyway, thanks for everyone&amp;#39;s time and interest and we hope to hear from more of you as we blog a bit more often with a lot more interesting items.
&lt;/p&gt;
&lt;p&gt;
Mike Kelp&lt;br /&gt;
EdomGroup &lt;br /&gt;
&lt;/p&gt;
</description><pubDate>Sat, 31 Mar 2007 02:42:41 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2007/03/30/EdomGroup-Now-On-InstantSpot</guid><category>Miscellaneous</category></item><item><title>Mimicry is the Highest Form of Flattery</title><link>http://edomgroup.instantspot.com/blog/2006/11/08/Mimicry-is-the-Highest-Form-of-Flattery</link><description>I&amp;#39;m a ColdFusion advocate as are the majority reading this post, I&amp;#39;d
assume. Since being introduced to the CFML language I&amp;#39;ve begun seeing
more CFML engine iplementations. Some of these are free, some are Open
Source. The latest one &lt;a href=&quot;http://www.smithproject.org/index.cfm&quot;&gt;Smith&lt;/a&gt;
is a CFML engine written completely in Java that runs in a servlet
container. The authors of Smith are waiting for feedback from the
ColdFusion community before deciding to release the source code but
they are giving away the engine for free. Three other CFML
implementations I know of are: &lt;a href=&quot;http://www.newatlanta.com/products/bluedragon/index.cfm&quot;&gt;BlueDragon&lt;/a&gt;, &lt;a href=&quot;http://www.railo.ch/en/index.cfm&quot;&gt;Railo&lt;/a&gt;,  and &lt;a href=&quot;http://www.ignitefusion.com/&quot;&gt;IgniteFusion&lt;/a&gt;. Each of these have their own specific strengths. Each also varies in the way they were implemented.    
&lt;p&gt;
I believe it is imperative that there are free (and non-free)
alternative CFML engines to spread the word about the language and
compete with the currently dominate free web languages like PHP, Perl,
and Python. If anyone reading this has heard of another CFML engine
please post a link to it in the comments so the word gets spread. Also,
don&amp;#39;t forget to give these engines a try. Play with them, send
complements and recommendations. May be the next time you need to setup
a computer to host a small to medium sized CF site you can use one of
these projects in conjunction with a &lt;a href=&quot;http://www.mysql.com/&quot;&gt;MySQL&lt;/a&gt;  or &lt;a href=&quot;http://www.postgresql.org/&quot;&gt;PostgreSQL&lt;/a&gt; database. 
&lt;/p&gt;
</description><pubDate>Thu, 09 Nov 2006 02:43:00 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2006/11/08/Mimicry-is-the-Highest-Form-of-Flattery</guid><category>ColdFusion</category></item><item><title>Color Space Generator</title><link>http://edomgroup.instantspot.com/blog/2006/10/12/Color-Space-Generator</link><description>Part of the work I&amp;#39;ve been doing for my thesis involves generating
color images from indexed files. This is the same principle as any
indexed image format (like GIF) where each pixel is a number which maps
to a table of red, green, blue values. At the time I knew how to get
the basic 256 colors from the color wheel. The problem was the fact
that my indexed image needed over 100,000 different colors. Of course
generating 100K colors is one thing, making an image that uses so many
colors look good is another. So after a day of digesting color theory
websites I finally understood the concept of a color space, color
models, gamuts and enough on how they go together to make a Java class
that lets me generate a color space where the colors work together.
I&amp;#39;ve uploaded a zip of the class file &lt;a href=&quot;http://www.edomgroup.com/blog/enclosures/ColorSpaceGenerator.zip&quot;&gt;here&lt;/a&gt;
for anyone who can find some use for it. At the time I was tempted to
add an alpha channel which would cause a gradient around color values,
maybe later. To use the class simply call the generate method, the
arguments are: the starting color offset (0 to 1785), next is the
number of colors to generate, and finally the number of colors to skip
in between. 
&lt;p&gt;
Enjoy.    
&lt;/p&gt;
&lt;p&gt;
The pure color values are on the following offsets:  
&lt;/p&gt;
  
&lt;table border=&quot;0&quot; width=&quot;236&quot; height=&quot;170&quot;&gt;
	&lt;thead&gt;
		    &lt;th&gt;Offset&lt;/th&gt;    &lt;th&gt;R&lt;/th&gt;&lt;th&gt;G&lt;/th&gt;&lt;th&gt;B&lt;/th&gt;  
	&lt;/thead&gt;
	  
	&lt;tbody&gt;
		    
		&lt;tr&gt;
			&lt;td&gt;0   &lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
			&lt;td&gt;0  &lt;/td&gt;
			&lt;td&gt;0  &lt;/td&gt;
		&lt;/tr&gt;
		    
		&lt;tr&gt;
			&lt;td&gt;255 &lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
			&lt;td&gt;0  &lt;/td&gt;
		&lt;/tr&gt;
		    
		&lt;tr&gt;
			&lt;td&gt;510 &lt;/td&gt;
			&lt;td&gt;0  &lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
			&lt;td&gt;0  &lt;/td&gt;
		&lt;/tr&gt;
		    
		&lt;tr&gt;
			&lt;td&gt;765 &lt;/td&gt;
			&lt;td&gt;0  &lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
		&lt;/tr&gt;
		    
		&lt;tr&gt;
			&lt;td&gt;1020&lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
		&lt;/tr&gt;
		    
		&lt;tr&gt;
			&lt;td&gt;1275&lt;/td&gt;
			&lt;td&gt;0  &lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
		&lt;/tr&gt;
		    
		&lt;tr&gt;
			&lt;td&gt;1530&lt;/td&gt;
			&lt;td&gt;0  &lt;/td&gt;
			&lt;td&gt;255&lt;/td&gt;
			&lt;td&gt;0  &lt;/td&gt;
		&lt;/tr&gt;
		    
		&lt;tr&gt;
			&lt;td&gt;1785&lt;/td&gt;
			&lt;td&gt;0  &lt;/td&gt;
			&lt;td&gt;0  &lt;/td&gt;
			&lt;td&gt;0&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
</description><pubDate>Thu, 12 Oct 2006 12:07:19 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2006/10/12/Color-Space-Generator</guid><category>Design</category></item><item><title>Font rendering difference in Firefox 2.0 RC2 on Linux</title><link>http://edomgroup.instantspot.com/blog/2006/10/10/Font-rendering-difference-in-Firefox-20-RC2-on-Linux</link><description>&lt;p&gt;
&lt;img src=&quot;/userfiles/032907/112/firefox20rc3_linux_diff.png&quot; alt=&quot;Font rendering difference&quot; /&gt; &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
I was reading an entry on   &lt;a href=&quot;http://www.slashdot.org/&quot;&gt;slashdot&lt;/a&gt;  about the new   &lt;a href=&quot;http://www.mozilla.com/en-US/firefox/2.0/releasenotes/&quot;&gt;  Firefox 2.0 RC2&lt;/a&gt;
release and decided to give it a try. The new aesthetic changes are
nice and I definitely like the new add-on&amp;#39;s manager which manages
themes and extensions. While I&amp;#39;m typing this I realize another added
feature is a spell check for form text area fields. One thing that I
couldn&amp;#39;t figure out, though, was why slashdot looked different on
firefox 2.0 than on firefox 1.5, so I finally took a screenshot of the
two and held them side-by-side. The image above shows the results. On
the left is version 1.5 and on the right is version 2.0 rc3. I checked
the settings of the fonts and the only thing in 2.0 rc3 that is
different is there is no font resolution (DPI) setting. The name of the
fonts used are the same and at the same sizes. I&amp;#39;m not sure if this
font difference is the same under Windows since my primary system is a
Linux box.
&lt;/p&gt;
</description><pubDate>Tue, 10 Oct 2006 12:00:45 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2006/10/10/Font-rendering-difference-in-Firefox-20-RC2-on-Linux</guid><category>Linux</category></item><item><title>An Unbiased Description Of Interfaces</title><link>http://edomgroup.instantspot.com/blog/2006/07/25/An-Unbiased-Description-Of-Interfaces</link><description>For a long time I&amp;#39;ve been reading everyone wanting interfaces or not
wanting interfaces in ColdFusion; make it more like Java or make it
more abstract. No one has yet described what an interface means to them
(since most think of or only know of Java interfaces). So, for anyone
reading and for people just coming to ColdFusion or programming in
general I supply this short list of what an interface is. No opinion,
just the description of an interface/protocol as used in the Object
Oriented Programming paradigm. 
&lt;p&gt;
&lt;strong&gt;An interface is:&lt;/strong&gt;  
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;      &lt;em&gt;      the list of operations understood by the object      &lt;/em&gt;    &lt;/li&gt;
	&lt;li&gt;      &lt;em&gt;      the arguments these operations can be supplied with      &lt;/em&gt;    &lt;/li&gt;
	&lt;li&gt;      &lt;em&gt;      the types of results the operations return      &lt;/em&gt;      
	&lt;p&gt;
	What #1 - #3 mean is that you as a developer can be       handed an      object that you have no idea &lt;em&gt;how&lt;/em&gt; it works but       because it adheres to an interface you know       &lt;em&gt;what&lt;/em&gt;
	it does. This also means that you can write an interface for something
	you need -say image resizing- and use that interface throughout your
	program. Then give your interface to some other programmer to develop
	and as long as they adhere to that interface it will work in your code.
	&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;      &lt;em&gt;      the invariants preserved despite modification to the      object      &lt;/em&gt;      
	&lt;p&gt;
	An invariant is a condition that does not change. The simplest example
	I can think of is where you have an object with two fields (variables):
	&lt;em&gt;VariableA&lt;/em&gt;      and &lt;em&gt;VariableB&lt;/em&gt; then in a method that receives      an argument and sets the value of &lt;em&gt;VariableA&lt;/em&gt; the      value of &lt;em&gt;VariableB&lt;/em&gt;
	should not be changed after the method returns. This is important
	because if you call a method you have to have a clear understanding not
	only of what was modified but what wasn&amp;#39;t. 
	&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;      &lt;em&gt;      any exceptional situations the client using the       interface must handle      &lt;/em&gt;      
	&lt;p&gt;
	Error handling is important especially when code is being written by
	more than one person. Supplying the exceptional situations of a method
	is a good way to ensure that everyone is on the same page. 
	&lt;/p&gt;
	&lt;/li&gt;
&lt;/ol&gt;
</description><pubDate>Tue, 25 Jul 2006 13:43:22 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2006/07/25/An-Unbiased-Description-Of-Interfaces</guid><category>Programming</category></item><item><title>ColdFusion Wishlists And A General Understanding</title><link>http://edomgroup.instantspot.com/blog/2006/07/24/ColdFusion-Wishlists-And-A-General-Understanding</link><description>I just thought I would chime in on some of the extreme beating around
of wishlist features I&amp;#39;ve seen lately. I will explain how I feel and go
into some arguments that I think have been taken a little to the
extreme as to where CF programming and the products around it are
headed. 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h3&gt;We Are Headed In The Right Direction&lt;/h3&gt; The great amount of
argument about all of the features in CF and the attentive attitudes we
are getting from Adobe, Bluedragon, and anyone with a stake in CF is
nothing but encouraging. It makes me very proud to be a CF developer. I
am very confident in our community&amp;#39;s ability to make CF continue to be
the best language for web development out there, no matter who the
largest vendor is, etc. With that said, here are my thoughts: 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h3&gt;Why I Want Interfaces and Other &amp;quot;OO&amp;quot;-reminiscent Mechanisms in CF&lt;/h3&gt;
The reason for this is simple. There are many common tasks that we get
involved in when using objects in any language. These include API
development, data abstraction, and utility methods. CF supports objects
(CFCs), why not support that nice suite of tools that developers in
almost every other language as well as some CF developers expect? 
&lt;p&gt;
This has absolutely nothing to do with &amp;quot;OO&amp;quot; as the obsessive niche and
often wrongly defined practice in our community as much as it does
convenience, something ColdFusion is definitely good at. The fact is, I
use interfaces so I don&amp;#39;t have to remind developers what to do, I use
static methods so I don&amp;#39;t have to instantiate objects or store service
objects in a global cache, not because I am a part of a small &amp;quot;OO&amp;quot; core
of developers. These are very powerful and simple concepts that even
beginning developers from their first CFC have the ability to
understand. I think the flaw in OO is that many are over-educated to
the point that they elevate it to an endless science rather than common
sense. 
&lt;/p&gt;
&lt;p&gt;
Oh and you know what? Interfaces and static methods have absolutely
nothing to do with Java. Their definition is way outside the realm of a
Java-only feature. I am trying to make CF the most well-rounded,
powerful, feature-rich language it can be, not like any other language.
I am not going to define it as a presentation layer, because the
reality as I have seen it is that most of us reach back into Java for &lt;strong&gt;little or none&lt;/strong&gt;
of our back-end. I know Java and use Java, but I work with the best
tool for the job, given the tools available to me and for web
development, that is CF (not just for the presentation layer). Because
CF has a lot of presentation tools, doesn&amp;#39;t mean we should focus all or
even most of our attention on those things at any one time, ignoring
performance, interactivity, and damn well-tested practices, but make
them better. 
&lt;/p&gt;
&lt;p&gt;
I would be glad to elaborate more on this if anyone has any questions
because I feel it is horribly under-discussed beyond an &amp;quot;I want or
don&amp;#39;t want interfaces&amp;quot; level. 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h3&gt;What Makes ColdFusion?&lt;/h3&gt; Flash Forms, PDF Generation, etc.
are features that are unmatched in any other web development tool out
there, but they do not define ColdFusion. Anyone who uses ColdFusion
for these features alone is not a loyal ColdFusion user or even
remotely confident in the language because the moment a tool is better
at one of those for a week, ColdFusion would theoretically lose all of
its purpose. 
&lt;p&gt;
ColdFusion is a combination of all of our wishlists.    
&lt;/p&gt;
&lt;p&gt;
It is the syntax: I love that tag-based syntax even at a programmatic
level, much less a UI level for its ease of reading and
self-documenting capability. This is saying a lot for someone with a C,
C++, Java education in CSCI. 
&lt;/p&gt;
&lt;p&gt;
It is the simplicity: ColdFusion offers us easy file manipulation for
many tasks, a relaxation of types (note I did not say dynamic typing)
and much more. All of our code constructs say what they mean and do not
require us to worry about the janitorial tasks of programming like loop
indexes, etc. We expect these capabilities in all languages, but no
language makes them as simple as CF 
&lt;/p&gt;
&lt;p&gt;
It is the integration: Those features mentioned at the beginning of
this section fit here. How proud were you when you used your first
cfchart tag? Sweet, wasn&amp;#39;t it? These are the great features that are
often mistaken as THE reason people use CF in my opinion, but they are
indeed great. We have to remember that these are the features that
&amp;quot;package&amp;quot; CF. They make it very attractive and incredibly useful, but
without the core functionality that say, CFCs offer, my bet is that not
a single developer I know would use it. 
&lt;/p&gt;
&lt;p&gt;
Lastly, it is the organization: By &amp;quot;organization&amp;quot; I don&amp;#39;t mean Adobe,
Macromedia, New Atlanta, or Allaire, but the community as a whole. The
willingness we have to expand this language in all directions by
leaving it open enough to create many different servers and projects,
but tightly knitted enough to keep good naming conventions and a solid
transition space between products. The willingness we have to compare
it to all of the other tools out there without becoming alienated.
Integrate their capabilities and learn from them to make an even better
tool for ourselves. 
&lt;/p&gt;
&lt;p&gt;
Well, I intended to get through many of the arguments and
mis-interpretations I have seen in the community lately, but I think it
is better that this post is more unifying and encouraging to all of us,
not just those who agree with interfaces, etc. To use the wise words of
Gary Funk, &amp;quot;Google before you jump to your death&amp;quot; when you think you
are decided on an issue that you may have thought plain and simple, no
matter what your experience level. 
&lt;/p&gt;
&lt;p&gt;
Anyway, please understand that I speak from my point of view, but this pep-talk is as much for me as anyone else. 
&lt;/p&gt;
</description><pubDate>Tue, 25 Jul 2006 01:43:13 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2006/07/24/ColdFusion-Wishlists-And-A-General-Understanding</guid><category>ColdFusion</category></item><item><title>Why I Don&apos;t Like Microsoft</title><link>http://edomgroup.instantspot.com/blog/2006/07/23/Why-I-Dont-Like-Microsoft</link><description>There is nothing in this entry that people haven&amp;#39;d before. I just needed a place to speak my mind for a second.    
&lt;p&gt;
Recently I switched from Mozilla Thunderbird to Outlook 2003. The
reason for this drastic change was that I have a HP iPaq that works
great with Outlook. I can sync calendars, emails, contacts, everything;
I know, a silly reason to switch. Then I remembered why I was using
Thunderbird in the first place, the following (very important) file
extentions are automatically blocked by Outlook and unless you&amp;#39;re
running an Exchange server there is nothing you can do about it! 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;div&gt;
 url, asp, chm, js, ins, isp, its, cer - A url address, ASP
pages, compiled html fiels, javascript files, IIS settings, and
Internet Certificates - Well, so much for Microsoft providing ASP.NET
developers with an easy to use tools 
&lt;p&gt;
csh, ksh - Unix C shell and Korn shell scripts - I didn&amp;#39;t even know these ran natively under windows!    
&lt;/p&gt;
&lt;p&gt;
mad, maf, mag, mam, maq, mar, mas, mat, mau, mav, maw, mda, mdb, mde,
mdt, mdw, mdz - Everything MS Access! - This is just ridiculous - how
can any company that purchases Microsoft Office but can&amp;#39;t yet afford
enterprise Exchange server work like this! 
&lt;/p&gt;
&lt;/div&gt;
    
&lt;p&gt;
The thing that really gets me though is that there is no way around any
of this. Microsoft took it upon themselves to forcably dictate what you
can and can not do. 
&lt;/p&gt;
</description><pubDate>Sun, 23 Jul 2006 16:41:19 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2006/07/23/Why-I-Dont-Like-Microsoft</guid><category>Microsoft</category></item><item><title>ColdFusion Flash Forms To Flex 2</title><link>http://edomgroup.instantspot.com/blog/2006/07/01/ColdFusion-Flash-Forms-To-Flex-2</link><description>I&amp;#39;ll start off by saying that when Macromedia (when they were still
Macromedia) released CFMX 7, it was truly amazing. CFMX 7 has a feature
set that I have not seen another application server come close to
matching; Flash forms, pdf generation, XForms, gateways, and the list
goes on. What was equally amazing was the extent to which the CF
community took these features and ran with them. The &lt;a href=&quot;http://www.asfusion.com/&quot;&gt;ASFusion&lt;/a&gt; group did things with Flash forms people thought were impossible. Todd, at &lt;a href=&quot;http://www.cfsilence.com/&quot;&gt;cfsilence.com&lt;/a&gt; developed a &lt;a href=&quot;http://cfsilence.com/blog/client/index.cfm/2006/1/4/Genesis-10-Query-Evalution-Tool-Released&quot;&gt;data source browser, called Genesis&lt;/a&gt;,
that connects to your CF server and allowed you to run SQL against the
data sources. All these things have really helped push ColdFusion as a
valuable resource for web application development. Now Adobe, since
aquiring Macromedia, has gone and done it again by releasing the Flex 2
SDK for free. The &lt;a href=&quot;http://www.adobe.com/devnet/flex/?tab:samples=1&quot;&gt;demos&lt;/a&gt;
are insane and whats more is that now every website, running ColdFusion
or not, can have rich Flash content - that cool admin control panel, or
the great shopping cart. 
&lt;p&gt;
So with all the giving from Adobe and the CF community going around I
decided to post the Ant build script I wrote for automatically
compiling Flex 2 applications from within Eclipse. 
&lt;/p&gt;
&lt;p&gt;
To use the script:  
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;  		copy the source into a build.xml file in your project folder  	&lt;/li&gt;
	&lt;li&gt;
	edit the properties at the top of the file to point to your sdk install
	directory, debug flash player, the input mxml file and the output swf
	file &lt;/li&gt;
	&lt;li&gt;  		right click the file and choose &amp;quot;Run As&amp;quot; &amp;gt; &amp;quot;External Tools&amp;quot;  	&lt;/li&gt;
	&lt;li&gt;  		create two new &amp;quot;Ant Build&amp;quot; configurations, one called &amp;quot;build&amp;quot;  		and the other called &amp;quot;run&amp;quot;  	&lt;/li&gt;
	&lt;li&gt;  		now in the targets tab of the build configuration make sure  		only the build target is checked  	&lt;/li&gt;
	&lt;li&gt;  		in the targets tab of the run configuration make sure only  		the run target is checked  	&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Once the setup is done you can run the build commands using the &amp;#39;Alt+Shift+x q&amp;#39;   shortcut.    
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;lt;?xml version=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;?&amp;gt;&lt;br /&gt;
 &lt;span style=&quot;color: #000080&quot;&gt;&amp;lt;project name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;Flex2 build script&amp;quot;&lt;/span&gt; default=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;build&amp;quot;&lt;/span&gt; basedir=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #000080&quot;&gt;&amp;lt;property name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;installdir&amp;quot;&lt;/span&gt; value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;/Flex2SDK&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #000080&quot;&gt;&amp;lt;property name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;libdir&amp;quot;&lt;/span&gt; value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;${installdir}/lib&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #000080&quot;&gt;&amp;lt;property name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;mxmlc&amp;quot;&lt;/span&gt; value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;${libdir}/mxmlc.jar&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #000080&quot;&gt;&amp;lt;property name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;src&amp;quot;&lt;/span&gt; location=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;customer.mxml&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #000080&quot;&gt;&amp;lt;property name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;swf&amp;quot;&lt;/span&gt; location=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;customer.swf&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #000080&quot;&gt;&amp;lt;property name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;player&amp;quot;&lt;/span&gt; location=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;${installdir}/player/debug/SAFlashPlayer.exe&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008080&quot;&gt;&amp;lt;target name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;init&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008080&quot;&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008080&quot;&gt;&amp;lt;target name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;build&amp;quot;&lt;/span&gt; depends=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;init&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008000&quot;&gt;&amp;lt;antcall target=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008080&quot;&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008080&quot;&gt;&amp;lt;target name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;compile&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;java jar=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;${mxmlc}&amp;quot;&lt;/span&gt; fork=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt; failonerror=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;classpath&amp;gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff8000&quot;&gt;&amp;lt;fileset dir=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;${libdir}&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #000080&quot;&gt;&lt;span style=&quot;color: #ff8000&quot;&gt;&amp;lt;include name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;**/*.jar&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff8000&quot;&gt;&amp;lt;/fileset&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/classpath&amp;gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jvmarg value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;-Dapplication.home=${installdir}&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jvmarg value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;-ea&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jvmarg value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;-DAS3&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jvmarg value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;-DAVMPLUS&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jvmarg value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;-Xms32m&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jvmarg value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;-Xmx756m&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jvmarg value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;-Dsun.io.useCanonCaches=false&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008000&quot;&gt;&amp;lt;arg value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;-incremental&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008000&quot;&gt;&amp;lt;arg file=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;${src}&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/java&amp;gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008080&quot;&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008080&quot;&gt;&amp;lt;target name=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;run&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #000080&quot;&gt;&amp;lt;exec executable=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;${player}&amp;quot;&lt;/span&gt; dir=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;${basedir}&amp;quot;&lt;/span&gt; spawn=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008000&quot;&gt;&amp;lt;arg value=&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;quot;${swf}&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #000080&quot;&gt;&amp;lt;/exec&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #008080&quot;&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
 &lt;span style=&quot;color: #000080&quot;&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;
&lt;/p&gt;
</description><pubDate>Sat, 01 Jul 2006 16:39:29 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2006/07/01/ColdFusion-Flash-Forms-To-Flex-2</guid><category>Flex 2</category></item><item><title>CFEclipse - Learning and Helping</title><link>http://edomgroup.instantspot.com/blog/2006/06/30/CFEclipse--Learning-and-Helping</link><description>So &lt;a href=&quot;http://download.eclipse.org/eclipse/downloads/&quot;&gt;Eclipse 3.2&lt;/a&gt; is officially out and pre-empting it was a nice new beta of &lt;a href=&quot;http://www.cfeclipse.org/beta&quot;&gt;CFEclipse 1.3&lt;/a&gt;.    
&lt;p&gt;
Recently (end of May), I started helping out the CFEclipse project with
some bug fixes and contributing to a few small improvements for the
project. While I only came into the project in time to make an
incredibly small contribution, I am planning to be as big a part as
possible in the next release. 
&lt;/p&gt;
&lt;p&gt;
This brings me to my next point:    
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h3&gt;Learning&lt;/h3&gt;  &lt;strong&gt;Mark Drew is, for lack of better words, a badass.&lt;/strong&gt;
I didn&amp;#39;t realize when I initially offered to help that he has literally
been the only full developer on the project for a while. The fact that
he kept going says a lot about his passion for the project and his
commitment to the ColdFusion community as a whole. I only hope I can
contribute to CFEclipse even half as much as he has. I think it is
important that we all realize this because in addition to all that Mark
has done, he has &lt;a href=&quot;http://www.houseoffusion.com/cf_lists/messages.cfm/forumid:4/threadid:46188&quot;&gt;put up with a lot&lt;/a&gt;, and kept his attitude quite well despite.    
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h3&gt;Helping&lt;/h3&gt; So anyway, while this blog is still new and not
many will see this, I would like to remind those of you that can to
contribute what you can to CFEclipse if you are using it. Get Mark
something off his &lt;a href=&quot;http://www.amazon.co.uk/gp/registry/622WQR01XXWO/202-7294134-4681413&quot;&gt;Amazon Wishlist&lt;/a&gt; or purchase some &lt;a href=&quot;http://www.cafepress.com/cfeclipse&quot;&gt;CFEclipse schwag&lt;/a&gt;.    
&lt;p&gt;
Or, if you are really committed and brushed up on your Java, &lt;a href=&quot;http://cfeclipse.tigris.org/&quot;&gt;come help out&lt;/a&gt;!
I can say from experience that Mark went out of his way to make me feel
good about helping out and we&amp;#39;ve even gotten quite a few laughs via
Google Talk. 
&lt;/p&gt;
&lt;p&gt;
Anyway, for whoever reads, remember how well off a particular piece of
software can make you (particularly in the open source community and
that IDE you got for free) as well as how the people that gave you that
product deserve all of our respect and appreciation. 
&lt;/p&gt;
&lt;p&gt;
Thanks for subscribing to this moral outburst.    
&lt;/p&gt;
&lt;p&gt;
Mike. 
&lt;/p&gt;
</description><pubDate>Sat, 01 Jul 2006 01:51:16 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2006/06/30/CFEclipse--Learning-and-Helping</guid><category>CFEclipse</category></item><item><title>Java performance analysis - a real life example</title><link>http://edomgroup.instantspot.com/blog/2006/06/01/Java-performance-analysis--a-real-life-example</link><description>For my thesis I&amp;#39;m writing a Java program that parses two text files
(representing satellite images) and performs some analysis on them. The
two files are 128 MB and each was taking ~33 seconds to parse. The
analysis takes only a fraction of that time, then the results are
written back to an output file. 
&lt;p&gt;
Thinking this was very slow, since the files should be pretty much
sequential access off the disk and the read-ahead-buffer would have
cached the next block, I decided to dig a little. I rewrote the parsing
algorithm in C since it&amp;#39;s easier to manage the low-level IO. I used the
file stream functions (fopen,fread,fclose) provided by stdio. When I ran the program it took ~10 seconds.    
&lt;/p&gt;
&lt;p&gt;
This was insane. Java does have more overhead due to its garbage
collection, HotSpot optimizer, and object memory management but it
should not be a magnitude of 3x slower. After a few minutes looking at
the Java implementation I realized I had forgotten to instantiate a BufferedReader. I immediately jumped to the documentation and there it was, each call to the read method of the FileReader blocks until data is available. If no BufferedReader
is supplied this means a context switch for each call. No wonder Java
was taking so long. Adding the buffering I reran the algorithm and wow,
13 seconds. Not to bad for a &amp;ldquo;boated&amp;rdquo; language. 
&lt;/p&gt;
&lt;p&gt;
Figuring I had more places in my program which could be optimized I
began looking. The first place I went was to one of the main methods,
the one which did the analysis on each image. The logic was pretty
simple, find the next pattern in the given image, see if it exists in a
lookup table, if so update its statistics or create a new key and add
it as a new entry. The data structure I was using for the lookup table
was a simple HashMap
object. When writing that section of the program I was still relatively
new to the Java language and just went with what I&amp;#39;d used in other
languages, an associative array. 
&lt;/p&gt;
&lt;p&gt;
I did a little analysis with some System.out.println
statements and found that on average there was a 14,000 : 15 ratio
between reads and writes on the lookup table. Knowing this ratio was
pretty stable (I wasn&amp;#39;t going to get anywhere near 50% writes) I
decided a better data structure would be something with read time of
O(n) or less, instead of O(h(k)) where h(k) was the hash function on
the key. This meant an array would be best, but I didn&amp;#39;t want the
hassle of managing the size of the array as new patterns where found.
Java had to have something for this. After a little searching I found java.util.concurrent.CopyOnWriteArrayList. This was exactly what I needed. After a little tweaking the new code ran in 1/3 the time.    
&lt;/p&gt;
&lt;p&gt;
After this I wrote some small timed programs to examine the running time of the HashMap data structure and the CopyOnWriteArrayList. What I found was as the mutations  approached 25% the CopyOnWriteArrayList&amp;#39;s
performance slowed at an exponential rate. Finally, I couldn&amp;#39;t evaluate
the performance because the tests were taking too long. On the other
hand, the HashMap data structure had a fairly constant performance time irrelevant on the read/write ratio. 
&lt;/p&gt;
</description><pubDate>Fri, 02 Jun 2006 03:43:25 GMT</pubDate><guid>http://edomgroup.instantspot.com/blog/2006/06/01/Java-performance-analysis--a-real-life-example</guid><category>Java</category></item></channel></rss>