Ryan Kanno: The diary of an Enginerd in Hawaii

Everything you’ve ever thought, but never had the balls to say.

Tag Archive » ‘hawaii’

Upgrading your DVR: How to increase your DVR’s recording time

This blog is for all my Hawaii television addicts.

Since I rarely have time to watch live television, my Oceanic Time Warner DVR is constantly filled to max capacity. This means I’m always battling my inner demons on what shows I have to erase… Rock of Love, A Shot at Love, Flavor of Love… you know, all the good stuff. To solve my problem, I’ve finally decided to invest the $150 to upgrade my DVR and increase its total number of recording hours.

Luckily for you, I’ll walk you through the steps to upgrade your own DVR!

As a standard disclaimer, if you attempt to upgrade your own DVR and f-it up, I can’t and won’t fix it. So… if technology scares you, please parents, do not try this unless supervised by your technology-oriented youngster. If you don’t understand what SATA, external enclosures, or hard drives mean, do not, and I repeat do not try this at home!

The setup

Before you can upgrade your DVR, you’ll need to make sure that you have the Scientific Atlanta Explorer 8300HD. Just match what your DVR looks like to the one in the picture. It’s not that hard. This is what mine looks like: the front and the back. I do know for a fact that Oceanic has a few versions of their cable boxes out in the wild. I’m pretty sure you can upgrade (some of) the other models as well, but I’ve personally only upgraded the 8300HD. So if you want to be ballsy and upgrade a different cable box, feel totally free - just be warned that this guide won’t apply to you. I’m not even sure if you can still turn in your old cable box because of the demand for HDTV in Hawaii, but calling up Oceanic can’t hurt.

Aside from owning an 8300HD, you’ll need three additional components to make this upgrade work. I’ve included links to where I purchased the following items. Fear not, I don’t make any commissions on these links so feel free to buy these products from anywhere you see fit.

Here are a few pictures of the aforementioned items.

External SATA enclosureMaxtor SATA 500 GB hard driveeSATA to SATA cableEverything unpacked!

The results

First, make sure your 8300HD is turned off. Place the hard drive into the external enclosure. Next, after connecting the external SATA enclosure to the 8300HD (with the SATA to eSATA cable), power the external hard drive before turning the DVR box back on. Note, it’s extremely important that the external SATA enclosure be turned on prior to the cable box being powered on. Once booted, the 8300HD should recognize a new, external data source and prompt you to format the new drive. The following message should appear:

Format hard drive prompt

Once formatted, you should see a success message:

Format success!

Voila! DVR Upgraded!

The benes

There are numerous benefits to increasing your DVR’s total recording time.

  • No more having to rush home because you forgot the DVR is full.
  • No more making those life-altering decisions about what movies to delete.
  • Being able to store almost a year’s worth of reality crap is fun!

Of course, there’s the almost 4X increase in the DVR’s recording time as you can see by the following before and after pictures. Not bad!

Before upgradeAfter upgrade

The cons

There’s no such thing as a free pass in life… so here are a few of the cons.

  • As I wrote earlier, the external hard drive needs to be powered on before your cable box. This means one of two things. Either you always turn the external drive on first or leave it on permanently. Since I know I could never remember to do the former, I’ve decided to leave the device on permanently - meaning a slightly larger electricity bill. As someone trying to get off the grid, that makes me sad.
  • You can’t rip the recorded video off the external hard drive. Unfortunately, the data is encrypted. Unless you’re a cryptographic expert, worked on the 8300HD, or have a few Beowulf clusters, deal with it. You won’t be able to share your recordings.
  • $150 bucks is a lot to spend on easing one’s mind, but I think it’s money well spent considering the prices here and here.

Some linkage

Of course I couldn’t have upgraded my DVR without the Internet. Here’s a link to the forums and guides I read to assist me along the way. Check them out, some of them are quite interesting.

Finally, check out my flickr set if you need to see any more pictures!

Enjoy!

Tagged: , , , , , .


I are edjamakated graduated!

Welcome, to the rest of my life.

