Sunday, November 27, 2016

Painlessly Traveling with International Data

We might waste time on our smart phones at home, but a data connection is a practical luxury when traveling. Wasting time on Facebook is the last thing on our mind on vacation. Our focus returns to the planet around us and to more practical needs. We might translate a menu, navigate to a hotel, or research how to get from Brussels to Maastricht.

Despite the benefits, many of us rely on cafe wifi instead of buying a local mobile plan. We don't want to waste time finding a shop and haggling over a SIM card in French. We want to go directly from our plane to the incredible spectacle of Sainte-Chapelle. We also don't want to pay our carrier expensive roaming fees and risk shocking overage fees.

I spent weeks researching solutions. I found many past-as-you-go international plans offered, but not many good reviews of them. Most of these providers make it difficult to understand how much they charge per megabyte and what kind of connection they provide. I would hate to pay more than my domestic carrier would charge for international roaming. I also want to have access to modern LTE speeds. I don't want to starve to death before finding a decent restaurant!

After a lot of digging, I ordered a GigSky SIM from Amazon. GigSky seemed to offer clear, reasonable rates and seemed to offer LTE connections in most countries. Other providers did offer lower “starting” rates, but I was unable to find documentation of the specific rates I would get. Very few of the other providers gave any indication that more than 3G speeds were available. I was astonished and skeptical that such basic information couldn’t be found for many providers.

In October 2016, I used the GigSky SIM in my unlocked iPhone 6s Plus in the Netherlands, Belgium, and Germany.

GigSky sells data by country. When I was in the Netherlands, I purchased data for that country. As my train to Brussels crossed into Belgium the data stopped. Data service in Belgium required a separate purchase.

As fussy as that may seem, GigSky accommodates even spontaneous travel. The GigSky SIM is configured to provide data to the GigSky app even before you buy data. This means you can purchase a plan without needing WiFi. Within minutes of payment, data is available to all other apps.

Aside from the national boundaries of the GigSky plans, there are also time limits and data caps. For the Netherlands, a $15 plan buys you 100MB of data that lasts 3 days. $25 equals 400 MB over 7 days, $35 is 800 MB for 14 days, and $50 gives you 3 GB lasting 30 days. Prices can vary by location, but this illustrates the trend. More expensive plans give you much more data per megabyte. You can find details on the pricing in each country here

During my travels I usually was able to get a fast LTE connection using GigSky, although occasionally I would have 3G in more remote areas. Aside from a few understandable situations in buildings with thick walls or in caves, the service never left me without data. I was quite thankful to have GigSky at one fancy hotel — the GigSky LTE connection was much faster than the crummy hotel WiFi.

To prepare for my trip, I took several steps to minimize my data consumption. First of all, I downloaded map data in the Google Maps app for most cities I would visit. Downloaded Google Maps lets you see your location and also the map data without any sort of data connection. It also means that when you do have a connection, less data will need to be downloaded when using the app. Despite the local map data, to get directions Google Maps still requires a data connection.

I also disabled background app refresh for all apps on my phone. Background fetch allows apps to fetch data even when you’re not using them — not something I wanted to pay for. I especially didn’t want to pay for social media apps to distract me on vacation.

The GigSky sim was fairly easy to use. I ejected the iPhone’s sim tray using a safety pin and swapped in the GigSky SIM as my 777 descended upon Amsterdam. The one tricky bit was adjusting the cellular settings after installing the SIM card. I saved the GigSky APN configuration file on my iPhone using an Evernote Premium offline notebook to make it easier. A few minutes after landing I was connected to the local carrier and able to buy data through the GigSky app. Seconds after clearing customs, I hailed an Uber.

When I returned to the US, I simply swapped the SIM cards back and my phone was back to normal.

My data usage for the entire ten-day trip averaged about 100 MB a day. Some days I used a little more data, others a little less. I took advantage of free wifi where possible, and I mostly used the data for directions, researching attractions, and communicating with people we were meeting.

My main frustration with GigSky was that the SIM only provides a data connection. If you’d like to send a text message or make a call, you’re (sorta) out of luck. I planned to meet a friend in the Netherlands, and I needed the ability to make phone calls and send SMS messages to make the rendezvous.

Although Skype will let you send cheap SMS messages and inexpensive international phone calls, you can’t receive text messages. Also, unless you buy a phone number from Skype, you can’t receive phone calls either. In both cases, the sending number is one just temporarily used for that purpose.

Other popular solutions for free international text messaging turned out to require verification through a traditional text message. Bah! The whole point was that I couldn’t SMS. Even a SMS app that I previously configured seemed to realize that my SIM had changed and wanted to re-verify by sending me a traditional SMS.

Ultimately I used Skype to communicate with my friend. I explained the odd phone situation so everything worked out.

Since Apple’s iMessage uses data instead of the SMS system to deliver messages to other iMessage users, it worked fine with GigSky. I did have one problem though: for some time I had been inadvertently saving my contacts to my SIM card instead of iCloud. Since I had removed my domestic SIM card, I lost access to many of my contacts. Many of the messages in the Messages app had been reduced to phone numbers. Everything worked fine when I returned to the US and installed my T-Mobile SIM. I’ve since migrated all my contacts off the SIM card.


  • Buying data is quick after the initial setup
  • Data is affordable in larger increments
  • GigSky offers flexibility — an impromptu crossing of borders isn’t a bit deal
  • No contracts
  • The cost of the GigSky SIM Card is offset by offering a free 100 MB plan in the first country you use it in (it expires in 3 days)
  • In most places I received fast LTE connections


  • You can’t use an iPhone as a wifi hotspot with GigSky
  • SMS messaging and Phone calls won’t work with the GigSky SIM card installed
  • You lose access to any contact information you store on your main carrier’s SIM card 
  • Initial configuration will take a little time — I suggest installing the app and activating the card before a trip
  • Smaller data plans are pricey and expire quickly
  • Data plans are tied to a single country
  • The GigSky instructional and marketing material can be confusing

