Recently, in the Programming category…

One of the reasons I went ahead and upgraded to MT 4.1 is that I wanted to try the new Action Streams plugin. It’s a life stream with a lot of options for publishing what you do online. One word of warning: If you’re using the never-publicly-released MT Elsewhere plugin, disable it. Action Streams is basically Elsewhere 2.0, and the two do not play well together.

Another problem is the code in the example Action Stream widget that comes with it is not correct. I’m guessing it’s using tags from a previous version. I’ve uploaded a corrected version if you need it:


However, I don’t really recommend using this as a widget, exactly. Something like this, that’s going to get rebuilt often and used on multiple pages, is best setup as an index template. Then, you can create a widget that includes it via PHP, SSI, etc.

Beyond that, though, I like the plugin. Looks fairly easy to modify, too, if you want to change how it displays actions or add services it doesn’t yet support.

Angelika Theater filled with programmers On Wednesday we went down to Dallas to attend the OnAIR Bus Tour. We were on something of a tour ourselves, having first driven to Graham, TX for a meeting with a potential client, then to Dallas, then home, all in the same day.

Adobe puts on quite a show. They rented out a movie theater for the day, much to the dismay of all the people who came by wanting to watch a movie. They had plenty of free food, drink, games, etc. It’s pretty cool to walk up to a movie concession counter and have your choice of anything you want, for free.

The sessions were good, too. They walked us through what the Adobe Integrated Runtime is, what you can do with it, and how to get started using it. It’s a pretty interesting runtime. Nobody’s going to decide to build an AIR app instead of a web app, but I can see two scenarios where it would be the way to go:

  1. For web developers/designers who want to use their existing skills to build desktop apps.

  2. For creating widgets to supplement the functionality of an existing site.

And in fact, I’ve already got a few ideas that fall squarely in the second category. I think I’ll play with it and see what I can come up with. Maybe AIR will be useful, maybe it won’t. Regardless, we had a fun (albeit exhausting) evening with the OnAIR folks.

I’m a big fan of Postel’s Law. For example, it is the guiding principle behind how I handle email. You can send me anything you like: top-posting, bottom-posting, text, HTML, RTF, AEIOU… I don’t care. Recently, someone emailed me a Word document. By that I mean they typed their email message in Word, then attached the document to an email and sent it to me. And I’m fine with that.

But I’m particular about how I send out email. I send plain text, with quotes relentlessly trimmed and replies in line, if appropriate. Sorry, but that’s just how I was raised.

One of the nice things about GMail is if someone sends you HTML you can convert it to plain text when you reply. One of the bad things is it totally hoses quoting in the reply. As I was writing an email today and fixing this problem for the umpteenth time it occurred to me that I should be able to write some kind of script to fix this. So I did.

It’s called Quoterize and it’s a very simple — and most likely buggy — bit of JavaScript that properly formats a paragraph for email quoting. If this is your kind of thing try it out, play with it, do something cool with it. If I get real ambitious I might put it into a Greasemonkey script, but don’t hold your breath.

I’m writing about this for two reasons: First, one of my goals this year is to learn — I mean really learn — some new technologies that will help me build better websites. This is part of my learning Prototype, and I plan to write more about it as I do more with it. Second, I spent an hour this afternoon writing a script to do something I could have done in 30 seconds, so by George, I’m going to get a blog post out of it.

Via Mark Pilgrim: Add OpenSearch to your site in five minutes

Reading that, it occurred to me that it should be pretty easy to create a Movable Type template for the XML file. Fortunately, I didn’t think about it too long before Googling it — Firefox Magazine has complete instructions for doing this. One change I would suggest: Abstract the template even more by using MT tags for the search URL. To do so, change line 13 to this (line break added to simplify my life):

template="<$MTCGIPath$><$MTSearchScript$>?search= {searchTerms}&amp;IncludeBlogs=<MTBlogID>">

