Big/Small Dreams

Anyone else have these?

When I was a kid, I would have what I called “Big/Small dreams”. More like nightmares, and usually when I wasn’t quite asleep or awake.

I have a theory that we’re spirits that are semi-loosely connected to the physical world, and that when we’re first adjusting, it’s hard to “sync up” with our place in it.

What if, as has been suggested in numerous Sci-Fi shows, our solar system is like an atom in a larger entity, and at the same time the atoms in us and everything we see are themselves galaxies, solar systems, or universes?

Then, what if we, as spirits, actually exist outside all of that, and when our body is born we need to try to lock in on this rapidly-moving, tiny body on a planet in a solar system in a universe, that is at the same time a collection of universes with their own solar systems and planets and atoms and universes and solar systems and atoms?

Finding your place in that would be a nightmare.

Three Techniques to Make Your iPhone Your Servant Instead of Your Master

These techniques will work on other “smart phones” (and computers) too, but to keep things simple I’ll address the iPhone.

  • Aggressively turn off notifications. A notification is only useful for something that you need to act on immediately – e.g. your Uber has arrived, your spouse-to-be wants to meet you for lunch in 15 minutes, or Tile has found your lost cat and you need to go pick him up before he runs off again. If you receive a notification for anything that you don’t need to act on immediately, take the immediate action of going to Settings > Notifications and turning the notification/app badge off. This will make your phone clean and remove the subtle, constant mental friction that occurs when you scan over unnecessary app badges, not to mention the non-subtle friction of a notification popping up when you’re doing something.
    • This means email notifications too – all of them: badges, banners, and sounds.
    • If an app that needs notifications on misbehaves (e.g. your ride-share app sends you a marketing notification), delete it and go to a competitor. You’re the boss – fire them for interrupting you.
  • Put every app you don’t need instant access to in a “Stuff” folder. No more digging through folders or flipping through screens wondering if Pages is in “Business”, “Lifestyle”, or “Productivity”: On my iPad, I have one screen for personal, one for work, and a Stuff folder. Apps I constantly use are in the dock. I’m working toward a single screen of apps on my iPhone [update 1/2018: got there – when I got a new iPhone, I set it up as a new device 🙂 ]. To run an app, tell Siri “Run Word” or swipe down and search for it (i.e. start typing its name). I find that often Siri will already have guessed the app I’m looking for when I swipe down.
    • My home screen has only four (of six) rows of apps, plus four apps in the dock.
    • Advanced tip: My IM apps are in a folder and my Phone apps are in another folder. This makes IM badges and Phone call badges show up in one place. [update 1/2018: I dropped this practice; messaging apps I use often are on the home screen, the rest are in “Stuff”]
    • Advanced tip 2: My “Stuff” folder is on page 2. That’s where new apps I download appear, so it’s easy to drag them to Stuff, plus it keeps Stuff out of my vision on the home page.
  • Process your email inbox once a day (or less). Use a service like SaneBox or Boomerang’s Inbox Pause to automatically hold your email until the next day. This lets you batch process your inbox into actions and reference materials without new items coming in while you work on the old. I:
    • Use SaneBox and have a Gmail filter that sends all email to @SaneTomorrow. This makes all my messages skip the inbox and has SaneBox deliver them to my inbox in a batch each morning. No, it doesn’t go into an infinite loop. 😉
      • If there’s something you do want to appear in your inbox, add that to your mail filter (e.g. I allow server errors from my development environment through so I can see them immediately when working on something).
    • Use AirMail on my Mac and/or iPhone to process my inbox into OmniFocus actions

Technology growth is a pyramid

Growing up in what’s now called “Silicon Valley”, I’ve been surrounded by technology my entire life. One of my ongoing side studies has been observing and predicting the growth and direction of technology.

I used to think technology growth was linear or exponential – every update an improvement over what came before. After noticing things lacking in my iPhone that I’d liked in my Palm Pilot, I started thinking technology growth was cyclical.

Now, looking back at the history of our recent technological development, and farther back at the technology of older civilizations, I’ve realized that technology growth isn’t linear, exponential, or cyclical. It’s more like a pyramid of dependencies that must be continually maintained.

Technology doesn’t grow – it’s built based on the abilities and needs of a society at a given moment, and rapidlydeteriorates from there. Any given technology’s life is more comparable to a piano note’s envelope than to a linear graph: hit the note and it’s loud at first, but rapidly decays unless you keep hitting it. Technology is the same: any given technology, be it a phone, toaster, space ship, or piece of software, requires constant maintenance and development, or it rusts, rots, or otherwise deteriorates, pretty rapidly. How long would your phone work without a cell tower or electricity?

In addition, higher-level technology is built, like a pyramid, atop lower-level technology. This is very visible in software, where applications are built on top of libraries and frameworks that are built on protocols that run on operating systems that run on more protocols that run on modular hardware that’s built of specially-engineered materials that are skillfully formed from ores that are skillfully mined from the ground (or other sources), that require power provided by other hardware passed over specially formed ores also mined from the ground. If any one of these levels isn’t maintained, the higher levels rapidly, often immediately, cease to function.

