Friday, February 19, 2021

Easy one-handed Control Center and Notification Center access on iPhone 12/11/X

 I finally opened up my wallet and replaced my aging iPhone 6S -- fare ye well, headphone jack -- with a new iPhone 12. It's my first purchase of a brand new iPhone since buying an iPhone 5S, all the way back in 2013. (I had bought the 6S secondhand, via a seller on Swappa.)

While I'm finding the 12 to be a nice upgrade, one big usability regression jumped out at me in the early going: The difficulty of activating Control Center. (That's the screen where you can adjust volume and brightness, enable/disable wi-fi and Bluetooth, and so forth.) 

On the 6S, activating Control Center was easily done while holding the phone in one hand, via an easy swipe up from the bottom of the screen. On the 12 -- which has no Home button -- that gesture now navigates to the Home screen. Control Center is now activated via a swipe down from the top-right corner of the screen. 

The 12's larger size makes that gesture difficult to perform one-handed. Compounding the problem, although I'm right-handed, I use my left hand when operating the phone one-handed -- so that top-right corner is unreachable without substantially shifting my grip on the phone (which increases the risk of fumbling it).

With its generally very good support for accessibility features, I figured Apple would provide a simple option somewhere in Settings to swap that top-right-corner gesture for the top-left-corner. Unfortunately -- at least as of iOS 14 -- there is no such option.

The solution

To the rescue comes a configurable accessibility gesture pointed out by @temptertemper: The "Double Back Tap". Under Settings → Accessibility → Touch → Back Tap, you can set a firm "tap tap" performed on the back of your phone to perform one of a number of options -- including bringing up Control Center!

That double-tap is easily done with an index finger, while still securely holding the phone in a one-handed grip. In the early going, I've found the double-back-tap to be a much easier-to-perform alternative to the stock swipe-down-from-top-right-corner gesture.

Triple-back-tap is also assignable from the same place in Settings. I've assigned that to bring up Notification Center, which is also by default activated by a swipe down from the (distant) top of the phone screen.

Thanks to @tempertemper for this great suggestion, which I expect to be a nice quality-of-life improvement in daily use of my new iPhone!

Monday, February 15, 2021

Interview: Amanda Schneider Milne, Software Developer / Manager / Executive


I’m super proud of my mom, Amanda Milne! She was among the first to earn a degree in Computer Science from the University of Michigan, has worked in the field of software development her entire career, and worked her way up to become president of her own custom software development company here in Michigan, and later on, a Senior Vice President of a Fortune 500 company.

This is an interview with Amanda about her early years in software development, back in the 1970s and 1980s, and about one project in particular that I remembered her doing from my days as a grade school kid.

You were among the first Computer Science graduates at the University of Michigan, right?

I was! I graduated from Michigan with a Computer Science Degree in 1974. The Computer Science degree program was fairly new back then. We had no textbooks, just mimeographed handouts (which I wish I’d kept!). 

Nearly all of our work was done on an IBM System/360 Mainframe Computer, primarily by submitting our code on punched cards via a remote card reader. I took one class on a DEC PDP-8 Mini Computer, and I learned to build logic boards by soldering chips in an elective Electrical Engineering course. The programming languages were primarily Fortran and Assembler. 

Only 43 of us graduated with a Computer Science degree from U of M in ‘74. Fun Fact: I graduated without ever actually seeing the IBM System/360 Computer!

What did you do after graduation?

I worked as a Programmer for various companies (and customer accounts). 

My first assignment was to single-handedly write the real time process control code to run a custom carburetor test stand for Oldsmobile.  The computer was a16-bit Modcomp mini computer with 16K of memory, and no disk! When I started that project, I knew nothing about Modcomp computers, their operating system, their language -- or what a carburetor was! 

I wrote the code in an Assembler level language, and loaded my compiled code into the machine via paper tape.  When I found a bug in my code, I wrote the fix, de-compiled it by hand, converted it to hexadecimal, and keyed the fix into memory using 16 binary switches. 

