Traveling Abroad with the iPhone

Recently, I visited London and Cardiff on vacation and took my iPhone with me. I knew ahead of time I would like to get the most use out of it, without incurring ridiculous roaming fees, so I planned ahead. This article discusses a number of different solutions and the benefits and limitations of each.

My Goal: Use maps with GPS tracking while traveling abroad

Although the native Google Maps application will not function on the streets of London without an Internet connection, there are applications that you can download ahead of time that will. One application that I liked in particular was OffMaps for the iPhone. It allows you to download maps of any city or region ahead of time, as well as select city guides. The map download is extremely customizable, including selecting the map’s level of precision. The only downside was that these maps/guides have to be downloaded directly by the iPhone (WiFi or 3G) and can take hours to retrieve. I would have preferred an option that let you download the maps from iTunes, utilizing a wired Ethernet connection. Also, you must download maps for all areas you intend to visit ahead of time, as even WiFi connections can be costly and limited abroad.

While I did try other, often city-specific applications, but I wasn’t as impressed with them as OffMaps. Plus, I was able to configure the same application for multiple cities prior to my trip.

After downloading an offline map application, my second goal was to enable GPS. This as it turns out, is trickier than I thought.

Solution 1: Leave the iPhone at home

I considered leaving it at home, but it’s really hard to organize a car service on your return trip if they have no way to reach you. Also, it’s useful to check the time and recent e-mail since my cell phone has replaced my watch as my mechanism for keeping time. Finally, the iPhone is nice for watching TV and movies on the plane as well as listening to music while traveling.

Solution 2: Put the iPhone in Airplane Mode for the entire trip

Most blogs I visited prior to departure recommended putting my iPhone in Airplane Mode for the length of my trip, as it allows you to use WiFi without any possibility of incurring roaming fees. The problem, though, is that it also disables the phone’s GPS, so that you cannot track your current location. Goal failed.

Solution 3: Disable Cellular Data and Roaming

One obvious solution is to go into the General > Network settings and disable cellular data and roaming. There’s a few problems with this though. First, you’re trusting your cell phone not to accidentally charge you for usage. Based on some of the stories floating around the net about being charged thousands of dollars for roaming, that’s just a leap of faith I’m not personally able to make. Second, your battery life is going to be severely limited, because the iPhone will be searching for a signal during the entire trip. Finally, there’s no guarantee some data features won’t continue to process, such as voice mail. With Apple’s Visual Voicemail, the iPhone downloads audio files automatically every time someone leaves you a message. Think of it as a charge anytime someone leaves you a message.

There are steps you can take to disable voice mail while traveling, but I do not recommend them. AT&T has to actually switch your data plan while you’re away, there’s no option to simply disable it. For those with no-longer-available unlimited data plans, switching our data plan can make us a little edgy. Also, there’s no guarantee GPS will work in this environment, although it probably should.

Solution 4: Replace the SIM card

Those absolutely needing international access can buy a SIM from a local carrier. Given that I’m using a US iPhone, and AT&T has severely restricted non-AT&T usage, I wasn’t convinced this would work without jail-breaking the iPhone. Also, there are some security risks from letting your passwords/access transfer over a network you may not be familiar with. Ultimately, I decided this option wouldn’t be worth the headache. If I had a more open, European iPhone, though, I may have felt differently, since in those markets the phone and the SIM are not extremely interconnected.

Solution 5: Lock the SIM card

One excellent recommendation was to install a 4-digit PIN code on the SIM which requires entry every time the iPhone is started and disables all cellular/data communication if not present. The advantage to this is that GPS continues to work in this environment. The only down side is that you have make sure not to forget your PIN code. Also, I had to do a bit of searching to find the ‘default’ pin code that programmed into my SIM card.

Solution 6: Remove the SIM card

