Category Archives: Uncategorized

Facebook announces HipHop for PHP

Companies like Facebook not only see their core values centered around delivering products and services which “impact” people but also technology. Besides the OSS contributions to Memcached, Hive, Cassandra and Thrift, facebook team announced HipHop for PHP.

Mark Zuckerberg adopted OSS early on utilizing Memcached, Apache HTTP, MySql and PHP in his Harvard dorm to build the first Facebook site. Facebook is now comprised of millions of lines of PHP code. PHP provides Facebook with an expressive well understood programming environment for quickly generating new web content.

But of course due to their size and scale ( 400 Billion page views per month servicing 350 million people) they were faced with the constraints of an interpreted scripting language and its impact on CPU and memory.

PHP and ZEND runtime are highly optimize but at large scales the inefficiencies are quite costly. HipHop for PHP is a code generation technology with static analysis and transformation capabilities to turn PHP source code into c++ source code able to be compiled by g++. HipHop allows Facebook to run 50% less CPU with equal traffic on their web tier and 30% less CPU with 2x traffic on their application tier. Thats a significant number in terms of 10s of thousands of servers.

By allowing developers to continue to use PHP with its common syntax, tools and debugging, they don’t have to learn another language and deal with changing millions of lines of code (although who knows if that will be inevitable). Developers can code and debug with their natural toolsets and dynamic runtime while in development and than promote their code into a compiled set pushed out to the production systems.

HipHop is a great example of the ingenuity of the developer community to think outside the box and concentrate on delivering value to the business. I am sure their efforts will benefit the community of PHP developers at large in a profound way.

Bravo Facebook team..

The Machines Are In Control

I am sitting here watching the markets break down as the Bulls run out of steam. Smart ones are collecting their profits as they scrape the bottom while putting on lots of protection.

But who really is in control?

Mathematical algorithms are firing off at a blistering pace, they hunt for alpha out in the open and even in the dark (see Dark Pools).. Technical trends are crossed driving bullish execution while the bears use counter strategy similar to a game of chess..

Markets swing back and forth sometimes 3..4% a day.

Every quarter companies need to show over the top growth, shrinking operational cost is fizzling as a good excuse as we look for concrete signs of a recovery.

The machines get bigger and wider and more connected they spread out sometimes reminiscent of a “shanty town”. There actually is a software design paradigm called The Big Ball of Mud.. The lesson? “It’s ugly, but it works for what ever reason”

Well lets see if the bears lose their grip and our systems can handle the options traffic as investors try and protect their value play with a downside PUT.

What does IT know about stability and viability of a sofware provider?

After reading the response from BusinessWeek writer Rachael King on Dennis Byrons’ blog post “Is BusinessWeek out to Get the Enterprise Software Business?” I ask myself how close to the truth is the following comment:

“IT departments need to think about the stability and viability of the software provider”

How does one assess “viability”, is it the software providers balance sheet, number of developers, R&D budget. Is it the number of bugs, patches, updates in their software packages or how well they respond to problems in a timely manner?

Now there is plenty of Enterprise Software out there which provides the backbone of major corporations, institutions and government. Microsoft Exchange and Active Directory have been pivotal in providing a relatively stable platform for services like email and authentication to the business. But I would argue this is not where businesses make their money. Lets be honest, businesses must learn to utilize their product and customer knowledge along with their financial strength and appetite for risk in order to differentiate. There are untold secrets deep within the corporate data repositories that need to be unlocked, normalized and mined for opportunities. Business intelligence is a giant and sticky ball of twine which needs to be untangled. This is where software development and IT work together to deliver exceptional value.

The truth of the matter is that software development is moving faster than ever, and businesses who don’t take a hold of their application portfolios are doomed to repeat the missteps of the past. Does anyone remember the protocol wars (IPX, IP, SNA), Y2K, as well as the myriad of worms, virus’s, malware that have infected versions of Windows for years?. How much of administrators times are wasted waiting for a reply on a bug from a large enterprise software provider?

If we look at modern software practices in Open Source you would find a scary process by which 1000’s of individuals are contributing towards building something that couldn’t be sustained by even the largest software development houses like IBM and Microsoft alone. Code enhancements, features and regression are all done by a community of individuals (some sponsored, some not, some anonymous) who make a worthwhile effort in building sustainability into a very dynamic system.

In fact the Linux 2.6 kernel changes so often that there is an ever evoloving process to test new ways of optimizing, tuning and delivering code. Functional weaknesses in the process are flushed out quickly by the community and are fixed on the fly (a sort of weak bonded neural network). This is no typcal software development project, and with almost Million lines of code and counting, the Linux Kernel is an unbelievably effective software development project. See here

With the 2.6.x series, the Linux kernel has moved to a relatively strict, time-based release model. At the 2005 Kernel Developer Summit in Ottawa, Canada, it was decided that kernel releases would happen every 2-3 months, with each release being a “major” release in that it includes new features and internal API changes”


OpenSource gives the opportunity for everyone to peek inside, assess the viability of the code on its merits (not marketcture) and decide what parts are usefull for building competitive value. These code pieces are than layered together to provide a domain specific service applicable to the business.

I just want to take a moment to reflect on a critical piece of sofware development.

Back in my early days working with Oracle there were no client drivers for DBMS access like there are today with ODBC,JDBC, etc… In order to execute a query against the Oracle database you had to use something called the Oracle Pro C precompiler. What this did was take your ANSI SQL statement and turned it into abunch of C Language contructs which had to be compiled into an executable.

Luckily those days are gone, with the adoption of VMM’s, para-virtualization and robust runtimes like JAVA the developer can spend more time being creative rather than doing the janitorial work of cleaning up to conform to the underlying infrastructure.

More and more intelligent layers are being built into the architecture stack providing everything from In Memory Data Grids, Clustered File Systems and new execution patterns like Map/Reduce. This layer is called in Cloud Taxonomy jargon Platform as a Service. These services abstract the complex nature of resource management away from the SaaS architect allowing them to deliver compelling value added services.

In summary, yes IT needs to think about the stability and viability of the software provider but they also need to take responsibility for their own development destiny. We need to reward creativity, responsibility and attract more students to computer science and programming technologies. The problems we see in software development won’t go away, in fact things are going to get harder before they get better. So hack will be a wild ride…

Next we will discuss these layers in more depth harnessing the taxonomy of cloud to describe Platform as a Service.



So finally after many years I have decided to put my thoughts down in a weblog. Hopefully someone besides me will find these ramblings beneficial.

For the most part this is a place to track the work I do related to bringing cloud computing to the enterprise.