Today, I officially received my Masters in Business Administration from the Shidler College of Business at the University of Hawaii. Though it took me four long years as a part time student, I’d like to thank everyone who made it possible. Thanks for all the late nighters, the fun times running student body, but most of all, thanks for the memories. Not to mention, thanks to everyone who came to see me graduate! Whee! Since I hadn’t participated in a graduation ceremony in a few years, it was quite exciting.

At least I can say I graduated with Colt!

Go Bows!

(I’ll post videos once I can figure out how to convert them from my camera!)

And as a parting thought, the proof is in the pudding!

CIMG0903


(Click on the diploma cover to see my flickr set!)

Tagged: , , , , , , , , .


1 Retirement Party, 2 Alma Maters, and 2 BCS Bowl Games. Priceless.

For the record, today just might have been the best day of my entire life.

Retirement Party

After slaving away for months planning my parent’s *surprise* retirement party, everything came to full fruition today. Thinking that they were attending an awards ceremony for the University of Hawaii’s Shidler College of Business, my parents were completely taken aback as more than 150 of their closest friends and family gathered to celebrate their retirement.

(Thanks to me and my sister!)

There’s a lesson to be learned here. If you want to see the most bewildered look on your parent’s face as 150+ people scream “Surprise!”, shoot me an email. And trust me when I say this, but…

It was all worth it.

I’ll post some pics once I get them developed. Thanks to everyone who showed up as well as everyone who made it all possible.

I seriously <3 my family.

Illinois gets a whiff of the Roses

The Illinois seriously needed the moons and the stars aligned today for their hand to be dealt the right cards.

  1. Virginia Tech beating BC allowed Illinois to move into the top 14 of the BCS poll.
  2. Pittsburgh beating West Virginia and/or (whatever way you want to look at it) Oklahoma beating Mizzo allowed Ohio State to move into the BCS Championship Game.

(As much as I hate saying this… but “Go Buckeyes!”)

Since Ohio State was going to be the Big Ten’s representative to the Rose Bowl, moving into the BCS Championship Game means that another Big Ten school could be selected to take their place.

Enter Illinois

After a dismal 2-10 season last year, the Illinois came roaring back this year with wins over then number five, Wisconsin, and then number one, Ohio State. Featuring a potent running attack, an amazing freshman, Leman led defense, and a surprise resurgence of “Juice” Williams, a whiff of the Roses will be well deserved.

Hawaii says pass some Sugar, baby.

For those of you on the East Coast that couldn’t stay up to watch Hawaii’s wild win over Washington, please, please watch today’s replay. Not only does it exemplify Hawaii’s heart and soul displayed throughout the season, but it’ll show all you analysts what to watch out for on New Year’s day.

All I can say is…

If Colt Brennan isn’t a Heisman finalist, something is seriously dead wrong with the system.

All the ESPN and BCS committee haters can stop drinking the haterade because the University of Hawaii showed true heart and grit in its final four games of the season. Not many of the so called “experts” and “analysts” gave them a chance to be the only undefeated team in college football. Notice, I didn’t say all because there were a few here and there.

But 12 games and a 12-0 record later, here we are.

Since Boise really paved the way for non-BCS conferences last year with a wild win over Oklahoma in the Fiesta Bowl, the Rainbows are expected to get an at-large BCS selection to the Sugar Bowl.

Go Bows!

Now my only dilemma is what bowl game will I attend?

Tagged: , , , , , , , .


Using the extra() QuerySet modifier in Django for WeGoEat

Since I actually used this method to reduce the number of Update:”explicit” SQL calls made in WeGoEat, I figured I’d write a little blog explaining the context in which it was used, and maybe, just maybe, it’ll help shed some light on how others can take advantage of this neat little function.

Background

