GW Micro - Unleashing the power of your mind's eye.

2008-05-15

Permalink 07:59:37 pm, by Aaron Email , 767 words, 21 views English (US)
Categories: dev

Window-Eyes 7.0 Beta Update (Posted to gw-info)

For those of you not subscribed to the gw-info list, I thought you would appreciate this recent post (with a few gammar changes from the original):

Re: Update on the Beta?

Everyone rest easy; the beta is progressing nicely. The problem that we will always combat when we first announce a new upgrade is answering the question, "when?" As much as we say that we don't have a specific time, we're continually pressed for a date. We eventually give in, and for a million different reasons, things get delayed. That's the nature of the technological beast.

But, to reassure all the wondering minds, let me offer an official statement that the beta will be ready when it's ready, and not a day sooner.

So that didn't ease your mind, huh? Ok, then. Let me tell you why things are taking a long time: scripting is huge. And while you're developing such a massive undertaking, you always find things that didn't pan out the way they were originally designed, or find ways to do things better, or run into technical glitches and snafus. But that doesn't mean the whole process is lost. On the contrary; it makes what we're developing even better.

As you all know, our largest rival, JAWS, has had a scripting language for many years. Knowing that, we wrangled up a few of the bigger names in JAWS scripting, and added them to our private beta team. We did this for two main reasons: 1) we wanted their scripting experience, and 2) we wanted to show them what we have is better. Both of those goals are being met with wild enthusiasm. That also means that as they become familiar with the Window-Eyes scripting model, they have a lot of feedback to offer about how to make Window-Eyes scripting better. Some of the things they tell us we had already accounted for, and some of them we never thought about. So it takes time to regroup about a specific portion of a very large project, research it, develop it, test it, and then implement it for private testing. That may happen on a weekly basis.

So if there's any excuse for a delay (and I hesitate to use the word excuse, because we always said we didn't have a definite date), it's that we keep finding more cool stuff to add to make Window-Eyes scripting all the better (although we're already finding things that will have to wait until post 7.0 so that we can in fact get a public beta out).

That's what's up on the development front. But there's more to Window-Eyes scripting than just a new copy of Window-Eyes. One of the biggest drawbacks to the other guy's scripting feature is a lack of community. We feel that having access to script developers and script users as much as possible is one of the biggest reasons Window-Eyes scripting will become king. That's the reason we came up with Script Central (www.gwmicro.com/sc), and as you can tell when you visit the site, it's already beginning to become inundated with Window-Eyes scripts that will be ready for general consumption when the beta is released. Not only will each script be able to be rated, and commented on, but each script will have its own discussion forum where users can interact with other users and with the script developer 24 hours a day. That itself is a hefty undertaking.

I was there when Window-Eyes scripting was born, and I've been with it every day while it matures; no one is more excited than I am to get it out, and blow people away. But I also want to make sure we do it right, which is why we take our time.

So there's your update. We are getting close. There are only a couple more big ticket items that are keeping a release from being imminent, and those will be getting implemented within the next few weeks.

In the meantime, I suggest kicking back with a cold beverage of your choice, pop in some tunes of your liking, and wait a bit longer in style.

Aaron

P.S. I forgot to mention one additional thing: while scripting is our primary focus, we are also actively working on resolving bugs and issues that have been reported. There will also be a few other features that aren't directly related to scripting that we have to make sure are, dare I say it...rock solid.




2008-03-13

Permalink 02:21:22 am, by Jeremy Email , 261 words, 150 views English (US)
Categories: dev, general, sales, shows

Live from CSUN - New products from GW Micro

Coming to you live from CSUN - greetings everyone!  Tonight, we
officially announced our new products.  <drum roll please>

We introduced the next generation of the Braille Sense, as well as the next
generation SenseView, the SenseView Duo.  I don't want to go into all of
the details here, but the new Braille Sense boasts many new features that I
think everyone will appreciate, including 8 GB of user storage,  built-in
Wi-Fi, built-in Bluetooth, and an SD slot.

The SenseView Duo takes the next step in portable low vision technology, and
not only provides a close-up camera and a built-in handwriting camera, but also
a distance camera.  I am really excited about both of these products, but
as someone with low vision, this has to be my favorite.  Finally, I can
see street signs from a distance, signs in a grocery store, or the dreaded
chalk board in the classroom.  And, all I need is one device.  Add to
that the capability to fit it in your pocket or purse, and you have yourself a
winner. 

Of course, we have been talking about Window-Eyes 7.0 for a while, which is
also very cool.  Things are coming along
nicely, and you will see more info about that soon.  And, we now have a
very nice case to fit the Voice Sense and 20-cell SyncBraille into just one
case.  This is perhaps our best show at CSUN yet! 

Stay tuned to www.gwmicro.com for more information, including pricing and
technical specs.  I'm signing off now from the best CSUN yet.




2008-02-02

Permalink 01:29:02 pm, by Aaron Email , 74 words, 257 views English (US)
Categories: general

I've Been Waiting For This...

Unlike Raul, I don't have the patience to wait for Doug's post. I've been holding my tongue ever since we decided to do scripting for 7.0, and now we can finally talk about it. There's so much to say, but I'm going to start in this post by linking to the news article I just posted:

A Short Introduction to Window-Eyes Scripting, and the Window-Eyes Object Model

Let the fun begin!




2008-01-21

Permalink 01:15:36 pm, by Aaron Email , 706 words, 461 views English (US)
Categories: dev

Regarding Web-Based Dynamic Content

I recently had a dialog with a developer interested in knowing what kinds of web-based dynamic information we supported. I get this question a lot, and the answer isn't always easy to understand, especially by people who do not use a screen reader on a daily basis. This individual, however, told me that my reply was very helpful, and I'm all about helping people out when I can. With that in mind, here's what I sent her. I hope others find the information useful as well:

The reason that you aren't able to find concrete information about what Window-Eyes (or any other screen reader for that matter) supports in terms of dynamic content is because, as you know, there are a million and one different ways to create dynamic content. Let me give you a couple of specific examples. Most of the time, rather than using existing technologies, companies will develop their own dynamic drop down menu system. Unfortunately, many times, those do not work. And yet, Google and Adobe have two different menu systems that do work. In addition, the Ultimate Drop Down Menu system (www.udm4.com) is a completely accessible version. So when we're asked, "Do you support dynamic menus," we can't just say yes, nor can we say no. It depends on the technology being used.

Another more specific example is creating dynamic elements on a page. Say you're inserting a DIV using JavaScript when a link gets clicked. Most often, screen readers have no idea anything happened, and will not announce the new content. Call the same function a little differently (i.e. HREF="javascript:myfunction();" instead of OnClick="myfunction();") and we are able to refresh our buffer and pick up the new content. So when we're asked, "Do you support dynamic elements," again we can't just say yes or no -- it depends on the technology being used.

