Dear Chip,

Thanks for giving such a direct response to my post. Allow me to respond in
kind.

My feeling is that people have not had enough time to learn scripting
because, even though I'm pretty bright, I found it very difficult to learn
enough about programming to follow the tutorials GW and you have done.
Besides, it's not just programming, but object-oriented programming, which
is another deeper level of consciousness to enter. I still have to stop and
think before I consider how to work with an object, whether it's a property,
method or event I want to work with, and what about those objects which have
properties which work like methods? It is really hard-going to get things
done in writing an app. Even the WE Script Framework and UI Design don't
have much, if any, documentation, and, were it not for your tutorials, I
wouldn't even know that you have to put your groups of controls inside of
another group in order for a dialog to take shape. To be honest, those two
apps need upgrading, and I envision an environment for app creation where an
app could be built simply by connecting programming modules together,
thereby minimizing the necessity of laborious hard-coding. This is what the
"Automate" software I mentioned before makes possible. At the very least, I
don't really think it would be as onerous a task as you envision for app
creation via breaking up the process into several pieces and then joining
them together. You have to remember, Chip, that you are a programmer by
profession, while many of us, me included, are not. I learned what I know
pretty much by accident, namely, by wanting to use certain devices, like
infrared remote controls; indeed, this is how I learned, around 10 years
ago, about using "post" and "send" messages to control software. In fact,
although I love the fact that I can now understand how to write an app, I
don't want to write apps. Rather, I want to get things done with my PC. If I
could get the jobs I want done without writing apps, I would. The problem is
that nobody wants to help anyone to create a PC environment specifically
geared to a particular user's personal needs and preferences without
requesting a huge financial commitment even before work is begun. As the
Wikinomics book I mentioned to you discusses, even though Linux is
open-source and free, companies are starting up all the time to serve
customers who need their Linux environments configured to their particular
business needs. In short, the future growth potential in our global society
is to be found in customer support. That being said, the blind community is
made up of customers with a unique need for software which enables them to
use software which is usually not speech-friendly. And, blind people are
typically financially marginalized. So, I see it as my personal quest to
empower those in need with the tools they need to surivive in this digital
world. However, to this end, I don't want to write blind people apps,
thereby forcing them to use my apps to do things the way I designed them,
unless, of course, they are okay with my work, at least for a while, until
they create their own. Rather, I would prefer to give them a crash course in
"empowerment through the power of personal task accomplishment," that is,
give them the tools they need to build their own tools. I have to say, Chip,
without grossing you out here, I really love you for doing the course-work
you did teaching scripting, smile. It certainly set me up for life. But, in
your lessons, there was a lot of knowledge you assumed your students had
which I did not, and which I am still learning. I believe there is a serious
need for an introductory course in scripting, which I may be interested in
being involved with, to teach students the presuppositions upon which
vbScript programming, in general, and object-oriented programming, in
particular, are based. In fact, I am still working on wrapping my head
around this body of knowledge myself, so I am a little wary about how
someone should present this knowledge. I will say this, however: if I ever
learn all the stuff I need to know to be as good a programmer as you are
Chip, I will be able to teach it from the bottom to the top. The reason why
is simple: I am sensitive to the presuppositions I am drawing upon when I
communicate with people, and I am continually touching base with people,
asking them to repeat what they heard me say, so we pace each other. This
makes me more of a one-on-one teacher, and, therefore, perhaps not the best
person to lead a class like you did. But, I could certainly serve as a tutor
of individuals.

Well, Chip, my friend, I guess by now you see where I'm coming from. As I
worked through all of my thoughts in creating this response, I guess I have
come to realize that I see myself more as an inspirer of the quest for
knowledge, rather than as a member of a collaborative team, and, Chip, I
totally sympathize with your reluctance to set up an app-project team. I am
in awe of your creation of your GPS masterpiece; it sounds like an
incredible tool. It's not something that I would ever use, given my
home-based lifestyle, but I can certainly see how the mobile blind user
would love it, especially the gadgeteers among them. Good for you! As for
me, I am blowing with the winds of inspiration, working on a couple of apps,
centred around Winamp. The most important one is a global app which works
perfectly on my system, but it uses a command-line utility called CLAmp to
control Winamp. to launch, control, create bookmarks in, and move between
music album folders within, multiple instances of Winamp, with all these
instances running simultaneously. It's funny that you mentioned how we learn
coding through reading other programmers' code, because I learned how to
write the vbScript SsendMessage syntax for controlling Winamp by reading
Jeff Bishop's app code. Thanks from the bottom of my heart, Jeff, if you're
reading this! Big grin. I figure I'm now well on the
way to putting the app in a shape where I need no longer rely on the
command-line utility to control my Winamp. But, Chip, here we go: now I have
to learn how to use INI files to store my bookmarks, whereas,before, I would
simply use a DOS pipe command to create text files of each bookmark; in
other words, Chip, some boring coding work to do here. Oh well, I guess I
shouldn't complain too much. And then, there is the involved task of
creating a complex dialog to create and maintain the multiple instances of
Winamp; but, thanks to you, Chip, that should be a breeze, although the
event handler should be a miniature nightmare. Big smile. Ah well, c'est la
vie. Such are the trials of gadgeteers, eh? Smile.

I shall sign off for now, Chip, wishing you a great week.

Peace and long life,

Rod Hutton,
A Canadian Star Trekker

-----Original Message----- From: Chip Orange
Sent: Saturday, November 10, 2012 6:00 PM
To: [email protected]
Subject: tentative app under development: "Remind Me Where"

Hi Rod,

The app I wanted to develop was to have GPS and mapping as its beginning
basic features.  Later you'll see I began interfacing it with Google Maps
and Google+ Places because it gave blind users a much easier interface, and
because all of these Google features have GPS locations as part of their
functions or supplied data.