Screenshot from Yahoo Pipes I’ve just started playing with Yahoo Pipes. Amazing — it’s one of those technologies that makes complicated things simple and expands what we can do with data on the Web.

In a nutshell: Yahoo Pipes is a visual programming environment for feeds. It allows you to combine user input with feeds of your choosing and massage the data in a lot of interesting ways.

I’ve still got a lot to learn about how it works before I can make anything really useful, but I was able to throw together a quick example in just a couple of minutes. Inspired by Jeremy Keith’s life stream, I built my own life stream Pipe that combines the various feeds I publish. That Pipe can then output my combined feed as JSON or RSS so that, potentially, it could be fed into some other interesting application. Want to subscribe to my life stream? You can.

I’ve said it before and I’ll say it again: I enjoy a good bandwagon. So it shouldn’t surprise you in the least that I would be intrigued by Ruby on Rails. Stories of increased productivity, happier programming, and elves that write your code for you while you sleep made me think this might be what I’m looking for.

What? That’s what it said on Wikipedia, so it must be true.

Anyway, I started reading up on it, going through some tutorials, and I really liked what I saw. I love the way that data is just there. Need all of a user’s lists? user.lists has them. Need all the items on a list? list.items has ya covered. Create a table, create a model based on the table, then associate that model with other models, and you get an amazing collection of useful ways to access your data.

I decided to use it to build Gift Goat so I could put RoR through its paces. Tutorials are fun, but to find out if you have the right tool you have to use it on your own project in your own way. I wanted to see if it was something I could use on a regular basis for building the many different web site ideas Angela & I have.

So far, I really like it. Other work has kept me from spending as much time on it as I’d like (I’d hoped for a July 1 launch. That’s looking less and less likely.), but what time I have had has been really productive. It’s amazing how much you can do with just a few lines of code.

As I get more of Gift Goat done I’ll post more about what it’s like working with RoR and what I think its strengths and weaknesses are.

When I was in school, teachers would sometimes let us bring a cheat sheet to a test with, “whatever we could fit on a single sheet of paper.” I, of course, would always demonstrate how the textbook could easily be balanced on a single sheet of paper.

Teachers often found me exhausting.

Once I had a computer, I would print notes in the smallest font possible. This prompted them to add “hand-written” to the cheat sheet disclaimers.

It is with much nostalgia that I point to the Cheat Sheet Roundup - Over 30 Cheatsheets for developers. Some of these would have been quite handy for tests.

I ran into an interesting problem the other day. I opened a PHP file in Macromedia Dreamweaver, and only one line appeared. This was very surprising to me since it was my file and I clearly remembered writing a few hundred lines. I thought it might be corrupted, so I tried opening the version that was on the server. Same thing. This also seemed odd, since the web site on the server was working fine, something it would not do if this file was only one line long.

I opened the file in a different text editor and the whole file was there. That was a relief, but it didn’t explain what was wrong with Dreamweaver. I tried closing and reopening the file, then closing and reopening Dreamweaver, but with no success. What was interesting was I could search the file from Dreamweaver and it would find the lines that had what I was searching for, but it wouldn’t take me to those lines when I double-clicked on the results.

I searched Google and a few Dreamweaver forums, but didn’t find any mention of a problem like this. I spent a while stumbling around Dreamweaver’s menus, and just happened to find the solution: From the Modify menu, choose Page Properties. Go to the Title/Encoding category and click the Reload button. Bingo, the file appears.

My guess is that the character encoding, or Dreamweaver’s interpretation of it, became confused somewhere. I haven’t found this mentioned anywhere else, so I thought I should document it. I’m going to do some more research on character encoding and maybe do an article on it soon.

Access 2 MySQL will convert an Access database to a MySQL database. Haven’t used it, but I have a potential job coming up where this would be very handy. (via Lockergnome)

You think you have a hard time debugging software? Try doing it from a hundred million miles away.