2008 Page 2 of 2

i-create V2

Well I have decided to migrate my blog to wordpress 2.5.1 and I am pretty happy with it. I have cleaned up the database fixed numerous UTF-8/Latin encoding…

Augmenting Human Intellect

In short I think Douglas Engelbart would be pretty proud of his legacy. He was an academic that probably had the one of the most profound contributions to mankind. His ideas were snicked at in the beginning at SAIL. Most people believed the future of computing at that time wouldbe in the field of AI of course AI has proved to be a little difficult. In the beginning pretty much all of the code was open source. Douglas Engelbart’s group was responsible for the creation of the first mouse and graphical user interface. Many of the people he taught and worked with eventually worked at Xerox (Like Alan Kay). Xerox created a personal computer before anyone else was able to but their board executives didn’t understand at the time the overall impact of what they were looking at so they gave it all away to Steve Jobs and the rest is of course history.

In the beginning most of the technology was open source. Most of the computing technology we use today was at one point open source. One of the biggest problems today in development is picking a platform. Because of proprietary formats etc.. you can’t develop for just one platform you have to develop for multiple platforms depending on the technology you want to utilize. It is always good to see new technologies open their formats. Adobe Systems recently opened up their SWF (ShockWave Format) under their Open Screen Project! This is wonderful for developers because developers have the power now to do just about anything they want with it now! I believe you will see flash in lots of places you never thought you would see flash. Adobe recently came out with AIR (adobe integrated runtime) Air can run on any machine! I recently upgraded my Ubuntu to the Hardy Heron (which went real smoothly) and Air runs quickly on it! You can even build Air applications quickly on open source IDE like eclipse or aptana. One benefit of Adobe opening their platform is the fact developers will modify it to run on machines that wouldn’t normally run Flash. I believe in the next few years there will be money to be made in small customizable Linux devices. Moore’s Law has not let us down yet. The tech sector is still strong even in the face of recession probably has something to do with Moore’s Law and I really don’t think the internet is going to go away anytime soon the inventor of the Internet (not AlGore) did inform us it was still in its infancy. For those of us in the tech sector we know (not think) things will only improve and the web is the platform. Check out Air it is realtively easy to build an application and it will work on any machine. I have also been studying up on Silverlight. I recently ordered a few books on silverlight from Amazon.com. One of the nice things the microsoft has done with their RIA(Rich Internet Application) project silverlight is support open source projects like moonlight.

Aptana on Air!

Douglas Engelbart Mother of All Demos:

Side note: I have been pondering switching this blog to utilize wordpress I have used drupal for years but wordpress supports more plugins and is less of a pain to configure. I do have a copy of this blog running locally on drupal six but it lacks support for other programs I have integrated into the current i-create. So in short I may be changing this soon to wordpress. I will also be supporting ads on this blog soon.

Surf the Learning Curve

