Skip to content

Apple iPhone Feature Requests

It’s been six months since I’ve had my iPhone 3g. I’m still obsessed with it. I try to find more and more ways to use it to help organize my personal and work life. I found an app that that has really helped. I found Culture Code’s Things for iPhone.  There are other uses for the iPhone beyond the usual phone, sms and email capabilities. I’m also using it to post updates to Twitter, reading news posts from Mobile News Network.  I’ve recently started to download e-books and actually reading on my iPhone. I’m using Stanza as my reader. I was really surprised when Amazon released the Kindle app for the iPhone. It has issues. I’ll stick to Stanza.

There are still many things I don’t like about the iPhone. Many things that Apple didn’t put into the iPhone operating system. Applications that they either didn’t think of  or decided not to include.  Here is a list of things I think are mising from the iPhone.

Copy and Paste

How could this be missing from the OS? The Palm OS had it, even my Motorola Razor had copy and paste functions.

Keyboard

The keyboard really needs improvement. In landscape mode it is useable but in portrait mode the keyboard is really a pain to use. It would be nice to configure the optional keyboard sets for commonly used non-standard keys such as #, *, &, or @.

I want to be able to use a Bluetooth keyboard to access my iPhone. It can be done if you jailbreak your iPhone, though I don’t plan on a jailbreak anytime soon.

Home screen

I want to be able to organize my apps easier than I can currently.  Maybe this can be done on my desktop computer and the iPhone’s prefs gets updated during sync. I have over 90 apps on my phone. Sure, I don’t use them all. I usually have 20 or so that I’m testing and some that I only use occasionally.  I know others iPhone users that have a similar number of apps. Apple we need a better method of application organization.

Voice-Dial

I want true voice dialing. My old Motorola Razor phone could do this well. I want this built into my iPhone. The technology has been around for many years. Apple should get on-board.

Apple please look at other phones that are on the market and give the iPhone some of these basic functions. Hope to see them in the new SDK 3.0.

Categories: hardware.

Tags:

Bouncing Audio Waves to the Cubicle Farm

I received a call from an acquaintance the other day. I hadn’t heard from this person in years but he started off the conversation seemingly ranting about all the noise he had to put up with at his workplace. He works in the same field as I once did, but for a competitor. I said that he should send off a copy of item #8 from the Joel Test [1] to his boss. If that doesn’t do the trick then he should bypass his boss and send it straight up the chain to the next guy. He kept rambling. This is the story he told.

“I like weekends but I miss the sounds that emanate from the lobby and my cubicle farm.

I work in a cubicle farm on the second floor above the lobby. The space above the lobby is open and all the sound is very acoustically bounced off the lobby’s marble floor and the 2-story glass entry up to the cubicle farm on the second floor. You can hear every conversation that takes place in the lobby. I’m almost ready to bring a decibel meter in for some testing because I believe that the sounds that emanate from the lobby actually gain amplitude as the sound-waves make their way to their destination they bounce off the marble and glass to the second floor. The phone rings constantly. Our well-thought-out system of phone etiquette is to greet the caller and ask how we can help them. Well, most callers just want to be transferred to their boyfriends, girlfriends, spouses, drinking buddies or parents. Sure, there are some callers that would like to gather some information regarding the job they gave to us. They ask for the person that sold them our service but after about 30-60 seconds of waiting on hold as that person is paged over the intercom system ,barely audible, but loud sound system that is mounted sporadically throughout the 20-foot high rafters around the building they are once again asked who they would like to be connected to. Usually on the second round it is suggested that the original person doesn’t appear to be responding to audible pages or rings of the phone at their desk so they should probably seek out the assistant of the person they sought. This substitute person is probably the person who they should be speaking to anyhow. The second person in the phone system tier is a Customer Service Representative. Well, these are often very busy people running around paging Production Managers, Salespersons and Purchasing personnel. Often, they require a second page. This is the third round of paging that the person who called in to our phone system must wait for. At this point it’s known that it is time to end the call. Either the second person, the first person’s assistant picks up the call or the caller is put into their choice of the first or second person’s voice-mail. All of this sound is bouncing off the marble floor and two-story glass window that lines the lobby, growing in amplitude, gaining decibels as it makes its way up to the cubicle farm on the second floor. All this sound from the lobby below.