Similar to Solution #5, I realized I could just pull out the SIM card. No special tools required, just a paper clip and a plastic bag to put it in (the new Micro SIMs are tiny and easy to lose). Unlike some of the other solutions which rely on software features, this completely prevents data roaming but still allows WiFi usage and GPS support, so it’s the solution I went with. I just left the SIM in a hotel safe and carried the phone around all day. I was successful with my original goal of simulating Google Maps with tracking, as the offline maps and GPS functioned as expected. The only thing I noticed is that true GPS requires much clearer line of site with a satellite. In other words, GPS only functioned when I was out in the open, and sometimes took a while to acquire an initial signal. This is to be expected with GPS technology, but having the iPhone’s data network fix a location faster than traditional GPS has spoiled me over the last few years.

Reflections

Ultimately, downloading the offline maps was the single best step I took prior to my departure. Removing the SIM card was also quite easy to do and gave me peace of mind that the software wasn’t going to ‘accidentally’ allow data connections while traveling. Also, the battery was significantly better with no SIM card, and the iPhone could go for days without charging. I guess the data network usage really does chew up the battery.

Ultimately, GPS was only partially useful, as I was able to figure out where I was on the map pretty quickly based on landmarks. However, had I been traveling in a more difficult-to-navigate city or had a worse sense of direction, I would have probably used GPS more frequently.

visio uml 2 for java (scea)

After taking SCEA part 1 and Core Spring, it is time to work on SCEA part 2.  Or should I say Oracle Certified Master, Java EE 5 Enterprise Architect part 2.  OCMJEA?  It doesn’t matter.  This post isn’t about the SCEA/OCMJEA per se.  This post is about using Visio for current Java UML modeling.  Here’s what I learned or re-learned about Visio.

Why Visio?

You may be wondering why I chose Visio in the first place.  After all Star UML is free.  My original thought was that I have Visio 2002 installed on my machine because I bought a copy when I was in grad school and I am experienced in using it.  In hindsight this wasn’t the best idea.

UML 1 vs UML 2

Visio does not support UML 2.  The SCEA wants UML 2 diagrams.   It looks like the biggest differences are conditional support for sequence diagrams and a new shape for components in component diagrams.

Luckily there are UML 2 stencils for Visio for almost every version of Visio.  Installing them was easy.  It is key to install the stencil before you start creating diagrams as Visio UML shapes can’t integrate with a UML 2 stencil diagram.   The stencils don’t have much documentation, but I found this chart helpful.

Java stereotypes

To add new stereotypes for Java to a diagram, follow these steps to register them.  Then just select the relevant stereotype in your diagram.

  • UML menu > Stereotypes
  • New
  • Stereotype = @Entity (or whatever you want to add)
  • Baseclass = Class, Component or Dependency (depending on the type of diagram)

Java types

To add Java specific types, follow these steps to register them in your diagram.  Then select them in your attributes/operations/methods.

  • UML > Packages
  • New
  • Java types
  • UML > View > Model Explorer
  • Right click java types in model explorer > new >
  • datatype > name

Hiding attributes/operations section in a class diagram

  • Right click shape
  • Shape display options
  • under suppress, click attributes or options

Add documentation to shape in component diagram

  • Right click shape
  • Shape display options
  • Check properties
  • Can add custom property (or documentation) with more detail

Starting a voluntary discussion group

I co-founded a lunchtime discussion group at work five years ago.  As we approach the fifth anniversary, I was reflecting on what went into it.  What worked; what didn’t; what would I do differently.  Our purpose was to have a place to discuss technology that we weren’t necessarily working on and to share knowledge/ideas across teams/departments.

Background

Technically the group started more than five years ago as a technical book club.  That didn’t work because everyone had to read from the same book.  Which requires preparation each meeting.  It also makes it hard to come back after you’ve missed a meeting.  The organizer of that group and I had an informal conversation near the cafeteria hallway about how to improve things and the new group was born!

The new group

We started meeting twice a month and switched to once a month over time.  We have a mix of moderated discussion topics and presentations with heavy Q & A.  At the beginning, we said we would cancel the meeting if there weren’t 4 people in the room.  This hasn’t been a problem in years.

