Friday, November 02, 2007

Will Open Social take the cake?

Everyone's talking about Open Social. I'm still trying to get the gist of it but from what I can gather it's similar to Facebook's API. Please note I haven't done any development on any of these so please feel free to correct me. I visited Marc Andreesen's blog and he seems really excited about it. Apparently he has played with it and here's his description in a nutshell.

Open Social is implemented as what I call a "plug-in API", or a "Level 2 platform". In other words, it's not a web services API -- rather, it's a way for external applications to "plug into" a host environment (or "container"). And then, in addition to literally showing up inside the pages of a container, the external app can make Javascript calls to retrieve all kinds of useful information from the container and perform all kinds of useful functions within the container, such as "give me a list of all of this user's friends" or "inject this event into this user's activity feed".

It looks like there are really 2 sets of APIs? One for the container and another for the app? Since it isn't web service based, how does my app interface with the container to begin with? For example, if I have a play list widget how do I get it to the Hi5 network so a user can embed it into her page? Is there a "registration" or "installation" process in the container?

There's a part of me that thinks it might have been better if these were web service APIs instead. For example, I call a "deploy widget" web service on the Hi5 network, and assuming my widget has implemented the necessary interfaces, it should plug right in. I shouldn't have to do anything else. Again, I've not played with Open Social so please forgive me if I missed something. I tried googling for some docs but couldn't find any.

Everyone seems to be looking at social networks as a platform. A platform like Windows where one can build an application to run on it. I suppose Open Social is like the JDK of social networking - write once, run everywhere. But in that scenario I still have to "install" or "register" the app. I think I'd prefer the concept of an applet propagating throughout different social network containers instead.

I bet whoever can build a pure web service based API will give Open Social a run for its money. Perhaps it might even take the cake. It would even be an API where social networks can socialize with each other. One login for all! One friends or widget list that transfers wherever I go! People say a social network is like a mini internet. A web service API would turn these social networks into a single interconnected network. Isn't that what it's all about? Who's up for building it? Google? Microsoft? Yahoo? Anyone?

Monday, October 08, 2007

Fancy Computing

There was news today that Google and IBM were collaborating on a "cloud computing" project.

Google and I.B.M. Join in ‘Cloud Computing’ Research

Even the nation’s elite universities do not provide the technical training needed for the kind of powerful and highly complex computing Google is famous for, say computer scientists. So Google and I.B.M. are announcing today a major research initiative to address that shortcoming

The two companies are investing to build large data centers that students can tap into over the Internet to program and research remotely, which is called “cloud computing.

I've heard of the term "cloud computing" before but I honestly never knew what it meant. So I decided to look it up and fortunately Wikipedia had a definition for it.

Cloud computing is a term used to describe applications that were developed to be rich internet applications. In the cloud computing paradigm, software that is traditionally installed on personal computers is shifted or extended to be accessible via the internet. These "cloud applications" or "cloud apps" utilize massive data centers and powerful servers that host web applications and web services. They can be accessed by anyone with a suitable internet connection and a standard web browser.

I still don't get it. Isn't the above just a definition for a web application? Aren't Google and IBM essentially just offering hosting services? Ok, so it's a "rich" (whatever that means) web application but does that really warrant a new term? OK, so it uses massive data centers but what high traffic web application doesn't have those these days? Am I missing something here?

And now we also have term "utility computing". From Wikipedia

Utility computing (also known as on demand computing) is the packaging of computing resources, such as computation and storage, as a metered service similar to a physical public utility (such as electricity, water, natural gas, or telephone network). This system has the advantage of a low or no initial cost to acquire hardware; instead, computational resources are essentially rented. Customers with very large computations or a sudden peak in demand can also avoid the delays that would result from physically acquiring and assembling a large number of computers.

In hardware terms isn't that just a fancy name for "hosting". In terms of applications, I used to hear terms like "software for rent" or "software as a service" and so on. would be an example of this kind of application.

But I actually like the term "utility computing". I think it is more to the point than "cloud computing". But if we're talking about renting IT services, why not just call it "rent computing" instead?

Sunday, August 26, 2007

The Internet is Dead and Boring (Except the Content)

Mark Cuban blogs about why The Internet is Dead and Boring.

Some of you may not want to admit it, but that's exactly what the net has become. A utility. It has stopped evolving. Your Internet experience today is not much different than it was 5 years ago.