The mode that screen readers use to present web based information is static -- it simply takes the text on the page at that time, and speaks it (forms are a bit different because when we interact with them, typically we're no longer in our static "browse" mode, so updated content will usually work fine). Imagine the confusion of trying to read a page that is transforming dynamically if you can't see the screen. Screen readers are very linear -- they read left to right, top to bottom. Sighted people can scan the screen at any point to pick up information.

The bottleneck in understanding accessible content exists because web developers are not screen reader users, and most often do not have the knowledge of how screen readers view web content. Screen reader users are often not web developers, and most often do not have the knowledge of how dynamic content is created.

The solution is what you've already began, and that is to create a dialog with a screen reader manufacturer, providing examples, and working back and forth to come up with something that does what you want and is accessible at the same time. I would also recommend enlisting the help of people who use Window-Eyes on a daily basis to test your content.

AJAX in itself is not inherently inaccessible, any more than, say, C++ is. But you have to know what works and what doesn't. While there are many guidelines for creating accessible applications in C++, AJAX is a relatively new way of doing things, so the guidelines aren't quite there yet. I would recommend you document, and share, what you find works and what doesn't, perhaps through a blog or something so that other developers can learn from your experience.

I'll also add that GW Micro is working closely with Mozilla to support ARIA (Accessible Rich Internet Applications - http://developer.mozilla.org/en/docs/Accessible_DHTML). ARIA is already being adopted by big name companies like IBM and Yahoo. With proper support from the developer community, the question of what works and what doesn't in terms of dynamic content for screen readers will be a question less often asked.




2008-01-07

Permalink 02:44:16 pm, by Aaron Email , 1280 words, 497 views English (US)
Categories: dev

Happy New Year. Now, Don't Try This at Home

Let me first offer an obligatory Happy New Year to all. I know you hear this kind of dribble from most companies in early January, but I do feel that this year is going to be great for us. There are a lot of cool things in store for GW Micro customers in many different areas.

But now on to something that doesn't have anything to do with any of that. Every so now and then, I'm asked how you can switch between versions of Window-Eyes, mainly for testing purposes. Back in ye olden days, under Windows 9X, all you had to do was close Window-Eyes, copy over the main Window-Eyes application files, and then re-start Window-Eyes. But those days are long gone, which is preferable even if we do have to do things a bit more complicated now.

The biggest difference with newer operating systems is that Window-Eyes uses integral system components that stay loaded even when Window-Eyes is closed. I'm referring to the Window-Eyes Display Driver, and if Load Before Startup is enabled, the Window-Eyes Service. That's just under Windows 2000 and XP. Under Windows Vista, there is at least one other process that's always running to ensure that Window-Eyes can properly communicate with Vista's new security model (there's no official name -- it's just called weproxea [wee-prox-ee-uh]).

So how does one go about switching between versions? Well, I'll tell you how I do it. But before I do, you must understand that we don't support doing this. The ideal way to switch versions, even if it involves unwanted hoops, is to uninstall the current version, install the wanted version, test, uninstall the wanted version, and then re-install the current version. If you ever contact support with problems, and have used this or any other quick-switch method of moving between versions of Window-Eyes, you're likely to get scoffed at, and asked to come back once you've uninstalled and re-installed.

With that out of the way, I have a batch file that I often use to switch between release builds and custom builds to test regressions, newest features, bug fixes, and what-not. I'll list each section of the file, discussing it as I go. I call the file updatewe.cmd:

@echo off

This line simply suppresses the verboseness of the commands for the sake of simplicity.

REM Set up Variables
SET shareName=s:
SET newWeFiles=%shareName%\aaron\we
SET newWeSystemFiles=%shareName%\aaron\we\system32

As the remark line suggests, this section sets up several variables that are used later on.

REM Set up share
IF NOT EXIST %%shareName%%
(NET USE %shareName% \\server\share /user:username password)

I keep all of my files on a network share, because I find myself moving from machine to machine and operating system to operating system. Keeping my files in one location makes accessing them much easier. But, in order to copy the files from my network share, I have to make sure it exists first, which is what the previous line does (minus the for-my-eyes-only information like username and password). The ironic thing is that I keep this batch file on that network drive, so if it doesn't exist when I run it, things have gone quantum-ly wrong.

REM Kill running processes
TASKKILL /F /IM weproxea.exe
TASKKILL /F /IM weserv.exe

The section kills any of the processes that might be running so that the files involved can be copied with success. As mentioned previously, weproxya only runs under Vista, so that line will throw errors under XP. The weserv line will have the same kind of result if the Window-Eyes service isn't running. But these aren't critical errors, so the batch file will continue. The /F parameter kills processes forcefully, and the /IM parameter specifies the name of the process to terminate

REM Copy in new files
XCOPY /Y "%newWeFiles%\*" "%wineyes%"

Assuming that we have the share set up, and the processes killed, now it's time to copy some files. The /Y parameter suppresses any overwrite prompts, which is good since we're overwriting files, and don't want to be prompted about every single one.

REM Change to the system drive
%SystemDrive%

Now that the files are copied, we'll switch over to the system drive to prepare system files for copying.

REM Change to the System32 dir
CD %SystemRoot%\System32

Now that we're on the system drive, it's time to get into the System32 directory, where the Window-Eyes system files are stored.

REM Delete any old backups
DEL /F %SystemRoot%\System32\gwm*

If this batch file has been run before, then there are old copies lying around. This just cleans those up. The /F parameters forces the removal of read-only files.

REM Rename current system files
REN gwm* gwmold*

The only way to copy in system files that are in use is to rename them first, then copy over the new files.

REM Copy in new system files
XCOPY /Y %newWeSystemFiles% %SystemRoot%\System32

This copies the system files, which should be successful since we previously renamed the current ones. We're using the /Y again to supress overwrite prompts.

REM If there was an x on the command line, restart
IF %1%==x SHUTDOWN -f -r -t 0

Finally, if I run the batch file with an x on the command line (the %1% means the first argument supplied on the command line), the machine will automatically reboot by running the shutdown command with a -f (force running processes to close), a -r (specifies a reboot), and a -t 0 (do it all in 0 seconds -- i.e. right now).

There are a couple of gotchas that I have to remember before running this batch file. The first, and most obvious, is that Window-Eyes must be closed. It's hard to copy files that are in use. The second thing is that I have to make sure I get all the files copied successfully, otherwise, Window-Eyes will be in a weird state, and I'll have to take time to figure out why. That goes without saying, but it's tripped me up before, and I've ended up doing the whole uninstall/re-install thing because it was faster than trying to figure out what got all screwed up.

There are other issues to keep in mind as well. For example, it's possible that registry entries and such changed between versions, and copying files may not be enough. This is one of the many reasons why this method of switching versions isn't supported.

And that's about it. This particular batch file copies in the newest stuff. I have another one that references other directories to copy in older stuff. One of these days I'll combine the two into one, and specify the version I want to copy on the command line. I should also mention that this isn't the only way to get the job done, nor is it necessairly the best way. This is a quick, brute-force method that does what I need it to do, but there's not much finesse to it. I would say that I'll post an updated entry when I update my batch file, but given my track record of doing what I say I'll do throughout past blog entries, I wouldn't count on it.

As the title of this blog entry suggests, we're not responsible for your system getting all screwed up by doing something like this. If you decide to attempt a batch file like method of switching between versions, you are on your own. In other words, don't do it, and good luck when you do.




2007-12-11

Permalink 02:47:33 pm, by Aaron Email , 1333 words, 1037 views English (US)
Categories: dev

How to Tame the Gmail Beast

Are you tired of switching service providers, then having to update a bazillion people with your new email address, only to have to switch providers again in a month, then having to update a bazillion people with your new email address? Enough is enough. Get a Gmail account, and stop that silliness. "But," I can hear you saying already. "Gmail isn't accessible. I can't figure out how to navigate the inbox." Maybe that's true, and maybe you haven't really tried. But no bother. You can set up Gmail to use POP3 or IMAP access instead of the standard (or basic, for that matter) web interface. That means you get to use the email client of your choice (Outlook, Outlook Express, Eudora, Thunderbird, etc.) to read your Gmail email.

Using POP3, after downloading your email, the messages are removed from the Gmail server. When you create folders for storing mail in your email client, those folders will be on your machine, and not on the Gmail server. Using IMAP, after downloading your email, the messages remain on the Gmail server (unless you choose to delete them using your preferred email client). When you create folders for storing mail in your email client, those folders will be replicated on the Gmail server. The advantage of IMAP is being able to retrieve your mail on any machine using a standard email client. The advantage of POP3 is being able to maintain your emails on your own machine without storing them remotely. The decision of which protocol to use is completely up to you.

So let's get on with it before you have to change providers again. Go to www.gmail.com. Select the Sign up for Gmail link. Fill out the form. If you want to check the availability of your desired login name, you will need to refresh the Browse mode buffer after selecting the check availability button. If your desired name is already taken, you can select one of the alternative names using the provided radio buttons, or you can re-enter a new desired login name in the appropriate edit box.

When you get to the edit box that says, "Type the letter you see or the numbers you hear," tab once to the "Listen and type the numbers you hear" link and press enter. Listen to the characters as they're spoken, then type them into the appropriate edit box.

When you're done with the form, and have reviewed it for accuracy, select the "I accept. Create my account" button.

When you've completed your signup, you'll be presented with an Introduction page. Select the "I'm ready - show me my account" link to log into your newly created account.

Regardless of which method you do choose, you can setup your Gmail account for POP3 or IMAP service by selecting the Settings link. On the settings page, arrow to the line that says, "Forwarding and POP/IMAP". Route your mouse to the text using INS-NUMPAD-PLUS, then click with the NUMPAD-SLASH key. Reload the Browse mode buffer to get the contents of the dynamically generated page. To use POP3, press C until you reach the radio button titled, "Enable POP for all mail" and press SPACE to select it. To use IMAP, press C until you reach the radio button titled, "Enable IMAP" and press SPACE to select it. Note that you can choose to enable both POP and IMAP at the same time. Which method you actually use will depend on how you configure your email client. Press C until you reach the Save Changes button. Route your mouse to the button with INS-NUMPAD-PLUS, then click with the NUMPAD-SLASH key.

At this point, you are done using the web based Gmail interface to set up your email for POP and/or IMAP access. Now you need to decide which email client you want to use for checking your Gmail email.

Personally, I prefer Thunderbird, and currently have my copy set up to access my Gmail account using IMAP. Thunderbird has a version that can run off a USB stick, meaning I have access to my Gmail account anywhere I go that has Internet access without having to use a browser. That means I can check my mail at the library without having to use a library browser, meaning my mail never touches the library machine, meaning little 13-year old Tommy who likes to hack the library computers will never get access to my email.

But for the sake of inclusiveness I'm going to show you how to set up Outlook Express, because it exists on pretty much any Windows machine. These same steps will also apply to Windows Mail if you're using Windows Vista. I'm also going to show you how to set up Outlook Express (or Windows Mail) for IMAP, because I believe having your email stored remotely provides a good backup solution in case something happens to your machine.

Fire up Outlook Express or Windows Mail. In the Tools menu, select the Accounts option. In the Internet Accounts dialog, select the Add button, then select Email (or Email Account). Enter a display name, and press ENTER. Enter your full Gmail email address, and press ENTER. Select IMAP from the server type combo box. In the edit box asking for the incoming POP3 or IMAP server, enter imap.gmail.com. In the edit box asking for the outgoing SMTP server, enter smtp.gmail.com. Press ENTER. In the account name edit box, enter your full Gmail email address, and then put your password in the password edit box. Press ENTER, answering any other preference questions along the way, until you get back to your list of accounts. In the list of accounts, select the Gmail entry, then TAB to and select the Properties button. Press SHIFT-TAB to get to the tab controls, then arrow right until you select the Advanced tab. Among the controls in this dialog are an edit box for the SMTP server port, and edit box for the IMAP server port, and two check boxes that says, "This server requires a secure connection (SSL)." In the outgoing/SMTP port edit box, change the number from 25 to 465. In the incoming/IMAP port edit box, change the number from 143 to 993. Finally, make sure both secure SSL check boxes are checked. SHIFT-TAB back to the tab controls, and arrow left until you select the Servers tab. TAB to the check box titled, "My server requires authentication," and press SPACE to check it. Press ENTER to go back to the Accounts list. TAB to Close and press ENTER. If you're prompted to refresh your folder list, select the Yes button. Otherwise, press CTRL-M to check for new mail. Once the folder/mail synchronization has completed, you can TAB over to your folder list. In addition to your local folders, you'll find a node in the tree view called imap.gmail.com, which contains an Inbox, Sent Items, Deleted Items, and so on. These are your Gmail folders.

If you've got the legs to do it, now would be a good time to jump for joy, because you're all done.

There may be more IMAP configuration options in Outlook Express or Windows Mail. I know Thunderbird has them, so take some time to familiarize yourself with options and preferences in your preferred email client. If you want to know more about IMAP, check out The IMAP Connection. If you're interested in the other clients that support Gmail IMAP, and their configuration options, check out the Gmail Supported IMAP client list. If you're interested in the clients that support Gmail POP3, and their configuration options, check out the Gmail Supported POP client list.

Oh, and don't forget to update those bazillion people one last time.




2007-12-09

Permalink 01:01:18 pm, by Raul Gallegos Email , 401 words, 276 views English (US)
Categories: general, sales, software

GPS is out but the work continues

After several months of intense testing, our new product is finally out. This is our GPS product called the Sense Nav. Well, at least, that is the short name. Technically it’s called GW Sense Navigation. Let’s face it though, that takes too long to type out. I’m not sure if I should say how long we’ve been working on this project, but here goes. At least for me, it’s been since June this year. Let me tell you, when I look back on one of the early versions of the program, I can see a night and day difference with what we have out now. To give you a small example, the first version of the program I played with would crash every time you would search for an address. Also, instead of typing out the street name for a search, you would have to pick from every single street in a given city. As you can imagine, it was rather challenging. This is not to say I hated it by any means. Although there were frustrating days during the testing period, it’s been a wonderful experience overall and I’m happy to be a part of such a wonderful thing which will enhance a person’s travels.

Now that the program is out and we are taking lots of orders I have new work to do. It seems that the work is never finished around here. Although I cannot say what all my new work involves, I can say that some of it includes writing up knowledge base articles for Sense Nav, creating sound packs, and finishing the audio tutorials. Apparently someone has it in their head that I’m a good teacher and I explain things well, so that is why I’m doing these things. Seriously though, I really enjoy creating tutorials and help guides. Speaking of help guides, what do you think of the Sense Nav manual? Yours truly wrote it up and although I’ve already found areas which need changing, overall, it’s not too bad.

Since it’s Sunday here and I’m at home, I think I’ll stop now and go for a walk. I’ll make sure to wear my reflector vest too. See one of my prior blog entries for details on why I need a reflector vest.

Until the next time, happy traveling!




2007-12-03

Permalink 10:50:46 am, by Aaron Email , 577 words, 348 views English (US)
Categories: dev, general

What's In a Number?

Thanks to Jeremy, the GW-Info list has been inundated with pokes and prods about the next version of Window-Eyes, along with a lot of speculation about past version features, what upgrades have cost in the past, and what sub-version numbers have indicated. While we have a complete version history listed on the Window-Eyes page, including upgrade prices, I thought I would take a minute to officially explain what the version numbers really, truly mean.  Here goes: version numbers don't mean squat.  Seriously.  That's not to say that version numbers aren't useful. They do provide place markers for developers. When you know what changed between versions, it's easy to go back and test. When you find one version that has a problem, and a previous version that doesn't, you know where the problem lies. But if you want to know what a specific version of a piece of software does, read through the readme, find a changelog, or skim the manual. A version number, in itself, rarely tells you anything. In fact, version numbers are usually used as a marketing tool to express change. Their incremental nature suggests growth and positive movement, always climbing toward an infinite end where possibilities are immeasurable. How many times have you seen a piece of software decrement its version number? That would be a countdown to finality: a single version that did all that was claimed, nothing more, nothing less. No software manufacturer in their right mind would ever state that about their software because that's not how software works. Software has issues that need resolving, and features that need adding, and each time issues are resolved and features are added, you have more issues that need resolving and more features that need added. Software evolves, so version numbers increment. So what does a version number tell you? As I mentioned, nothing. What did Window-Eyes 4.5 have over 2.1? A butt-load, I can assure you. But even I don't know what without looking through documentation. I know that 5.5 had support for Excel when 5.0 did not. I know that 6.1 was the first version to support Windows Vista. But I only remember these things because they're recent. Ask me again in 10 years, and you'll just get a blank, silent stare, probably followed by a shrug, and an, "Uhhhhh..." 

Version numbers are also used as a tool to compete for customers. Software XYZ might have more bells and whistles than Software ABC. But if Software XYZ’s version number is 1.0, and Software ABC’s version number is 10, who do you think is going to get more business? It’s unfortunate that people are swayed so easily without looking at the details, but that’s how the industry works at times.

 We do our best to stay away from silly version number games, and for the most part, we do try to make some sense with our version numbers. 4.1 to 4.11 was minor, hence the small change in version number. But Windows Vista support, in my opinion, was huge, and it only got a .1 version increase. So what does that mean for Window-Eyes 7? We're jumping right from 6.1 to 7.0. No 6.11, no 6.2, no 6.21, no 6.5, but right to 7.0. That’s a significant jump. In fact, that big of a version change hasn’t happened in Window-Eyes since 1999. That means this version must have something huge, right? Right? RIGHT? 

The answer is….oh, look at the time. I've gotta run.




2007-11-14

Permalink 09:05:34 pm, by Aaron Email , 1323 words, 367 views English (US)
Categories: general

I Was Fired. Literally! (But Not Like You Think)

In case you haven't noticed, the blog well runneth dry over the past month or so. The truth is, Raul getting hit by a car was probably the most exciting personal thing that has happened to any of us lately. Note how I said personal. On the GW front, there has been such a flurry of activity that I can hardly keep up with what I'm supposed to be doing. I want very badly to talk about the current Window-Eyes development process. There are so many cool things happening that are going to…well…I can't even say what they're going to do. But it's an amazing process to be part of, and I can't wait for the release of Window-Eyes 7. So that's my excuse; I've been neck deep in documentation, testing, and developing, not to mention support, in-house IT management, and so on. That's not a, "Oh, poor me," mind you – I love every minute of it. Well, almost every minute. But full days do make getting a blog entry out very difficult.

Raul has a decent excuse too. He's been working hard on making the Voice Sense as rock solid as all the other products we offer. The Voice Sense GPS/Navigation features are very cool. If you haven't heard his presentation, you're missing out. Needless to say, all his work with HIMS on the Voice Sense, along with support and all the other things he does, makes his blog entries few and far between.

Jeremy is full of excuses, the main one being that he's never around. I can't remember the last time he was in the office for an entire day. Travel seems to be Jeremy's life lately. And while he's building up a solid GW Micro presence wherever he goes, more time on the road means less time on the blog.

Now Doug and Mike are a different story. Doug had an excuse. He was moving from one side of the country to the other (almost). But now that he's settled, I'm not going to let him off easy. He has had at least three really good blog ideas, and not one of them has evolved into anything fun to read. Come on, Doug! I guess I can only be so hard on the guy who signs my paycheck, huh?

Mike? Well, Mike is Mike. Let's move on.

Oh, I'm just kidding. Mike is more of a talker than a writer, and his ideas float around verbally rather than taking literary form. It's just as well; he can go on and on sometimes.

So there are all our excuses, lame though they may be.

I suppose I do have one story I can share. Raul mentioned on the gw-info list about one of GW's employees who had a computer fire. I replied, pleading the fifth. But I've had enough queries to warrant an explanation, so to please the masses, here goes the tale.

Before our daughter arrived, I was an avid gamer. Not a die-hard gamer, but I certainly enjoyed my share of first person shooters, fragging 'til the sun came up. One evening, as I was blasting away some nasties (in Unreal Tournament, I believe), I picked up the faint smell of sizzling electronics. If you've ever been around resistors, capacitors, and such when they've gone south, you know the smell I'm talking about. It's a very metallic, acrid smell that instantly tells your brain something not good is happening. Either my game was so real I was smelling spent shell casings, or something was amiss. "But I can't be bothered with this," I said to myself. "I'm busy saving the world from blood thirsty aliens." But the smell became stronger, and I started to get a little worried. Burning electronics is not a smell that means everything is hunky-dorey. So I put my game on pause, and went to flip on a light so I could investigate the aroma. When I got over to the light switch, I happened to glance over at my server before turning the light on. At first, the sight didn't register with my brain. Flames? In a computer case? Nah, that can't be right. Then it hit me. Holy crap! There were flames in my computer case! I flipped the light on, and clamored over to my machine as fast as I could. Sure enough, a bright fireball was gleaming out at me. I managed to get a decent string of expletives out before yanking the power cord out of the back of the machine. As the fans in my case spun down, the glow subsided, and in its place sat four or five toasted power capacitors, all covered in an ash-y white powder. I sat there for a few minutes, stunned, pondering my situation, somewhat tempted to plug the power back in just to see what would happen. Fortunately, sanity prevailed; I disconnected my drives to preserve whatever data I could, pulled the cards out to see if there was more damage, then finally pulled off the motherboard so I could take a closer look.

I had seen burnt electronics in my day, but this line of exploded capacitors was impressive. I could tell where the airflow from the power fan was supplying a gracious host of oxygen to what I'm sure started out to be not much more than a warm spot. But that was enough fuel to bring it to life.

Disillusioned by the fact that my server was down, I went back to my other machine, told the aliens that their ass-kicking would have to wait, and fired up Google to see if I was unique, or if other people had the same issue with the same board. After quite a bit of time searching, I was about to give up, willing to except my misfortune as a fluke, when I stumbled across a hardware forum with some poor slob lamenting about his machine catching on fire. A little more reading, and sure enough, it was the same board that I had.

It was an ECS board, and he had contacted the manufacturer about the issue, only to be told that since the board was out of its 30-day warranty, there was nothing they could do. I was in the same situation, so I didn't bother pursuing it. If anything, I was just elated that I was home when it happened. I can freak myself out pretty easily imagining that fireball roasting away while I was somewhere else.

Along with not losing my house, I was fortunate enough to not lose any data. In fact, after poking around my logs, I'm pretty sure that machine was still serving away even while it was up in flames. Perhaps there's something to be said for that kind of commitment, although I can assure you, when I rebuilt that machine, I didn't use an ECS motherboard.

So that's my story. I still can't believe that thing caught on fire. In all my years, I've never seen electronics perform such a dazzling display of destruction.

We've all had our share of bone-headed, power related mistakes, anywhere from Doug frying a motherboard by working on it while the power was still plugged in to Ron frying a machine by plugging in the power when the supply switch was set to 220 volts rather than 110 (really, who looks at those things anyway?). But this one was completely out of my hands. That makes it a little harder to feel ok about. I can handle devastation if I know I'm the knucklehead who caused it. But when things blow up on their own, I get a little nervous.




2007-11-02

Permalink 11:54:58 am, by Raul Gallegos Email , 2077 words, 429 views English (US)
Categories: general

Being A Speed Bump With A Sore Throat Makes For A Bad Week!

Leaving October and starting November has not been the best thing this year. Let me start off by saying that overall, I really am doing great. In fact, I feel better than I sound or look. If you want to hear just how bad I sound, give technical support a call today so you can laugh at me. Losing my voice from a sore throat was one of the better things which happened to me this week. In fact, if the only event was my sore throat, I would not be writing this entry. So, let's get to what actually happened.

 

As you may or may not know, I've been deeply involved with testing our up-coming GPS product for the Voice Sense Notetaker. In fact, I did a presentation on it a couple of weeks ago. If you want to hear it, visit the Voice Sense files area of our site where you can download an archive of the presentation. Right now, the presentation is not the important thing however, what happened to me is. So, I'll continue. I consider myself an everyday user of the GPS product, both here in the office, and at home. Since I can't really do much testing while sitting at my special area designated, "Raul's Space," I have to do most of the testing after hours. This is fine with me because I actually have a reason to walk, other than the fact that walking is good for you. In fact, walking is what brought on this week's event.

 

I'll start off by describing what happened Monday night, October 29. I went out around 9:30 at night and created a manual route around my neighborhood. This route took me from my house, around some streets, and back to my house, making a total distance of one mile. Because I was creating the route manually, it took me longer to walk this one mile due to having to stop at each turn so that the proper waypoint could be made. When all was said and done, or rather, walked and done in this case, I went home and ended my day with much needed sleep.

 

Now we are up to Tuesday night which was one day later. Obviously everyone knows that Tuesday comes after Monday, but I thought I'd throw that in just to be clear this was one day later. I also realize that the last sentence was rather long, but oh well. I loaded the route I had created before and began my walk. Since the route was already created, I didn't need to stop at each turn like I had the night before. Because of this, I knew it would only take me around twenty minutes to complete the one mile walk, whereas the night before, it had taken me over half an hour. I switched on the multiple command feature of the GPS program and started walking. For those of you who may not know, the multiple commands feature is where the GPS program will tell you certain things automatically every twenty seconds or so. This way you don't have to keep pressing the command over and over if you want to know the status of certain things. In this case, I wanted to keep tabs on the heading and the speed. Since I was trying to see how fast I could complete this route, I wanted accurate speeds and didn't want to slow down to type the "S," command on the Voice Sense. So, there is a brief explanation of multiple commands. I seem to keep getting off-track somehow. This must be due to my sore throat. Anyway, during the first ten minutes of the walk, I averaged around three miles per hour which I thought was very good. Once I got to the last third of the route, I slowed down a little for no apparent reason.

 

There I was, minding my own business, walking East at around two miles per hour along the next to last street of my route when I heard a car pulling out of a long drive way off to my left. In the half-second it took my brain to process the thought, "Hey, that car is sounding like it's moving right toward me and I'm in its way," the car hit me. In the next instant, I'm lying on my right side after my right knee and right elbow broke my fall. Although it was very nice of my knee and elbow to do this for me, hitting the street like that was not the best thing. There was instant pain as both my knee and elbow had some skin removed due to my fall. I won't go into more details because I'm sure you get a pretty good picture of what happened. Keep in mind that in late October in Indiana at night is not very warm. I was wearing jeans and a light jacket and I still got scraped up. Of course this was nothing compared to how my left leg felt. So now back to the car. It turns out that I was very lucky because the driver was pulling out rather slowly out of her drive way. Also, either the feeling of the car hitting an object or my yell of, "Ouch!" was enough to make her hit the brakes and stop the car. If she had not, I'm afraid that more than my leg, knee, and elbow would have gotten hurt.

 

Let me take a moment here to express that the priorities in my life were rather screwed up that night. You would think that someone getting hit by a car, even one going as slow as it was, would think of their own safety and their own life first right? Well, I'm almost ashamed to admit it, but the first thing I did while I was lying there on the street was check the Voice Sense and GPS receiver for any problems. As I lie there on the street looking for scratches on the Voice Sense I finally come to my senses and think to myself, "screw the Voice Sense and GPS receiver! I'm in pain." Actually, I didn't think the word, "Screw," but this is a G-rated post so that is what I'll use here. Anyway, it only took about a second for me to get my priorities in order, but I feel I would be less than honest if I had not mentioned it here.

 

So, now the car has stopped and I'm slowly getting up off the ground. The driver gets out and walks over to me and says, "What are you doing?" As if it's not obvious.

 

"I'm lying here on the street," I replied, still getting up slowly and taking a few steps further into the street to retrieve my cane which had flown out of my right hand and landed some two feet away from me.

 

Upon seeing the cane, she said, "Oh, you are blind? I didn't know that."

 

I'm thinking, "You idiot." Out-loud I said, "Would that have made a difference?"

 

Either she thought that was a rhetorical question, or she didn't get my humor, which by the way, I was proud to be having considering there was white hot pain shooting up my leg and my elbow and knee were bleeding.

 

Next she said, "I didn't see you,"

 

As if that were not obvious, I pointed out, "Yeah well, that makes two of us who weren't seeing well this night."

 

I do want to say that I truly feel that it was not totally her fault. My reasons for feeling this way are because it was late, dark, and I was wearing dark clothing on top of the lateness and darkness. She still should have watched where she was going though. From a gut feeling I have about people, I get the feeling that she just figured that she would pull out of her drive way and not really check carefully for a pedestrian since it was a residential street and not many people will be strolling late at night. Furthermore, if I had been sighted, I would have probably jumped out of the way upon seeing a car slowly pulling out of the drive way. What made this situation frustrating however, is the fact that she just turned around and got in her car and left. She didn't bother asking me if I was alright or if I wanted a ride home.

 

There are only two houses along this stretch of road where it happened. So, even though I'm not sure which house it was, I'm not really interested in pursuing it any further. I have medical insurance and accident insurance and no permanent damage was done. I'm getting ahead of myself here, so I'll stop and keep telling my story.

 

So, after she drove off, I limped my way home. Luckily I was only about a block and a half from my house, so it was not too bad. I should have called my wife to let her know what happened. She would most likely have come and picked me up, and gotten the actual address of the house. As much as I would have liked to have called her though, I could not because I had left the cell phone on the kitchen counter. Silly me, I know, but well, there is nothing for it now. Ironically, I had the cell phone with me the prior night.

 

So, I get home and find that my wife is fast asleep. By this time, it's about 10:00 PM and everyone except the dog was asleep for the night. I wake my wife and tell her I got hit by a car. Naturally she does not believe me because I have a rather warped sense of humor. When I showed her my right knee and elbow, she finally believed me. At least, I think she did because she didn't get upset about me waking her. Come to think of it, she never did say she believed me, but she did ask me if my life insurance was up-to-date. I think I did annoy her a little because I got a little blood on the sheets. In any case, she was awake instantly and in nurse mode. After several minutes, first-aid kit next to us, my knee and elbow were patched up. An ace bandage was around my left leg and four pills were in my stomach. The pain in my leg had lessened considerably and since I could put some weight on it, I didn't think I needed to be seen that night.

 

The next morning I called into work and went to see the doctor. After an x-ray was taken, it was confirmed that there were no fractures or breaks. All I have to deal with is soreness and swelling for the next week or so. Some friends of mine were suggesting that I at least try to get this person to pay for the medical bill. Or at least to have her home-owner's or car insurance pay for it, but I'm really not out to get anyone, and besides which, with it being Friday today, it may be too late for that now. So anyway, I came into work on Thursday and limped around slowly with some discomfort. Overall, I got through the day without problems. Well, mostly anyway. At around 2:00 PM my throat began hurting a little. Small fits of coughing began and my head started to hurt.

 

Now it's Friday and I'm here with a sore leg and a sore throat. Luckily as the morning has passed, the calls have been slow. I'm glad it's Friday because if I do end up with a bad cold or infection of some kind, I'll have the weekend to try and get through it. Hopefully when Monday comes around, I'll be much better. So, that is my week.




2007-10-12

Permalink 02:07:20 pm, by Aaron Email , 98 words, 211 views English (US)
Categories: general

Doug Hard at Work

I apologize in advance for the sighted nature of this post, but I snapped a photo with my phone of Doug hard at work on a conference call with Microsoft and our development team, and I just had to share it.

Doug on the phone with Microsoft

If you can't see the picture, Doug is eased back in his chair with his feet up on the edge of his desk. Don't let the picture fool you; these calls affect the development of both Window-Eyes and Microsoft applications. But even the best have to kick back and take it all in stride sometimes.




2007-09-25

Permalink 12:02:02 pm, by Aaron Email , 649 words, 1153 views English (US)
Categories: general

Vista: Quick Access to Quick Launch

We love keyboard access to things, don't we? Of course we do, and we should. So here's another keyboard tip, this one specifically for Vista users: launch applications in your quick launch toolbar using the respective WINDOWS-# hot key. In my Quick Launch toolbar, I have the following applications in the following order:

  • Internet Explorer 7
  • Microsoft Outlook 2007
  • Firefox 2
  • Samsung PC Studio 3

I can quickly launch any of these applications by using the Windows key in combination with the number key that represents the position of the application. For example, if I wanted to launch Firefox, I could press WINDOWS-3, because Firefox is the 3rd application in my Quick Launch toolbar. If I wanted to launch Internet Explorer, I could press WINDOWS-1. WINDOWS-2 would launch Outlook, and WINDOWS-4 would launch Samsung PC Studio.

By default, the Quick Launch toolbar includes the Show Desktop item, so WINDOWS-1 would automatically focus the desktop. I removed that shortcut in my Quick Launch because WINDOWS-D does the same thing.

You can add new entries to the Quick Launch toolbar by bringing up the context menu on any shortcut, and selecting the option titled, "Add to Quick Launch." Say, for example, I wanted to add a shortcut to a command prompt in my Quick Launch toolbar. I would use the Vista start search edit box to find cmd, bring up the context menu for the cmd entry in the search results list, and select Add to Quick Launch. Viola! The command prompt shortcut is now in my Quick Launch toolbar.

The main restriction to this feature, however, is that you can only use the Windows key in combination with the 0 to 9 keys, meaning you can only launch 10 shortcuts. That's another reason why I removed the Show Desktop shortcut ? I already have a hot key to perform the task, so the shortcut is just taking up space. If you need more keyboard shortcuts to launch more applications, then I would suggest AutoHotKey. Some might argue that using AutoHotKey just for keyboard shortcuts is like taking a nuclear submarine out for some light fishing. In other words, there's a ton more stuff to the application than simple keyboard macros, but it gets the job done, and it's fairly easy to use.

So what if you have more than 10 shortcuts in the quick launch, and you don't want to remove any, but you want some of the more recently added shortcuts to show up first? The solution resides in renaming.

When I added the command prompt shortcut, it came up as my 11th shortcut, meaning I can't use the Windows key method to launch it. But, if I rename the shortcut from cmd to 1-cmd, then refresh the Quick Launch toolbar, it will show up as my 1st shortcut, and will then open with WINDOWS-1. In fact, this naming convention is a good way to remember which WINDOWS-# keystroke opens which application.

Although you can manage shortcuts in the Quick Launch toolbar, it's often easier to open an explorer window, and do your renaming there. The short cuts for the Quick Launch are stored in:

c:\Users\<username>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

I renamed several of the shortcuts in my Quick Launch toolbar as follows:

  • 1 - Command Prompt
  • 2 - Internet Explorer 7
  • 3 - Microsoft Outlook 2007
  • 4 - Firefox 2
  • 5 - Samsung PC Studio 3

All I need to do now is close the Quick Launch toolbar, then re-open it (to force a refresh), and Explorer will automatically sort the shortcuts by name, based on my new naming convention, meaning that the shortcuts will be listed in the order I want. Now, WINDOWS-1 opens a command prompt.

If you read my last blog entry, Take Command of Vista without Disabling UAC, you can add the admin command prompt shortcut to your Quick Launch toolbar, and have quick access to an elevated command prompt with a single keyboard shortcut.




2007-09-20

Permalink 02:54:32 pm, by Aaron Email , 1013 words, 1748 views English (US)
Categories: general

Take Command of Vista without Disabling UAC

Power users often find Vista's new security model a bit intrusive. Unlike your average user who rarely encounters a UAC dialog (because they usually don't perform tasks that require elevation), administrators, IT professionals, even those who like to poke and prod are easily annoyed by the pesky, "Are you really sure you meant to do that?" admonishment.