I interrupt my acquaintance to tell him that my crappy cell-phone battery is about to die ( I was getting impatient) so he had better hurry and get to the point or he’ll be disconnected. He goes on again, not realizing that I have a fairly new phone that gives hours of talk-time before the battery expends it’s energy-

The lobby is just the beginning. There are noises spawning from the cubicle farm. In one cubicle there is an employee that insists that “This phone has a speaker in it for my convenience!” He starts every call with the speaker-phone enabled. First is the dial-tone. Those two frequencies, 350 Hz and 440 Hz pummeling the little speaker in the base of the phone as he dials the extension of his assistant, number two. Often, it takes twenty or thirty seconds for the speaker-phone tweaker to finally pickup the headset and continue the conversation with his assistant as a person-to-person call instead of the person to cubicle farm call he insisted on in the beginning. Loud menacing noises still continue to emanate from this cubicle in our farm. The cubicle occupant carries on a conversation first with an employee or two, screaming and screeching loudly, whining and sobbing and nagging and complaining. Then another call comes in from the lobby below. “Mister Green, you have a call on line twelve. Mister Green, call on line twelve. Excuse me, Mr. Green, your call is actually on line three.” Mister Green picks up the call, on speaker for the first twenty seconds, of course. “Oh my god” he says. “Oooh. My God. You don’t say. Oh MYYY GOD! “ Then there is finally a moment of silence in the cubicle farm that lasts about thirty seconds. Is our call recipient still there. Maybe he had a stroke or heart attack. “OH MY GOD” yells Mister Green. He’s alive but I think I just had a heart attack. Suddenly, there is a shift in this maddening reality. My phone is ringing. I am tempted to press the speaker-phone button to give my cubicle farm neighbor a taste of his own medicine. Before I could think it through, out of habit, I pick up the handset. “Hey.” Yea? I asked. “What are you working on?” I want to respond that I’m working on trying to muffle out all the noise out here but I respond with – “Oh, I’m working on solving the company’s prime number theorem problems. Remember, nobody here knows what prime number are the best prime numbers.” I went on a bit describing the algorithms we must put into place to ensure that we extract and use only the best of the prime numbers available to us. “Oh. Ok. Be sure to get those primal number completed on schedule” the caller responded. I hung up the phone and remembered… Oh. I designing the schema of a database for a new tool I was creating.

So, what do you think I should do?” I think my cell phone batteries really were about to die. This acquaintance had been talking, seemingly forever and much time had passed so I decided that it was time to end the call. “Hey, at least you have a job. Be glad you get a paycheck. Send that Joel Test #8 to your boss and hope for the best. Catch ya later.” “Later.”

The moral of this story? None. Go check out the Joel Test.


[1] The Joel Test Do programmers have quiet working conditions?

Categories: mind, random.

REALbasic vs C# Performance

I’ve been using REALbasic since version 2.0.  It’s fun and easy. The language and the IDE have both evolved into a very robust development tool. I’ve used it for small projects at work. I’ve created utilites that email, network, create small PDF files, access and process databases, send Apple-Events to Microsoft Excel.  I also have been using Microsoft Visual Studio. Initially, in 2003 I began to learn a little about Visual Basic .NET then I bought Visual Studio C/C++.  I was shocked at how well it worked.  What had I been missing all these years by not using MS Visual Studio? I’m now current with the latest Visual Studio and REALbasic. I decided to do a simple test. I needed to create a large file for a test for work. I thought that this would be a quick and simple method to check the performance of the various programming tools I use.

C# Code:

namespace BigFiles2
{
    public partial class Form1 : Form
    {    public Form1()
        {InitializeComponent();}