In some respects, I kinda agree with Mark. I think innovation has declined over the years. I remember my the first time on the web. I remember when I first used the browser and visited my first website (Netscape). I remember signing up for my first web mail account (Hotmail) I remember when I first did a search on Yahoo. I remember when I first learned html and thought how cool it was to build my first web page. I remember when I first learned Javascript and could do a mouseover or an alert. I remember learning how to do a dynamic page with Perl. For all those things I had say to myself "WOW".

The technologies these days seem to be just "enhancements". For example, php is like asp, c# is like java and so on. There's nothing new in ajax or widgets.

I also agree with him with web 2.0. I remember when I signed up for my first social network. I signed up and stayed with it for a couple weeks. They seem to me just another message board or the next Geocities.

What I find really exciting about the web today is content. Back then, I found web content to be quite boring. I love reading blogs on a variety of topics. I think blogging is really nice. I also think playlist and music sites like and Imeem are supremely cool. What about video? It's not there yet.

What do I think is the next cool thing? Let me think about it. Stay tuned.

Thursday, August 23, 2007

Apache vs IIS

News from PC world that Apache has been losing ground against IIS.

Apache Slips, Study Says
More evidence is emerging that Apache is suffering against Redmond, after a survey revealed that Microsoft's Internet Information Services Web server is outserving Apache on Fortune 1000 websites.

No surprise there really. From experience, Fortune 1000 companies tend to favor closed source systems. Support issues are a part of the decision. They like the idea of having a phone number to call in case something breaks or doesn't work. But support issues aside, the .NET and IIS combination is really a powerful platform for developing and deploying applications in its own right. It is also very productive to work with given that everything is seamlessly integrated (which is probably yet another reason why those companies choose it).

With regards to Apache however, I think it is stronger in the startup community since I mostly see sites running PHP or JSP.

Tuesday, August 21, 2007

Skype Outtage

Everyone's buzzing about the Skype outtage. Apparently, the cause was a Windows Update patch that caused the user's PCs to reboot and it overwhelmed the system.

Herein lies the weakness of deploying desktop apps on a massive scale. It is hard to control nor forsee what kind of effects a patch is going to have. The last time I downloaded a patch, it broke all sorts of things from my development environments to the browser. Skype does have "self healing" capabilities but when you're talking tens of millions of users that will need an update at the same time, that's a tall order. Unlike browser based applications where you can just update at a single place. But browser based applications does have its own weaknesses too.

I long for the day when you can have the best of both worlds.

Wednesday, June 20, 2007

Yahoo: Build It Faster

Interesting article from Businessweek. It talks about the steps Yahoo should take to compete more effectiviely.

The Street to Yahoo: Be Aggressive

One way Yahoo can do this is by moving more swiftly on acquisitions. Instead of wasting energy building homegrown versions of popular Web sites or deliberating for months over potential purchases, Yahoo should reach for the pocketbook when it sees a promising property. Imagine, for example, if Yahoo had pounced on, a company it ultimately acquired, rather than first trying to build its social bookmarking site, "my web."

I'm not sure I'd agree. Acquiring hot startups faster sounds prudent but does it really add value to the brand? For example, if Yahoo bought Craigslist, people still think of them as Craigslist and not Yahoo at all. The fact that the company is now owned by Yahoo I think would just be an aside in people's minds. I don't think it's necessarily bad to go the homegrown route. The issue it seems to me is how to build applications and generate compelling ideas faster. I think Yahoo would be better off solving that problem instead.

Yahoo's Funk

Everyone's been talking about Semel's resignation as CEO of Yahoo. It hasn't been an easy ride for the company as a whole and the press has been unrelenting in their criticsm. Yang is now the new CEO and it remains to be seen if he can pull the company out of its malaise. But what can be done exactly? I think the first step for them is to sit down and define exactly what kind of company do they really want to be. Do they want to be a media company? A software services company perhaps? You can't be everything to be everyone. Anyway, best of luck to Yahoo

Monday, June 18, 2007

Innovation is Ageless

I was intriqued by Markus's latest topic in his blog. In "Old people don't invent online" he makes the statement

People under 30 create paradigm shifts, and usually end up creating huge companies. People over 30 tend to go out and look for emerging patterns to predict the future but don’t really understand it.

I'm not sure I'd agree. It's just that those in the 30's live a different lifestyle that those in their early 20's. Folks in their 30's have much more responsibility. You have a family, mortgage, career and so on to take care of. I don't think they lack the mindset to innovate, it's just that there's isn't enough resources (especially time) to devote to an idea much less to execute it for that matter.

Wasn't the founder of Friendster in his 30's when he started it?

Legends Blogging

I've been reading Marc Andreesen's blog lately. Of course, y'all know him as the founder of Netscape. His latest project is the social network Ning. His blog is really cool and it has topics from tech to movies to venture capital.

