Wednesday, July 23, 2008

iPhone review

Well my script actually worked and did score me an iPhone. Ran it and noticed the Short Hills mall had all three versions in stock and my wife went over. Turns out I had to be there to because I was the primary on the previous account so I left work a little early.

First impressions are that it's awesome. The main reason I got it was for the integration between it and the mac. So far everything has been seamless. I first went into the mail app on the phone at the mall so I hadn't synced up yet. First, you select Gmail, put in my gmail username and password and that was it. I saw no apparent way to add other mail accounts and was a little bummed at first. My fears were for naught as when I later synced with my mac, it pulled in my other mail account. Right now I can just pull but there are services to push (MobileMe being mac's solution) but I'm not that concerned about it yet.

Calendar integration is seamless as well. Syncing with my mac synced all my schedules to the iPhone. Haven't had it that long to tell if there are issues, none have popped up yet so we'll see. Same with my contacts from the Address Book. The only downside was I hadn't updated address book in a while so some of my numbers weren't in there. Definately not the phone's fault though.

There are a lot of apps available on Apple's AppStore, some are free, some are reasonable and some are outrageously priced. I'll start with the free ones first.

Pandora - This is the online radio station pandora. It's free but amazing. Experienced a couple hickups on the way to work this morning where only part of a song played and then skipped. (I'm guessing didn't fully download or something) But for the most part worked well for my commute. I highly recommend this app.

MobileNews - This is basically just a news source for Associated Press news. I've avoided the NYT app because people seem to be complaining that it's slow. MobileNews has been pretty good. My area is not supported for the "Local News" feature and the interface could use some polishing but it's not bad. They also have a web based version which is optimized for the iPhone.

AIM - AOL instant messenger for your iPhone. This was actually the first app I installed to let my coworker know I got an iPhone. Not spectacular but not terrible. Basic instant messaging.

Tomatoes - This is the Rotten Tomatoes website's app. Starts with a text box for you to type in a movie. Typing in a movie then searched for that movie in their database. Gives you a basic summary of the movie and their rating. Summary is only one iTunes screen high. Clicking on the movie name at the top brings you to the web page for said movie but in doing so, exits the Tomatoes app and brings you to the Rotten Tomates page for that movie. Probably wouldn't be terrible if the page it takes you to was optimized for the iPhone but it's not. Will probably use as a quick reference for movies I'm not familiar with. Could be better.

PhoneSaber - Ok, no point to this, it's a lightsaber, you can pick your color beam and swing your iPhone around to make lightsaber sounds. Pointless and a waste of space but I still have it on my iPhone to uhhh... show people how useless it is, yeah, that's it.

Now for the paid apps, these are ones I've actually spent money on. To be fair, I have a credit card that gives me reward points in iTunes cards so I haven't really paid for it, but in a way I have.

Crash Bandikoot Nitro Kart 3d - Graphics are very good and you tilt the phone to turn. Very addictive. Nice use of the controls.

Monkey Ball - Another pretty cool game that uses the motion features of the iPhone to tilt the platform. This moves a monkey in a ball and you go around picking up bananas. A little tricky to get used to but fun.

Well that's it for the Apps I'm going to review today. I have a few more apps on my phone but haven't used them enough to tell if I like them or not yet. So stay tuned. Overall the iPhone has not disappointed.

Monday, July 21, 2008

iPhone availability

UPDATE: Looks like apple changed the link to a PHP page. Not sure of all the details, maybe they are actually checking the time on the server end instead of just relying on some javascript. Oh well, I got mine. :-p

So my contract is finally up with Sprint so I can now leave them without paying any penalties. Avoid sprint like the plague. Nextel was decent until they merged with Sprint, but that's a much longer rant than the cool info you'll find below.

So I've decided to ditch Sprint in favor of AT&T, primarily so I can get an iPhone. Apple has an iPhone stock bit on their web page. Go there after 9pm and you can see if a store is expected to have an iPhone in stock the next day. I do not always get on my computer after 9 for whatever reason so I thought I would script something to just scrape the page and see if the store will have it available. I found something even better.

http://www.apple.com/retail/

Go ahead, find a store near you and look at the source, I'll wait. See it? Yes, that bit of javascript where it calls: http://www.apple.com/retail/iphone/feeds/3g_us_inv.json

That file appears to not only have if there will be an iPhone available, it also has which models it expects to have available. The only other thing I could wish for would be the quantity, but now I'm expecting too much.

So what do we do with it? I'll show you what I did. First, we'll use python because it's cool and makes stuff like this easy. Second, since it's a json formatted file, good choice apple, we'll use simplejson. Got all that? Good, let's script this sucker.


import simplejson, urllib
url = u'http://www.apple.com/retail/iphone/feeds/3g_us_inv.json'
availability = simplejson.load(urllib.urlopen(url))


Ok, that basically downloads the json file and parses it into a nice little python data structure which we called availability. Now, I'm really only interested in certain stores in NJ. So, I do a loop like the following:

for store in availability['locations']['NJ']:
print store['city']


There seems to be available: url, city, storeid, available. Available then lists each type of iPhone (white16, black8, black16) and a true/false if it is available or not. So go forth and script to your heart's content. To be nice, here my final script:


import simplejson, urllib
import smtplib

MAIL_USERNAME = ''
EMAIL_FROM = ''
EMAIL_TO = ''
MAIL_PASSWORD = ''

url = u'http://www.apple.com/retail/iphone/feeds/3g_us_inv.json'
availability = simplejson.load(urllib.urlopen(url))

interested_stores = [u'Rockaway', u'Short Hills', u'Bridgewater']

msg = "From: %s\r\nTo: %s\r\nSubject: iPhone availability\r\n\r\n" % (EMAIL_FROM, EMAIL_TO)
has_iphone = False

for store in availability['locations']['NJ']:
if store['city'] in interested_stores:
if store['available']['black16']:
msg += u'%s has black 16Gb iPhones available\n' % (store['city'])
has_iphone = True

if has_iphone:
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(MAIL_USERNAME, MAIL_PASSWORD)
server.sendmail(EMAIL_FROM, EMAIL_TO, msg)
server.quit()

Tuesday, July 15, 2008

Using git

Things I like about git over subversion.

1. Branches are easy... no, really easy, just do a branch for every feature. Go ahead, you know you want to. 'git checkout -b coolfeature' It's just that easy.

2. Only check in part of a changed file. 'git add -p' It then prompts you line by line if you want those changes added or not.

3. It's fast!

Monday, July 14, 2008

Firefox Extensions

Here is my list of firefox extensions I use.

Firebug - The coolest extension i have for firefox. I use this to debug javascript and css all the time. If you develop for the web at all, you need this tool!

Tamper Data - Change things like POST variables. Primarily used for testing purposes.

Aardvark - I use this primarily to remove elements from a page before I print it.

MeasureIt - How long is that box and why doesn't it match my css?!?!? This tool helps you measure elements on the screen.

Download Statusbar - Get rid of that extra window, see your downloads at the bottom of the screen.

DownThemAll - Helpful for sucking down all the images from a page. (Even if they are links to images) Also has a few other advanced downloading capabilities.

Dummy Lipsum - Let's you insert Lipsum into a text box.

Foxmarks Bookmark Synchronizer - Synchronize bookmarks between computers. What's special about this is that you can use your own server so you don't have to sign up for another account somewhere.

Greasemonkey - Allows you to write or download scripts that alter web content. Sounds confusing but there are a lot of nice scripts out there to make the web a better place.

Html Validator - Useful tool to make sure your web page validates according to the W3C standards. Even works on pages that are not publicly accessible.

LinkChecker - Checks all the links on a page to make sure they are still valid.

NoScript - Stops javascript except for pages you allow. Can be annoying at first but once setup properly, reduces your chance of getting infected by malicious javascript.

Torbutton - Nice way to activate/deactivate using Tor.

Web Developer - Some useful tools that a web developer might find handy.

YSlow - Used in combination with firebug to determine how efficient a site is. Don't take everything at face value though, your little blog probably doesn't need a CDN. Also seems to now come with a javascript validator.

Essential OS X Widgets

This list will be short because I really don't find most widgets to be all that useful. These aren't necessarily "essential," just ones I use.

iCalEvents - This looks at your iCal events and displays upcoming ones. While I use my MenuCalendarClock more, it's handy to have when I'm in dashboard.

Weather Underground Widget - Shows you the weather forecast. While I still don't trust meteorologists... (where are the meteors?!?!? They must be hiding them.) I find I trust these guys a little more than the average meteorologist. Handy to see upcoming weather.

Aviation Weather Widget - Using this primarily to learn how to read METAR data.

The Analog Clock Widget - Just because.

Homer Quotes - A little humor.

Stickies - Keep little notes. I primarily use the Stickies.app for most things but I have a few things on my dashboard sticky.

iStatPro - Cool widget to display various system info.

I have others installed but never really use them. I feel that once I get an iPhone, most of these will fall into serious disuse.

Friday, July 11, 2008

Essential OS X Software

There have been a few people who have gotten mac's lately and I'm getting tired of forgetting to recommend a really cool app to them. Therefore I've decided to create my essential OS X application list. These are all applications that I feel are vital that do not come with the OS. I'll cover useful built in ones, widgets (both included and add-on) and Firefox plugins later.

Open Source or Free software:
Adium - Open Source multi-protocol instant messenger application. Really good instant messenger program. Does not do Audio or Voice so I still occasionally use iChat but otherwise, I use Adium.

Burn - A free tool to burn DVDs and CDs. Sure, you can do most with the built in OS X tools but this makes it a lot easier. Also it's free so uhh... go install.

Chmox - Ok, it's not great but it's the best chm reader I've found. It really needs the ability to search though. Plus it's a native OS X app so no need to have the X running or anything.

coconutBattery - Not really essential but shows you how badly you've abused your batter. Nice to know your not going insane and your battery really doesn't last as long as it used to.

Firefox - If you don't know what this is, come out of your cave, it'll be ok. If you haven't already go get this. Safari is nice but the plugins available for this make it really shine. I'll go over essential plugins later.

Google Earth - Another non-essential app but fun none the less.

Handbrake - Want to take a DVD with you, don't want to save a 4Gb iso? Convert it down to something a little more reasonable with this tool. Will also convert to iPod formats for really portable movies.

Miro - Like TV, for your computer. This lets you download most video podcasts and has a nice little directory of them. Can also be used as a torrent downloader so you could subscribe to your favorite TV show at say tvrss.net.

Growl - System message notifier. Ok, doesn't sound like much and probably won't change your life, but there are a lot of applications that will send notifications to growl to display. Useful to let you know at a glance when something is done downloading, you receive a new IM or E-Mail. Handy tool to know if something needs attention now or if it can wait.

NeoOffice - This is a macified version of open office. If you are like me, you don't deal with office documents that much but every once in a while someone will send you one. While some features are missing, I haven't noticed anything I really miss. Especially good for the casual user. If you really need to, Office is available for the mac, but this is a good free alternative that is worth trying out.

Quicksilver - In a nutshell, it's an app launcher. Though that's not doing it justice. I use this all the time but it did take me a while to get used to it. I had to force myself to start to use it and then discovered it's power. Can really speed up the time it takes you to do things. Worth watching a few tutorials and trying it out. Lots of hooks into programs (like the address book, mail, iTunes, etc...) to make it really useful. I can't do it justice, search about it and give it a try!

sshfs - If you use ssh, this is cool. Allows you to create a drive mapping that is really just an ssh connection. If that doesn't make sense to you, you can probably skip this app. Will probably need to install MacFUSE first.

Transmission - Lightweight Bittorrent app. If you use bittorrent at all, this is a handy application to have. It's lightweight and pretty full featured.

Truecrypt - Open source tool to create/mount encrypted volumes. Can also be used to encrypt entire USB flash drives. Keep your private data secure!

Tunnelblick - I have mixed feeling about this, it's a bit buggy and crashes on me all the time whenever the network hiccups but it's a nice easy way to get OpenVPN on your mac. Even gives you a little icon in the menu to connect to your servers. If you don't know what OpenVPN is, you can safely do without this. If you use OpenVPN, this is a nice tool to have.

Vidalia - Tool to use Tor. I don't use it that often but if you're looking for anonymity online, it's the first place I would start.

Vienna - RSS/Atom reader. This is how I get my news and my daily Dilbert fix!

Vim - Text editor based on good old vi. I'm sure most people will not really use this but I find it essential. A bit of a steep learning curve, but once you learn it, you won't want to give it up.

VLC - This video player will play almost anything. Much better than quicktime or iTunes for playing videos. Will also do audio for when you want to listen to a song (or audio stream) without adding it to your iTunes library.

X-Lite - Free SIP based softphone. If that makes no sense to you, you can probably skip it. Not the best app I've ever used but so far the best softphone I've found.

Commercial Software:
With quality open source software out there, I don't like paying for software when I can help it but sometimes something really good comes along and I just have to suck it up.
MenuCalendarClock - This beefs up your clock to add a calendar that integrates with iCal. It's very cool and there is a free version so go check it out. At the very least, go look at the preview pics on the site.

Adobe CS3 - Let's face it, if you deal with graphics, you need this. I shouldn't have to say any more and it's one of the main reasons I tried a mac in the first place. Ability to install Photoshop and have all my Unix tools, I'm in!

iBank - Personal finance program. I tried using Quicken, I just had issues downloading from my banks and gave up. iBank doesn't have all the same features yet but I've been able to download from my banks pretty flawlessly. Very mac-like interface as well. (Tip: put the ibank file on a truecrypt volume (see above) to keep your banking records safe)

iWork - Ok, I guess now I'm really turning into an apple fanboy. Very much presentation oriented. Does not have all the features of their office counterparts but can be used to create really great looking spreadsheets, documents and presentations. Combine this with the open source neo office (see above) for those office docs people send you and you should be set.

Mac the Ripper - I put this in the non-free section because while there is a free version, you really need version 3 which seems to not be free. Though if you look hard enough, you should be able to find version 3.0_r14 without too much difficulty. Helps you get around most copy protection and then you can use handbrake (above) to reduce the file size.

OmniGroup - There are a bunch of apps here, some better/more useful than others. If you are a Getting Things Done fan, definately check out OmniFocus. I just started playing around with it so we'll see how useful I find it. OmniGraffle is a good replacement for Visio if you need to do diagrams. I've used it a little but I don't make a lot of diagrams. I'm going to try and use it more to make better documentation. OmniPlan is a good project management app that I'm also going to try and start using to get organized.

Transmit - Ok, I resisted this for a while, used FUGU (which isn't bad) but as an all-purpose FTP/SFTP client, this really can't be beat. Simple interface, easy to use. If you transfer a lot of files, this is a really nice app. If you don't FTP/SFTP a lot, then you can probably do without.

VMware Fusion - Ok, I don't use this to run windows, but I do run linux on my mac with it to test things. One day I will probably use it to run windows on my mac for IE testing purposes but I've been putting that off because I really just don't want to use windows anymore.

VueScan - Utility to interface with most scanners. I find this to be better than the tools that come with most scanners. Still not great but so far the best scanner utility I've used.