Writing process control code was fun because I could actually see my code working as it opened and closed mechanical valves, and turned stepping motors. I was only 21, but I did successfully complete the project.

That’s pretty amazing! As a developer these days, there are so many layers of indirection between code we write, and what’s actually happening at the hardware level.  You actually got to add instructions to memory directly, with no steps in between! (And without Google or StackOverflow to help you know what to do!)

After that, you worked at a startup called Custom Software Services, right? What was your role there?

In 1981, Custom Software Services, a programming consultancy startup in the Detroit area, hired me to work part-time on a two-month project. I only had 3 years of programming experience at the time, because I took a 4-year break when you and Jeremy were born. My assignment was to single-handedly develop a daily Profit and Loss system for a local restaurant chain on an IBM Series/1 Computer (a 16-bit mini computer with the EDX Operating System), using a low level language called EDL. At the time, CSS had only one employee. After the project was completed, I stayed on to work on other projects. After 4 years, I went full time as a programmer. 

Highland Superstores was a big appliance sales company back in the 1980s, right? What was the project that you did for them?

Highland Superstores was a national chain of 100 appliance stores selling TVs, electronics, washers, dryers and refrigerators. In 1987, the Internet did not yet exist. Highland Superstores wanted a networked Point of Sale (POS) system in all of their stores, and headquarters. The system would track their inventory, daily sales, gross margins, commissions, and so forth.

Highland Superstores wanted a system to enable the salespeople on the floor to negotiate pricing, view how a lowered price negatively affected their own commission, check accurate up-to-date store inventories, sell the items, and schedule delivery. 

Before this system, a salesperson had to leave the customer (or make a phone call) to check inventory in the back of the store. Salespeople had no idea if the next closest store had the item in stock that his customer desired. It was important to Highland to have up-to-date inventories of ALL of their stores available in each store. With this feature, a salesperson would be able to sell the item, and send the customer to the next closest store to pick it up.  

The POS system in each store had to communicate and update the headquarters computer every 15 minutes. It also had to download inventory updates from the other stores every 15 minutes.

How did IBM get involved in this project? 

Highland Superstores had spent 2 years working with another local software company to develop the POS system using PC LANs, but it wasn’t working and Highland was getting frustrated. 

Rick Teague, Highland’s IBM Salesperson, told them that putting an IBM System/36 in each store, all communicating with an IBM System/38 at their headquarters, would work.  The hardware was up to the job.

With no Internet, how did this kind of communication work? Dial-up modems?

Yes, dial-up modems. The POS system had to dial the headquarters IBM System/38 every 15 minutes, establish a connection, upload the local store inventory, and download updated inventories from the other 99 stores.

You mentioned Highland was getting frustrated? What was the issue with the other company’s in-progress implementation?

Well, they couldn’t get their PC LAN system to work. If I remember correctly, their software could perform  the in-store functionality, but it had a great deal of trouble getting the communications with headquarters to work properly and quickly.

So how did you, and CSS, get involved in this project? 

The IBM System/36 hardware solution was a good idea, but there was no POS software to run on that platform. Since Highland Superstores had been paying another software company, they weren’t willing to fund another software development project on a different platform.

Rick said, “If I can get your POS system up and running in one of your stores on an IBM System/36, will you buy 100 System/36s?” Highland Superstores said maybe, provided they didn’t have to spend any money for the trial, and that the system would be up and running in the pilot store in 90 days! 

Highland Superstores also made it clear they were keeping their focus and money on the PC LAN-based solution. The new IBM System/36-based solution would have to out-perform a solution that had a two-year head start! 

IBM approached several software companies in the Detroit area, and asked if they would be willing to develop the POS system for free, demonstrate that it worked, and then hope to get paid afterwards. They all said “No”... except my boss, Don George, who owned Custom Software Services.

Our company had about 15 employees at the time, business was slow, and we were in danger of going under.  Don was an ex-IBM Systems Engineer, so he knew the guys in the local IBM office. He sat down and had some serious discussions with them about the project, and then he decided to take on the risk and tackle the project. I got involved when my boss asked me to manage the project.

