Blackberry Javascript Extension using an external library

I have a BlackBerry WebWorks project that needed to use Omniture reporting. Since Omniture already have an library for BlackBerry, I’ve decided to create an JavaScript Ext that would expose that functionality to the web application.

The only thing that you need to do differently from creating another regular JS Ext is that you need to include a new “<dependencies>” tag in the library.xml file, with the relative location of the external library.
Here it’s the example:

<library>
  <extension>
   <entryClass>xxx</entryClass>
  </extension>
  <features>
   <feature id="xxx" version="1.0.0" >XXX</feature>
  </features>
  <dependencies>
   <jar path="omni.jar" />
  </dependencies>
 </library>

Android Simulator/Emulator: Delete directory

One thing maybe (or maybe not) you’ve noticed is that you can’t delete an entire directory using DDMS on eclipse.

To be able to delete a directory on simulator sd card you can use the ADB command and connect to device via shell.

The first thing to do, is to go to “<android-sdk-PATH>/platform-tools” and from there type:

./adb devices

Then connect via shell to the device that you want:

./adb -s emulator-5554 shell

Now you’ve connected to the device “emulator-5554″  and now you can remove the files or directories that you want!

Protect your clients: Save hashed passwords in your database!

I’m always surprised when I open my Feed reader and over and over again I stumble upon another report saying that some website store users passwords in plain text and that those passwords got exposed.

Now, why do you need to store those passwords in plain text?

Just hash them in the database and when some user tries to login into your site, hash the password that he gave you and try to match it with the one that is stored in database.

Now if someone cracks your database security the users will not be harmed because they don’t get access to theirs passwords (at least in plain text)!

If you want to add an extra protection, append a “salt” string to the users password and hash the new string all together. (This is how it’s done in symfony sfGuardPlugin http://trac.symfony-project.org/browser/plugins/sfGuardPlugin/lib/model/sfGuardUser.php?rev=3980#L31)

Use Fatsort to order MP3 files (Linux)

Fatsort (http://fatsort.sourceforge.net/) is a very useful tool to order your MP3s so you can listen in your MP3 hardware player.

Fatsort is command line tool that allow you to order your files in a USB stick. It’s usage is very simple:

1) First get the device location by typing “sudo mount”. There you should find something like “/dev/sdb1″.

2) Unmount this device: “sudo eject /dev/sdb1″

3) Apply the fatsort to that unmounted device: “sudo fatsort /dev/sdb1″

And it’s done :)

Android fixed Status Bar is just BAD

I’m an ASUS eee Pad Transformer proudly owner, and even though I still didn’t receive the most promised ICS update for my Transformer, I’m already a bit disappointed at Google Design decision to maintaining it fixed bottom Status Bar.
The Honeycoumb was the first version of Android that was really intended for tablets and the idee of removing all the hardware buttons and use only software ones looked really the best way to go.

I’m an ASUS Transformer proudly owner, and even though I still didn’t receive the most promised ICS update for my Transformer (is due to March), I’m already a bit disappointed at Google Design decision to maintain its fixed bottom Status Bar.

The Honeycomb was the first Android version for tablets and the idea of removing all the hardware buttons and use only software buttons looked really the best way to go but  now with almost a year of using it, I start to realize it’s disadvantages.

First it will reduce the available screen height and second it’s prone to miss touching on those buttons when what you really want is to tap on some button that is on the bottom of the application.

This limitation is already addressed in this issue http://code.google.com/p/android/issues/detail?id=15408 but it’s marked as WorkingAsIntended. If you are one of us that think that this is a huge design limitation, please express your thoughts in there!