This means that there’s a baseline of technology, which is roughly that which any individual can build him/herself from naturally available materials. From there, people working together can build levels of technology. If any of the groups fails to maintain their part of the technology pyramid, their part must either be rapidly replaced (in place or by an equivalent to which the dependent pieces can quickly move), or the pyramid collapses.

This has a few implications I find interesting:

  • Space flight: If someone isn’t actively trying to get to space and has a need to do so, that technology will deteriorate. We went to the moon (and some believe we didn’t), and then stopped going. Elon Musk said in a TED interview that the reason he started SpaceX is that space travel isn’t inevitable (pointing out that we went to the moon, then stopped).
  • We might not be (in fact I think it’s likely) the first technologically advanced civilization on Earth. It’s possible, even probable, that other civilizations have left the planet. If the smart people of a society left and the technology was forgotten, we’re the descendants of the people that didn’t leave. I think the Egyptians (or another group around the same time) discovered a means of lifting heavy rocks and sand, which, given the presence of similar structures around the globe at the time, was probably common knowledge. It may well have enabled them to travel across the globe, or off it. Somehow, that technological knowledge was forgotten, and now we don’t know how to build pyramids.
  • Colonizing Mars will be more like a frontier farming community than like Star Trek. Any technology on Mars would have to be shipped from Earth. You couldn’t build, or even fix, the most basic PC on Mars. There’s no Intel to build a chip, nobody to manufacture the case, and really nobody to build or maintain a power plant. Plus, if you’re on Mars, your biggest concern is how to grow food and breathe – the need for a PC would be vastly lessened, and it would therefore not be maintained.
  • Last but not least, if you end up in a primitive village on another planet, you’re not going to make them technologically advanced. If you’re lucky, you’ll make them sandwiches. 😉

“Grab The Nearest Device” Design

When designing Yet Another Wifi App (YAWA), I subconsciously had a design principle in mind that eventually was coded into the development process: the version numbers were kept in sync and all platforms had the same feature set.

I now call this “Grab The Nearest Device” design, because when I want to do something, I want to grab the nearest device. What’s the point of having an iPhone app if I can’t do the thing I just grabbed the device to do? I personally think that’s worse than not having an iPhone app because it makes me spend time trying to do something I then find I cannot. For example, say I want to add a new account at my bank. I pick up the iPhone (or run the app on my iPad), and search around for the “add account” feature. Can’t find it. Now I have to go get the computer and do it on the web site, whereas without the option of an app, I would have just gone to the computer in the first place. Next time, if I’m smart, I’ll skip the app and go to the web site – which is exactly what I find myself doing (frequently deleting the app in the process).

So, from a practical standpoint, here’s my development approach:

  • Need to reach multiple platforms? Do a mobile-first responsive-design web app (that’s how YAWA started). My app must work, completely, on a phone, and must not have a separate “mobile site”, because those always break (and it means maintaining two code bases instead of one).
  • Want device interaction on a solid platform? Carefully launch an app on iOS and keep the feature set 100% in sync with the web app (you *can* cheat and wrap the non-device-interactive features to the web app, but be very careful about your user experience when doing this as it can get you bad reviews really fast – remember, they already can go to your web site).
    • While you’re at it, do a Mac app – with a bit of work you can share most of the code. I recommend keeping all the code in one repository/Xcode project with a different target for the MacOS and iOS versions. Keep the version numbers in sync except, possibly, for minor version numbers if you need to push a bug fix. Oh, and always always include release notes. 😉
  • Need device interaction on more users? Carefully launch an app on Android, again keeping the feature set 100% in sync with the web and iOS apps. I personally haven’t done an Android app as the plethora of devices makes testing and putting out a reliable app more difficult – I’ve stuck with iOS because Apple’s done a pretty good job of making stable development possible.
  • Consider a Universal Windows Platform app (again, keep the feature set in sync before releasing)

You might think “that’s a lot of catch up for the second platform and beyond”. Design your app so that the core functionality is in a RESTful API. The web/iOS/Android/Mac/Windows apps should be clients. Then it’s easy to catch up.

No Release Notes – Take 3

I’ve seen a couple of apps now start adding release notes again. But then, I also saw one company decide to stop adding release notes. My latest procedure, if I can’t delete the app yet, is to write release notes for them in the review.

Here’s my review of one company’s product – “Word”:

Since they don’t include release notes any more, let me tell you what they added in this version:
– Deletes all your files on login
– Spies on your family
– Detects cookie jars in your kitchen and eats all your cookies

If these aren’t the features they added, perhaps they’ll add release notes next time and prove me wrong.

I strongly encourage you to do the same. If they don’t get the hint, at least the reviews will be entertaining.