That does sound like quite a risk! What was it like working on a project, and leading a team, that would have a zero payout for everyone involved if it wasn’t successful? 

It was extremely challenging. We couldn’t afford to pay a team of developers to write the software, so Don came up with a creative idea to share the risk. He offered several local developers a double-or-nothing deal. If they signed on with our project, we’d track all of their hours, and then pay them double their going hourly rate at the end -- if it was successful and Highland Superstores purchased it. If not, they’d get zero. 

Surprisingly, he found 7 developers who were willing to take his offer, but they all had to keep their day jobs. So, they worked on our POS project nights and weekends. 

And you were in charge of managing this? How did you approach that? 

I was 34 years old, and this was my very first project management assignment. The first thing I did was to read 3 books on project management. I knew that the project would be very difficult, and that I’d have to use every bit of education, new knowledge, guts, and perseverance I had! 

As it turned out, it was even more stressful, and challenging that I’d first thought. The project lasted 5 months, not 3. At the 90 day mark, we had accomplished enough that we earned another month or two as a grace period. 

The developers and I were all working 2 shifts, 7 days a week. Over that summer, none of us had any family time, or vacation time. There were many days when I came home late at night, dropped my clothes on the floor and fell into bed. Then, the next morning, I showered, grabbed clean clothes and was gone again. We worked 2 shifts, 7 days a week. The good news is that as the project progressed, everyone had more skin in the game. The developers saw their potential earnings mount, and became more and more unwilling to walk away. 

When we had the code (in the RPG language) running on a remote IBM System/36, IBM installed a System/36 in one of the Highland Superstores (for a free trial), and we spent about a month troubleshooting and debugging the software in a live store environment.

That must have been exhausting! How about the flip side? Was there a best part about the project?

Yes! No scope creep! This was the only software development project I’ve ever worked on with zero scope creep. 

We didn’t realize at first, how important this would be, but it was one of the biggest contributors to the project’s success. There was no scope creep because Highland Superstores had already invested 2 years in hammering out the functionality of the system. All we had to do was design and develop our code to exactly produce the same POS interface, files and results. 

Also, we were all working for free, so we had added incentive to stick to the exact specs. There were many, many times during the project that someone involved would suggest a change or improvement, and my answer was always ‘No’. 

The project team was all men… except for you! What was that like?


Amanda (far right), her team, her boss (Don, far left), and a few IBMers at the project kickoff meeting.

I don’t know what it was like for the other people involved. I can only tell you that I really didn’t think much about being the only woman, except on two occasions. 

The first time was at the beginning of the project. I knew I would be managing a team of all men, and that I had never managed a project of this scale, scope or importance before. I knew I had to establish credibility - and authority right from the start. So, I called a Project Kick Off Meeting and I invited all of the developers, and the local IBMers. 

At the meeting, I laid out the project plan, the timeline, the assignments, and the project ground rules. After the meeting, one of the IBMers told me it was the best kickoff meeting he’d ever attended.

Amanda with 2 IBMers and John, a fellow employee

The second time it mattered to me that I was the only woman, was during the roll-out phase of the project. At that point, our software had been awarded the contract, and I had a team working at the Highland Superstore headquarters to help install the software in all of their stores. 

We were all working long hours, and it was very stressful - getting the hardware and software up and running in 100 stores nationwide before the Christmas shopping season. One evening after most people had gone home for the day, one of the IBM Managers got into a heated argument with one of the Highland Superstores Managers -- they were yelling and screaming at each other so loudly, someone called security to stop them before they started hitting each other. 

A week or two later, I raised my voice in a meeting, and I was accused of ‘being emotional’!! No one ever said the screaming men were emotional, but I was accused of being emotional, which I thought was very unfair.

That’s super lame. I’m very glad there is generally more awareness in corporate environments in general, and in the software development industry in particular, about the unfairness (and lameness) of those kinds of double-standards. I’m hopeful that if either of my daughters get into the industry when they grow up, the state of things will be such that it won’t even cross their minds to be concerned about that kind of issue.

Were there any particularly memorable challenges during the project? 

