Video Editing With Gimp & MPlayer

The other day I tried to make a quick video of our Elf on the Shelf turning and winking at the camera. This was the final result:

I haven’t done any video editing like this before and I know that there are better tools for the job, but I wanted to stick with what I had. It came out OK for what it is! In summary, I recorded a video, split it into frames, edited the single frames and then put it all back together again. To have the elf turn his head I just removed the frames that included my arm reaching over to turn it’s head. The tools that I used on Linux were MPlayer/MEncoder and Gimp.

  1. Split the original mp4 into single frame JPGs. This will give you lots of JPG files with filenames in a numbered sequence:
    mplayer original.mp4 -vo jpeg
  2. Extract the audio for the original movie:
    mplayer -vc null -vo null -nocorrect-pts -ao pcm:waveheader original.mp4
  3. Convert the extracted audio to mp3:
    lame -h -b 192 audiodump.wav audio.mp3
  4. Edit the frames that needed editing with Gimp. This was just making a few frames with the pixels over the eyelid closing. I saved each new frame with a filename that put it in the correct order when listed alphabetically with the other frames in the sequence.
  5. Remove the frames that I wanted to hide (my arm turning the elf’s head)
  6. Assemble the edited JPGs into a new movie with the original extracted audio:
    mencoder mf://*.jpg -mf w=800800:h=453:fps=30:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -audiofile audio.mp3 -o new_movie.avi
Posted in Technology | Leave a comment

Morgan’s 4th Birthday Party

via Flickr http://flic.kr/p/djsGea

Posted in Uncategorized | Tagged , , , | Leave a comment

Two Years Since Last Blog Post

It has been about two years since the last time that I posted to my WordPress blog. I spent a few minutes today updating to the latest version of WP and considering why I even have a “blog”. I do think that I started this 7 years ago for some good reasons, though I’ve never posted anything all that important very frequently. Back in 2005 I wasn’t on Facebook or Twitter and it seemed like a great way to share things that meant something to me and maintaining a personal web page was starting to fall out of style. Since starting on LiveJournal I’ve migrated to a self-hosted WordPress instance and shared a lot to MySpace, Facebook, Twitter, Flickr, and a pile of other social networking sites to do pretty much the same thing. Through all that time on other social sites, having a self-hosted still seems like the most permanent way to keep a shared log of life events.. so I’ll keep the blog for now, maybe even make an effort to post more frequently.

I’m trying the WordPress plugin “leenk.me” to post links to my WP posts on Facebook and Twitter. Depending on the insignificance of my posts here, this may be bad etiquette… sorry in advance!

Posted in Personal | Leave a comment

Android 2.2 Froyo on my HTC Aria

Last night I got sick enough of running out of room for apps on my Aria that I finally decided to just install Froyo. Froyo, along with many other cool features, has a way to install apps to the SD card where there is plenty more room than on the phone itself. The process was way easier than I thought it would be, and after using it for a few hours seems just as stable (to me anyway) as the stock OS. These are the steps that I took to get Froyo installed:

1) Root the phone with Unrevoked3: http://unrevoked.com/recovery/ I ran this from Linux with no problem.. didn’t have to do anything other than start the application and plug the phone in.

2) Created a backup by following the steps here: http://forum.xda-developers.com/wiki/index.php?title=How_to_backup_or_recover_via_Nandroid (Note, the button combo for Aria to boot into recovery mode was holding down the VOLUME DOWN while pressing the power key while off.

3) From the menu, after backing up everything: Wipe Data

4) Wipe Dalvik Cache

5) Download the liberated_aria_FR007_signed.zip rom from here: http://forum.xda-developers.com/showthread.php?t=819715 and copied it to my SD card.

6) Boot up in recovery again and installed ROM from SD.

7) Booted Froyo! There were a couple additional steps to get the apps to the SD card, they are detailed in the thread from step 5.

Couple of notes: I suppose that I could have recovered my apps from a backup, but I didn’t, I just downloaded them from the Market again. Everything else that I needed (contacts/calendar/etc) were all stored in the cloud and were there again after setting up my google account. Don’t forget to read as much as you need to of the instructions.. I’m sure that I’m leaving out some detail that is covered there.

Thanks to everyone from forum.xda-developers.com and unrevoked for making this possible!

Posted in Technology | 2 Comments

Work Calendar on My Phone!