As a Django “proof-of-concept”, I’m working on a local restaurant review site for my home state of Hawai`i. (I actually just released it yesterday). For each restaurant, I want to be able to calculate the average of all reviews and display this listing in a paginated view. (Yes, I do realize there’s no average rating, but that has to do with there being no users. ;P).

The Problem

Having a serious “wtf was I thinking moment”, I initially wrote a Restaurant model function that returned the average (review) rating for each restaurant instance. Little did I realize that when I actually displayed the restaurant’s average reviews, I would be making an additional SQL avg() call for every restaurant. Though I’m paging “n” records at a time, this function added an additional “n” SQL calls for every view that contained a restaurant listing, just to name a few.

In pseudo-code, my initial naive function resembled the following: (I’m sure we’re all guilty of writing something of the sort… ok, fine, I know I was. ;P)

1
2
3
4
5
6
     def get_average_review(self):
         query = 'QUERY TO GET AVERAGE (SELECT AVG(rating)...); (I have the query below)'
         # Get cursor from connection
        cursor = connection.cursor()
        cursor.execute(query)
        return cursor.fetchall()

Duh.

Here’s a picture of the number of queries it took:

Duh

The “extra()” solution

After profiling my application and realizing what a bone-headed mistake I made, I began researching the extra() Queryset modifier. Yes, I realize that these extra lookups aren’t the most portable and often violate the DRY principle, but it’ll probably suffice for most of all my personal projects. :)

Since I’m already retrieving a list of Restaurants and filtering them via letter, island, and what not, I figured I could add an average rating subquery. The entire call looks as such:

1
2
3
4
5
6
7
     restaurants = Restaurant.objects.filter(name__istartswith = letter).extra(
             select={'<strong>avg_rating</strong>': 'SELECT AVG(overall_rating) FROM restaurants_restaurant as res, reviews_review, django_content_type \
                                          WHERE restaurants_restaurant.id = res.id \
                                          AND res.id = reviews_review.object_id \
                                          AND reviews_review.content_type_id = django_content_type.id \
                                          AND django_content_type.model = \'restaurant\''},
                       )

As you can see, I’m exploiting the fact that restaurants_restaurant will be available from the Restaurant.objects.filter() call. (I know, I know… bad for portability).

But voila!

Now, in my templates, when I iterate over the restaurants, I can get issue the following:

1
2
3
4
5
6
7
8
9
10
11
{% for restaurant in restaurant_list %}
&lt;tr&gt;
    &lt;td&gt;&lt;a href="{{restaurant.get_absolute_url}}"&gt;{{ restaurant.name }}&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;{% if restaurant.avg_rating %}
	   {% load show_stars %} 
           &lt;span class="average-rating"&gt;
	   {% show_stars <strong>restaurant.avg_rating</strong> of 5 round to quarter %}
           &lt;/span&gt;
           {% endif %}&lt;/td&gt;
&lt;/tr&gt;
{% endfor %}

Notice how I used my show_stars template tag that I blogged about a few weeks ago to display the average restaurant rating. (Cheap shameless plug, but damn effective! :P) I’d link to a page in action, but since I just opened up my site to a few select users, I’ll update this post when I actually have any reviews. :P

Oh, and before I forget, thanks to my co-worker Stephen for assisting me with my SQL issues! :)

Here’s a picture of the final result:

Yay

Note:

As an added bonus, I also realized a few other ’spots’ where the .extra() Queryset modifier would come in handy. Since I’m also using the wonderful django-voting application from Jonathan Buchanan, I came across this post about accessing a dictionary via a template in the Django-users Google Group.

Basically, I had come across the same issue as the poster. Since I allow users to vote on reviews (similar to Amazon, Yelp, etc.), I wanted to retrieve the score of each Review instance to display on a paginated listing of all Reviews. Using the same extra() modifier, I was able to inject the total number of votes and the score when I retrieved all Reviews as such:

Btw, I just injected most of the code from Jonathan’s template tag. :)

1
2
3
4
5
6
7
8
9
10
11
.extra(select={'total_votes': 'SELECT COUNT(vote) FROM votes as v, reviews_review as rev, django_content_type \
                                        WHERE reviews_review.id = rev.id \
                                        AND v.object_id = reviews_review.id \
                                        AND v.content_type_id = django_content_type.id \
                                        AND django_content_type.model = \'review\'', 
 
                                        'score': 'SELECT SUM(vote) FROM votes as v, reviews_review as rev, django_content_type \
                                        WHERE reviews_review.id = rev.id \
                                        AND v.object_id = reviews_review.id \
                                        AND v.content_type_id = django_content_type.id \
                                        AND django_content_type.model = \'review\''},)

Pretty neat right?

Now, when iterating through the reviews, I can use the following:

1
2
3
4
5
6
7
8
9
10
11
12
13
{% for review in object_list %}
	&lt;tr&gt;
		&lt;td&gt;&lt;a href="{{review.content_object.get_absolute_url}}"&gt;{{ review.content_object.name }}&lt;/a&gt;&lt;/td&gt;
		&lt;td&gt;&lt;a href="{% url profile-detail username=review.user.username %}"&gt;{{ review.user.username }}&lt;/a&gt;&lt;/td&gt;
		&lt;td&gt;&lt;nobr&gt;{% load show_stars %}
			&lt;span class="rating"&gt;{% show_stars review.overall_rating of 5 round to half %}&lt;/span&gt;
			&lt;/nobr&gt;
		&lt;/td&gt;
		&lt;td&gt;"&lt;span style="font-weight:bold; color:#092e20;"&gt;{{ review.get_recommendation_display }}&lt;/span&gt;"&lt;/td&gt;
		&lt;td&gt;&lt;span style="font-size:.875em;"&gt;{{ review.submit_date|timesince }} ago&lt;/span&gt;&lt;/td&gt;
		<strong>&lt;td&gt;Total of {{ review.score|default:0 }} from {{ review.total_votes }} {{  review.total_votes|pluralize:"person,people" }}.&lt;/td&gt;</strong>
	&lt;/tr&gt;
{% endfor %}

Hope y’all learned something like I did! :) Oh, and before I forget my standard disclaimer, “since this is on my blog, feel free to take/use/steal/distribute/copy/modify any code you see fit, but if you find any bugs, have any comments, or think the code can be cleaner, I’d love to hear from you.”

Enjoy!

Tagged: , , , , , , .


My semester in review

As some of you have noticed, I haven’t been blogging as much as I’d like to… it’s been quite a busy semester so I figured I’d fill people in with what’s been going on (and what will be going on) in my somewhat hectic life.

  1. My second to last semester in the University of Hawai`i MBA program came to an end two weeks ago. One down, one more to go! This semester was quite interesting as Scott, Brad and myself helped investigate acquisition strategies for a local tech startup. All in all, I felt it was a very interesting experience. Thanks to everyone who helped fill out the survey!
  2. I actually ended up winning an award during Business Night as the Outstanding MBA Student in Finance. I had a chance to eat dinner with the CEO of Bank of Hawaii, one of the largest banks here in Hawaii that donated my award. It was a very engaging experience. Considering I’m an engineer by schooling, the award was a pleasant surprise. CFA, here I come!
  3. This summer, I’m currently enrolled in the Capstone Field Study which involves consulting for a local Hawaii business. Hopefully, our team ends up producing something realistic and viable for our client to implement.
  4. I decided to run (again) to be on the Board of the Home Owner’s Association of the apartment complex I live in. Luckily, I was elected for a few more years!
  5. As for exercise, I’m playing a basketball league out in Halawa on Sundays, Alumni league next month, and a YBA league in July. I’m also waking up earrrly on Sundays to attend the marathon clinic at Kapiolani park. It’s been a rough few weeks to say the least, but this year I’m going to train a little for the marathon (instead of just waking up and doing it).
  6. In a few weeks, I’ll be in “HOTlanta” to watch a friend graduate from OCS school. Congratulations Sako! It’s been a while since I’ve been out East, but I can’t wait for some Waffle House!
  7. From July 24-28, I’ll be in Portland, Oregon for the infamous O’Reilly Open Source Convention aka OSCON. I’ll be attending the Django session, two Ruby on Rails sessions, and of course, the Googs session. I’m hoping there’s a discussion about the distributed VCS’s ala Bzr and Hg. I’m also hoping I get to hang out and meet a few cool people in the open-source world.
  8. Finally, I’m working hard, or is that hardly working on http://www.wegoeat.com. I know, I know. It’s ghetto. But, with the help of Mr. Harper, it’ll be pimpr.com And… if you’re one of the lucky few to get invited for the beta release… ;)

Whew.

That’s about it. Once everything clears, I’ll add another tutorial or two about what I’ve been playing with in Django. Until next time!

Tagged: , , , , , , , , , .


Powered by Wordpress. Stalk me.