Add to Technorati Favorites



 

...where sanity comes to die.
Visit my blogBlur the lines between genius, insanity, and utter stupidity.WALDOLand Music CentralDevelopment WorkAbout MeContact MeWALDOLand Site Map
 

 Monday, July 23, 2007

New Music on WALDOLand

Hey kiddies :)

Got some new stuff over at WALDOLand music.



Check it out if you get a chance.

Labels:

So, do you have a MySpace page or something?

It just makes me laugh sometimes how technology is so well integrated into popular culture today. I was watching TV the other day and the commercial for the new episode of Psych on USA, featuring Lou Diamond Phillips came on.

He just blythely leans in to someone and says, "So, do you have a MySpace page or something?"

Has MySpace become the new substitute for getting digits? Did I miss this memo? Phenomenons like MySpace and Friendster and blogging in general have become so pervasive to modern society. So prolific that it's difficult to imagine a kid surviving without the ability to text his buddy in the next room.

Have I gotten so old that I think all of this is just silly?
Oh, yeah. BTW - Check out MY MySpace page

Labels: , , , , ,

 Thursday, July 19, 2007

Apple ITC File Format (revised)

I recently updated this article with new information and new code samples. Enjoy.

I've been developing some projects relating to iTunes lateley. iTunes 7.0.1 has a new feature called CoverFlow. It is the ability to view your music library by its album art. I thought this was phenomenal. In fact it almost has made a convert out of me, using iTunes almost exclusively now.

iTunes CoverFlow

Having the ability to see all of your album art at once is fantastic, but it also shows you how woefully incomplete your library is. Of course, me being the obsessive-compulsive perfectionist/completionist that I am, I had to find album artwork for EVERY song in my library.

I used the 'Get Album Artwork' function in iTunes to obtain my missing artwork. Everything was going swimmingly. iTunes found and downloaded high resolution album artwork for nearly every album I had in my library (over 8,500 songs). I was doing fine until I began playing those same songs in MusicMatch Jukebox and noticed that the artwork that iTunes had just downloaded was not showing up in MusicMatch.

Was this a coincidence? I had to be sure. I discovered that the 'Get Album Artwork' function in iTunes DOES NOT save the downloaded artwork into the actual MP3 files. Instead it creates .itc files in the folder

%USERPROFILE%\My Documents\My Music\iTunes\Album Artwork

The .itc files contain images and metadata for each album which has downloaded artwork. CoverFlow reads the files into memory and holds them there until the application quits, so that it can display album art images quickly and smoothly.

That's fine. Good for Apple. They have their own system for optimizing album artwork images. But what about poor little ole' me, who wants those images embedded in his MP3 files?

There have been a number of suggested ways to accomplish this thrown about the web. The easiest I can think of is to use the 'Get Info...' command in iTunes, switch to the Artwork tab, Cut the downloaded image from the viewer and re-paste the same image. This will embed the image in the actual MP3 file. This is effective, but also very tedious if you have a large number of files.

Another suggested way was to write a program which hacks the .itc files themselves. For some reason, this appealed to me.

Many places where I've found ways to carve up an .itc file suggest simply removing the first 492 bytes and the rest of the file is JPEG/PNG image data. That would be great if it worked consistently. What I've discovered on my own is that it does not work 100% of the time. Frequently I have found .itc files where the image data did not start until after the first 500 bytes, or other variations on that number.

Based on that inconsistency, I decided to inspect the format of an .itc file myself and see if I could infer a file specification myself. The .itc file seems to consist of four sections: a File Signature, a "Null Buffer", a Data Header, and Image Data.

File Signature

The fourth byte of the file would seem to be self describing, indicating the length of the entire File Signature. In the sample file below, the fourth byte has a value of 1C (28). The File Signature itself seems to have a fairly consistent structure, which has the sequence 69 74 63 68 (itch) beginning at index 4 and 61 72 74 77 (artw) beginning at index 24, terminating the File Signature.

"Null Buffer"

Following the File Signature is 256 bytes of 00 (null).

Data Header

The Data Header contains metadata about the file/artwork itself. So far, every .itc file I have inspected has had the fixed-length signature of 28 bytes, followed by the fixed-length null buffer of 256 bytes. Here is where the variable file size comes into play.