*Moving Average Inc. is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to Buying items through this link helps sustain this blog and is much appreciated!

Sunday, October 30, 2016

A Popular System for Guaranteed Investment Losses

“This market sucks; I just sold all my stock.”
– A friend, first quarter of 2016.

My friend panicked because the stock market dug a hole in his net worth. In his frantic state, he sold all his stock thus purchasing the hole and moving in. 

He wasn't alone feeling dread. Analysts discussed what the drop meant for the economy and our portfolios. Maybe this was “the bubble” popping! Maybe this is a recession. Maybe none of us will ever be able to retire. Or maybe the market was “taking a break” for a while. In any case, I heard no positive interpretations.

Fear of loss damages our capacity for rational thought. My friend didn’t predict the market’s loss — he sold in the dip, not before it. His predictive powers missed the dip. Why did he try to predict again? Selling stock prophesies loss. You wouldn’t sell an asset if you thought the value would increase. He bet a second time on a skill that failed him once.

My friend was so worried about losing money that he didn’t honor the premise of long-term investing. Instead he looked at the trend of the last few days and extrapolated the future. He engaged in market timing – acting on a prediction of the future. My friend was scared of the market’s future.

I felt excited about the dip. Instead of catastrophe, I saw discounts. Now I could buy my favorite investments even cheaper. People like my friend were selling me their stock cheaper because they were nervous about the future.

I went on an index fund shopping spree. I had some extra cash that I didn’t need to spend or keep in my emergency fund. Instead of my scheduled, once a month investment, I accelerated my purchases to several times a week. I didn't use money I would need in the short term. I still invested for the long term. I just did it faster.

Was I timing the market? Yes, I was. I feel a little guilty about that. I invested more frequently because I predicted the market would eventually recover from the dip. I didn’t anticipate a date for a recovery, but a purist would still call it timing. Perhaps I am too emotional in the opposite direction of my friend. Better that than defeating my entire investment plan!

To mitigate my investment risks, I always spread my long-term investments over a variety of index funds owning a diverse collection of assets. If I owned mostly individual stocks and bonds, I may have felt differently. Sometimes individual companies continue to suffer even when the larger market recovers. Sometimes businesses or even nations have permanent problems they never recover from. But I had diversity across asset classes, markets, and sectors.

I also didn’t expect to need the money from my investments any time soon. If I did, I wouldn’t call it long-term investing. I don’t plan to retire in the next ten or twenty years. Barring a cataclysm, the market should be out of the dip before I'd want to retire. Even the Great Depression was over after a dozen years.

My net worth dropped by thousands of dollars. Perhaps that should worry me. Obviously I want the market to shoot up and make me rich, but fluctuation is a natural part of the stock market. Life means fluctuation and change. Seasons come and go. Unexpected events happen. Even the best cities can experience natural disaster. Hurricanes hit New York. San Francisco has earthquakes. Floods fill the basements of the Louvre.

But when the Seine jumps its banks, Parisians didn't sell their homes hoping to buy them back after the flood recedes. We instinctively understand the impracticalities of selling property during a disaster. Stock? Not so much. Investing in the stock market without a tolerance for a drop in value is a guaranteed recipe for losing money. Drops happen. To make money you need to sell with gains, not losses.

Even though we might not have an immediate need for the money, we hate watching our net worth falter. We feel a loss in our net worth much more painfully — and for longer — than an equivalent gain in our net worth. Investment success requires the right mentality.

Instead of thinking “losses”, think discount. Don’t worry about what investments you already have. Pretend you have no investments. Worry instead about whether at this new price you’d like to buy these investments. Or, if you’re capable of more rationality than I am, ignore it all and continue your investment plan unchanged.

Gains in the stock market come from steady growth, dividend re-investment, and occasional periods of rapid growth. Other than scheduled dividends, I know I can’t predict when gains would happen. I’ve lost money trying silly technical analysis ideas. I’ve also lost money reading quarterly reports and looking at fundamentals. I’ve lost money following expensive financial advice. None of that saved the the pain and embarrassment of bleeding money through short-term trading. Predictions have terrible track records.

Since I now admit I can’t predict the future, I no longer sell when things look bad. If I abandoned the market, I would transform my current losses into cash and risk missing out on market gains gains. Was I really prepared to skip dividends and a potential leap in the market? Not a chance. Instead of fleeing, I continue to add money when the markets are down.

My friend? His fear cost him dividends, gains during a fast climb out of the dip, and steady growth of the market to levels above the beginning of 2016. He probably locked in a 8% loss from the start of the year. Meanwhile the market has experienced about a 10% gain from January 1st 2016.

If he continued investing instead of selling when he felt the pain, he could have experienced an 18% gain on his new investments, along with the 10% gain on his previous investments. That’s a missed opportunity turned into a painful loss.

Do you intend your investments for the long term? Do you use a balanced, diverse index fund strategy? Do the research. Does it make sense to stay invested even when the markets are down and CNN is predicting the end of the world? Does it make sense to invest more money in that situation? I think so.

