Wednesday, July 29, 2009

Enabling URL Autocomplete in Firefox 3.5.*

Chrome and Safari has this nifty feature enabled by default... as you start typing in the Location bar entries from your history and bookmarks are autocompleted into the field.

Apparently you can also do this in Firefox 3.5, but it is disabled and hidden away in about:config.


To enable this, pop over to "about:config" in Firefox, and toggle the key "browser.urlbar.autoFill" to true.

Monday, June 29, 2009

Interface Builder: Tab Bar Application and children views

This is something that always bothered me while designing an iPhone UI in Interface Builder: When making a "Tab Bar Application", my child/tab views were always messed up, and not rendered the same as what I would make in Interface Builder.


Of course the whole thing was a big neophyte mistake on my part, but I figured I would share my findings for others that have such a problem.


For the sake of this post, I am building an application called "DemoApp", from the "Tab Bar Application" template in XCode.  My UI design in Interface Builder looks like this:




For the sake of this demo, I have also thrown away the default "SecondView" that comes with the template, in favor of using my own custom one as an example.


So how does this render on the iPhone?  Not at all how it looks in Interface Builder...



It took me FOREVER to figure out why my Views were getting clipped, and generally rendered incorrectly whenever I made a custom view to go inside of a TabBarController.  The secret?  On your custom view, enable the bottom bar!



So now your interface should look like this in InterfaceBuilder:




Which makes it MUCH easier to arrange your UI to render correctly inside of a TabBarController.  This little checkbox and my own carelessness caused me much stress and anger towards Interface Builder - hopefully this post will help someone resolve the problem more quickly than it took me!


Thursday, April 02, 2009

I am moving to California!

I have accepted a position with Northrop Grumman Corporation as an Aerospace System Test Engineer and will be moving to LA next week.

Goodbye Rochester.  We've had some good times, and a lot of bad times (that I am looking forward to forgetting)  I won't miss you.



Wednesday, March 11, 2009

Tired of waiting for KeePass to be ported to the iPhone

I use KeePass for all of my password/account management - and it really has made life incredibly simple (and secure).

For just about every online service I use, I now have a unique strong password.  Having so many strong passwords makes it incredibly difficult (impossible) to remember even a handful of them.

There are a few downsides to relying on software to manage your digital account security - and I won't list out the safety implications.

During my brief trip to California the last week I realized that I no longer know the strong password to my professional email account (npike@npike.net) - and thats BAD!  This password is of course stored in my KeePass Database (which is synced to all my computers via an AES-256 encrypted db file) - but I was on the West Coast with no computer, only my iPhone.

