But What Does It Mean?

When an invite to an Apple event comes out, people spend countless hours analyzing just what it means. What’s the word choice indicate? What does the color scheme indicate? What subliminal messages are we missing.

I’ll parse this one out for you:

The design group at Apple was asked to make an invitation that looked cool, and they delivered one.

That’s all.

They probably mocked up a couple dozen, and then some middle management type picked one.

Announcements will be made next week. Rest easy, tech world.

Tail Recursion

In learning a bit of Elixir last night, I had to pound into my head what “tail recursion” meant. What I learned is that it saves (potentially) lots of memory by not storing all those frames during recursion, but that it does so at the expense of being a cool-looking piece of recursion.

To me, the magic of recursion has always been the way the work is done bottom-up at the end as the recursion works its way back to the surface.

Tail recursion winds up being more loop-like. It also usually winds up taking three parameters instead of one, so you lose some of elegance.

It took reading this Stack Overflow question and set of answers to figure it all out. Pay particular attention to this answer.

My Podcast App: The Main Interface

This is what I came up with for my podcast app’s main play screen:

The first thing you’ll likely notice is the lack of buttons. That’s for a very good reason. This app is designed to be used on the road, and to help me skip over commercials and tedious show openings. I don’t want to have to look at the screen to do that. It’s gesture-based. Swipe left to right to fast-forward by 30 seconds. Swipe right to left to rewind 15 seconds. Tap to pause. Tap again to play.

iOS 7 causes a bit of a problem with this. If you start your fast-forwarding swipe too far from the left, it merely brings you back one screen in the application. Since I use UINavigationBar for navigation, that functionality comes standard with it. I believe there’s a flag to turn that behavior off, but I haven’t had the time to look for it and implement it.

Overall, it’s a fairly simple looking screen. It’s not perfect, but it suits my purposes.

Looking back on the process now, I’m amazed at how many little decisions go into making this page:

  • The bar at the bottom of the screen is not a scrubber. It’s just a thermometer bar type thing to tell you how far along the podcast you are visually. You can’t grab a vertical bar in the middle and rewind or fast forward great distances. Only 30 or 15 seconds at a time with a swipe. It’s a limitation of the program that I’ve never hit up against, so I’m cool with it.

  • In iOS 6 and earlier, the bar was much thicker. Made it easier to read. With iOS 7, it became an itty bitty line, and less noticeable. Annoying, that.

  • The bar is black when playing and turns red when you pause the playback to give you some visual indication of the state the podcast is in. That visual indicator was much bigger in iOS 6. In iOS 7, maybe I need to turn the whole background of the screen red? If the point is to make for an easy to use app while otherwise occupied, large signals like that would be key.

  • Above that, I have two numbers: Time elapsed and total time of podcast. This is one I went back and forth over. First, where to position it? Left, right, or center? Above or below the bar? Should the second number be the total time, or the time left till the end? Should the size of the two numbers be different to give one data point additional importance? Should the numbers turn red when the podcast is paused, too? (Yes, they should, but it’s an idea I just had while writing this up.) The code updates the timer a couple times per second, as I recall. Is that fast enough? Too fast? Too slow? I don’t know. I’m not too nit-picky about whether I’m 45:31 into a podcast, or 45:32. So no problem there.

  • Is the podcast album art too large? Too small? Should it be the background and everything else be over top of it? Should I fade it out then?

  • The album art doesn’t always show up. Sometimes, it even shows up in the menu screen (that I haven’t shown yet) but not on the play screen. That’s most annoying. Haven’t looked into why that is yet, though. We’ll look at that menu screen another time.

  • The show title above the album art takes some regex trickery to remove the redundant podcast name from the title of the episode. It’s not perfect. That’s freeform text, so people can adjust those titles in any way they want, whether it’s compatible with my code or not.

  • I like having the podcast date up there.

  • Problem: No show notes. I like having those, but there’s no room on the main screen. Maybe it could have a button to pop those up, but I don’t want to start adding buttons to the screen, which is meant to be one large tap target.

  • I don’t like the back arrow in the upper left in either iOS 6 or iOS 7. It needs something custom that I haven’t had the time to figure out.

Right now, this project isn’t under active development. It’s “good enough” for what I need it to do. I learned a lot from doing it, and maybe that’s enough for my purposes. We’ll see.

When Steve Jobs Ushered In Today's Tech Landscape

When Jobs started talking about the iPhone on Jan. 9, 2007, he said, “This is a day I have been looking forward to for two and a half years.” Then he regaled the audience with myriad tales about why consumers hated their cellphones. Then he solved all their problems — definitively.

The New York Times, October 4, 2013

This weekend, we mark the second anniversary of Steve Jobs’ death. I was thinking about him last week when I was looking at the state of the technology world. Jobs kicked off the tech market we live in today with one appearance at MacWorld in January 2007. Everything in tech since that day has been because of the iPhone he introduced that day.

Smartphones are the majority now. Hardware keyboards are close to dead. Unremovable batteries are the norm. Everyone laughed and made fun of Apple and then, like everything else about the iPhone (software, hardware, business process, and probably industrial engineering too, who knows?), they quickly copied it because Apple was right.

Rimm became BlackBerry and is on death’s door. Nokia is done. (The cell phone part of it has gone to Microsoft.) Motorola is gone. (Google absorbed it.) HTC is circling the drain. Arguably, Microsoft is on a crash course. Nintendo and potentially the entire console-based video game industry is in trouble.

Perhaps slightly more on the fringe edges of the argument: Dell (“Close Apple and give the shareholders their money back”) has gone private. HP has retreated and – wait, are they even in business anymore?
Only two other companies came out of the iPhone launch better. The first is Samsung, who copied every detail of the iPhone so carefully that they’re the punchline of so many tech jokes – yet profitable to the tune of billions because they produce the cheap iPhones with the free operating system. Apple doesn’t target that market. And Google, who had a phone operating system of their own in development that they quickly turned around to be an iPhone clone instead of a BlackBerry clone. They also concentrated on the operating system, not the hardware, because their end game is to sell more ads by putting computers ubiquitously into people’s hands.

The business model of the tech industry has changed, too. The old adage about the best way to make great software is to also make the hardware was always the norm for Apple. Everyone made fun of them for it. Guess what? Google and Microsoft went out and spent billions to buy companies to allow them to build their own phones, and now make their own laptops, too. Microsoft’s recent business structure realignment looks an awful lot like Apple’s.

Tablet computers came about as a natural extension of the iPhone, and now they’re going to be bigger than the traditional PC market. And everyone is again following along.

Rumors that Apple is building a TV set led Google to proudly proclaim that their apps would be on half of all TVs sold last year. Didn’t happen.

And rumors that Apple is working on a watch led every other tech company to scramble to make one of their own first. Samsung won that race and produced a piece of junk that nobody has positively reviewed.

The buzzword everyone uses to describe personal computing today is “mobile.” It all started with Steve Jobs on stage that January day in San Francisco. It took Apple engineers years of working in ridiculous secrecy – but the kind that worked. Only a megalomaniacal control freak/visionary like Jobs could have pulled it off.

He literally changed the world. Again.

Not a bad life’s work

Print Debugging FTW

From Peter Seibel’s excellent “Coders At Work” book comes this quote from Joe Armstrong, creator of Erlang:

Seibel: What are the statements that you use there [to debug your code]? Print statements?

Armstrong: Print statements. The great gods of programming said, “Thou shalt put printf statements in your program at the point where you think it’s gone wrong, recompile, and run it.”

Meta-Note: (The promised look at my iOS coding project is in the works. Sorry for the delays…)