118 karma · joined January 31, 2010
My setup currently consists of:
iPhone dev:
24" + 13" MacBook, Vim, XCode, and iPhone simulator. 17" Linux, using Synergy with the Mac. Browser + shells. Plus stuff like email, etc, because I detest the Mac OS UI (sorry guys).
Android dev:
When I'm doing Android work, I disconnect the MacBook and run 24" + 17". It's is not bad, but 2 * 24" would be even better, particularly when testing large/hi-res devices in the emulator.
Moreover, if you want to truly maximize a large monitor, Linux has tiling window managers which are a boon to productivity. Tiling window managers free you from shuffling windows around with the mouse, instead dynamically resizing windows to fill all available on-screen space using a "tiling" algorithm. I find that they work fantastically on widescreen monitors. See XMonad, AwesomeWM, etc.
On Windows, if you want virtual desktops, there are hacks such as VirtuaWin available: http://virtuawin.sourceforge.net/ .
And don't forget about the Windows "tile windows" buttons, which are crucial for efficiently utilizing a large-format monitor: http://lifehacker.com/287588/tile-windows-with-the-control-k...
...Or maybe you can pretend it was some sort of clever play on words next time. :)
This would be a good solution if pg has the time to hack it together.
However, I find that when discussion/ask threads are mixed in with the aggregate, it's easier on the brain when they're clearly labeled as such.
Maybe I need a cognitive tune-up, but I find that I often will scan through the headlines, notice an ambiguously-titled thread, and have to do a quick judgment call: "Hm, is this a poorly-titled discussion thread or a rhetorically-titled headline?"
My argument is simply to remove those minor hiccups to improve the experience of digging through the firehose of content that comes through HN.
The specific license they're using can be found here: http://creativecommons.org/licenses/by-nc-sa/3.0/
Thus, if you want to do Objective-C development, your best bet is to get your hands on a Mac. Barring that, you could rig up Hackintosh, or Hackintosh VM in VMWare/Virtualbox.
If you are willing to consider some zanier options, there's a open source project that's attempting to create a portable iPhone toolchain: http://code.google.com/p/iphone-dev/.
If you're willing to forgo Objective-C, and try cross-compiled development, there's stuff like PhoneGap, xmlvm, etc.
First, I'll address your concerns about code signing:
Android doesn't require you to go through quite the same certificate/provisioning profile insanity, but you will have to sign your applications before distributing them in the Android Market.
See here: http://developer.android.com/guide/publishing/app-signing.ht...
To develop on a device, it's brain-dead simple. Just plug in the device, install the driver (or config udev on Linux), and go!
Details here: http://developer.android.com/guide/developing/device.html
The one case where you need to get anything 'approved' is if you're going to use Google Maps. There's a quick automated process where you submit your development key in return for a maps API key.
See here: http://code.google.com/android/maps-api-signup.html
Regarding development itself:
In terms of learning the development APIs and how everything fits together, I contend that Android is going to be tougher to learn at first, because you'll have to figure out fundamentals like Activity lifecycle, Intents, etc.
However, after you've gotten past the initial hurdles, I find that Android development (at least for the most part) feels more predictable and logically-designed than iPhone development.
In my experience, Android also has some better libraries out of the box. For example, doing basic REST calls, JSON, and SQLite are all in the standard library. On iPhone, you're best off using 3rd party libraries for each of those.
But there's always two sides to the coin. I find that iPhone is less structured, which can be good, depending on your tastes. I also feel that iPhone gives you a better-looking, better-feeling application with less effort (prettier default buttons, colors, animations, and there's always Interface Builder if you need it). If you're a game dev, also, iPhone tends to run faster and can utilize C libraries more readily than Android, whose ability to run C code relies on NDK/JNI, which can be a PITA.
To wrap things up, don't expect an entirely new process when you switch over to Android. If you didn't have the patience to stick it out on iPhone, don't think that Android will be the magic bullet that makes things easy. However, you'll be able to develop applications using the tools you like (not wedded to XCode), under the OS you like (Win/Linux/OS X), and best of all: no approval process to publish your applications. I've found that it takes minutes, as opposed to the App Store's days/weeks, for Android applications to arrive in the market.
I hope that helped.
P.S. I recommend The Busy Coder's Guide to Android. There's plenty of examples to get you started.
The iPhone's ability to write in plain C will help if you're planning on using any off-the-shelf libraries. Yes, you can do this with Android's NDK using JNI, but it's not nearly as seamless.
Also, if you're going to be using OpenGL, Android's OpenGL ES 1.1 implementation is 'not complete,' while iPhone claims a complete ES 1.1 implementation, with newer models (3GS, latest iPod) supporting ES 2.0.
Lastly, if you're doing a performance-intensive game, you may want to keep in mind that your Android code will run on top of Dalvik, while iPhone code will be compiled to binary. Hopefully, this won't be an issue, but I imagine it's not fun to realize that you'll have to port most of your physics and game logic to C using the NDK.
Again, I have no experience developing a legitimate game on either platform, so take my words with a grain of salt. And as an Android user myself, I'd love to see more games on the platform. Best of luck, and let us know what you choose!
I don't mean to advertise for StackOverflow, but it struck me that an their job board would be the biggest competitor to a potential HN job board.
I find that jobs.stackoverflow.com is clean and seems to have consistently interesting postings. On the other hand, I'm not sure how many conversions they get, and the UI is rather basic.
They've also recently launched careers.stackoverflow.com, which integrates with StackOverflow accounts. The theory is that employers can scope out an applicant's know-how by glancing at his reputation and postings.
Anyway, as someone seeking employment, I echo your interest in finding a good solution. Good post.
Having lived abroad myself (China), I can tell you that the experience will broaden your mind. Keep an open outlook and heed albertsun's advice to learn some Arabic and you'll have an amazing time.