The app creates 2 databases: one for your points of interest (a GPS location
with a name and a category to describe what type of place it is), an
address, set of comments, and an indication if its sharable with others.
The other database is  for your "reminders".  The reminders are
location-based, and linked to the POI table: that is, they can do various
things for you if you have a laptop or ultrabook or netbook with a GPS
receiver.  The app constantly compares your current position against any
reminders you've created which are linked to POI locations.  If you come
within a specified distance, travel time, etc. from a POI location tied to a
reminder, the app will do something.

If the reminder is your bus stop for instance, whenever you come within 1
minute of travel (at your current speed) it could speak something, sound a
tone, and do this just once or until you press something to quiet it.  You
can also create reminders which occur only once: such as if you get near
Radio Shack, a reminder could tell you to pick up new headphones.

Cool enough, but I wanted to do more, so I looked at Google.  I found for
instance, instead of having a user go to a place to get its GPS location in
order to create a POI for that place, Google provides a service where you
can enter an address and it will give you the approximate GPS location for
that address (called reverse geocoding).  I added this to the dialog for
creating a POI, and now you no longer need to be at a place in order to add
it as a point.

Google goes much further though: I can give it the address you entered, and
get from it a list of places (in increasing distance) of all businesses and
other types of locations that Google knows about.  Not only can you start
with an address, but you can specify part of the name; keywords for the
types of locations you want to see, and other search criteria.  And so, if
you wanted to add an ATM as one of your points, which you know was somewhere
near the grocery store, you could enter the address of the grocery store in
the dialog to add a point, click on the command button to get near-by
locations from Google, and enter ATM as a keyword.  The returned list of
locations from Google will be ATMs, in increasing distance from the address
you started with.  Not only will the list show you the name and address of
each ATM, but since it gives me its GPS location, and I have the GPS
location of the address we started with, I can tell you for each list entry
its relative location to you (such as 500 feet north, or 2 miles southwest),
thus helping you find the one you wanted to add.  You select it and it's
added as a point in your database.  One last nice feature: we don't have to
start by you knowing an address; you can pick any point in your database to
start with, and Google can use its GPS location as the starting point for
your search; so you can find almost anything by just knowing something about
what it's near to.

Even though I keep saying Google; all of this is done over the internet
(using XML) and with the user in an app's XML dialog, so no need to
negotiate a difficult web interface.

I looked further at what Google can do, and one of the pieces of info it
gives back to me for any place is an http address for a "Google Place" web
page, so I add this to the point database, and give you a command button to
click on to go to this page.  This page will tell you what kind of place
this is, what type of business, show you any reviews or comments from
others, and even show you the hours of operation.  It also will show you any
"events" which have been entered into Google for this location (such as a
sale or a party?  This isn't clear).
Google also gives me the official web page of this location, and so I store
it in the database, and provide a button for going to its "official" web
site.

I now added an app menu which allows you to bring up a list of all the
points in your database, sort and filter them as you like, and then go into
any of them to use them to see what's near-by, go to its Google Places page,
etc.  It will also tell you where a given point (or one associated with a
reminder which was just triggered for you) is, relative to your current
location (such as the bus stop being 500 feet to your north).

The next feature I found from Google is that it will give you directions
from one place to another; and you can specify whether you want driving
directions, walking directions, or directions which make use of public
transit.  I added this as an app menu choice, and I allow you for both the
"from" and the "to" location, to use a point from your database, an address,
or your current GPS location.  When you have specified your "from" and "to"
locations, you can click on the type of directions that you want, and they
will appear in an editbox on this dialog; no need again for a difficult web
page interface.  I expect the directions to be popular (even though not all
cities have the public transit option available).

Right now I'm adding the ability to import a GPX file of points (a kind of
universal format for exchanging points), and the ability to export one from
your points as well.

You can see (I hope) though that I've got a lot of features, but not
necessarily a cohesive structure designed to hang them all on.  I'd like to
be able for all blind users to easily share points among themselves (the way
users of the barcode scanning application from the A.T. Guys share barcode
data), but I'm not sure what else it should do.  Is this too much already?

It looks like Google has further features (such as the ability for a user to
add a Google Place if it doesn't have one, or for users to add "events" to a
Google Place), and to search for places when you don't know anything about
where it is (and so you can just type in "indian food in Tallahassee
Florida").

It needs another app I wrote named GPS, which is a shared object library,
and so it looks to see if you've installed this app, and if you haven't it
offers to automatically download and install it for you.

Also, it makes use of a feature from Windows 7 and Windows 8 called the
"Location Sensor API".  This reports your position to programs, even if you
don't have a GPS receiver connected.  It can often get this from your ISP or
the wifi hotspot you're connected to.  Newer GPS receivers also come with
drivers which report your position to the Windows Location Sensor.  This app
however will work on any version of Windows, and you can buy a GPS receiver
for around $50 or $75 (I've got a rechargeable Bluetooth one) which can
figure out your position in 30 seconds or so.  The app keeps you informed of
how your GPS receiver is doing (whether it has a position, etc.) with
various sound effects.

Here is where I am at the moment, and hopefully opinions of others will help
shape the app.  I'd like for it to be useful enough to be a selling point
for WE owners (to help users consider switching screen readers).  Maybe it
can be an example to other scripters of how to interface with web sites via
XML, or maybe it should be encrypted to keep others from copying it for
other screen readers (I'm not sure about this)?  I really want it to be
available to other scripters.
Even the name is up for discussion.

Obviously anyone who wants to try it should realize it's not even beta
software yet.
Chip
[email protected]

Reply via email to