So what is the purpose of ihang10 anyway? Well it is built to supply the user with a deluge of information that is always updated through the use of various recursive functions. The user will be able to share, tag, email, embed, sms, post on multiple blogs with one click, and instant message the content. In the end it is simple it will harness information that is already in the public domain allow the user to mix it and add to (will automatically site source) it. The interface will in the end be highly customizable and available easily on a variety of multiple devices. This application will also allow the users to add other locations that they may need to authenticate against to post items and share items. It will harness social networks like, twitter, facebook, and Open Social. It will exist solely to gather information from other sources and allow the user to utilize multiple web applications at one time. It will also allow the users to modify the way the application works allowing them to add their own rss, feeds, etc.. The reason for me spending so much time on this is simple I want to use it. It will also increase the traffic for my other sites and once a user signs up they will also have access to all of my other web sites effectively increasing the traffic flow I am also going to spend more time adding ad content to my sites by using googles web services. I have spent several months working on it and it is only a prototype but the best features I assure you, you are not seeing them yet. So be patient come back and one of these days it will be complete!.
In recent news O’Reilly declared the web is the platform and it is. So what does that mean well if you got used to things being the way they currently are don’t! You’re in for some really radical changes on the way the web works within the next few years. Web Services combined with RIA (rich internet applications) will re-invent the web to be analogous to your current desktop. Devices will get extremely small and your applications will exist in the cloud (as mentioned several times below on this blog). Just look around there are api’s to utilize all sorts of web tools and applications if you are a developer there is no longer the need to recreate the wheel simply re-organize the information give people the ability to place it several places where they need it. Microsoft has released their LiveMesh tool that will allow people to easily remote desktop and share information between devices and store some information in the cloud. I am also aware they are developing RedDog their answer to AppEngine and Amazon Webservices. Yahoo is also rumored to be swinging their doors wide open as well. I think shared webhosting the way developers think of it now will be dead within the next 5 to 10 years. With Amazon Webservice you can actually build a Linux image and vpn to the image. It will not be long until their competitors do the same.
If you look at some of the projects I have interest in especially those that allow manipulation of eXtensible markup language (XML). They work in a manner that is very similar to Web Service Manipulation tools. For example you have Microsoft’s Web Service Software Factory that allow you to manipulate XML visually and create web services that adhere to coding standards and are loosely coupled. You also have other technologies like ESB Enterprise Service Bus we will call it the fun bus. Think of it as a gate keeper for your web services (or middleware layer)making them more or less plug and play and keyword “Secure” (Just so no one hijacks your fun bus). These tools have been built into IDE (integrated development environments) for a while now. It is interesting though to see tools like Dapper mentioned below amongst others like POPFLY on the web. They give you the tools to build services from existing web pages to extract very specific information acting as a middleware similar to the way the applications and technologies above like Chain Builder or Software Factory do for the IDE and enterprise applications. These services allow you to manipulate data and information on the web, embed, or share it and some also have created their own spiders, bots, or screen scrapers to help the user find and manipulate specific information. I also like the fact they use the web as a basis for their applications. The reason they are so cool is because right now technology is at a crossroad. These roads are converging on shared information across devices seamlessly no synch moving toward singularity. It is also no surprise to see applications that once only existed on the desktop leap to the web. If you haven’t yet I would check out a.vairy a very, very cool web application that allows you to create images, videos, etc.. I recently mentioned Flash Develop when I am done working on iHang10 I would like to begin to play around with the C# code for Flash Develop it would be time consuming but I think by disassembling it stepping thew it debugging it. I might attempt to convert it to Mono so it could be utilized on Linux and Apple. It would also be a challenge to create a web based IDE out of it where the programmers have the ability to share their programming experiments, classes, and programs (you know similar to PopFly, Dapper, or Yahoo Pipes only more powerful). That probably won’t happen until JC gives me about an extra 8 hour in the day just to code.

FlashDevelop Quick Start

What is Flashdevelop and why should I care? FlashDevelop is an opensource integrated development environment (IDE). It was created using C# on the .net 2.0 so it runs on any windows box that has .net 2.0 or higher and Java 1.6 runtime. .Net 2.0 and Java 1.6 are already on most windows computers. The user also needs to have the Flex SDK to install FlashDevelop IDE properly. You can use this IDE to write action script 2/3, flex MXML, and HAXE. You can actually pick from several compilers. It is a wonderful open source program and if in the right hands can be utilized to write ActionScript quickly.

The people of Adobe have all been working hard on improving the features of ActionScript and they have a lots of open source libraries that allow developers to rapidly create highly functioning and quick rich internet applications (RIA). This example is only a beginner example note this is just suposed to be informative and quick. In regards to use the FlashDevelop IDE and it is based off of Mike Chambers example.

Step 1: Install the FlashDevelop IDE from their site here. Also make sure you follow the requirements found here.

Step 2: install the Flex SDK here.

Step 3: Insert the Flex SDK location here by selecting Tools from the drop down then go to Program Settings navigate to the AS3 Context panel and insert your Flex SDK location as shown below (click to enlarge):