If you agree with me, be strategic. Arrange your investments so that fear won’t motivate the wrong decisions. Automate your investments. Ignore the financial news. Don’t invest money that you will need in the next ten years.*

* This isn’t personalized financial advice. Agree with me at your own risk. Do your own research, run some simulations in a spreadsheet, and consult with professionals who understand your financial situation. Beware brokers and “free” financial advisors. Use professionals who you directly compensate and who don’t have a conflict of interest!

Sunday, October 2, 2016

We Adopted Agile. Where Did We Go Wrong?

Or, how methodologies can lead to misery

Lean. Adkins. Extreme Programming. Paleo. TDD. Agile. South Beach. Scrum. They're all lovely tools for either dieting or organizing the process of software development. Poorly used, they’re a fast path to misery and disillusionment.

Like diets, development methodologies require discipline, effort, learning, and social support to adopt. If on Monday you abruptly adopt a strict diet, you'll feel depleted by Thursday. Unless you possess great willpower and motivation, you’re at risk to slip back to your old eating. A diet builds on many habits buried deeply into our routines and physiology. Changes require more than simple knowledge of the new diet and it’s benefits  Why do we expect an easier time switching software development processes?

Software development methodologies are designed to address specific deficiencies in outcomes. They assume a certain level of proficiency, and a certain ability to change from your current methodologies. If you don’t meet those table stakes, if you have different deficiencies, or if you have additional deficiencies, the methodology won’t be enough.

If you can’t stick to a diet, it can’t help you. Even if you diligently stick to the diet, your lifestyle isn’t healthy unless you also exercise. Failure is also possible if you exercise and eat according to the diet, but do a poor job managing stress. Successfully achieving your goals requires a holistic approach.

The consequences of a poorly implemented software development methodology change read like fine print in a pharmaceutical ad: loss of productivity, attrition, missed goals, and painful meetings.

The Agile Team Myth

One rainy Monday the boss drags my team into our largest conference room. The boss has exciting news: we’re switching to scrum! So begins our development crash diet.

The boss just read a great article about scrum. Unlike our waterfall process, scrum will allow us to ship more feature-rich, higher quality software in less time. Their friend at Initech uses it too, and the whole company adores it. Eighty three minutes and 16 slides later it’s official: we have a new methodology.

Fast forward two months.The visible parts of the process have changed: daily scrum meetings and org charts with scrummy titles and scrummy  shapes. Guess what? Our output may have had a brief spike, but productivity has settled back to the pre-scrum levels. It’s probably somewhat worse.

The team doesn’t work quite like the methodology says it should. Some team members have more political power than others, so they get to skirt the principals of scrum to varying degrees. Other exceptions to the scrum process occur because “we can’t do that here”. Our team also continues some old processes under the cover of borrowed vocabulary from the “new methodology”.

Where we do adhere to scrum, we feel anxious because we’re not comfortable with the new process. Because we make mistakes learning our new methodology, things take longer, and we receive frequent negative feedback. Sometimes the boss makes a mistake and reprimands us for following scrum. Relationships between QA, product management, developers, and management become strained. Everyone looks tired.

Some team members feel cynical about the change. They note that now team successes are attributed to the boss’s scrum decision while scrum failures land on the team or individual members. Others are starting to reply to recruiters.

Some individuals are confused or distracted by the chaos of a new process. Others withdraw, ignore scrum and just focus on their area of expertise.

The team suffers from change indigestion. New methodologies require a stack of new skills and habits. Each one requires practice and feedback to master. Teaching one person a new skill requires a lot of effort. Teaching ten people thirty skills all at once requires magic. Teaching ten people thirty skills while they continue their normal work lies beyond even magic’s abilities. We have too many new tasks — we can’t be good at them all.

The team resists scrum. Because a manager imposed the process without input from the rest of the team, we don’t feel committed, nor do we have the same expectation of benefits. Forcing such a large change steals autonomy. Crippled autonomy means less ownership and motivation. The reduced feeling of control over our work environment makes us less happy.

Methodologies Promise Better Teams But Only Deliver Better Tools

Like fad diets and nutritional supplements, the library of software development methodologies promise a cure for every potential team problem. This methodology helps you deliver more of what the customer needs? Perfect, that’s what we want to fix!

Just like protein powder doesn’t build muscle without exercise, sometimes you need improvements outside the methodology. Diets don’t address broken legs, how you handle stress, or gym time. Methodologies don’t address missing skill-sets, cynical attitudes, sloppy communications, or poorly defined roles.

Do members of your team have difficulty writing clearly? It won't matter if they are writing stories, tickets, features, or specifications. Poor writing makes poor feature descriptions, which causes confused development processes.

Does your leadership have trouble getting along with the developers? It won't change things if the leadership role is named team lead, manager, tech lead, scrum master, product manager, or sorcerer. The team will still feel mistreated, untrusted, or confused by their interactions.

Maybe your developers just build whatever they feel like. Will they become more obedient because you've gone from waterfall to agile? Nope. If they didn't obey before, they won't obey under your new methodology. Waterfall isn’t the issue: team dynamics are.

You’re not alone if you confuse great teamwork with great methodologies. Software teams talk a lot more about methodologies than team dynamics. We look at what other teams are doing and compare ourselves. We call ourselves agile. We debate code style and programming languages. But we rarely take the same time to discuss the human interactions that happen in our teams

Tactics For a Happy Productive Team

Review your team’s strengths and weaknesses. Is the code quality great, but the velocity too low? Is too much time spent in rework? Are the team members happy? Who needs help or training in what areas?

