Michael Olivero
The official blog of Michael Olivero, Software Architect & Humble Entrepreneur

iPad Air Verizon vs AT&T vs T-Mobile vs Sprint can I use SIMM from any on another?

Wednesday, 6 November 2013 00:49 by Michael Olivero

Everyone is feverishly asking if it's possible to use AT&T iPad Air with a Verizon SIMM or vice versa, a Verizon iPad Air with an AT&T SIMM?  How about a T-Mobile on a Verizon iPad and vice versa?

First lets clarify some confusion with 3rd generation and 4th generation iPad.  While it is true you can purchase an Verizon iPad and use an AT&T ximm card in it, you will only achieve the 3G or 4G speeds available on AT&T -- not AT&T's LTE speeds.

With iPad Air (5th generation), are iPads all the same model hardware and they are only differentiated by having the corresponding telco's simm card in the device for your convenience.  To confirm, this statement here is screen shot of Apple's web site on their LTE coverage vs. iPad model.  Notice how only one hardware model of iPad Air exists for all LTE telco's on the right.

 

When you compare this to iPad 4th generation, there were two hardware models as shown.

So in summary, no matter which iPad Air you purchased you do not need to swap the hardware to be compatible with another carrier's LTE network in the US.  Simply get the correct sim card and activate it.

Tags:   ,
Categories:   iPhone / iPad
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Bank Failures App 1.0

Friday, 28 December 2012 17:44 by Michael Olivero

Over the fall quarter of 2012, we created the Bank Failures app for iOS.  I thank a colleague of mine for the detailed graphics and CSV parsing library we ended up using extensively for this and other apps. The idea is very simple -- banks have been failing at a very fast pace since 2008 and there is no easy way to access this information in an organized way to search or simply filter this data by year or by state.

Since we were applying techniques in iOS development, we decided to leverage this need while at the same time applying advanced UI techniques in iOS such as UITableView among others. A recently blog covers some interesting details with UITableView's.

The following are some screenshots of the app as submitted to the Apple App Store.  In a future blog update, I will decompose the entire application from the nightly process which pulls bank data from us government web sites to the filtering, tab views, etc.

Setting UITableView rowHeight property dynamically when reusing UITableViewCell via xib / nib

Monday, 1 October 2012 14:07 by Michael Olivero

xCode allows for multiple convenient ways for configuring the UITableView cells.  Using one of default custom configurations, specifying it in storyboard as a prototype, specifying it in a nib file which is then reused, and simply creating it in code directly.  While developing an app which makes use of the UITableView, I came across an interesting dilemma where I wanted the flexibility of using xCode's UI to configure it however I wanted to avoid certain issues each approach carries as described below.

One approach is to define each UITableViewCell as a prototype of each UITableView directly in storyboard as shown below,

however if there are going to be multiple UITableViews displaying cells in a similar fashion, the inclination is to configure them repeatedly in each UITableView.  This is very repetitious and may even lead to inconsistencies if one is not careful and generally is considered bad programming practice similar to copying a pasting an entire method just to make one small modification within.  One can improve upon this approach by inheriting a common base UITableView class where the configuration is specified in code, however this defeats the flexibility of using xCode's UI to custom configure the UITableViewCell's various sub views.

Another approach is defining the UITableViewCell in a separate nib / xib file, you can then register the nib and reference the UITableViewCell for reuse accordingly from any UITableView controller.  This method retains the configurability of the UITableViewCell via the xCode interface as shown below.

 

When reusing the UITableView cell in this fashion however, most online examples indicate to register the nib file for reuse and then dequeue as usual to populate the data for each individual cell.  The problem here is, the UITableView's rowHight property is not updated automatically as it is when one specifies the UITableViewCell as a prototype and at run time, you may see something like this:

 

 

Many online blogs emphasize the height should be specified as part of the cell construction while executing with the cellForRowAtIndexPath method within the UITableViewController.  The problem I have with this solution is quite frankly, even though perhaps only 10 or actual cells will be constructed and then reused, this code is repeated unnecessarily for those 10 or so times.

The easier route is simply to specify a fixed height in the nib file, say 60 and then specifying the same 60 points in the UITableView's rowHeight property as shown in both images below.

 

 

 This will produce the balanced height we are seeking as shown below:

 

While this has improvements on reuse as we will have consistently looking UITableViewCell's throughout our various controllers and retains the ability to configured and edited via the xCode UI, it still has the ill effect of having to maintaing the rowHeight in two or more different places whenever the height changes and is not yet to my satisfaction of cleanliness.