Just like the File Signature, the Data Header is self-describing. The length of the Data Header is a factor in determining where the actual image data begins. This is important because this is where the .itc files I have inspected may vary from the norm.

NEW!

Disposable information (4 bytes)
The first four bytes of the Data Header would seem to be disposable information for our purposes.

"item" sequence (4 bytes)
The next four bytes of the Data Header is the sequence 69 74 65 6D (item).

Data Header Length (4 bytes)
The next four bytes are an unsigned integer value indicating the overall length of the Data Header. In the sample file below, the Data Header length has a value of 00 00 00 D8 (216).

Disposable information (16 bytes)
Immediately following the Data Header length is 16 bytes of disposable information.

Disposable information (0-4 bytes)
When the value of the Data Header length is 212, the next section of metadata begins immediately. If it is 216, the next section is offset by an additional four bytes of disposable information.

Library Persistent ID (8 bytes)
The next 8-byte sequence is the iTunes Music Library Persistent ID to which this track belongs. The Library Persistent ID is a hexadecimal string converted from those bytes. In the example below, you can see the sequence D4 CC CA A6 22 F6 CD DC, which corresponds to my Library Persistent ID (which is the first part of the .itc file name).

Track Persistent ID (8 bytes)
The next 8-byte sequence is the Track Persistent ID if this track. Like the Library Persistent ID, Track Persistent ID is also a hexadecimal string converted from those bytes. In the example below, you can see the sequence 3D 82 AC 91 DD 2D 58 B0, which corresponds to the Track Persistent ID (which is the second part of the .itc file name). You can use the Library and Track Persistent IDs together to discover information about the track, using the iTunes Music Library.xml file.

Download/persistence indicator (4 bytes)
The next 4 bytes are either the string sequence 64 6F 77 6E (down) or 6C 6F 63 6C (locl), which when "down", indicates that the CoverFlow artwork was downloaded and not persisted in a music file's tag information. It also corresponds to the appropriate subfolder beneath the Album Artwork folder. The opposite is true of "locl".

Pseudo-File Format (4 bytes)
The next 4 bytes would seem to give a hint as to the format of the embedded image. When the four bytes equate to the string sequence 50 4E 47 66 (PNGf), the image format will be of PNG (portable network graphics) type. When the sequence is 00 00 00 0D, the image is a JPEG (joint photographics experts group) image.

Disposable information (4 bytes)
Four more bytes of disposable information.

Image Width (4 bytes)
The next four bytes are an unsigned integer value indicating the width of the embedded image.

Image Height (4 bytes)
The next four bytes are an unsigned integer value indicating the height of the embedded image.

Image Data

Once the size of the Data Header has been determined, the next block is the actual Image Data, starting immediately after the Data Header, and continuing to the end of the file. In the sample below, the next four bytes are the sequence FF D8 FF E0 (ÿØÿà) which, as some of you may know, are the signature for a JPEG image.

Apple ITC file strucure



So far, I have been able to consistently extract the image data from .itc files on my own machines. This has been very useful to me in collecting album artwork downloaded from iTunes without having to automate iTunes itself.


Since this is by no means official and an inference of the structure, it is entirely possible that you may find the structure to be different. I simply look for patterns in the chaos. If you find that this does not give you the ability to consistently extract album artwork then please let me know.

Labels: , , , , , ,

 Wednesday, July 18, 2007

The women are out today!

I love summer. :)

Boy, the women are out today. I was out having a smoke break today and this Asian woman with great tits walks out of the gym that's next to my job today. She had just got out of the shower so she was still wet. She was wearing this low-cut jogging outfit. Nice. Really nice, dude. Typically, Asians aren't my thing, but this one was exceptional.

Later, I was out having another smoke break, and this older broad walks out of the gym with the firmest ass I've ever seen on a white woman. She was wearing this tight blue sweatsuit. Man, oh man!

When the women are out wearing less and less...I love summertime. :)

Labels: , ,

 Wednesday, July 11, 2007

Walk It Out!

Yo, this clip is too funny! My uncle sent it to me. Check it out.

Labels: , ,

Why didn't I think of that sooner?

I had been spending a lot of time working on my website. I can remember a good portion of time went into writing an HttpModule to identify pages generated by Blogger and apply an HttpFilter to produce server generated content based on static markup in those pages.

A brief explanation...

