Thursday, May 17, 2007

Site Server Posting Acceptor error messages

It is definetly old school, but we still use the Site Server Posting Acceptor utility for a small cadre of developers. Here's a list of the common errors and their resolutions:

Client Side Errors
Error: Object doesn't support this property or method: "IFUp1.CreateTempBinding'

Cause: Registry key disables ActiveX Utility.
Resolution: Delete this registry key and reboot
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{886E7BF0-C867-11CF-B1AE-00AA00A3F2C3}

Server Side Errors
Error: The parameter is incorrect

Cause: The browser has not read the META tag (POSTINFO) information.
Resolution: This is usually done via a META tag of the default document of the website. For example, you can place this META tag in the HEAD element of index.html:
<meta name="postinfo" content="/scripts/postinfo.asp">

Note: if it is not in /scripts, you may need to change the directory reference to where postinfo.asp lives.

Error: The Web server you selected does not indicate support for the service provider you selected

Cause: Your browser does not have a reference to postinfo.asp.
Resolution: This is usually done via a META tag of the default document of the website. For example, you can place this META tag in the HEAD element of index.html:
<meta name="postinfo" content="/scripts/postinfo.asp">

Note: if it is not in /scripts, you may need to change the directory reference to where postinfo.asp lives.

Error: The Web server returned the following error: You do not have write access to destination URL "http://destinationURL"

Cause: The destination virtual directory (ie, the directory on the web server where you want to upload the file to) does not have the appropriate write permissions in IIS.
Resolution: Check the IIS MMC for IIS write permissions.

Error: The Web server either is not responding or returned an unrecognized response.

Cause: The Execute Permissions setting of the Scripts virtual directory in IIS is not set to Scripts and Executables.
Resolution: In the IIS MMC, set the Execute Permissions of the Scripts virtual directory to Scripts and Executables.

Error: The Web server returned the following error: Cannot move file "somefile.extension" to its final destination. Further processing is stopped.

Cause: NT permissions are denying write access to the file.
Resolution: Logon to the server and change the file or directory permissions to allow write access to the file.
Cause: The read-only attribute of the file is set.
Resolution: In Windows Explorer, right-click on the file or directory and deselect the read-only property.
Cause: Allow anonymous is set to NO in \Microsoft Site Server\SiteServer\Publishing\
Resolution: Set Allow anonymous to YES in \Microsoft Site Server\SiteServer\Publishing\

Error: The requested header was not found

Cause: A personal firewall, Symantec firewall or other Firewall client interferes with the functioning of the Site Server upload utility.
Resolution: Disable any and all software firewalls.

If all else fails, here is a great doc on Content Replication Service errors:

Have a good day!

Wednesday, May 16, 2007

installing VMware VirtualCenter Management Server on XP Pro

Well, I tried installing an evaluation version of VirtualCenter Management Server on XP today, so I suspect someone else will. Hence, this blog entry. Though not recommended, I tried installing VMware's VirtualCenter 2.0 Management Server on my XP Professional box. Be aware that if you do this install, two caveats apply:

1) if you have IIS running, disable it!
Because VirtualCenter is going to ask you to use standard web ports 80/443, you'll need to disable IIS or direct either IIS or the VirtualCenter MS install to use ports other than 80 and 443.

As a side note, IIS on XP has a port 443 configured; however, you cannot delete this port from being used. I do not know what this port is used for, because it is not bound to anything I can see in the IIS MMC. I suspect it is due to some limitation with IIS on XP, the latest crippled software available on a "Professional" level OS from Microsoft, reminiscent of the sad NT 4.0 Personal Web Server. I also tried to delete the port using MetaEdit, the IIS MetaBase editor, but that just broke the website entirely, forcing me to do a reinstall of IIS. MetaEdit is a very nice little utility and is available here for free from Microsoft:

If you are ever in doubt about what ports a particular process is using, another Mark Russinovich gem is TCPView:

Here's what TCPView looks like:

My my! Look at all those VMware related processes running on my XP machine!

2) Disable Internet Connection Firewall (ICF)/ Internet Connection Sharing (ICS) Services

So, the second thing you'll need to do if you want the VC installer to run properly is to disable this combined service. According to the description in the Services administrative widget, "Internet Connection Firewall (ICF)/ Internet Connection Sharing (ICS) Services "provides network address translation, addressing, name resolution and/or intrusion prevention services for a home or small office network." That's quite a laundry list of activities for one service, no? Well, during the installation of VirtualCenter, the installation bombed out with the following cryptic message dialog box:
Error 25002. Setup failed to configure the Windows firewall

