Sunday, July 14, 2019

Yesterday, I called 911 – it was a mistake.

Yesterday, I was at Balboa Park during a parade which had a couple hundred thousand attendees. Whenever that many people get squeezed into a tight venue, such as a stadium, cell phone connectivity becomes an issue – and yesterday was no exception.

At one point, I launched an app on my iPhone which was taking a long time to open up since it needed Internet access. Just as I closed the app it popped up three modal dialog windows in a row. The app was closed, but the modal windows blocked all other iOS interactions as if the phone was frozen.

Restarting the iPhone

To restart the iPhone, all I needed to do was press the volume up, volume down, and then the sleep/wake button. This brings up a slider at the top of the screen, "slide to power off." But, the problem was this slider was blocked by the modal window.

I tried pressing all three buttons and holding them down. Unfortunately, this activated the phone's emergency mode which dialed 911 and then sent out SOS text messages to my emergency contacts with a map of my locations. The police called me back with an automated message stating that they received a hangup call but couldn't pinpoint my location. However, even though my phone had location services turned off, it seems the phone was able to know my location and sent a pin-drop to my emergency contacts along with an SOS message.

Force Restarting the iPhone

What I needed to do was force restart my iPhone, but I didn't know how. Luckily, my buddy had his iPhone (also with spotty connectivity) and we did a Google search. A force restart is similar to a typical restart, except you hold down the sleep/wake button until you see the Apple logo:

1. Press the volume up button.
2. Press the volume down button.
3. Hold down the sleep/wake button until you see the Apple logo (5-10 seconds).


Tuesday, July 2, 2019

Jesta.io: Like Uber for Dining at a Restaurant




Today, I had lunch with the founders of Jesta. I have been wanting a restaurant customer experience like Jesta for years. It's like Uber for dining in at a restaurant. 

I simply pointed my iPhone at the QR code on the table and the Jesta app displayed the current menu for the restaurant, with photos of the items I could order. I tapped on each item and then sent my order to the kitchen, along with my payment and tip.

The best part is there was no need for me to wave down the food server when I was done eating. I could simply leave since my bill was already settled. Simple!

It all worked exactly expected. Jesta is in about half a dozen restaurants in San Diego, and growing. I hope they're able to raise a round of funding to put them over the top for marketing. Innovation at its best.

Monday, June 24, 2019

Where to Open a Restaurant?

I was talking to a savvy restaurateur who told me how he decided on the location to open an Indian restaurant in a particular neighborhood in San Diego.

He found several viable locations for his Indian cuisine. The problem was, how could he know which one was the best? So, he tested the market. For each potential location, he created his restaurant menu and direct-mailed it to the surrounding neighborhoods. Each menu had a different phone number to call, with the address of the potential restaurant. He immediately started getting calls from people who loved Indian food and were grateful that one was opening nearby. After a several weeks, he had enough calls to see which location had the most interest.

Testing a market, like this, is a very simple technique, but it's often the most overlooked step in the process for many entrepreneurs. Be sure to listen to your customers before you make up your mind to avoid confirmation bias. 

Friday, April 26, 2019

No Nonsense Marketing

The Marines are excellent at no-nonsense marketing. It's about being direct and setting the expectation. 


In June 1985, there was a TWA terrorist hijacking which was my Pearl Harbor moment. That was the moment when I pledged to join the Marines. I knew nothing about the military; not even the difference between the enlisted and officer ranks. But I wanted to do my part to make a difference. 

The local recruiting office housed all four military services. The Marines' office was in the back, so I had to pass by the Army, Navy, and Air Force offices on my way. As soon as I walked in the front door, a soldier stopped to offer me help.

"I'm looking to join the Marines or something," I said, shrugging my shoulders as I said the last word.

"Or something? Have you considered the Army?" he asked as he guided me into his office. He could tell I was looking for a challenge so he fired up a 12" LaserDisc to show me exciting clips of Ranger and Airborne training. For about two hours, that afternoon, this Army recruiter told me about what the Army could be. He convinced me take the ASVAB military entrance exam, later that week.

After we finished, I left the Army office and headed to the Marines' recruiting office where I met SSgt Meehan; a Marine I remained in touch with to this very day. The SSgt, who, at 27 years of age seemed to have the wisdom and experience of a senior citizen. He sat me down next to his desk, lit his pipe, and said, "I don't have any fancy LaserDiscs to show you videos. At this point, I have no idea what you're qualified to do, so I can't make any promises. First you need to take the ASVAB. Before you do that, you have to take my 30 minute practice exam."

