Android Phonegap Native Timepicker

So I’ve been working on a simple android app and I finally got audacious and started to move beyond the basics. I was able to get an app in the store with just my HTML/JS/CSS skills pretty easily which makes phonegap a big success.

Anyhow, now my latest fiasco was to try and use the native android timepicker and while I’ve still got a ways to go, I wanted to post my working code that I also put back on a discussion I had with myself on the google group.

FWIW here’s what I’ve got working.

A simple TimePicker class with a showTimePicker method.

public class TimePicker {
private DroidGap mGap;

public TimePicker(DroidGap gap)
mGap = gap;

public void showTimePicker(){

A custom TimePickerDialog.OnTimeSetListener which is initialized with
knowledge of DroidGap too…

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mGap.sendJavascript(” callback javascript goes here!”);

Initialize and add the createdialog stuff like the android dialog

TimePicker timepicker = new TimePicker(this, appView);
appView.addJavascriptInterface(timepicker, “TimePicker”);

Then in the javascript, once phonegap loads, you can refer to the


Hope that Saves Somebody else some time or inspires somebody to show
me the ways of the plugin framework.


As I get better at this stuff, I might end up understanding how to do it within the plugin architecture but for now that’s it.


HTC Hero Mount USB to Mac Os X (macbook pro)

I wanted to get the media off of my htc hero and onto my macbookpro, but plugging the USB cable in does not result in a notification on android which allows me to mount sd card through the USB cable.

I found lots of promising articles, most of which pointed me to either Twisted, which didn’t work for me, or to the Android developer SDK. I’m fully capable of using the SDK but this seems like overkill for such a simple issue.

My Solution: Close the lid on the macbook. Plug in the phone and then I get the notification allowing me to mount a USB. Once mounted, its the same as working with any other USB card.

Django RadioSelect | CheckboxSelectMultiple | SelectDateWidget Examples

In trying to use django built-in forms, I had the most trouble finding good examples of django radioselect, checkboxselectmultiple and selectdatewidget.

Here’s my attempt to help others looking into using Django RadioSelect, CheckboxSelectMultiple, or the SelectDateWidget.

Django RadioSelect Example

from django.forms.widgets import RadioSelect

RADIO_CHOICES = [['1','Radio 1'],['2','Radio 2']]

class SimpleForm(forms.Form):
radio = forms.ChoiceField( widget=RadioSelect(), choices=RADIO_CHOICES)

Django CheckboxSelectMultiple Example

from django.forms.widgets import CheckboxSelectMultiple

CHECKBOX_CHOICES = (('1','The first choice'),('2','The Second Choice'))

class SimpleForm(forms.Form):
checkboxes = forms.MultipleChoiceField( required=False, widget=CheckboxSelectMultiple(), choices=CHECKBOX_CHOICES)

Django SelectDateWidget Example

from django.forms.extras.widgets import SelectDateWidget

YEAR_CHOICES = ('2016','2015')
class SimpleForm(forms.Form):
date = forms.DateField(widget=SelectDateWidget(None,YEAR_CHOICES) )

Django Docs

Update 1/3/2016: The official documentation on these have improved but is still buried within a huge post. Here is the link to the latest stable docs:

I Love Django Forms

These are all excellent features and the more I use Django, the more I like it. Chalk up Forms as another part of django that blows away any other web framework I’ve worked with.

Mechanize vs. Scrape:

In the process of automating functional tests, I have ran across another python library, mechanize, that looks to be very promising. Perhaps, even more so than

So far it seems that the mechanize platform is more powerful, as it is able to handle complex tasks like managing a gmail inbox( see ).

My take so far is that offers some nice features for validating that a given page has the tags and elements I am looking for. I’m still new to both of these libraries so if anyone out there has experience with both and could help nudge me in the right direction, it would be much appreciated. for functional website testing

This solution is perfect for testing your website’s functional capabilities. supports sessions and cookies so hitting your authenticated resources is cake.

Here’s a quick sample i wrote to test things out:

from scrape import *
s.follow(“Sign in”)
x = s.doc.first(‘form’)
params = x.get_params()
print s.doc

Try it out with your google account. To verify you’re logged in look for the Sign Out link or alternatively look for a GAUSR cookie in s.cookiejar.

Thanks to Ka-Ping himself for clearing up some of my confusion.

My plan is to use this to test the site as if there were no script/styles enabled. Then to layer on browser behavior ( AJAX etc…), I’ll look to Selenium or something of the kind.

Mac Screen Captures

It hasn’t been too long since I exclusively started using mac at home and work. I struggled at first to capture screenshots and I’m still catching on to some of the great little things Apple has thrown in here.

This morning’s enlightenment was around capturing screen shots, both full and partial, on my mac. I was reading a blogpost about apps to replace the Snapper add-on I used to use and the author dropped a subtle hint about shift+command+control+4.

With a little search engine power, I found a useful page from apple,

Mac Screen Captures

Command+Shift+3 = Screenshot Saved To Desktop
Command+Shift+4 = CrossHairs For Snapping To Desktop
Shift+Command+Shift+3 ( or 4) = …. To Clipboard For Pasting to Photoshop/eMails etc…

Anecdotes on India’s Healthcare

Both of my children got sick while we were in India this trip so I got a chance to see the healthcare system in India at work. I made the trip to the doctor twice with my daughter.

Encounter 1.
My daughter got a fever on the night train and had stopped eating. The previous day she had a couple instances of diarrhea. I told the doc that i had been alternating doses of motrin and tylenol every 4 hours and that it was keeping the fever under control.

After a brief exam with a stethoscope, I was told to only give the tylenol and to start her on an anti-biotic for her stomach. Total: 80 Rs. Medicine included.

We were extremely concerned that an anti-biotic without any tests might not be the best option, but we took the advice on tylenol only.

Encounter 2.
Next day, daughter is still not eating and still showing some symptoms of fever. This time I had done a throat exam myself and knew there were swollen tonsils with some white cold sores in the back of her mouth. The doc was able to identify the throat problem easily but I wonder if it would have been identified if not for my own inspections.

Medicines were prescribed to help start eating again and help fight the infection. Total: 150 Rs. Medicine not included.


  • Cost of care is very cheap.
  • Quality of care is suspect(anti-biotic prescription w/out any exams).
  • Waiting times were normal.
  • Payment was at time of care in cash.
  • Equipment was lacking

For me, the care i receive in the USA is hands down superior to what we received while in India. However, the cost to receive care in the Indian system is dramatically lower to the USA system.

Back From India

I’ve spent the past 2+ weeks in India for a family wedding. My wife’s birthplace is in Kerala, India and her sister chose to be married there so we packed the whole family up and travelled halfway across the globe.

While most of our trip was dedicated to visiting the family, we did find a little time to escape to munnar, walk the beach in nager coil, and a do a little shopping at Seemarti.

So here’s some of the things i’ve learned after 2 trips to india:

  1. Get a Driver
    For 1350 Rs./Night, we got a driver and an SUV with 80km included. 10Rs. per additional kilometer and our total expense under $40/day. This is an absolute steal and the additional comfort of a dedicated driver is worth every penny. I’d plan for one of these to pick
  2. Use the AC Night Train
    The roads are terrible. It takes 2-4 times as long to go anywhere by road in India as it does in the USA. If you are planning to go from state to state or any trip over 200km, i advise the night train or a plane. To get tickets on the AC night train, you have to book at least a week in advance, so set your itinerary and book your ride.
  3. Take Packaged Drinks
    If you don’t want to get sick, don’t drink their drinks. The packaged waters there(Aquafina, Himalaya, and Kingfisher) all checked out with me. The other waters, tap water, milk, juices, sodas, and anything with ice have all given my stomach trouble at one time or another.
    Horizon Organic Milk, Apple Juice, Orange Juice, and Gatorade will all be in my bags next trip. Each piece of checked-in luggage gets 50 lbs, weigh your bags and fill in the additional weight with fluids.

Some other things i’ve learned about travelling to kerala with an infant and a toddler:

  1. Pack N Plays fit inside a suitcase. We took one for each kid and without them we’d had to have had both kids in our beds or on the floors. Given the general cleanliness being much lower than i’m accustomed to, the floor is not an option.
  2. February is too Hot. Go in november, december, or january.
  3. Combat the barrage of spicy foods with a steady dose of snacks from home. My favorites are trail mix, beef and cheese, granola bars, and cheese crackers.
  4. Try the Fried Fish,, it can be spicy but it’s worth it.

I may write some more on some of my favorite spots, where i might go next, and any of my other thousands of opinions after travelling in india again.

How To Stop Unwanted Solicitation of your Browsing History

I’ve known for awhile that the css :visited property on elements can allow me or others to detect whether or not a certain link has been visited by the user on the other end of a browser.

What I didn’t realize is that the browsers have already done things to help us out. If you can forego the need for links you’ve already visited to change color or background, then the safest option is to turn off visited links. What The Internet Knows About You describes both the underlying issue and some of the possible preventative measures. My favorite…

Firefox 3.5 users will be happy to learn that their browser has a configuration option which disables visited links. To enable it, type in about:config in the address bar and set the layout.css.visited_links_enabled option to False.

I’d much rather remember which links i visit, than have to discard my browsing history and lose the awesome bar.