Supah Computah Status 1 Wednesday, Apr 22 2009 

I decided that working on the Supah Computah (I was finally able to decipher the name written on the side) is going to be my reward for releasing my next iPhone app.  So, until I get it submitted, I’m going to have to ignore the SC project.

So the app, yes, it’s coming along well and I’m learning a lot about memory management and debugging using crash logs.  This is the first app I’ve written that’s had to store more than just configuration options so I’m learning a lot about object persistence, storage, lazy-loading, etc.  It’s all very cool stuff and I’m learning just how lazy working in a managed language (mostly C#) has made me about memory management!

I’m planning on having a beta version of the app ready by the end of this month (April) and if all goes well submitting the app two weeks later.  If all does not go well, then it’s going to be longer obviously…

This is the first application I’ve written for a “general audience” so it will be interesting to see how it performs in regard to sales on the App Store, how much promotion will be required/effective and what sort of ratings and response it will gather.

I’m also engaging my friend Tiffany to design an icon for me this time (as opposed to designing my own as with previous applications) so I am excited to see what she comes up with.


Supacomputa Thursday, Apr 9 2009 

Inspired by BenHeck’s C64 laptop (and running across several HERO-1 auctions on Ebay) I have a renewed interest in resurrecting a Heathkit H89 dubbed “SupaComputa” and loaned to me by my friend Andy.

This is the best picture of this computer, ever:

Summer Fun

Summer Fun

Interesting iPhone Security Tidbits sprinkled in Apple-vs-EFF article Tuesday, Feb 17 2009 

Prince McLean at Roughly Drafted has a post regarding the conflict between Apple and the Electronic Frontier Foundation on the subject of jailbreaking the iPhone.

More interesting to me are several quotes from Apple’s response to the challenge which include insight into some technical details of the iPhone’s protection mechanisms.

MindPulse 1.5 Avaliable Now! Wednesday, Jan 28 2009 

Just a quick note, Apple has approved MindPulse 1.5 and it is avaliable now at the iTunes App Store.

Somewhat related, I spoke yesterday with a reporter from The Washington Post about my BodyPulse and MindPulse apps.  The article should appear next Tuesday in the (free registration required) health section.

MindPulse 1.5 Monday, Jan 26 2009 

MindPulse (my MindMachine/BrainMachine/Brainwave Entrainment App for the iPhone and iPod Touch) has been updated to version 1.5 and submitted to Apple for approval.  The approval process for updates seems to take about a week; sometimes more, occasionally less.

Version 1.5 brings the most often-requested features:

  • Volume Control
  • Fade-out of the audio at the end of a session
MindPulse 1.5

MindPulse 1.5

In addition I’ve added a few things that haven’t been specifically requested, but that I felt were in order:

  • Updated UI
  • Smoother transition in and out of the visual stimulator
  • The app keeps track of where you are in a session (how many minutes are remaining), that way if you interrupt the session, you can pick up where you left off

There were a couple of additions I had planned for this release that did not make the cut this time, the main one was the ability to run the app in “audio-only” mode, to be able to jump back and forth from the visualizer without stopping the session.  I think this would be useful when you can’t partake in the full experience (for example, at the office), but you would still like to use the audio portion of the program.  It took me a long time to come up with a design that I was satisfied with for this function, but I wasn’t able to get it working satisfactorily before my code-freeze deadline.

Another feature that hasn’t been requested directly but indirectly is the ability to accompany the binarual stimulation with music from the iPod application.  I don’t like the approach other apps have taken of adding “canned” music or sound effects to the application because I think that it’s important that the user have a connection with the audio that accompanies the beats, and the chances of selecting a handful of tracks that will have meaning to the thousands of users of this application is low.  Instead, I would like to simply allow the iPod to continue playing while MindPulse runs, this way the user can select anything they like to go along with the entrainment program.  I don’t think there is a technical (or contractual) hurdle here, but I haven’t verified this because this feature was below the others in priority up to this point.  This is definately something I’ll be looking into for the next release.

The third item I’m seriously pursuing is customization to the visualizer.  The simplest form this may take is allowing for different colors of light to be used (currently the light is pure white), perhaps connected with a particular program or user-selected.  A more complex option would be to provide images in addition to colored light, perhaps even user-supplied images.  I’m not aware of any science that indicates the benefit of using images instead of pure light, but it has been requested and I don’t see the harm in it, as long as the priority of more compelling features are respected.

A few other loose ends reguarding MindPulse.  The first is that I wanted to mention that one of the biggest factors delaying the release of this update was my struggle with the user interface, and how to incorporate the changes without mucking up the cleanliness of the original interface.  I was never satisfied even with the original, and when I started working on adding controls (specifically the volume control) everything that I came up with frustrated me.

I’m not a graphic designer, but I’m a competent user interface designer; however, sometimes you need graphic design skill to implement a user interface and it is at this point that I struggle the most.  Someday I’ll simply engage a designer who I can work with collaboratively on these issues but in the meantime I have to try and struggle through it myself when the UI demands it and this is an area where vast amounts of my time are absorbed.

After several flawed revisions I finally came upon what you see here (actually, something slightly more sophisticated but I couldn’t quite put it together in time to make my deadline, but you’ll see it in the next release).  For many reasons I would have prefered to have released this update months ago, but the design simply would not present itself, and I felt in my gut that it was better to hold off until I had something that at least I was comfortable with.

One final note and then we’ll put this topic to bed until the update is actually avaliable.  I’m playing with the idea of releasing a “Lite” version of the app for free.  Something that would provide a limited taste of the experience to those who are curious about brainwave entrainment but not quite ready to invest financially in it.  What I have in mind is one-program (most likely Alpha) app that runs for a fixed amount of time (probably three minutes), enough for you to take the thing for a spin and see what it does for you.

If you have any thoughts on this I would encourage your feedback.

You can’t write a Killer App Thursday, Jan 22 2009 

Often the Holy Grail of independent software developers is to come up with the next Killer App.  Wikipedia defines a killer app as:

“…any computer program that is so necessary or desirable that it provides the core value of some larger technology, such as a gaming console, software, operating system, or piece of computer hardware.”

Often VisiCalc is cited as the first killer app, as the desire for this application was so great that many users bought an Apple ][ just for the ability to run it.

VisiCalc on the Apple II

VisiCalc on the Apple II

Killer apps are good for developers and platform vendors as well for obvious reasons.  In addition, when an application has this sort of effect on hardware sales, it puts the developer in a position of advantage with the platform vendor and can lead to a level of collaboration (for example, unlocking undocumented features of the hardware) that would otherwise be unlikely.

So it makes sense that most developers spend time thinking about “the next killer app”; ironically, this ensures that they will never develop one.

This may surprise some of you but it should not.  There are very few, if any examples of killer apps that have been invented by software developers.  The reason for this is that the source of inspiration for a killer app is a serious need that is shared by many, typically in a area of specialty or a particular profession.

The Video Toaster sold Amigas to almost every American cable station

The Video Toaster sold Amigas to almost every American cable station

A software developer might come up with a killer app that solves a great problem in their own work, but it would only be useful to other software developers and while this might meet the definition of driving platform sales, the volume is not what we would normally associate with the general expectations that come with the term “killer app”.

The more common scenario is that a layman comes up with an idea in the process of their everyday work, and a way that a computer might solve that problem:

“The idea for the electronic spreadsheet came to me while I was a student at the Harvard Business School, working on my MBA degree, in the spring of 1978. Sitting in Aldrich Hall, room 108, I would daydream. “Imagine if my calculator had a ball in its back, like a mouse…” – Dan Bricklin, inventor of VisiCalc

They then engage a software developer (or more often, become one themselves) to construct the idea.  In the most successful examples, the inventor becomes enough of a programmer to build a usable prototype which is then used to lure in more specialized labor, management, etc. to turn the prototype into a product.

So if you set out to create “the next killer app”, the odds are definitely stacked against you, but if you insist I have a couple of thoughts on the subject:

1.  Build a killer app factory
Instead of trying to come up with the next killer app, build a software company that is optimized to fill the role of realizing the primitive prototype of one into a complete, marketable product.  The focus would be on recruiting ideas and on optimizing the product development, maintenance and support cycle.

2.  Diversify your interests
I would hope that most developers are interested in something besides computers.  Explore these areas of your life and how you might improve or alter them through software.  If you are able to do this, then you might just come up with an idea that meets a need for people outside the software development world and as a developer, you have a more concrete idea of the possibilities and limitations of the problems software is best suited to solve and those which it is not.

One final note on the subject: if we go by the definition of a killer app as an application that is so desirable that it justifies buying an entire platform just to run it, then your app should probably utilize a platform that isn’t in everyone’s hands yet, or at least not in the hands of your primary audience.

If you were to write an app for Windows, and the audience was corporate business users, while your application may be popular it is probably not going to increase hardware or operating system sales noticeably.  On the other hand if you wrote an application for Windows that made it easier for artists to reach their audience that might be another story.

The key point here being that most “killer apps” happen on emerging platforms that are yet to find where they fit in the software user universe and working with the platforms, even if only for inspiration, gives you an advantage in the quest to write the killer app…

…but you already know that’s impossible, right?

An iPhone app in under an hour? Saturday, Dec 13 2008 

9:41PM – Firing up Xcode

9:56 – First build, fails

9:58 – Second build, fails

10:03 – Third build, fails

10:08 – Fourth build, success! (needed to add the audiotoolbox framework)

10:10 – Build and Run on device, runs but doesn’t work

10:25 – Runs and “works”, but update is too fast and sound is too long, I have to reboot the phone to make the hurting stop

10:33 – Shorter sound

10:38 – Tuning accelerometer sensitivity

10:42 – Sensitivity and interval are good, sound might need work but is good enough. Time to make it look like something

11:00 – We have a main screen and an icon, now for the flip side copy

11:09 – Not too bad, it took a little longer than I had expected but I had to screw around with the audio bits longer than I thought it would take.

DropBox Wednesday, Nov 26 2008 

I found out about DropBox via John Gruber’s excellent Daring Fireball. I’ve seen dozens of these before, but I’ve really been aching for a universal home directory for years, and this want has evolved into a need as the amount of clients I serve has grown.

The DropBox Logo

The DropBox Logo

I’ll be experimenting with this in a couple of ways that I’ll detail later once the results of the tests are in. In the meantime I suggest giving it a go and if you find anything interesting I’d love for you to comment on your findings.

Advertising Wednesday, Nov 19 2008 

I’m giving Google AdWords a spin.  We had a wonderful spike in activity around MindPulse the days surrounding being picked up by the Make Blog but now that things have quieted down a bit I want to experiment with other ways of getting the app in front of those who will find it useful.

I’ll post an update on the findings in a week or so.

MindPulse 1.0 Friday, Nov 14 2008 

My latest iPhone application MindPulse is available now on the iTunes App Store.

The inspiration for MindPulse came from a number of places including an article about The Brain Machine in Make Magazine, my own study and research of flicker frequency, possibly from re-reading William Grey Walter’s The Living Brain and certainly the desire to reduce the time I waste unconscious.

MindPulse main view

MindPulse main view

I took a look at a few of the existing binaural beats applications available for the iPhone but none of them included what I consider to be the basic requirements of an entrainment device: synchronized audio and visual stimulation. Worse yet, most of them add the complexity of masking the frequency controls as “fancy” program names such as “creative thought enhancer” and “quit smoking”?

So for this first release I had two requirements:

  1. Synchronized audio and visual stimulation
  2. Provide the four most interesting “modes” recognized by EEG standards

From this came the two views of MindPulse, the main “menu” (as shown above) and the flashing visual stimulator screen.

There were several technical challenges faced once I was ready to start coding the app. The first is that I was unable to find any built-in support for audio synthesis on the phone; this was surprise. For awhile I noodled on the idea of writing a custom synthesis module but eventually I realized this was unnecessary for the application (at least, for this release) so I opted to synthesize the necessary tones using my computer and sample these sounds to include in the application. This has the added benefit of reducing power consumption on playback which is important as I suspend “sleep mode” on the device while we’re running.

The next challenge was getting the visual stimulation to work exactly how I wanted. In the end I had to comprimise on one aspect (controlling the brightness), but overall I was able to get what I wanted working.

So far the application has done well and most encouragingly the feature requests i have received have been items that I’ve already had on the list for future releases. I’m planning at least one update before the end of the year and perhaps two depending on how long it takes to get the features I feel are critical working to my satisfaction.

I’m also considering a “lite” version I’m calling “MindPulseSolo” that would provide only one “mode” at a reduced cost to make it easier for more people to give the technology a try and see if it works for them before investing in a more “complete” application. I’m just not sure yet if the overhead of maintaining a separate code base is worthwhile, and I’d rather focus on improving MindPulse than spinning off additional applications.

For now I’m gathering feedback and suggestions so if you use MindPulse or are curious about what it does and how it works feel free to comment here to get in touch.