Further research online reveal many blogs emphasizing the implementation of the heightForRowAtIndexPath method for the UITableViewController. This method is great when there are UITableViewCells with dynamically varying content which need varying height for each cell, however this is not the case here. The problem with this approach continues to be the repeated calls for a UITableViewCell which doesn't vary in height.  Furthermore, in the various examples I found not only is the height specified repeatedly, but registration of nib is repeated as well and some additional lines of code which could also be avoided.

 

The Solution:

Since in this particular example, the UITableViewCell height will remain the same across all sections and rows and UITableViews, it makes sense to programmatically tell the UITableView it's rowHeight much like we would via the xCode UI, however do so once and be done with it.  The value should also be extracted programmatically from the UITableViewCell residing in the nib / xib file so if the height is ever changed in the future via the design tools, the UITableView is automatically adjusted accordingly without any further intervention in the code.

To accomplish this, the logical place to put such code would be in the UiTableViewController's viewDidLoad method as this code is executed once regardless of the number of rows to rendered.  In this method, we simply load the nib by name, register this nib with the UITableView, and then simply set the rowHeight of the UITableView to match the height of the first view in the nib which we already know is simply a UITableViewCell.

 

    UINib* nib = [UINibnibWithNibName:@"ADTableViewCell"bundle:nil];

    [self.tableViewregisterNib:nib forCellReuseIdentifier: [ADCustomCellIdentifier]];

    self.tableView.rowHeight = ((UITableViewCell*)[[nib instantiateWithOwner:selfoptions:nil] objectAtIndex:0]).bounds.size.height;

 

In the example code above, we additionally reference a predefined class method for the cell identifier we conveniently placed in the strongly typed class representing the UITableViewCell with [ADCustomCell Identifier].

Tags:   , , ,
Categories:   iPhone / iPad | Software
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Microsoft Surface with VaporMG and Liquidmetal for Apple Mobile devices

Tuesday, 19 June 2012 18:25 by Michael Olivero

Today's announcement, aside from all the bells and whistles of their unique approach in making a content creation device as much as a consumption device, was the use of VaporMG (pronounced Vapor Mag).  When I saw the detailed presentation by Panos Panay, the general manager of Microsoft Surface, I was intrigued at his continual use of the word perfect and the variations there of predominantly centered around the material, the feel and precision of it.

The first thing that came to mind after seeing VaporMG is the strong resemblance to Liquidmetal Apple is expected to use soon.  In the case of Surface, magnesium, is injected into molds allowing for very high precision craftsmanship at unbelievably small thicknesses such as .65mm in the case of the Surface -- a similar process and technology is also applied with Liquidmetal.  I'm not certain if this was a mere coincidence, but on the same day the Surface was announcement, Apple decided to extend their exclusive license to Liquidmetal for another 2 years.  Apple originally acquired an exclusive license to Liquidmetal back in 2010 for mobile devices and is highly rumored to be used in the next iPhone.  Recent leaks of a very thin metallic like enclosure, if legitimate as many have been in the past, provides some support for this rumor, however we will not know for sure until Apple releases their iPhone 5 around October 2012.

I praise Microsoft for taking a full frontal attack on mobile.  I praise them for thinking out of the box in creating a content creation device as much as a content consumption device.  I have to admit, many times I've wanted to create a blog entry and didn't quite find the right convenience to do so with the screen-based touch keyboard and even found it somewhat inconvenient to pair up the bluetooth keyboard as well.  Having the keyboard integrated into the cover seems like a novel tradeoff to both scenarios.

In summary, competition is great for innovation and I look forward to awesome Liquidmetal or VaporMG products to come in the near future from both companies.

Some references:

Liquidmetal:
http://www.liquidmetal.com

Apple Extends Exclusive License to Liquid Metal: 
http://www.appleinsider.com/...exclusivity_for_two_more_years.html

iPhone5 Liquid Metal Enclosure Leak: 
http://www.youtube.com/watch?v=8XY841RAY4Y

Tags:   , , ,
Categories:   iPhone / iPad
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Apple Siri Commands - Friends

Tuesday, 12 June 2012 20:44 by Michael Olivero

Here are some Siri sample to interact with Friends

Checking Up on Friends

  • Where's Mike?
  • Where is my sister?
  • Is my wife home?
  • Where are all my friends?
  • Who is here?
  • Who is near me?
Tags:   , , ,
Categories:   iPhone / iPad | Mac
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Apple Siri Commands to interact with the Address Book

