TamsPalm - the Palm OS Blog

Palm OS news and opinion source

July 11th, 2008

On trademarks

An unnamed TealPoint employee recently posted the following explanation about the US trademark law to the palm-entrepreneurs mailing list. As it is excellently written, I felt like reposting it here - enjoy:

1) Functionality
A term cannot usually be trademarked if it is purely descriptive of its functionality. For instance, you cannot trademark “mileage log” for an app that tracks mileage, but I don’t think “Trip” is considered generic by this definition because the name doesn’t describe exactly what it does (trip planner? assistant for clumsy people? Grateful Dead tribute?). Instead, it is considered a “suggestive” mark which can indeed be trademarked. Being a common word isn’t a problem as long as it isn’t “functional”, as “Apple”, “Flash” and many other words are trademarked in a specific application.

2) Incontestability
After five years, a registered term does not automatically become “incontestable”, but only if an “affidavit of incontestability” is filed with the PTO. Even then, the term can still technically be contested, but the term cannot be ruled invalid due to “prior art”, “functionality” or “lack of distinctiveness”.

3) Infringment
Even if it’s incontestable, just including the term as part of a competing product’s name is not automatically infringement, especially when only a limited number of words could apply to an app that tracks automobile mileage. Otherwise, people would just trademark all applicable words (”mileage”, “log”, and “trip”) and nobody would be able to name a competing product anything at all. The intent of trademark law is to prevent confusion, not limit competition.

When determining potential trademark infringment, the PTO assesses the “likelihood of confusion” on the part of customers, e.g. whether they might purchase one product believing it to be the other. If Steven’s product were called “Trip Deluxe”, or even “iTrip” then I think there would be a fair case for infringement. I think it unlikely, however that someone would think “TripLog” and “Trip” were actually the same product.

July 11th, 2008

Customer care hell: asking about specs

When one of you has a problem with a technical device, he tells the manufacturer the system specifications right away. Hell, some of my customers have even included a full list of all files in RAM into their bug/CS requests. However, asking customers for system specs can go very wrong…feast your eyes on the true story below (anonymized to protect the guilty):

I work as an IT guy for an upscale Austrian ***** company. So far, all has went well - until yesterday. Our CEO called the customer support hotline of a major software manufacturer, described her problem and suddenly started screaming at the support rep as if he/she had been gravely insulted.

After interrogating her to see what the problem was, I found out the following mind.boggling truth:

The CS guy asked her: “what computer do you have”?

Our CEO didn’t understand that this information was needed to actually find and fix the bug. Instead, she thought that the manufacturer was trying to blame her holy (Apple) device - and became pissed as sh*t.

For me, this story once again proves my basic assumption: what is clear to us, isn’t clear to others. Tell customers WHY you ask them for data - it might cost you a bit of extra voice, but will pay out in the long run…

Feel like telling us your worst-ever CS experience?

July 1st, 2008

Fix padding issues in structs

Yours truly recently had a VERY weird issue concerning system prefs. The structure given below worked well while in main memory, but saving/restoring it via the Preference API led to total fuxation of all values below the logging struct:

typedef struct{
UInt16 autoOff:1;
UInt16 timestamp: 2;
UInt16 flashscreen: 1;
UInt16 autoConnect: 1;
UInt16 pingpong: 3;
UInt16 bell: 1;
UInt16 wrap: 1;
UInt16 reserved: 6;

FontID font;
} OptionsType;

//LEAVE the __attribute__((packed)) in place - the prefs comnpile without it,
//but CHANGE WHEN BEEING SAVED AND THEREBY CREATE A LOGIC BOMB

typedef struct
{
char server[52]; // 50+1 Not sure on this one
char nick[20]; // 16+1
char realname[31];
}default_struct;

typedef struct
{
Boolean enabled;
Boolean logPvt;
Boolean filePerChannel;
char volname[40];
char parent[256];
}logging_struct;

