Archive for the NumMemorize Category

New Key Layout

Posted in NumMemorize on March 8, 2009 by mz

Ok, so I am still stuck on the keyboard layout.  Last I left you, my new layout was this:

No "." or "E/-"

No "." or "E/-"

Playing around with this layout, and watching other people play around with it, I realized that fingers had to move all over the screen to tap out the numbers.  That made me change the layout to the following:

picture-9I think this grouping allows for faster number tapping.  However, I sort of have a problem with an uncentered keypad.  Yet, by centering it, I kill a lot of screen real estate I want to use in other ways.  And if it is to be off to one side, then why not on the left side?

(I had one crazy idea: scrap the keypad entirely, and just show a pile of numbers at the bottom of the screen and let people flick numbers up in order…)


Key Deletions

Posted in NumMemorize on March 7, 2009 by mz

Just before I called it a night, I decided to delete the “.” (decimal) and “E/-” buttons off my keypad.  My thinking is that in most cases, it’s not a big surprise that the decimal point is the second character in the string of a number.  I’m having the app automatically detect the position of the decimal and put it in right after the previous digit has correctly been entered.

I also decided that the “E/-” (exponent) button is similarly unimportant.  Right now, none of my selected number have an exponent.  I can see adding numbers, like the Avogadro constant, which would require an exponent, and some with a negative exponent, thus requiring the “-“.  Curiously (and at this late hour I don’t want to be bothered thinking about it) I don’t know of any special numbers that themselves are negative.

In the case of numbers with exponents, I think I will automatically append the characters “10²³” or “E23” to the right side of the number and do the user a favor.  Yes, they won’t have to remember this last bit.  For now, I’m ok with it.

I got the sounds working – and on the iPhone, if you type in the incorrect digit, you’ll get a vibration!

Next comes scoring or some form of performance feedback.

What, no ‘click’ sound? No ‘bonk’? No SysBeep()?

Posted in NumMemorize on March 7, 2009 by mz

I want my iPhone app to play a system beep when the user presses the wrong key and to play a click sound as the user types on my custom keypad.

I went off and look for what I thought should be a simple standard API call. I find that maybe

AudioServicesPlaySystemSound (theSound);

will do what I need. Looking into it, I am surprised how much work is involved.

Trusting that there must be some easier method, like SysBeep(), or ClickSnd() – after all, haven’t OS’s as far back as early UNIX provided simple little sound routines like that? – I spent much time Googling and looking through SDK documentation.  Is it possible that the iPhone, with all it’s sound capabilities, does not have such calls?

I’m not a sound guru. I loathe having to create .caf or .wav in order to do something that is not the focus of my app, and an area that I have little expertise in. A good SDK is supposed to free you from doing mundane stuff, and allow you to focus on bringing your expertise to life.

Looks like, though, that I have to go off and figure out how to make a click sound and a “bonk” sound.

Keypad view is working

Posted in NumMemorize on March 7, 2009 by mz

I got quite a bit accomplished today.  I got the typepad view to show a keypad, made the keypad live, wrote the underlying code to check the user’s input against the stored number, and display only those digits that are correct.

Next, I want to add the functionality to make click sound as correct digits are pressed on the keypad, and to make a bonk noise if the entry is incorrect.

Right now I am thinking that the user gets two attempts for each digit to get it right, and then I display the correct value.  Now, I have the option of adding the correct value to the end of the string of digits, or I can just flash the appropriate key on the keypad, indicating that that is the key to press.  I’m not sure which will do a better job of helping the user memorize a number.

I still have plenty more to do.  After the sound and last digit handling, I need to add a timing mechanism – the user only gets so much time to enter each digit – and a scoring mechanism to show how well the user has down and whether they have improved over time.

Here is what the new view looks like:



Posted in NumMemorize on March 6, 2009 by mz

In order for a user to enter the digits of a number, they would only need a numeric keypad. Apple’s standard numeric keypads look like these:

Number & Punctuation Keyboard

Number & Punctuation Keyboard

Phone Keypad

Phone Keypad

For the purposes of my application, I need a keypad that has all the numbers and a decimal point.  For some numbers, I would need the letter E.  Thus I am forced to create my own keypad.

After some playing around, I have two options I didn’t hate:picture-61I am not entirely happy with either, but I think I will use the bottom one for now, and later after I have the app working, I will create a completely custom keypad.