That being said, I believe that UAC has its place, and can be an important feature that helps keep random nasties from throwing autonomous frenzied infection parties. But what if we want the freedom to launch applications without interruption, while not sacrificing the potential benefit of UAC? After all, UAC is system wide: turn it off for you and it gets turned off for everyone, including your 13-year old who has the propensity to discover the most cantankerous of mishaps.

The solution is to keep a handful of administrative tricks up your sleeve that give you the power, rather than having to disable UAC, or leave the decision making up to the operating system.

The first and most evident way to launch an application with administrative privileges is to bring up the context menu of the executable, and choose the "Run as Administrator" menu item.

A second method is to type the name of the application in the Vista Start Search edit box, then instead of pressing ENTER to launch it, press CRTL-SHIFT-ENTER to launch with administrative privileges.

Although it's simple enough to launch an application with administrative privileges by using either of the previous two methods, you still have to accept a UAC prompt every time the application is run. So how do we create an environment where we can launch applications with administrative privileges without being hassled by UAC?

I have two potential solutions: an elevated command prompt, or an elevated task manager.

The command prompt is my best friend. Back around 1980, my father introduced me to his Sinclair ZX81. I was hooked (despite the fact that it took several minutes to load and save applications using a cassette tape), and I've been typing out what I want to do ever since. Even now, using a command prompt to launch applications is more natural to me than anything I can do by going "clicky-clicky." And here's the nifty part about command prompts: processes launched from command prompts inherit the command prompt's security. In other words, launching applications from an elevated command prompt means those applications will launch elevated as well.