Lots! At one point, a certain bug was making us all crazy. I solved it when I noticed -- on the old dot matrix print-outs we used at that time -- that there was a letter O where a 0 (zero) was supposed to be in the code. 

The worst was when my lead developer, who was working on the critical path, decided to walk off the project when we were about ⅔ through development. That surprised me, and freaked me out. Especially since, although I was a developer, I didn’t know RPG, and wasn’t able to jump in and take over his code myself.  Luckily, another of the developers on the team agreed to step up and successfully took over his portion of the code. 

Another time, in the middle of the project, Northwest Airlines Flight 255 crashed shortly after takeoff from Detroit Metropolitan Airport killing all six crew members and 148 of its 149 passengers -- including a family member of one of our software developers. We were all horrified, but we soldiered on. 

What wisdom would you share with people working on software projects today?

Make sure to keep an open mind, open communications, and always hear both sides of the story. 

I remember one time, the customer came to me with “evidence” that one of my developers had deliberately caused a significant problem in the code. Upon seeing the evidence, I too became very upset, and thought about firing him on the spot. 

But, I calmed myself down and went to talk with the developer in question. I asked him to tell me about the day, and code in question -- just tell me what happened. His description threw a completely new light on the situation, and made it clear that he was not trying to sabotage the project. I was then able to explain it to the customer, and keep the project going. 

Another lesson is one I learned was from Rick, the IBM salesperson. One evening, after a team meeting at my home, we were in my driveway talking about the odds that Rick had to surmount to get this project started. With great persistence, Rick had spent months and months calling on Highland Superstores before they even began to consider his pitch, and a possible IBM-based solution. 

During our talk. Rick picked up a basketball and started bouncing it while he walked down my long, curved, sloped driveway. When he neared the street he said, “You have to be optimistic. You’ll never get a parking spot closest to the mall entrance if you don’t drive down the first row. You have to take a shot.” Then, without turning around, with his back to the basketball hoop, he shot the basketball one-handed, over his head -- and the ball swooshed through the basket!! I will never forget that moment!

How did it all turn out in the end?

Well, it was a true horse race right to the end. After 5 months of working grueling hours, Highland Superstores made the decision to scrap the PC LAN-based system, and purchase ours! 

Testing the software in a live store environment

We were ecstatic. We all celebrated with an impromptu party. Over the following months, Highland Superstores successfully installed an IBM System/36 and our software in all 100 stores. 

Rick, the IBM Salesperson was handsomely rewarded with commissions on all of those machines. My boss, Don paid each of the software developers double their hourly rate for every hour they worked on the project. 

And me?  Don promoted me to VP of the company, gave me a $25,000 bonus, a new car, a Caribbean sailing vacation, and the opportunity to purchase a minority stake in his company -- which I did!

I’m so impressed that you were able to do all of that! I’m super proud to have been able to follow in your footsteps, in having a career creating software to solve problems for people!

Thanks, Mom, so much for taking the time to do this interview and share this part of your story!

Sunday, February 07, 2021

Why Not Take a Break?

Here's a graphic that I whipped up today, which I thought would be fun to occasionally post on social media sites, to appear in folks' feeds as they scroll though posts:

Why not take a break? You can stop scrolling this feed by pressing your phone's Home button.

I was amused by the contrast between Nintendo including the original version of this image in a couple of their games -- most notably Wii Sports -- and the hypothetical likelihood of any of the big social media companies inserting some content like this into their users' feeds.

(Anecdotally, I've heard that Facebook, at least, tends to favor implementation of new features that increase the amount of time that their users spend scrolling through their feeds -- of which something like this, encouraging their users to stop scrolling and take a healthy break, would be the opposite!)

It was pointed out by my wife that modern phones -- including the one that I photoshopped into the image in place of the original Wii Remote -- do not actually have home buttons. As the proud carrier of an iPhone 6S, this admittedly didn't even cross my mind. I'll just leave it there as an intentional anachronism, hearkening back to the time of the Wii's popularity. 🤷‍♂️

In any event, feel free to share this image onto your own social media feeds, should you be so inclined!