Blogger (the way I have it configured) generates HTML pages for each post, organized by date, an index HTML page for the home page, archive pages, etc. All of them static HTML, generated from a template. Then Blogger FTP's them up to my site. Simple for static content, right?

My HttpModule knows, through its own configurations, which folders on my site contain blog HTML files. If one is requested, it attaches an HttpFilter which scours the content using Regular Expressions, looking for markup that I designate. When it finds that markup, it replaces it with dynamic content, such as UserControls containing menus, Ad rotators, links, etc. It added a little overhead to the processing time of rendering a static page, but for the dynamic content, it was worth it for me.

I spent a couple of weeks building this very slick solution. It ostensively converted static content to dynamic.

A couple of days ago, while working on another section of the site using a Master Page, it hit me. Blogger lets me configure the names of files that it generates. It doesn't HAVE to be .html. Why couldn't it be .aspx, inherit a generic BlogPage class, and use a Master Page?

Holy crap what a great idea! Why hadn't that come to me in like a year? That would save me so much time and effort in updating my blog template.

I used to use a Master Page (several, actually) for the rest of the site, fish out the static content for a page once it was rendered, then apply it to my blog template so that my posts could look and behave like the rest of the site. This meant that any change to my Master Page, or to configurable dynamic content would mean that I would have to update the template and republish my entire blog. This also meant keeping a huge amount of static markup in my template which made diagnosing problems that much more difficult.

So I'm sure the question all of you want answered is, "So how do I use Master Pages and blogger content together?"

Well, I'm glad you asked.

  1. Start by creating a BlogPage base class in your App_Code directory.
    Public MustInherit Class BlogPage
        Inherits System.Web.UI.Page

        Protected WithEvents TitleContent As System.Web.UI.WebControls.Literal

        Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
            ' Apply the TitleContent's inner Text to the title, overriding the Title
            ' property defined at the page-level

            If ((Not Me.TitleContent Is Nothing) AndAlso (String.IsNullOrEmpty(Me.TitleContent.Text.Trim()) = False)) Then
                Me.Title = Me.TitleContent.Text.Trim()
                Me.TitleContent.Visible = False
            End If
        End Sub


    End Class

  2. Then create a Master page for your blog content.
    <%@ Master Language="VB" Inherits="MyBlogMaster" CodeFile="MyBlogMaster.master.vb" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server" id="head">
        <title>My Blog Master Page</title>
    </head>
    <body>
        <form id="aspNetForm" runat="server">
            <!-- BEGIN BODY CONTENT -->
            <asp:ContentPlaceHolder ID="BodyContent" runat="server">
                INSERT BLOG CONTENT HERE!
            </asp:ContentPlaceHolder>
            <!-- END BODY CONTENT -->
        </form>
    </body>
    </html>

  3. Update your Blogger settings to generate .aspx pages, rather than .html pages
    Blogger settings

  4. Update your Blogger Template to generate ASPX pages (Web Forms with no codebehind) that will inherit from your base page and consume your Master Page.
    <%@ Page Language="VB" MasterPageFile="MyBlogMaster.master" AutoEventWireup="false" Inherits="BlogPage" title="My Blog Page" %>

    <asp:Content ID="BodyContent1" ContentPlaceHolderID="BodyContent" runat="server">
    <asp:Literal id="TitleContent" runat="server" Visible="false"><$BlogPageTitle$></asp:Literal>

    <Blogger>

    <BlogDateHeader>
    <p class="dateheader"><$BlogDateHeaderDate$></p>
    </BlogDateHeader>

    <a id="<$BlogItemNumber$>" />
    <BlogItemTitle>
    <p class="posttitle" id="BlogItemTitle<$BlogItemNumber$>">
    <BlogItemUrl><a href="<$BlogItemURL$>" title="<$BlogItemURL$>"></BlogItemUrl>
    <$BlogItemTitle$>
    <BlogItemUrl></a></BlogItemUrl>
    </p>

    </BlogItemTitle>



    <div class="post-body">
    <p>
    <$BlogItemBody$>
    </p>
    </div>

    </Blogger>
    </asp:Content>


Oh my god! How much smaller is my template now? I don't have to port all that static markup in the template. If I ever need to change something, I can just change the Master Page and have it propogate all the way through every blog item page. Yay! How long did it take to implement? Well, let's put it this way, It took longer for me to write this post than it did to implement this entire solution.