What I consider key to the group’s success

  • We always meet the same day and time – this makes it easy for people to remember when the group meets.  For example, the first Tuesday of the month; the first and third Thursday of the month, etc.
  • Advertising – We advertise through an opt-in mailing list (don’t spam people), telling people who might be interested and putting up physical signs the day of the meeting.  Speaking of which these signs are always the same color/font/logo to encourage branding/memory.  People have even said “you are the blue sign people”.
  • Voluntary – This one is important to me.  Attending the group is voluntary.  Running the group is voluntary.  This means it is not a work thing and does not get billed to work projects.  It also allows the group to remain independent topic wise and FUN.
  • Informal – While we do have presentations, they are usually of an informal type. (Sometimes someone is previewing a formal presentation.)  Again, this is in keeping with the goal of things being FUN.
  • Size of group – We haven’t had problems with the size of the group per se.  We get between 6 and 20 people most months which is a good size.  We’ve been asked about including other offices in other states in the group.  We do have a phone bridge for people within the company and have invited people from one or two other offices on occasion recently.  And this is fine if it is small.  If there are too many from too many offices, it changes the spirit of the group.  And there are already company wide information exchange type groups in place.  This particular item is something we are going to have to monitor so we don’t become victims of our own success and lose the benefits of a New York based group.
  • Varying formats – Having a mix of presentations and moderated discussion has served us well.  Presentations are good when someone has a lot of experience with a technology.  (or can throw something together on it.)  Moderated discussion is good when multiple people have lots of small thoughts.  And the moderator doesn’t have to be an expert.  Just like at JavaRanch where I moderate the BlackBerry forum without knowing anything about BlackBerry development.  Whenever I moderate at the discussion group, I come with a list of questions/talking points.
  • Hook to real work topics – Most of the time topics involve technologies or emerging technologies someone in the company is working on.  Or planning to work on.  Or a cross cutting concern like performance.
  • Range of topics – You’ll notice I said most of the time.  Some of our topics have nothing to do with work.  There’s that FUN thing again.  We also select topics based on what attendees want to hear.
  • Emphasis on interactiveness – While we do have people who just sit and listen, most participants are actively engaged.  This keeps a good dynamic, keeps in informal and keeps it FUN.
  • Different moderators – Trying to have as wide a range of people moderate as possible is helpful.  It gives the group a changing voice.  It helps more people feel invested in the group.  And it gives people a chance to practice leading.
  • Group leaders changing over time – We have had 5 different people co-lead the group at different points it time.  (Co-leaders are good because it is less work and you don’t have to worry about vacations.)  One person left the company.  And two others (including myself) stepped down from actively running the group after getting job responsibilities that would have compromised the informal appearance of the group.  The two of us still attend/moderate and are plenty involved.  But we don’t run it or give the opening/closing remarks anymore.
  • Topic control – I mentioned we are an informal group.  This gives a stronger ability to decline topics.  At times, people from outside the group come to us with ideas.  Some are good ideas and we use them.  Some are “good ideas that don’t fit.”  (There’s no such thing as a bad idea; we like ideas; that’s how brainstorming happens.)  Being able to decline these ideas keeps the group FUN and interesting.

What to think about if starting your own discussion group?

  1. What is your goal?– Knowing what your goal/vision is for the group helps you set it up in a way conclusive to what you want to accomplish.  It also tells you who to advertise your group to.
  2. Do you want it to be official or unofficial?– Both are valid options.  They have different tones/topics/styles and deciding which you have is important.  (Incidentally, the reason I stepped down from running this group is because I became involved with an official one.)
  3. Do you want it to be voluntary or mandatory? – Even an official group is hard to make mandatory.  Beware of this option.
  4. When is good to meet?– Think about when meetings are generally scheduled in your company.  It is ok to change this until you stabilize.  But then try to stick to the same date/time.
  5. What is a good group size?– What is your target?  Is there a number that is too high or too low?
  6. How do you gain critical mass? – It’s much easier to run a group than to start one.  Think about what you can do to get people to come to your first few meetings.

Summary

I used the word FUN a lot in this post.  That’s really the vision for this group.  Good techies are passionate about technology.  While that doesn’t always come out amidst business activities, our group is an opportunity to channel that pure FUN for what we do.