Over the years I’ve learned a few different languages - C, C++, Java, Java Script, some PHP, some Perl, some Ruby-on-Rails, PL/SQL and a slew of other ones. With all of them I learned through trial-and-error, by looking over a friend’s shoulder or by looking at code examples. I only ever asked for help at 3am. Once my brain was fried, my eyes about to bleed and I could barely write a coherent sentence let alone a technical paragraph describing the problem I was having. Not a good, or fun, way to learn a new language.
This time I decided to do something different - instead of simply posting questions to a forum I found, I tried answering them. A lot of the posted questions were well over over my head but I read them anyway. I performed Google searches, I analyzed what other people wrote back. I tried to understand, I asked questions about the responses not the original post. By joining in the conversation I was able to learn a lot about BlackBerry programming. More than I ever would have using my trial-and-error methodology. By reading what other people had to say I found problems in my application that I didn’t know I had! I was able to find cool coding tricks and learn what else the BlackBerry API had to offer.
By joining the conversation I was able to rapidly expand my knowledge of what the BlackBerry API allowed me to do. I think this is the way I’ll try to learn every new language.
]]>Setup the HTTP Servers MIME Types
If you do not have administrator access to your web server then you’ll need help from the administrator to perform the following.
Verify that there are MIME Types setup for COD and JAD files. The correct MIME Types are respectively “application/vnd.rim.cod” and “text/vnd.sun.j2me.app-descriptor”
Upload the Application to the Server
You’ll need to upload the application’s COD, JAD and JAR files to the web server.
Create an HTML “Download” Page
This is the part that I spent a while figuring out. During my first attempts at OTA installation I opened the BB Browser and went directly to the application’s JAD file. Each time I did this the browser displayed the contents of the file instead of trying to download and install it.
To get around this issue, create a “download” page. I recommend a simple page that way you don’t have to worry about the page renders on varios BlackBerry devices. This page should reside in the same place as the application files, but you can place it whereever you want, you’ll just have to do more configuration.
My simple download page:
<html>
<head>
<Title>Download [APPLICATION_NAME]</Title>
</head>
<body>
<a href=”[APPLICATION_NAME].jad”>Download</a>
</body>
<html>
I hope this post saves you some trouble. If it does, or if you have questions, please leave a comment.
]]>Instead of simply making this a “yippee” post, I’m going to provide details on how to sign your API keys and then how to request signatures for your application. I realize that BlackBerry provides instructions but they don’t seem too clear, at least they don’t to me.
Request Java Code Signing Keys
RIM requires that a developer register with them before he is allowed to access certain “sensitive” APIs. These APIs fall under three categories: Runtime APIs, BlackBerry Application APIs, and BlackBerry Cryptography APIs.
Registration is $20 and you can register online using the “BlackBerry Code Signing Keys Order Form.” For more details as to why RIM requires registration and for what specific APIs are controlled, visit the “Java Code Signing Keys” page.
Registering Your Keys with The Signing Authority
Once you have registered for your code signing keys, RIM will send you three files: a “client-RCR-#####.cod,” “client-RRT-#####.cod,” and a “client-RBB-#####.cod.” Each file will be sent in a different email. You can then follow the instructions in the “BlackBerry Signature Tool Developer Guide” (a PDF download).
This is where I ran into my first problem - when I double-clicked a .COD file, Windows did not know which application to open the file with. Please refer to my “BlackBerry Code Signing Help” article for instructions on how to resolve this issue.
Once you have successfully registered your keys with the signing authority two files will be generated - a “sigtool.db” and a “sigtool.csk.” These files will be placed in the same location as the “SignatureTool.jar” file.
If you have the BlackBerry JDE Plug-In for Eclipse and the BlackBerry JDE installed be very careful as the “sigtool.XXX” files may have been placed where you don’t expect! In my case, they were placed in the directory of the stand-alone JDE therefore the Eclipse plug-in couldn’t find them.
Signing Your Application Using the BlackBerry JDE Plug-In for Eclipse
To sign your application first make build it by going to Project >> Build Active BlackBerry Configuration. Next, go to BlackBerry >> Request Signatures this will bring up the “Signature Tool” window.
The Signature Tool window will contain multiple rows of data but you really care about the rows with a “Status” of “Not Registered” and a “Category” of “Required.” If the text in the “Status” field is red it means that the key mentioned in the “SignerID” column is missing or that the key hasn’t been registered. If the text in the “Status” field is navy blue it means that the key mentioned in the “SignerID” column exists and has been registered but the application has been signed with that key.
To sign your application (represented by a .COD file) click the “Request” button at the bottom of the “Signature Tool” window. You will then be prompted for your Private Key. Note that the Private Key is different from the Registration PIN you supplied to RIM.
Once your application is signed the “Status” fields will read “Signed” and they will be green in color. You are now ready to deploy your application to a real BlackBerry.
Remember that each time you build your application a new COD file is generated and it will need to be signed again before the application can be deployed to a BlackBerry device.
I hope this article provides you some guidance as you get started in developing BlackBerry applications. If you have any comments please feel free to email me or post a comment.
]]>The batch file I created is below. Please look at the simple code since you may have to change some of the paths to make them appropriate for your system. Once you create the file, place it in the same directories as your .CSI files and then you’ll be able to simply drag-and-drop the .CSI file “into” the batch file. You’ll then be prompted for all the information RIM needs to register your keys.
javaw -jar “C:\Program Files\Research In Motion\BlackBerry JDE 4.7.0\bin\signaturetool.jar” %1
pause
Now that your CSI files are signed, you need to register your application. In Eclipse, you go to Eclipse >> Request Signatures. Then you select each record in the table with a status of “Not Registered” and click the “Request” button. This is where I, again, run into trouble. Check back later, hopefully tomorrow, when I write up instructions on registering your application.
]]>In the past I’ve used Eclipse extensively. While at Lodgenet, it was my main IDE. So I’ve gotten familiar with the environment and it’s plug-in potential. Although I consider myself experienced, I’m definitely not an expert when it comes to Eclipse which could be the main source of my agony.
Overall the JDE plug-in is very nice. It allows you to seamlessy develop and test your Blackberry application against a wide variety of simulators. (If you’ve ever checked out the original Java Development Environment from RIM, you realize how much nicer Eclipse is.) The problem I ran into is this - I had all of the JDE Component Packages installed yet I couldn’t see the simulator for the Blackberry Storm. After some back-and-forth with RIM’s Technical Support proved to be worthless, I returned to a lot of digging on Google. Thankfully I came across this thread in their support forums. It had the answer I was looking for:
You can then select the comoponent pack to use from Window->Preferences->BlackBerry JDE->Installed Components. This will let you use the simulators available for the component pack you choose.
That one simple paragraph saved the day. I can now test applications for my Storm, and my friends’ Blackberries (Friends, if you’re reading this you’ll be getting an email soon asking you to help me alpha/beta test this software.)
To help other people who are as dense as I am, or those who just want to see what I’m talking about in action, below are some instructions and screen shots that show the problem I had. I will also show you how to configure Eclipse to make your development go a little more smoothly.
Choosing Your Component Package
This is where I went wrong - I didn’t know this could be done! Simply go to Window >> Preferences and you’ll see a dialog like the one below. In the “Choose one of Installed Components” menu, you’ll see all of the JDE Component Packages that you have installed. Each component package is used for testing a different version of the RIM’s Java API and for running different phone simulators. You must do some research on which component package is appropriate for your situation, see RIM’s KB article: What Is - Appropriate version of the Blackberry JDE.
Note - I think it’s safe to assume that if the Component Package you select doesn’t include all of the devices you’d like to support, you’ll need to create a separate release. There may be a work-around or “Compatibility Setting” to make things easier, but I haven’t found (nor have I really researched) one.