Now of course I now have the problem of search engines having defunct links. Simple fix. I changed the behavior of my existing HttpModule to send 301 (Permanently Moved) HTTP statuses for any requests to the old .html pages to the new .aspx pages, rather than applying the HttpFilter to convert the static content to dynamic. Sweet!

Labels: , , , , , ,

 Thursday, July 05, 2007

Worst 4th of July ever

OK, so the 4th sucked ass this year. Not because anything bad happened, but because nothing at all happened.

First, it was rainy and miserable all day. My allergies were killing me. My eyes were nearly swollen shut and they burned and itched all day.

We were planning to have a cookout, but with my father just coming home from the hospital, we decided that it would be in poor taste. Since he's staying with me, I was just going to barbecue for just me and him. Unfortunately with a bleeding ulcer, red meat, spices, and tomato products are kind of out of the question.

I didn't feel like firing up the grill in the rain for just myself, so I bagged that idea.

The rain got worse later on in the evening. I can't believe Phoenixville was going to try to do a fireworks show in a thunderstorm, but you could hear off in the distance, someone was setting them off. Couldn't even see them from my deck, and if you could, they fizzed out on the way up in the rain.

At least I got the day off from work. Suck-ass holiday. :)

Labels: ,

 Wednesday, July 04, 2007

Hot in Herre!

Jee-zus! It's hot in here!

My air conditioning went on the fritz last night. My dad, who likes it a little warm [cold-blooded leezard that he is :) ] hadn't had it on all day. When I came home from work it was a tad warm, so I kicked on the air.

A couple hours later, I hadn't really noticed that it hadn't gotten much cooler in the house. A little, but not much. I guess just because the sun went down. I just kept walking around the house shouting, "It's HOT up this bitch!" I took a shower and got ready to go see Transformers.

When I left the house, it was reasonably moderate outside. Mid 70's at 10:00 at night. Not terrible. I figured when I get back, the house will probably be refrigerated. I figured if it got too cold for my dad, he'd turn the A/C off.

I got back home at about 1:15 AM. It was in the high fifties to mid-sixties outside. Very pleasant.

Inside the house, however, it was a totally different story. I walked in the door and literally hit a wall of HEAT. Fuck! It was 85 degrees in the house at least. The air conditioning was blowing HOT air into the house. I looked at the thermostat and it was off the scale!

My poor dad was just sitting on my couch, stripped down to his skivies, drenched in sweat, asking, "Is it hot in here?" Holy shit!

Turns out that about once a year, when it gets really hot and humid, my A/C unit will develop frost, yes frost, on the sensor and it will be fooled into thinking it's cold outside, not hot.

F-Guk!

Labels: ,

Robots in Disguise

More than meets the eye!

Saw the Transformers movie last night. Two words...AWE-SOME!

You know when Michael Bay is attached to a movie, it ain't gonna be no Jerry Maguire. It's gonna have explosions and car chases and violence. You don't go see this kind of movie for its dramatic cinematic content or engaging plotlines. Let me tell ya. Transformers did not disappoint.

I went to the 10:40 showing in Oaks. I wanted to go to a midnight show, but there weren't any around. I go to midnight shows for movies like this because I hate sitting in a theater with 4,000 nine-year olds. I want to be able to curse and yell at the screen without having to worry if I'm pissing some angry soccer mom off. At midnight shows, there are people my age, who do the same thing and it enhances the movie experience, not ruins it. 10:40 would suffice. It's past their bedtimes.

You ever have one of those moments where you say to yourself, "I didn't just see that"? I did. I'm in the concession line buying nachos and out of the corner of my eye I see a guy walk past. Since what I saw, my brain couldn't interpret, I just dismissed it...until I saw him walk by again. I saw a dude that came to the theater decked out in a homemade Optimus Prime costume, composed entirely of beer cases. This dork had duct taped empty Budweiser packaging around his body and head and actually left the house like that. I'm not sure but I don't think there were any Drunkicons in the movie. I gotta give him credit, though. For a stupid idea, it was pretty ingenious. I could tell this was going to be fun.

Cut to theater interior.