        private void btnSave_Click(object sender, EventArgs e)
        {
            SaveFileDialog dlgSaveFile = new SaveFileDialog();
            if (dlgSaveFile.ShowDialog() == DialogResult.OK)
            {
                string fileName = dlgSaveFile.FileName;
                Int64 length = Int64.Parse(tb_no_of_records.Text);
                FileStream fs = new FileStream(fileName,
				FileMode.OpenOrCreate, FileAccess.Write);
                StreamWriter sw = new StreamWriter(fs);

                for (Int64 i = 1; i <= length; i++)
                {
                    DateTime dt = DateTime.Now;
                    sw.WriteLine("{0} row => {1}. Timestamp: {2}",
					tbInput.Text, i, dt.ToString("s"));
                }
                if (sw != null) { sw.Close(); }
                MessageBox.Show("Done");
            }
        }
    }
}

REALbasic  Code:

Dim length as int64
dim i as Int64
dim dlg as SaveAsDialog
dim tos as TextOutputStream
dim thefile as FolderItem
dim dt as date
dim dtstr as string

dlg = new SaveAsDialog
dlg.Title = "Save a Big File"
thefile = dlg.ShowModal()

tos = thefile.CreateTextFile
length = val(efRecords.text)
for i = 1 to length
  dt = new date
  tos.WriteLine(efInput.text + " row => " + str(i) + ". Timestamp: " +
		   dt.SQLDateTime)
next
MsgBox("Done")

The results

I compiled each and ran each. The C# application completed one million records in about 15 seconds. The REALbasic application took 94 seconds. I wasn’t expecting such a big difference.

In the next test I’ll make a couple a changes. I’ll change the the REALbasic version to create a binary file and see if that makes much of a difference. I’ll also add Visual Basic .NET into the mix. I’m guessing that there won’t be much difference between the VB and C# application results.

Categories: code.

Apple 1 Variable Storage

apple1

The first computer I ever used was an Apple II. When I was in 10th grade, I discovered that my high school had a computer room. The school left it open during lunch so that students could use the computers. From that day, I spent many of my lunches in that room. I don’t remember exactly how many computers there were but I’d estimate about 12-16. There were Apple II’s, and Apple III, TRS-80’s and a couple of CP/M machines. I found that I liked the Apples.

Jump into the future by 24 or so years and I see an article in Make magazine about an Apple I replica kit. I ordered it and built it the first weekend I got it. I couldn’t wait to start programming this thing. Assembly language was my interest in this thing. It also has Woz Basic burned into the eprom and for some reason that I have now forgotten, I was obsessed on how Woz saved his variables in memory with his version of Basic. I spent that night testing memory contents and here is what I found.

Woz BASIC variable storage table

Locations in memory

4a.4b = lo mem pointer
4c.4d = hi mem pointer
cc.cd = end of variable pointer

Integers
byte_position
00        variable name 1
01        variable name 2
02        next variable ptr hi
03        next variable ptr lo
04        value hi
05        value lo

variable name 1
= ASCII * 2,
(example- a variable named “A” would be $82, since ASCII “A” = $41 and $41 * 2 = $82)

variable name 2
= The second position of the variable name. If variable name is A1 then variable name 2 = “1″
ASCII + $80
(example- if A1 is variable name then variable name 2 = “1″
and value in this position is $31 (ASCII for “1″) + $80 (decimal 128) = $B1 )

next variable ptr hi, lo
= points to the next variable in the table. If this = end of variable pointer (cc.cd) then it is last.

value hi, lo
= the value assigned to the variable

Strings
byte_position
00        variable name 1
01        variable name 2
02        next variable ptr hi
03        next variable ptr lo
04        value
05        value
...       terminator ($1E)

variable name 1
= ASCII * 2,
(example- a variable named “A” would be $82, since ASCII “A” = $41 and $41 * 2 = $82)

variable name 2
= The second position in the table of a string variable will be $40

next variable ptr hi, lo
= points to the next variable in the table. If this = end of variable pointer (cc.cd) then it is last.

value
= ASCII + $80

terminator
$1E

Categories: code.

Tags: ,

Bad Behavior has blocked 23 access attempts in the last 7 days.