Examine your team’s fundamentals: communication skills, mutual respect, customer feedback loops, hiring practices, organizational skills, etc. Invest money and time teaching deficient skills and offering feedback. Tune the team. Help them do better planning, work on empathy, or practice writing.

Make individual roles clear to the entire team. Everyone should understand the work product of the other team members, including the leadership and business roles: product management, technical leads, and managers. The output of everyone’s work should be public and visible.

Once you address skills and habits at the individual level, you can work on changing the habits of the team itself.

If you eat two pounds of fries every day, you can't expect to switch to a kale diet overnight. That's crazy talk. You’ll crave those fries at every meal. You can resist for a while, but one day you'll snap. A tiny moment of weakness and you drain the neighborhood Wendy's of their entire potato supply. You'll sit in their plastic booth feeling sick, wondering why changing your diet is impossible.

Changing isn’t impossible when you set reasonable milestones to reach a larger goal. Success changing habits means catering to your psychology. Don't immediately drop the fries and pick up the kale. Measure your current fry consumption. Set a goal for a small but meaningful reduction. Adapt to it. Add a little kale. Figure out how you enjoy preparing it. Aim for the diet you want, move towards it. But don't trebuchet yourself into a new diet expecting an instant drastic change in your behavior. Catapults work against fortresses, not against behavior.

Perhaps your team designs and plans the wrong features. Just because you’re experiencing poor product-market fit, doesn’t mean you should toss your whole methodology in the trash. That's like selling your old car because the oil needs changing. The car isn't the issue, the oil is. To keep a car running, change the oil. To build the right features, you talk to your customers.

Yes, some methodologies directly address customer feedback. That doesn’t mean you have to start with the entire methodology! Pick one tactic from your favorite methodology and adopt it. Once it becomes a habit, pick the next tactic. Repeat until your customers send you love letters.

As you change things, use teamwork rather than pure authority. Habits are difficult to dictate. Collaboratively pick the “habit” to change with your team. Present your goals and seed some ideas. Maybe you’re consider changing how you review code, how features are prioritized, or how planning works. Whatever it is, socialize it. Get consensus. Present the change as an experiment to make it less threatening.

Allow the habit time to stabilize before making another change. Measure the results. Ask people what they think. Celebrate any successes, and quickly address any failures. If the experiment isn’t working, use the team again. Change the experiment. Make the process fun.

My team changed our code review process a several months ago. We started it as an experiment. We didn't just declare that we had a fix for code reviews. We discussed the shortfalls of our old process and tried some ideas that might fix it.

As we reviewed code over the next month, we reflected on the results of the experiment. Were the new habits sticking? Did the code quality improve? Are we learning from each other, and beginning to understand new areas of the project? Did we enjoy it?

Because we examined the results from the perspective of our goals, we felt free to make tweaks along the way. If we just imitated a methodology, we would have focused on imitation. We wouldn’t feel ownership of the outcome. Owning the change meant that we adjust it to get a better outcome, and that we felt responsibility for success.

If we made a mistake, we just said “oops” as a team and briefly discussed if there was something we should change. Because our mistakes were usually a forgetful flop back to old habits, nothing exploded. There was no breakdown of some huge new process. No other process  depended on a new code review process, so there couldn’t be a cascading failures. Our one mistake wouldn’t get us blamed for three more.

Messing up meant we reviewed code the old way; no big deal. That’s the cost of trying something new, and a useful opportunity to reflect on our new process. We didn't feel exhausted, lost, or overwhelmed.

As the team masters each new habit, add another to the stack. If you’re diligent, the team will develop a talent for mastering new habits. Your ability to improve the team will accelerate. Eventually you’ll make so many changes that you’ve landed in the new methodology. Perhaps you’ll build a bizarre Franken-methodology that you can brand and write a book about. Either way, congratulations. You have a product-building machine.

Stop switching methodologies like fad diets. Worry about the right methodology after you have the basics of running a development team under control. When your team runs smoothly you’re positioned to experience the benefits of an appropriate development methodology. When you do adjust your methodology, minimize risk by making gradual changes, letting the team own them, and by measuring the impact.

Sunday, September 18, 2016

Recommended Books and Educational Resources from The 2016 Business of Software Conference

Update: 20 Sept, 2016: added Predictable Revenue and Selling with Noble Purpose.

I'd rather read a cereal box than most business books. They either put me to sleep faster than an antihistamine overdose, or retell the same wilted business ideas. Who has time for that?

Now I only read books recommended by people I admire. People like those at the Business of Software Conference. They consume an elephant's weight in books every year, so they make a great filter for recommendations.

Every year, I ask the folks at the conference what books they've read in the last year that really made an impression on them. Most of these suggestions come from attendees, but a few were mentioned in the talks too. If one of the books below catches your eye, it will almost certainly be worth your time.

Oversubscribed: How to Get People Lining Up to Do Business with You by Daniel Priestley.

Thinking, Fast and Slow, by Daniel Kahneman.

Predictably Irrational, The Hidden Forces that Shape Our Decisions, by Dan Ariely.

Gut Feelings: The Intelligence of the Unconscious, by Gerd Gigerenzer.

Everybody Writes: Your Go-To Guide to Creating Ridiculously Good Content, by Ann Handley.

Made to Stick: Why Some Ideas Survive and Others Die, by Chip Heath.

Blue Ocean Strategy, Expanded Edition: How to Create Uncontested Market Space and Make the Competition Irrelevant, by W. Chan Kim.

Shoe Dog: A Memoir by the Creator of Nike, by Phil Knight.