I stake myself out a little spot in the middle of the theater and get comfortable with my $6.00 nachos and the bottled water I snuck in my pocket. (I'm not going to pay $4.00 for a bottle of water.) I came in mid-trailers. I saw the one for the new Adam Sandler/Kevin James movie, I Now Pronounce You Chuck & Larry. Good God Jessica Biel's got a hot body. She strips down to her underwear and jiggles around a little bit. Man I gotta find video of that.

Anyway...

[Spoiler Alert! (but nod bad)]

Optimus PrimeThe movie starts and there's that old familiar voice, Peter Cullen, better known as Optimus Prime, narrating the opening. Cut to Sam Witwicki (Shia LeBoeuf). A teenage boy who desperately wants to get noticed. He wants to be popular, get the car, get the girl, etc. We all remember that, don't we? And if you don't, well fuck you then. :) He's trying to save up for a car that his dad (Kevin Dunn) promised to go halves with him on. His father takes him to a used car lot, which is run by Bobby Bolivia (played by Bernie Mac), who coins the phrase, "The driver doesn't pick the car. The car picks the driver." Nothing could be more true. As Sam is inundated with old clunkers, he finds himself suddenly gravitating towards this old beat up '74 Chevy Camaro, with a yellow rust-job (I mean paint-job), which no one on the lot can determine where it came from. He sits in the driver's seat and brushes some dust off the steering wheel to reveal...the Autobot insignia. "This is the one. I know it."

A good deal of the comedy surrounds Sam and his awkwardness in high school.

OK, enough exposition, let's get to violence! Cut to USAF airbase Soccent in Qatar. An attack by Blackout, a Decepticon disguised as a Sekorsky Pave Low helicopter used by the U.S. Navy, sets the stage for Oh shit! factor. This fucker just demolished this base. The puny humans have jack shit that can hurt it and don't really know how to handle this kind of situation. I mean really, how exactly can you train and prepare for this scenario? When an unidentified helicopter lands, transforms into a 50-foot tall robot and starts kicking the ever-loving shit out of you. Humans, you have been pwned!

Part of the greatest bits of comedy were the soldiers who survived the attack losing all composure in a subsequent attack by Scorponok. Tyrese Gibson, who played one of the soldiers gave one of the best lines I think I've ever heard. He's on the horn with the Pentagon/Secretary of Defense (Jon Voight) describing the threat. "Friendlies North of orange smoke... Attack vector: West... Man, if you could see this shit!!!" Greatest line ever written! The whole theater was rolling on the floor laughing.

Cut back to Sam (LeBoeuf). Sam is at home sleeping when he notices his car is rolling away. Thinking someone is stealing it, he runs it down on foot. Sam calls the cops from his cell phone. After catching up with it...holy shit. He sees it transform! It's Bumble Bee. (Yes I know, Bumble Bee was a VW Beetle in the cartoon, but you know what? GM has a ridiculous amount of money invested in this movie. What's funny is that when Sam picks out this car from the lot, it happens to be parked right next to an old yellow Beetle.) Needless to say the kid is slightly more than a little freaked out.

'09 Chevy Camaro ConceptA cop shows up. Oh thank God! Granted you're freaked out kid, given the shit you just saw, but you should probably notice that something is amiss when a cop pulls up in a Mustang. What police department uses Ford Mustangs as police cruisers? Much less an '09 Saleen Mustang? Holy shit! It's Barricade! Another transformer! Only this one wants your ass!

Bumble Bee transforms back into the camaro, scoops up Sam and a hot ass car chase ensues! The music changes. You can really get into it. BTW, the soundtrack is hot!

'09 Chevy Camaro ConceptAfter the car chase is over, the question is asked, "If this is super advanced alien robot technology, why would you choose to be a piece of shit car?" That's when Bumble Bee gets pissed of, ejects his passengers, flips a U-ie in the middle of a tunnel, whips himself up on two wheels and scans an oncoming car. Bumble Bee returns a moment later as the new hotness!...The '09 Chevy Camaro concept car.

Even more comedy is the introduction of the character played by John Turturro. A special agent with a branch of the government that no one has ever heard of, and no one ever will; Sector 7. I won't give too much away here, but you could tell Turturro had a lot of fun playing this character.


The cool part about this movie is the perspective. Nowhere ever in the cartoon did they deal with the human response to the Transformers. It was always Autobot vs. Decepticon and maybe save some humans. In the movie, it's more about governmental response, terror threats, keeping it quiet, & military response. Very much a What the fuck!?! factor.

Car chases, explosions, guns, violence, dogfights, aliens, robots, a bigass battle in the middle of a city with billions of dollars in collateral damage; what more could one ask? Transformers was awesome.