Following a couple of those dialog boxes appearing, the final error message you will see is:
The VMware License Server installer returned error code 1603.

The errors also had a note about referencing the installation log here:
c:\documents and settings\\localsettings\temp\vminst.log

Digging through this file, I found the last telltale lines:
vmls: 05/16/07 16:15:48 Found "C:\WINDOWS\System32\netsh.exe"
vmls: 05/16/07 16:15:48 Attempting to launch "C:\WINDOWS\System32\netsh.exe firewall set allowedprogram program="C:\Program Files\VMware\VMware License Server\lmgrd.exe" name="VMware License Server Manager" scope=ALL mode=ENABLE"
vmls: 05/16/07 16:15:50 Process returned 1
vmls: 05/16/07 16:15:50 ERROR: Failed to configure Windows firewall for lmgrd.exe.
vmls: 05/16/07 16:15:50 Posting error message 25002

Well now, what the heck is netsh.exe? Here's a clue:

In short though, here's a laundry list of things this little utility can do for us:
• Configure interfaces.
• Configure routing protocols.
• Configure filters.
• Configure routes.
• Configure remote access behavior for Windows-based remote access routers that are running the Routing and Remote Access Server (RRAS) Service.
• Display the configuration of a currently running router on any computer.
• Use the scripting feature to run a collection of commands in batch mode against a specified router

Gadzooks! It's another all-in-one utility from Microsoft! They keep coming, don't they? Back to the errors in the VC install log file. Well, I misread the log file message that stated "Failed to configure Windows firewall for lmgrd.exe" thinking that it meant that netsh.exe was the Windows firewall. In point of fact, the Windows firewall was the previously mentioned ICF/ICS Service. But I realized this only after I tried to rename the executable.

My logic was that if the installer didn't find netsh.exe, it would just proceed on its merry way and get me further along to my goal, a successful install. So I renamed netsh.exe to netsh.bak. Well, lo and behold when I renamed netsh.exe to netsh.bak, a new netsh.exe took its place not four seconds later! Microsoft operating systems are acting more like viruses every day! I was then intrigued as to what program was recreating netsh.exe, so I started sifting through the Administrative -> Services widget for a likely culprit.

Looking through the list of services, I quickly stumbled upon ICF/ICS, as it was one of the first in the alphabetically ordered list of services. This made me recall the log entry and I finally put two-and-two together to realize that it was ICF / ICS that was the Windows firewall, not netsh.exe. So, finding that combined service gave me great pleasure and I quickly stopped the service, disabled it and was able to successfully finish the VC install.

Post Mortem
In point of fact, I never did find the service responsible for restarting netsh.exe. Hmmm..maybe a future post.

Blundering his way deductively through the world of computing, the TechAnswerGuy.

Monday, May 14, 2007

Interpreting Dr.Watson (DrWtsn32.log) crash dump file

As this is a subject that appears quite often in the world of Windows YouNameTheVersion Servers, I felt it important enough to devote a blog entry to mention it. In the below article, Microsoft does a good job of explaining the basics of the mystical science of Windows crash dump file interpretation:

As well, Windows has a great repository of information about Dr Watson here:

VPN client error 51: unable to communicate with the VPN subsystem

Over the weekend, we had some problems at work, so I thought I'd use my MacBook Pro Intel Core 2 Duo to login to our corporate network and verify the status of the servers I support. Unfortunately, loading the Cisco VPN client gave me a nasty error when it started up:
Error 51: Unable to communicate with the VPN subsystem

According to this article and a number of others I read on the net:

a security update for the Macs may have broken Cisco VPN client versions 4.8 or earlier. However, VPN client version 4.9 or above works, as I have since installed the later version and do not experience this problem:

Yay! Hope this helps..

Sunday, May 13, 2007

Mac RDP / killing a process under Mac OSX

It seems that RDP for Mac has a tendency to hang if you Apple-Quit out of the program. Since I'm relatively new to my MacBook Pro 17", I was rebooting in order to free up RDP for another session.

