Hung Truong: The Blog!

  • April 27, 2007

    Whos Says Myspace’s UI Isn’t Good?

    myspace-user-interface-improvement.jpg

    I have a Myspace account, mainly to keep in touch with people who don’t have Facebook accounts. It’s sort of like making a deal with the devil, but hey, people use it.

    Anyway, I was reading some stupid “bulletin” that one of my “friends” posted. It was just some lame spam. Then I noticed that Myspace actually does keep the user in mind in some cases. See the above screencap? Whoa, there’s a “Delete From Friends” button! Genius. It saved me like 10 clicks to do it the hard way. Sorry Slevin, it’s time we went our separate ways.

    Maybe this means that Myspace really isn’t all about the $$$. Okay, probably not.

  • April 25, 2007

    Craigslist and Google Maps Mashup Thingy: Day 9 – CSS Foo and CakePHP Helpers

    Today I did a bunch of CSS, making the mashup thing actually look kind of nice. Later, I may add some more “Web 2.0” features such as drop shadows and gradients. I was having a hard time getting the map to show up in the div with a few of the css layouts I downloaded, so I just decided to code it by hand. I think it looks pretty neat; the map stretches across the whole screen and then the other content is shown in absolutely positioned divs.

    I also did some stuff with the CakePHP helpers. CakePHP’s inferiority to Rails is really starting to show to me. I think it’s all a product of PHP having not been created for this kind of MVC design. CakePHP tries to follow the conventions of Rails, but it does so in a sort of copycat manner. As such, the result does not meet or exceed the original.

    In the case of Helpers, Rails automagically links the named helper to the controller. In CakePHP, you must specify that a certain controller uses a certain helper. It’s kind of annoying. There also isn’t any support for the Rails convention of “partials,” which is why I’m using their helpers to begin with… It’s annoying.

    Also, I find it annoying that CakePHP finds an objects associated objects by default when using “find()” or “findAll().” It’s useful when I want it, but when I don’t, it wastes a lot of memory! Now that I think of it, I’m not sure if Rails does this by default or not. The only reason I mention it is because I kept getting out of memory errors (or more accurately, memory limit errors) with my application. It’s a big waste when all I want is the name of the area and CakePHP fetches ALL of the associated listings for that area…

    I must sound really whiny right now. I guess it’s just from some frustration in learning a new language/framework instead of using one that I’m used to. It’s good for me, I won’t argue against that. It’s just a bit disappointing to see all of these flaws when a framework is purported to be things like “stable” and “good.”

    Oh, and also, I should say that I think my actual mashup is coming along pretty nicely. It should be ready in a few more “days,” where a “day” is one I am actively working on the mashup. I could probably “release” it pretty soon, but usually when I release something, it means I won’t work on it much anymore, moving to something else I find interesting. So I should probably actually have it done before I release it…

  • April 22, 2007

    Jonathan Coulton: The Other, Other, Other John

    jonathan-coulton-me.jpg

    For some reason or other, today I was inspired to check out The Areas of My Expertise again, and I remembered that besides John Hodgman, there’s another John on that CD: Jonathan Coulton. He’s the musical guy behind the theme song for the audiobook, which I wish was available in a higher quality recording.

    Previously, I had heard him do a cover of Baby Got Back in acoustic guitar, but I didn’t realize it was him. Only when I went to his website, which has a bunch of MP3s, did I make the connection. He also has a bunch of other really neat songs, like Skymall, which is about those catalogs you find in the airplane seats that feature gigantic crossword puzzles, and Ikea, which is about the bitchin’ furniture store that my entire family loves. I read somewhere that Sweden trusts Ikea more than their own government. Which means that either Ikea is awesome, or the Swedish government is horrible.

    The coolest song I found so far (I haven’t listened to all of the MP3s yet) is a mashup of “25 or 6 to 4”, and “When I’m 64.” The vocals of the latter spliced with the background of the former makes for a really cool, melancholy sound. I like it a lot. Check it out:

    And also check out his other songs too!

  • April 22, 2007

    Craigslist and Google Maps Mashup Thingy: Day 8 – CakePHP Routing and Caching

    I spent a whole lotta time today trying to get caching working with CakePHP. Apparently, CakePHP doesn’t do caching quite as gracefully as Rails when it comes to custom routing, especially in the application root. Yeah, there’s a bug. I thought I was doing something wrong though, so it took me forever to find out it was actually a bug (or is it a “feature?”).

    Besides that, I got the interface to what it was previously, except with AJAX so that the Craigslist images are only downloaded when you click on a map marker. I also found that it takes a long time to put a week’s worth of listings (from Ann Arbor, at least) onto the map at once. I’m guessing there were at least 400 on there. I made a hard limit to the number of listings that show up, and it loads a lot faster now.

    I’m sort of back into the mood for working on this project again. I finally beat the Scrin campaign (it was really short) in Command and Conquer 3, so I’ll definitely be more focused now. I think.

  • April 21, 2007

    Craigslist and Google Maps Mashup Thingy: Day 7 – Asynchronous JavaScript and XML!

    I haven’t really been working on the Google Maps and Craigslist mashup very much recently. I blame it on a combination of going to Denver for a wedding, having a huge anime and manga backlog, getting Command and Conquer: Kane Edition, and general laziness. I think that’s a pretty good reason.

    Anyway, today I sorta got back into it. As the mashup worked on day 6, the Google map would preload all the stuff within the tabs for the markers. This meant it would poll Craigslist like a billion times in one second to get all of the images preloaded. Guess what? Craigslist doesn’t like that. They put a ban on me (and anyone else who would use the badly implemented map) after loading one page. Luckily it was only a temporary ban.

    My solution was to use AJAX to load the tabbed info windows for the markers on demand. So no pictures or anything get loaded until you request them. It’s much nicer to Craigslist, though I don’t know if it’s friendlier to my server, since there’ll be more requests. That’s okay, though.

    It was kind of a pain to learn how to grab the xml files and parse them, but I finally got it working. Now all I have to do is generate the xml files for each listing (shouldn’t be hard at all). I’ve already got experience generating xml from the RSS feeds that I make for Notecentric and Anime Nano.

    Plus, I get some street cred (maybe) for including AJAX in the site! It’s a requirement of Web 2.0, so I figure I should fulfill it.