Blog
Super Bowl Ads: My Favorites
Those are my favorites, in rough order of best to worst. I thought the ads were pretty good this year. Enjoy!
My Top 5 Movies of 2008
OK, so I thought about writing a Top 5 Movies of 2008, but after thinking about it, I decided it was hypocritical for me to do so. You see, in looking at most movies released in 2008, I guess I've only seen 20 of them to date. Considering IMDB has over 18,000 titles listed for 2008, I feel my Top 5 would be a bit limited.
However, I decided I still wanted to talk about my favorites of 2008. Yeah, it's about a quarter of the movies I saw this year, but I thought these were notable and that probably not everyone had seen them. So, without further ado, I give you some of my favorite films I saw in 2008. If you missed them, I'd recommend checking them out.
- WALL-E: I expect a PIXAR film to be the best film of the year every year, and this one definitely did not disappoint. At first, I wasn't sure about the whole bleak future of humanity, but after a while I realized that it wasn't the point. The point is the passion, love and kindness of both the humans and the two main characters, which are robots. And, like every Pixar movie, they take computer animation to a whole new level.
- Speed Racer: Larry and Andy Wachowski sure set the expectations of their fans high by making what became a huge hit, The Matrix. While most moviegoers will not see this as a groundbreaking film, Speed Racer is as groundbreaking as The Matrix in terms of special effects. Every moment of the film is a rainbow of the most vibrant colors and even the slowest parts of the film are cut together in really fast sequences. The Wachowski's definitely took anime into the live-action world with this one. Plus, the story is clean enough for most kids and will keep the adults entertained for the entire show as well - just don't expect a really deep philosophical metaphor or something. (Update: After another screening, it's not as clean as I thought and pushes the PG rating to new levels with language and some sexual innuendo, so parents may want to check if it is appropriate for their family.)
- Iron Man: Before this film came out, I'd never really heard much about the Iron Man comic book character and wasn't expecting much. When I saw it, though, I was totally blown away. Robert Downey Jr. plays the smart and geeky Tony Stark, and after a traumatic experience, he decides to build a superweapon - an armored suit that he can wear. The technology displayed throughout the film is futuristic but in a fairly intelligent way, and Stark does a great job kickin' butt in that suit. Director Jon Favreau does an amazing job with this action film, and stick around for a hint of things to come from Marvel Studios in the next couple years.
- The Fall: This film is just one wild ride. At first, it looks a bit droll as it follows a 10-year-old Indian girl through a 1920's hospital after she broke her arm. Soon, she meets a young stuntman for motion pictures who had also fallen, and this is where the real story begins. The stuntman begins to tell a fantastical story, which then becomes even bigger through the girl's overactive imagination. As the story progresses, both parties make stuff up as they go and insert themselves into the story. The film is rather violent and sometimes disturbing, but a great sight to behold, as most of the frames could be displayed in an art gallery.
- The Visitor: A couple weeks ago, we were watching The Incredibles and a man from my parent's generation gave us a hard time about liking the movie so much. While I still consider The Incredibles one of my favorite films, he did have a point when he said, "Go watch To Kill a Mockingbird instead." He's right, they just don't make movies like they used to. When I left the theater after viewing The Visitor, one fellow moviegoer said, "It's kinda like the movies they used to make." Richard Jenkins does a great job as a boring, old professor until he finds a couple immigrants living in his New York apartment and he decides to let them stay until they could find a home. Jenkin's character, Walter, finds some new passions in life through music and new friends. Some may be put off by a somewhat heavy-handed social agenda, and although I think it's something important to think about, the main draw of the film is getting to know these vibrant characters.
What do you think? Have you seen these? Do you like them? Feel free to leave a comment and tell me and my readers what you think.
The Mall Shopping Letdown
I happen to work in an office next to one of the nation's largest malls, the Mall of America. It's nice because I can shop there if I need to pick up something, and I can do it during my lunch break. (Plus, there's a never-ending collection of restaurants and food courts to eat at.) However, this experience from last year is still why I really dislike shopping at malls.
So, last year I was getting my sister a Christmas present, and she specifically asked for a scarf and a hat from a major clothing retailer. I wanted to keep the present at $20 to $25, mostly because that's what we usually do in our family. So, I went into their store and could not find what she wanted. After a while, I found a matching scarf and hat that was similar and I thought she'd like. However, the hat was around $25 and the scarf around $20.
This brings me to the first thing. My idea of fashion clothing for myself is a $20 pair of cargo pants from Kohl's and a $20 T-shirt from a rock band I like. Everything else, actually including the pants, is purchased on a "That looks decent and the price is right" basis. I think my last had was around $8, and well, I guess I'd buy a scarf if The Day After Tomorrow happened. I guess I see very little reason to go to a fancy name-brand store when you can get the same thing at a discount clothing retailer for half the price.
Anyways, because I only have an hour lunch break, it actually took me a couple days of lunch breaks pondering over what I wanted to get her. I thought about getting the scarf or the hat by itself, but that seemed to be a bit of a cop-out. Finally, a day or two before Christmas, I decided I should just pony up the $45. It might be expensive, but it's my sister and she's worth it.
When I get up to the counter, the woman rings me up and tells me the total is $26. WHAT??!! I kept my composure, but I totally felt like smashing her head into the checkout counter. Darn it, if I had known this stuff would only cost me $26, I would have bought it three days ago! I would have saved hours and hours of mulling over what to do! I tried to calmly pay my $26, and I left the store cursing under my breath.
On the way out, I noticed a poster by the front door that, in neat little letters, said "Holiday Sale. 40% off everything". Ohh, so that's it, is it? From now on, I'll just stick to the discount stores where I pay the price on the tag.
Why I Hate Twitter
Those of you who know me know that I've been on Pownce for about a year. In April sometime I started cross-posting my Pownce status posts to Twitter. But, even before I started posting to Twitter, I didn't like it. However, now that Pownce is leaving, I just want to go through the main reasons that I hate Twitter:
- 140 Characters: I like using these "micro-blogging" services to tell what I'm up to as well as to post quick thoughts on life, tech news, or whatever. However, the limitation of 140 characters for each post is unneccesary and makes very little sense. With posting to Twitter, I cannot just post a quick thought. The 140 character limit makes me have to write down the thought and then spend a minute or two editing it down to 140 characters. I'd rather write my thought and get back to work, not spend a bunch of my valuable time trimming my thoughts. The 140 character limit to posts was because Twitter was designed to allow you to be notified and post via SMS/text messaging, but I only know of one or two of the 82 people I'm following who are actually using the phone to keep up with Twitter.
- Media Support: Sites like Pownce gave you lots of options for posting media. You could post a link to the URL with a comment. You can attach a photo to a post. Linking to a YouTube video on Pownce automatically added an embedded version of the video to the page. These are just nice little tweaks that make Twitter more useful, but Twitter supports none of them. Serioiusly, most of these little tweaks would take, at the most, hours to develop and implement. Most of the Twitter iPhone Apps or browser plugins give support for TwitPic, but beyond that, Twitter gives no support for anything beyond text.
- Follow Via IM/RSS: Back in the early days of Twitter, you could befriend Twitter on the Google Talk system and it would post all your friend's updates through your Google Talk IM system. Also, you could tell Twitter that you wanted to search for a keyword and it would give you all the Twitter posts with that keyword in them. And back in the day I could also get one RSS feed with all my friends' posts, which was really handy for making sure I didn't miss a post. However, as Twitter became more popular, these features were discountinued.
Of course, the main thing that Twitter has going for it is that everyone is there. I mean, I got some friends to sign up for Pownce, but they weren't doing much with it because no one else was there posting and reading everyone else's posts. Twitter was appreantly the first place to make this "micro-blogging" thing big, and they've got a long head start on everyone. I think a good analogy is the MySpace world. I mean, anyone who has used the web knows that MySpace looks terrible but because it was one of the first and it caught on, it still has tons of staying power.
So what's out there instead of Twitter? The most obvious is Identi.ca, a Twitter clone that is based on the open source Laconica platform. The folks at Identi.ca have created a version of Twitter that can be set up by anyone who wants to create a server and the different instances of the Laconica service can communicate with each oher. The folks over at TWiT Army have found that it creates smaller niche communities based on interests, but you can still follow people from other communities as well. However, I'd have to say that the fact that Laconica still uses Twitter's 140 character limit is a bit annoying.
Another service I've been hearing about a lot and just started trying is FriendFeed. It allows you to give it tons of feeds, from Flickr to Google Talk to any RSS feed to your Amazon Wish List and lots more. It then monitors all of them and gives one feed of all the latest information. I plugged almost everything I'm involved into my FriendFeed page and you get plenty of information about my activity online. Of course, you can only put as much as you want on there, and I expect you can make it so only your friends can see the information you put in if you are worried about privacy. And, of course, you can post status notes, links, or even photos right on FriendFeed's system - and they can even be longer than 140 characters! Plus, to make sure your friend on Twitter are informed, you can have FriendFeed post to any or all of your information to Twitter as well! Those who spend all day in their Google Talk screens can even get all FriendFeed activity posted to their Google Talk chat window as well, if they like.
Has Twitter created an interesting new medium for keeping up with friends online? Yes. But after a few years of keeping it simple and only lowering their services instead of expanding it, Twitter is just losing the battle. I'd be fine if people started moving on or they started using a more open format, but I guess we'll see what happens.
Thoughts on Thanksgiving
Spending Thanksgiving in Shreveport, Louisiana was great. Plenty of my friends from all over the country were there, and the food and drinks were amazing throughout the weekend. Now I'm heading to visit more missionaries in Indianapolis this evening.
One of my favorite moments was when Nathan gave a quick reflection. (I can't quote him because I don't remember it exactly, but I will paraphrase.) Nathan said that American tradition is that we should give thanks, but often we do not give thanks to anyone in particular. We should be offering this thanks to someone. However, many things, such as the trees, the weather, the great life I have, etc., cannot be attributed to any person. However, these things should always be attributed to God. It was just a great reminder for me to be thankful and, more importantly, to be thankful to God for all he has given us.
Trailer-Review.com: A Drupal Weekend Project
I love microblogging and the social medias. I'm always looking for little social media experiments as well. Besides this blog, I'm always thinking up other ways to drum up interested readers, inform readers, and give out my opinions. Of course, one of those genres that I love commenting on is movies and the crazyness of Hollywood.
Microblogging services such as Twitter, Pownce, FriendFeed and their social media friends are also another fun place to express an opinion. Twitter has one interesting limitation - that is, all posts have to be 140 characters or less. In some ways, this makes it as much of an art form as a short form blogging service. For my personal account, one of the reasons I use Pownce is because I like to convey a unique thought without having to edit for 140 characters. But, for more rehearsed messaging, I figure that the 140-character limit can be a sort of editing challenge.
With this in mind, I created the trailer_review Twitter account. On this account, I post an 140-character or less review of the movie preview, starting with the title of the movie and ending with a link to the preview. But, after posting a couple trailer mini-reviews, I decided that I'd want a website to go along with that I could provide more information at a later time, if I wanted. Plus, not everyone is yet on Twitter, so maybe others would like a separate site where the could grab an RSS feed, leave comments, etc. Thus, thanks to the power of Drupal, it took a couple hours to get a functional, decent-looking website working. This is the store of Trailer-Review.com, my first-ever Drupal weekend project. (Full disclosure: It took me two weekends to do all these steps because I was working on a couple paying freelance projects and doing other things, but these processes could easily be done in one free weekend.) To paraphrase Strong Bad, "Feel free to follow along with my simple step-by-step instructions. I make [Drupal] FUN!"
Step I: Setting Up The Site
To set up a site, you need to have a LAMP (Linux, Apache, MySQL, PHP) server that you can set the site up on. OK, so I lied, you could run it on Windows, you can run it on IIS, and of course you and run it on Python (or even Oracle, I hear). So, basically, you need PHP, but the LAMP stack is the easiest. Set up the site, then download the latest version from the drupal.org website and decompress it. (We used Drupal 6.6.) Access the public URL of the site and follow the instructions to install the site. You will need database information and will be able to set up an administrator account.
Step II: Adding Contributed Modules
Download the following modules for Drupal 6.x:
Uncompress these folders and place those in a folder called sites/all/modules
folder. Then, go to "Administer"->"Site Building"->"Modules" and turn on these part of the modules:
- Content
- Link
- Trigger
- Twitter actions
Now we're ready to start configuring the modules we've installed.
Step III: Configuring Content and Link
To setup the content items, we want to have the title and body as well as the URL for the site to watch the movie trailer. The title and body are included in the default stories, but we'll use the Content Construction Kit to create that URL field and the link to that trailer. Here we go:
- Go to "Administer"->"Content Types".
- Click on the "manage fields" link next to "Story".
- Under "Add," type the label "Trailer Link", field name "field_trailer_url", and "Link" for the type of data.
- Click on "Save".
- On the next page underneath "Global settings," check "Required".
- Select "Static Title" for the "Link Title" section. Click "Save field settings".
- Towards the top of the page, click on "Display fields".
- Change "Label" from "Above" to "<Hidden>" and click "Save".
Step IV: Configuring Twitter
For this site, we want Twitter to be posted to any time new content is posted to the site. To do this, we use the Twitter Actions part of the Twitter Module. We will set up an Action and then use the Trigger module to make it run every time we create some content. Here's how we want to configure it:
- Go to "Administer"->"Site configuration" and click on "Actions".
- At the bottom of the screen under "Make a new advanced action," select "Post a message to Twitter..." and click "Create".
- Type in your Twitter account name and password and then type in the message. (Note the use of the
%
symbol with specific keywords allows you to add the new content - for my site, I used%title: %teaser %node_url
.) - Click "Save".
- Next, go to "Administer"->"Site building" and click on "Triggers".
- Under the "Trigger: After saving a new post" section, select the "Post a message to Twitter" action (or whatever you named it during Step 3 and 4).
- Click "Assign".
Voila! Now we've got a working site that posts to Twitter when we post and also provides a link to the trailer. However, there's a couple things more.
Appendix A: URL Shortening for Twitter
First, we want to give us more space on our Twitter posts so that, instead of Twitter using <a href="http://www.trailer-review.com/node/14
">http://www.trailer-review.com/node/14[/geshifilter-code] as our URL, we get a shorter URL. There are a number of fancy URL shortening services such as TinyURL, but I chose Bit.ly because it's a bit shorter than TinyURL anyways. After signing up for an account, I can write some code to request a shortened URL for my longer URLs via their handy API. Unfortunately, in order to get these in the Twitter Actions module, I have to hack the sites/all/modules/twitter/twitter_actions/twitter_actions.module
file. I took this part:
// Node-based variable translation is only available if we have a node.
if (isset($node) && is_object($node)) {
$variables = array_merge($variables, array(
'%uid' => $node->uid,
'%node_url' => url('node/'. $node->nid, array('absolute' => TRUE)),
'%node_type' => node_get_types('name', $node),
'%title' => $node->title,
'%teaser' => $node->teaser,
'%body' => $node->body
)
);
}
and replaced it with this:
// Node-based variable translation is only available if we have a node.
if (isset($node) && is_object($node)) {
$node_url = url('node/'. $node->nid, array('absolute' => TRUE));
$headers = array('Content-type' => 'application/x-www-form-urlencoded');
$short_url_json = drupal_http_request('http://api.bit.ly/shorten?version=2.0.1&longUrl='.urlencode($node_url).'&login=BITLY_API_ID&apiKey=BITLY_API_KEY', $headers, 'POST', NULL);
$short_url = json_decode($short_url_json->data)->results->$node_url->shortUrl;
$variables = array_merge($variables, array(
'%uid' => $node->uid,
'%node_url' => url('node/'. $node->nid, array('absolute' => TRUE)),
'%node_type' => node_get_types('name', $node),
'%short_url' => $short_url,
'%title' => $node->title,
'%teaser' => $node->teaser,
'%body' => $node->body
)
);
}
If you read PHP code pretty well, you can see that I added one more variable to the options for the configurable Action we made. I've created a %short_url
variable that has taken the old %node_url
data and retrieved a shorter version from the Bit.ly site. To get it to print out the shorter URL, though, you have to go back to "Administer"->"Site configuration"->"Actions" and configure the action we made in Step IV to use %short_url
instead of %node_url
. (Of course, to get this to work, you have to replace the BITLY_API_ID
and BITLY_API_KEY
with the ones supplied in your Bit.ly account page.)
Appendix B: Keeping Track of the Character Count
Since I want to post these pithy reviews to Twitter, I want to know how many characters long the title and body with all the formatting is. Therefore, I created the "count_characters" module. First, I created count_characters.info
file as follows:
; $Id$
name = Count Characters
description = Adds a custom listing of how many characters are left.
php = 5.1
core = 6.x
Then, I created the count_characters.module
file where I Add space to list the characters in all content add/edit forms and include the forthcoming JavaScript file:
< ?php
/**
* Implementation of hook_form_alter().
*/
function count_characters_form_alter(&$form, $form_state, $form_id) {
if (substr($form_id, -10) == '_node_form') {
drupal_add_js(drupal_get_path('module', 'count_characters') .'/count_characters.js', 'module');
$form['count_chars'] = array(
'#type' => 'markup',
'#prefix' => '',
'#value' => 'Character Count: Unknown',
'#suffix' => '',
'#weight' => '-5',
);
}
}
Finally, here's some JavaScript that uses the JQuery library built into Drupal to count up the size of the title and body and tell you how many characters this will be on Twitter. This is count_characters.js
:
if (Drupal.jsEnabled)
{
$(document).ready(function()
{
$("#edit-title").keyup(function() { calculateTotalChars(); });
$("#edit-body").keyup(function() { calculateTotalChars(); });
calculateTotalChars();
function calculateTotalChars()
{
titleCount = $("#edit-title").val().length;
bodyCount = $("#edit-body").val().length;
totalChars = titleCount + 2 + bodyCount + 1 + 19;
$("#character_count").html(totalChars);
}
});
}
Note that in line 11, we not only take the length of the title and body together, but add some more characters. The Bit.ly URL should be 18 or 19 characters, at the most, and then we have 2 characters for ": " between the title and the body and 1 for another space between the body and the URL. Save these files in sites/all/modules/custom/count_characters/
and then enable the module via the "Administer"->"Site building"->"Modules" page. Now we know exactly how many characters our Twitter post will be!
Final Thoughts
For a weekend project, this is a great start of a site hat may prove to be a useful little site someday. There were a couple other things I did, such as customizing the color of the Garland theme, customizing the comment settings, and enabling OpenID for commenters to login via OpenID if they like. Of course, there's always more work to do, such as creating a custom design, added embedded versions of movie trailers to each post, and maybe integrating with other social media services. But that's for another weekend project!
Steve Jobs Lied to Me
Last week, at this time, I was having major problems with my laptop. Sometime around 6pm on Sunday, my MacBook Pro suddenly decided it could not use DHCP anymore. (DHCP, for the uninitiated, is the ability for your computer to just work when you join a network. If you don't have DHCP, you have to know a valid IP address, the gateway IP address, and IP addresses of working DNS servers to connect to the same network. DHCP just asks the router to give this to you automatically.) So, upon realizing it was my computer only, I tried testing it at the neighbor's house (because our Internet connection is crappy, at best). While over there, I had Collin check the router and he said the router was handing me all the usual DHCP information, but apparently my Apple MacBook Pro was just not recognizing it. I went to bed early and hoped we could get it working tomorrow. During lunch on Monday, I checked at work to make sure their network was giving my machine the same problem. It was, so I signed up for a meeting with a "Genius" at the Apple Store. After waiting for 25 minutes for the Genius Bar to get to my turn, I spent a half hour working with the "Genius" to figure it out. Most of the stuff he wanted to do I had already tried, such as booting Mac OS X in safe mode and even resetting the power system. He booted from a FireWire external drive and the networking worked there, so it was a software problem. We tried deleting a number of network-related settings files, which magically recreate themselves with the default settings in case something has gone wrong. But, still, the "Genius" hadn't seen this problem before, and therefore he didn't know of any good solution besides the dreaded "Archive and Install" procedure. Why the "dreaded" Archive and Install? Well, because the process of backing up all your system and user files and then installing Mac OS X anew took two and a half hours! OK, so it only took an hour and a half, but there was another hour of running all those software updates to get my MacBook Pro up to date. That's a long time. Windows doesn't even take that long, I don't think. So what's the problem? I believed the whole Apple hype that the Mac OS X experience was better than Windows Vista. Yes, I got this issue fixed with only a day and a half of my free time taken away, but what would I have been out if I had a Windows problem? With this kind of networking problem on Windows, all I've usually had to do is get a newer version of the hardware's driver or slap the side of the tower and it would kick back into gear. I would've had better ideas of how to fix it on Windows because of years of experience with it, but with Mac OS X I had to go see an "Genius" who really had no insight at all. Is the romance with Apple over? Far from it! I've got an iPhone and everything on my laptop is working again. I like the fact that there is someone I can go to and try to get help for my computer - there's no such person on the PC world because the manufacturer and Microsoft just keep pointing fingers at each other. After getting Mac OS X reinstalled, I only had to move my Applications and User folder back into the live system from the backup and I was up and running with the exact same preferences and settings as I had before. On a Windows machine, most of my data is in my "Documents and Settings" area, but tons of my settings are scattered throughout the rest of the computer as well. People talk about companies that need to be more open and public. Companies should listen to their customers. Apple makes cool products, but they always do it their way. They never listen to their customers until a raging mob starts pounding down the doors at Cupertino. They develop software for Windows but purposely leave out the features that would really make the application useful and keep those for Mac OS X. And, for Windows, there's a Knowledge Base article with five solutions to fix almost every problem - for Apple's support website, they'll just tell you to restart the computer and then go to see the "Genius" if it doesn't work. I'm not too mad at Apple - I just wish Apple would wake up to the world they live in and start acting like a real company. I wish they'd really work to help their customers. But, then again, maybe that's what makes Apple cool and keeps people sleeping on the sidewalk for days in order to be the first to touch their product.
The Bad Graphics Ghost Shirt
When I saw that the Homestar Runner Store was selling this shirt, I knew I should get it. My original excuse was because I didn't want to wear a costume for Halloween but I did want to do something special to acknowledge the "holiday" (although work didn't count it as a "costume", not surprisingly). It's in that spirit, of course, that I turned to the experts of Halloween, the folks at HomestarRunner.com for inspiration (and merchandise):
For those who are not so well-versed in the Homestar Runner canon, the Bad Graphics Ghost first appeared in sbemail 48, where Strong Bad's old Apple II-style computer haunts him. The ghost is replicated in beautiful blocks on the front of this shirt, with an amazingly simple BASIC program below it:
Let's see... Geeky. Check. Homestar-related. Check. Halloween-related. Check.
Another fun shirt, and if you're not up to speed with Homestar Runner and Strong Bad, get into it.
The Jars of Clay Shirt
Finally! I've been a huge fan of Jars of Clay for over a decade and it took me until August 2008 to get a Jars of Clay T-shirt! But it's a beauty:
Plus, I got it during one of the best mini-vacations ever - a whirlwind weekend to Chicago to hang out with two of my sisters and see a bunch of my favorite bands! In late August, my sister and I traveled to Chicago to meet my sister who goes to college in nearby South Bend, Indiana. (We took the Megabus from Minneapolis, which is a very cost-effective way to get to Chicago from many places in the midwest.) That evening, we caught a stop on the Music Builds Tour, which featured Jars of Clay, Robert Randolph & The Family Band, Switchfoot and Third Day, possibly one of the most amazing lineups in my rather short music history. It was great to see the Jars guys rockin' it onstage since the last time we'd seen them was in 2002. Robert Randolph and hte Family Band rocked the place like only they can and brought a bit of Gospel flavor as well. Switchfoot, of course, put on an amazing and inspiring show and all the bands came back for a synergistic encore. Oh, and did I mention that it was outdoors on Lake Michigan on a beautiful August day? That too!
The shirt, as you can probably tell, is gray and has the outline of the word "Jars of Clay" on it with some little bird figures. It's rock and roll and kinda pretty at the same time. And now, I support one of my all-time favorite bands via my favorite art form: T-shirts.
The Classic Game Over Shirt
Today's shirt is a nice, black look at retro gaming. And thanks to my terrible camera work in the bathroom mirror, it looks even cooler because the motion applied while taking the photo gives the illusion of a drop shadow:
Yes, the words "GAME OVER" are printed in a large, pixelated font destined to remind classic gamers of their favorite Atari or original NES games. And then, it also says (in standard white text) the creators of the shirt: thinkgeek.com, the central place for all products geeky and cool.
For those who don't know, ThinkGeek has lots of great products, although they usually are a bit pricey. Back in the day, I outfitted myself with this shirt as well as a couple others. Also, you can get ties, mini-copters, airsoft guns, marshmallow guns, action figures, knives, sporks, squids, lots of clocks, batteries, tape players, caffeine, phones, and much more. It's tons of geeky fun.