We learned previously that launching applications from Vista's Start Search edit box with CTRL-SHIFT-ENTER will run them elevated. So all we have to do is enter cmd into Vista's Start Search edit box, press CTRL-SHIFT-ENTER, confirm a single UAC dialog, and then whatever we run from the ensuing elevated command prompt will also be elevated without additional UAC dialogs.

Ta da! We just created a nice little environment where we're free to do what we want (because we trust ourselves) without compromising the security of the system for everyone else. You still have the normal caveats to deal with. For example, if you've mapped a network share in Explorer, or a non-elevated command prompt, it probably won't be available in the elevated command prompt. Just remap (using the net use command), and you'll be all set.

I also mentioned using an elevated task manager. Instead of typing cmd in the Vista Start Search edit box, type taskmgr, followed by CTRL-SHIFT-ENTER. Confirm a single UAC, and then an elevated Task Manager will be running. "What's the point in elevating the utility used to shut down processes," I hear you ask. Just press ALT-F to bring up the File menu, and you'll hear what I'm up to. The first option is "New Task (Run)?" Press enter, and you're in a Run dialog box, much like if you had pressed WINDOWS-R, only this one will launch applications with elevated permissions (because Task Manager is also elevated). You can keep Task Manager minimized in the background, and use it to launch elevated apps whenever you need to without being bothered by the UAC.