I was soo excited to get this working that I decided to post about it. So for a long time I have had to settle for a very non-cool way to look at my calendar at work, the reason – Microsoft Exchange. I hate Exchange. A lot and for a lot of reasons. One of those reasons being I am a Linux user and don’t use any Microsoft products regularly, and this causes a problem when I want to use my calendar at work. People schedule events and they go into my calendar, but I can not view them unless I log into this web interface thing that Exchange has.. which is totally lame. I want to set reminders and notifications on my desktop and see the calendar on my phone. BUT HOW!? This is what I did.. its long, and very hackish, but it worked good enough for me.

I use Mozilla Thunderbird 3.1.x for my email, so step one was to get some kind of calendar add-on. I chose Lightning.

This gave me a calendar, next step was to link it to Exchange, for this I used the Provider for Microsoft Exchange plugin.

And configured it to use my active directory credentials. Now I can see my work calendar from Thunderbird!!

Here is the ugly part. I wanted my HTC Aria (Android) phone to see them. On Android I use the Smooth Calendar widget to list my upcoming Google Calendar events, so I now needed to get my calendar from Thunderbird to Google Calendar. At first I thought I would just setup DAV in Apache on my personal web server (sortof like this) and use the Publish feature in Lightning to push the ics file to it.. but it appears that that does not automatically update, you have to manually press the “Publish” button every time, which is not good enough. I did find an outdated Thunderbird plugin called Automatic Export, which required a slight modification to the install.rdf inside of the xpi file to change the maxVersion allowed to install with.

That would write an ics file to the local disk every 15 mins. Once that was done I was able to setup a cron job to call curl and upload my calendar to my web server whenever I wanted:

/usr/bin/curl -s -u <username>:<password> -T /home/drunnells/calendar/work_Calendar.ics http://mywebserver/dav/

All that was left after this was to setup a new remote calendar in Google Calendar and configure Smooth Calendar on my phone to show those events!

Like I said, not pretty.. but it worked. It would be nice if Lighting would come up with some way to auto-publish whenever there is a change, then I could skip the whole auto-export/curl thing.

Posted in Technology | Leave a comment

Dryer Repair

As mentioned in a previous post, our dryer (Frigidaire GLGR341AS4) broke last week giving off a bad smoking smell. In an attempt to save a $60 “just to look at it” fee from the repair place I decided to attempt this one myself. This post is for anyone else who is googling for the same part number that might be interested in what my problem was. It turned out that there is a plastic duct inside the machine that had melted, probably due to lack of maintenance and overabundance of lint accumulation. Here are some pics: front panel, melted duct, repair job:

The first problem was figuring out how to open the dryer. From the front you can use a putty knife or something to push the clips that are about two inches in on the left and the right while lifting up on the top. The top then opens an there are two screws holding the front panel on on the top left and right of the front panel.

Once opened it was kind of obvious where the burning smell was coming from – the duct on the bottom was all melted. I was able to pull the duct off the panel.. whatever adhesive that was used at the factory didn’t put up too much of a fight. Once the old duct was off I ordered these parts from the local appliance store (Netzman’s):

  • Air Duct: Electrolux 131621900
  • Foam Seal: Electrolux 134417000
  • Maycor High Temp Adhesive: 055980

After cleaning off all the lint and residue from the front panel I did the best that I could to empty the rest of the ducts of all the lint, used the adhesive to glue the new duct back on and the foam seal to the duct. I let it dry all day and then gave it a try and TA DA – Fixed dryer! Total: $48.54.

Posted in Uncategorized | Tagged | 1 Comment

Stinky Basement and Blog Moved

Considering what news usually makes my blog, and how frequently it is updated, this is not a big deal. BUT, my basement smells like smoke. I think that the dryer is dying or the belt just burned out.

The bigger news is that I am making the first post to my newly relocated blog location: http://runnells.name

This is the url of our Family Blog now, I thought that it would be cool if Kim and I posted to the same WordPress blog as different authors, so I imported my old dustin.runnells.name posts and her myspace posts. Maybe not so cool.. but it was a a fun little project for the past couple hours while everyone slept. I rarely get time to do things like this anymore!

Posted in Personal | Leave a comment

Broken AC in my Civic

I’m posting this here for anyone who runs into the same problem on their Civic Hybrid and doesn’t feel like shelling out the $600+ to fix the AC.