OK, now it's bitch time. The bitching is numerous, but insignificant.

First, the Beetle thing. If you read above, you found out that in the movie Bumble Bee transformed into a Camaro instead of a VW Beetle. Nerd purists would say that's disingenuous. I agree, but you know what? You can't get the new hotness with a fucking '08 bug. Did you see that Camaro concept car? Damn that's hot!

Second, General Motors is a total whore. Just like the latter movies of the Matrix trilogy, every vehicle, save for two or three in the movie was a GM car. Chevy's, GMC's, Pontiacs, Saturns, Hummers, and Saabs permeate the movie. Barricade was a Ford/Saleen Mustang. There were a couple of Crown Vics used as cop cars and taxis (Of course, not without the appropriate sprinkling of Impalas as cop cars). Optimus Prime was a Freightliner, but that's because GM don't make 18-wheelers.

For me, they did a great job on the special effects in general. However the Transformers themselves could have used some work. In many cases I though they were TOO detailed. I'm sure almost everyone will disagree with me. I think they put way too much time and effort into giving the robots detail. So much so that your eye couldn't focus in and absorb any of those details. The just became a mess of machinery. In addition, every last one of the Decepticons was gray. That made them almost indistinguishable. Starscream and Megatron stood next to each other and I couldn't tell them apart. Also everyone had round eyes and mouths. A number of Transformers originally had masks over their mouths. I read that it was so the animators could make them emote more. I don't know, it just seemed wrong to me.

When it comes to the eye absorbing detail, the digital camerawork was too fast. This is where a good DP (that's Director of Photography for you neophytes) earns their stripes. With so much detail for the eye to absorb, the camera should slow down a bit. Things happen so fast that the eye can't perceive it, so the brain can't absorb it. This causes the effect of, "Damn, that looked cool, but what the fuck just happened?" Two Transformers fighting just becomes a blur and one of them ends up fragged in the end.

More bitching...

OK, this series of bitching is about cartoon-to-movie continuity. You read about the Bumble Bee thing already. In reading this article on Wikipedia, it is indicated that they wrote in more Decepticons than Autobots to add a greater element of terror. OK, but why did they use so many 2nd generation Decepticon characters, when they only use a handful of 1st generation Autobots? Most of these characters were never in the original ark. The Autobots were outnumbered 8 (at least) to 5. Scorponok was one of the city-sized Transformers, not introduced for years after the show was aired. Barricade and Blackout even later. Bonecrusher was one of the Contructicons, introduced in the second season. All 5 of the Constructicons joined to form a giant robot called Devastator, who is now a separate individual and also an M1 Tank. Frenzy was one of the tiny cassette Decepticons (remember cassettes?), brother in arms with Rumble, Ravage, and Laserbeak, all minions of Soundwave, who transformed into a cassette recorder. In the movie, they took away Frenzy's pile-driving capability, combined him with Soundwave's transformation, and made his robot form look really weird. And by the way, why did they make him a GPX boombox? Why did they have to make him the cheapest, most generic, Toys 'R' Us brand boombox they could find? Oh that's right. Product placement.

AutobotsDecepticons
Jazz - Pontiac Solstice  Ironhide - GMC Topkick  Ratchet - Hummer H2 (Modified Search & Rescue)
  • Megatron - Cybertronian "Jet"
  • Starscream - Lockheed/Martin F-22 Raptor
  • Frenzy - GPX Boombox
  • Barricade - '09 Ford/Saleen Mustang
  • Blackout - Sekorsky Pave Low helicopter
  • Scorponok - Scorpion robot
  • Bonecrusher - Construction Vehicle
  • Devastator - M1 Abrams Tank
Barricade - '09 Ford/Saleen Mustang


Anyway...

I'm done bitching now. Get out and go see this movie. Forget all that shit I said. It's still a fun fucking time for any child of the eighties. Oh yeah, and the girl in this movie, Megan Fox...not bad.

Transformers rates a 9.5/10 (4 1/2 stars/5) in my book. Well worth the price of admission.

Oh, yeah. And wouldn't you know it? The movie's over, I'm leaving the theater, and I see that same guy with the beer case costume. Only he's got a gaggle of friends, ALL of whom are Drunkicons. I just had to laugh.

Labels: , , ,