Tired of my own laziness, I decided to do things the right way and find out how to Force Quit an application in OS X. I'd love to take credit for such a well-written document, but the folks at Ohio State beat me to it and put together a great little page describing how to kill a process under Mac OSX. I couldn't have done it better:

Be aware that after killing RDP using Force Quit, it does take a couple of tries in order to login again to the remote server. Also, you'll experience less RDP hangs if you gracefully logout of your Windows session by using Start -> Disconnect, rather than bluntly Apple-Quit'ting out of RDP. Word to the wise..go gently into that good night.

Also, you can only run ONE RDP session on your MacBook Pro at a time, so its use is limited if you need to login to many servers. One idea to get around this limitation is from your Mac, login to one jump server that will allow you to get to all other boxes you need to support. This way, you can have your Mac Cake and eat it too!

Finally, if you've left a session open and another RDP session is started from another server going to the same remote host that your Mac previously had control over, RDP on the Mac tends to hang. Obviously, this necessitates a Force Quit again.

Friday, May 11, 2007

removing unnecessary startup programs in 2003/XP

Or better yet: "How to find and destroy rogue processes"

One thing that that makes me angry is when unnecessary processes take up too much memory or kernel space. This especially infuriates me when the lack of memory or kernel space ends up bringing my web server down! So this morning, I had this situation happen on my recently reimaged XP notebook, a Dell Latitude 600C. This is a work laptop and as such, is locked down by my security department. I always like when security locks things down, so then I can find ways around the lockdown! :)

In this case, IIS crashed because of there were too many programs using kernel memory. How do I know this? Well, after the crash, I inspected the event logs. In the system event log, I found the following error:
"Symantec antivirus auto protect could not scan file c:\windows\system32\xxx.dll for viruses due to low kernel stack"

A quick search on Google provided a few URLs that gave me hints as to what was going on:

As usual, I decided to take the low road and resolve my problem in the quickest way possible. The resolution was to disable the myriad of useless programs that execute when my system starts up. These include:

Also, I chose to disable a few unnecessary media and pdf programs that started on bootup.
iTunesHelper/qttask/Acrobat Assistant

So how did I find out what was running and how do disable them from starting up? I used Mark Russinovich's great Process Explorer program

Microsoft has bought him out and rightly so, because this guy REALLY knows the Windows OS inside and out. He's made his expertise available through a number of very useful programs available here:

My first task was to identify the programs that were hogging up memory unnecessarily. I downloaded and installed Proc Explorer from the link above and ran it. Running the program gives you a screen like this:

If you roll down to the bottom of the Process Explorer display, you'll see a bunch of processes hanging off of the "explorer.exe" process. Under that main branch, you'll see a ton of running processes, some of which you may recognize if you've ever looked at the running processes using Task Manager. I looked at this list of running processes and decided which ones that I could safely disable. A number of them were just helper apps, like the above mentioned media player related utilities. I also noted other helper apps that I didn't need:
trackpad (SynTPLpr.exe/SynTPEnh.exe/point32.exe)
fax (faxctrl.exe)
graphics card (igfxtray.exe)
keyboard (hkcmd.exe)
modem (pctspk.exe)

I just hate all that crap getting loaded and wasting memory.

One great thing about Process Explorer is that you can kill rogue processes right then and there within the program. Just identify the process that you'd like to kill in the list, right-click and select Kill or Kill Process Tree if the rogue process has spawned a number of child processes:

To round out the discussion on Process Explorer, PE includes an information-rich task manager system information window you can access via the menu or just by pressing CTRL-I. It has more information that the graphic Task Manager than Microsoft gives you and shows you real time updates of top processes while the graphs scroll by:

So how did I actually disable these programs from executing on start up? For that, msconfig is your nearest and dearest friend, especially if your XP Taskbar has been locked down by Security! MSconfig is a program provided by Microsoft that allows you to disable startup programs and generally wreak havoc on your system, so be damn careful when you use it. To start MSconfig, click Start -> Run -> type in "msconfig" and press enter. You should see a screen like this:

Click the Startup tab. You'll see a bunch of startup items listed, the command that started them and the registry location of where they are set to run. MSconfig makes it easy for you to disable these programs by simply unchecking the programs you don't want to run on Startup. Here is the list after I was done deselecting the unnecessary programs on my machine:

