« swipe left for tags/categories
swipe right to go back »
Boulder AWS Anonymous held its first meeting last week, and there were eleven attendees despite the fact that the meeting had been inadvertently scheduled at the same time as Obama’s inauguration. Attendees represented a wide variety of uses and potential uses of Amazon Web Services, ranging from hosting popular websites and application development to load balancing, autoscaling, and internet telephony. The group is encouraging anyone in the area interested in getting updates to join their Google Group and/or to attend the next meeting at The Cup, 1521 Pearl St, at 10:00 am on Wednesday February 18.
Stanford has put all the course material for CS 193P – iPhone Application Programming up on the web. If you are developing an iPhone app, or considering it, the course looks like it has a huge amount of useful data.
On today, this day of endless blogging / talking (and hopefully downloading) of Google Chrome, I thought I’d go retro and write about my renewed hunt for the 4GL. But first, a little context on how this came about.
This summer I spent some time playing around with Google AppEngine to try and understand it better. It didn’t take long before I realized I needed to really understand how to program in Python to do anything. So I spent some time reading about Python and ultimately realized that if I wanted to make any progress, I needed to spend a chunk of time actually learning Python. Fortunately, I found a nice MIT course titled 6.00. I took the equivalent (6.001) in 1984 when it was taught using Scheme; now it uses Python. Oh goody – I can re-live my 18-year old student self if I want.
As I started digging around in Python, I instinctively compared it to the languages we used at my first company, Feld Technologies. We wrote business applications in the late 1980′s and early 1990′s and our language of choice was Clarion. We also wrote one large system using DataFlex and one with Oracle7, did plenty of work with dBase and FoxPro, ultimately adopted Microsoft Access as our 4GL of choice, struggled through some stuff on the Mac with 4th Dimension, and explored doing things with PowerBuilder right at the time that we sold the company. Some of these applications (including some of the larger ones) are still being used.
When I was playing with Google AppEngine, I kept waiting for the 4GL "aha moment." That’s the moment I had using Clarion, DataFlex, Access, and even FoxPro where I realized how easy it was to do certain things. That moment never came during my exploration of Google AppEngine – the deeper I got, the more confused I got.
My plan for Google AppEngine was to write a very simply application to help me manage my art collection. I’ve searched long and hard for a web based application to do this – the closest I’ve come is a program called Yallery written by a local friend Jennifer Ross. Yallery is very cool and does a lot of things that I’d want to do, but like most applications it misses on a handful of very specific things I want, while adding lots of things I don’t want. So – when AppEngine came out, I thought writing a simple art collection management system (ACMS) would be a great way to solve two problems: (1) really learn how AppEngine works and (2) get my little ACMS up and running exactly the way I wanted.
Like all good software developers, I sketched out a quick design. Like 99% of the software I’ve written in the past, the application is table driven – there is a simple data structure underlying all of the various screens that I’d want. I’d use the app via a few different modalities which would be accessed through a simple menu. The screens, menu, and underlying database describe 80% of the application; the final 20% is something any run of the mill report writer should be able to handle.
The optimal time to do this was when I was in Alaska in July. I try to take on a few new things each summer "to learn" and this seemed like a perfect one. I carved out some two hour chunks and went after it. However, two days in and I was completely lost. It was clear that whatever construct I had in my head about what I needed to do didn’t map in any way to how I needed to do it in AppEngine.
Now, some of it may be me. I stopped programming around the time that people were making the shift from procedural programming to object oriented programming. C was the language of my day; not C++. The idea of "Object Basic" or "Object Pascal" was amusing. So – I’ve always struggled a little with object / method syntax. Oh – and at my core there are two languages that have influenced me the most – Basic and Scheme – which probably explains all of my weird programming predilections.
But something just seemed wrong to me. Clearly AppEngine wasn’t the right tool to build my ACMS in. But, I didn’t really know what the right tool was. I know what I want – something like Clarion that works in a web-browser world. Something that provides all the magic Ajax UI goodies for me without me having to really do anything other than specify what I want the screens to look like. Something that knows how to bind data fields to the screens and then to a table to a database and allow me to do all kinds of data entry, sorting, and reporting on them. Something that completely isolates error handling for me so I don’t have to think about it. As I worked through my list of "wants" I realized I was defining what a 4GL does.
I know that there are some companies working on this. In an attempt to be trendy, this is now called PaaS (Platform-as-a-Service). But it’s really the reincarnation of the 4GL. And I’m not sure I really want a PaaS – I think I just want a 4GL that works with today’s web-based environment.
Lisp is still my favorite programming language. 6.001 is still one of my favorite classes. Parentheses are my friend.
Dear all my friendly neighborhood web developers out there. Please don’t ever ask me for my Google login and password again. Instead, please implement the Google Contact API. While you are at it, please consider implementing the Windows Live Contacts API. I went looking for the Yahoo one (it’s probably in the Mail stuff somewhere) also but gave up and figured I’d just point you to the MyBlogLog API which has plenty of fun, juicy data available.
That’ll keep you busy for a while.