Tuesday, 12 June 2012 18:51 by Michael Olivero

Here are some Siri sample to interact with the Address Book

Query Contacts with Siri

  • What's Michael's address?
  • What is Mary Jane's phone number?
  • When is my wife's birthday?
  • Show Rick's home email address

Finding Contacts with Siri

  • Show Jason Smith
  • Find people named Rick
  • Who is Michael Rodriguez

Relationships with Siri

  • My mom is Martha Smith
  • Michael Smith is my brother
  • Call my brother at work
Tags:   , , ,
Categories:   iPhone / iPad
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Cross Multiply Mental Calculation iPhone App Ver 1.1

Saturday, 12 May 2012 17:33 by Michael Olivero

 

 

This is the latest update to the original cross multiplication application released a few weeks ago -- original posting here

Version 1.1 of the app allowed me to practice with threading as well as state.  The app has an interactive timer which is not intrusive by starting/stopping automatically.  Your best error-free scores are saved so you can challenge yourself to beat it over and over.

 

Cross Multiply Mental Calculation iPhone App

Friday, 27 April 2012 19:42 by Michael Olivero

Update 5/9/2012:

 

-------------------------------------------------

Yusnier Viera, a former co-worker and current world record holder in calendar mental calculation, brought to my attention the concept of cross multiplying.  After learning the basics and practicing over time, I have been able to successfully multiply upto four digit by four digit computations in my head.  Since the exercise is stimulating and to a certain extent entertaining, I decided to build an iPhone application to easily practice.

Unlike paper and pencil, using an iPhone app allows for immediate feedback while entering the answer.  I've been learning how to develop iOS apps for both iPhone & iPad and I am on the verge of releasing this application.  Since I'm anxious to get it out to the world, I have defer creating the tutorial, the statistics page as well as game center integration, until future updates.

I decided to give the app a representative iconic person, so Einstein fit the bill.

 

Once loaded, you are presented with the home screen where you can link out to a video tutorial or simply start the app.

 

 

Once started, you can interactively create up to 4x4 multiplications to test your mental calculating abilities.  In a future update, I'll hook it up to game center and keep track of best times for each type as well as increase the scale up to 8x8.

 

Tags:   , , , ,
Categories:   iPhone / iPad
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

iPad3 WiFi connection issues resolved

Thursday, 5 April 2012 21:51 by Michael Olivero

I believe I have a solid work around for the the wifi issue where disconnects occur. First it appears only to happen when connecting to wireless-n connections. Wireless-g doesn't seem to have any problems.  Note this is only for the repeated disconnects and has nothing to do with the low signal issue some have mentioned. For the record, I have a 32gb Verizon iPad.

The symptoms are as follows.  

Symptoms:

  • You connect fine and surf fine. Put the iPad to sleep or come back to it later after sleeping automatically and your wifi is not connected.
  • When tapping the previously connected wifi to reconnect you are usually asked to enter the password again.
  • When you connect the first time, it says failed to connect but re-tap the join button it connects.
  • If you turn off wifi and then turn it back on  it doesn't reconnect.
  • Once connected to the wifi, if you click on the right arrow to go to the details you will NOT see the "forget this wifi" button even though you are connected.
 
 

If you fall in any of those scenarios, this WILL solve your problem in the interim until Apple updates software. In short it seems as though the wifi is not stored or remembered.

 

Solution:

Configure wifi manually, explicitly typing your wifi's broadcast name, explicitly choose the security your wifi is using (wep, wpa, wpa2, etc. ) and then proceed to enter your password. Once connected if you go to the details of the connection you should see the "forget this wifi" button. If you do, you can now rest assured it will allways reconnect and  the above symptoms can no longer be reproduced.

4/12/2012 Addendum:

Not sure if this is related or not, however I have the "Ask to Join Networks" feature off in the wifi settings too. 

 

4/13/2012 Addendum:

Here I show how easily I can reproduce the automatic disconnects because the iPad doesn't remember the wifi connection.  My solution, and working now for weeks without a problem, has been to set it up manually.  Interestingly, after setting it up manually, I haven't had to set other networks manually as they connect and remember fine.  It's only the first one it seems or my home one.

5/2/2012 Addendum:

Updating the router firmware has resolved this issue in two separate situations (my home and a friends home).

Good luck!

Tags:   , ,
Categories:   iPhone / iPad | Mac
Actions:   E-mail | del.icio.us | Permalink | Comments (5) | Comment RSSRSS comment feed