typedef struct
{
Boolean alertnetdrop;
Boolean lowbatshutdown;
}bgm_struct;

typedef struct{
UInt16 appNetRefNum;
NetSocketRef socketRef;
NetIPAddr addr;
UInt16 port;

UInt32 bugged_last;

//These prefs are used by the network routines themselves
//and will one day replace the global variables
char server[51]; // 50+1 Not sure on this one
char channel[31]; // 30+1
char nick[17]; // 16+1
char pass[17]; // 16+1
OptionsType display;
bgm_struct background;
//These are UI ONLY variables and are NOT intended for any other use
//except as defaults for new ServMgmt entries => padding is 4by
default_struct defaults;
logging_struct logging;

Int32 sample;
} myIRCPreferenceType;

The reason for this issue has to do with weird padding issues - GCC adds extra bytes that do nothing, but are needed for some reason or another.

However, GCC supports a special command that disables the padding algorithm temporarily for a structure of choice. Adding these to offending structure definitions fixed the problem:


typedef struct
{
char server[52]; // 50+1 Not sure on this one
char nick[20]; // 16+1
char realname[31];
}default_struct __attribute__((packed));

I am at a loss at why this works - but the program now works flawlessly.

Does anyone of you have any ideas as to what’s happening here?

March 19th, 2008

OnBoardC with Bird integration

When OnBoardC was first conceived, it was designed to use a resource editor called RsrcEdit. However, the manufacturer of this program never did much in terms of maintenance, causing users to switch over to a program called BIRD(thereby loosing one-click ‘IDE’ integration).

Now, Lincoln Ramsay has created an unofficial version of OnBoardC that allows you to launch Bird directly from the file list:

Additionally, version 1.1.4 of BIRD adds a return-to-OBC button:

OnBoardC programmers, please update your compiler and resource editors immediately - the gained productivity is more than worth it…

March 4th, 2008

Get a creator ID for your Palm OS application

A recent discussion on the palm-dev-forum led to some members finding out that the Creator ID database apparently has been removed from the new Access Developer Network web site.

However, rest assured - as far as we found out so far, the creator ID database still is more or less intact. In case you need to register a new ID, please use this link:
https://www.developerpavilion.com/palmos/page.asp?page_id=331

Thanks to all palm-dev-forum posters for pointing this out!

November 21st, 2007

MobiHand now requests an ITIN

Just in case someone looks for a lawsuit: I am NOT a tax lawyer! The hints below describe what I did…there’s no warranty that this is the best, correct or whatever way. Follow the instructions below AT YOUR OWN risk!

TamsPalm covered the process needed for MobiHand’s tax system a few months ago here - unlike most other ESD’s; MobiHand originally didn’t demand a so-called ITIN number from its customers.

However, this has now changed - if you wish to kill the 30% tax deduction from your revenue, you now need an ITIN or EIN number. Logging into MobiReach allows you to look at your tax information in the Partners tab.

I am currently in the process of getting an ITIN…stay tuned for further information!

November 12th, 2007

The Brando USB Missile Launcher

This review has nothing to do with PalmOS but it makes just as much fun though it is not very useful: The Brando USB Misslie Launcher.
The device is shipped with a paper target, 3 missiles and the software for the PC. Once the launcher is plugged into an USB port, Windows recognizes it as a “Human Interface Device” and installs the needed drivers automatically. The software - which is Windows Vista ready - for controlling the launcher can also be installed onto an USB drive so that you can carry the device with you.

The size of the device can be seen in the image below:

How the device acts and how the controlling software works can be expressed the best way by a video:
USB Misslie Launcher video on youtube.com

After you have hit the “Fire!” button you will hear an audio warning for three times until the missile launches.
Instead of using the software + mouse to control your launcher you can use the keyboard for:
- moving (left-right-up-down): arrow keys
- fire: space
Even though the rockets are build out of foam plastic, please do not aim or shoot at humans or animals!

In my opinion this little toy is a great way to skip some time when it is getting boring - e.g. in your office :)