Another blog I enjoy is Markus Frind's The Paradigm Shift. Markus is the guy behind the free dating site, Plenty of Fish. He's a true inspiration given the kinds of things he was able to do with POF with limited resources and all. He provides lots of tech insights along with analysis on the dating industry and social networking.

If there's one thing I can say about both it's that they seem to enjoy blogging. I'm really glad, as we are all fortunate to come across such wisdom and talent.

Thursday, May 31, 2007

Call It a Niche Bubble

Interesting article from Business Week which talks about the parallels between Web 2.0 and the dotcom stuff that went on in the 90's.

Don’t Call It a Bubble

I see his point. I, too, recall that in the not-too-distant past—before Google (GOOG) shelled out $1.65 billion for YouTube in 2006—people were starting companies because they thought they had cool ideas—not just to flip a startup to Yahoo! (YHOO) or Google. There was less talk of "exit strategy" and more emphasis on fun projects put together with friends on a shoestring budget.

I agree with some of the things the author says in the article. The 90's was really the start of the commercial web for lack of a better term. During that time, the web was basically a blank slate or an operating system where applications still had to be written for it. Hence you had an explosion of applications like web mail, online shopping, and so on. There was definitely more diversity back then than there is today. The Web 2.0 term is really a phenomenon that pertains to a certain niche of web applications such as social networking and blogs.

As for startups opting to flip, I think it may have something to do with the difficulty of making money on the web. The web today is a crowded space with lots of things invented already. It is harder to come up with a new idea today that it was in the 90's. I think an IPO is also more difficult today.

Wednesday, May 30, 2007

Google Gears

Juicy stuff from Google. They recently unveiled Google Gears. From their website:

Google Gears is an open source browser extension that lets developers create web applications that can run offline. Gears provides three key features:

- A local server, to cache and serve application resources (HTML, JavaScript, images, etc.) without needing to contact a server
- A database, to store and access data from within the browser
- A worker thread pool, to make web applications more responsive by performing expensive operations in the background

I see lots of applications for this technology. In essence, it lets you do offline work or when a connection to the web isn't available. For example, someone who does disaster claims can still perform work (via the browser) while in a remote stricken area. The person can just sync the offline data with a central database at a later time soon as a connection is available.

Sunday, May 27, 2007

Google's Flaw

Just finished reading this article on The Final Days of Google by Robert Cringley. The article talks about a flaw inside the company that stifles innovation.

The flaw is simple and is composed of three parts. First there are those thousands of ideas and technologies that are being developed by Google employees in the 20 percent of their week devoted specifically for that purpose. That number of new ideas is far too high to be practical and too high even to be considered safe.

I’m not exactly sure what kind of internal selection process they have inside Google that makes them decide what ideas are viable enough to pursue. The last “strategy” I heard from them was their mantra “Search, Ads and Apps”. The statement seems indicative of the general direction they want to go so any ideas along those lines should get more consideration I suppose. But then the “Apps” part is pretty broad. Does Google want to be in social networking? Or enterprise computing? Without a definitive scope, the possibility does exist that they’re suffering from idea overload or some great ones are being missed.


Saturday, May 26, 2007

Open Facebook

Lots of talk about Facebook this week. As some of you may have heard, they’re opening their application as a platform for development. One blogger summed it as “a social networking operating system”. I guess the question is why? Does it really help to promote Facebook or would resources just be better served by doing something else? Just how scalable is the Facebook architecture to begin with? Can their webservices handle multiple/simultaneous requests for instance? What about privacy issues? What kinds of user data are they exposing?


Sunday, January 29, 2006

Essential .NET Development Tools

Here's a list of free tools to consider for your next .NET project. Some of it supports .NET 2.0. I'm sure there's more out there and will just update the list as time goes by. I'll have one for Java also at some point.

NDoc automatically generate documentation for your code using reflection to examine the assembly and using the XML generated from your C# XML comments.

Xenocode Postbuild is a .NET code obfuscation and deployment tool that allows applications to be deployed in a single, secure, optimized executable that runs anywhere. Postbuild is available in a free Community Edition and a full-featured Professional Edition

TestDriven.NET makes it easy to run unit tests with a single click, anywhere in your Visual Studio solutions. Integrates with all major unit testing frameworks including NUnit, MbUnit, & MS Team System.

NUnit allows you to write tests in the language of your choice to test a specific function of your application.

CruiseControl.NET is an Automated Continuous Integration server for .NET. Supports a wide variety of source control applications.