Next Day

Posted in NumMemorize on March 5, 2009 by mz

Thanks to Wikipedia, Xavier Gourdon & Pascal Sebah and AT&T, I have my initial list of memorization candidates:

π 3.14159265358979323846264338327950288419716939937510
e 2.71828182845904523536028747135266249775724709369995
√2 1.41421356237309504880168872420969807856967187537694
ln 2 0.69314718055994530941723212145817656807550013436025
log 2 0.30102999566398119521373889472449302676818988146210
Φ 1.61803398874989484820458683436563811772030917980576
√3 1.73205080756887729352744634150587236694280525381038
√5 2.23606797749978969640917366873127623544061835961152
γ 0.57721566490153286060651209008240243104215933593992
c 299792458
ζ(3) 1.20205690315959428539973816151144999076498629234049
iⁱ 0.20787957635076190854695561983497877003387784163176
i⁻ⁱ 4.81047738096535165547303566670383312639017087466453

I’m thinking that the app would have two main views.  One to display a list of numbers, and the other to test and train you on each.  A settings view may be necessary.

I’m storing my numbers in an SQL database, although I could easily have used a different mechanism for storing and retrieving.  With the SQL database, I presumably could, down the road, let the user add their own numbers or access a network database of numbers.  As it is now, there doesn’t seem to be any downside.

Here’s the screenshot for the first view.  The biggest challenge I had to deal with was getting the app onto my iPhone – I really wish Apple would make it a whole lot easier.

First View

Due to the width of some of the numbers, I have decided that the app can only be used in landscape orientation (the user has to hold the iPhone sideways).  I may revisit that decision later.

Touching any of these numbers, the user is moved to the next view.  My thoughts are that the view will sport a fulltime numeric keypad, plus an ara at the top that would be able to display the entire n digits of the numbers.  As you type a number, you will be timed and you will be corrected if you type a wrong digit twice in a row.

Now to program the second view.

A new product…

Posted in NumMemorize on March 5, 2009 by mz

I thought I would use this blog to document how I come up with a new product or a new release.  Of course, I’ll be keeping most of these posts private until the product ships – I’m not exactly crazy about giving people a roadmap to follow in order to compete with me.

This product is a simple one.  Really simple.  Usually not worth the trouble of taking it from gray matter and putting it into software.  However, with iPhones being so easy to program, it’s really not a whole lot of work to get even those simple little ideas pushed out.

When I was in 9th grade, a friend and I would try to beat each other at memorizing the numerous digits of π.  He managed to stay a few digits ahead of me, no matter what I did, so one day I surprised him by blurting out 15 digits of e.  After another constant or two (√2 and log 2), we soon got distracted with other things.

Years later, at a party in college, a math major recited 10 or 12 digits of π in order to impress a fellow student.  A better setup I could not have asked for.  I looked over and rattled off 8 or 10 more digits.  I asked him if he thought those were the other digits to get to 20 decimal digits.  He laughed and thought I was kidding.  I said, “hey, I’ll write it down, you check it out tomorrow.”  I wrote.  I also wrote down e to 20 digits.  He never told me whether I was right or not.  Everyone within earshot that night seemed mightily impressed.

Over the years, I’ve run into people who have impressed me and others with their memorization skills.  What I have to remind myself, is just how few days it took for me to memorize each constant – all it really required was the discipline to work on it each day for a few days.  Easy:  One or two digits in the morning, one or two additional numbers in the evening.

The real question is, can a simple software app be written to help with this memorization task?  How best to accomplish this?

My first thought, as I create a new software project file, is to rely on a simultaneous quizzing/training process, with feedback to encourage and engage.  More on this as I figure it out.

As with any product, a name can make or break it.  I like finding a name I can get attached to early on, keeping the door open to a possible renaming down the road.  Given that the name I pick could be the final one, I usually spend a bit of time on it – otherwise, I could make my life easier and pick a random code name and get on with programming.  But nooooooo…  As of right now, I am leaning towards one of the following:

  • NumMemorize
  • Numemorize
  • Numorize
  • NumMemorizer

For now, I am using the letters nmzr as the base name for my C sources.

That’s about it for now.  I’ve got an app to write.  It happens to be my first iPhone app intended for a wide release.