SSgt Meehan led me to a small room where a couple other potential recruits were taking exams. I don't recall the details of the exam, but it wasn't too difficult. When I completed it, the SSgt reviewed my answers and told me that we could proceed to official ASVAB as soon as he could schedule it.

"Can the same ASVAB exam results be used for all the military services?" I asked the SSgt.

"Yes."

I explained to him about my soft commitment with the Army.

"If you want to be a Marine then I would like you to schedule that test with me," replied SSgt Meehan.

As I headed out of the building, I stopped by the Army's office and gently backed out of my ASVAB commitment.

"I can tell," said the soldier I had spent two hours with, earlier that day. "You're gonna be a Marine."

In my mind, I was committed to joining the Marines and the SSgt's direct and practical approach was the icing on the cake.

Thursday, April 18, 2019

The Entire Mueller Report in a Single Page

The Mueller Report has been made public; all 448 pages. Known formally as the Report On The Investigation Into Russian Interference In The 2016 Presidential Election, it's a bit redacted.

You can download the entire report, in a single, legible page, here:

High resolution (145.4 MB): http://mobile.joemoreno.com/mueller-report-highres.pdf 


Low resolution (16.9 MB): http://mobile.joemoreno.com/mueller-report-lowres.pdf 


How did I make this PDF?

Seeing the full report on a single page gives us an idea of how much text was redacted. Each redaction tells us why the text was redacted, i.e., to protect someone's privacy, to hide an investigation technique, etc.


Change the Layout option to 16 Pages per Sheet. Repeat.

To create this single page PDF:
1. Change the Layout option to print 16 Pages per Sheet.
2. Open the new PDF in Preview.
3. Repeat.

After doing this about three times, I had the entire report on a single page PDF that was fully legible, albeit very large (145.4 MB).

To reduce the size of the PDF, for the low res version, I choose File ––> Export, in Preview, and, under the Quartz Filter pop-up, I  chose Reduce File Size.

Now, we just need someone to read the entire report and turn it into a podcast.

Update: Here's the entire Mueller Report read, verbatim, in 12 hours: https://youtu.be/G73iRRgoLKg

Monday, April 8, 2019

Timer Objects for Network Latency

The heart of the Timer class.
I left out a simple tip from my "Tricks I Learned At Apple: Steve Jobs Load Testing" piece about timer objects. Below, is a complete, yet simple, Timer object class I wrote shortly after leaving Apple when I was working with SMS Hayes AT commands and RESTful APIs.


Exponential Notification

Timer objects do nothing more than measure the time it takes for a server's request/response loop to complete. Since this type of call is made over a network, it might finish very quickly (as expected) or, if the network is down or congested, it could take along time. If it takes a long time, the system admins will want to know. A good notification method is not to send an e-mail update or text message every single minute, or so – that ends up flooding people's inboxes. Instead, an exponential notification would be a much better idea. For example, notify the system administrators immediately, then wait one minute before the next notification, then wait two minutes, four minutes, eight minutes, etc. Finally, send a last notification once the issue's fixed.

Initiating the timer is simple...

Timer timer = Timer.startNewTimer();
NSLog.debug.appendln("Start time = " + timer.startTime());
Response response = saleTransaction.submitTransaction();
timer.stop();
NSLog.debug.appendln("Stop time = " + timer.stopTime());


And, lastly, the complete Java timer class is anticlimactic.


package com.woextras;

import com.webobjects.foundation.NSTimestamp;

public class Timer
{
private NSTimestamp _startTime = null;
private NSTimestamp _stopTime = null;

public static Timer startNewTimer()
{
Timer timer = new Timer();
timer.start();
return timer;
}
public void start()
{
_startTime = new NSTimestamp();
}

public void stop()
{
_stopTime = new NSTimestamp();
}
public NSTimestamp startTime()
{
return _startTime;
}
public NSTimestamp stopTime()
{
return _stopTime;
}
public Long elapsedTime()
{
long completionTime = -1;
if (_startTime != null)
{
long startTime = _startTime.getTime();
long stopTime;
if (_stopTime != null)
{
stopTime = _stopTime.getTime();
} else
{
stopTime = new NSTimestamp().getTime();
}
completionTime = (stopTime - startTime) / 1000L;
}
return completionTime;
}
}

Sunday, March 31, 2019

Apple's Pivot into Services


After giving my Apple Talk, I do a Q&A with my group on their tour bus as we head to Apple Park. Some of their questions are light hearted, such as, "Why did the Apple logo used to be upside down on laptops?" or "Why does the Apple logo have a bite taken out of it?" But my latest group asked some deeper questions about the future of Apple.