Step 4: Create a new ActionScript 3 Flex 3 project name it and then hit OK as shown below:

Step 5: Minimize your FlashDevelop IDE. For this you will also have to download and install 2 ActionScript libraries written by the Adobe Developers and located on Google Code here: CoreLib , XMLsyndication Lib. Download the code extract and place the code on your computer. You will need the path so do not place it in a temporary location place it ether in its actual program directory or a place of your own choice. Once you have done that open FlashDevelop again. To your new Flex 3 project. Navigate to tools and drop down to Global Class paths. Place the paths to the code you just download and installed in the dialog window as shown below:

Step 6: Navigate to the SWC files right click on them and select add to library as shown below:

Step 7: Once you have done that you need to create your RSSExample.mxml document. To do this right click on your project drop down to add, select the new .MXML file name it RSSExample.mxml. Then right click on the project again add new ActionScript class name it RSSExampleClass.as.

Step 8: Now Place this code into the RSSExample.mxml file:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script source="RSSExampleClass.as" />

<mx:TextArea left="20" top="10" bottom="40" right="10" id="outputField"/>
<mx:Button label="Load RSS" right="10" bottom="10" click="onLoadPress()"/>


Step 9: Now Place this code into the RSSExampleClass.as file:

import com.adobe.utils.XMLUtil;
import com.adobe.xml.syndication.rss.Item20;
import com.adobe.xml.syndication.rss.RSS20;

import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;

private var loader:URLLoader;

//url of rss 2.0 feed
private static const RSS_URL:String = "http://i-create.org/node/feed";

//called when user presses the button to load feed
private function onLoadPress():void
loader = new URLLoader();

//request pointing to feed
var request:URLRequest = new URLRequest(RSS_URL);
request.method = URLRequestMethod.GET;

//listen for when the data loads
loader.addEventListener(Event.COMPLETE, onDataLoad);

//listen for error events
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);

//load the feed data

//called once the data has loaded from the feed
private function onDataLoad(e:Event):void
//get the raw string data from the feed
var rawRSS:String = URLLoader(e.target).data;

//parse it as RSS


//parses RSS 2.0 feed and prints out the feed titles into
//the text area
private function parseRSS(data:String):void

//XMLSyndicationLibrary does not validate that the data contains valid
//XML, so you need to validate that the data is valid XML.
//We use the XMLUtil.isValidXML API from the corelib library.
writeOutput("Feed does not contain valid XML.");

//create RSS20 instance
var rss:RSS20 = new RSS20();

//parse the raw rss data

//get all of the items within the feed
var items:Array = rss.items;

//loop through each item in the feed
for each(var item:Item20 in items)
//print out the title of each item

private function writeOutput(data:String):void
outputField.text += data + "\n";

private function onIOError(e:IOErrorEvent):void
writeOutput("IOError : " + e.text);

private function onSecurityError(e:SecurityErrorEvent):void
writeOutput("SecurityError : " + e.text);

Step 10: Now run a test as show below:

Step 11: If successful should look like below:

Wow now that was cool. Now think about what you can do with that tool their lots of open source libraries to play with so get started. One thing I would like to do is play with the source and see if it could be ported to the Mono platform and make it run on Linux or Windows. Any way hope you had fun.

Throw it in a Cloud


Cloud computing is a new (circa late 2007) label for the subset of grid computing that includes utility computing and other approaches to the use of shared computing resources. Cloud computing is an alternative to having local servers or personal devices handling users’ applications. Essentially, it is an idea that the technological capabilities should "hover" over everything and be available whenever a user wants.

