I have been using Twitter for awhile now, but haven't really gotten too involved with how the associated tools have evolved. However, recently I came across TweetDeck. It is a really nice AIR app to manage your Twitter account(s). Give it a go. Let me know what you think.
Google released Java for Google App Engine. Blue Dragon (OpenBD) is the first ColdFusion server to be able to run on Google App Engine. Start by downloading the GAE plugin for Eclipse which contains the GAE SDK, which allows you to test locally. Installing the server on Google App Engine was way easier than I anticipated and the documentation provided with the OpenBD release for Google App Engine is great, aside from a few gotchas. The first is that GAE needs to know which files in your system are Static Files. Static Files are defined as those that don't change, like javascript, images, css and xml. GAE treats Static Files differently because these files are moved to other servers for performance. Static files are defined in the appengine-web.xml file. Next, keep in mind that you are restricted to 1000 static files and 1000 cfm/cfc files. Large JS Frameworks like Dojo are fine, but forget about Dojox & Dijit. Finally, it is important to keep in mind that CFFILE and Consuming Web Services doesn't seem to be working. Additionally, GAE applications use Google's BigTable to store data. So, having your applications write/read/delete functions isolated to Data Access Objects (DAOs).
At this point I am still working out a few other limitations regarding BigTable and OpenBD, but over all I am very pleased. I thought I was going to be able to host my site for free. Sorry to say that is not that case. Until GAE/OpenBD can consume web services I am going to have to stay with my current CF hosting plan.
For an example of my personal site running on GAE: http://site.midpointmedia.com/index.cfm
At this point I am still working out a few other limitations regarding BigTable and OpenBD, but over all I am very pleased. I thought I was going to be able to host my site for free. Sorry to say that is not that case. Until GAE/OpenBD can consume web services I am going to have to stay with my current CF hosting plan.
For an example of my personal site running on GAE: http://site.midpointmedia.com/index.cfm
For everyone that has used Quickbooks you already know it is a great solution for Small, maybe Medium sized businesses. I use it myself to send invoices and help me out with my taxes. ;(
They just released a new online version which works great on IE and Firefox on Windows. Can someone, please explain to me why it doesnt work on Mac Firefox?
Is there some unknown issues I should be made aware of about Mac Firefox users? I am going to try and research this further both Firefox issue and why Quickbook's web edition doesnt work on Mac Firefox.
They just released a new online version which works great on IE and Firefox on Windows. Can someone, please explain to me why it doesnt work on Mac Firefox?
Is there some unknown issues I should be made aware of about Mac Firefox users? I am going to try and research this further both Firefox issue and why Quickbook's web edition doesnt work on Mac Firefox.
I just came across this pretty cool post that has 50 FREE lessons on Graphic Design. My time is pretty limited right now, but I am sure there are some designers out there that could use this stuff, enjoy!
http://psd.tutsplus.com/articles/web/50-totally-free-lessons-in-graphic-design-theory/
Keep me posted, let me know if they were useful.
http://psd.tutsplus.com/articles/web/50-totally-free-lessons-in-graphic-design-theory/
Keep me posted, let me know if they were useful.
This is a great little history video about beats. The narrator mentions Lessig, which is always a plus.
I was just forwarded this link to a great plugin for Flex Builder that handles formatting for MXML and AS. I gave it a go and it works great. Enjoy!
http://sourceforge.net/docman/display_doc.php?docid=137421&group_id=248408
http://sourceforge.net/docman/display_doc.php?docid=137421&group_id=248408
Roman just recommended a FREE book called The Public Domain. After reading the table of contents, it reminded me of a video I saw on Ted.com. The video is of Larry Lessig from Stanford talking about these same issues.
Good stuff. I am going to put that book on my reading list..
Good stuff. I am going to put that book on my reading list..
Using Indy Nagpal's Cairngorm Contact Management example, I was able to get a working example of Flex Cairngorm and ColdBox working together rather quickly. Indy's example is a great way to get up to speed on how Cairngorm works. Thanks Indy!!
Following the example in the previous blog I am able to talk to my ColdBox Handlers via the ColdBox Proxy. On Luis Majano's Blog, I was able to find an example of sending Objects back to the ColdBox Proxy.
Here is a snippet from the Flex side that follows the example above. This snippet is located in business.UpdateContactDelegate.as:
Above shows that we are passing the params object to the ColdBoxProxy service.
Next, I needed to modify my ColdBox Contact Handler to be able to handle requests both from Flex and from within the ColdBox MVC Framework. This handled pretty easily (thanks Luis!) by using the "event.isProxyRequest()" method, which returns True/False. Below is a snippet from the Contact.cfc ColdBox event handler.
Shown above I am populating the Contact Bean, then sending the ContactBean Object to the ContactDAO.create() method that will handle adding the record to the database. Then I use the "event.isProxyRequest()" to determine if I should return the Boolean result or should continue to process the request using ColdBox's MVC Framework.
And now here is the working example of the work above. I was very pleased with the performance.
Launch Indy's Modified Contact Manager which now works with ColdBox
If you would like to view the source code, please contact me.
Following the example in the previous blog I am able to talk to my ColdBox Handlers via the ColdBox Proxy. On Luis Majano's Blog, I was able to find an example of sending Objects back to the ColdBox Proxy.
Here is a snippet from the Flex side that follows the example above. This snippet is located in business.UpdateContactDelegate.as:
...
public function updateContact() : void {
var token : AsyncToken;
var params:Object = new Object();
params.event = "contact.saveContact";
params.email = model.contactVO.EMAIL;
params.firstName = model.contactVO.FIRST_NAME;
params.lastName = model.contactVO.LAST_NAME;
params.contactPK = model.contactVO.CONTACT_PK;
params.preferredName = model.contactVO.PREFERRED_NAME;
params.title = model.contactVO.TITLE;
token = service.process(params);
token.addResponder(this);
}
...
Above shows that we are passing the params object to the ColdBoxProxy service.
Next, I needed to modify my ColdBox Contact Handler to be able to handle requests both from Flex and from within the ColdBox MVC Framework. This handled pretty easily (thanks Luis!) by using the "event.isProxyRequest()" method, which returns True/False. Below is a snippet from the Contact.cfc ColdBox event handler.
...
contactBean = CreateObject("component","#getSetting("AppName",1)#.model.ContactBean").init(
CONTACT_PK = local.contactPK
,FIRST_NAME = local.firstName
,LAST_NAME = local.lastName
,EMAIL = local.email
,TITLE = local.title
,PREFERRED_NAME = local.preferred
,IS_ACTIVE = local.isActive
,CREATED_BY = 'ADMIN'
,CREATED_DATE = Now()
,LAST_UPDATED_BY = 'me'
,LAST_UPDATED_DATE = Now()
);
local.created = contactDAO.create(contactBean);
if (event.isProxyRequest()){
return local.created;
}else{
Event.setValue("msg","New Contact Added!");
Event.setValue("mode","view");
Event.setValue("contactPK",local.contactPK);
singleContact(Event);
}
...
Shown above I am populating the Contact Bean, then sending the ContactBean Object to the ContactDAO.create() method that will handle adding the record to the database. Then I use the "event.isProxyRequest()" to determine if I should return the Boolean result or should continue to process the request using ColdBox's MVC Framework.
And now here is the working example of the work above. I was very pleased with the performance.
Launch Indy's Modified Contact Manager which now works with ColdBox
If you would like to view the source code, please contact me.
Combining two great frameworks turns out to be really easy to do. The examples provided in the ColdBox Documentation show what Luis calls the "poor mans delegate". The below code snippet is from the ColdBoxProxyGuide:
Above he is creating the RemoteObject with a call to "getColdBoxProxy()".
Now, within Cairngorm you will need to setup a service for the creation of the ColdBoxProxy. This done with "business.Service.mxml":
Then from within the Cairngorm delegate (in my case: business.GetContactsDelegate.as), you are going to want to call the service we just set up.
What we are seeing is the use of the rpc.AsyncToken and rpc.IResponder to handle the waiting for the result. In the examples shown in the ColdBoxProxyGuide, they are using an EventListener to handle the response from ColdFusion.
Well, I hope this helps. If you have any additional questions, send them my way and I will do my best to answer them.
...
/* UTILITY METHOD TO GET A CBPROXY OBJECT, You can separate all this to a delegate class */
public function getColdBoxProxy():RemoteObject{
var cProxy:RemoteObject = new RemoteObject( "ColdFusion" );
cProxy.source= cbProxyPath;
cProxy.showBusyCursor = true;
cProxy.addEventListener( FaultEvent.FAULT, faultHandler );
return cProxy;
}
/* Read the Cache Objects */
public function handleCacheResults(event:ResultEvent):void{
var cacheItems:Object = new Object();
var key:String;
var array:Array = new Array();
cacheItems = event.result;
for( key in cacheItems ){
array.push( { item:key, total: cacheItems[key] });
}
var collection:ArrayCollection = new ArrayCollection(array);
cachechart.dataProvider = collection;
}
/* Call the proxy for cache objects */
public function readCache():void{
var cProxy:RemoteObject = getColdBoxProxy();
cProxy.process.addEventListener("result",handleCacheResults );
cProxy.process({event:"ehFlex.getCacheItemTypes"});
}
...
Above he is creating the RemoteObject with a call to "getColdBoxProxy()".
Now, within Cairngorm you will need to setup a service for the creation of the ColdBoxProxy. This done with "business.Service.mxml":
...
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:cairngorm="com.adobe.cairngorm.business.*">
id="ColdPortal"
destination="ColdFusion"
showBusyCursor="true"
>
...
Then from within the Cairngorm delegate (in my case: business.GetContactsDelegate.as), you are going to want to call the service we just set up.
...
public function GetContactsDelegate(responder : Responder) {
this.responder = responder;
this.service = ServiceLocator.getInstance()["ColdPortal"];
}
public function getContacts() : void {
var token : AsyncToken = service.process({event:"contact.getContactList"});
token.addResponder(this);
}
...
What we are seeing is the use of the rpc.AsyncToken and rpc.IResponder to handle the waiting for the result. In the examples shown in the ColdBoxProxyGuide, they are using an EventListener to handle the response from ColdFusion.
Well, I hope this helps. If you have any additional questions, send them my way and I will do my best to answer them.
Hands down ColdBox is the best ColdFusion Framework available. The framework allows for teams to work better together, because it does way with those long XML docs found in both Model-Glue and Mach II. Additionally, it is easy to get up and running because there is just soooo much documentation (good job Luis).
Well, I am writing this post because I have spent the last 2 days looking through the ColdBox Documentation concerning cbProxy. The ColdBox Proxy is the tool used to change your MVC application into a Service Based one. I am especially interested in this because I would like to see an example of ColdBox working with Flex Cairngorm.
If anyone has an example of this and maybe some best practices, please let me know. In the mean time I will work to see if I can put something together.
Well, I am writing this post because I have spent the last 2 days looking through the ColdBox Documentation concerning cbProxy. The ColdBox Proxy is the tool used to change your MVC application into a Service Based one. I am especially interested in this because I would like to see an example of ColdBox working with Flex Cairngorm.
If anyone has an example of this and maybe some best practices, please let me know. In the mean time I will work to see if I can put something together.
I have posted a Flickr Collection of images I have collected here at MAX. If you have questions about any of the photos, please let me know. enjoy: MAX Collection
Day 2 was much better than 1. I don't really have time to talk about these items. This is more of a list for me to remember things to follow up on.
Items of Interest.
Flash Catalyst
Bolt
CF9 ORM
Flash Player to Flash Player Connection
C++ translated to AS
Day 1
Adobe Wave - notification application
Gumbo - next version of Flex Builder
more to come.. i am at the 2nd General Session now.
Hi Friends. I am really excited about this years Adobe MAX conference. It looks like there are going to be great presentations on the CF side of the house. I will try and keep this blog posted with notes from some of the presos.
IF you find yourself there and want to meet up. I have a pretty nifty GPS tracker on my MySpace page (www.myspace.com/scmmug) or you can email me like a normal person: dan@midpointmedia.com
I can't wait to meet up with all my old friends!!
IF you find yourself there and want to meet up. I have a pretty nifty GPS tracker on my MySpace page (www.myspace.com/scmmug) or you can email me like a normal person: dan@midpointmedia.com
I can't wait to meet up with all my old friends!!