Tribe: On Homecoming and Belonging, by Sebastian Junger

The Chimp Paradox: The Mind Management Program to Help You Achieve Success, Confidence, and Happiness, by Dr. Steve Peters.

The Innovator's Dilemma: The Revolutionary Book That Will Change the Way You Do Business, by Clayton M. Christensen.

Consumption Economics: The New Rules of Tech, by J.B. Wood.

Crossing the Chasm, 3rd Edition: Marketing and Selling Disruptive Products to Mainstream Customers, by Geoffrey A. Moore.

The Advantage: Why Organizational Health Trumps Everything Else In Business, by Patrick M. Lencioni.

Badass: Making Users Awesome, by Kathy Sierra. If you want to improve anything, you probably need to read this book. Or watch Kathy's Business of Software talks. Not only does Badass tell you how to get your customers great results, it teaches you how learn skills. 

Predictable Revenue: Turn Your Business Into a Sales Machine with the $100 Million Best Practices of, by Aaron Ross and Marylou Tyler.

Selling with Noble Purpose: How to Drive Revenue and Do Work That Makes You Proud, by Lisa Earle McLeod.

*Moving Average Inc. is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to Buying items through this link helps sustain my outrageous reading habit and is much appreciated!

Tuesday, September 6, 2016

Revisiting the Lightest Camera Bag

Are you tired of hauling around a camera bag that weighs more than your camera does? Did you spend a lot on lenses, but avoid carrying them because of a sore and sweaty back?

You're not alone. I enjoy photography, but I hate feeling like a pack animal. I also felt dumb traveling with a camera luggage advertisement on my back. Expensive camera inside! That's the last thing I want strangers to think as I explore Barcelona.

I started testing different bags more than four years ago. Camera equipment has changed a lot since then, but the core of my solution remains the same: a light, unpadded bag and separate padding for the camera and lenses. The unpadded bag I use and recommend is the Patagonia Lightweight Travel Courier Bag. My courier bag has traveled the world. Taipei, Boston, Barcelona, Cologne, Amsterdam. It''s still in great shape, and still my favorite container for camera gear.

Over the past few years, the design of the bag has changed, but it still weights very little: only 8.2 oz. There are different colors available, and it appears the there are now two smaller zippered compartments on the front rather than one. Also, the zipper pulls appear to be attached by knots rather than a bit of plastic.

The bag's strap adjusts length with a nylon toggle, and the excess strap feeds into the bag so nothing dangles. The strap is made of a mesh that offers a little padding and allows your shoulder to breath. Breathability matters in the Texas summer. On each end of the bag there are elastic pockets useful for water bottles, sunglasses, or a compact umbrella. The exterior zipper pockets are great for carrying spare camera batteries or memory cards.

The travel courier easily repels a light rain,. A surprise deluge in Venice taught me that a heavy downpour will get through the zippers and seams of the bag. Fortunately my guidebook soaked up most of the rain, sparing my electronics. The new bag claims to be weather-resistant, but I'd still carry an umbrella or plastic bag to protect anything sensitive.

The bag has enough space to squeeze in my camera, two lenses, a jacket, and a pouch containing extra batteries, a Lens Pen, charging cables, and spare memory cards.When I carry a jacket, I put my camera and lenses on top to enjoy a little extra padding. A benefit of a bag without built-in padding is that it actually takes up less space when you carry less gear.

The bag is designed in such way that the main compartment is unlikely to spill while being worn over the shoulder. I often use the interior of the bag to hold my lenses as I change them to reduce the chances of dropping anything on the ground.

If you don't have a pouch for your camera accessories, I highly recommend the Tom Bihn clear organizer pouches.  They're well made and make it easy to find your gizmos without spilling them on the floor. I put all my camera essentials into a medium pouch so I can easily transfer my phone charger, cables, camera batteries, and SD Card Wallet between bags without forgetting anything.

Over the past year, I've sold both of my Canon cameras and most of my Canon lenses. dSLRs are great for weddings and sports events, but the size and weight make travel photography miserable. Recent mirrorless cameras now match or exceed the quality of typical dSLRs, with a fraction of the weight and bulk.

Today I carry a Sony Alpha a7II Mirrorless Digital Camera body with the Sony Zeiss 55mm f1.8 lens attached. You can read more about this camera and lens combination in my review here. Depending on my plans, I sometimes carry a second lens in the bag - usually the Sony 28-70 lens.

The decision to go mirrorless shrank my equipment weight and bulk. I have plenty of room in the courier bag to add a lens pen,  pocket umbrella, cheap sunglasses, spare batteries,  USB backup batteries, and sometimes a jacket or coat.

My padding has changed with my camera choice. I no longer use the Domke wraps to pad the camera. Now I protect the camera with the LensCoat LCBBLBK BodyBag with Lens (Black). It's a neoprene shell shaped roughly like a camera with lens attached.
LensCoat BodyBag with Lens
The BodyBag has a flap that comes over the top and back of the camera that secures with velcro. Your camera straps poke out of the sides of the shell, so you can still carry the camera over your shoulder. I frequently wear the camera in the BodyBag over my shoulder when it's not in the courier bag. It offers protection from bumps in crowded places and a little shelter from dust and rain.
LensCoat BodyBag with Lens open to reveal a Sony Alpha a7II
Inside the BodyBag, there is a small loop of material that opens with a snap -- a leash to attach the BodyBag to your camera strap. You can see it peeking out of the middle of the BodyBag in the photo above. When you want to used the camera, you just open the velcro, peel off the BodyBag, and let it dangle from the strap. If you prefer, remove the BodyBag completely and stuff it into your pocket.