Applications will soon head to the clouds in mass numbers. What does that mean? When you have a web applications all of these other responsibilities come with running the application you have to set the database up run a server language, integrate some monitoring or log reading system, select a Server Operating system and platform like IIS or Apache, LAMP or Windows, etc.. Then you have to deal with crowds of people coming onto your site and constantly using it and soon you will find yourself in a bind. You need to upgrade the server language, upgrade the database, migrate to a better hosting platform etc.. So you ask yourself what is wrong with this picture? Well I will tell you it sucks every time you need to migrate or upgrade a system because if you?re like me you also want to test things out before you hit the button. Well let?s just pretend for a second you could host your application on something that is more cost effective, has an uptime of 99.999 percent of uptime, enables you to vpn on the system, has excellent web services that were created for cloud computing and enables you to run any server language. This may seem farfetched and way off into the future but really it is not. Just take a look at Amazons Web Services it literally allows you to do all of the above. You can expand and contract your applications with ease. So ok that?s one provider who else is in on the game? Well Google will soon rev up their App Engine for flight and if you haven?t signed up to be a part of this service I would suggest doing so soon! I have a feeling Microsoft will not be too far off as well. I hope Google will also support more languages like Amazon has and I am sure they will. Recently I did bash Silverlight from Microsoft. After studying it more I do like some of its capabilities one thing I like is the fact you can use the DLR of the .NET platform! I believe Microsoft will be sharing more tricks with others in the near future which is of course good. I am also excited about the Mono platform. I do enjoy programming in Visual Studio 2008 it is an excellent Integrated Development Environment and C# has many advantages over other programming languages. One thing that is important to me is that my applications be operating system agnostic; they should simply just work on any machine they shouldn?t have to be programmed for a specific operating system. You can count on one thing in the future and that is change. So why not make applications that work truly anywhere on anything? While I do like and enjoy Vista I also have a beefy box that runs it and it does help to have an MSDN license so you can run whatever Microsoft technology you want of course not everyone has this advantage. I also run OS X and Linux at home. So it is nice when I can see my applications working in a predictable manner on everyone of my machines it leads me to believe it might be the same for the user. I have been real busy preparing for our Wedding and I have also kept up the work on iHang10.com! Check out some of the new features I recently added a Home Foreclosure and some other interesting map tricks! Really with iHang10.com I am simply coding something I want to use every day! Oh and this site will soon be upgraded to Drupal 6.2 so it will be going threw changes as soon as sunday.

Projects of interest:
Smile 🙂

Books I have been reading lately:
Professional ASP.NET Web Services
Spidering Hacks
Webbots, Spiders, and Screen Scrapers: A Guide to Developing Internet Agents with PHP/CURL

ActionScript3 SharedObject / FlashVars

Custom C# Control:

Note this is only part of the control. With a little more work you can easily make is so you can drop it on a page and simply name the FlashAudioVariable to point to the name of the flv.

Panel pnlAudioContainer = new Panel();
pnlAudioContainer.ID = string.Concat(this.ID, "_pnlAudioContainer");
pnlAudioContainer.Style.Add("float", "left");
pnlAudioContainer.Style.Add(HtmlTextWriterStyle.Width, "100%");
pnlAudioContainer.Style.Add(HtmlTextWriterStyle.Height, "2px");
Panel pnlAudio = new Panel();
pnlAudio.ID = string.Concat(this.ID, "_pnlAudio");
pnlAudio.Style.Add("display", "inline");
pnlAudio.Style.Add("float", "right");
pnlAudio.Style.Add("_margin-top", "-23px");
pnlAudio.Style.Add(HtmlTextWriterStyle.Width, "90px");
pnlAudio.Style.Add(HtmlTextWriterStyle.Height, "30px");

