My last post was about Amazon Web Services. I’ve spent the last week getting up to real speed with SimpleDB, their data base product.
Actually, AWS is really bleeding edge now. Some of their major components, including SimpleDB, are still in Beta. And now I’ve learned what a “limited Beta” is: it means they let a limited number of people sign up, and then cut off more users. I found out the hard way that Simple was a LIMITED beta. But, fortunately, with a bit of begging, I managed to get authorized to use the service.
Part of bleeding edge is a serious lack of general previous experience. When I started on my current web project, I decided to use what is called a LAMP development environment: Linux, Apache, mySQL, and PHP. Because this has a well-established user base, there’s lots of open source code and other tools available for development. You don’t have to start from scratch. (That doesn’t mean there’s not a lot of crap out there, but you seldom have to start from nothing.)
Not so with AWS, and especially SimpleDB. Amazon has provided pretty good documentation, but it is mostly about how SimpleDB really works, and its API. That’s all based on web transfer protocols. This really isn’t PHP. And Amazon has a bunch of basic libraries that implement the API protocols in several programming languages, including PHP. (That’s one plus for AWS – they use web protocols that can be implemented in practically any web development programming language.) But the interface libraries really take the AWS SimpleDB view of the world – they aren’t far from the AWS API, but are quite a ways from how one usually programs in PHP. Not that they don’t get the job done – it is just painful.
Thus my new library which I’m calling paws for PHP for AWS. Eventually I guess I’ll write versions for the main AWS services, but for now I’ve just released the SimpleDB version. It took me a week, and I think it’s pretty cool. All of the confusing AWS API view is completely hidden away – kind of like assembly language programming vs. a high-level language. Now all you have to do is concentrate on building your data base logic. The code for accessing it is now very easy.
I’ve been doing this sort of thing for over 30 years. I have a feel for what a library should look like for a programmer. I like things simple, and try to take the time to find the simple way of doing things. It is worth it in the end. With a well-designed, easy-to-use class, you can save hours and hours of programming later. Instead of figuring out how to use your tool, you can concentrate on the logic of your application.
So I’m building a proprietary web site – why release this library as open source? Partly because I’m pretty proud of my design, and since no one else has release an equivalent library, it stands a pretty good chance of helping a lot of people, and having a lot of people using it. And if it is a good as I think, it might even become a standard library used by SimpleDB PHP programmers. Before long, there could be other tools based on this library, and the learning curve becomes shorter for everyone. And in the end, I’ll get paid back for my effort far more than if I had kept it proprietary.
And that’s how you get past the bleeding edge.