At Apple, the engineers are the talent. They're the ones who innovate. And, thanks to great designers, technology is turned from engineer-ugly into intuitive elegance. All the consumer facing products used to go through Steve. If you ate lunch, every day, at Caffè Macs you'd probably see Steve eat there once or twice a week.
Steve once sat one or two tables away from me with a developer. It surprised me how quiet Steve was. He simply asked the engineer questions and then listened, very closely. It was a one-on-one brain storming session about integrating services across different products. Steve would ask, "What if we did this?" or, "How would that look?" Steve focused on his conversation and was immune to the casually intense glances from passerbyers.
I worked as a software engineer at the Apple Online Store. We'd have an annual online store summit that lasted a couple days, usually in Apple's Town Hall auditorium. The high point was if and when Steve would speak to us and take our questions. Just before lunch, the last year I worked at Apple, we were told that Steve would be holding a Q&A session.
Excellent! This was spring of 2007 and the iPhone had just been announced but it wasn't yet shipping. The iPhone was on everyone's mind. When Tim Cook spoke to us at our summit he whipped out his iPhone, for a moment, and said, "This is so cool!" Our mouths watered.
Since Steve would be meeting with us, this was a perfect time for me to ask him about iPhone marketshare. He had forecast, during the Macworld Keynote, a few months earlier, that iPhone would sell 10 million units the first year. This seemed a bit high, to me, since it would only be available in the U.S. in 2007; and only on Cingular which had 58 million subscribers. To my ear, it sounded like Steve was expecting one out of six Cingular subscribers to shell out $499 or $599 for an iPhone.
One secret to corporate success is to never embarrass your boss. So, during lunch, I gave a heads up to my boss and the director of the Apple Online Store that I'd be asking Steve a question. We chatted about it, briefly, and it was a perfectly sensible question. So, I was cleared to ask away.
Just before Steve entered Town Hall we were told not to ask any questions about future products. We were also told that we'd have to give him a standing O when he was done with the Q&A. No problem. Steve walked in to the Town Hall. This was a rare time that I've seen Steve take the stage from the back of the room, rather than from backstage. He spoke for a little while and then it came time for questions.
One of my coworker engineers asked Steve a question that stumped him. Or, perhaps, he didn't want to answer it candidly. "Steve, what companies do you admire most?" Steve thought about it for a long, silent, half a minute.
"I don't know. I'd have to think about it," Steve answered.
I'd really like to know what he was thinking. Was it simply that he couldn't think of any companies he admired or was he worried that his answer would be made public?
Then it was my turn to ask Steve a question.
"Steve, you mentioned during your iPhone Keynote that Apple would sell 10 million iPhones the first year. That would mean one in six Cingular customers would be using an iPhone. That seems like a lot of marketshare for the first year," I said.
Steve simply clarified what he said during the Keynote. The 10 million unit statistic was at the end of the first full year of sales – in other words, at the end of 2008, not 2007 – and, by that time, Apple would be selling the iPhone in Asia, with other wireless carriers.
I doubt that his answer could have been any less climactic for me. Questioning Steve is easy when he's right.
Of course, Steve's 10 million iPhone estimate was a bit low. Better to under-promise and over-deliver. By the end of 2008, Apple sold more than 17 million iPhones – 70% more than his initial estimate.
Saturday, December 27, 2014
Mobile Web Rendering Standard
The web needs a simple de facto standard for mobile vs. desktop web rendering.
When someone tweets out a link from their smartphone (mobile web), it looks terrible if I click their mobile link in my desktop browser:
https://m.yahoo.com
Just like hard or soft page breaks in word processing, there needs to be a simple standard for web servers to render an HTML page based on the user agent or force a particular rendering when desired.
Blogger makes it simple and obvious based on the URL query string:
Render based on user agent:
http://blog.joemoreno.com/2012/05/upside-down-apple-logo.html
Force mobile, regardless of user agent:
http://blog.joemoreno.com/2012/05/upside-down-apple-logo.html?m=1
Force desktop, regardless of user agent:
http://blog.joemoreno.com/2012/05/upside-down-apple-logo.html?m=0
This technique makes it easy for me when tweeting out links. Much easier than changing http://m.example.com to http://www.example.com to see if I've figured out a particular web server's URL naming scheme. I understand that m. and www. are different host names which makes it easier for load balancing, but there are ways to manage that with load balancers, etc.
PS – My other pet peeve is a mobile web page that doesn't allow zooming. What's a user to do when the fine print is too small to read?
When someone tweets out a link from their smartphone (mobile web), it looks terrible if I click their mobile link in my desktop browser:
https://m.yahoo.com
Just like hard or soft page breaks in word processing, there needs to be a simple standard for web servers to render an HTML page based on the user agent or force a particular rendering when desired.
Blogger makes it simple and obvious based on the URL query string:
Render based on user agent:
http://blog.joemoreno.com/2012/05/upside-down-apple-logo.html
Force mobile, regardless of user agent:
http://blog.joemoreno.com/2012/05/upside-down-apple-logo.html?m=1
Force desktop, regardless of user agent:
http://blog.joemoreno.com/2012/05/upside-down-apple-logo.html?m=0
This technique makes it easy for me when tweeting out links. Much easier than changing http://m.example.com to http://www.example.com to see if I've figured out a particular web server's URL naming scheme. I understand that m. and www. are different host names which makes it easier for load balancing, but there are ways to manage that with load balancers, etc.
PS – My other pet peeve is a mobile web page that doesn't allow zooming. What's a user to do when the fine print is too small to read?
Tuesday, December 16, 2014
Looking for God
In the dead of the night, seemingly simple soft sounds travel far. A fallen leaf moving across concrete in a quiet breeze or rustling tree branches as a gentle rain falls upon them. While I'm a heavy sleeper, something out of the ordinary will wake me up with a feather's touch.
Last night, I slept with my bedroom window open. This morning, at 4 AM, I awoke to the gentle rustling of plastic bags about 50 feet away. It's a sound I occasionally hear. I immediately knew it was a homeless person dumpster diving. I went outside and asked him what he was looking for. He stared at me for a moment and, in an annoyed tone, he said, "I'm looking for God." I told him that he should move along. I went back inside and he was on his way.
After he left I began wondering what he was really looking for. The seemingly obvious answer would be recyclables. Yet he wasn't going through the bottle and can bin next to the dumpster, nor did I hear any clanging or banging of glass and metal. He was simply opening plastic bags, mostly, if not all, bags of Starbucks trash. Perhaps he was looking for food. But there are better restaurants, nearby, to scavenge.
He was definitely not looking for hard-goods, and he was a pro at being as quiet as possible. What could he – as many I've heard before him – be looking for?
Last night, I slept with my bedroom window open. This morning, at 4 AM, I awoke to the gentle rustling of plastic bags about 50 feet away. It's a sound I occasionally hear. I immediately knew it was a homeless person dumpster diving. I went outside and asked him what he was looking for. He stared at me for a moment and, in an annoyed tone, he said, "I'm looking for God." I told him that he should move along. I went back inside and he was on his way.
After he left I began wondering what he was really looking for. The seemingly obvious answer would be recyclables. Yet he wasn't going through the bottle and can bin next to the dumpster, nor did I hear any clanging or banging of glass and metal. He was simply opening plastic bags, mostly, if not all, bags of Starbucks trash. Perhaps he was looking for food. But there are better restaurants, nearby, to scavenge.
He was definitely not looking for hard-goods, and he was a pro at being as quiet as possible. What could he – as many I've heard before him – be looking for?
Friday, December 12, 2014
iOS Spotlight Bug
Without noticing it, I've installed well over 100 apps on my iPhone. Obviously, the ones I use most frequently are on my first home screen with a couple stragglers on the second screen. Occasionally, I need an app that's buried somewhere on the other 15 screens. To find those apps, I, like most everyone, pull down on the home screen to reveal the Spotlight search text field.
Unfortunately, after most iOS updates or after restoring a phone from a backup, Spotlight seems to stop finding apps until I open the app I'm looking for, for the first time.
This is a reproducible problem that I've noticed for at least a year. Here's what it looks like along with my workaround.
1. Confirm that the Applications option is checked and it's at the top of your Spotlight search setting.
2. Search for the app that Spotlight can't find. In my case, I was looking for my little-used eBay app. Sure enough, it didn't show up in Spotlight.
3. Search for the app in the Apple App Store. The App Store knows if you've already installed an app so that you don't need to redownload it. If an app is already installed on your iPhone, the GET or $x.xx button will say OPEN. Tap the OPEN button and the App Store, which is hundreds or thousands of miles away, will find and open the app that Spotlight, running on your own phone, couldn't find.
4. Once I've opened the app and then closed it, it magically appears in future searches. As a matter of fact, once I've gone through this exercise it seems that Spotlight is now primed to find other apps too.
Postscript: I've also seen a similar issue when searching for people or text in the iPhone's Messages app, but I haven't found a work around for that, yet.
Unfortunately, after most iOS updates or after restoring a phone from a backup, Spotlight seems to stop finding apps until I open the app I'm looking for, for the first time.
This is a reproducible problem that I've noticed for at least a year. Here's what it looks like along with my workaround.
1. Confirm that the Applications option is checked and it's at the top of your Spotlight search setting.
2. Search for the app that Spotlight can't find. In my case, I was looking for my little-used eBay app. Sure enough, it didn't show up in Spotlight.
3. Search for the app in the Apple App Store. The App Store knows if you've already installed an app so that you don't need to redownload it. If an app is already installed on your iPhone, the GET or $x.xx button will say OPEN. Tap the OPEN button and the App Store, which is hundreds or thousands of miles away, will find and open the app that Spotlight, running on your own phone, couldn't find.
4. Once I've opened the app and then closed it, it magically appears in future searches. As a matter of fact, once I've gone through this exercise it seems that Spotlight is now primed to find other apps too.
Postscript: I've also seen a similar issue when searching for people or text in the iPhone's Messages app, but I haven't found a work around for that, yet.
Friday, December 5, 2014
Super Stellar Service
As a consumer, nothing makes me happier than superior customer service.
Yesterday, I effortlessly exchanged an iPhone case at my local Apple Store. When I was done with the exchange, the Apple employee took me through the iPhone Apple Store app. This app allows customers to self-checkout items rather than hailing an Apple employee to process the transaction. This works for all their products except for the two serialized items they sell on the floor: Apple TV and the wireless basestations. That's amazing. As far as I know, it's the only place where customers can self-checkout without supervision. Obviously, that makes pilferage easy, but Apple doesn't seem too worried about that.
This afternoon, I caught a lift with a Uber driver from Ethiopia. Like most San Diego Uber drivers from East Africa, my driver was a former taxi driver. Since I used to live in East Africa, we had a great rapport. I couldn't help commenting how nicely his iPhone 6 was connected to his car vent. He popped it off and gave it to me so I could have a closer look. It was a Kenu car vent mount that snuggly held an iPhone without having to remove the case.
This evening, I took a trip back to the Apple store and bought a Kenu case. Of course I checked myself out. It was my first experience with Apple Pay and I was hooked. On the way through Bloomingdales I bought a Brooklyn t-shirt, that caught my eye, using Apple Pay and that was dangerously easy for this impulse purchase. Before leaving the mall I used Apple Pay, for the third time in an hour, at The Container Store. That, too, was a breeze.
The Apple Pay transactions happen so fast that I almost missed them except for the part where I had to sign; after all, it's still a credit card transaction. The cashier at The Container Store told me a previous customer said that the store receipt had the wrong last-four credit card digits. I took a look at my paper receipt and, sure enough, the last four digits didn't match my credit card. But, then it hit me that Apple Pay generates a unique, one-time, credit card number for each transaction.
Service with a smile in the blink of an eye. What more could I ask for?
Yesterday, I effortlessly exchanged an iPhone case at my local Apple Store. When I was done with the exchange, the Apple employee took me through the iPhone Apple Store app. This app allows customers to self-checkout items rather than hailing an Apple employee to process the transaction. This works for all their products except for the two serialized items they sell on the floor: Apple TV and the wireless basestations. That's amazing. As far as I know, it's the only place where customers can self-checkout without supervision. Obviously, that makes pilferage easy, but Apple doesn't seem too worried about that.
This evening, I took a trip back to the Apple store and bought a Kenu case. Of course I checked myself out. It was my first experience with Apple Pay and I was hooked. On the way through Bloomingdales I bought a Brooklyn t-shirt, that caught my eye, using Apple Pay and that was dangerously easy for this impulse purchase. Before leaving the mall I used Apple Pay, for the third time in an hour, at The Container Store. That, too, was a breeze.
The Apple Pay transactions happen so fast that I almost missed them except for the part where I had to sign; after all, it's still a credit card transaction. The cashier at The Container Store told me a previous customer said that the store receipt had the wrong last-four credit card digits. I took a look at my paper receipt and, sure enough, the last four digits didn't match my credit card. But, then it hit me that Apple Pay generates a unique, one-time, credit card number for each transaction.
Service with a smile in the blink of an eye. What more could I ask for?
Tuesday, December 2, 2014
Uploading Large Files to S3
I've downloaded and tried out quite a few AWS tools since I started using Amazon's web services in 2007. Originally, S3 had a 5 GB file size limitation which was increased to 5 TB four years ago. Unfortunately, all the S3 tools I've downloaded are limited to 5 GB. The challenge appears to be that any object larger than 5 GB requires the use of the multipart upload API and none of my tools can handle that.
Today, I needed to upload a 7.35 GB file. I was almost ready to give up after trying a few of my desktop tools along with my plug-ins for Firefox and Chrome. Then I got the idea to simply log into AWS with Safari and use their web based management console (duh). That, along with my speedy fast home Internet connection, did the trick. It was such a simple solution that I almost overlooked it.
Update: One bit of funkiness is that the tools which can't handle files over 5 GB can't properly report an object's size, although they do seem to be able to successfully download the files.
Today, I needed to upload a 7.35 GB file. I was almost ready to give up after trying a few of my desktop tools along with my plug-ins for Firefox and Chrome. Then I got the idea to simply log into AWS with Safari and use their web based management console (duh). That, along with my speedy fast home Internet connection, did the trick. It was such a simple solution that I almost overlooked it.
Update: One bit of funkiness is that the tools which can't handle files over 5 GB can't properly report an object's size, although they do seem to be able to successfully download the files.
Free Music
Ever wish that you could listen to free background music like you hear in a cafe? It turns out that many mom and pop cafe owners simply stream multi-hour long music from YouTube. A bargain at twice the price.