Last week, the Internet connection in my building went out for what seemed like forever. Really it was only three and a half days but with my ever-escalating habit, three and a half hours can be the onset of dangerous withdrawal symptoms.
I began venturing to various coffee shops with free Wi-Fi but between fighting for a seat and their connections almost always being a disappointment next to my (usually) blazing-fast cable, I started toying with ideas of how to share my iPhone 4's 3G connection without jailbreaking (or paying AT&T's absurdly high monthly fee for tethering).
I was a strong proponent of jaibreaking in the early days, but there have since been far fewer reasons for me to kludge my phone now that iOS has officially and more elegantly adopted most of the features of jailbreaking I was so fond of anyway. Copy and paste, multitasking and folders come to mind. Also, since becoming a "serious" developer, it has been more important for me to keep a clean and official iOS installation.
The solution I came to was to write my own "NetShare"-like app for personal use. After poking around the web for some jumping off points (and a tip from the developer of the controversial "Handy Light" app), I stumbled on a GitHub project called "iProxy." While it does not use true "tethering" (thus the quotation marks) but rather HTTP and SOCKS proxy, it turns out that is exactly what NetShare used.
The How To:
Step 0: Before you begin, this ONLY works if you are enrolled in the iOS Developer Programme and have a Developer's Certificate ($99/year). I suppose if you have a trusting friend who is a developer and has available Devices (you're only allowed 99) they could build it for you via Ad-Hoc Distribution as well.
Step 1: Download and unzip iProxy. Open up the project file (.xcodeproj) in Xcode.
Step 2: Depending on your current SDK version, you will probably have to change your project's build target for your device (Get Info on the Target, then change the Base SDK to your current iOS version). While you're at it, you should also change the Code Signing Identity to your own Development Profile. Hopefully you already have a debug profile for wild card (*) App IDs. Otherwise you will have to register the App ID in your Provisioning Profile and reinstall your Debug profile.
Step 3: Build and Run! iProxy will be installed on your iPhone.
Step 4: Configure iProxy. The GitHub page has a thorough guide with plenty of screenshots. Since this uses HTTP and SOCKS Proxy rather than true tethering, there is a fair bit of configuration necessary. However, once you get through the initial setup, it's easy to select the saved network location in the future.
I'm sure glad to have found iProxy as a backup, but I really hope I don't have to use it any time soon...