Friday, November 12, 2010

iPhone, AT&T, and Ending Calls

I have an issue that no one will take responsibility for. I have an iPhone 3GS, current iOS (4.2), and it seems to work fine, except for the minor detail of the phone bit.

Sometimes (maybe 30-50% of the time) when calls end, and the other party disconnects, my phone doesn't. Not automatically, and sometimes not even clearly when I disconnect. Then, the phone app doesn't return to its main screen; it just stays at the call-ended screen. I can exit and return to the phone app, so there's a workaround.

Is it AT&T's fault? Apple's fault? My fault? I don't know, but it's an annoyance that is also eating up minutes, and for a variety of reasons I'm wahahaaaaaaay past my minutes this month (hooray for rollover minutes!).

Tuesday, November 9, 2010

Verizon and iPad

A short note. You can now buy a Verizon version of the iPad; it works with Verizon's MiFi mobile data service. However, if you look at the Apple Store, they are only advertising the AT&T version. Not an accident...

Monday, November 8, 2010

Teaching Algorithms and Data Structures

I'll be teaching algorithms and data structures (A&DS) at CSUMB in Spring 2011. I have (essentially) complete freedom in teaching the class and choosing a book. So far, so good.

I always like to consider first principles, so I wanted to address three issues:

  1. What A&DS will I teach, and why these?

  2. How will I convey the importance of the material? What is its relevance?

  3. What language will I use for teaching the course?



Address the third question, and something of the first two, I had an idea. You can script The GIMP to do just about anything, and it uses a scheme (and therefore lisp) variant as a scripting language. Brilliant. Not practical to teach, but wow, what a class that would be.

However, there's a simple problem; there is no scheme A&DS book in print. Nor a lisp book. In fact, if you want to teach A&DS, there are three language choices for books in print:

("Algorithms and Data Structures in Books" from Amazon for a more complete list)

Oh, nominally there are pascal options, and MIT Press has published a pseudocode-based A&DS text. But the basic problem is that neither C nor lisp are options.

I will probably go with Java, although Python is tempting, tempting, tempting.

Friday, November 5, 2010

MacBook Air

It's been forever since I last updated. As Jim Anchower says, "Hola, amigos, it's been a long time since I rapped at ya."

I've been thinking about the new MacBook Air. It's a fantastic piece of machinery, although perhaps the word "machinery" is wrong here, as the product is entirely solid state. Wow. A modern laptop with no moving parts. Of course, this isn't the first one: the old portables from Tandy were solid state, and that was almost 30 years ago, but for a machine that suffers as much use as a portable computer, sold state is the way to go.

Hmm, I don't know if it has a fan... if so, scratch the word entirely, but the rest of the statements still apply. A fan can be replaced.

Of course, you don't get a full-fledged computer. You get a recent, but slow, Core 2 Duo. It's clocked down (obviously) to lower heat production and increase battery life. Still, it's an old processor family.

The problem is that there isn't a processor that sits between the Core i3 and the Atom. WHat that would look like might be a multicore Atom.

There's an open question here, and the answer doesn't lie in hardware: is software really ready for multicore? Regardless of what some might say, concurrency is hard to do well.

It looks like I will be teaching algorithms and data structures in the Spring, and I've decided that I MUST teach multithreading. We may not spend much time on it, and it may be toward the end, but if you can only think of algorithms in single-thread mode, then you will lose out as a developer. Sure, we can use up CPU cores with multiple applications, but when you are doing something like decompression, optimal performance will come from using as many cores as you can to preemptively decompress data. Not all that different from double-buffering, really. Does anyone remember that? Before the days of GPUs? Hmm...