<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Topper on ColdFusion</title><link>http://www.cftopper.com/</link><description>Topper on all things ColdFusion</description><image><title>Topper on ColdFusion</title><url>http://www.cftopper.com/images/rsslogo.jpg</url><link>http://www.cftopper.com/</link></image><language>en-us</language><ttl>400</ttl><item><title>Great Review for TeamworkPM</title><pubDate>Tue, 02 Sep 2008 10:47:00 GMT</pubDate><description><![CDATA[I'm really delighted with a <a href="http://onlinebusiness.about.com/od/dailyoperations/fr/teamworkpm.htm">review</a> of our software, <a href="http://www.teamworkpm.net/">Teamwork Project Manager</a> from about.com!]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=216</link></item><item><title>Supporting Multiple Languages</title><pubDate>Mon, 25 Aug 2008 12:39:00 GMT</pubDate><description><![CDATA[<div style="border: 1px solid rgb(221, 221, 221); padding: 6px; float: right; margin-left: 5px;"> <img height="271" width="370" src="http://www.cftopper.com/images/lib/MyWork/translating.jpg" alt="The Translation engine at work" />
<div style="color: rgb(153, 153, 153);"><small>Google API Translation at work</small></div>
</div>
Over the weekend, I wrote a resuable script that converts snippets of English text to 20 other languages using the new <a href="http://code.google.com/apis/ajaxlanguage/" target="_blank">Google translate Ajax API</a> for our <a href="http://www.teamworkpm.net/">Teamwork Project Manager</a> software.<br />
<br />
The script was hacked together quickly and isn't the best most structred code in the world but it works well - it cycles through any strings in the languages table that haven't been converted yet and one by one, converts them to a foreign language. Every time, the script has 20 results, it saves the changes to the database.<br />
<br />
Watching it at work is pretty cool with strings coming back in Arabic, Chinese, Russian etc.<br />
<br />
The strings are stored in the following table MySQL table:<br />
<br />
CREATE TABLE `languagestrings` (<br />
&nbsp; `languageStringId` int(10) unsigned NOT NULL auto_increment,<br />
&nbsp; `languageStringRef` varchar(255) collate utf8_bin NOT NULL,<br />
&nbsp; `languageCode` char(2) character set utf8 NOT NULL,<br />
&nbsp; `languageString` text character set utf8 NOT NULL,<br />
&nbsp; `languageStringUsageCount` int(10) NOT NULL default '0',<br />
&nbsp; PRIMARY KEY&nbsp; (`languageStringId`),<br />
&nbsp; UNIQUE KEY `langStringRef` (`languageStringRef`,`languageCode`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;<br />
<br />
And translating the strings is done with the function<br />
translate( ref, english_default, bUpdateNow, language ) which works like so:<br />
<br />
#APPLICATION.teamworkpm.translate( &quot;Your Projects&quot;, &quot;Your Projects&quot;, false, &quot;ES&quot; )# gives &quot;Su Proyectos&quot;.<br />
<br />
Here is the translate function code:<br />
<br />
*** Code here - open article to view ***<br />
<br />
You can see that if the string has already been looked up, the result is returned immediately so that this function is nice and fast.<br />
<br />
If a string doesn't exist for a given language, the default english version is inserted for that language, so that it can be translated later.<br />
<br />
The languageStringUsageCount is updated whenever a string has to be looked up, usually after a server reboot. This will be useful when we want to strip the database of strings that are no longer used in a few months.<br />
<br />
The &quot;update now&quot; argument allows programmers to quickly change the value of english strings directly from the code base during development.<br />
<br />
Hopefully this will help you get your own multi-language systems up and running in ColdFusion.]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=215</link></item><item><title>Backup Software Recommendations</title><pubDate>Thu, 14 Aug 2008 02:52:00 GMT</pubDate><description><![CDATA[I'm going to tell you a secret, but don't tell anyone. Shhhhsss.<br />
About 3 weeks ago on a quiet Tuesday evening I installed the latest version of subversion client <a href="javascript:void(0);/*1218665151917*/">TortoiseSVN</a> on one of our website hosting servers in Dublin - I had to reboot the server after the install. This is when it all went wrong...<br />
<br />
I usually wait maybe 2 minutes and the server is backup serving a plethora of client websites and a few small web apps. I waited and waited, repeatedly pinging the server, searching for the first sign of life.<br />
<br />
The server was apparently lifeless. Nada. Nothing. Zip. &quot;No reply from server&quot;...<br />
<br />
We called our hosting company. No I lied ... we didn't. We actually had to use their brutal support chat program and bludgeon English into a pigeon-English speaking Polish guy to request that the server be manually restarted.<br />
<br />
I guessed that I had hit the &quot;shutdown&quot; option instead of the &quot;restart&quot; option and that the technicians would reboot the server in a jiffy and that all would be well.. so I tottered off home.<br />
<br />
Some time later I got a frantic phone call from <a href="javascript:void(0);/*1218665333445*/">Dan</a> informing me that the technicians said the server's hard drive was fried. I turned visibly white and raced back to the office for damage assessment.<br />
<br />
Hours later, the technicians in Dublin had managed to salvage some data by plugging the hard drive into another PC and running a Linux program to do a sector by sector copy where possible. We recovered a lot of data but we had still lost a fair amount. Luckily we had most, but not all, of the website databases backed up to a PC in my office thanks to <a href="javascript:void(0);/*1218665574060*/">Navicat</a> and scheduled tasks.<br />
<br />
The technicians reinstalled a blank Windows 2003 server installation along with the data they managed to recover and Dan and I spent the entire night working feverishly to get all the websites and applications working before our clients got to work and started screaming.<br />
<br />
In the end, the only thing we lost was a very small website. We recovered the page content from Google page cache (isn't Google great) and then gave the client a new, much better website for free to make up for the down time which was 1 day while Dan knocked the new site out.<br />
<br />
And here's my point: disasters will happen, so plan for them.<br />
<br />
<h3> Our New Backup Plan</h3>
<br />
We have since installed <a href="javascript:void(0);/*1218664884886*/">Carbonite Backup</a> on all our servers. Everywhere. It's an absolutely bargain for only $30 a year per server for unlimited data. I thought there must be a catch at first, but no, it's a steal, easy-to-setup and works great.<br />
<br />
That's the files sorted. But what about the databases. Well, we use MySQL on all our servers (if you use anything else you are a stupid Microsoft whore or Oracle slut, sorry) and it's difficult to restore MySQL from just the raw data files. I wanted something that could backup an entire server of MySQL databases automatically including new databases without any additional configuration - the reason we lost that one website was because each website had to be manually configured with our old database backup system and we had missed a few.<br />
<br />
Eventually, after a serous amount of poking about ye olde internet, I found exactly what I was looking for in <a href="javascript:void(0);/*1218664694315*/">Auto Backup for MySQL from Swordsky SoftWare</a>. This is the only program I could find that would run as a service and backup multiple entire servers reliably without needing additional configuration as each new website is added.<br />
<br />
It also has a thoughtful array of options such as automatic removal of old backups after so-many days - something that I used to have to do manually in the past. The SwordSky team, whoever they are, have done a fantastic job here and I encourage you to give it a go. It's a bargain at only $100 or so too.<br />
<br />
So there you have it, two cheap, easy-to-setup products that may one day save your ass.]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=214</link></item><item><title>CF_Desk action=&quot;upgrade&quot;</title><pubDate>Fri, 04 Jul 2008 03:00:00 GMT</pubDate><description><![CDATA[I took my old office desk, ripped the battered leather off the top, chucked a map down, put a pane of toughened glass on top and voila... I have a shiny new desk.<br />
<br />
<img height="297" width="500" src="http://www.cftopper.com/images/lib/MyWork/newDeskCropped.jpg" alt="My new desk" /><br />
<br />
<br />
<img height="375" width="500" src="http://www.cftopper.com/images/lib/MyWork/deskInUse500.jpg" alt="New desk in use" />]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=213</link></item><item><title>Tip: Easily protect your include files</title><pubDate>Wed, 30 Apr 2008 12:38:00 GMT</pubDate><description><![CDATA[Hi All. Sorry I haven't posted in a while, I've been very very busy. Thanks to everyone who has been encouraging me to release our Content Management Software I demonstrated as CFUnited EUrope... soon I promise.<br />
<br />
I just thought I'd share this quick and useful tip:<br />
<br />
Put the following code in all your Application.cfm or Application.cfc fles to automatically protect your include files such like &quot;inc_test.cfm&quot; or &quot;act_deleteUser.cfm&quot; from being called directly.<br />
<br />
UPDATE: This code had a bug which was fixed 30th April 2008<br />
&lt;!--- Any script such as inc_file.cfm or dsp_file.cfm can not be called directly ---&gt;<br />
&lt;cfif mid( ListLast( cgi.script_name, &quot;/&quot; ), 4, 1 ) IS &quot;_&quot;&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;cflocation url=&quot;#APPLICATION.siteURL#&quot; addtoken=&quot;no&quot; /&gt;<br />
&lt;/cfif&gt;<br />
<br />
There is some code in fusebox that prevents calling files other than index.cfm but we have found this too limiting.]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=212</link></item><item><title>CFUnited Europe 2008</title><pubDate>Sun, 16 Mar 2008 12:01:00 GMT</pubDate><description><![CDATA[Mission accomplished - I spoke at CFUnited and survived.<br />
<br />
<a href="http://www.carehart.org/" target="_blank"> Charlie Arehart</a> was nice enough to give me some tips and help me rearrange and improve my Powerpoint presentation for the 2 hours before my talk.<br />
<br />
With minutes to go, I saved my Powerpoint and suspended my laptop, then headed upstairs to the conference room. Now this was my first time speaking in front of more than 6 people and I was extremely nervous.<br />
<br />
I get to the conference room and there are a few people in there already. I head up to the stage, laptop in hand and start setting up... I hit the power button to restore my laptop and.... what the hell... my laptop is rebooting, not restoring.<br />
<br />
OK, not too bad, I'll just have to start ColdFusion, open the presentation and Firefox windows again. My laptop takes an age to start up.<br />
<br />
So I am 3 minutes into the presentation and still waiting for my laptop to warm up. Fortunately there are still a few stragglers filing into the small conference room.<br />
<br />
I double click to open the presentation and wait. And wait. It is taking ages to open. My laptop is being projected onto the 8 foot screen; everybody in the room feels my pain when Powerpoint reports that the file is corrupt and asks if I would like to restore it. Hell yes, restore that thing and fast.<br />
<br />
I start the presentation. My freyed nerves are shattered but the show must go on. I start into the slides and notice something strange on the &quot;About Me&quot; slide. It's not exactly right.<br />
<br />
Then I get to the &quot;Contents&quot; slide and notice that all the changes Charlie helped me make have been lost. Now this is a major curveball - there were entire topics that I had dropped, new sections I added and the whole thing had been rearranged.<br />
<br />
Next disaster. The first section in my presentation should have been the last - it's all about &quot;Source Control&quot;. I ask for a show of hands to make a point - &quot;How many people in this room use source control&quot;. I had expected about 4 hands. I am dismayed to see that of the room of maybe 35 people, only 1 does not have his hand up.<br />
<br />
Anyhow, I persevered and bluffed my way through the rest of the presentation. I'd like to thank everybody who was in the audience for their support. As promised here is the real presentation. Hopefully you all got something from the rest of the presentation. Topics covered:<br />
<ul>
    <li>Quick Tip: AJAX debugging</li>
    <li>Supporting Different Timezones</li>
    <li>Foreign Language Support</li>
    <li>Advanced File Uploading</li>
    <li>Quick Tip: CSS Hacking for IE6</li>
    <li>Working with Multiple Domains</li>
    <li>Database &ldquo;Sharding&rdquo;</li>
    <li>Source Control.</li>
</ul>
<ul>
    <li><a target="_blank" href="http://www.cftopper.com/contentfiles/presentations/CFEurope2008.pptx">Download my presentation - CFEurope 2008.pptx</a></li>
</ul>
I also gave a demo of our content management system, TeamworkCMS, and it's powerful plug-in architecture. As promised this will be released in May 2008. Stayed tuned.<br />
<br />
I learned a lot from this experience and i'm sure that next time, i'll be more prepared and much more confident. It was a great experience all-in-all.
<pre>This is the latest CF9 prototype (codename MoHawk):<br /><img width="500" height="441" src="http://www.cftopper.com/images/lib/MyTrips/CFUnitedEurope2008/CF9_CFUnited_Europe_2008.jpg" alt="CF9 (foot) at CFUnited 2008" /></pre>]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=210</link></item><item><title>I&apos;m speaking at CF-United Europe!</title><pubDate>Tue, 11 Dec 2007 03:01:00 GMT</pubDate><description><![CDATA[I'm going to be speaking at CF-United Europe! It's my first real public-speaking effort so please lend your support.
<p>The topic is:<br />
<strong>How we made it: Teamwork Project Manager - tips for development of highly-scalable web2.0 apps in ColdFusion</strong>.</p>
<span class="q">We developed <a href="http://www.teamworkpm.net/" target="_blank">Teamwork Project Manager</a> </span>over the last 7 months. There aren't many web2.0 CF apps taking on the Ruby crowd these days and I think my speech will be interesting.<br />
<br />
Some items would include:<br />
<br />
<ul>
    <li>Industry Analysis</li>
    <li>Ajax &amp; ColdFusion
    <ul>
        <li>Debugging techniques</li>
    </ul>
    <ul>
        <li>Processing the response</li>
        <li>Using JSON with CF</li>
    </ul>
    </li>
    <li>Handling Multiple Domains with one application</li>
    <li>Advanced file uploading - hundreds of files in one go</li>
    <li>Database design</li>
    <li>Scalability<span class="q"></span></li>
    <li><span class="q">Support</span></li>
    <li><span class="q">Sales &amp; marketing</span></li>
</ul>
<span class="q"><br />
</span>]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=208</link></item><item><title>Another reason to hate IE</title><pubDate>Sun, 25 Nov 2007 02:11:00 GMT</pubDate><description><![CDATA[<div style="border: 1px solid rgb(207, 207, 207); margin: 10px; padding: 10px; background-color: rgb(255, 255, 255); -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -moz-border-radius-bottomleft: 5px;"> Like we need <a target="_blank" href="http://www.sitepoint.com/blogs/2007/11/22/in-all-fairness-%e2%80%a6-internet-explorer-still-stinks">another reason to hate IE</a>. But here it is.<br />
<br />
I recently implemented rounded edges throughout <a target="_blank" href="http://www.teamworkpm.net/">Teamwork Project Manager</a> and it's a painful process involving nested divs and workarounds for IE6 glitches.<br />
<br />
Today I was procrastinating on <a href="http://www.digg.com/">Digg.com</a> and I stopped to admire the rounded edges on their notification bar. <br />
<br />
<img width="500" height="50" src="http://www.cftopper.com/images/lib/MyWork/rant/diggEdges.jpg" alt="Digg.com - nice rounded edges" /><br />
<br />
I decided to look at the page source to to see their nested divs - are they using 4 nested divs for maximum flexibility bar with rounded edges - 1 div for each corner, or, where they using just 2 divs - one for each side with a height limitation?<br />
<br />
The answer perplexed me - They just had something like &lt;div id=&quot;announce&quot;&gt;&lt;p&gt;Check out...&lt;/p&gt;&lt;/div&gt;.<br />
<br />
I thought &quot;they must be using the &lt;P&gt; tag as a container with a background image&quot; so I download their CSS source code and was confounded to see this:<br />
<br />
<pre>     -moz-border-radius: 1em;<br />     border-radius: 1em; <br /></pre>
<br />
What in the blazes is that? CSS supports rounded edges? My pain was for nought? Could I have just shoved these 2 lines of code in and saved myself hours of work?<br />
<br />
In a perfect world, a world without Internet Explorer, then yes, I could. If you are using FireFox, <strong>this entire post will have rounded edges</strong>. If you are using IE, you'll just see a plain box.<br />
<br />
Here you see the same announcement banner in IE - notice anything different?<br />
<br />
<img width="500" height="50" src="http://www.cftopper.com/images/lib/MyWork/rant/diggEdgesIE.jpg" alt="Digg.com - no rounded edges in IE" /><br />
<br />
Here is another example.<br />
<br />
<img width="423" height="302" src="http://www.cftopper.com/images/lib/MyWork/rant/roundedEdgesComparison.jpg" alt="Rounded edges browser comparison" /> <br />
<div style="border: 1px solid rgb(207, 207, 207); margin: 10px; padding: 10px; background-color: rgb(255, 255, 255); -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -moz-border-radius-bottomleft: 5px;">I hereby confirm, <strong>IE sucks</strong>.</div>
</div>]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=206</link></item><item><title>Announcing CF Debug Live Link (free tool for CF Developers)</title><pubDate>Wed, 07 Nov 2007 12:45:00 GMT</pubDate><description><![CDATA[Want to save time developing ColdFusion applications? - Just install <strong>CF Debug Live Link</strong>.<br />
<br />
It changes the links in the standard ColdFusion MX 7 debugging output so that when the file names are clicked, they open for editing instantly.<br />
<br />
<img width="540" height="408" src="http://www.cftopper.com/images/lib/MyWork/cfDebugLiveLinks.jpg" alt="CF Debug Live Link - turns file names into clickable links to quickly edit files" /><br />
<br />
It does this by registering a protocol handler with Windows, which in turn calls a small .net application which tells your editor of choice to edit the file.<br />
It's Windows / CFMX7 Only. Tested on both Vista &amp; XP.<br />
<br />
I made a simple installer so you can install this in seconds.<br />
<br />
<ul>
    <li><a href="http://www.cftopper.com/contentfiles/software/CF_Debug_Live_Link_MX7_Setup.zip">Download CF Debug Live Link now (free)  </a></li>
</ul>
<br />
NOTE: By default, CF Debug Live Link is configured for Homesite+ but you can change this to any editor by editing C:\Program Files\CF Debug Live Link\cfdebugfilelink.exe.config]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=204</link></item><item><title>Teamwork Project Manager - The Sstory</title><pubDate>Tue, 30 Oct 2007 09:59:00 GMT</pubDate><description><![CDATA[<strong>We hear a lot about people building web2.0 apps like Twitter using Ruby on rails. Rarely do we hear a mention of ColdFusion being use to build a scalable high-availability ajax enabled application. But at Digital Crew we <a href="http://www.teamworkpm.net/index.cfm/page/blog?rbId=11" target="_blank">recently launched</a><a href="http://www.teamworkpm.net/" target="_blank"> Teamwork Project Manager</a> - an application that as the name suggests, allows organisations to manage their internal and external projects and get productive.<br />
<br />
The whole thing is built on our own 'SiteEngine' framework using ColdFusion and MySQL.<br />
<br />
Here is the story so far.</strong> <br />
<br />
<h2>The Teamwork Project Manager Story</h2>
<div class="copy">
<h4>January 2007</h4>
<br />
Peter Coppinger &amp; Dan Mackey founded their company Digital Crew almost 8 years earlier and have made a living building websites, intranets and custom web-based solutions for clients in Cork, Ireland. At this point their company has a good reputation internationally and they <a target="_blank" href="http://www.cftagstore.com/">sell website components online</a>.<br />
<br />
However they found themselves up to their eyeballs in client projects.<br />
Peter Coppinger says, &quot;<em>Every Monday we held a meeting and discussed the current projects - reassigned tasks and set milestones. We maintained a large whiteboard separated into 5 segments - Active Projects. Upcoming Projects, Sales, Meetings and Billing.<br />
<br />
The whiteboard was neatly organised and gave us a sense that we were organised.... but we weren't.<br />
<br />
The meetings were taking longer and longer. We knew we needed a better system.</em>&quot;.<br />
<br />
<h4>March 2007</h4>
<br />
Peter and Dan spent some time reviewing and using project management software. Many are very expensive and all are overly complex. They wanted something intuitive that doesn't take time to learn and maintain. Something everybody in the company can use - not just the project manager.<br />
<br />
Peter dreams of a software system that would basically manage a company. Call it a project management system, if you will - something extremely easy-to-use and generic enough that it could be used by all sorts of companies. He starts scribbling ideas on paper. In the morning he returns to work and the confused whiteboard overlord.<br />
<br />
<h4>May 2007</h4>
<br />
Peter and Dan discuss the software they want to make almost daily now. And they have a name - Teamwork Project Manager (styled after TeamworkCMS - Digital Crew's bespoke website content management system).<br />
<br />
A credos is set - &quot;Project Management Made Easy!&quot;<br />
<br />
Peter and Dan are too busy with 'real work' to dedicate time to developing the product idea. But fate intercedes and a manager from a multinational client calls Peter to ask if he would have time to do a &quot;simple&quot; project management system. They want something extremely easy-to-use that would list upcoming and late milestones. This is the opportunity Peter has been waiting for. He eagerly tells the client about the software he has been thinking about making for a while and <strong>the client agrees that it is exactly what they need</strong>.<br />
<br />
Peter first reviews other popular project management systems to find out what they are doing right and what they are doing wrong. Although other Project Management solutions exist, they are all too slow, clunky and badly designed. None are what the client wants and Peter has in his head. He makes a list what he likes and dislikes and puts pen to paper designing the software.<br />
<br />
While on holiday to visit his sister in Boston for 3 weeks, Peter shamelessly neglects holidaying to stay up night-and-day working on the 'Project Management System'. Dan, busy with other client work back in Cork, checks in every morning. Screenshots fly back and fourth but Peter is reluctant to show the software running &quot;until it's ready&quot;. Dan, also passionate about the development of their first &quot;real&quot; product, provides a steady steam of encouragement and suggestions.<br />
<br />
<br />
<h4>June 2007</h4>
<br />
The software is installed for the client. Peter nervously waits for their feedback. Will they love it or loath it? Peter checks back an hour later and the client manager has already set-up several projects, added staff, assigned tasks and milestones. Just then, the phone rings. The client manager tells Peter that <strong>this is exactly what he was looking for</strong>. He was able to use it right off-the-bat with no instruction manual. Software, the way it should be.<br />
<br />
<br />
<h4>August 2007</h4>
<br />
Dan works post-haste on TeamworkPM adding his fair share of sleepless-nights to the tally. The software is lovingly sculpted bit-by-bit with sometimes heated 'discussions' over items such as the color of a link. <strong>Their mission is simple - to make the worlds most easy-to-use, fastest and best Project Management System.</strong><br />
<br />
<br />
<h4>September 2007</h4>
<br />
Weeks of preparation. Servers are set-up. Database is optimized. Software continually improved. The promotional website is made. And finally the launched date is set.<br />
<br />
<br />
<h4>October 2007</h4>
<br />
Everything is ready and has been tested a hundred times.<br />
Teamwork Project Manager is launched on October 4th 2007.<br />
<br />
Almost immediately, through their respective software development blogs, curious users start browsing the website and Teamwork Project Manager receives it first sign up within a hour of launch!<br />
<br />
It's only been 3 weeks so far and the feedback has been great. We didn't expect the sales to start until at least the 30-day mark but we things are going better than expected. We believe we have a great product and we are now working hard on the marketing side of things.<br />
Stay tuned to the blog. I look forward to updating this story.<br />
<br />
Thanks for reading the story. So far we have had a great response and we are continually improving the software. We believe that our software lives up to our credos - &quot;Project Management Made Easy&quot;. We want the software to be so easy-to-use, our own computer-shy mothers could use it (and indeed they do).<br />
<br />
We are working extremely hard to deliver more features and continually improve TeamworkPM. Please <a target="_blank" href="http://www.teamworkpm.net/index.cfm/page/pricing">try Teamwork Project Manager for free</a>. 	</div>]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=203</link></item><item><title>Teamwork Project Manager - Password stored securely</title><pubDate>Sun, 07 Oct 2007 05:39:00 GMT</pubDate><description><![CDATA[RE: <a href="http://www.teamworkpm.net" target="_blank">Teamwork Project Manager - Project Management made Easy!</a><br />
<br />
That <a href="http://www.teamworkpm.net/index.cfm/page/blog?rbId=13">feedback feature I added</a> has worked out great so far. We've got some great suggestions and enquiries in.<br />
<br />
One customer used to feedback option to contact us. He had used the option to retrieve a lost password and wondered why the password we emailed him was different to the password he originally provided.<br />
<br />
The answer, I replied, is security.<br />
We do not store your passwords!<br />
<br />
Instead we store a HASH of the passwords.<br />
A HASH is a one-way transform. For example in the database, the password &quot;tulsar256&quot; might have been transformed to a string like &quot;DDC3954CB4BC3AFE4A278BE8D7A1662&quot; using hashing. And there is no way to determine what the original password is from this string.<br />
<br />
<div id="mb_4">So when you login, we convert the password your have entered into another hash and then compare it to the hash we have stored in the database.<br />
<br />
This is all great and gives our customers that extra little piece of mind - knowing that even if we wanted to, we couldn't see what passwords you are using. However we can't just email you with your password now when you forget it - we simply don't know it.&nbsp; Instead we email you a hash of a your password hash. <br />
<br />
So we have absolutely no idea what our customer passwords are (and we shouldn't know!).&nbsp; Many people use the same password on several sites and all IMHO all sites that care about their customers security should use hashing for storing all passwords.<br />
<br />
<a href="http://www.teamworkpm.net" target="_blank">Teamwork Project Manager - Project Management made Easy!</a><br />
<br />
</div>]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=202</link></item><item><title>TeamworkPM - 24 hours in</title><pubDate>Fri, 05 Oct 2007 07:50:00 GMT</pubDate><description><![CDATA[It's been 24 hours since we launched <a class="external" target="_blank" href="http://www.teamworkpm.net/">Teamwork Project Manager</a>.<br />
<br />
...and we've had a monkey-load of installations!<br />
Just about everybody is using the free account... so I guess we'll have our work cut out convincing people to upgrade but that's OK... I relish the challenge.<br />
<br />
OK, I've decided that i'm going to try to add at least one feature, bug fix or enhancement everyday. Today I added something that really should have been there from the start... the ability to um, well, cancel one's account if you must.<br />
<br />
<h3>Cancel Account</h3>
<br />
Not a feature I relished in adding but it had to be done. Before we cancel the account, we try to encourage the user to let us know where it all went wrong. We are really dedicated to making this the best project management system and if we are losing a user, we would love to learn from it.<br />
<br />
<img width="500" height="577" border="1" src="http://www.teamworkpm.net/images/components/RADBlog/18/large/cancelAccountForm.jpg" alt="Cancel account form" /><br />
<br />
<h3>Feedback</h3>
<br />
You might have noticed I beg the user to provide us with some feedback instead of just quitting. So I had to get the feedback form done quickly today also. The feedback link is available at the bottom of every page so hopefully we'll get some good feedback to help us further shape and improve the product and blow the competition away.<br />
<br />
<img width="500" height="360" border="1" src="http://www.teamworkpm.net/images/components/RADBlog/18/large/feedbackForm.jpg" alt="Feedback Form" /><br />
<br />
<br />
That's it for today - stay tuned - more features (hopefully more interesting) tomorrow.<br />
<br />
<h3>Update</h3>
I was just looking at the site stats - not bad for 24 hours in. It feels like we are having an effect. Hello to the 1 guy/gal in Thailand and the 1 guy/gal in Moscow who checked in on us. And thanks to everybody who has created an installation so far. Spread the word!<br />
<br />
<img width="672" height="237" src="http://www.teamworkpm.net/images/components/RADBlog/18/large/visitMapOct4.jpg" alt="Visit map after 24 hours" />]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=201</link></item><item><title>We have launched!</title><pubDate>Thu, 04 Oct 2007 03:25:00 GMT</pubDate><description><![CDATA[<h3>We have finally launched!!</h3>
And what a wild ride it has been getting everything ready.<br />
<br />
Check out Teamwork Project Manager at <a href="http://www.teamworkpm.net" target="_blank" class="external">www.teamworkpm.net</a><br />
<br />
<h3>The Website - Final Days</h3>
About a 5 days ago we had this marketing website almost complete. We stood back and looked at what we had created... and we decided... it sucked. Against the pressure of the looming launch date chiseled in stone on the preview website, we started again. We threw away the old website and said to our designer, Adam, &quot;Hey Buddy, um... we don't like the site. Can you cook us up something prettier?&quot;.<br />
<br />
Lo and behold, he disappeared off the face of the Earth for 2 days and returned with the new website design. And we saw that it was good. We worked round the clock slicing and dicing, XHTMLizing and CSSing, content-managing, tweaking and testing.<br />
<br />
A few hours behind the intended launch time, we made the critial change to the IIS web server and set the new site live, flying open the doors allowing all to sign up for the shiny new kid on the block - Teamwork Project Manager.<br />
<br />
Here we are in my office seconds after putting the website live. We are tired, we are hungry, we have sore backs and aching asses... but we're happy. That's me, <a href="" target="_blank" class="external">Topper</a>, on the left and <a href="http://www.cfdan.com/" target="_blank" class="external">Dan</a> on the right.<br />
We are holding the camera in our out-stretched hands (attempt number 10 to take a photo with both of us in the frame. The bad quality reflects that this was taken on my trusty K750i camera phone.)<br />
<br />
<img width="500" height="375" src="http://www.teamworkpm.net/images/components/RADBlog/18/large/TeamworkPM_Launch_Topper_Dan_4Oct2007.JPG" alt="" /><br />
<br />
We still have a lot to work to do on this website of course but we are proud of what we have created.<br />
<br />
<h3>Teamwork Project Manager - Final Days</h3>
We started making some important changes with just days left to launch.<br />
<br />
For example, our testing had revealed that user were getting confused between project view and top-level/dashboard view. They would just blink wildly and we've have to explain that you have to click-into a project. Also in project view they wondered where all the other projects had gone.<br />
<br />
We fixed this by redesigning the navigation system into two bands of tabs in stead of just one with and extra &quot;Project View&quot; tab at the top level to make it obvious that the user was now indeed, in project view. It's so much more intuitive this way.<br />
<br />
What else - oh yes, <a href="http://www.cfdan.com/" target="_blank" class="external">Dan</a> whinged on about the need for starring of projects for so long that I finally relented. I didn't plan on getting this done for launch but I'm very glad I did now. Now, when you are members of a whole host of projects and the dashboard is getting a little busy, the user can switch to custom view where he will only see the projects he has starred.<br />
<br />
Also when there are loads of active projects such as here at Digital Crew, we now only list the projects that have been active in the last 14 days on the sidebar. Other projects can then be shown by clicking &quot;All projects&quot;. It looks so simple but we had a good 10 minute discussion over the best way to present this to the user. We considered tabs for &quot;Recent Projects&quot; and &quot;All Projects&quot;&nbsp; but in the end, I think the way we have it now is much better.<br />
<br />
<img width="500" height="375" src="http://www.teamworkpm.net/images/components/RADBlog/18/large/TeamworkPM_Launch_Dan_in_office.jpg" alt="TeamworkPM is launched at last and Dan is a happy little camper" /><br />
<br />
<h3>Apr&egrave;s Launch</h3>
This morning I woke up and eagerly turned on the computer, anxious to see if we got any sign-ups or feedback. I was delighted to see a very positive email - &quot; <span style="font-style: italic;">I have started playing with the app and am incredibly impressed with the ui and the streamlined approach to project management.</span>&quot;. He then asked us to provide a roadmap and listed a few more features he would love to see.<br />
<br />
This type of feedback just hours after launch is great motivation for me. I'm going to get busy cooking up the extra feature this guy wants and serve it hot! Stay tuned.<br />
<br />
<img width="500" height="375" src="http://www.teamworkpm.net/images/components/RADBlog/18/large/TeamworkPM_Launch_Topper_Job_Done.jpg" alt="TeamworkPM Launched - Topper has his legs up! A job well done." /><br />
<br />
PS. I will be adding a roadmap page to the Teamwork site before the end of the day,<br />
PSS. I just added a &quot;Chat Now&quot; link in the footer of this website so feel free to get in touch.<br />
<br />
Check out Teamwork Project Manager at <a href="http://www.teamworkpm.net" target="_blank" class="external">www.teamworkpm.net</a>]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=200</link></item><item><title>Smart Maintenance Message</title><pubDate>Wed, 26 Sep 2007 12:30:00 GMT</pubDate><description><![CDATA[If you need to perform an upgrade on your ColdFusion website and it requires keep users away for a little while so they don't see error messages, then you can use the following ColdFusion file to show them an &quot;upgrading...&quot; message.<br />
<br />
Your users will see this message but your team can continue accessing the website by entering an access code on the URL like so www.testsite.com/?accesscode=byPass<br />
<br />
The access code can easily be changed in the file and the template can easily be turned off by changing 1 to 0 at the start of the file.<br />
<br />
<img width="400" height="51" src="http://www.cftopper.com/images/lib/MyWork/tools/accessCodeMsg.jpg" alt="Display this message when doing an upgrade." /><br />
<br />
<ul>
    <li>Download <a href="http://www.cftopper.com/contentfiles/tools/maintenance.cfm.txt" target="_blank">Maintenance.cfm</a></li>
</ul>]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=199</link></item><item><title>CFQUERYPARAM Vs Slow Query Logging</title><pubDate>Thu, 20 Sep 2007 05:16:00 GMT</pubDate><description><![CDATA[I use MySQL's slow query logging on all our servers and applications to identify any bad queries and bottlenecks.<br />
<br />
But check this out - I was just on the MySQL slow query page and somebody has left a comment:<br />
<br />
<blockquote>&quot;Please note that the mysql slow query log will not show the SQL<br />
of your slow queries if your application uses prepared statement.&quot;<br />
</blockquote> <br />
So if we use &lt;cfqueryparam...&gt; we are fucking ourselves by not being able<br />
to analyse slow queries.<br />
<br />
That sucks!]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=196</link></item><item><title>Thief in the night - AutoComplete=&quot;OFF&quot;</title><pubDate>Wed, 12 Sep 2007 12:25:00 GMT</pubDate><description><![CDATA[Firefox suddenly stopped remembering my login credentials for online Banking a few months ago. So everytime I want to remind myself how poor I am, I had to poke around in Google Docs for my &quot;internet Banking&quot; number,&nbsp; copy it to the form, then enter the password - a tedious and slow process.<br />
<br />
I thought autocomplete not working was just a firefox glitch and that it would eventually right itself. This morning I did a search and encountered the obscure atocomplete=&quot;off&quot; attribute.<br />
<br />
&quot;Could this be the problem&quot;, I mused, And so I checked - Indeed my Bank's login form is now using this attribute to save dumb users from themselves (Dumb users meaning those people that might click &quot;remember this password&quot; in an internet caf&eacute;<img width="18" height="18" border="0" align="bottom" src="http://www.cftopper.com/images/smilies/simple/emo-wink.gif" alt="Wink" style="margin: 0pt 5px;" />.<br />
<br />
<h3>How to Turn Back on Autocomplete</h3>
<h3><br />
</h3>
You can use a greasemonkey script to change autocomplete=&quot;no&quot; to autocomplete=&quot;yes&quot; on all forms on the webpage. There are a number of simple greasemonkey scripts to do just this available at:<br />
<br />
<a href="http://userscripts.org/scripts/search?q=autocomplete" target="_blank">http://userscripts.org/scripts/search?q=autocomplete</a><br />
<br />
<br />
Hat tip: <a href="http://www.howtogeek.com/howto/internet/firefox/why-doesnt-autocomplete-always-work-in-firefox/" target="_blank">howtogeek.com</a><br />
<br />
<h3>I don't know everything!</h3>
<br />
I've been programming websites for almost 10 years now and I missed this autocomplete attribute or else passed over it. Kind-of disappointed with myself - I don't know everything afterall! <img width="18" height="18" border="0" align="bottom" src="http://www.cftopper.com/images/smilies/simple/emo-tongue.gif" alt="Messing" style="margin: 0pt 5px;" />]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=195</link></item><item><title>Top 5 Must-Dos on new Windows PC</title><pubDate>Fri, 24 Aug 2007 09:13:00 GMT</pubDate><description><![CDATA[A buddy of mine wants me to come over and help set-up his newly reinstalled XP laptop. But my life is hectic at the moment. so for-now I've put this list of the top 5 must-dos for a new Windows PC.<br />
<br />
As sent to my buddy in an email just moments ago.<br />
Who knows, it might help somebody else.<br />
<br />
<hr width="100%" size="2" />
<br />
Yo Bud,<br />
<br />
This is just off the top of my head.<br />
The 2 things you <em>really</em> need are to update windows and to install an anti-virus.<br />
<br />
<ol>
    <li>
    <h3>Update Windows</h3>
    <br />
    (This is Mircosoft fixing all the security flaws and providing a more reliable and easier-to-use system.)<br />
    <br />
    To perform the update, just visit<br />
    <a href="http://www.update.microsoft.com/">http://www.update.microsoft.com/<br />
    <br />
    </a>The site should guide you through the process. It will ask you to validate your software and you may have to say YES to install something called an &quot;activeX control&quot;.<br />
    <br />
    Once it starts - It will take a while to download but you can be using the computer away in the meantime installing other shit.<br />
    <br />
    When it finishes a round of installs, it sometimes asks you to reboot.<br />
    <br />
    Once it has rebooted, return to that website and check for updates again... keep at it until there is nothing left to upgrade.<br />
    <br />
    Note: with these updates, your version Internet Explorer will be be updated to version 7 at some point. Just say yes when prompted, IE7 is a good thing.<br />
    <br />
    &nbsp;&nbsp; <br />
    </li>
    <li>
    <h3>Install good and free antivirus software</h3>
    <br />
    (You can complete this step even while step 1 is at work downloading updates)<br />
    <br />
    First-things-first, we'll download an excellent and completely free anti-virus solution. The best available (IMHO) is AVG Free Edition.<br />
    <br />
    It's available at:<br />
    <a href="http://free.grisoft.com/" target="_blank" class="external">http://free.grisoft.com/</a><br />
    <br />
    Be careful not to get the paid-for version. Get the free Basic Protection version, it is all you need. Download it but don't install it yet; we first need to remove the crap pay-later-ware antivirus off your computer.<br />
    <br />
    Completely uninstall all the crap or pre-installed anti-virus on your computer.<br />
    So if you have MacAfee or Norton, completely uninstall anything that bearing their name. You will probably have to reboot.<br />
    <br />
    Now install AVG Free Edition. Just run the program and say yes to everything.<br />
    <br />
    <em>Happy days, we now have good free virus protection.<br />
    <br />
    &nbsp;&nbsp; </em></li>
    <li>
    <h3>Install good and free Anti-Spyware</h3>
    <br />
    Next I recommend you get SpyBot - <strong>Search and Destroy</strong>.<br />
    (This is excellent free software that saves you from yourself and keeps shitty software away from your pc - it's a must have really.)<br />
    <br />
    The website for this software is awful and confusing so here is a direct link to download the software:<br />
    <br />
    <a href="http://www.safer-networking.org/en/mirrors/index.html">http://www.safer-networking.org/en/mirrors/index.html</a><br />
    <br />
    Click one of the download buttons under the heading &quot;Hosted by Safer-Networking&quot; (The other download screens are confusing).<br />
    <br />
    Install this with all options.<br />
    <br />
    Once it's installed it will ask you if you want to download all updates - this is important - say YES.<br />
    <br />
    <em>Excellent, we not have good anti-spyware.</em><br />
    <br />
    Once every now and then if you've been doing a lot of downloading, you may want to download the run this program, download any updates and scan your computer. This will remove or block any shitty software that may be slowing your computer down.<br />
    <br />
    &nbsp;&nbsp; <br />
    </li>
    <li>
    <h3>OK, you need good and free Office Software.</h3>
    <br />
    (If you have Office 2003, that's great, skip this step.)<br />
    There is an free office suite, that is (IMHO), 90% as good as Microsoft office.<br />
    <br />
    It's call OpenOffice and is available at:<br />
    <a href="http://www.openoffice.org/">http://www.openoffice.org/<br />
    <br />
    </a>To download. click the is a big-fuck-off link (in green in case you missed it)<br />
    <br />
    On the next page, again, click &quot;Download Openoffice&quot;. Then click &quot;Windows&quot;... on the next screen click &quot;continue to download&quot; and it should start.<br />
    <br />
    Install this when it has downloaded.<br />
    <br />
    <em>You now have a full office suite.<br />
    &nbsp;&nbsp; </em><br />
    <br />
    </li>
    <li>
    <h3>Some Porn</h3>
    <br />
    Next essential link, some good Porn, go to:<br />
    <br />
    Go to www.t*******lpost.com<br />
    ;p<br />
    <br />
    (I'll replace this paragraph with a good suggestion, if you have any)<br />
    </li>
</ol>
<br />
Sin &eacute; buddy - Enjoy.<br />
<hr width="100%" size="2" />
<br />
If you have any suggestions/software to add to the list, let me know with the comments below.]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=194</link></item><item><title>Quick Tip: I Forgot the ColdFusion (CFMX7) Administration Password?</title><pubDate>Tue, 14 Aug 2007 02:32:00 GMT</pubDate><description><![CDATA[OK, It happens - you forgot the password. Maybe your working on a client web server and nobody knows what the password was set to 2 years ago when they set it up. Maybe your just suffering brain-freeze. Or maybe your just thick. <img src="http://www.cftopper.com/images/smilies/simple/emo-tongue.gif" width="18" height="18" border="0" align="bottom" alt="Messing" style="margin:0 5px" /><br />
<br />
Anyhow, you've tried everything and your pulling your hair out.<br />
Here's the solution, it works with CFMX6/CFMX7.<br />
<ol>
    <li>Open the file C:\Program Files\ColdFusionMX\lib\neo-security.xml.</li>
    <li>Change:<br />
    <br />
    <pre>&lt;var name=&quot;admin.security.enabled&quot;&gt;</pre>
    <pre>&nbsp;&nbsp; &lt;boolean value=&quot;true&quot; /&gt;</pre>
    <pre>&lt;/var&gt;</pre>
    <br />
    to read<br />
    <br />
    <pre>&lt;var name=&quot;admin.security.enabled&quot;&gt;</pre>
    <pre>&nbsp;&nbsp; &lt;boolean value=&quot;false&quot; /&gt;</pre>
    <pre>&lt;/var&gt;</pre>
    </li>
    <li>Restart ColdFusion and you can now log into the administration without any password.</li>
    <li>Make sure to pick a new password and turn the security back on. You can do this in the administration.</li>
</ol>]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=193</link></item><item><title>Secret Project Revealed</title><pubDate>Sat, 04 Aug 2007 01:43:00 GMT</pubDate><description><![CDATA[I've been working on a secretish project for a while now. Featuring all the ajax stuff you know and love.<br />
<br />
More at: <a href="http://www.teamworkpm.net" target="_blank">www.teamworkpm.net</a>]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=192</link></item><item><title>Stop Vista from being Annoying</title><pubDate>Sat, 04 Aug 2007 01:36:00 GMT</pubDate><description><![CDATA[To stop Windows Vista giving you 3 confirmation prompts when you simply want to rename a bloody file, and many other annoyances, just turn off User Account Control (UAC) in the security center.<br />
<br />
The upcoming service pack is meant to stop UAC from being so bloody annoying, requiring the user to only confirm once. When that happens, I'll gladly go back to the improved security, but for now, it's just too damn irritating.]]></description><link>http://www.cftopper.com/index.cfm?blogpostid=191</link></item></channel></rss>