Inside the "snout" of the BodyBag, the part that sits in front of your lens, the LensCoat folks thoughtfully built a small pocket containing a disc of rigid foam. The foam gives another layer of protection to one of the most vulnerable parts of your camera: the front lens element.

I hate missing shots, so I store my camera setup in the BodyBag with the lens cap off. Who wants to suffer the embarrassment of trying to take photos with the lens cap on?

I store the lens cap in the same pocket BodyBag pocket that contains that disc of foam. That way I'll won't have misplaced my lens cap when it comes time to swap lenses. Please use common sense if you copy this technique. I always have a lens hood installed on my lens,  creating some extra space between that pocket and the front element of my lens. I wouldn't recommend storing anything hard like a lens cap where the glass of your lens might rub against it.

This setup with the BodyBag just fits my Sony Alpha A7 II with the Sony Zeiss 55mm f1.8 lens. It fits snugly with the lens hood installed in the extended position. It looks like a tailored fit, which I love since this is my favorite lens on my favorite camera. LensCoat offers different sizes of the BodyBag; I suggest comparing your camera measurements to the measurements of the BodyBags. The BodyBags have a small amount of stretch.

To carry a second lens, I've adapted an different LensCoat BodyBag. This one was designed for holding a dSLR body without a lens attached. My 28-70mm lens fits in it fine, but a properly-sized LensCoat lens pouch is probably a better bet if you're buying something new. The lens-specific models feature a disc of hard foam to protect the front glass of your lens. They offer a variety of different size neoprene Lens Pouches.
Patagonia Lightweight Travel Courier Bag with my LensCoat BodyBag with Lens on top
For walking around town, I feel like the BodyBag plus the Travel Courier offers a perfect compromise between convenience and protection. It doesn't provide a half-inch-thick foam sarcophagus around my camera, but it also doesn't weigh ten pounds.