Due to KeePass being opensource, it exists for most flavors of operating systems out there - theres even a project to port it to the iPhone (that seems dead :( ).

My life would have been so much easier if I was able to look at my KeePass database from my phone while away from my computers.

I spent the evening today trying to port some of the KeePass C++ to Objective-C without much luck.  For now I cobbled together a crappy solution that should work in a pinch in the future.

  1. Export KeePass Database as an XML file

  2. Encrypt resulting XML file with openssl (AES 256bit)
    openssl enc -aes-256-ecb -in kp.xml -out kp


  3. (Make sure to have a strong but memorable passphrase for the encrypted file).

  4. Delete original unencrypted XML file.

  5. Write stupid script to decrypt encrypted file (pain in the ass to type out the whole command on iPhone)

  6. Add my iPhone's unique SSH key to the authorized key list for my linux box. (See Send your SSH Public Key to each host you use)

  7. Write a lazymans script on the iPhone to SSH to linux box by typing a single letter (Saved as "S" on my path)
    #!/bin/bash
    ssh staging.npike.net -l npike

  8. Profit!


Being the lazy, but creative geek that I am - I now only have to launch the terminal application on my iphone, type "s" - navigate to where my encrypted keepass export is saved, and run the decrypt script above.

Granted, this file will be stale all the time unless I manually re-export it everytime I make a change in KeePass... but should hold me in a pinch until KeePass is ported to the iPhone.

Moral of the story? Make your email account have a strong, but memorable password thats different from all of your other passwords.

Friday, February 06, 2009

Continued: I am a programmer, a scientist. I am NOT customer service.

Yesterday I received two more emails from Connor that I feel the need to share with everyone (pretty funny):



So perhaps a more accurate title for this post is:  Connor Fail - but thanks for the amusement.

Wednesday, January 28, 2009

I am a programmer, a scientist. I am NOT customer service.

I really enjoy getting emails like the following, from users who don't understand all the work it takes to give them something free to bash.



Well Connor.  Its people like you, that explains why I don't bother wasting my time fixing bugs anymore.  Ungrateful and non-constructive emails like this ruin it for everyone else.

For those curious, my response to him was:
Hey Connor, just to let you know; constructive feedback helps me fix its problems.  Your email wasn't very useful. Thanks

Tuesday, October 07, 2008

How To Automatically kill your Twitter client every night at work..

If your like me, you leave your work computer on when you go home.  Most of the time its just easier and faster to leave it turned on then to suffer through a cold boot the next morning.

Your also probably slightly forgetful - every now and then I forget to close my Twitter and IM clients before leaving work... which allows it to sit there all night long eating my precious Twitter API requests.

Changing your Twitter password once you get home works, but is a little drastic.

I use a Windows batch file that is scheduled to run every night at 6PM on my work computer that kills both the process for my Twitter client (Twhirl) and my IM client (pidgin).

Here's a quick tutorial.

  • First you want to create a new file in your favorite text editor, call it anything you like.  I named mine "nightly.bat"

  • Paste the following into the new file (assuming you are using Twhirl as your Twitter client)


taskkill /F /IM twhirl.exe


  • Save this file anywhere you like, I saved mine to "My Documents"



  • Navigate to your windows control panel

  • Open up "Scheduled Tasks"




  • "Add Scheduled Task"




  • Click Next..




  • Click "Browse" and select your batch file




  • Setup when to run your task, with a name.  I called mine "nightly", and set it to run "daily"




  • The next screen lets you configure the exact time to run, and what interval of days to run it on (I selected 6pm and weekdays)




  • All done! Click "Finish" and your good to go.


Thursday, August 28, 2008

Ubiquity Script: Spellcheck



This afternoon I put together a quick Ubiquity script: Spellcheck!  Spellcheck uses Google under-the-hood to do a quick spellcheck of any words you pass in as parameters after invoking spellcheck in Ubiquity.
spellcheck rudiculous speeeling

Pretty sweet!  Hit the link below to suck it into your Ubiquity installation:

http://apps.npike.net/ubiquity/spellcheck.html

Wednesday, August 27, 2008

Strange Code Comments EVER

Was looking through some library functions for NSIS (NullSoft Scriptable Installer), and found some of the strangest code comments I have ever seen:

Friday, August 22, 2008

Hacking your iTunes to enable management/playback of your iPhone music on multiple computers




The iPhone has this nagging restriction, thats been driving me crazy since I traded in my iPod Touch as my main music playing device.

You can't plug your iPhone into a second computer (for example, at work) and play back music from the iPhone on your computer!

This just makes no sense, because the iPod Touch (and any other iPod) can manually manage music on multiple computers.

Below is how you can hack your iTunes to circumvent this stupid restriction.  A few caveats:

  • I have no idea how well this will work if your 2nd installation of iTunes is actually managing any music in its library

  • I have no idea if you can actually add/remove songs from your iPhone on the 2nd computer.  I wouldn't recommend it, but it probably will work.


Lets Begin

You will need a text editor, and a hex editor for your operating system of choice.  There are many free options for both Windows and OS X.  For this post I will be using Windows and Ultra-Edit.  Make sure iTunes is closed on both machines before making these changes.  Make sure to backup "iTunes Music Library.xml" and "iTunes Library.itl" on the second machine before editing.

Determine your iTunes Library ID for your first computer (the one your iPhone syncs with primarily)

  1. Locate your iTunes Music Library.xml  (Windows:  Usually in My Documents\Music\iTunes  OS X: Usually in /home/[username]/music/iTunes)

  2. Open this file in a text editor and find the line that looks like the following:
    <key>Library Persistent ID</key><string>79273A3FF1AD7693</string>


  3. Write down the value between the <string> tags, in my case "79273A3FF1AD7693"




Hack your 2nd iTunes

On the second computer you wish to enable playback with, do the following:

  1. Open the same file from step 1 above on this computer

  2. Write down the existing <string> value like step 2 above.  (This will be different then the one you have already written down)

  3. Replace the existing <string> value with the one from step 3 above.

  4. Save. Close File

  5. In the same directory that you found "iTunes Music Library.xml", you should also see "iTunes Library.itl".  Open this in a hex editor.

  6. Search for your Library ID in the file.  If there are no results, try adding a space every two characters in the Library ID and search again.

  7. Replace this ID with the one from your first computer.  (Should be EXACTLY the same amount of characters, otherwise this will not work)

  8. Save file.

  9. Open iTunes, and plugin your iPhone!




Last Steps

Your 2nd iTunes might pop a warning that says your iPhone is currently synched with another computer, and that syncing will erase all content.  Cancel this dialog.  Make sure your iPhone is set to manually sync on this computer, and you should be fine!

Monday, August 18, 2008

iXboxLive => Xbox LIVE Friends

Due to a request by Microsoft LIVE Legal Services, iXboxLive has been renamed to "Xbox LIVE Friends", and even better news: is now completely free!

Sunday, August 17, 2008

RBA & First time someone has pirated my crap.

So it seems a cracked copy of one of my applications has hit the interwebs today...  first time I've ever had to experience that first hand.  It really feels like a dull knife in the back.

Oh well - a very small percentage of users currently jailbreak, and an even smaller percentage are going to hunt down these cracked applications.

And today's XKCD comic sums up my life recently rather nicely.  I feel like this guy is using my life story as his comic book story.

This is a story all about how I started drinking

Saturday, August 16, 2008

iXboxLive 1.1 - In Review

iXboxLive 1.1 has been submitted to Apple for review!  Many under-the-hood changes, and a ton of visual changes:

  • Many crash bug fixes

    • Won't immediately crash to the springboard if you have no active internet connection (iPod Touch users). This often resulted in your buddy list being wiped. This has been fixed.

    • Occasionally downloading avatar images from Microsoft would result in a crash. This should be fixed.



  • Redesigned Buddy List and Details View

    • The Buddy list now resembles the style of displaying friends that Xbox.com uses! (Thanks Mike Jefferson and Erik Bye for your help here..)

    • The gamer details view has been redesigned by TOTUSHI. You can find him online here: http://www.totushi.com/. He is a visual artist that does excellent freelance work.



  • Message Xbox buddy's with www.xbox.com

  • Online buddies are automatically moved to the top of your buddy list

  • The application now does some under-the-hood caching of gamer tag avatars, which should result in better loading performance.


iXboxLive is also sporting a new Springboard Icon, designed by Erik Bye:



Time for some screenshots!

[gallery]

Monday, August 11, 2008

Writing an installer for Windows sucks!

So this week at work I am writing a Windows  (XP/Vista/2k) installer for one of our upcoming products... I was asked to evaulate the options currently on the market, mainly the free options.

I settled with the Nullsoft Scriptable Installer from the fine folks of Winamp.  There's a lot of documentation, some handy tools, and even a neat Eclipse Plugin (eclipse-nsis).

So after a day of developing in the crazy NSIS scripting language I am ready to shoot myself.

Why?  Well here's some example code and screenshot so that you can see the hell you have to live through to make something simple.

On the bright side: I am awesome, and the final result will be awesome as well.



Writing an installer for Windows sucks!

So this week at work I am writing a Windows  (XP/Vista/2k) installer for one of our upcoming products... I was asked to evaulate the options currently on the market, mainly the free options.

I settled with the Nullsoft Scriptable Installer from the fine folks of Winamp.  There's a lot of documentation, some handy tools, and even a neat Eclipse Plugin (eclipse-nsis).

So after a day of developing in the crazy NSIS scripting language I am ready to shoot myself.

Why?  Well here's some example code and screenshot so that you can see the hell you have to live through to make something simple.

On the bright side: I am awesome, and the final result will be awesome as well.



Saturday, August 09, 2008

Progress Update: iXboxLive 1.1

Wow!  I've gotten a huge response from the Internet about iXboxLive 1.0.  Over all mostly positive, but there are some big issues that I need to fix for the first update.

  • I've fixed the crash that occurs when theres no active internet connection, which often resulted in your iXboxLive buddy list to be whiped out.

  • I've hopefully fixed the source of random startup crashes.

  • I've increased loading performance significantly.  iXboxLive will load its main interface and add buddys to the buddy list as their information is retrieved.  (As opposed to what it does now, and waits for all the information retrieval to be finished before displaying the main interface)


More info to come.

Wednesday, August 06, 2008

Introducing iXboxLive - Available in the Apple AppStore

Xbox Live is great - there's no questioning that, but sometimes you just really want to check your Buddy List without having to turn on the Xbox, or fire up Xbox.com in a browser.

iXboxLive is your Xbox Buddy List(*) on your iPhone or iPod Touch!

  • See your select buddy list

  • See what they are currently playing

  • See their gamer pic

  • See their gamer score, gamer reputation, and location

  • See their list of recent games, including scores and last played dates

  • More features to come!


* This application uses the Microsoft Xbox Community Developer SDK, which is private and only available to a limited number of developers.  Due to limitations of this SDK, you will have to specify which gamertags to view on your local buddy list, and you will not be able to use all of the features you would expect from Xbox.com (like messaging friends)
** It is highly discouraged to add more then a dozen or so gamertags to your local buddy list.  The initial loading time of the application will increase significantly for each gamertag you add - so be cautious!


iXboxLive "Pending Contract"

Received an automated email from Apple yesterday evening informing me that iXboxLive has moved from a status of "In Review" to "Approved for Sale".

Approved for Sale?  It's a free application.

Regardless, I was excited that my Application should now be in the AppStore - only to find that its now stuck in yet another queue in the review process.

Prior to submitting an application to Apple, you have to complete a contract - disclosing the legal obligations and limitations of you providing your software to Apple for distribution on iTunes.  There are two types of contracts:

  1. Free Applications - Developers are automatically entered into this contract, and requires no extra information from the developer to complete

  2. Paid Applications - Developers are not automatically entered into this contract, as it requires banking and tax information.


iXboxLive is under the Free Applications contract - which for some reason is still Pending Completion by Apple. (It would seem that they have to hand approve all contracts, including the free contracts).

My contract information has been in their database for a week or two already - I just hope that it won't take much longer for them to approve my contract so that my applications can be released into the wild.

Sunday, August 03, 2008

Sundays and Project #2

Now that project #1 is out the door, and pending Apple review... it is time to start planning and working on the more important project:  Porting MobileTwitter to the AppStore.

Laid some foundation work this afternoon, will definitely need to revisit the icons used in MobileTwitter 1.5 (as they look like crap, and I need someone to make me new ones)

Sundays and Project #2

Now that project #1 is out the door, and pending Apple review... it is time to start planning and working on the more important project:  Porting MobileTwitter to the AppStore.

Laid some foundation work this afternoon, will definitely need to revisit the icons used in MobileTwitter 1.5 (as they look like crap, and I need someone to make me new ones)