string Flashobjectstart = "<noscript><object classid=’clsid:d27cdb6e-ae6d-11cf-96b8-444553540000′ codebase=’http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0’width=’90’ height=’30’ align=’middle’><param name=’movie’ value=’yourlocatointo.swf’ /><param name=’quality’ value=’high’ /><param name=’bgcolor’ value=’#FFFFFF’ /><param name=’FlashVars’ value=’myVid=rtmp://video/audio/location/";
string Flashobjectmid = "’ /><embed src=’yourlocatointo.swf’ flashvars=’myVid=rtmp://video/audio/location/";
string Flashobjectend = "’ quality=’high’ bgcolor=’#FFFFFF’ width=’90’ height=’30’ align=’middle’ type=’application/x-shockwave-flash’pluginspage=’http://www.macromedia.com/go/getflashplayer’ /></object></noscript>";
string FlashJS1 = "<script language=’javascript’ type=’text/javascript’>FlashAudio(‘";
string FlashJS2 = "’);</script>";
string FlashAudio = string.Concat(Flashobjectstart, audioFileName, Flashobjectmid, audioFileName, Flashobjectend);
string FlashAudio2 = string.Concat(FlashJS1, audioFileName, FlashJS2);
pnlAudio.Controls.Add(new LiteralControl(FlashAudio));
pnlAudio.Controls.Add(new LiteralControl(FlashAudio2));

Shared Object in ActionScript3 w/ FlashVars:
There are slight differences in the way the flash player 9 handles flashvars. This is a working example of how a custom flv player would use flash vars to call a video or audio file and play it! It also uses a shared object the benefit of this is its persistence (like a cookie on stereiods) if you had say several videos that you wanted to play on several different pages but you wanted the player to stop / rewind and if your user tells it to stop to remember the user told the flash player to stop here is how you would do that:

ActionScript3 SharedObject External Video / Audio in Flashvars:
import fl.video.*;
var flvControl = display;
var flashvars:Object = LoaderInfo(this.root.loaderInfo).parameters;
var flvSource = flashvars[‘myVid’];
flvControl.autoRewind = true;
var my_so:SharedObject = SharedObject.getLocal("userPref");
if (my_so.data.stopped == undefined) {
flvControl.autoPlay = true;
} else {
flvControl.autoPlay = false;
function completeHandler(event:VideoEvent):void
flvControl.addEventListener(VideoEvent.COMPLETE, completeHandler);
flvControl.source = flvSource;
function toggleHandler(event:MouseEvent):void
if( flvControl.playing ){
my_so.data.stopped = 1;
if(my_so.data.stopped == !undefined)
toggle_btn.addEventListener(MouseEvent.CLICK, toggleHandler);

Search Gone Wild

Well I have had my nose buried deep in code lately only coming up for air occasionally. I have been busy at creating a new tool to be used for research and blogging. Currently you can use it to search Youtube, Flickr, Yahoo, Google, MSN Live, Amazon, Ebay, Google Product all on one page. I need to spend time revising my code to optimize it. I also have been working on methods that will allow the service to be faster through continued use. You will be able to create lists of information and embedded the information into an e-mail, text message or blog with one click. I have also made this application with mobile clients in mind. I have implemented SWX to make my methods easily available in Flash and Flash Lite (Although I have yet had time to build the interface). I also have plans to make this web site have not just one skin but a variety so the user can customize it and utilize it how he or she chooses. I am currently integrating Jabber IM and OpenID. I might open source this project but that will not be done anytime soon. I currently have an alpha available to see and I assure you; you are not seeing the best features it has because they will only be available when I am finished. I have also been thinking about using Amazons S3 and SimpleDB for greater scalability. Everything I have done here does implement REST web services. So this is what I have been up to and I have had a great deal of fun working on it along the way. I have also taught myself a variety of new skills in the process. So I will look forward to showing the public more as it becomes closer to being finished.

Search Gone Wild!

Lately I have also been preparing for our Wedding as well I will look forward to sharing the website with you soon.

I am now also a member of MSDN finally got my first MSDN developer magazine! The MSDN network is great for developers because it allows its members to download and play with any Microsoft Technology! Lately I have been experimenting with .NET 3.5 / MS Blend / SharePoint so I have been putting my MSDN subscription to good use:)

Engagement Announcement

Engagement Announcement. Over the holidays I proposed to Lisa where we met 2 years ago:) I proposed to her in front of my friends after spending evening at Espa?a an excellent tapas restaurant in mid-town. We look forward to sharing our wedding with our friends and family. We have been busy preparing for our wedding. I will also be creating a site for the wedding as well to help keep us organized. We look forward to seeing you all soon:)