The command prompt solution is a bit more intuitive, I think. But it's nice to have options. Speaking of the command prompt again, if you don't want to get in the habit of remembering CTRL-SHIFT-ENTER to launch an elevated command from the Vista Start Search edit box (and trust me, it's a hard habit to get into), you can create a shortcut to an elevated command prompt on the desktop by following these steps:

  1. Press WINDOWS-D to focus the desktop
  2. Press SHIFT-F10 to bring up the context menu
  3. Press W to select the New pull down
  4. Press S to select the Shortcut option
  5. In the "Type the location of the item" edit box, type cmd, followed by ENTER
  6. In the "Type a name for this shortcut" edit box, type Admin Command Prompt, followed by ENTER
  7. Select the newly created shortcut on the desktop, and press ALT-ENTER to access the shortcut properties. The Shortcut tab should be the selected tab control by default. If it is not, you'll need to select it
  8. Press ALT-D to open the Advanced dialog
  9. Press SPACE BAR to check the "Run as Administrator" check box
  10. Press ENTER, followed by ENTER again to save and close respectively

Now you have a shortcut on the desktop to an elevated command prompt. You could even assign a shortcut key to it, making access even easier.

It's true that you'll usually encounter one UAC dialog when entering this elevated environment, but after that, you're UAC free, and you haven't compromised the security of your system. Once again, you're back in control, and the world continues to be round. Of course, there's a good possibility that you can't be trusted yourself, in which case, you didn't hear any of this from me.



Permalink 10:49:54 am, by Raul Gallegos Email , 343 words, 199 views English (US)
Categories: general

Six Months At Last!

Yesterday the nineteenth of September marked the six month anniversary of my employment here at GW Micro. When I think of it, the word, "anniversary," is really not the exact correct term to use. I mean, doesn't the word, "anniversary," mean some sort of yearly celebration? Well actually, after looking up synonyms at http://www.thesaurus.com, it turns out that I can use the word "anniversary" because it is not specific to a yearly observance. Ah, there is a word, "observance." Or, how about, "recognition," or lastly, "triumph."

 

Well, whatever you wish to call it, as I was saying, yesterday was the six month marker for my employment. I can truthfully say that so far, I have not had a weekday where I wake up, not wanting to come to work. I am not just saying that because Doug or Dan will probably be reading this either.

 

I've been thinking of all the things I've helped with over the last few months. Of course I cannot mention them all here, but the short list below should be okay.

 

  • I got a chance to see firsthand the release of Window-Eyes 6.1.
  • I've gotten a chance to write up a few of my own KB articles.
  • I've gotten a chance to continue helping other GW Micro customers through our mailing lists.
  • I got a chance to help with the release of the Voice Sense.
  • I'm helping to shape the GPS program for the Voice Sense.
  • I've gotten to see that the summer of 2007 in Fort Wayne was really not that bad.

 

When I look back at my first few days here compared to now, other than some of the mystery not being there any more, it's not too bad. Ever since I started here, I've always been made to feel welcome. I just fit in as if I had been here for years. Well that feeling is still there. I'm not really good at putting my thoughts into words, so that is it for now. Please feel free to comment on this if you like.




2007-09-18

Permalink 12:52:50 pm, by Aaron Email , 146 words, 200 views English (US)
Categories: software

Blogging with Microsoft Office 2007

Jeff Bishop pointed me to a cool feature in Microsoft Office 2007: the ability to post directly to a blog without using the standard web interface. If you're a regular reader, you'll probably remember my post about Bytescout's Post2Blog, a stand-alone application that also lets you post without using the web interface of your favorite blog application. In fact, there are a pretty hefty number of blog utilities available. But having the ability to blog directly through your word processor certainly has many advantages, including a powerful spell checker, easily stylized text, and it's painfully easy to include text from other Office documents. Adding pictures, tables, links and more is a breeze with the Office 2007 ribbon. And with the unmatched support that Window-Eyes brings to Office 2007, it's the most accessible remote blogging solution I've experienced so far.

Good find, Jeff.




2007-09-04

Permalink 02:06:17 pm, by Aaron Email , 1250 words, 1625 views English (US)
Categories: dev, software

Protected PDFs - A Rant and Solution

Before I begin, let me make something perfectly clear: GW Micro does not condone the act of hacking or circumventing security restrictions explicitly applied to protect content in Adobe PDF files. If an author set a password on a PDF document, they probably did so for a reason, and we're not in the business of defrauding those trying to safeguard their livelihood.

With that in mind, on to my rant. We tout support for protected PDFs in Window-Eyes, so what the heck am I going on about? PDF protection isn't as clear as on or off. Using Adobe Acrobat, when an author makes the conscious decision to protect a PDF document, they can choose to add a password, restrict editing and printing, restrict copying images, text, and other content, and (hold on to your seats) restrict text access for screen readers. Yep, you heard that last one correctly. Adobe provides authors with the ability (pun intended -- you'll know why in a second) to explicitly deny access to assistive technology. This aberration is clearly marked with a check box labeled, "Enable text access for screen reader devices for the visually impaired." I applaud Adobe for taking the lead in creating accessible electronic documentation by providing access to PDF documents, but I will never understand the inclusion of an option that gives someone the ability to decide whether or not accessibility should exist. That check box should have never been created, and it needs to be removed. Accessibility is something that should not be decided by a flick of a mouse button from the hand of a sighted person who doesn't have the first clue as to why a blind person needs access to a PDF in the first place. Accessibility should not be optional, and that scenario is precisely the reason why I have no objections to providing a solution to access restricted information, assuming that you legally own the PDFs that you need access to.