After you deselect these memory hogs, go ahead and click OK. You'll then get a message to reboot now or later. If you are overzealous and have clicked too many startup items off, your PC may not come up correctly. So be careful to not go too crazy and remove everything from automatically starting up. Of course, an ounce of prevention is worth a pound of cure. And if you do screw something up, you'll probably learn something in the process of fixing it. So there is a reason that things happen the way they do.

Go ahead and reboot. Hopefully, when the system restarts, you'll have a bit more free memory and probably a faster machine if you've killed processes that were hogging your CPU. Good luck!

PS - If you want to do things the good old fashioned way (ie, edit the registry!), edit this key in regedit:
My Computer -> HKEY_LOCAL_MACHINE -> Software -> Microsoft -> Windows -> CurrentVersion -> Run

PPS - Of course, you'll need to click Start -> Run -> "regedit" and hit enter to get into regedit first!

PPPS - Here's the great Mark Russinovich on a bug hunt using Process Explorer. Learn from the master!

Sunday, May 06, 2007

installing PHP - the easy way!

So I'm reading Head Rush Ajax (Head First) from O'Reilly and its a great book so far. I've only gotten through the information-rich first chapter, but it has a new, graphical style that contributes well to learning rapidly. I'll post a full review after I've read a few more chapters.

The examples in the first chapter depend on the installation of PHP, and since I had just spent four hours reading and doing the exercises (shoot me, I'm SLOW!), I definetly wasn't into expending any further energy of a prolonged PHP and Apache install on my Linux box. So I took the low road and installed Easy PHP on my Windows XP box using the executable from here:

Since I already had IIS running on port 80, I changed the default Apache port to 82. You'll need to do that in httpd.conf and restart. Even though IIS is running on a different port, the Apache start utility does not like it when there is another web server on port 80, so make sure you have the IIS web server or IIS admin process shutdown before you restart Apache.

Once I restarted Apache, I could then restart IIS with no problem. I then copied the first chapter of Head Rush Ajax (Head First) to \Program Files\EasyPHP1-8\www\ then accessed the web server locally (from the browser on the web server itself) at http://localhost:82/boards/boards.html.

My updated code came up and worked first time out! Yeehoo!

viewing and editing HTML source code in Mac TextEdit

Its been a loooong time since I've edited HTML on a Mac and I heard BBEdit is a great program. Unfortunately, it's $150, so I think I'll stick with TextEdit on the Mac. Using TextEdit though has an initial first hurdle to avoid. The idiotic default of TextEdit is to open up HTML files as rich text. Displayed as rich text, you can't see the HTML code in the file! Why would I want to display rich text by default in a text editor? The logic escapes me. Maybe Apple's developers will amend this in the next version of the software, as well as another pet peeve of mine I mention below.

First though, in order to get around the silly "rich text" default setting, when you open your HTML file, select File -> Open and be sure to select "Ignore rich text commands" as below:

You'll then see all the HTML in your file. Note: be sure to save your HTML from Safari as Format -> Page Source instead of Format -> Web Archive. Web Archive won't open properly in TextEdit.

To set this permanently in TextEdit, go to Preferences -> Open and Save -> select "Ignore rich commands in HTML files" as below:

While I'm ranting, another pet peeve of mine is Grab's inability to save to a browser-readable image format like JPEG or PNG. To capture images from a Mac for this blog, I'm forced to use Grab to save a screen capture of a window to a TIFF file and then open up Preview to convert the TIFF to PNG. This is stupid.

6/30/2007 Update: Ok. My apologies Apple Developers. I'm stupid. I did not see this feature in Preview:

Done ranting.

Friday, May 04, 2007

2006 WebExpo conference notes

For those who are interested, I've posted my Web 2.0 conference notes here:

Updated reference list of 2.0 companies as of 6/20/2007.

Wednesday, May 02, 2007

list of web 2.0 companies

OK. So maybe this entry is going to be a bit long, but it should be pretty useful for the folks just getting started with Web 2.0. Here is a somewhat exhaustive list of the major players in the Web 2.0 space and other companies just doing "Web 2.0 stuff." Hopefully, it will give people an idea of the depth and breadth of this movement.

By all rights, I should be putting this into a dynamic form of some sort, but I'll work on that for the next post.

Feel free to use the more recently updated (6/20/2007) list here:
Web 2.0 Company Reference

And for some reason, the table formatting in Blogger is all screwed up. So bear with me, but the list is about 3000 pixels down this page. Argh!!

It's down here..

Keep going..

Not quite yet..

Almost there..


ajax Visual book finder pointing to Amazon
ajax seemless Presentation in PPT format on AJAX
ajax rich applications Up close and personal with Jesse James
ajax Chicago Crime Latest reported crimes mashup site
ajax Dojo Toolkit brings back crawlability to flash apps
ajax Google Maps Google Maps
ajax Kicksfinder eBay sneaker content remixed
ajax graphical housing rental/purchase app
ajax Zillow real estate valuations
ajax user programmable services Interesting AJAX theory discussion #2
ajax AJAX Interesting AJAX theory discussion #1
analytics Compete Sharing the web's click data
analytics Statsaholic Website traffic comparisons on steroids
analytics Swivel Upload and explore data, merge with govt sources
analytics Umbria mining the blogosphere for market intelligence
definitions Network effects definition of network effects
definitions harnessing collective intelligence Web 2.0 as defined by Tim O'Reilly
development Yahoo interface library Plugin to Yahoo's applications
development Coghead Build web apps easy and don't worry about the hosting
development Drupal Open source content management platform
development open APIs Latest list of popular open APIs
development Kapow World's first online mashup builder
development standards World Wide Web consortium
development Zimki Create, build and deploy web apps quickly without overhead
frameworks Django The Django web application framework
frameworks frameworks Open source AJAX frameworks with server-side java support
frameworks Rails Web application framework
gadgets-widgets Google AdSense Content-specific advertising by Google
gadgets-widgets Windows Live Gallery Windows Live Gallery of widgets
gadgets-widgets Google Gadgets Neat plugins for your website or blog
gadgets-widgets NetVibes All your digital life fits in one place: blogs, news, podcast, pics
gadgets-widgets The world of widgets at your fingertips
gadgets-widgets Portlet Factory Tools and tech to rapidly create, customize, and deploy portlets
guru Dion Hinchcliffe Guru Dion Hinchcliffe's company
guru Stowe Boyd Guru Stowe Boyd's website
mashups QEDWiki browser-based assembly canvas used to create simple mash-ups
mashups social networking software Blog on latest mashups and mashup technologies
mashups mashups Hundreds of mashups for fun and profit
mobile Jaiku Broadcast your SMS to your friends to let them know how you are
mobile TellMe Brings mobile search to everyone
mobile Twitter Broadcast your SMS to your friends to let them know how you are
rich internet apps GTimer Timer and report generator for your activities
rich internet apps Apollo Adobe's rich internet application builder
rich internet apps Yahoo Local Find it locally
rich internet apps Buzzword word procesor The first real word processor for the web
rich internet apps 37Signals Thoughtful products that do just what you need and nothing you don't
rich internet apps applications Adobe's latest applications
rich internet apps Zimbra Online/offline collaboration suite
services Salesforce On-demand platform for the enterprise
services Amazon Services freeing the means of production
services Amazon Fulfillment Pick, pack and ship by Amazon
social networking bebo A newer MySpace competitor
social networking Social bookmarking
social networking UnSpun Community opinions - ranked!
social networking See upcoming events in your area and hook up with friends
social networking 43things Discover what's important, make it happen, share your progress.
social networking Architecture for Humanity Design like you give a damn
social networking Digg Peer production news
social networking Facebook Social networking site
social networking Flickr Free photo service on the web
social networking Friendster Social networking site that came before MySpace
social networking Joost Interactive TV you can watch with your friends
social networking Last.FM Plugin to iTunes to share what you listen to with others
social networking LinkedIn Hook up with people in a personal or professional context
social networking MySpace MySpace
social networking StumbleUpon Find great websites, videos, photos and more based on your interests
social networking ThisNext recommendations from real people
social networking WeeWorld World's first multiplatform visual identity
social networking Yelp Reviews of restaurants, salons, bars, doctors by real people
social networking YouTube YouTube
syndication syndication definition of RSS
syndication the blogosphere The blogosphere as interpreted by Digg
syndication blog Media distribution and audience engagement services for feeds.
syndication RSS feeds Service to optimize blogs and feeds
syndication NetConcepts Website and search engine optimization and ecommerce for retailers
syndication tags and tag clouds Example of tags and tag clouds
syndication SixApart Personal and professional blogging tools
syndication blogs Search engine for blogs
targeting mSpoke Next gen personalization solutions for web content and advertising
targeting Revenue Science Connecting marketers to qualified audiences
user generated content Blogger Free blogging by Google
user generated content personalized home page Create a free home page with news, blogs and other widgets
user generated content Veoh From home videos to premium internet television
user generated content WikiPedia Encyclopedia by user contribution

user agent switcher for older web apps

Perhaps foolishly, I installed the latest version of IE, IE7. I noticed it broke the browser sniffers of some of the older web applications I access. After searching for a plugin for Firefox to simulate any pre-IE7 versions of Internet Explorer, I found this lovely piece of work from the master, Chris Pederick called the User Agent Switcher for Firefox:

It has saved me on numerous occasions from having to remotely login to another server in order to use an older version of IE.

Thanks Chris! We love ya!

In the opposite vein, I also found a plugin called Mask IE:

that allows for switching of user agents for IE; however, the .Net framework version that it calls for is obscure (2.0.50727) and I did not want to get into the hassle of tracking down and updating the .Net Framework just for one app.

Update 1/25/2008
For IE7, here's a link I had forgotten about that explains how to tweak your Windows Registry to set your IE user-agent:

The reg tweak is here:

This registry update allowed me to view our old WebTrends 6.0 portal. The portal does a browser sniff that precludes the use of any browsers over IE6.0. More importantly, you can easily reverse the registry update.


Tuesday, May 01, 2007

What is Web 2.0?

This may be a little late in coming, but I attended the Web 2.0 Conference a couple weeks ago in San Francisco. I enjoyed the conference immensely, outside of the crowds and plastic containers they served lunch in. But for those who are asking, what is Web 2.0, I’ll give you a brief synopsis.

Web 2.0 came from what was before it. Web 2.0 is an evolution of technology and an evolution how people learned how to use the web. Web 2.0 is blogs, is wikis, is Google Maps and YouTube and things with funny names like Twitter and Flickr and mashups and Joost and Django and Jaiku. It is about people wanting to connect and be connected to in order to discover themselves (Stowe Boyd). Web 2.0 is about letting your customers build your brand.

To loosely define it, Web 2.0 is represented by four themes (Dion Hinchcliffe):
- enabling technologies, mainly AJAX (Google Maps) and ubiquitous mobile
- user generated content, like MySpace, Wikipedia and Digg
- social networking software, like LinkedIn, Last.FM, and
- syndication through blogs and feeds and user programmable services

Web 2.0 is about immediate interactivity via seemless, rich applications. No page reloads required!

About 1,000,000 blog entries are written every day and there are about one billion people to read them. New applications and websites allow for unprecedented user input (Friendster and, commentary via the blogosphere and customer review (Amazon reviews).

Simplicity, standards, frameworks (Django/Rails) and open APIs are key. The more complex something is, the less people will use it. SMS is easy to use.

Network effects occur when a good or service increases in value the more exchange of information happens between people. Think phones, email, instant messenger, websites with user reviews and blogs. Sites like Yelp, Flickr, and Google AdSense take advantage of network effects.

Lastly, widgets ( Live Gallery) and gadgets (Google Gadgets) and APIs (Amazon Fulfillment) that regular people (not just programmers) can use flatten the barriers to accomplishment and free information.

Web 2.0 is about a single person having a blog and getting the top rank in google or the most views on YouTube. Web 2.0 is describing information with words via tags and tag clouds to make it more meaningful.

Web 2.0 is mobile (Twitter and Jaiku). It is about new technologies to let people express themselves without having to ask a programmer (Google Gadgets/mashups). It is about deciding how your information will look, like a personalized Google home page. It is about having the information you want (blog/RSS feeds) come to you.

Web 2.0 is about comments and commentary, recommendations and reviews and people talking to each other about the stuff they like and the stuff they don't like. It is about accelerating the value of the data that everyone contributes.

It is about new platforms like Django and Rails and simple-to-use products like Coghead and Apollo that make it easier for people to share information.

Web 2.0 is about freeing the means of production for the average person. It is about having your data out in the cloud (YouTube and Flickr), ready to share with old friends and new friends.

Web 2.0 is built on the shoulders of giants. Just like the last one, the next decade will be one of change and upheaval. Hopefully for the better this time, as we should be finally be able to reap the benefits of harnessing the collective intelligence of the net.
Feel free to drop me a line or ask me a question.