QA completed a round of testing on the iPhone application so I dug back into Xcode and fixed them. Always a little nervous when I get back into iOS development as I don't spend much time there but it went pretty smoothly.
First off I now have Xcode 4.0 running and it is an improvement over the 3.x series. You can now have tabs of open files. You must manually create the tab then select content in it. The file view tree stays in sync with the tab you are looking at as far was what is expanded / collapsed which threw me off at first. I had the XIB open in a tab and wanted the M file open in another but when I switched to another tab the tree adjusted too and I did not see the M file. I had to expand my way down to it before I could open it. Annoying as I was just looking at the file in the tree I wanted and it disappeared.
I don't know if I closed the Utility Pane or if it defaults to off but I was lost trying to figure out where the alignment, color and other settings for a widget in Interface Builder went until I figured out how to turn that on. I looked all over in the menu system and finally did a help search. I did not think of the name "Utilities" for this pane thus I kept overlooking it in the View menu.
I really like having Interface Builder integrated in the IDE. You no longer will forget to save changes you are tweaking in IB at the same time you are adjusting some code. It also has been updated in a number of areas making it easier to use. I still am not at home in it but was able to pull off everything I needed quickly once all the required panes were visible.
The source control integration is much nicer. The files are flagged with (A) and (M) icons so you know what has changed. You get a quick difference window at commit time. I wish it kept the last commit comment around or a drop down to let you get to older ones.
I had initial troubles getting the code to run on the Simulator until I added i386 as a Valid Architecture. That was not obvious at all and it took some web searching to figure it out and then more time in IDE to find out where to update the value.
A Table View was painting oddly. The original code author had set up some hard to read colors and I had changed them back to defaults I thought. It looked just like a normal Table View when compiled with 3.x but was screwy looking in 4.0 until I set the Background to default then it was fine. I did not notice any other differences in the code between 3.x and 4.0 builds. This is not a very big app, login screen, pick from a list, show appointments, appointment details plus an editor screen for notes and one for dates. We are not using tons of widgets or any bizarre build configurations but I am happy the changes were minimal.
Very happy that Apple updated the one and only IDE you can use to do iPhone work in. They have made a lot of needed changes and I hope they continue to improve it in a timely manner.
I just did some updates to Eclipse, the IDE I choose to use on the PC for Android Development, and it is also working better. The code assist would pause for long periods of time under 3.6 but now that I have downloaded the Android source code that is no longer an issue. Plus I can debug into the Android code if needed.
Right now I am working on phase two on the Android side and have created some new custom widgets along with getting my feet wet with SQLite. I have a few tables running with some fake data now. I need to create a large dataset for test data for a new control that allows you to scroll to / search for a record similar to what you have for Contacts on both Android and iOS.
I will need to port all the existing code over to iOS when I have the Android stuff in place. At least with my initial experience with Xcode 4.0 that appears it will be less of a chore than originally thought. I was basically tweaking and bug fixing the original iOS code and this time I will creating a lot of things from scratch. I am sure that will give me a much better understanding of iOS / Xcode / IB / Objective C.
Tuesday, February 15, 2011
Thursday, February 10, 2011
Android vs. iOS developer differences
I am working on an update to our mobile application. I will do the work first on the Android as I am more comfortable in Java then port it after the initial management and QA approval rounds to the iOS. Doing it in sync is a waste of time as you make constant changes to both instead of just getting one right then doing a much easier port.
This does not mean I ignore the iOS for the first chunk of development. I need to make sure anything I do fancy pantsy on the Android has a match on the iOS side. I end up doing a lot of web searches to see if I can do something on the iOS side.
It actually gets scary to see what you find in web forums on the iOS side of things. Maybe it is what I am looking up but I tend to find the questions asked by iOS developers to be programming 101 while on the Android side they tend to be medium to tough questions.
Examples you say? Sure, here are two that just made me cringe.
I need to use an Expandable List on both platforms. Found some nice sample code for each side and I have the Android piece running in a prototype. When I found some sample code on the iOS side it had just two groups so the code was really simple like the following (shown language agnostic):
if (group == 0)
text = "Group 0"
else
text = "Group 1"
Someone posted
I tried
This does not mean I ignore the iOS for the first chunk of development. I need to make sure anything I do fancy pantsy on the Android has a match on the iOS side. I end up doing a lot of web searches to see if I can do something on the iOS side.
It actually gets scary to see what you find in web forums on the iOS side of things. Maybe it is what I am looking up but I tend to find the questions asked by iOS developers to be programming 101 while on the Android side they tend to be medium to tough questions.
Examples you say? Sure, here are two that just made me cringe.
I need to use an Expandable List on both platforms. Found some nice sample code for each side and I have the Android piece running in a prototype. When I found some sample code on the iOS side it had just two groups so the code was really simple like the following (shown language agnostic):
if (group == 0)
text = "Group 0"
else
text = "Group 1"
Someone posted
I tried
if (group == 0)
text = "Group 0"
else
text = "Group 1"
else
text = "Group 2"
and I get a compiler error about the else? Plz help, what am i dong wrong?
This is programming 101, how to use if / else if / else and you must love the grammar and spelling to go along with the lack of basic programming knowledge. I have not seen questions this basic in a long time of doing development in Java and C# but ran into it quickly for iOS.
Second example involves SQLite. I wanted to make sure it was available under iOS as we need to cache some data between application sessions that is rather sizable. Again I found reasonable samples on both sides but the comments on the iOS forums made me shudder.
OMG this is prefect! thx, but it only adds, how to delete, plz help me!
The blog author was very nice and posted a response on INSERT adding and DELETE removing with pretty much the exact syntax between the two. Really folks this is a simple Google search to find the results. Is this coder going to ask each SQLite question on this forum? How hard is it to be introduced to a concept then look for depth via web searching?
There are more examples out there, these are the quick ones I have found. I know this is not a good sampling and there are many all star iOS developers because I have seen many fantastic apps but there also appears to be a number of "how the hell did you get into this line of work" developers looking to make fast money on the iOS side of things.
C based languages are bad enough to learn without lacking basic programming knowledge or the willingness to look up very simple answers. SQLite on the Android side seems pretty straight forward. A little screwier on the Objective C side as it is C based and not NSString etc. based so I will have to write more code just to convert objects about.
Any of you come from the iOS side looking at Android programming and finding things just opposite of what I have found or do you also find iOS Q&A forums full of some really inane questions? Are people coding on the iOS just to try and make some quick cash?
Friday, February 4, 2011
Upgrade fever just aint what it used to be
Way back when PC Week, InfoWorld and Computer Shopper were monster magazines there was a ton of fun things to read about new hardware. Processors were getting faster, video cards made performance jumps in leaps and bounds, sound cards were not on the motherboard but something you bought as a separate item. That has pretty much all gone away and it is making hardware pretty darn boring.
I have run my current computer for a bit over 4 years. It handles pretty much anything I toss at it. Sure I might not be getting over 100 FPS in the latest game and I am only running 1680x1050 but I am not seeing stuttering or any real game issues so what the heck. I am running the on-board sound on my Intel motherboard and Intel does not officially support Win7 drivers but even this has caused few issues.
The problem is I have the upgrade fever. Don't really need to upgrade but the fever has set in. Of course it shows up just in time for Intel to announce a flaw in their chips.
I have a better box at work than I do at home. It has more memory, a better processor, better graphics card and an SSD drive so it boots really fast. I boot it about once a month due to some MS update otherwise the machine just remains on all the time. After reading reviews on NewEgg I find these drives seem to have a higher failure rate than I would be happy with although none have failed at work and no one I know that owns one has had a failure either. I currently have dual 250g drives at home and neither is close to full. I am not a big collector of movies or music. All the music on my PC I also have the physical CD for in a cabinet. I rip them so I can listen to them via Media Monkey as its random play feature seems to work were as the one in MS Media Player sucks.
I put together a price list at one point of parts - i7 processor, decent motherboard, memory, mid level graphics card, large power supply, SDD drive and mid tower case. By the time you do all that and you look at getting a legal copy of Win7 64bit you might as well just by something off the shelf. I would not spend the big bucks on Alienware or another boutique vendor but there are a lot of solid configurations, some even with water cooling, available and the OS is already included via some MS kickback they get.
But I always run into not being able to get the perfect configuration. They use some weird motherboard or a graphics card two steps below what I want or no SSD option or a suspect power supply. Maybe I find the perfect configuration then the price is shot through the roof pointing me right back to building my own.
In the end it will probably not be much of an upgrade and I will be out the cash and I will be reinstalling tons of software - Office, various IDEs, media players, USB drivers, utilities, games, text editors etc. and will really have nothing but eaten up time and 10FPS gain to show for it. Hardware used to be fun.
I guess this is why phones and tablets are the rage now. Something new. The PC and the Mac are boring. Let's go find something else that is in a constant upgrade cycle so we can again compare what we have to our buddies. My tablet is dual core, mine has 7.1 sound system, mine has 10 cameras. People upgrade phones like they once upgraded computers. Now pretty much any computer out there can run most games and can run all the productivity software with zero issues.
Talk me out of the upgrade, talk me into an upgrade, point me to a reasonable vendor with a great gamer build at a reasonable price, help a buddy with the fever!
I have run my current computer for a bit over 4 years. It handles pretty much anything I toss at it. Sure I might not be getting over 100 FPS in the latest game and I am only running 1680x1050 but I am not seeing stuttering or any real game issues so what the heck. I am running the on-board sound on my Intel motherboard and Intel does not officially support Win7 drivers but even this has caused few issues.
The problem is I have the upgrade fever. Don't really need to upgrade but the fever has set in. Of course it shows up just in time for Intel to announce a flaw in their chips.
I have a better box at work than I do at home. It has more memory, a better processor, better graphics card and an SSD drive so it boots really fast. I boot it about once a month due to some MS update otherwise the machine just remains on all the time. After reading reviews on NewEgg I find these drives seem to have a higher failure rate than I would be happy with although none have failed at work and no one I know that owns one has had a failure either. I currently have dual 250g drives at home and neither is close to full. I am not a big collector of movies or music. All the music on my PC I also have the physical CD for in a cabinet. I rip them so I can listen to them via Media Monkey as its random play feature seems to work were as the one in MS Media Player sucks.
I put together a price list at one point of parts - i7 processor, decent motherboard, memory, mid level graphics card, large power supply, SDD drive and mid tower case. By the time you do all that and you look at getting a legal copy of Win7 64bit you might as well just by something off the shelf. I would not spend the big bucks on Alienware or another boutique vendor but there are a lot of solid configurations, some even with water cooling, available and the OS is already included via some MS kickback they get.
But I always run into not being able to get the perfect configuration. They use some weird motherboard or a graphics card two steps below what I want or no SSD option or a suspect power supply. Maybe I find the perfect configuration then the price is shot through the roof pointing me right back to building my own.
In the end it will probably not be much of an upgrade and I will be out the cash and I will be reinstalling tons of software - Office, various IDEs, media players, USB drivers, utilities, games, text editors etc. and will really have nothing but eaten up time and 10FPS gain to show for it. Hardware used to be fun.
I guess this is why phones and tablets are the rage now. Something new. The PC and the Mac are boring. Let's go find something else that is in a constant upgrade cycle so we can again compare what we have to our buddies. My tablet is dual core, mine has 7.1 sound system, mine has 10 cameras. People upgrade phones like they once upgraded computers. Now pretty much any computer out there can run most games and can run all the productivity software with zero issues.
Talk me out of the upgrade, talk me into an upgrade, point me to a reasonable vendor with a great gamer build at a reasonable price, help a buddy with the fever!
Thursday, February 3, 2011
My first Android game - how is it going?
I published my first, and only at this point, Android game titled Grid Hunt back on December 9th. I decided to go the ad based route and hoped to make back the cost of the phone. Seemed like a small dream and believe me the dream became even smaller.
Stats at this point:
1759 Downloads / Installs with 424 of those active.
$4.50 or there abouts (AdMob site is having issues this morning) in ad revenue.
At this point I have not had a single deposit made back to my checking account as I have not hit the minimum for that yet and have not even covered the $25 it takes to put something on the market. So I would say it is rather disappointing. I did not have huge dreams of Angry Birds money or even making it into the thousands of dollars but this is a pretty solid hit of reality.
I have only had 4 comments on the game so far and just as many people have bothered to rate it. Friends and family seem to enjoy the game but even they don't post comments. I have had one crash the first day it was out and fixed it right away. It is at version 1.8 as I have made various improvements over time. Of course with this massive success rate the desire to pour more time into it is rather low. I would like to add a two player mode but I don't know if that would spark more than an extra 50 cents into my Ad Mob account.
The only marketing I have done is via this blog. Not sure where else to try and do things and I am not a spam king who puts a comment in every stinking website they can find that will allow it. I did submit and have the game accepted on Amazon so I am curious if that will drive any more traffic to the game.
I have some ideas for some other applications that are not games. I should give one of them a shot to see what happens. I am doing Android programming at work so I am keeping active but I have not done any more personal work on it since the release of this game. Since this is a newer job, just started it in October, I am mentally burnt out by the end of each day so it has been hard to sit at home and do more work. Add to that my younger son has been using what it technically his laptop a lot more and I don't have something to use out with the family while watching TV.
I guess you hear a lot of success stories around iPhone and Android applications and few stories like this where the dollar amount is below a sawbuck. Should I have charged 99 cents for it? 5 sales and it would beat what I have done so far. I doubt switching to a paid app now is a good idea unless I could find some super awesome way to market it.
What did I get out of this experience? My new job involved Android development. I needed to learn more about it and did so by writing a game during the week I had off between positions. I always recommend to anyone to take a least a few days off between jobs. I learned a lot about the API and how to code a lot of things I would not run into coding business applications - advanced graphics and sound being a few of them. I already knew Eclipse but I learned how to set it up for development and debugging. Installing the proper USB drivers for my phone to get ADB to recognize it on my main machine and my son's laptop helped me do that a lot quicker at work. I learned the ins and outs of the Android Market. Small device variations came into play as I watched someone play it on a Samsung Tablet and I made modifications to make that a better experience. All in all the new job came out way ahead on this so I actually came out ahead too. Anytime you can be better, faster and generally more productive at work it is a winning situation.
I still enjoy Android programming more than I do iPhone programming. I have run into a ton more hassles working on our iPhone application at work. Between the oddities of Xcode, the ugly syntax of Objective C, the massive pain of the iOS Developer website, the inability to place code I have written on any device without the consent and written approval of Apple has pushed me to always write, test and debug for the Android first and port to to iPhone second.
I have a feeling the mobile arena is the future. Writing for a small, limited device is fun again and it kind of reminds me of writing for the Atari 800. Honestly writing for the PC has almost gotten out of hand. Everyone expects so much for each PC program. Hey, you don't have a ribbon control like Office for your one off utility! Where is the animation? I need more colors and every button needs a high quality icon designed by a graphics artist. Why can't this import every graphics file format known to man? Seems you need to know your base language plus about 10 different 3rd party support tools to write anything. When you hit the phone you say "these are the widgets, let's use them and get the information to the user" and that is accepted. I have written some custom controls already but they have been small and limited just like they should be.
It has only been a few months. Things may pick up or maybe it has already peaked. There are new apps on the market daily pushing mine further down the search list. I guess I can dream of hitting the $25 mark so I can call it a wash...
Stats at this point:
1759 Downloads / Installs with 424 of those active.
$4.50 or there abouts (AdMob site is having issues this morning) in ad revenue.
At this point I have not had a single deposit made back to my checking account as I have not hit the minimum for that yet and have not even covered the $25 it takes to put something on the market. So I would say it is rather disappointing. I did not have huge dreams of Angry Birds money or even making it into the thousands of dollars but this is a pretty solid hit of reality.
I have only had 4 comments on the game so far and just as many people have bothered to rate it. Friends and family seem to enjoy the game but even they don't post comments. I have had one crash the first day it was out and fixed it right away. It is at version 1.8 as I have made various improvements over time. Of course with this massive success rate the desire to pour more time into it is rather low. I would like to add a two player mode but I don't know if that would spark more than an extra 50 cents into my Ad Mob account.
The only marketing I have done is via this blog. Not sure where else to try and do things and I am not a spam king who puts a comment in every stinking website they can find that will allow it. I did submit and have the game accepted on Amazon so I am curious if that will drive any more traffic to the game.
I have some ideas for some other applications that are not games. I should give one of them a shot to see what happens. I am doing Android programming at work so I am keeping active but I have not done any more personal work on it since the release of this game. Since this is a newer job, just started it in October, I am mentally burnt out by the end of each day so it has been hard to sit at home and do more work. Add to that my younger son has been using what it technically his laptop a lot more and I don't have something to use out with the family while watching TV.
I guess you hear a lot of success stories around iPhone and Android applications and few stories like this where the dollar amount is below a sawbuck. Should I have charged 99 cents for it? 5 sales and it would beat what I have done so far. I doubt switching to a paid app now is a good idea unless I could find some super awesome way to market it.
What did I get out of this experience? My new job involved Android development. I needed to learn more about it and did so by writing a game during the week I had off between positions. I always recommend to anyone to take a least a few days off between jobs. I learned a lot about the API and how to code a lot of things I would not run into coding business applications - advanced graphics and sound being a few of them. I already knew Eclipse but I learned how to set it up for development and debugging. Installing the proper USB drivers for my phone to get ADB to recognize it on my main machine and my son's laptop helped me do that a lot quicker at work. I learned the ins and outs of the Android Market. Small device variations came into play as I watched someone play it on a Samsung Tablet and I made modifications to make that a better experience. All in all the new job came out way ahead on this so I actually came out ahead too. Anytime you can be better, faster and generally more productive at work it is a winning situation.
I still enjoy Android programming more than I do iPhone programming. I have run into a ton more hassles working on our iPhone application at work. Between the oddities of Xcode, the ugly syntax of Objective C, the massive pain of the iOS Developer website, the inability to place code I have written on any device without the consent and written approval of Apple has pushed me to always write, test and debug for the Android first and port to to iPhone second.
I have a feeling the mobile arena is the future. Writing for a small, limited device is fun again and it kind of reminds me of writing for the Atari 800. Honestly writing for the PC has almost gotten out of hand. Everyone expects so much for each PC program. Hey, you don't have a ribbon control like Office for your one off utility! Where is the animation? I need more colors and every button needs a high quality icon designed by a graphics artist. Why can't this import every graphics file format known to man? Seems you need to know your base language plus about 10 different 3rd party support tools to write anything. When you hit the phone you say "these are the widgets, let's use them and get the information to the user" and that is accepted. I have written some custom controls already but they have been small and limited just like they should be.
It has only been a few months. Things may pick up or maybe it has already peaked. There are new apps on the market daily pushing mine further down the search list. I guess I can dream of hitting the $25 mark so I can call it a wash...
Tuesday, January 25, 2011
Updated my phone to 2.2 Froyo
Samsung finally honored us with the 2.2 (Froyo) update for the Galaxy S line of phones. Of course there was no way to know about this other than monitoring the forums on T-Mobile as this is not an OTA update, you have to use Keis and manually do the update. This was all explained with images on the T-Mobile forum.
A quick copy of all my pictures / videos was performed. Basically I copied everything off the SD card. I lost nothing here so this was not required but still advised.
I downloaded Keis, installed it, did a reboot, ran it and it needed to install an update to itself. Next I plugged in the phone and told it to start up in Keis mode after I connected the USB cable. It said it was connecting but did not so unplugged and plugged in again and it worked. I was not using the cable that came with the phone but that did not appear to be the issue. I was using a USB port on the back of my machine via a USB extension cable.
It then said I had updates and downloaded them the put them on the phone with a single phone reboot. I lost my home screen icons as it put the ones out there that Samsung and T-Mobile decided I needed the most. Deleted all that crap and reset to what I basically remember my phone being set to and I was off and running.
I must say I was expecting more initially. Things really look the same. There are little tweaks here and there, good tweaks so far, but nothing major seems to have changed. I don't know what I expected but I guess I wanted some WOW factor that I did not get.
The tweaks I have noticed:
The update was smooth enough and did not appear to break anything so I also updated my wife's phone. She has the exact same model. I showed her the changes I had found and asked if they liked / wanted them first. Of course it had to redownload the binaries. Thought maybe it would have cached them to disk but I guess most will only update one phone so that is understandable. I wrote down what she had on her home screens and tried my best to recreate them after the reboot. She will enjoy a lot of the changes more than I do as she gets a lot more email, uses the calendar more than I do and checks the weather more often too.
Good to be up to date. I have not tried out any Flash games or sites as of yet. Don't know if the phone is any faster / slower than it was before. I connected to both of my Blue Tooth devices this morning (ODBII reader I use with Torque and standard car BT talk on phone + music) without a hitch.
I have not had the phone for long and have never rooted it or really done anything out of the norm with it. I use it as my main development device at home and work. I had to install new USB device drivers to get ADB to work again. They installed via Kies installed at home and work. So far so good.
A quick copy of all my pictures / videos was performed. Basically I copied everything off the SD card. I lost nothing here so this was not required but still advised.
I downloaded Keis, installed it, did a reboot, ran it and it needed to install an update to itself. Next I plugged in the phone and told it to start up in Keis mode after I connected the USB cable. It said it was connecting but did not so unplugged and plugged in again and it worked. I was not using the cable that came with the phone but that did not appear to be the issue. I was using a USB port on the back of my machine via a USB extension cable.
It then said I had updates and downloaded them the put them on the phone with a single phone reboot. I lost my home screen icons as it put the ones out there that Samsung and T-Mobile decided I needed the most. Deleted all that crap and reset to what I basically remember my phone being set to and I was off and running.
I must say I was expecting more initially. Things really look the same. There are little tweaks here and there, good tweaks so far, but nothing major seems to have changed. I don't know what I expected but I guess I wanted some WOW factor that I did not get.
The tweaks I have noticed:
- GMail application has more buttons that don't scroll off screen when you scroll the text of the message. Reply, Reply All, Next Msg, Prev Msg, etc. This is very nice.
- GMail - easy access to more than one account with account name along top of screen.
- Bluetooth (BT) - turn it on and you instantly see what devices it is scanning against to connect to.
- BT - turn it off from notification drop down and it just turns off, no need to pop up screen and press the check box to toggle it off
- Settings menu now has color icons
- Menu screen search control has drop down of things to search against (All, Web, Apps, Contacts)
- Accuweather on daily briefing has new layout and more information
- AP Mobile news on daily briefing has news type tabs
- You can stop auto rotation from the notification toolbar
- WiFi calling application (I have not used this)
- New USB debugging enabled icon
The update was smooth enough and did not appear to break anything so I also updated my wife's phone. She has the exact same model. I showed her the changes I had found and asked if they liked / wanted them first. Of course it had to redownload the binaries. Thought maybe it would have cached them to disk but I guess most will only update one phone so that is understandable. I wrote down what she had on her home screens and tried my best to recreate them after the reboot. She will enjoy a lot of the changes more than I do as she gets a lot more email, uses the calendar more than I do and checks the weather more often too.
Good to be up to date. I have not tried out any Flash games or sites as of yet. Don't know if the phone is any faster / slower than it was before. I connected to both of my Blue Tooth devices this morning (ODBII reader I use with Torque and standard car BT talk on phone + music) without a hitch.
I have not had the phone for long and have never rooted it or really done anything out of the norm with it. I use it as my main development device at home and work. I had to install new USB device drivers to get ADB to work again. They installed via Kies installed at home and work. So far so good.
Thursday, December 30, 2010
Synchronized Android and iPhone development
I have been working on both the Android and iPhone. We plan on releasing a new version of our app on the iPhone and the first version ever on the Android. My goal was to get the Android side to match the feature set of the iPhone side. Of course I ended up making some improvements on the Android side while I was at it. That meant I had to move those changes over to the iPhone.
At first I was pretty worried it was going to take a long time to move the changes over. Turns out I know just enough on the Xcode side that I was able to move almost all the changes over in less than one day. I am still not a big fan of Xcode / Objective C but I am getting faster at using it.
Since I had them both running it was time for some side by side comparisons. First thing I found out was our appointment recurrence code was not correct on the iPhone. The original author is no longer with the company so I needed to just figure it out. I had written that code from scratch on the Android earlier in the week. Lots of bitmask operations and all sorts of fun date manipulations. I thought porting it would be a big pain but it was not bad. I just looked up "day of week NSDate" and a few other things to be able to get to the source code snippets I needed. The one big difference is pulling time in Java is in milliseconds and in seconds in Objective C so I changed my math by a factor of 1,000 to fix that. Everything else ported very cleanly.
Below are my thoughts on differences I found. I am not saying either one is better than the other, just listing differences and annoyances I found with each platform. I have not used either platform for an extensive period of time.
Differences:
(iPhone is really a version 2 iTouch, Android is my Samsung Galaxy S)
iPhone - Top of screen is used to show where you are and have a button to get back to previous screen. Gives you a bit of an odd look as the "Title" of the screen is not centered due to the button to its left.
Android - Title is over data and centered. There is a back button on every phone to take you back to the previous screen. Of course you don't always know where back happens to be.
iPhone - Layouts we are using take longer to generate and paint. Most likely due to slower hardware and I don't believe the layout code being used is very optimized. It is using WebUI for some things and I am sure that part of the issue.
iPhone - rotating phone forces you to watch the rotate animation. Look, animations are cool and all but I really just want to get work done. Maybe they should allow you to turn that off.
Both - the standard date picker stinks. They are both very similar with iPhone doing a fancier pinball wheel display but they both suck when you want to get to a specific date quickly. On the Android side phones are not consistent in what they show, some show the day of week which I think is very useful and others don't. Pressing a [+] button 10 times to get to a date in the past is crappy. Trying to stop a spinning wheel with any sort of accuracy is no fun either. At least on the Android you can click on a field (month, day, year) and just type what you want. On the iPhone all you get is the spinner.
Both - Each platform has a perfectly fine date chooser in their base calendar applications. Oddly only the one on the Android allows you to rotate the screen. What logic Apple used to decide which base apps supported screen rotation and which ones don't truly escapes me. I need to find or write a date selection control similar to the base calendar controls that shows an entire month at a time with simple arrow keys to change month or year. Obviously people can accurately finger pick a date this way.
Android - I wish you could just plug-in any phone and dump the APK to it. Instead I end up hunting down USB drivers to make things work. Some phones have the USB drivers on them and will transfer them to the computer when you plug them in and others require a web search. We need to set up a mini-market on a server so I can just put the app there to let QA get to it. Once the driver is installed the copy to device is very easy, just the initial setup that stinks.
iPhone - You must provision each device with Apple to install anything on it. All devices use same USB driver. Every time you plug in a device is fires up iTunes and wants to sync which I find annoying. I run / debug in the simulator and only plug in the device for final testing. I have only ever used one iPhone device on my Mac so I don't know what will happen when I attempt to plug-in another one.
iPhone - I hate typing my password, which has numbers and uppercase letters. Too many presses to navigate to numbers etc. Android is easier with the long press to get to the one number I have in my password. Of course I have to type this a ton of times a day during testing. This is where the Simulator comes in handy, just type on the keyboard.
Android - Fonts look better. Bold looks more bold. I am using bold to help the data stand out from the labels. It just looks better on my Android device than on my iTouch device. I know it is a much better screen. I really want to see what it looks like on an iPhone 4.
iPhone - Touch input seems a bit more accurate. We have images next to certain lines of text that you press to invoke a mini-text editor. Seems to work easier on the iPhone. Could be a bigger touch target, could be screen differences.
iPhone - If you have a table with sections headers and you scroll the table the section header gets stuck at top of screen until the next section header hits it, the first section header then scrolls off and the second section header sticks. This is actually a pretty cool effect that you get for free.
iPhone - I still don't like Interface Builder and Xcode being separate applications. I did set up Spaces on the Mac and I plan on running each on their own virtual screen. I wish I had a dual monitor setup on my Mac like I do on my PC. I find it too easy to click off the UI element I am working on to get the focus rectangle to disappear so I can see what the layout looks like and accidentally click on some part of Xcode meaning the whole focus shifts and I have to meta+tab back to Xcode. This should be fixed with Xcode 4 when that gets released.
Totally random side note that still applies to this as it affects my programming
I asked for and got a set of Sennheiser wireless headphones for Christmas. The wired headphones I used at work had a pretty short wire and if moved to my right to use the Mac I would get a tug. Wireless seemed the way to go. I checked with some buddies and most said wireless sucks in general unless you get Sennheiser. The RS-120 seems like the way to go, decent price and rechargeable.
The verdict? I am very happy with the headphones. They were shutting off on me at first then I found a web post that you need to crank up the volume out of the computer and use the volume adjustment on the headphones to tweak the sound. Once I did that no more issues in that area.
Sound quality is very nice. They do a good job covering my ears. I can still hear people around me if needed. Could be a little more bass but that could be my sound source too. I did some tweaking in my sound card settings panel to help them out.
They are lighter than I figured they would be. I have Sony wired headphones that weigh more. Nice to not have much weight on your head. Good padding on the top of the adjustable over the head band.
The one thing I don't care for involves pausing sound. If the headphones are not getting a sound signal they output static, not super loud in my case as I don't run them loud at work but if your sound feed stops you get an earful of static. I generally hit the off switch on the headphones and pause button at same time. I also start the music before I put the headphones back on. User training but I wish it just went silent instead of static.
At first I was pretty worried it was going to take a long time to move the changes over. Turns out I know just enough on the Xcode side that I was able to move almost all the changes over in less than one day. I am still not a big fan of Xcode / Objective C but I am getting faster at using it.
Since I had them both running it was time for some side by side comparisons. First thing I found out was our appointment recurrence code was not correct on the iPhone. The original author is no longer with the company so I needed to just figure it out. I had written that code from scratch on the Android earlier in the week. Lots of bitmask operations and all sorts of fun date manipulations. I thought porting it would be a big pain but it was not bad. I just looked up "day of week NSDate" and a few other things to be able to get to the source code snippets I needed. The one big difference is pulling time in Java is in milliseconds and in seconds in Objective C so I changed my math by a factor of 1,000 to fix that. Everything else ported very cleanly.
Below are my thoughts on differences I found. I am not saying either one is better than the other, just listing differences and annoyances I found with each platform. I have not used either platform for an extensive period of time.
Differences:
(iPhone is really a version 2 iTouch, Android is my Samsung Galaxy S)
iPhone - Top of screen is used to show where you are and have a button to get back to previous screen. Gives you a bit of an odd look as the "Title" of the screen is not centered due to the button to its left.
Android - Title is over data and centered. There is a back button on every phone to take you back to the previous screen. Of course you don't always know where back happens to be.
iPhone - Layouts we are using take longer to generate and paint. Most likely due to slower hardware and I don't believe the layout code being used is very optimized. It is using WebUI for some things and I am sure that part of the issue.
iPhone - rotating phone forces you to watch the rotate animation. Look, animations are cool and all but I really just want to get work done. Maybe they should allow you to turn that off.
Both - the standard date picker stinks. They are both very similar with iPhone doing a fancier pinball wheel display but they both suck when you want to get to a specific date quickly. On the Android side phones are not consistent in what they show, some show the day of week which I think is very useful and others don't. Pressing a [+] button 10 times to get to a date in the past is crappy. Trying to stop a spinning wheel with any sort of accuracy is no fun either. At least on the Android you can click on a field (month, day, year) and just type what you want. On the iPhone all you get is the spinner.
Both - Each platform has a perfectly fine date chooser in their base calendar applications. Oddly only the one on the Android allows you to rotate the screen. What logic Apple used to decide which base apps supported screen rotation and which ones don't truly escapes me. I need to find or write a date selection control similar to the base calendar controls that shows an entire month at a time with simple arrow keys to change month or year. Obviously people can accurately finger pick a date this way.
Android - I wish you could just plug-in any phone and dump the APK to it. Instead I end up hunting down USB drivers to make things work. Some phones have the USB drivers on them and will transfer them to the computer when you plug them in and others require a web search. We need to set up a mini-market on a server so I can just put the app there to let QA get to it. Once the driver is installed the copy to device is very easy, just the initial setup that stinks.
iPhone - You must provision each device with Apple to install anything on it. All devices use same USB driver. Every time you plug in a device is fires up iTunes and wants to sync which I find annoying. I run / debug in the simulator and only plug in the device for final testing. I have only ever used one iPhone device on my Mac so I don't know what will happen when I attempt to plug-in another one.
iPhone - I hate typing my password, which has numbers and uppercase letters. Too many presses to navigate to numbers etc. Android is easier with the long press to get to the one number I have in my password. Of course I have to type this a ton of times a day during testing. This is where the Simulator comes in handy, just type on the keyboard.
Android - Fonts look better. Bold looks more bold. I am using bold to help the data stand out from the labels. It just looks better on my Android device than on my iTouch device. I know it is a much better screen. I really want to see what it looks like on an iPhone 4.
iPhone - Touch input seems a bit more accurate. We have images next to certain lines of text that you press to invoke a mini-text editor. Seems to work easier on the iPhone. Could be a bigger touch target, could be screen differences.
iPhone - If you have a table with sections headers and you scroll the table the section header gets stuck at top of screen until the next section header hits it, the first section header then scrolls off and the second section header sticks. This is actually a pretty cool effect that you get for free.
iPhone - I still don't like Interface Builder and Xcode being separate applications. I did set up Spaces on the Mac and I plan on running each on their own virtual screen. I wish I had a dual monitor setup on my Mac like I do on my PC. I find it too easy to click off the UI element I am working on to get the focus rectangle to disappear so I can see what the layout looks like and accidentally click on some part of Xcode meaning the whole focus shifts and I have to meta+tab back to Xcode. This should be fixed with Xcode 4 when that gets released.
Totally random side note that still applies to this as it affects my programming
I asked for and got a set of Sennheiser wireless headphones for Christmas. The wired headphones I used at work had a pretty short wire and if moved to my right to use the Mac I would get a tug. Wireless seemed the way to go. I checked with some buddies and most said wireless sucks in general unless you get Sennheiser. The RS-120 seems like the way to go, decent price and rechargeable.
The verdict? I am very happy with the headphones. They were shutting off on me at first then I found a web post that you need to crank up the volume out of the computer and use the volume adjustment on the headphones to tweak the sound. Once I did that no more issues in that area.
Sound quality is very nice. They do a good job covering my ears. I can still hear people around me if needed. Could be a little more bass but that could be my sound source too. I did some tweaking in my sound card settings panel to help them out.
They are lighter than I figured they would be. I have Sony wired headphones that weigh more. Nice to not have much weight on your head. Good padding on the top of the adjustable over the head band.
The one thing I don't care for involves pausing sound. If the headphones are not getting a sound signal they output static, not super loud in my case as I don't run them loud at work but if your sound feed stops you get an earful of static. I generally hit the off switch on the headphones and pause button at same time. I also start the music before I put the headphones back on. User training but I wish it just went silent instead of static.
Tuesday, December 21, 2010
Finally have my app on the iPhone building / installing
This has been a long drawn out battle with the Mac, Apple and Xcode but I finally have my app running on the iTouch. It all starting trying to get an account with Apple so I could get a developer key. The account got hosed and it took many phone calls and emails to get it fixed. It was over a month and a total refund with cancellation of account to make it happen.
Yesterday I finally get a developer certificate set up. I plug in the iTouch which fires up iTunes which wants to do an install of latest iOS. I let it do that and then fire up Xcode where it says it can not work with the attached device even though it is registered with Apple under my account. I try to provision it but that only annoys it as I am not the company administrator. After looking up various things on the web I land on the dialog that states my SDK it out of date so Xcode can't deal with the device.
Hit the Apple site to download the SDK update, it is 3.5g! Honestly I could download every Java IDE out there for pretty much every OS and not add up to 3.5g of download. There is no "upgrade" either, you download the whole damn thing. Guess that makes it easier for Apple and keeps every Apple user out of trouble but it is a huge waste of bandwidth. Nothing I can do about it so I start the download knowing I will not be able continue my experiment until the next day.
This morning I installed the new SDK. That goes cleanly so I plug in the iTouch. It does not recognize it but asks to talk to it for a bit to discover things. No problem there. Do a build but it will not work on the device as the architecture does not match. I dig around in project properties - and remember this has all worked just fine in the iPhone simulator - and change it all from armv7 to armv6 and armv7. Build and it is mad, clean and build and it is still mad. Do more Google work and find another place you have to set it to armv6. Build and mad, clean and build and it seems to be mad but still it pops up on the device.
Runs just fine but I see a small change I want to make so I adjust the code and the build / run on device is no longer mad. Everything appears to be in working order at this time but it sure was a long battle. I know I had a minor battle with my Android phone to get proper USB drivers installed but everything else was very smooth. Even the USB battle only took a few hours tops, the iTouch battle was over a month. I really wanted this in place before Apple shut down for the holidays. Happy it is working but very frustrated with the overall developer experience with Apple.
Today I get to go back and work on the Android code base. Will be much happier over there but I am really glad I got the code pushed to the iTouch finally.
Yesterday I finally get a developer certificate set up. I plug in the iTouch which fires up iTunes which wants to do an install of latest iOS. I let it do that and then fire up Xcode where it says it can not work with the attached device even though it is registered with Apple under my account. I try to provision it but that only annoys it as I am not the company administrator. After looking up various things on the web I land on the dialog that states my SDK it out of date so Xcode can't deal with the device.
Hit the Apple site to download the SDK update, it is 3.5g! Honestly I could download every Java IDE out there for pretty much every OS and not add up to 3.5g of download. There is no "upgrade" either, you download the whole damn thing. Guess that makes it easier for Apple and keeps every Apple user out of trouble but it is a huge waste of bandwidth. Nothing I can do about it so I start the download knowing I will not be able continue my experiment until the next day.
This morning I installed the new SDK. That goes cleanly so I plug in the iTouch. It does not recognize it but asks to talk to it for a bit to discover things. No problem there. Do a build but it will not work on the device as the architecture does not match. I dig around in project properties - and remember this has all worked just fine in the iPhone simulator - and change it all from armv7 to armv6 and armv7. Build and it is mad, clean and build and it is still mad. Do more Google work and find another place you have to set it to armv6. Build and mad, clean and build and it seems to be mad but still it pops up on the device.
Runs just fine but I see a small change I want to make so I adjust the code and the build / run on device is no longer mad. Everything appears to be in working order at this time but it sure was a long battle. I know I had a minor battle with my Android phone to get proper USB drivers installed but everything else was very smooth. Even the USB battle only took a few hours tops, the iTouch battle was over a month. I really wanted this in place before Apple shut down for the holidays. Happy it is working but very frustrated with the overall developer experience with Apple.
Today I get to go back and work on the Android code base. Will be much happier over there but I am really glad I got the code pushed to the iTouch finally.
Subscribe to:
Posts (Atom)