Over the past few weeks my 2004 Honda Civic Hybrid has started making a horrible squealing sound, stalling, making a burning smell and the AC has been intermittent. My first thought was that the belt had just come loose or something, but the problem turned out to be much more expensive. After replacing the original belt (with the help of my wife’s small hands) with one purchased from the dealership (Part 38920-PZA-505) the squealing continued. Doing a little bit of research online it sounded like this could be due to the AC Compressor seizing up. I removed the belt, reached in and tried to turn all the pulleys by hand while the car was off, two moved and two didn’t, this confirmed for me that the AC compressor was locked up. Since I don’t have enough cash to get this repaired and I still need my car, I decided to bypass the AC compressor for now with a smaller belt. As I have never done anything like this before, I called on my dad’s auto expertise. We measured the new belt route with a string and found a part at Advance Auto Parts that would fit (Dayco Part #  3290040). Since I couldn’t find much documentation about doing this, I am providing a crude diagram of the belt routing for anyone else that might need it:


By drunnells at 2010-09-22

I hope this helps someone! Someday I’ll get the AC fixed.. but for now this seems to be working.

Posted in Personal | Tagged | 57 Comments

OAuth, J2ME and FireEagle

Recently I have started developing a web app to do some location based stuff.. but I’ll save that for another post. The point here is OAuth, J2ME and FireEagle. I don’t want to loose this information, so I’m posting it here, maybe it will help someone else someday too:

OAuth – Lots of services offer this for communicating with their APIs.

J2ME – Java on my phone. I don’t care for Java much at all and I am not good at it, but I do like the fact that I can write applications for my phone and install them without much hassle.

FireEagle – VERY cool “Location Broker” from Yahoo! I love the idea of being able to report my lat/lon to one place and allow other services to retrieve my location information from there to do what they need to with it. Running several apps on my phone that report my location back to whatever service they come from seems kind of stupid. How about one app to report to fireeagle and everyone else can ask fireeagle where i am instead of requiring me to run their own special app!?

There are a few FireEagle applications for J2ME already, but none are light weight enough for me to run on my phone 24 hours a day, most are mapping applications that happen to do FireEagle updates. I wanted just a simple update to FireEagle every so many minutes and if i traveled at all.. and I was stuck trying to write it myself. To talk to FireEagle’s API I needed to do OAuth in J2ME.. which turned out to be a bigger pain that I had hoped. J2ME is very very stripped down and doesn’t have any of the methods I needed to do any SHA or other encryption very easily without getting too involved with third party libraries.  Luckily FireEagle’s OAuth does let you do OAuth with a “PLAINTEXT” signature – no encryption needed! These OAuth transactions can happen over SSL, so I’m comfortable with it. It took me a while to figure out how to do OAuth with plaintext signatures on my own, and I experimented with it using curl first. Here is how I did OAuth for FireEagle using only curl.. hopefully this eventually leads to someone writing a better J2ME FireEagle updater than I have! :)

You will need the Consumer Key and Consumer Secret from FireEagle before proceeding. For this example I’ll use:

Consumer Key: myConsumerKey

Consumer Secret:  myConsumerSecret

And you’ll need some way to generate a unix timestamp and an “nonce”, which can be just a random string that you will never duplicate. Replace all occurrences of “myTime” and “myNonce” with something appropriate.

STEP 1: Retrieve a Request Token:

Execute:

curl  "https://fireeagle.yahooapis.com/oauth/request_token.json?oauth_consumer_key=myConsumerKey&oauth_version=1.0&oauth_signature_method=PLAINTEXT&oauth_signature=myConsumerSecret%2526&oauth_timestamp=myTime&oauth_callback=oob&oauth_nonce=myNonce"

You should receive a response like:

 oauth_token=theOauthToken&oauth_token_secret=theOauthTokenSecret&oauth_callback_confirmed=true

Your J2ME application will present the oauth_token to the user and ask them to enter it at the mobile auth url that you were given at the same time you got your consumer key and secret, probably something like https://fireeagle.yahoo.net/mobile_auth/12345. After your user enters the oauth_token they will be given a verification code, you will need that verification code from the user along with the oauth_token and oauth_token_secret for the next step.

STEP 2: Retrieve a more permanent Access Token that you will store for future use when making FireEagle transactions on behalf of your user.

Execute:

 curl  "https://fireeagle.yahooapis.com/oauth/access_token.xml?oauth_consumer_key=myConsumerKey&oauth_verifier=usersVerificationCode&oauth_token=theOauthToken&oauth_nonce=myNonce&oauth_timestamp=myTime&oauth_signature_method=PLAINTEXT&oauth_version=1.0&oauth_signature=myConsumerSecret%2526theOauthTokenSecret"