Creating a Run Configuration
If you’re familiar with Eclipse, Run Configurations are nothing new. But, I include some instructions here just for completeness.
To create a new Run Configuration, go to Run >> Run Configurations and you’ll be presented with the dialog below. Using the tree on the left of the dialog, select “Blackberry Simulator” then click the “New Launch Configuration” button. Give the configuration a meaningful name (Example: “BB Pearl 8130″) and select the “Simulator” tab. On this tab you’ll see a “Profile” menu. In that menu are all of the devices that are supported by the Component Package you selected previously. To make this configuration match the name above select “8130-JDE.” Now, click the “Apply” button and that will save your configuration.
I recommend that you create a Run Configuration for each device you want to test. Alternatively, you can create a configuration for each Component Package you have installed.

Using Run Configurations
Using the configurations you create is simple - Open the Run Configurations dialog, select the appropriate configuration and then click the “Run” button. Once you use a configuration once, it will be added to the list of configurations under the “Run” button (the one that is located on the main IDE screen). One thing to remember is that you’ll get odd errors if you use a run configuration that includes a device that isn’t supported by the Component Package that you’ve selected. Therefore, be sure to keep in your mind which device you’re using and which Component Package you have selected.
]]>
By the way, I’m left-handed. So if anyone is concerned that the Pulse is yet another righthand-centric device, let me allay your fears - it works for us in our right minds just as well.
Pen Size
Admit it, when it comes to pens, size matters. In my case, I’ve always been a fan of the Pilot G2 which is a slim pen that fits comfortably in my hand. I’ve been using G2’s for about 10 years now and I never thought I could give them up. When I opened my Pulse’s package I was taken back by the size, at first glance the pen seems humongous, and, at first touch, it feels weighty. Humongous and weighty are two adjectives that I don’t like to hear when it comes to a writing instrument, but the I still had to give the Pulse a chance. I’m really glad I did. In no time at all I was used to the feel of the pen in my hand and even after a week of marathon meetings my hand wasn’t aching.
The OCR Engine
The OCR engine included with the Pulse caught me off guard. I’ve been following this technology since the mid 90’s and have been rather unimpressed as it has never lived up to its hype. LiveScribe has renewed my faith in OCR. The OCR engine included with the Pulse is not perfect, but it works really well. I feel comfortable saying this given that it can read almost everything that I write - whether I take my time to write neatly, or if I write quickly during a fast paced meeting.
The Microphone
The microphone is one feature that I haven’t had a chance to use fully. Due to the nature of my work, I’m not allowed to record all of my meetings. Thankfully I did have a chance to record one of them and the microphone performed very well.
The meeting where I had a chance to use the microphone involved an impromptu conference room and it included ten attendees. The microphone performed really well, clearly recording the people at the other side of the room with the same clarity it recorded the voices of the people that were seated next to me.
The Bad
The Pulse Smartpen is not without it’s flaws. The paragraphs below go into detail about the things I found.
OCR Engine
I mentioned the OCR problems earlier, but such problems are to be expected. Being a software engineer myself, I understand how difficult OCR software is write. But I do want to go into more detail about what I experienced.
When I take notes, I tend to “tag” them in the margin. These tags consist of an acronym surrounded by a circle. Unfortunately, LiveScribe Desktop seems to have difficulty with these tags. It does find some of them but their recognition isn’t reliable enough for my needs.
I’m also having trouble getting the OCR engine to recognize numbers the way I write them. My handwriting isn’t perfect, but LiveScribe Desktop seems to parse most of the text I write while it has a hard time with numbers.
Software
The pen does not come with a software CD. This annoyed me since the installation file for Windows is ~50MB, and even with a fast cable connection the download still took ~10 minutes. Having to download the software does guarantee that I’m using the latest and greatest version, but it is also another step between unpacking the pen and being able to use it.
After I installed the software and setup my Pulse, I was required to update the software on the pen. This part was torturous. Not only was it yet another step I was required to perform before I could the Pulse, it was horrifically slow. (Yes I was using a USB 2.0 port.)
Things I Haven’t Tried
Due to my schedule there are some things I haven’t tried. For instance, I use a Mac for my side-business and for personal things and I use Windows for work. Unfortunately I did not have time install the Mac version of the LiveScribe Desktop.
Related to the fact that I have two computers is that Livescribe does not recommend using the Pulse with two different computers. I haven’t tried this, so I don’t know the exact issues. My theory is that it would cause the notebook pages to be out of sync - pages 1-5 on computer A and 5-10 on computer B. That’s even if you’re allowed to associate the pen with two different computers. My recommendation to Livescribe would be to allow for some kind of syncing.
Wrap-Up
The Pulse Smart Pen is a wonderful device. It does have its problems, but I wouldn’t give mine up. It saves me a lot of time (I used to scan and then run my notes through OCR software). If you’re thinking of getting one, do it now. I’m pretty sure you won’t be dissappointed.
Note - If anyone is interested in seeing samples of the notes I’ve taken, please post a comment and I’ll post the images.
]]>I’ve been following the Storm since early 2008 when information about it was first leaked. During the months between the initial leaks and its actual release I read every little piece of information - pictures, features, specs, etc. I was truly excited to get this phone.
I liken my experience to a child going to bed on Christmas Eve hoping to wake up to a ton of presents and winter wonderland outside of his window. The Storm does provide a ton of a new presents, in the form of new features, but no winter wonderland. To better explain my analogy, let me start from the Storm’s release date.
The phone was officially released on November 21, 2008 and it immediately sold out. I ordered mine directly from Verizon at 1pm that day, even after reading all of the horrible reviews. The Storm didn’t arrive until a week later even though I had it shipped FedEx Next Day. (To be fair, the shipping problem wasn’t RIM’s fault, but Verizon’s.)
This morning the phone arrived. Before I activated it, I decided to run a few tests: type a few fake emails, navigate around the menus and the applications, etc.
Typing on the keyboard feels strange. My first experience with PDA’s and smart phone’s began with a Handspring Visor back in 1999, so I have a deep-rooted sense of how a touch screen should work. The Storm’s screen doesn’t fit that idea. Simply placing your finger on a button or an icon will highlight it, you actually have to press down on the screen in order to activate the button or icon. The press isn’t a big deal, it requires the same amount of effort as a mouse click. But it will take some getting used to.
The strangeness of the keyboard led me to make a ton of mistakes. One mistake caused me to send an email to client well before it was ready to be sent. Thankfully the client had a sense of humor and the email didn’t contain any “gaystack“-type mistakes. I could only imagine what could happen…
The menu system and general navigation is just slow, painfully slow. One example is attempting to make a telephone call. I placed my Blackberry Pearl 8130 next to the Storm then I clicked the “Phone” button on each device. The Pearl’s phone keypad displayed noticeably quicker than the Storm’s. Very disappointing.
The accelerometer is also slow. The commercials lead one to believe that the screen’s orientation changes quite quickly, unfortunately that’s just advertising voodoo. In real world use, it’s painfully slow. So slow in fact that it actually caused me to press the wrong button a few times because I didn’t know if the orientation change didn’t register or it was just taking a while.
In order to take advantage of the accelerometer, applications must be updated. While it seems that the applications packaged with the Storm do support the accelerometer, some of the other 3rd party applications do not. Twitterberry (an otherwise great Blackberry Twitter client) doesn’t work well as it could, but todoMatrix seems to work just fine (but they released a Storm-compatible beta), and WorldMate Live (a favorite travel-related application of mine) just doesn’t work.
Another thing I noticed while playing with the Storm is its weight. Normally, I don’t take weight into account when comparing devices unfortunately the difference is noticeable when it comes to the Storm. The Pearl weighs in at 3.4oz, the Curve about 4.2oz and the Storm weighs 5.5oz. Not a big difference, just a few ounces but, in your hand, it feels immense. My hand actually gets tired after typing a long email. I’m not sure what the difference is.
One thing the phone does have going for it looks. Right now the phone is sitting on my desk and it looks very stylish. The screen is crisp and the colors are brilliant. Videos playing on the phone are wonderful. No lag, no slow downs and no shadowing, even when playing action movies.
The phone also comes with 1GB on-board memory and Verizon is shipping it with 8GB microSD card. The extra 8GB of space was something Verizon definitely got right. I’ve never purchased another device that came with so much extra memory.
The Storm is also a worldphone and Verizon will send you a SIM card already installed if you ask for it. I didn’t have to pay anything extra for the card.
I really want to fall in love with this phone. It is a beautiful device and the feature set is wonderful. Verizon Wireless has a 30-day return policy for existing customers and it may take me the full 30-days to decide whether or not to keep it.
Comments? Questions? A good or bad experience with the Storm? Post a comment!
Pro’s:
Con’s:
If you’ve downloaded Ping Fire from this site in the past seven days you will want to check http://www.pingfire.us to ensure that you’re running the most recent version.
]]>If you have any comments or suggestions feel free to email me or post a comment.
Installation Instructions
Installation Instructions
Editor’s Note: About an hour after this post the people at Ping let me know that PingFire was approved! So now everyone can use it. Just remember that the plug-in is still in beta.
]]>PingFire is working. You can now post using all of the different “Ping My” types (Default, Blog, MicroBlog and Status) as well as any custom triggers you have created.
You can also quote something you’re reading on the web with Ping Fire. Simply select the text you want to quote and hit the “Ping” button. Ping Fire will automatically copy the text you’ve selected, append the URL and add it to the message box. All you have to do is hit the “Ok” button.
I figure this puts PingFire in an un-official Beta status. The status is still un-official since I haven’t gotten PingFire approved yet. I submitted the stripped down version on Monday night so I’m hoping that it’ll get approved soon. I’m also hoping that I don’t have to go through another submission round to get all of the new features I approved.
In the grand scheme of Firefox Extensions, PingFire is relatively simple but I’m still proud of how far I’ve come since Saturday. When I started this project I knew some Javascript, knew some XML and I had never heard of XUL. Now it’s three days later and I’m still by no means a pro but I think that I’ve come a long way. I hope everyone enjoys the extension as much as I enjoyed developing it.
]]>Ping Fire will a Firefox extension that allows a user to post a Ping without having to be on their Ping.fm Dashboard.
Initially, the only thing the extension will allow you to do is post to Ping. I will add new features as I find a new or when someone requests a feature that I feel will be useful.
The extension is still in the beginning phase. I have the extension running in Firefox along with most of the necessary windows and Javascript. I’m still waiting on my API key from Ping.fm before I can work on the rest of it.
If you’d like to make a feature request add a comment here.
]]>Confessions of an Economic Hit Man
Just the title of this book had me thoroughly intrigued. This non-fiction, fast-paced book guides you into a cloak-and-dagger world that is usually reserved for CIA spies. The main characters are economic hit men (EHM) of which John Perkins was one, jackals and the military. The goal of an EHM? To gain control of a country, more correctly its resources, without having to invade.
If only half of this book is true, it paints a scary picture of how the US Government operates. The stories told are of assassinations and of one-sided deals that were a boon the American companies involved.
The Secret History of the American Empire
This book is a follow-up to Confessions of an Economic Hit Man. It goes into greater detail regarding the events mentioned in Confessions. It discusses John’s meteoric rise in the EHM ranks and his moral awakening.
Although a truly a great book the last chapter was too preachy for me. I understand his plight and why he’s trying to motivate the reader but I feel that it is misplaced and it better suited for another book.
Wrap-Up
If you’re interested in clandestine operations of the United States these books will prove to be a great read.
My latest foray into this arena comes from REXwireless. Their todoMatrix application does not fail to impress. Task organization is very natural - your tasks are organized by “drawers” and then by “folders.” A task takes under a few seconds to create, this is a great deal quicker than any of the other applications I’ve used.
Another nice feature they have is named “injection.” todoMatrix installs an injection option to the menus provided by your Blackberry. Injection allows you to take the text currently displayed into a new task, saving a great deal of time.
Those few things made me fall in love with the application, but one feature really clinched it for me - rexDesktop. rexDesktop allows full CRUD on your todoMatrix data from the web.
todoMatrix is not without its quirks. It would be nice if there was option on the menu that displays the shortcuts available. I’m sure they’re in the documentation but I’m too lazy to read it and I couldn’t carry it with me.
Also, I find the UI to be lackluster. I’m going to break that comment into three separate parts - 1. The Main Screen, 2. The Folder View, and 3. The Item View.
The main screen displays a tree which contains all of your drawers and folders. Although you can configure the colors of the folders, it still feels clunky to me. In Rex’s defense, I’m not sure what more can be done with a tree.
This view shows all of the tasks that are stored under a particular folder. The top quarter of the screen displays information related to the selected tasks and the bottom three quarters show all of the tasks.
The task detail section is too small. So small that labels for the six data elements that are displayed contain acronyms. These acronyms, although logical, I can’t get their meaning as quickly as I’d like to. I’m forced to look at their values in order to determine what I’m looking at. It seems to me that there is room to expand this section or at least expand the label names.
The tasks displayed give you a hint as to their status but there are only two colors used - a light blue for uncompleted tasks and a light gray for completed ones. I would like configurable colors for each status or priority. I understand that this could lead to confusion for the user, but if the colors are configurable, then the user could use as many or as few as they like.
The Item View suffers from the same problem as the top portion of the Folder View but at least there’s a line that explains the meaning of each label.
This is probably my favorite feature of this application. Unfortunately, it too suffers from a UI problem - it sucks. In a world full of Ajax and flashy UI’s this web app still looks like something from the late 90’s. It is fully functional it just looks ugly. But I’ll still choose function over form.
Although I write a great deal about the things I don’t like, todoMatrix is a great application. I feel that its strong points speak for themselves. I can’t wait to see how this application matures in the coming versions.
—
todoMatrix can be purchased at rexWireless.
]]>