Oh, Google just turned my iPod touch into a free wifi phone

Cool Stuff, Tips, What I Just Learned
Today I noticed that Google turned my iPod touch into a free wifi phone. That's nice of them. To turn your iOS device into a free wifi phone. Simply create a Google Voice #, and install the Google Voice and Google Hangouts apps on your device. You'll be able to send and receive text messages with the Google Voice app, and read your Google Voice voicemail there too. The Hangouts app will let you make and receive calls to/from real phone #s, and instant-message with your friends. I've used Google Voice for several years. It's great, because it gives you a free phone number that redirects to other numbers. I give people my Google Voice #, and when they call, it automatically rings several personal lines. Further, if I ever…
Read More

Finding a Job

Interviewing, Lists, Tips
Finding your next great adventure is a numbers game in many ways. You are the perfect match for some position out there, it's just a question of finding that place, or perhaps, that place finding you. In my book, there's an ordered list of ways to find a job: Create your own job. Places you want to work. Places your friends work. Recruiters who target you with non-spam. Recruiters who target you with spam. Random job postings. Create your own job. If you're creative, self-driven, and have a great idea or two, why not create your own job? If you're already tinkering, all you need to do is take your hobby a bit more seriously. Polish your hobby into a product, make a website, form an LLC, and go take…
Read More

Great Interview Questions

Interviewing, Life and Philosophy, Lists, Tips
Interviewing is not a one-sided conversation. If you land a job by only worrying about successfully impressing interviewers, you will almost certainly be surprised, and you may be unhappy once you start the job. It is critical that you understand that an interview is not about making the company happy and fitting their mold, it is about finding a good match for both you and the company. How do you make a good choice in choosing the next place to work? Simple, you ask questions! And how do you make the best possible choice? You put some effort in and come up with some great interview questions. Don't do what some of your crappy interviewers will do and google something random right before going to the interview, actually take some…
Read More

IOS 6 app store crash on your iPod touch 4? Restore.

Tips, What I Just Learned
For weeks the app store has crashed constantly on my iPod Touch 4th gen after the over-the-air IOS 6 update. Restoring the iTouch to a fresh install of 6.0 on iTunes fixed the problem and now the app store works better, not perfect, but better. Symptoms: I would search for something, and swiping left or right on the cards would crash - sometimes I would be able to see some cards if I let the app sit for a half minute and pre-fetch everything, but when I got to item 24 or so I'd be gauranteed a crash again. I'd have similar problems browsing categories of apps and trying to install them. Sometimes I'd tap the "Free" or "$1.99" button for an app, and the button label would switch to…
Read More

IOS reminds me of IE

IOS Product Development, Midnight Ramblings, Tips, What I Just Learned
Developing for IOS is exactly like developing for IE. First, you knock the easy stuff out that *just works* simply without massive confusion. In browser land that means do your work in chrome or firefox first, whereas in IOS you basically do everything except auto-rotation first. Then, for the last step, you spend as much time handling IE bugs or IOS auto rotation hell as you spent developing up to that point. edit: The trick in IOS 6+ seems to be something like this inside your view controller.. - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAll; } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { CGRect screenRect = [[UIScreen mainScreen] bounds]; screenRect = CGRectMake(0, 0, screenRect.size.width, screenRect.size.height); //anchor to 0,0 if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) { //swap width & height screenRect = CGRectMake(0, 0, screenRect.size.height, screenRect.size.width); } self.view.frame = screenRect;…
Read More

Custom OSX log file rotation / archiving

Tips, Unix
This is an updated/edited version of an article I posted years ago on World's Worst Software. Custom Log File Rotation In OSX It's not easy to figure out how to configure OSX's internal periodic tasks. I googled around a bit for info on integrating your own log rotation scheme into OSX's existing scheduled tasks, but I could not find any great documentation on the matter, so here's how I solved the problem. How OSX's log rotation works OSX (10.4+) automatically rotates your log files for you on a weekly basis. It first rotates older logs, then it gzips your current log file up, and then it creates a new log file for your system to continue logging to. The log files are gzipped into a file like logfile.0.gz where "logfile"…
Read More

TortoiseSVN not importing some files? Fix your permissions.

Tips, Unix, What I Just Learned
If TortoiseSVN (or SVN in general) seems to be skipping over some files when importing a project, there are a couple of causes to be careful of. First, make sure your permissions are set correctly, I just do the following in a dos box (after installing cygwin, of course..) in my project folder before import: chmod -R 777 * If you've already imported your project and the project folder is versioned, and TortoiseSVN is still giving you hell, you may have to right click on individual files it previously skipped and select tortoisesvn->add from the popup menu. Doing this at higher levels in the directory structure won't even show the permission-fixed files as addable :( If that doesnt seem to solve your problem, you may want to search for svn…
Read More

Beware zombies w/ ARC.

Tips, What I Just Learned
If you're using Automatic Reference Counting in your IOS project, make sure to turn NSZombieEnabled OFF. If you don't, parent object deallocation will never deallocate child objects. In our case, we had a project that was more than a year old, that we recently migrated to ARC. Our project targets are configured as follows: iPad project - ARC ON iPhone project - ARC ON "non arc" project (collection of third party non-arc code) - ARC OFF The following code shows an example of this in an easy test: TestArcStrong.h #import @interface InnerObject : NSObject @end @interface TestArcStrong : NSObject @property (strong) InnerObject * object; + (void) runTest; @end TestArcStrong.m #import "TestArcStrong.h" @implementation InnerObject - (void)dealloc { NSLog(@"inner dealloc"); } @end @implementation TestArcStrong @synthesize object; - (void)dealloc { NSLog(@"outer dealloc.."); }…
Read More