NAnt allows you to build your solution, copy files, run NUnit tests, send e-mail, and much more.

CAPICOM ActiveX control if you want to do digital signing on a web page

WAS web stress tool is designed to realistically simulate multiple browsers requesting pages from a web site. You can use this tool to gather performance and stability information about your web application. Use this if you don't have ACT.

Allocation Profiler is a tool for visualizing and analyzing allocations on the GC heap. It presents the data from this log file in a variety of interesting and useful views.

FxCop lets you examine an assembly and check it for compliance using a number of different rules. FxCop comes with a set number of rules created by Microsoft, but you can also create and include your own rules.

Switch Tools is used to switch the version of ASP.NET that a virtual directory is running under.

Reflector is a class browser and decompiler that can examine an assembly and show you just about all of its secrets.

ReFactory is a C# refactoring, metrics and productivity add-in for Visual Studio.NET

Xenocode Fox is a .NET code decompiler, class browser, and analyzer. Fox is available in a free Community Edition and a Professional Edition that integrates with Visual Studio 2005.

Contract First is a command line tool for improved “Contract-First” web services design and programming

WSE 2.0 for securing your web services with libraries for PKI etc.

VSFileFinder is a Visual Studio add-in that helps you find files quickly in large projects. It can list files from all the project types.

Spellchecker provides a multi-language spell checker for your comments and string literals. It uses a procedure similar to MS-Word but provides additional features useful for programmers

tBlogger provides a complete blog site written in C# with ASP.NET that uses XML as a backend.

dasBlog is an ASP.NET weblogging application. It runs on ASP.NET 1.1 and is developed in C#.

.Text is a powerful blogging engine that is used to host hundreds of blogs. The application is an example of an N-tiered application.

PatternShare is a community site brings together software patterns from different authors in one place to show relationships between existing patterns and to encourage you to contribute.

NxBRE is the first open-source rule engine for the .NET platform and a lightweight Business Rules Engine (aka Rule-Based Engine)

SRE (Simple Rule Engine) is a lightweight forward chaining inference rule engine for .NET. Its 'simple' because of the simplicity in writing and understanding the rules written in XML, but this 'simple' engine can solve complex problems.

Enterprise Libraries help to address the common problems that developers face from one project to the next. They are designed to encapsulate the Microsoft recommended best practices for .NET applications. They can be plugged into .NET applications quickly and easily.Contains libraries for data access, logging, security, caching etc.

The MONO Project provides the necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix.

SQL Server Reporting Services is a comprehensive, server-based reporting solution designed to help you author, manage, and deliver both paper-based and interactive Web-based reports.

SKMMenu is a nice free .NET menu control.

MS IE Web Controls includes tab, tree, multipage etc controls.

Oracle Developer Tools for Visual Studio .NET contains native driver, GUI addin for creating Oracle tables, procs etc.

Npgsql is a managed data provider for connecting to a PostgreSQL database.

The DB2 Development Add-In for Visual Studio
includes native driver, dataset generator, wizards for generating stored procs etc for working with IBM DB2 UDB. Really nice.

iSeries Access is a managed data provider for connecting to an IBM AS400.

CodeSmith is a popular template based code generation tool.

MyGeneration generates C# and VB.Net classes and stored procedures from customizable templates.

CodeTemplate.NET provides a mechanism for inserting commonly used text fragments into your source code.

RegexDesigner.NET is a powerful visual tool for helping you construct and test .NET Regular Expressions.

Regulator is a full-featured tool that makes it easy to build and test .NET regular expressions.

DotNetNuke is an open-source Web Application Framework ideal for creating and deploying projects such as commercial websites, corporate intranets and extranets, online publishing portals, and custom vertical applications.

Microsoft Gadgets are a new category of mini-application designed to provide information, useful lookup, or enhance an application or service on your Windows PC or the Web.

Kapsules is a completly free, scriptable widget engine for Windows. Widgets are small application-like tools which rest on your desktop. Besides script, you can also use C# to build your widgets.

Ajax.NET a free library for the Microsoft .NET Framework

AOP.NET is another approach of Aspect Oriented Programming (AOP) framework for .NET. It differs from others in that it manipulates directly assembly's structure to achieve weaving.

Aspect# is an AOP (Aspect Oriented Programming) framework for the CLI (.Net and Mono). It relies on DynamicProxy and offers a built-in language to declare and configure aspects, and is compliant with AopAlliance.

SpringFramework.Net provides a wide range of functionality such as Dependency Injection, Aspect Oriented Programming (AOP), data access abstractions, and ASP.NET integration.