SQS Growl Link
So, in retrospect this seems very obvious, but there are two applications which have never really been linked. Yes, you guessed it, Amazon's SQS, and Mac OSX's wonderful little program called Growl.
SQS is Amazon's wonderful system to Queue up messages and allow access from anywhere, based on access levels and credentials. In a practical example, this could be used to send alerts to users about downed services, or just little comments about what's going on.
Growl is a great OSX program that allows other programs to send notifications to the user based on their own preferences. It allows you to even specify differences based on what "type" of message each program is sending.
Why before no one has ever thought to bring these together, I have no idea. I've done it in a simple python app which took me a total of about an hour (mostly trying to get the python bindings from growl).
Simple Web Framework
Although Django and Rails are both great frameworks for developing a GUI over Database, what do you do when you have a non-relational database, or something else entirely? Take, for example, SDB and the boto persistence layer.
The answer? mod_python, clearsilver, and a little bit of intelligent design. I came up with a very interesting framework that simply routes between special handlers which are mapped in a config file, and then generates HDFs to be sent to templates, all depending on what the user asked for. For example, if you go to /index.html, it renders templates/html/index.cs, where if you try /index.xml, it goes into templates/xml/index.cs.
Look for an upcoming new open-source framework from me in the near future. It has a lot of practical applications, and it neatly integrates with SDB.
iPhone heaven
My boss pointed me to iui the other day and I started working on transferring some of my work over to that framework. After playing with it for a while I decided to see how it looks in a regular browser. When did the internet get so fast? It's amazing how bad programmers have become. We now consider that a memory leak in our browsers that leaks up to 1MB every hour to be ok.
Better computers are breeding worse programmers
Tabs v Spaces
I don't use tabs because it makes my lines go over my 80 character terminal size.
So, originally I thought tabs were evil. I couldn't understand why anyone would use tabs, considering that most editors could be set up to insert the appropriate number of spaces instead. Then I learned Python.
In Python, whitespace is an important part of the language. In this case, tabs can mean something entirely separate from spaces. Since you really do determine what block of code you're in simply by whitespace, using tabs says "I'm in the next code block" where using spaces along could just meant that it's a continuation from the previous line. Moreover, from a simple regex point of view, it's a lot easier to find the tabs, and recognize what they do (at the compiler level), then to decide if these set of spaces are meaning you're at the next code block, or if you're a continuation from the previous line.
So, why would anyone use spaces instead of tabs? Some people claim that it's so the code will "look right" on anyone's editor. If my editor didn't have the "$" character available, would you not use it in your code? How is it any different from a tab? Tabs can and should be a functional part of the language, just like any other comment would be. Tabs are one of the simplest forms of commenting code, they're saying "Hey, we've moved into a new block of code, and I know you can tell how far down we are because it's the exact number of tabs". With tabs, it's universal, one tab for each new block of code. How many spaces do you use instead? Well, that depends on the person doesn't it?
In conclusion, if you really can't stand tabs being so long, get a real editor, and then add this to your .vimrc:
set tabstop=3 set listchars=tab:>-,trail:- set listMy work here is done.
py-s3fuse opensourced
XMPP, not just for IM?
Apparently there's been a lot of Hype for using XMPP for communication between services that are loosely coupled. There are a few benefits to this. First of all, it's very lightweight, the packet sizes are minimal compared to something like SOAP or even REST. Secondly, the system supports multiple clients registering as the same service on the server. This means that you could distribute out the workload, having the last client to respond being the one that will get the messages from the connecting client. Most importantly, XMPP clients exist for almost every device imaginable, including the iPhone and my Blackberry, which basically means you can control your servers from anywhere, on anything you carry.
This, to me, seems to be a lot of Hype for nothing. There are still a lot of side effects, such as security concerns and the single-point-of-failure issues that we don't encounter as much with other systems. If you recall, soon after IRC came out, many of the same claims were made about it, being as you could have IRC clients on any OS, and it was big news to be able to send commands directly to your servers over a third-party client.
So, with all this hype, will XMPP become the next big thing for distributed computing? It's doubtful. It may, however, bring in some new ideas for what direction we take. XMPP has a lot of good ideas that every programmer should heed when developing scalable flexible distributed systems.
Amazon Web Services
It'll be nice never having to deal with hardware again. This is every SE major's dream.
Rails V. Django
Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.Although I'm still a fan of Ruby, I've always had a thing for Python. The only reason I haven't adopted it entirely into my own site is because of how it uses whitespace as a key part of the language. That being said, Python has a great web app framework called Django. Django, unlike rails, operates on a modular "app" format. Instead of designing the whole website as a single app, they allow you to incorporate multiple apps into a single website, and even have a lot of pre-built things to help you get started. Django allows you to package your apps separately from your site, so the two are entirely independent. More to come.
Semantic Web
The Semantic Web provides a common framework that allows data to be shared and reused across application, enterprise, and community boundaries. It is a collaborative effort led by W3C with participation from a large number of researchers and industrial partners.For those intereseted, I've written a research paper on the topic of the Semantic Web and Semantic Searching. I'm also working on incorporating RDFs into my current Rails system, including an RDF generator, and hopefully I'll eventually be able to scrape information from wikipedia and use it in my RDFs. I may also be opening up my RDF generator for anyone to add things. For now check out Disco, the simple RDF browser.
Blog goes Rails
Web development that doesn't hurtI've just pushed Rails to my main site. Please let me know if you find any bugs.