When I travel by air, I empty the courier bag and put it with my clothes (the courier stuffs into it's own interior pocket). The camera and lenses I leave in their LensCoat bags and jam into my well-padded Think Tank Photo Urban Disguise 60 v2 bag. The LensCoat padding works fine for a long hike, but not for getting thrown around by TSA officers, squeezing under airplane seats, and getting rammed by rolling suitcases. That's where you want an expensive foam sarcophagus like my Think Tank.

Once I'm at my destination, I move my camera equipment back to my lightweight courier for exploring.

This camera bag setup has changed my life. I take so many more photos now.


*Moving Average Inc. is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to We also participate in Patagonia's affiliate program. Buying items through this link helps sustain this blog and is much appreciated!

Sunday, September 4, 2016

iOS 10 Development for Executives: Notifications

Imagine those big, old fashioned movie theater marquees. The kind with those plastic letters that you snap in to spell the name of a film? Today in iOS 9, notifications are like that. Fixed, boring text. It’s like apps are sending you text messages. Some overachieving apps have actions you can tap. Most are just words inviting you in to the app.
iOS 10 Push Notification Banner
In iOS 10, notifications work more like a modern theater kiosk. The contents are now updatable, can include media, and can be expanded into a customizable view that acts like a simplified version of an app. 

iOS 10 has many new notification features, fight churn, improve customer on-boarding, and increase your app’s utility. Expanded notification user interfaces will increase user engagement by allowing you to build a more useful and visually exciting notification experience

Images, Video, and Audio

You can now attach images and video to your local or remote notifications. Careful use of video, audio, or animation will let you communicate more clearly with your users and create more engagement.

Stores and marketplace apps will be able to show physical goods in notifications. Media apps like Netflix are an obvious use case too: they can preview content. Productivity apps can push down brief tutorials to help new users get started. You can also use media to convey urgency in business-critical apps. 

Note that since the attachments are represented as URLs to files already downloaded, you will need to develop a UNNotificationServiceExtension to download and attach the necessary media files to support this. There are limits on the maximum file sizes and formats.

Carefully design your notifications. If your notifications seem more obnoxious that useful, your customers may deny your app’s notification privileges or wipe your app. You may wish to offer a “mute” button in your notification’s actions so that users turn down the volume of notifications rather than adding to your churn statistics.

Done right, media-rich notifications can be a great way to reduce churn, on-board your new customers, and increase engagement.

Custom Notification UI

You can now design a custom expanded view for your notifications. Your push notifications initially appear as they did in iOS 9: banners that appear at the top of the screen when the user is using the device, or a stack of batters on the lock screen. If your app offers an expanded view for a particular category of notifications, the user will be able to pull down, 3-d touch, or select the view action of the banner to show your custom view. This is called a UNNotificationContentExtension.

You create a this user interface using a subset of the the same UI frameworks your app already uses. This lets you visually represent much more nuanced data. Instead of some text and a photo thumbnail, you could show part of a map, the remaining steps in a checklist, shopping cart contents, or even a snippet of video from a security camera. Developers can even use the standard UIView animation blocks to create slick animations.

The screenshot you see above show a “quote of the day” notification from my app Passages on the home screen. The little bar at the bottom of the banner indicates that the user can swipe down to reveal the expanded view, which you see below. The expanded view allows the user to read the full quote and author name using the same fonts used in the app.
iOS 10 Notification Custom Expanded View (UNNotificationContentExtension)
iOS 10 limits user interaction to a list of buttons and text input, the same actions that you could attach to notifications in iOS 9. The custom part of your expanded view doesn’t respond to touch except by launching your app. You can’t enable sophisticated interactions like panning maps, but the extension can update it’s view in response to button or text input.

In iOS 9 notifications like “Something changed” or “You have a new event” were quite common. These simple messages were useful (and you’ll still need it for the compact view), but not very compelling to users. They also weren’t very actionable. For instance, drivers for a delivery company might not want to accept a job without seeing a map or traffic conditions.

Location can still be used to trigger notifications, but expanded views give them more utility. If your coffee shops are offering a coupon, why not cue up a notification reminder that triggers a few blocks from each shop? An expanded notification can make this more useful because you can present the user with a map or directions to the location.

Simple text notifications are often painful because without enough context it can be difficult to know if you’ve already handled the task behind a notification. The additional context you can provide will give the user more confidence to take action or dismiss the notification.

Unless you intend to build a complicated expanded view, your developers may be able to build a decent extension in a day or two of work. Since you build the expanded view with Storyboards and UIView controllers, you hopefully will be able to recycle views right out of your existing app. Your customers already know how your app works, so why not keep it consistent?

Modifying Notifications 

iOS 10 lets your app modify notifications even after they are delivered. This means there is no reason for users to see out-of-date notifications in notification center.

You can update a shipping notification with the latest status. Bills notifications can be switched to show payment. Expiring coupons can be updated to show urgency, and you can remove expired coupon notifications. If you update a notification, it will be moved to the top of the notification center.

You can also modify and enhance your notifications as they arrive by creating a UNNotificationServiceExtension. This can be useful if your app might have access to data your servers don’t, or if you wish to attach media to your notifications.

For instance, a notification service extension for a taxi driver app might use location data to show how far away a fare is. Or you might use end-to-end encryption for all your notifications, using the service extension to decrypt the message before it displays to the user.

For an stock app, you might update a share price in a notification to ensure the freshest possible data. For a messaging app, you might use the service extension to download the message and any attachments for instant display when the user opens the app.


WWDC 2016 had a strong theme of letting users get more done without opening apps. These notification improvements will let you make your customers more productive without ever launching your app.  

Advertisers and ad-funded apps will worry about this outside-of-app trend. Users who spend less time in apps spend less time looking at ads. Apps that don’t follow this trend may lose users to apps that do.

App makers who get their revenue from their customers instead of advertisers shouldn’t be as concerned. These enhancements should help keep your users more engaged, even if the traditional app metrics like session length may not show it.

Wednesday, August 24, 2016

iOS 10 Development for Executives: iMessages Apps

Do you think iMessage Apps a secret weapon in customer acquisition and revenue? iOS 10 iMessage apps provide a unique opportunity for some businesses, but will flop for others.

What advantages do iMessage Apps have?

If you're selling physical goods or services, you can charge right from your iMessage app using Apple Pay. Any item expensive enough to warrant getting a second person to sign off on a purchase might be given a large advantage.

Messages has a huge user base. User who don't have your app could discover your app by receiving a message from your current users. Every message from your app will include a small prompt to install your app. If your app is positioned well for it, an iMessage app could give you a big word-of-mouth boost.

These apps are a sharing medium that lets you participate on all sides of a conversation that have the app installed. The participants in a conversation are anonymous, but if your app knows the users at each end of the conversation, you will know who they are. This could give you valuable insights into your user behavior.

You can update the state of your app and the shared messages as a conversation evolves. This means that your customers can collaborate on something together in a medium that they already use on a daily basis. That’s a pretty unique opportunity to add value for your customers.

Finally, the owner of the iMessages service isn't an advertising platform. There is always risk when you build on another company’s software platform, but that risk is multiplied a lot when the platform is run by a company that makes a majority revenue on ads, like Facebook or Google. Advertising business will eventually want to charge for access to their user base. There is still risk on an Apple platform, but for now the majority of their revenue comes through devices and services. That’s a unique situation.

Who are iMessage apps for?

Anyone can build an iMessage app, but not everyone will increase revenue, acquire customers, or even usage with an app.

Sellers of physical goods or services that are often discovered through social means might do well. Book sellers, fashionable clothing retailers, and trendy marketplaces may have a return on investment. If you already grow sales through social means, an iMessage app may help you grow faster.

Retailers of physical goods or services that are shared among two or more people might discover a competitive advantage through an iMessage app. Cars, travel, homes, and meals are all often shared purchases. Groups of customers want to collaborate with each other to make a purchase decision.  If your app makes that a better experience, you might get better conversation rates.

Apps with editable documents like text, photos, or invoices might get more usage with an iMessage app. If I were still working at Evernote, I would consider building a iMessage App that allows conversation participants to collaborate on a shared Skitch document or note.

What will it cost to build an iMessage App?

At their core the iMessage App UI is driven by the same UI frameworks that your native app is built on. You’ll be able to leverage a lot of the same code that your app already uses: UIViews, UIViewControllers, and so on. You’ll probably use the same networking and data model code as well.

Since the iMessage app function as an extension that is embedded in the Messages app, the app lifecycle is different, and some interactions are limited. Overall, native iOS developers should feel relieved by how similar the development process is. The learning curve isn’t very steep.

To make a high-quality app, your iMessage app will need support from your web app. There will be iOS users who don’t have your app installed, or who can’t install your app. Those users will receive a URL that your app attaches to each message. If possible, you want your web app to show something useful to the user who visits the URL.

You’ll also need support on the server side if you wish to track conversations. If your app lets users collaborate through your iMessage app, you’ll almost certainly require a back-end that manages the state of the conversation.

Expect to pay for development and design on both the native and the web side of the equation. If you already have teams in those areas and code you can reuse, you will be able to move quickly. If iOS development is new to you, you don't have an existing team, don't expect to move fast.

When is an iMessage App a distraction?

If your current app isn't working, adding an iMessage App probably won't help. The iMessage App might improve your conversion rate, but you need a decent conversion rate to begin with. Zero times two is still zero. Focus on sales and revenue before worrying about new technology.

Who knows what common use cases iMessage Apps will have? Perhaps it will be sharing or splitting gift card balances. Maybe it will just be stickers and animations. Or maybe it will be configuring and buying a family car. Investing in an iMessage app is pure speculation at this point. If you can’t afford a flop, iMessage app isn’t for you.


The struggle of iMessage Apps will be discoverability. Savvy users will know about the apps, but most people won’t get beyond the built-in Messages app functionality without help.

Unfortunately, I’ve found no method for launching your iMessage app from an iOS app. Your iOS app seems the best platform for launching usage of your iMessage app, but you simply can’t do it. It makes me want to pull my hair out.

The best you can do is to provide some education about how to launch and use your iMessage app. Users have to still go to the Messages app, tap the apps button, and find your app. Ouch. Motivating and educating users will require work in your iOS app, on your web site, social media, etc.

If you’re early to market, your iMessage app will benefit from a smaller number of apps in the store. That advantage will evaporate like puddles in the Sahara if iMessage apps prove valuable. If your app is "sticky", you may find a large first-mover advantage. If not, you'll have to find another way to compete.

Android users are also an issue. They can’t install an iMessage app, so they’ll just receive the media part of messages built by your app. You’ll need to get creative to make the experience decent for Android users.

Folks who stick with iOS 9 or earlier also won’t be able to install your app. Adoption of iOS 10 is predicted to be strong, but who knows for sure?

iMessage apps that get new users will face churn problems. Unless your iMessage app entertains or provides a lot of value, users won’t use them a second time. Remember that you’ll be competing with stickers, animated selfies, and other addictive toys. Don’t forget to despair over the competition to the iMessages ecosystem itself: Facebook Messenger, Snapchat, Google Allo, etc. Can you motivate your users enough?


If you have the right kind of app, and the right business model, an iMessage app might launch your business to the next level. If you aren't happy with your business as it is, beware. An iMessage app won't magically turn a losing proposition into a profitable one. Unless you have lots of resources, an iMessage app will just distract you from your core mission.

Sunday, August 7, 2016

Recommended Books and Educational Resources from MicroConf Europe 2016

Update: 7 August 2016: added Lazy Leadership. 8 August 2016: added Crucial Conversations. 9 August 2016: added Startup Madlibs.

The folks who attend Microconf tear through great piles of books every year. They are particularly well informed. They attend many conferences, listen to (and produce) podcasts, and are involved in many different communities. They sit at the top of the reader food-chain. My kind of people!

At MicroConf Europe 2016, I asked as many people as possible: which books have had the biggest impact on you in the past year?

Here are their answers, plus a few books that were mentioned in the talks:

Brainfluence: 100 Ways to Persuade and Convince Consumers with Neuromarketing by Roger Dooley.

The Single Founder Handbook by Mike Taber

Instant Cashflow by Bradley Sugars (James Kennedy described this book as “tacky”)

Lean Analytics by Alistair Croll and Benjamin Yoskovitz (James Kennedy called this one awesome)

Built to Sell: Creating a Business That Can Thrive Without You by John Warrillow

Finish Big: How Great Entrepreneurs Exit Their Companies on Top by Bo Burlingham

Everybody Writes: Your Go-To Guide to Creating Ridiculously Good Content by Ann Handley

Double Double: How to Double Your Revenue and Profit in 3 Years or Less by Cameron Herold

Design for Hackers: Reverse Engineering Beauty by David Kadavy

The Pumpkin Plan: A Simple Strategy to Grow a Remarkable Business in Any Field by Mike Michalowicz

Start with Why: How Great Leaders Inspire Everyone to Take Action by Simon Sinek

It's Not All About Me: The Top Ten Techniques for Building Quick Rapport with Anyone by Robin Dreeke

Badass: Making Users Awesome by Kathy Sierra

Lazy Leadership by Andrew Wilkinson (blog post)

Crucial Conversations: Tools for Talking When Stakes Are High by Kerry Patterson

Startup Madlibs: Perfecting Your One Sentence Pitch by Adeo Ressi

Like this list? Be sure to also see recommended books from MicroConf USA 2016.

If you're a reader, you might also consider looking at my free app Passages. Passages is a journaling app for your reading. It's a place to store the important quotes and snippets that you want to learn. It's also a tool to help you internalize that knowledge.

*Moving Average Inc. is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to Buying items through this link helps sustain my outrageous reading habit and is much appreciated!

Sunday, May 1, 2016

Talk Pay Day

Today is International Worker's Day. On Twitter, the day is celebrated by sharing your salary, job, title and city with the hashtag #talkpay. Since race and gender are still (sadly) salary issues, many folks include that data as well.

If you're a developer, chances are high that you can find someone like you sharing their salary. This is a great opportunity to learn what your peers are making, and also to share your own salary.

If you would prefer to share anonymously, you can do so using The #talkpay bot. You can find the results at @talkpay_anon.

Keep in mind: location has a huge impact on the value of a salary.  You can't compare a salary from San Francisco to a salary in Detroit without doing some research and calculations. You can read what I've written on this subject here.

If you want to learn more about the value of your skills, consider checking out Comparably,,  and glass door,.