My group, on Wednesday, asked me about Apple's It's Show Time event held a couple days earlier. Monday's event at Apple seems to be a pivot for the company in that no new offerings were revealed that are now available.

It's a pivot for Apple because the company is moving more and more toward services delivered via Apple products. We last saw Apple make a strategic pivot in 2007 when Steve Jobs announced the first iPhone. Near the end of his presentation, Steve Jobs said he was changing the name of the company from Apple Computer, Inc. to Apple Inc. to better reflect that Apple was moving away computers and into consumer electronics.

Now, once again, as the smartphone market becomes saturated, we see Apple staying relevant by increasing their services offerings. Of course Apple has a lot of potential offerings in R&D, but many never see the light of day if they're not up to Apple's standards. 

Friday's announcement that they were killing off its never-to-market AirPower charging mat is a rare premature misstep by Apple. Rumor has it that this product, after being announced more than a year and a half ago, was running too hot to provide a decent customer experience. And that's what Apple's all about. I describe the company's mantra as best possible customer experience


Future Apple Products

The groups I speak to frequently ask me about Apple's future offerings, so I speculate...

1. Car: Apple is working on a car (codename: Titan); or, perhaps, autonomous software for automakers. It's not a secret what they're working, but they don't yet know what will became of their research.

2. TV: Apple's Eddy Cue, senior vice president of Internet Software and Services, who reports directly to Tim Cook, has long wanted to unbundle TV channels from cable TV packages. In a nutshell, he wants to do for TV cable subscriptions what the iTunes Music Store did for music... unbundle content to give customers more options. 

3. Medical: This is a long term play that's clearly humming in the background. Apple was the first company to get FDA approval for a consumer EKG product via the Apple Watch. Earlier this month, when visiting my doctor for a cold, he asked to look at the recent data on my Apple Watch. Apple's foray in to healthcare will continue to become more important. Perhaps a future Apple Watch will allow noninvasive glucose monitoring.

Obviously, we never know what secrets Apple has under wraps, but I suspect that the best is yet to come. 

Tuesday, February 5, 2019

Unsavable Photos on the Internet

Imagine if you could send a photo to someone else that couldn't simply be captured or saved. In other words, a screen capture wouldn't work and neither would taking a photo of the screen with another camera. One of the first Java applets I wrote solved this problem. But, since then, I haven't seen this technique used anywhere (which probably means there's not much demand for it).

I still think there's a market for displaying photos that can't be captured. But this technique is only a feature... there's not enough for an entire business. I'm just surprised I haven't seen it used. I thought, with the advent of disappearing photos on SnapChat, that it would resurface. My technique for this is still one of my favorite hacks.

The Early Days of Java

Java was the new hotness during the Dot Com boom period of the 1990s. It was the first mainstream object oriented language that worked great on the client and server. Although it was billed as "write once, run everywhere," it still needed work in the early days and we were fond of saying "write once, debug everywhere."

The big selling point of Java was it could be complied and run as an applet inside a web browser's Java Virtual Machine. It was the first executable mobile code for the Web. Java became everything Ada wanted to be and JavaScript became everything Java applets wanted to be. It's funny how that happens.

Sunday, February 3, 2019

Backups and Versioning

Revert To keeps multiple versions of your iWork files
with a UI similar to Time Machine.

Steve Jobs first demonstrated Time Machine about a dozen years ago. It's a simple backup feature built into macOS that takes hourly backup snapshots of files on your computer, when they change. This makes its trivial to recover a file your deleted or overwrote. The biggest challenge is enabling it with an external hard drive (which isn't much of a challenge at all).


Even Better

But, what if you didn't setup Time Machine? No worries, since backing up work is such a valuable feature Apple has incorporated versioning into their iWork suite of applications for word processing (Pages), presentations (Keynote), and spreadsheets (Numbers). At any given time, you can step back to earlier document versions in iWork; no setup required (screen shot, above).

I wish other major software suites, like those from Adobe or Microsoft, would implement this simple feature.

To step back to an earlier version of your iWork file, simply go to File –> Revert To and, voilĂ , your previous versions are there. This out-of-the-box feature, coupled with Time Machine, will solve nearly all of your common backup needs. I say nearly because all of your backups will still be local to your computer and network. For the most mission critical redundancy, I recommend a 3-2-1 backup policy: Three backups on at least two different media, with one backup located offsite (i.e. Amazon S3 or Glacier).