Let me make more perfectly clear what I previously made perfectly clear: we are not looking to break the security model of PDF files. We’re not talking about removing passwords, or enabling the ability to modify the text of a PDF. We don’t want you to be able to print when you want to print, copy when you want to copy, or anything along those lines. Protected PDFs are a decent way to protect content, just like password protected Word documents, password protected ZIP files, secure web pages, emails, and so on. We are highly sensitive to the need for security, and even implement our own security models wherever we can. We are instead simply providing a solution that provides access to text that has been unduly restricted, most likely due to the ignorance of the individual who enabled the restrictive security methods. And, once the process is all said and done, it’s really no different than printing a PDF, scanning the result, and OCR’ing into your favorite word processor. In fact, if the printing security restriction has been enabled, this trick won’t work anyway.

I think I’ve disclaimed enough, so let’s move on. Although there are various means to access protected PDF text (many of them quite actionable if you don't legally own the PDF in question), I'm going to discuss one that uses the Microsoft Office Document Imaging feature available with Microsoft Office 2003 and up. The basic gist of the process involves printing a PDF to the Microsoft Office Document Image Writer, and then using the OCR features of the Microsoft Office Document Imaging application to provide the text to Microsoft Word.

First make sure you have Microsoft Office 2003 installed along with the Microsoft Office Document Imaging feature (which, I believe, is installed by default, at least with the Professional Edition of Microsoft Office 2003). Next, make sure you have either Adobe Reader or Adobe Acrobat installed, which you would need anyway to read non-protected PDF files. Finally, you'll need the PDF file that you can't read through normal Adobe means.

Here’s the step by step:

  1. Open the restricted PDF file.
  2. Press CTRL-P to print.
  3. Select the Microsoft Office Document Image Writer from the printer name combo box, and press ENTER.
  4. Enter a file name to print to. The extension should be .MDI (for Microsoft Document Imaging Format). Once the document has printed, close the PDF file.
  5. Open the Microsoft Office Document Imaging utility (usually located in the Start Menu, under Programs, Microsoft Office, Microsoft Office Tools).
  6. Press CTRL-O to bring up the Open dialog.
  7. Type in the path and file name of the MDI you saved in step 5, and press ENTER.
  8. Press ALT-T for Tools.
  9. Arrow down to Send Text to Word, and press ENTER.
  10. Press ENTER to begin the conversion with the default options. If you’re presented with a dialog stating, “You must re-run OCR before performing this operation,” simply confirm by selecting the OK button.
    The conversion process will begin. You can use the Window-Eyes progress hot key (CTRL-INS-B by default) to interrogate the progress.
  11. Once the conversion is complete, Microsoft Word will be open (for me, it opened in the background) with the text of the PDF file available for your perusal. Once you locate the Microsoft Word window, you can close the Microsoft Office Document Imaging utility.

There are a few things to note about this process.

  • The results of an OCR are only as good as the OCR engine. OCR is never a complete replacement for the original text. In other words, don’t expect perfect text accuracy.
  • This process does not remove password protection. If you have a password protected PDF, you will still need to know the password to perform this task.
  • If a PDF author has restricted copying text, this method will enable the OCR’d text to be copied. Acrobat itself warns about this when you enable the copying restriction: “All Adobe products enforce the restrictions set by the Permissions Password. However, not all third-party products fully support and respect these settings. Recipients using such third-party products might be able to bypass some of the restrictions you have set.”
  • If the printing security restriction has been enabled, you cannot print the PDF, meaning you can’t use this method to do what you want.

Although I’ve been discussing this method for use with restricted PDFs, it will also work fairly well with PDFs that contain nothing but images. If you don’t have access to another utility that boasts PDF OCR capabilities, this may be a good solution for you.

For example, I took a screen shot of a web page, and created a PDF out of it; the PDF contained nothing but an image of what was on my screen. I ran it through this process, and for the most part, the text on the web page was readable.

PDF files, in general, are very accessible despite their enigmatic stigma. Adobe even provides their own methods of tweaking accessibility settings (i.e. changing reading order, overriding tagged order, etc.). There’s even an Accessibility Quick Check in the Acrobat Reader (even more detailed Accessibility tools in the full Adobe Acrobat) for examining documents, and reporting problems to the PDF author.

Now you have an additional resource when you encounter a not-so-friendly PDF file that doesn’t live up to good accessibility standards.

Do you have any other tips for reading PDF files?




2007-08-31

Permalink 10:50:54 am, by Aaron Email , 443 words, 643 views English (US)
Categories: software

Review: Contact Keeper

Windows Vista users have access to Windows Contacts. Microsoft Outlook users have access to the Outlook Contact Manager. But what about the rest of us? What better way to keep track of contacts than with software named ContactKeeper?

Created by Tim Pieters, ContactKeeper is a simple way to keep track of all your acquaintances, be they family, friends, business associates, complete strangers that hand you business cards at trade shows, or anyone whose contact information is important to you.

When you first launch ContactKeeper, you're placed in a quick search edit box where, aptly enough, you can quickly search through your existing contact information. Creating new contacts is as easy as pressing CTRL-A. The add dialog lets you enter contact information such as name, address, numbers, email, and birthday (ContactKeeper also includes a birthday reminder, although the birthday calendar is not keyboard accessible).

Once you have a plethora of contacts, you can navigate through them simply by tabbing through the various controls on the mains screen. You can choose to send selected contacts a single email using CTRL-M, making mass mailings a breeze.

ContactKeeper also comes in many different languages, allows you to password protect your contact database, let's you change the date format, whether the names display as first name, last name, or last name, first name, let's you export selected contacts to text or XHTML, let's you use your contact database to create labels in Microsoft Word, automatically checks for new versions, and is completely free.

There are only two accessibility issues that I noticed, both of which can be overcome with Window-Eyes. First, in the Add dialog, there are buttons that contain images for adding new email and phone numbers. The images are a plus sign for adding, a pencil for editing, and a minus for removing. Fortunately, each button has a tooltip with the associated task, so labeling the graphics is a breeze (note that the edit and remove buttons are only enabled once an entry has been added).

The second issue can be found in the email dialog. When you select an address, then TAB, you'll just hear, "button." The reason is because there's a greater than sign on the button, and math punctuation is off by default. Once you turn math punctuation on, you'll hear both the greater than sign (used for adding addresses to an email list) and the less then sign (used for removing addresses from an email list).

Aside from those two very minor issues, ContactKeeper is a simple to use, accessible contact manager that's worth checking into if you have contacts to keep.




2007-08-15

Permalink 11:08:49 am, by Raul Gallegos Email , 1187 words, 839 views English (US)
Categories: dev, general

Today's E-mail Rant

I was going through all my E-mail today and noticed how many messages, both personal and mailing list related, had cryptic subjects or were just plain hard to read. Don’t get me wrong, I like helping out as much as the next guy, but sometimes a little netiquette can go a long way. The below are just some of my thoughts and suggestions when writing to the GW mailing lists or to the support box. Following these suggestions will go a long way for both the person who is asking questions and the person who is trying to answer them.

First off, as you all know, we don’t really like policing each individual message and all in all, the guidelines for the GW mailing lists are not so tight that people are hand slapped for every infringement. So, keeping this in mind, read on:

Topics Discussed

As you know, the GW-info lists and the support box are for GW Micro products. There are always going to be gray areas because of the fact that our products such as Window-Eyes interact with your computer and with other applications. However, asking how to install memory on your computer, or how to burn cds on your computer are not really GW Micro product questions because they are not related directly to our products. Now, in the example of burning cds, you could ask the following and it would be related. "How can I make Nero more accessible with Window-Eyes so that I can burn a cd?" Again, this is just an example. In short, messages which are about using other products or learning new things are better answered on other lists which may specialize in such topics, and messages which ask how to use our products, report problems with our products, giving tips and tricks on our products, ETC, are appropriate and very much welcome.

Message Subjects

It is very important for your message subject to reflect what it is you want to discuss. A generic message subject like the following examples are generic and most likely won’t get answered as quickly.

v help

v question

v still waiting

v hello

v no subject

v answer please

v can I do this

v bug

Many people are subscribed to various lists and get over 300 messages per day. Because of this, they depend on the message subject. Let’s say that a new user of Thunderbird and Window-Eyes posts a message to the list because he needs help. However the message subject is simply, "help." Now, let’s say that someone who is real good with Thunderbird is going through all her messages later that day. She gets well over 300 messages and so does not have the time or the inclination to open every single message. So, instead, she just checks out the message subjects and if someone is asking about something she is familiar with, she’ll open the message and answer it. Because the person asking for help on Thunderbird and Window-Eyes just used the word help in the subject, she just skips over that message, not knowing someone was asking for help with Thunderbird. Had the person written something like, "Help with Thunderbird and Window-Eyes 6.1" The person who is good at Thunderbird would immediately know by the message subject that the person who needs help is using Thunderbird and Window-Eyes 6.1. In most cases, she would not skip the message and then the question would be answered.

We the staff at GW Micro read all messages regardless of the subject, but many times we too have no idea what the message will be about until after we open it because of the subject being so vague. So, in short, try to practice good netiquette and put an appropriate and detailed message subjects when posting your messages. In fact, I personally would put the name of the program and version number along with the version of Window-Eyes I’m using, but that is just me.

Giving Detailed Steps

Many times when we read messages about problems people are having, we may not be able to duplicate the problems. As you know, we must be able to duplicate the problem in order to take step