Want to play with Google Buzz before they get it rolled out to your GMail?
The magic of Google Chrome can hook you up.
Create a shortcut to Google Chrome on your desktop, righ-tclick on it, select Properties, and then paste this after everything in the 'Target' field:
--user-agent="Mozilla/5.0 (Linux; U; Android 2.0.1; en-us; Droid Build/ESD56) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"
(That's two dashes before user-agent, not a hyphen. I can't figure out how to get my auto-formatting to display it properly. Also, you might need to replace the quotes with non-"smartquotes." Smartquotes are DUMB.)
Then go to m.google.com and click on Buzz. This will, however, make all pages Chrome loads behave as if you're browsing them from a Motorola Droid, so it's advisable to make another desktop shortcut with user-agent="" to reset everything.
UPDATE 2/11/2010: Updated the included unswindle to the latest version, fixes errors on unDRMed books.
UPDATE 2/27/2010: Added specification that users install the 32-bit version of python 2.6 for Windows, even on 64-bit systems.
UPDATE 4/30/2010: Added link to older version of Kindle for PC
People have been asking me if there's a way to convert Kindle books downloaded with Amazon's Kindle For PC application pretty much since the day it was released. Sadly, despite a lot of tinkering on my part, there was no elegant solution* until now.
3) Open the unzipped folder and double-click unswindle.pyw
Kindle For PC will now open.
4) Select the book you want to convert.
5) When the book loads, simply exit Kindle For PC
A 'Save' dialog will open asking you where you want to save your new decrypted .mobi file. And we're done.
(As it uses mobidedrm, it still won't work on Topaz/.tpz files, and the first one I tried happened to be one. Still, most books will work.)
*: I did work out a scheme wherein you record video of your desktop, scroll through the book in Kindle For PC, remove all duplicate frames from the resultant video and then convert to PDF, but it was rather unwieldy.
I've just discovered something kind of cool: if you want to place and receive free Google Voice calls via your computer, leaving your phone out of the loop altogether, it's now possible to skip the installation of Gizmo, relying instead on the functionality already present in GMail.
I was playing with the settings for Gizmo while trying to improve my method of making free, minute-less VOIP calls from my Android phone and noticed that it now has the option to forward some or all calls to your Gizmo number over to Skype or Google Talk. If you opt for Google Talk -- and if your operating system supports it1 -- you can answer/place calls just using GMail's chat system. It's as easy as when you try to find o2 Mobile Phones, there's nothing complicated about opting for Google Talk. No otherwise-unused software to install at all.
1a) Create a Gizmo account here (if you don't already have one)
1b) Configure Google Voice for use with Gizmo following these instructions (if you haven't already done so)
3) Scroll down to the 'Forwarding' section. It looks like this:
4) Select 'forward all calls' and put in your GMail username in the appropriate field and Click 'Save.'
That's all the configuration that's required.
Now when someone calls your Google Voice number, in addition to your phone ringing, your GMail (or Google Talk desktop client) will beep at you telling you a call is incoming.
If you want to place a call, you just need to use Google Voice's web interface. Click 'Call,' put in the desired number, and then select your Gizmo number as the callback number. Your GMail will then ring. When you answer it, you'll hear the number you just dialed ringing.
1: Unless you're a freak like me running some crazy non-Windows, non-Mac operating system you'll be fine. If you are a freak like me, you can either keep using Gizmo, or have Gizmo auto-forward your calls to Skype and do it that way.
Today, after some tinkering, I accomplished something of which I've long dreamt: placing a Voice-Over-IP call, from a real phone number to a real phone number, from my Android phone, using only my 3G/EDGE data connection. No plan minutes or hosted PBX phone service involved.
Here's a brief how-to (that's not even dependent upon having an Android phone):
1) Get Google Voice. (This step is going to be kind of a buzzkill for most people, as Google is still in some sort of indeterminate closed beta with the Google Voice system. I'm not exactly sure how I ended up with access, so I don't know what to tell you to do to get it too.)
3) In your Google Voice settings, add the 'SIP' address that Gizmo gives you to your Google Voice account, selecting 'Gizmo' as the type of number. (Detailed instructions.)
4) Install a Gizmo-compatible client on your phone. The folks at Gizmo have written clients for many popular phones. You can get one at http://gizmo5.com/pc/products/mobile/. If your phone supports 'J2ME,' then chances are they've got you covered.
(On Android, I installed 'sipdroid,' which isn't a Gizmo-specific application, but one that can handle any Voice-Over-IP service. (You can find sipdroid in the Android Market, but that version only works via wi-fi. Get the full version which supports 3G/EDGE calling via their site.) Configure it using the info from the Gizmo support page.)
5) Use Google Voice's web interface to tell it to call whatever number you want, selecting your Gizmo number as the one to ring when connecting. (Gizmo offers incoming calls for free; telling Google Voice to initiate a call and ring your Gizmo is technically an incoming call, even when you're calling a friend.)
6) Tell the Gizmo client on your phone to answer the call. You're now connected, and you're not using any minutes.
A nice side-effect of this Gizmo compatibility is that you can run Gizmo clients on any computers you have around. When someone calls your Google Voice number, all the computers will 'ring' as well as your cellphone, so you can answer it from one of them instead. More minutes saved.
There are things on Usenet that you want to download regularly. Doing so is a time-consuming chore that'd be better accomplished through automation. This guide aims to show you how.
The problem with Usenet is that, even with the requisite utilities, you still find yourself manually extracting RAR files, applying PAR2 files to regenerate missing chunks, and then disposing of all the compressed/encoded files after extracting your media file. Not to mention seeking out and downloading every episode of everything you want to download. It's not for the faint of heart.
Here's where it gets awesome, though. There's a free, open-source application called SABnzbd+, available for every platform, that does all that for you. Even awesomer, it can monitor RSS feeds and watch for user-defined strings in the filenames to facilitate the automatic downloading, unpacking, repairing, renaming and moving of files into your media library with zero intervention on the user's part. After setting up SABnzbd, the content you want to download is magically downloaded FOR you, with no intervention on your part. This is the future, and it is AWESOME.
To get started with your magical new life of automatic content delivery, you first need a Usenet account. And, you're probably going to want a 'premium' account, meaning that you'll have to spend some money every month. There are many different options when choosing premium Usenet providers, but I recommend Giganews. They even have a free trial, allowing you to see how awesome this whole thing can be. You can sign up for your free trial by clicking the nifty banner below. (We'll supposedly get referral credit or something if you end up being a paying customer.)
The next thing you need to do is install SABnzbd on a computer in your household. On Mac/Windows it's a super-easy installer, and it runs using a web interface rather than a GUI. Upon installation you'll need to specify the username/password for your Giganews (or other Usenet provider) in the Config tab.
The next stop is giving SABnzbd one or more RSS feeds to monitor looking for things to download. There are many different options for sites that provide RSS feeds of nzb files. A quick Google search can help you find one that has the type of content you're looking for. Once you add a feed, you can enter in names/words in filenames to either 'accept' or 'reject.' SABnzbd will then periodically check the rss feed, and when it finds an nzb that matches your rules, it queues it for download.
You then configure the Folders option to specify where you want finished downloads to end up. That's really all there is to it. Now your computer will periodically check any configured RSS feeds for things it should download, and when it finds something, it just does. And then it decompresses, repairs (if necessary), and then gets rid of the compressed stuff. No muss, no fuss. Set it and forget it.
An average 360meg file downloads in about 2 and a half minutes. But you don't care how fast it is because it'll just be there waiting for you automatically.
An added perk, is the SABnzbd Firefox extension , which gives you a constant indicator of things that are downloading, right in your browser's status bar -- and also the ability to click on any nzb file from any nzb search engine and have SABnzbd automagically start downloading it, even if you're surfing from a different computer than SABnzbd is running on. Very awesome.
UPDATE: I've now written an app for Android phones that will allow you to queue nzb files on your SABnzbd installation: NZBdroid
Update: This tutorial is largely superseded by the much nicer and easier 'Kindle For PC' method: see it here.
UPDATE 2: included Preston Lee's online PID generator.
D got a big fat tax refund, so she recently bought one of those new-fangled Amazon Kindle thingies for purchasing and reading books in an electronic form. (She loves it.)
I like to read books in an electronic form on my iPhone, but find that it's pretty hard to come by them legally; there are many different sellers and formats, some of which have certain books but not others. Sometimes they have the book, but not in a format I can do anything with. It's generally easier just to illegally download them from torrent sites.
Amazon has tons and tons of books available for Kindle, and have chosen the standard MobiPocket format as the one their reader uses, meaning it is theoretically trivial to purchase them and convert them to something else. Except that they won't sell them to you unless you have already purchased a $400ish Kindle on which to read them. Meaning you don't need to convert them...
In any case, now that our household has a Kindle, it frees me up to purchase books from Amazon in Kindle format without actually having a Kindle myself. I then just remove the DRM that Amazon puts in the files (to keep people from converting them, natch), and then convert them to HTML or txt to read in Books.app on iPhone. Want to know how to do the same thing?
Step 1) Find someone with a Kindle.
Step 2) On their Kindle, go to the Settings menu, and type '411' on the keypad. This will bring up a little information dialog with a bunch of things in it, of which you only need the Serial. It is a 16-character string of letters and numbers. Write it down.
Step 3) Ask the Kindle's owner to buy a book for you. Give them some money so you don't look like a mooch. Once you've given them the money, ask them to log in to their Amazon account and navigate to their 'Kindle Downloads' page from your computer. When they complain, mention that you've already given them money. The Kindle Downloads page will list all the books they've purchased, and yours should be right at the top. Click 'Download to computer' and you'll get a file named 'Title-of-Book.azw'
Step 4) Download MobiDeDRM.zip, which is a small suite of Python scripts that some kind soul wrote and then distributed through links that expire all the time and can be kind of a pain to track down. I've hosted them from my site so that they won't expire. This .zip file contains mobidedrm.py, mobidedrm2.py, kindlepid.py and mobihuff.py.
(These scripts require that you install Python on your system, which is something outside the scope of this howto. I'm on linux, but there's a Python for Windows called "ActiveState Python." Google will help.)
After unzipping the archive, open up a terminal window and pass the Kindle's serial # (which you previously wrote down) to kindlepid.py. Something like this:
python kindlepid.py XXXXXXXXXXXXXXXX
Where all those Xs are replaced with the Kindle serial number. It will return something that looks like this:
Mobipocked PID for Kindle serial# XXXXXXXXXXXXXXXX is Z1QFCDQ*74
where my 10-character gibberish string is replaced with the one you made note of in the last step. This will take about a minute, and when it finishes you'll see:
Decrypting. Please wait... done
Now you will have a decrypted MobiPocket-formatted ebook that you can read in any MobiPocket reader.
If, however, you want to convert it to HTML to read on any device you wish, you'll want to install MobiPerl. (This, of course, will require you to install Perl. MobiPerl's website will walk you through that.)
6) With MobiPerl installed, do this:
This will create a directory named 'unpacked' that will contain Title-of-Book.html
Things that can go wrong:
Amazon seems to compress longer books in a slightly different manner than shorter books. If your resulting .mobi file and/or .html file are oddly gibberishy (for example, if the first line starts in the middle of a sentence, and clearly not the beginning of the book), let's go back to step 5.
Step 5b) These 'huffdic-compressed' books require a slightly different script to remove the DRM. Do this:
This script will output the .html file in the directory from which you are running it.
All in all, this is as much of a pain as it looks, but the selection and availability of books on Amazon makes it worthwhile to me. They have far more books than The Pirate Bay does, and I feel better paying for them
Update: several readers have alerted me that there's a much newer version of mobiDeDRM available. You can download it here.
I've been recently toying with OpenID stuff, and found that it is far more useful than it seems at first glance. What's not apparent is that if you have a website, you can configure things to use its URL as your OpenID even if you're using AOL/LiveJournal/MyOpenID.net/etc for your OpenID authentication. This allows you to re-configure it at a later date using any service you'd like, without having to change your OpenID sign-in info. It doesn't get much more "open" than that.
It's kind of complicated, and it requires a fair bit of reasearch to find the info you need to make it work, so people who are aware of this functionality probably don't care enough to do the work. It's with that in mind that I've done the research and created a little configurator-thingy to make it as easy as possible for anyone hosting a website to set this up.
Introducing MOREopenID.org. One selection and two input boxes gets you one file to upload to your server and a short block of tags to paste into your website's head section, putting you in complete control of your OpenID identity forever. If you decide to change OpenID providers at some point, simply come back and do the steps again.
Things are still pretty rough at this stage, so I'd appreciate it if you wouldn't social-network it to death (yet) or anything, but I'd be much obliged if you'd try it out and give me feedback on what I should do to make it better -- and especially so if you have any problems. If any part of it at all is confusing, I would like to hear about it.
Tired of nearly every video I watch on YouTube and Google video being displayed at the improper aspect ratio, I decided to do a little testing to determine just what you need to do to get your widescreen video to display correctly on these web video services.
First up, I decided to see whether either of these services respected the aspect ratio flag video encoders can set to alter the aspect ratio at playback time. This is most commonly seen on so-called "anamorphic" DVDs, where the video is encoded at 720x480, but is scaled up to 854x480 to display the picture at the proper 16:9 aspect ratio. This is the most efficient way to encode content, as you get the benefit of both a smaller resolution and proper widescreen playback. The problem, however, is that many lazily-coded applications such as freeware DVD rippers, freeware screenshot grabbers, Windows Media Player, etc ignore them completely, choosing to instead display them at the resolution at which it was encoded rather than the one at which it's supposed to be played back. This results in tall skinny people -- and one very annoyed internet curmudgeon. (That's me.)
With this in mind, I crafted a short video that's encoded at 320x240, but set to display at 426x240. (426 / 240 = ~1.78 = 16 /9)
It looks like this:
I then submitted said video to both YouTube and GooVid, resulting in this:
As you can see, this worked OK, but it's less than ideal. You have to increase the size of your file by encoding black bars, not to mention the extra effort required to add them. There's got to be a better way. Let's just try encoding the video at a resolution that matches the aspect ratio. I chose 426x240, but you can choose any resolution you want; just make sure that when you divide the width by the height you get as close to 1.78 as possible. As an easy reference, just take the desired height of your video, and multiply it by (16/9) in your calculator. (240 * (16/9) = 426) This is the proper width to which you'd scale your video. Let's take a look at the results:
As you can see, this works flawlessly on both GooVid and YouTube, and is the best method to follow when preparing your widescreen video. No black bars. No fuss. No muss. (Hint: you can also use any aspect ratio you want. If your clip's aspect ratio needs to be 1.5:1, then just encode the video such that the width is 1.5 times the height. So: 400x266.)
If you'd like to do the same test on any of the other video sites I don't have accounts on, I've provided the videos below. If you do these tests, please let me know the results so I can update this page with them.
UPDATE: Emalyse submitted the test videos to dailymotion, wherein we learned that they too ignore the aspect ratio bit, and both pre-letterboxing to 4:3 and setting the video resolution to a 16:9 aspect work perfectly. Dailymotion goes one step further, not bothering to add in letterboxing, rather it just displays the video at the proper aspect. On Dailymotion the properly aspected resolution option becomes even more attracctive than the other video services.
Tired of seeing this every time you use Firefox's built-in RSS handling to add a site's feed to your Google Reader account?
Me too, so I figured out a way to get rid of it. Now I'll show you how too.
Simply type 'about:config' into your url bar, and as soon as all that scary-looking stuff loads, scroll down until you see 'browser.contentHandlers.types.2.uri', and then double click it.
A dialog will pop up asking for a uri, and will be pre-filled with 'http://fusion.google.com/add?feedurl=%s'.
Simply replace it with 'http://google.com/reader/preview/*/feed/%s' then restart Firefox.
Next time you click on an RSS feed, you'll see a preview of it in Google Reader, completely bypassing the option to add it to your Google homepage.
Note: You'll need to actually click the 'subscribe' button in the preview window to subscribe, so the sum total of clicks will be the same, they just won't be dealing with Google's bad UI decision. Besides, it's nice to see the contents of the feed before committing to it. I routinely change my mind if a feed is only a partial-text feed.
So you've got your blog all set up, you've been publishing for a while, and all of a sudden you learn that people have been "hotlinking" to your images. This outrages you, so you set up an .htaccess rule to replace any "hotlinked" images with a graphic that says "Stealing Images Makes You A Jerk!"
That ought to teach those jerks for stealing your images... right? Sure it will, but I've got a question for you: Do you have an RSS feed?
Oh, you do?
Well, you've also just prevented all those "jerks" who subscribe to your feed from "stealing" your images too. Wait, you want them to be able to see your images? Of course you do.
The trick is to set up your .htaccess file to allow certain websites to be able to display your images, while blocking everyone else. You'd do it by making your .htaccess file look something like this:
What that does is look to see if your image is being loaded from some other website. If it is it then checks to see if that website is one of the "approved" ones. If the site in question is in the list, the image is displayed normally -- but if it's not, your "Do Not Steal" graphic gets displayed instead.
That list is all of the online RSS aggregators I know of. If you want to add your friend's site to your approved list, just copy one of the lines up there, substituting in the proper domain name. Don't include the "www," because that little "(.*)?" will match that if it's there.
If you use a reader that's not in that list, let me know so I can update the list here.
I'd just like to take a second to say that if you've ever tried to do a one handed shuffle while making sure your shot is framed and your camera isn't running out of space and trying to mentally think about what you're saying and indicating with your hands, then you know just how difficult this is. I left in me spraying cards everywhere in so that you can see that while it happens alot at first, it happens less frequently as you get better. I'm pretty good at it, but it still happens to me.
During editing, I found that my verbalizations are neither coherent nor grammatically correct. I feel kind of stupid about saying things George W. Bush says from time to time, but I now understand what causes him to do it. "A little bit more fancier," indeed.