You should get a response like:

 oauth_token=perminantOauthToken&oauth_token_secret=perminantOauthToeknSecret

You can now store perminantOauthToken and perminantOauthTokenSecret somewhere, you will need them every time you want to do something for this user. You can safely discard of usersVerificationCode and theOauthToken and theOauthTokenSecret from earlier.

Step 3: Do something with the FireEagle API!

For example, if you want to post updated coordinates to FireEagle you can do so with the information you now have without encrypting anything with complex methods that will be difficult to reproduce in a simple J2ME application. Some FireEagle API methods  will require you to make a http POST request, which you can still do with curl for experimentation. Lets say your the coordinates you want to set are:

lon=-77.409813
lat=43.201931

You can update FireEagle with that information by executing:

 curl "oauth_consumer_key=myConsumerKey&oauth_token=perminantOauthToken&lon=-77.409813&lat=43.201931&oauth_nonce=myNonce&oauth_timestamp=myTime&oauth_signature_method=PLAINTEXT&oauth_version=1.0&oauth_signature=myConsumerSecret%2526myPerminantOauthTokenSecret" https://fireeagle.yahooapis.com/api/0.1/update

If all went well you will get something like:


<?xml version="1.0" encoding="UTF-8"?>
<rsp stat="ok">
  <user  token="bba6Y0a86WaV" located-at="2010-03-24T05:37:59-07:00"/>
</rsp>
<!-- api1.bh.sp1.yahoo.net  uncompressed/chunked Wed Mar 24 05:37:59 PDT 2010 -->

And that covers it.. with that I was able to write up a crude J2ME FireEagle updater. Hopefully this helps someone someday!

Posted in Technology | Leave a comment

Vacation!

Its 5:30 and I now have a week off! Since its been a nice long four months since my last post I guess I have some catching up to do.. and will probably miss most of the important stuff, if there was any. If you follow me on Twitter or Facebook this is all stuff you probably already know :)

Family Events: The kids are growing fast! Sawyer is talking about everything AND he plays a few games on the Wii and a racing game on Xbox. I think that he also said his first swear word.. but we are going to try and forget about that. Morgan is even starting to play the Wii and doing a little bit of talking now, she has a few words down pretty good including “Dada”, “Mama”, “Baba”, “Kitty”, “Hot”, “Cold” and “Meow”. I don’t think that the kids are huge Thomas The Train fans, but we have an electronic Thomas train set that we will be buying additional track and cars for to give on Christmas that we all enjoy playing with. OH, AND we found out that our baby due in April will be a BOY!  We are planning to do a home birth again if all continues to go smoothly, the only pain about that (for me anyway) is the insurance company – CIGNA. When Morgan was born in 2008 UnitedHealthcare covered us 100% after only a little back-and-fourth. CIGNA on the other hand is not being as nice about it.. but I think that NY State law is on our side and we will be covered in the end.With the third child on the way we needed to upgrade Kim’s truck to a van – a Kia. So on top of all of our other bills, we now have a more expensive auto-loan to pay for. Oh well.. I’m getting used to the debt and being poor I guess. To add to that, we now have a cat with no name.. exactly what vowed never to get after having to find a new home for our ferrets when Sawyer was born, but sometimes family life isn’t about me and what I believe are the right choices I guess! Seemingly related to all this, but possibly not, I am now on blood pressure medication to try and control my chronic high blood pressure.. something my doctor and I had talked about years ago, but I initially resisted.. but I don’t think that I can put it off any longer. So far it seems to be going well.. we’ll see though.

Other: I’ve been trying to do some “casual” life-logging lately to keep a digital record of things that I would usually forget, but might need to recall someday. I’ve been using a free Evernote account for this, and so far it has been pretty awesome. I can scan in documents, or jot them down with my Livescribe pen and be able to search for text within them from their web gui or my phone! I’ve also tried to tie it together with my social media accounts using Tarpipe, which is another cool site that I would recommend if you use Evernote, Flickr, Twitter, Facebook, Delicious and other such sites. For this vacation I have a pile of tasks that I’ve been trying to keep track of with RememberTheMilk.com.. we’ll see how well it works out as a to-do list over the next 9 days.

Oh yeah, I also tried some J2ME programming for my phone over the last couple months. If anyone is interested I wrote a little app to run in the background while you take pictures with the Samsung Eternity to geoTag your photos. I posted it here.

Posted in Personal, Technology | Tagged , , , , , , , , , | Leave a comment