You can buy the launcher for 35 USD at the brando shop:
USB Misslile Launcher at the brando shop

This review is available in german, too.

October 17th, 2007

Centro software: supported features

This post from the palm-dev-forum could potentially be of great interest for all developers who wish to target a Centro but don’t have one available - especially people out of the USA who aren’t good friends with Orange:

Here’s a partial list of the features supported by the Centro (+ means
present, L means a library is present and loaded). The only difference
>from the 755p that I spot is an audio codec (creator ‘CdWr’) which now
supports encoding to AMR, not just decoding. (The reported video
support for SXGA is just the same bug that hasn’t been fixed since the
700p.)

I didn’t check whether ZLib and MathLib are in the ROM or happened to
be in RAM for the device tested.

Feature Reporter v. 0.7beta7 [Centro Sprint]
==== HARDWARE ====
manuf. ‘Palm’ HAL ‘P053′ model ‘D062′
processor: Xscale rev 0
==== FEATURES ====
Palm OS v 5.4.9
Graffiti 1 (or none)
display resolutions: 1x, 1.5x, 2x
supported bit depths: 16 8 4 2 1
supported color depths: 16 8 4 2 1
char. encoding: ISO-8859-1
+ International Feature Set
+ New Serial Manager
+ Notification Manager v 1
+ Expansion Manager v 2.0
+ VFS Manager v 2.0
SMS [PalmSource]
+ Bluetooth
+ Bluetooth Exg. Lib. v 4.0
+ Handspring Extensions v 2.0
5-way Nav. [PalmOne]
+ 5-way Nav. [HandSpring] v 2
+ 5-way Nav. [PalmSource] v 1.0
Camera Slider [Zire 71]
+ Sampled Sound v 1.0
==== PALMSOURCE LIBRARIES ====
+ Personal Data Interchange
L Network (TCP/IP)
L Secure Sockets Layer (SSL)
+ Crypto. Provider Mgr.
SMS [PalmSource]
Telephony [PalmSource]
L Bluetooth
==== PALMONE LIBRARIES ====
+ palmOne Photo v ?
+ palmOne Camera Mgr v 3.0.0
CameraLib (Treo 600)
+ palmOne LCD Overlay v 0.0.0
+ palmOne Codec Mgr v 3.0.0
L Background Service
+ Hi-res Timer
—- CAMERA LIB —-
— still sizes —
QQVGA 160×120
QCIF 176×144
QVGA 320×240
CIF 352×288
VGA 640×480
SXGA 1280×960
SXGA 1280×1024
— still formats —
RGB565
YCbCr422
— video sizes —
QQVGA 160×120
QCIF 176×144
QVGA 320×240
CIF 352×288
SXGA 1280×960
SXGA 1280×1024
— video formats —
YCbCr422Planar
— preview sizes —
QQVGA 160×120
QCIF 176×144
QVGA 320×240
— video preview settings —
allowed values: Off
(unknown video preview settings 0×00000026)
current value: Off
(unknown video preview settings 0×00000026)
— white balance settings —
Auto
—- LCD OVERLAY FORMATS —-
YCbCr444
YCbCr444Planar
YCbCr422Planar
YCbCr420Planar
—- CODECS —-
In Out Crea ID
IM0M MPG4 mp4g 0
MPG4 IM0M mp4f 0
IM0L MPG4 mp4e 0
IM0M MPG4 mp4e 0
MPG4 IM0M mp4d 0
MPG3 PCM1 mp3d 0
PCM1 APCM adpe 0
APCM PCM1 adpd 0
MPG2 PCM1 Mpg1 0
Mpg1 IM0@ Mpg1 0
TFFF IM0T ImCp 0
TFFF IM0R ImCp 0
TFFF IM0Q ImCp 0
TFFF IM0: ImCp 0
TFFF IM05 ImCp 0
TFFF IM09 ImCp 0
TFFF IM03 ImCp 0
IM0T WBMF ImCp 0
IM0R WBMF ImCp 0
IM0Q WBMF ImCp 0
IM05 WBMF ImCp 0
IM03 WBMF ImCp 0
WBMF IM0T ImCp 0
WBMF IM0R ImCp 0
WBMF IM0Q ImCp 0
WBMF IM0: ImCp 0
WBMF IM05 ImCp 0
WBMF IM09 ImCp 0
WBMF IM03 ImCp 0
GI9F IM0: ImCp 0
GI9F IM05 ImCp 0
GI9F IM0Z ImCp 0
GI7F IM0: ImCp 0
GI7F IM05 ImCp 0
GI7F IM0Z ImCp 0
IM0V JPEF ImCp 0
IM0G JPEF ImCp 0
IM03 JPEF ImCp 0
JPEF IM0V ImCp 0
JPEF IM0: ImCp 0
JPEF IM05 ImCp 0
JPEF IM09 ImCp 0
JPEF IM03 ImCp 0
IM0I MJPG ImCp 0
IM0H MJPG ImCp 0
IM0G MJPG ImCp 0
IM03 MJPG ImCp 0
MJPG IM0N ImCp 0
MJPG IM0M ImCp 0
MJPG IM05 ImCp 0
MJPG IM03 ImCp 0
PCM1 QCLP CdWr ‘d“á`’
QCLP PCM1 CdWr ‘d“áX’
PCM1 AMRS CdWr ‘d“áP’
AMRS PCM1 CdWr ‘d“áH’
AVCd IM0M AVCd 0
PCM1 PCM1 APCM 0
APCM PCM1 APCM 0
PCM1 APCM APCM 0
DAAC PCM1 AACf 0
IM0M H263 263e 0
H263 IM0M 263d 0
==== SONY EXTENSIONS ====
[not a Sony]
==== 3RD PARTY LIBRARIES ====
+ ZLib (compression)
+ MathLib
==== CONFIGURATION ====
total memory: 70472K
dynamic memory: 10304K
free memory: 66454K
HotSync ID:

A big thank you goes out to Douglas Reeder for posting this - if anyone has his web site, please post a link to it so that I can link to him!

October 16th, 2007

Palm Centro device ID available, Centro GSM confirmed

Users of the palm-dev-forum mailing list have just provided me with the following information that could potentially be useful for identifying a Centro:

#define kPalmOneDeviceIDGnome 'D061' // Gnome/GSM
#define kPalmOneDeviceIDGandalf 'D062'

The second ID is the device ID for the CDMA Centro - but the D061 is the one that really interests me. Looks like yet another, small indication that a GSM Centro is finally on the way!

P.s. For all those of you new to the term - the device ID is an ID that identifies a handheld’s hardware to software running on it…

October 11th, 2007

PalmGear enables HTTP Post; kills developer fulfillment

PalmGear/Motricity has finally pulled the plug on developer fulfillment(aka developer sends code to customer per email) and the accompanying, much-ridiculed algorithm tax. Instead, Motricity now supports HTTP Post - a real-time process where a script on a developer’s web server is used to generate the reg code and dispatches it to customers.

This allows developers to keep their algorithms secret, but reduces customer’s wait times (and customer support efforts) significantly. HTTP Post has worked very well for me in the past, and I look forward to using it with PalmGear’s in the future!

Last but not least, here is the original announcement:

Greetings from Motricity

I trust that you are well and that 2007 has been a profitable year thus far. Many of our partners in the past have requested support for HTTP Post Fulfillment as a useable fulfillment method at PalmGear. We are pleased to announce that this method is now an option effective immediately! HTTP Post allows you to host fulfillment methods on your end exclusively while still providing Motricity customers with real-time fulfillment at the time of purchase.

Satisfying customer orders immediately is important in today’s marketplace. Moving forward, PalmGear will only support fulfillment methods that are real-time in nature. These supported methods include:

File (Full Version)
Static Key
Code Pool (List of Keys)
Dynamic (jCode)
HTTP Post Fulfillment

If you presently have listings that utilize a method other than those listed above, you will need to update your existing listings to accommodate the supported fulfillment types. This should be addressed immediately to avoid any gaps in support for your listings.

We have established a documentation area to assist you with setting up your HTTP Post Fulfillment should you elect to utilize it as a method. You may access it through your developer account, or directly through:

http://palmgear.com/index.cfm?fuseaction=developers.httppostdocumentation
(…)

Tim Tyndall
Manager, Developer Relations

September 18th, 2007

Palm launches “device preview” program

This comes in from Palm’s PDN newsletter that goes out to all developers who once registered with them in order to gain access to Palm-specific SDK’s:

The Palm Virtual Developer Lab (VDL) program is an online service that provides access to real handsets on live worldwide networks remotely via the Internet. Palm makes VDL available for global mobile software developers creating prosumer, business and services software solutions targeting the Palm pre-release device portfolio.

24×7 early access to network activated pre-release devices for faster time to market and reduced testing costs
The benefits of a real device in your hands – without waiting for a real device

Full test and debug capabilities
Experiencing your solution as your customers will on a real device
Improved accuracy of your test process through record/playback test capabilities
Ability to reserve devices to fit your testing schedule
Reserve the device in advance

Mobile Complete offers the Palm VDL as a subscription-based service. Monthly packages are available.

This program now is only available through the Designed for Palm Products Program and Palm Select Developer Program. Access to the Palm VDL will require an NDA/updated NDA.

Essentially, this means that now even more developers will gain access to Palm’s devices before they get released. For us, this is great in two ways:

First of all, it shows that Palm finally starts to care about its developers again, wanting to make sure that the user experience of the new devices is great right out-of-the-box(aka no issues with 3rd party software). This encourages users to later on try out more software and could maybe deliver a nice boost to the struggling Palm economy…

But it also means that there are now more opportunities for us to get leaked information about Palm’s new devices :).

Jokes aside: great move, Palm! This is the way to go!

September 2nd, 2007

CamLibControl - the call that doesn’t work

Ever since the Palm Treo 600, Palm OS Treos contain integrated CMOS cameras that can produce decent images. Since the Treo 650, these cameras can be controlled via the so-called Camera Manager, an API that should let you control brightness, contrast and saturation comfortably…

However, the API’s Palm itself provides do not work on any shipping Treo. I myself have tested the MiniCamera sample from the SDK on a Palm Treo 650 and a Treo 680 and can report that changing brightness and contrast of images(!!!) via CamLibControl works on neither. A comrade from 1src has tested MiniCamera on a Treo 755p(latest Palm device) and doesn’t report any successes either.

So, to cut a long story short, you can NOT programatically change image brightness/contrast on a Palm OS Treo. You need to live with what the camera manager provides…so much for the Treo being a high-tech smartphone. As for the MiniCamera API sample … do not ask me why it is in there if it doesn’t work :-)

P.s. Sorry for the aggressive tune…but please, Palm, come on. I mean, every 100 dumb phone can do that!

September 2nd, 2007

Foleo developer docs online at PluggedIn

While a select few VIP developers(who don’t write as honestly about Palm as we do) already have access to Foleo hardware for quite some time, Palm has finally taken the time to release the Foleo documentation to the “common code monkey” at their developer site, http://pluggedin.palm.com.

Here is a proof screen shot:

Getting into Pluggedin is easy - just register and have fun!

August 13th, 2007

C gotchas for free: CERT C Programming Language Secure Coding Standard

While googling for something more-less unrelated, I stumbled upon this link which really is worth its price in gold:
https://www.securecoding.cert.org/confluence/display/seccode/CERT+C+Programming+Language+Secure+Coding+Standard

To cut a long story short, the CERT has posted a list of common C gotchas there. No, not the kind of gotchas you can find in a beginner’s book…but real gotchas from everyday development/porting work.

Take a look by all means…and plucker it if you feel like it!