List of ComputorEdge Sponsors

San Diego ComputorEdge Sponsors

Colocation and Data Center

redIT

With approaches like smart security, customized colocation and an extensive range of managed services, redIT helps you intelligently leverage IT.

Macintosh Specialists

Maximizers

Serving San Diego County Since 1988 * Onsite Macintosh Service for Home and Small Office Needs * ACSP: Apple Certified Support Professional ACTC: Apple Certified Technical Coordinator Apple Consultant's Network

Repair General

Hi-Tech Computers

Notebooks, Monitors, Computers and Printers We Buy Memory, CPU Chips, Monitors and Hard Drives Windows 7 Upgrades Phone (858) 560-8547

Colorado ComputorEdge Sponsors

ComputorEdge™ Online — 11/28/14

Click to Visit ComputorEdge™ Online on the Web!

Bad High-Tech Holiday Gift Ideas

Thinking of buying a high-tech present for someone you know? Forget it!

Magazine Summary

List of ComputorEdge Sponsors

Digital Dave

by Digital Dave

Digital Dave answers your tech questions.

Corrupt BIOS on Motherboard; Use Google Chrome to View PDFs and Microsoft Office Files; Windows 8.1 Capabilities—Do You Need a Microsoft Account?

High-Tech Not to Buy Holiday Shopping Guide

by Jack Dunning

A List of Surprises People Don't Want

If you think that you're being helpful by giving high-tech this holiday season, think again! Plus, a look at Amazon's new price scanning smartphone app which does logos, box cover images, and the usual bar codes.

A Simple Way to Find Out Where in the World That IP Address Is Located

by Jack Dunning

Find IP Addresses in E-mail, Documents and Web Pages, Then Automatically Locate Them!

Have you ever wanted to know where that Spam is coming from or the geographic location of an IP address? This short AutoHotkey script extracts IP addresses from any selected text and downloads its world location from the Web.

Wally Wang's Apple Farm

by Wally Wang

Waiting for the Apple Watch

Waiting for the Apple Watch; Twine: An Interactive Story Telling Creator; Laying the Foundation for the Future; Running Linux on OS X; Free Graphics Programs; Automatically Update.

Editor's Letters: Tips and Thoughts from Readers

by ComputorEdge Staff

Computer and Internet tips, plus comments on the articles and columns.

"GIF Extension," "Malwarebytes Anti-Malware Slowdown," "Re: Paul's Observation"

Send mail to ceeditor@computoredge.com with questions about editorial content.

Send mail to webmaster@computoredge.com with questions or comments about this Web site.

Copyright © 1997-2014 The Byte Buyer, Inc.

ComputorEdge Magazine, P.O. Box 83086, San Diego, CA 92138. (858) 484-1998

Click to Visit ComputorEdge™ Online on the Web!

Digital Dave

“Digital Dave answers your tech questions.”
by Digital Dave

Corrupt BIOS on Motherboard; Use Google Chrome to View PDFs, and Microsoft Office Files; Windows 8.1 Capabilities—Do You Need a Microsoft Account?

Corrupt BIOS on Motherboard

Dear Digital Dave,

I have followed your articles for more years than I can count! I have tremendous respect for your opinions.

That takes me to why I am writing. I can't seem to be able to clear or update my BIOS on an MSI laptop. It has an Award BIOS and got corrupted somehow. I can access the DVD using F11 during boot. I was able to run a recommended program called Memtest86 successfully to eliminate any memory problems.

The BIOS lists both my hard-drives (500GB each), my DVD player, and a PXE ROM. It also lists 62 other Hard drives not currently installed, and no USB selection to boot up to. I formatted a USB drive with FAT32 and transferred the AFUDOS and flash files to USB drive and it shows on Windows explorer as well as files! Any help would be appreciated.

I remember when you could jumper a desktop on motherboard to short and reset BIOS. I miss being able to do that. Specs: MSI GT780DXR w/12GB memory, Intel I7 2670QM CPU, W7-64bit sp1, 2-500gb HD, 17" Gaming computer.

Bill Massicotte

Richmond, Indiana

Dear Bill,

Tricky.

There's often an option in the BIOS to reset to default or factory settings. If that fails, check the motherboard manual and see if there is a jumper. There might be one (although you didn't find one). Failing that, take out the battery and put it back in after a few minutes (as reiterated below). Last resort, try to flash a new BIOS (the same version or update it). I think it might be a hardware issue. The USB isn't showing and the extra drives report is weird.

The standard method for resetting the CMOS which doesn't have a jumper on the motherboard and doesn't respond to a BIOS reset is to turn off the system, unplug the power, and remove the big button battery. Wait five minutes or go get a cup of coffee. This should return the BIOS settings to the firmware defaults.

Hopefully, this will do the job. Suggestions from anyone who has seen similar problems are welcome.

Digital Dave

Use Google Chrome to View PDFs…and Microsoft Office Files

Dear Digital Dave,

A quick tip that I just figured out. Rather than use Adobe Acrobat to view PDF files, and rather than download a scaled down reader, I pointed PDF files to be opened by my already installed Google Chrome. I'm sure this would work with Microsoft Word files as well for someone who does not have the Microsoft Office suite installed.

Paul Anthony Vild

San Diego, CA

Dear Paul,

Google Chrome has a built-in PDF viewer, but it does not automatically support Microsoft Office files. For that you need a special Chrome extension available for reading and editing Office documents (DOC, DOCX, XLS, etc.) called "Office Editing for Docs, Sheets & Slides." Once the extension is installed then the default programs for opening the files can be changed to Chrome in the same manner that you used for PDFs. This may be good for people who don't own Microsoft Office.

However, the editing features in the Chrome Office extension may be limited compared to the free program suites OpenOffice and LibreOffice which are also compatible with Microsoft Office formats (LibreOffice more so than OpenOffice).

Digital Dave

Windows 8.1 Capabilities--Do You Need a Microsoft Account?

Dear Digital Dave,

Great information for many years. Thanks.

I'm about to buy a Windows 8.1 desktop. Will I be able to download and run Firefox, OpenOffice, Thunderbird, etc. on a Windows 8.1 PC? Also, is there an advantage to setting up a Microsoft account if Microsoft apps are not being used?

Don Kav

Boulder, Colorado

Dear Don,

Yes, you should be able to install all of your Windows programs without a problem. I have found very few issues and some installed easier on Windows 8.1 than earlier versions of Windows. While I don't use Thunderbird, I currently have Firefox, Google Chrome, LibreOffice (OpenOffice compatible, only a little better compatibility with Microsoft Office), and quite a few of my old standards installed in Windows 8.1.

A better question, "Is there any disadvantage to setting up a Microsoft account?" Some people worry about privacy issues, but you don't need to divulge anything other than an e-mail address to set up an account. If you've ever had a Hotmail e-mail address or Windows Live account, then you already own a Microsoft account. Once you have it, OneDrive (formerly SkyDrive and integrated in Windows 8.1 with free Cloud storage—15GB) and the apps are automatically available. Plus, a Microsoft account will sync across multiple devices—as almost any other type of account does (e.g. Apple, Google).

Even if you already have other syncing accounts such as Apple or Google, the Microsoft account gives you access to all the free Modern interface apps, OneDrive, and syncing of devices (if you need it). Even though I use mostly Google and Dropbox, I don't see any reason to not have the other features available. It is almost more of a hassle to only use a local account with Windows 8.1.

There are some people who don't want the annoyance of the Modern interface apps, but for the most part those programs are easy to ignore. Using a local account is much more like the old Windows environment, although since the introduction of Windows 8.1 Upgrade 1, it's possible to almost totally ignore the Modern interface. (Things do pop-up occasionally when you move the mouse to the wrong place on the screen, but it's expected that this will be resolved in Windows 10 next year. Windows 10 is supposed to be a free upgrade for Windows 8.1 owners.)

Unless someone has particularly compelling reasons not to use a Microsoft account, I would suggest getting one…if you don't already own one.

Digital Dave

High-Tech Not to Buy Holiday Shopping Guide

“A List of Surprises People Don't Want”
by Jack Dunning

If you think that you're being helpful by giving high-tech this holiday season, think again! Plus, a look at Amazon's new price scanning smartphone app which does logos, box cover images, and the usual bar codes.

It's Black Friday and one place I'm not is out shopping. I don't particularly like crowds and I hate waiting in line. Fortunately, retailers are anxious to make Black Friday less significant. Some are planning to open on Thanksgiving while others, such as Walmart, have started matching other Black Friday deals (Target) early. Overtime there will be many more early starts and later extended offers. But, then there are always the post holiday sales.

High-Tech You Shouldn't Buy for Someone Else

I thought of putting together a list of high-tech products to put on your shopping list, but, as I perused the available products I realized that no one should be buying many of these products for anyone other than themself. The gift certainly can't be given as a surprise because the presenter may never be forgiven. The Internet is replete with articles about the devices that you might buy for someone else, but the reality is that most people only buy the technology for personal use. I've put together a list of high-tech product you should not buy for anyone else. This will save you some time and possibly a relationship or two.

Smartphones

Unless you're getting one for your five-year-old kid, it's a bad idea to surprise anyone with a smartphone. The smartphone decision is personal and should never be made without consulting the recipient, i.e. "Which one do you want?" Otherwise you risk hearing it about everyday for the duration of the two-year cellular contract. Many people may want an iPhone 6 just because it's Apple (see Figure 1). Just as many will want a Galaxy (or other Android) because it's not Apple. Making this decision for another person could be a big mistake.

Figure 1. There is no point in buying anyone the Apple iPhone 6 because they either already have it on order or they don't want one.

A smartphone is a very personal item. Someone must be intimate with a person before they'll allow them to hold their phone. Even then smartphone owners tend to get very nervous until it is safely back in their own hands. If someone wants to show you a picture on a smartphone, notice, as it's held up in your face, how tightly they grip it. Don't try to grab it.

No, smartphones are only on the list of things that we plan to buy for ourselves or, after serious consultation, a loved one. It's surprising how good we can be to ourselves during the holiday season.

Big Screen HDTVs

It takes someone with a pretty big ego (and pocket book) to surprise another person with a new 60" TV. My guess is that it almost never happens unless a ton of hints have been dropped. Even then the recipient wants some say in the type and size of television.

Figure 2. In most cases, a new television is on the list of things that you wouldn't mind someone to buy for you…as long as you get to pick it out.

Sure there are plenty of people who would like you to give them a television…but it better be the one that they want. In my experience most TV gifts consist of passing on the old one when someone buys new equipment for themself. Take this off your gift list. You know you're only reading the reviews to help you decide which one you want.

Recently a person I know lamented how after eyeing a particular product, a relative, who could well afford it, would offer to buy the item for him. The problem was that the relative would always go cheap, buying a substandard product. The recipient of the generous offer couldn't even purchase the brand he wanted because the other party might be offended. Many may fault the recipient for looking a gift horse in the mouth, but a person shouldn't tell people that he or she will buy a particular product for them, then go cheap with a lesser alternative.

Thumb Drives

Unless it's a flash drive in the shape of a bobble head, take thumb drives off your list of holiday gifts. It's not that they aren't useful and relatively inexpensive…they are. The problem is that every year for the last ten years, you've been giving thumb drives to everyone. (So has everyone else!) People have so many of these little novelties sitting on their desk right now that they don't know which holds what data.

Figure 3. If you insist on giving out thumb drives, make sure that they are unique or send some obvious message.

I have two thumb drives that I actually use. One I leave plugged into my workhorse computer for the files it contains and the other I use to transfer scans from the printer to one of the computers. (I find it easy to use SneakerNet with printer scans because I'm not forced to decide on which computer I want to save the scan.) The second thumb drive only holds 1GB of data, but it's easily recognizable because it's shaped like a TV remote control. (I picked it up free at the Open Source show.) When traveling, I carry that one in my pocket. Yes, someone could give me another one, but it better not look like all the other ones already sitting on my desk. It might get lost.

SD cards fall in a category similar to thumb drives, except, thankfully, no one thinks of giving them as a gift. I also have a bunch of them sitting on my desk. No doubt one has some very important information stored on it.

I know that the temptation is great because you can get thumb drives in a ten-pack, but people know that you're giving them because it was convenient, cheap, and you couldn't think of anything else.

Tablet Computers

The only reason not to give a tablet computer is everyone already has two or three of them lying around the house. There is that original iPad which is used to read the newspaper, cheat at crossword puzzles, and pass around at family gatherings. Then you will see a Kindle Fire on the coffee table because, "Gosh, it was just so doggone cheap." Of course, there is the Android tablet that you gave last year.

Figure 4. You can never have too many tablet computers.

The truth is that a tablet is always a good gift until it finally reaches the point where there is one on surface in the house. When watching TV there should be a tablet within everybody's reach. Who wants to walk to the bedroom to get the iPad off the bed stand just to look up some vaguely familiar actor/actress?

Unlike smartphones, tablets are communal devices freely shared. If someone is visiting and, for some strange reason, doesn't have a smartphone, you can always offer the use of one of your tablets. (Little Acknowledge Fact: Smartphones—even the big ones—suck for surfing the Web. Any tablet is way better. People will prefer to borrow yours rather than agonize with reverse pinches and awkward pokes on a smartphone just to make the text readable and links clickable.) If people know you have a tablet in the house, it's not consider rude to ask you if they can use it to checkout Facebook account or look up a recipe. In fact, if you do know someone who doesn't have a tablet, buy one just so you can use it when visiting. "It's not for you! It's for me!"

Smartwatches

No one really wants a smartwatch. People are only buying one because it will give off a signal if their heart stops beating. (At least I assume that a heart stopping alarm would be a standard feature. If not, then what's the point?) People buy these wrist devices either because it makes them feel healthier or they are geeks, but they should be forced to buy it themself. Give it as a gift and it will likely end up in a drawer somewhere.

Figure 5. People who have never worn a watch (because they use the clock on their smartphone) get claustrophobic when something is strapped to their wrist. (I just made that up, but it's probably true.)

"Put on that smartwatch that Uncle Harry gave you! He's coming over at four this afternoon!" "Aw, Mom!"

Weird High-Tech Devices

There are plenty of strange high-tech devices available. This particular Holiday Gift Guide is full of things that would likely end up in a closet or a box in the garage. A few examples are: 3D Printing Pen; Ringly Smart Jewelry (more wearable devices); Toymail Wi-Fi Mailman - Fairfax the Fox; InstaWatch (JPG watch face); Mushroom LED Lamp; Wireless Smartphone Photo Printer (some people haven't yet given up on printing their own pictures); Wooden USB Flash Drive (really?); Touchscreen Gloves (for cold weather texting); iPad Telephoto Lens (don't ask); and Paperback Sticky Notes (which adhere to the back of a smartphone—ironic low-tech high-tech).

Amazons New Shopping App

A few weeks ago I discussed Amazon's smartphone app for scanning bar codes when in local stores. In particular, Target is one of the few retailers who will match Amazon's prices. The other day I was looking for Lego at Target for one of the grandkids when I found the particular set specified by the parents. I pulled out my smartphone to check the Amazon price. I was surprised to find that the scanning app had changed.

Previously, I needed to align the bar code between two lines and hold it stationary while the app registered the image, then it returned a result. I found holding the smartphone steady enough a little challenging, but usually managed to make it work. But this time, there were a bunch of dots bouncing around the screen, picking up the edges of whatever image it found (bar code, logo, picture on the box). The updated Amazon app quickly found the product. While priced at $30 at Target, Amazon was offering the set for about $24. I took the Lego set, and the couple of other items I was purchasing, to Targets's Customer Service to get the price match discount. I also bought a couple of other things not matched at Amazon.

[The image at left shows a tube of toothpaste which I scanned while brushing my teeth. (Notice all the little dots of light which seek out the edges of the images.) While the app did find a similar product at Amazon (the price is for a six-pack) it found citrus rather than mint flavored. Later in the day I scanned the logo on the front of a Coke dispensing machine and it came up with a Coca-Cola: The Cookbook.]

The reason for using the new and improved Amazon app has nothing to do with buying from Amazon. It has everything to do with getting the best price at your local retailer—that's if they will price match Amazon—and I think more and more stores will. Walmart recently started price matching Amazon. Before then I wouldn't even consider looking at Walmart for price matching products that Amazon might carry.

Apparently there are many other price matching apps for smartphones, but I haven't tried any others. It does help if a store has free Wi-Fi. Then you don't need to use your smartphone's data plan allotment while scanning everything in the store.

Just Buy Gift Cards

With the exception of kids, who must receive a solid object as a present, it's best to buy gift cards at stores you know the recipient frequents. Some people think this is the lazy person's approach to shopping (and it probably is), but when someone sees a gift card, they envision all the things that can be bought with the card. It's better than writing a check which will be deposited in the bank and disappear in commingled funds. Forget about giving high-tech and let the adults make their own buying decisions.

Jack is the publisher of ComputorEdge Magazine. He's been with the magazine since first issue on May 16, 1983. Back then, it was called The Byte Buyer. His Web site is www.computoredge.com. He can be reached at ceeditor@computoredge.com. Jack is now in the process of updating and compiling his hundreds of articles and columns into e-books. Currently available:

Recently released is Jack's FREE AutoHotkey book, AutoHotkey Tricks You Ought to Do with Window, available exclusively at ComputorEdge E-Books in the EPUB for e-readers and tablets, MOBI for Kindle, and PDF for printing formats.

ComputorEdge E-books offering is his AutoHotkey Applications, an idea-generating intermediate level e-book about using the AutoHotkey Graphical User Interface (GUI) command to write practical pop-up apps for your Windows computer. (It's not as hard as it sounds.)

Hidden Windows Tools for Protecting, Problem Solving and Troubleshooting Windows 8, Windows 7, Windows Vista, and Windows XP Computers.

Jack's A Beginner's Guide to AutoHotkey, Absolutely the Best Free Windows Utility Software Ever!: Create Power Tools for Windows XP, Windows Vista, Windows 7 and Windows 8 and Digging Deeper Into AutoHotkey.

Our second compilation of stupid ComputorEdge cartoons from 2011 and 2012 is now available at Amazon! That Does Not Compute, Too! ComputorEdge Cartoons, Volume II: "Do You Like Windows 8 or Would You Prefer an Apple?"

Special Free Offer at ComputorEdge E-Books! Jack's Favorite Free Windows Programs: What They Are, What They Do, and How to Get Started!.

Misunderstanding Windows 8: An Introduction, Orientation, and How-to for Windows 8 (Seventh Edition)!

Windows 7 Secrets Four-in-One E-Book Bundle,

Getting Started with Windows 7: An Introduction, Orientation, and How-to for Using Windows 7,

Sticking with Windows XP—or Not? Why You Should or Why You Should Not Upgrade to Windows 7,

and That Does Not Compute!, brilliantly drawn cartoons by Jim Whiting for really stupid gags by Jack about computers and the people who use them.

A Simple Way to Find Out Where in the World That IP Address Is Located

“Find IP Addresses in E-mail, Documents and Web Pages, Then Automatically Locate Them!”
by Jack Dunning

Have you ever wanted to know where that Spam is coming from or the geographic location of an IP address? This short AutoHotkey script extracts IP addresses from any selected text and downloads its world location from the Web.

If you're curious about where in the world that e-mail came from or want to pull Internet IP addresses out of any document or window and locate it by city, state, and/or country, then you're going to like this one. This quick little AutoHotkey app extracts any IP found in selected text, then looks up where the servers are located geographically. I call the AutoHotkey script IPFind.ahk.

One of the reasons that people don't use Regular Expressions (RegEx) more often is because it's not always easy to see where they will help. This particular application is ideal for two different uses of a RegEx. The first is extracting IP addresses from any selected text. We don't know what the addresses will be or how long they are, so it would be difficult to do with the usual AutoHotkey tools. I'm not saying it can't be done with the other AutoHotkey commands, but the code is likely to get pretty convoluted. The beauty of using a RegEx is that the parsing can be done with only one line of code. While RegEx is often mysterious to the newbie, with a little attention it's much easier than it looks.

If you are unfamiliar with Regular Expressions in AutoHotkey, then you might like to review this previous column, "Easy Regular Expressions (RegEx) in AutoHotkey", for a simplified introduction to AutoHotkey Regular Expressions. (New to AutoHotkey? See our Introduction to AutoHotkey! )

The second use of RegEx is when the script reaches out to the Web to retrieve the IP's geographic location. A mass of data is returned and the city, state, and/or country needs to be culled out of it (if it's available). Again, while this data could be extracted with the usual AutoHotkey commands and functions, it's much easier with AutoHotkey RegEx functions.

Extracting IP Addresses from Any Document

Suppose you receive a Spam e-mail and would like to know where it came from. In many e-mail programs, you can find the originator's location by holding down the ALT key and hitting RETURN. That opens the e-mail's Property window. (You can also right-click on the message header and select Properties from the menu.) In the Details tab, the basic address and routing information is found (see Figure 1 for a Windows Live example). (In some e-mail programs you may need to view the source code which in Windows Live is the same as clicking the Message Source… button in the Properties window.)

Figure 1. In Windows Live the Details tab of the e-mail Properties window shows the sending server's IP address.

The IP address is buried inside a bunch of other chaff. The plan is to use a RegEx to extract that IP, discarding the remaining text. The first step in the AutoHotkey app will be selecting (highlighting) the target text with either CTRL+A (Select All) or by dragging the mouse over the target text while holding the left mouse cursor. (In Windows Live Properties window above, CTRL+A doesn't work, so you will need to drag the mouse to select.)

Once the text is selected, the following AutoHotkey script will find and display the IP:

^!I::

Clipboard =

SendInput, ^c

ClipWait

FoundPos := RegExMatch(Clipboard, "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b" , IPAddress)

MsgBox %IPAddress%

Return

When this AutoHotkey script runs after selecting the text in Figure 1, the pop-up message shown on the left appears displaying the first IP address—if any.

After loading the script, the hotkey combination CTRL+ALT+I , I for IP, (^!I) is used to activate the routine. The first step is to clear the Clipboard (Clipboard =). This makes it possible to later use the ClipWait command, which needs an empty Clipboard to work properly, rather than an arbitrary Sleep command time interval to pause the script while the Clipboard loads.

This AutoHotkey snippet uses the Windows copy hotkey, CTRL+C, SendInput, ^c to capture the selected text into the Windows Clipboard and the ClipWait command pauses until there is data detected in the Clipboard.

The RegExMatch() function is used to find the first IP address in the stored Clipboard text (RegExMatch(Clipboard, "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b" , IPAddress)).

Note: At this point in the scripts evolution, the result of this RegExMatch() function does not need to be set equal to FoundPos, but in later iterations FoundPos—the starting position of the matched string—will be needed. In this example, calling the function by itself:

RegExMatch(Clipboard, "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b" , IPAddress)

would suffice since it stores the matched text from Clipboard to the variable IPAddress.)

This RegEx is relatively simple since IP addresses use a repeating pattern. Each IP consists of four sets of numbers separated by a dot. Each number is a range between 0 and 255. Each set must have at least one digit and no more than three. Since we only need to identify the pattern for purposes of extracting the match it's unlikely that the RegEx will need to restrict the numbers to between 0 and 255. It would be rare to find a pattern that fits the four numbers with the three separating dots which isn't an IP address. For example, the current expression would see "597.34.201.99" as a match even though "597", which is not between 0 and 255, would not be found in any IP address—but that is unlikely to occur. At the end of the column, an expression which accounts for this discrepancy and does complete IP validation is offered, but for now the current expression will do the trick.

The heart of this RegEx is the \d{1,3} repeated four times. The \d is the expression for any digit (0-9). The following {1,3} operator tells RegEx to use the previous match at least once and no more than three times in a row.

Since the dot (.) is normally a RegEx wildcard (match any character), it needs to be escaped with a backslash (\) when only a dot should be matched. Thus \. means a dot must follow the number to continue the match. This is inserted two more times for a total of three dots \d{1,3}\. between the four sets of digits. The string is terminated with the digit pattern \d{1,3} making a total of four.

The entire expression is bound with word expression \b at the beginning and end. This prevents the pattern from being recognized within another word. It can be at the start of a string, at the end, or next to any type of punctuation.

RegEx Tip: Since the same pattern is repeated three times, the expression above can be shortened in the following manner:

FoundPos := RegExMatch(Clipboard, "\b(\d{1,3}\.){3}\d{1,3}\b" , IPAddress)

By enclosing the repeated expression is parentheses (\d{1,3}\.) and following it with {3}, the expression is repeated three times (\d{1,3}\.){3} thus shortening the line of code.

Matching More Than One IP Address

Since we started accepting PayPal on the ComputorEdge E-Books Web site, there are many orders with no address information. This is because PayPal protects the consumer's information by authorizing and processing the payment directly on its own site. The address information is not important from a business point of view because we have no intention of doing anything with it, but I am curious where the orders originate worldwide. Many of the ComputorEdge E-Books orders come from areas outside the United States. Information which is captured includes the e-mail address (needed to deliver the download links), name, and IP address. The plan is to use the new IPFind.ahk script to query the home country of any order by using the IP. Plus, it would be convenient to query a group of IPs at the same time. To do that the app needs to find all of the IP addresses in any selected text (see Figure 2).

Figure 2. The text is selected from a group of orders listed at the ComputorEdge E-Books shopping cart site which includes multiple IP addresses.

Due to the design of many Web pages, selecting multiple items usually includes many other unwanted sections. But using a RegEx makes it possible to pick out the relevant data. The key now is to find all on the IPs—not just one.

The RegExMatch() function above only finds the first match in a string—then it stops looking. If you want to find all of the matching strings (in this case IP addresses), then it's necessary to put the snippet of code in a loop and adjust the starting position after each match found. This is the point at which the variable result FoundPos is needed:

^!I::

Clipboard =

SendInput, ^c

ClipWait

CountIP := 1   ; counts the number of IPs found

Next := 1         ; used as the position to start the next match search

Loop

{

FoundPos := RegExMatch(Clipboard, "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b", IPAddress%CountIP%, Next)

Next := FoundPos + StrLen(ipaddress%CountIP%)

If FoundPos = 0

Break

CountIP++

}

There are two new variables added to the script. The first variable is CountIP which is used to keep track of each IP address found and save it in the variable IPAddress%CountIP%—which creates a pseudo-arrays of the IPs (e.g. IPAddress1, IPAddress2, IPAddress3,…). This set of variables will be used later in the Internet look up of each IP location.

The second variable is Next which calculates the starting position of each new match search in the text. The Next parameter in the RegExMatch() function shown is the point at which the RegEx will begin searching in the text string. Without this incrementing parameter, the function would always return the same first IP and result in an infinite loop.

Notice that the Loop command does not include any parameter to tell it how many times it should repeat. That means that inside the loop, there needs to be a way to escape or break out. Otherwise, the loop continues endlessly (or until the process is killed). That's the purpose of the following:

If FoundPos = 0

Break

The variable FoundPos, the result of the RegExMatch() function, contains the starting position of any RegEx match found. If the result is 0, then no match was found in the string. Eventually, as the script works through the text string, there will be no match and FoundPos will equal 0. Then the loop will Break continuing the script. This prevents an infinite loop.

After a match is found, the starting position for the next match search in the next loop iteration must be calculated and stored to the variable Next. The new starting position is the sum of the last starting position plus the length of the last matched string (Next := FoundPos + StrLen(ipaddress%CountIP%)) using the StrLen() function to calculate the IPs length. Once no more matches are found in the remaining string portion, FoundPos is set to 0 and the loop breaks.

The operator CountIP++ is an abbreviated method for expressing CountIP := CountIP + 1 and is the same as CountIP += 1 each of which increment the variable CountIP by one. This is used for both counting the number of IP addresses found and creating the pseudo-array variable IPAddress%CountIP% in the next iteration of the loop.

The matched IP addresses are now saved in the pseudo-array IPAddress%CountIP%. Before displaying them in a message box we want to look up the location of each.

Finding the IP Address Location

If you type "lookup 72.80.151.32" into a Google search, you will get a list of sites for getting more information about a particular IP. I perused a few of these sites and finally decided to use this IP Address Lookup (see Figure 3) as the resource site for retrieving the geographic location of the IP with the FindIP.ahk script. I probably could have used almost any other site, but this one seemed good enough. It includes a fairly complete list of city, state, and country (when available).

Figure 3. This IP Address Lookup site shows the location of the server when an IP is entered into the search field.

All we need to do an IP lookup is the format of the Web site's search URL. In this case the following finds the IP 72.80.151.32 on the selected site:

http://ip-address-lookup-v4.com/lookup.php?host=ip-address-lookup-v4.com&ip=72.80.151.32&x=31&y=29

This URL string is found by doing any IP search with the built-in search field, then copying the address line in the URL window of the browser. The only part of the URL which will need to change for a new search is the IP address (72.80.151.32) marked in bold in the URL above.

Note: The Web site I selected does not always deliver a result for city, state, and/or country. There may be other sites with more complete information. If so, then similar techniques as those shown here can be used to download the data.

The trick now is pulling the pertinent data from the Web site without being forced to open the page for each IP and enter the new IP address. This could become tedious, especially if we selected the city, state, country data in each page with a mouse. Fortunately, there are AutoHotkey techniques which allow the retrieval of Web page data without ever opening the page in a Web browser.

Pulling Data From a Web Page Without a Web Browser

One such AutoHotkey feature for retrieving data from the Internet is the UrlDownloadToFile command. This command allows a script to download a Web page and save it in a file, But what is actually downloaded is not what you see in a Web browser, but the source code which the browser interprets—all in text. For example, the source code for the Web page shown in Figure 3 is the code shown in Figure 4.

Figure 4. Source code interpreted to create the Web page shown in Figure 3. Only the highlighted text is pertinent to the IPFind app.

The fact that the source code is all text makes the job easier. After inspecting the code in Figure 4, it's easy to see markers which can be used with the RegExMatch() function to extract the city, state, and/or country. It can quickly be seen that the target words are preceded by the word and code combination "Near: <span class="blueish">" and followed by the code "</span>" in every search result page. That is all we need to know to write a RegEx which will extract the data:

RegExMatch(WebPageData, "Near: <span class=""blueish"">(.*)</span>", Location)

By using the unique words and text as keys for finding the data the wildcard .* captures everything between the starting keys and ending keys, then stores it in the variable Location. This is demonstrated by using Ryan's RegEx Tester shown in Figure 5.

Figure 5. The RegEx Tester shows how to capture data specific data from the source code for a Web page by using the hard coded words and HTML as markers.

Rather than use the UrlDownloadToFile command, I opted for the little more enigmatic example for downloading the Web page directly to a variable shown on the same documentation page. If I had used the cited command, then the script would first save the data into a file, then need to read it back into a variable for parsing. That would add disk access time to the process and was unnecessary since none of the data would be saved. I turned the code into a function (GetLocation()) which can be reused for each IP found in the original text:

GetLocation(FindIP)

{

IPsearch := "http://ip-address-lookup-v4.com/lookup.php?host=ip-address-lookup-v4.com&ip=" . FindIP . "&x=31&y=29"

whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")

whr.Open("GET", IPsearch)

whr.Send()

Sleep 100

version := whr.ResponseText

RegExMatch(version, "Near: <span class=""blueish"">(.*)</span>", Location)

Return Location1

}

I would like to say that this function is self-explanatory, but it isn't. Suffice it to say that I copied it from the online documentation and modified the pertinent parts for the purposes of the IPFind.ahk script. I created the variable IPsearch to store the URL of the Web page. Notice that the variable FindIP is the IP address fed to the function by the main script. IPFind is concatenated inside the URL discussed above so the page for that specific IP will be downloaded.

While I have previously used the ComObjCreate() function in other scripts (mostly copied from scripts found on the AutoHotkey Forum), I don't have enough of an understanding of how everything fits together to offer a reasonable explanation. (That may come at sometime in the future when I dedicate time to figuring out how ComObject works in AutoHotkey.) For now all I can say is it works and downloads a Web page to the variable version. I did add the Sleep command to pause the script since an Internet download can take a little time. If you find that you are getting no results for an IP that should work, then try increasing the Sleep time.

The RegExMatch() function stores the first backreference (the matched data within the parentheses) in the first array variable Location1. If there were more backreference (sets of parentheses), then they would be stored in successive variables (Location2, Location3, …). This value (the location of the IP address) is returned to the main script.

Displaying the Results

In order to display the results another Loop command is used to piece together the information:

If IPAddress1

{

IPList := ""

CountIP--

Loop, %CountIP%

{

CheckIP := IPAddress%A_Index%

WhereIs := GetLocation(CheckIP)

If StrLen(CheckIP) < 11  ; to align columns for different length IP addresses

Tab := "`t`t"

Else

Tab := "`t"

IPList := IPList . IPAddress%A_Index% . Tab . WhereIs . "`r"

}

}

Else

IPList := "No IPs Found!"

MsgBox %IPList%

This snippet of the AutoHotkey script loops through the list of IP addresses found and uses the GetLocation() function explained above to look up the server's geographic location for each. The IP and location are concatenated to the list (IPList) which is displayed in a MsgBox. If there are no IPs found, then "No IPs Found!" is displayed. CountIP— is used to decrease itself by 1 before starting the loop since the previous loop added one extra for the last non-existent IP. Other than these notes, the techniques used here have been addressed before in previous columns and books.

The final display of the IPs appearing in Figure 2 and their locations is shown in Figure 6.

Figure 6. IP addresses appearing in Figure 2 and their geographic locations.

The final code for the IPFind.ahk script and a compiled version, IPFind.exe, can be found in the ZIP file IPFind.zip and downloaded from the ComputorEdge AutoHotkey download site.

A Complete Regular Expression (RegEx) for Validating IP Addresses

For the purposes of the IPFind app, the RegEx used here is probably adequate. The chance of it matching a sequence which isn't a valid IP is pretty low. Even then, it merely returns a blank location. However, if you are validating an IP for an online form or some other use where you need to prevent errors, then you must ensure it is at least a possible IP address. That means the numbers can only run from 0 to 255 in each numeric part. Doing that involves a little more complicated RegEx:

^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

This expression (copied from another source) insures that each number is within the range 0 to 255. Every operator in this RegEx has been discussed in previous AutoHotkey RegEx columns—except the ?: operator, but that can be found in the online AutoHotkey RegEx Quick Reference.

*                    *                    *

To learn more about AutoHotkey, check out these AutoHotkey E-Books available from ComputorEdge E-Books.

Jack is the publisher of ComputorEdge Magazine. He's been with the magazine since first issue on May 16, 1983. Back then, it was called The Byte Buyer. His Web site is www.computoredge.com. He can be reached at ceeditor@computoredge.com. Jack is now in the process of updating and compiling his hundreds of articles and columns into e-books. Currently available:

Recently released is Jack's FREE AutoHotkey book, AutoHotkey Tricks You Ought to Do with Window, available exclusively at ComputorEdge E-Books in the EPUB for e-readers and tablets, MOBI for Kindle, and PDF for printing formats.

ComputorEdge E-books offering is his AutoHotkey Applications, an idea-generating intermediate level e-book about using the AutoHotkey Graphical User Interface (GUI) command to write practical pop-up apps for your Windows computer. (It's not as hard as it sounds.)

Hidden Windows Tools for Protecting, Problem Solving and Troubleshooting Windows 8, Windows 7, Windows Vista, and Windows XP Computers.

Jack's A Beginner's Guide to AutoHotkey, Absolutely the Best Free Windows Utility Software Ever!: Create Power Tools for Windows XP, Windows Vista, Windows 7 and Windows 8 and Digging Deeper Into AutoHotkey.

Our second compilation of stupid ComputorEdge cartoons from 2011 and 2012 is now available at Amazon! That Does Not Compute, Too! ComputorEdge Cartoons, Volume II: "Do You Like Windows 8 or Would You Prefer an Apple?"

Special Free Offer at ComputorEdge E-Books! Jack's Favorite Free Windows Programs: What They Are, What They Do, and How to Get Started!.

Misunderstanding Windows 8: An Introduction, Orientation, and How-to for Windows 8 (Seventh Edition)!

Windows 7 Secrets Four-in-One E-Book Bundle,

Getting Started with Windows 7: An Introduction, Orientation, and How-to for Using Windows 7,

Sticking with Windows XP—or Not? Why You Should or Why You Should Not Upgrade to Windows 7,

and That Does Not Compute!, brilliantly drawn cartoons by Jim Whiting for really stupid gags by Jack about computers and the people who use them.

Wally Wang's Apple Farm

“Waiting for the Apple Watch”
by Wally Wang

Waiting for the Apple Watch; Twine: An Interactive Story Telling Creator; Laying the Foundation for the Future; Running Linux on OS X; Free Graphics Programs; Automatically Update.

If you're willing to pay for an Apple Developer account, you can get access to the Xcode 6.2 beta that includes the WatchKit API (application programming interface) to help you create apps for Apple Watch, arriving sometime early next year. Although this initial WatchKit API is somewhat limited, it does give you a brief idea how the Apple Watch will work.

First of all, the Apple Watch will come in two sizes: 38mm and 42mm. Some people may prefer the larger screen for readability while others will prefer the smaller screen for its less obtrusive appearance.

Figure 1. Apple Watch will come in two sizes.

More importantly, Apple Watch will rely heavily on an accompanying iPhone. Instead of running apps on its own, Apple Watch will act mostly as a user interface with the bulk of the app's processing done on the iPhone. This will extend the battery life of the Apple Watch while keeping the Apple Watch bulk down to a reasonable size without the need to cram a fast processor and lots of memory into the smaller form of the Apple Watch.

Figure 2. Apple Watch will rely on an iPhone for running apps.

Of course the huge drawback of this approach is that you need an iPhone to use Apple Watch. Leave your iPhone at home and your Apple Watch immediately loses its versatility. If you don't have an iPhone (or an iPad), then Apple Watch won't be that useful at all.

Next summer, Apple will likely release a more comprehensive WatchKit API that will let you create independent apps that can run on Apple Watch without an iPhone, but without the stronger processing power of an accompanying iPhone, Apple Watch apps will likely be far more limited.

Besides gaining developer support, the real test of Apple Watch will be seeing the apps that Apple includes with Apple Watch. If Apple just throws Apple Watch on the market and hopes people buy it, then sales will likely be low. Only if Apple provides apps that offer a clear purpose and unique advantage of Apple Watch will you see sales skyrocket.

Just as Apple provided useful apps when they introduced the iPhone and iPad, so you can expect Apple Watch to come with a handful of useful apps so you can start benefiting from the Apple Watch right away. The big question is what type of apps will make the Apple Watch useful and appealing to a large majority of people. What won't appeal to people will be an endless parade of technical specifications with no clear direction or purpose for taking advantage of those features to solve a unique and interesting problem.

Twine: An Interactive Story Telling Creator

If you remember the early days of computer games, graphics were non-existent. Some of the more popular games described a scene and then displayed a list of options. By choosing an option, you could explore the environment such as a dungeon or forest. One of the more popular of these text-based adventure games was Zork. To mimic the silliness of text-based adventure games, there's even a cat petting simulator that describes a cat and gives you options for petting that cat.

Figure 3. The Cat Petting Simulator text-based adventure game..

In case you're interested in creating your own text-based adventure games or just want to explore a unique tool to help you outline a story, look at the open source Twine program, which is the program used to create the Cat Petting Simulator game.

Twine is free to use and runs on Windows and OS X. You can output your game as an HTML file so you can post it on a Web site, or you can simply use it as a story organizing tool to help you write a novel or screenplay.

Figure 4. Twine helps you organize your story elements.

If you're curious about tools that could help you organize your thoughts and like them together, or want to create your own text-based adventure games, take a look at Twine. Since the program's free, you have nothing to lose but time as you explore Twine's features to see if they can be useful for your own life somehow.

Laying the Foundation for the Future

Too many companies have no long-term vision and simply offer knee-jerk reactions to the latest trends. Not surprisingly, such knee-jerk reactions rarely embrace innovation and instead rely on copying existing products and cramming a laundry list of technical specifications in their products while hoping someone will find something useful.

Yet if you watch the patient plodding of Apple, you can get a glimpse of their future products. The most prominent example of this was when Apple introduced the iPhone. They had originally created touch gestures for the iPad but shifted work to create the iPhone instead. Once they ironed out the bugs with touch screens and touch gestures, they returned to their original project and used the same operating system to create the iPad.

In comparison, Microsoft responded to the iPhone with a knee-jerk reaction by creating Windows Phone. When the iPad came out, they were caught flat-footed since they never intended Windows Phone to control anything but a phone. Microsoft responded with another knee-jerk reaction by introducing Windows RT and the touch screen features of Windows 8 for tablets, and you can see how well creating three incompatible operating systems for mobile devices has worked out for them.

Back when Apple introduced the iPhone 4S, they introduced Siri, a natural language voice recognition system. You can expect Siri to play a prominent role in the future of Apple Watch and Apple TV as a simple way to interact with devices that may not have a large touch screen or keyboard. One area where Siri will likely play a greater role will be through CarPlay, which allows you to control your car's entertainment system with voice commands instead of touch screen gestures that would force you to take your eyes off the road.

When Apple introduced the iPhone 5S, they included a fingerprint scanner. While unlocking your iPhone with a fingerprint may seem trivial, it opened the door to Apple Pay so you could verify a purchase with your fingerprint. By ironing the bugs out of the fingerprint scanner first, Apple paved the way for fingerprint authentication for wireless mobile payments.

This fingerprint scanner (called TouchID) has now migrated to the latest iPad models, which lets you use secure fingerprint authentication to let you shop online. Most likely, you can expect TouchID to migrate to the Macintosh as well so you'll be able to unlock a Macintosh with a fingerprint and purchase products online through Apple Pay.

Having designed iOS from the start as an operating system for small devices, Apple has now migrated iOS from the iPhone to the iPad to Apple Watch, CarPlay, and Apple TV. Since the iPhone, iPad, and Apple Watch will allow access to third-party apps, you can expect Apple TV to start offering the ability to run iOS apps. This will likely turn Apple TV into a game console as well, especially with Apple's new graphics interface called Metal (https://developer.apple.com/metal/) that dramatically speeds up graphics.

With faster graphics capabilities, video games will become more powerful on all iOS devices, allowing greater realism, complexity, and speed than on competing devices and operating systems. Since games represent the most popular types of mobile apps, the availability of games will attract more people to iOS devices just like dedicated video games attract people to either Microsoft's Xbox or Sony's PlayStation.

For the long term, Apple is patiently nurturing iBooks to let people create and sell interactive e-books. Although Amazon continues dominating the e-book market, Amazon's latest Kindle standard only offers limited interactivity. Interactive e-books are far more versatile than today's static text and graphics e-books, so unless Amazon or someone else looks far ahead to the future, they'll wind up ceding the interactive e-book market to Apple by default, just like Blackberry, Nokia, Microsoft, and Palm surrendered the smartphone market because they lacked a long-term vision for how smartphones could improve upon existing products.

With Apple Pay, iBooks, Apple TV, TouchID, Siri, CarPlay, 64-bit processors, and Apple Watch, Apple has laid the foundation for a future of growth and new product applications. They may not succeed in any of their goals, but at least they're trying to solve difficult problems rather than just copying whatever happens to be trendy right now. Given the choice between following a leader and following an imitator, who do you think has a better chance for long-term success?

Running Linux on OS X

The simplest way to run Linux on a Macintosh is to run Linux as a virtual machine. For greater speed, you can also partition your hard disk and dual boot Linux, but this will take more technical knowledge to do so. Perhaps an even odder way to run Linux on a Macintosh is to run Linux packages directly on OS X itself.

OS X and Linux share the same UNIX background so it's possible to run UNIX, Linux, and FreeBSD programs on OS X with little or no modification. It's not an easy task to do so, but for those tech-savvy users who want greater flexibility for their Macintosh, they can delve into its UNIX background and run Linux programs without virtualization.

Linux is particularly popular in the scientific community due to its UNIX background, so if you want the convenience of the friendly OS X user interface combined with the power and flexibility of Linux, you can have both.

The future of science is shifting towards biology so it's no surprise that biologists have embraced computers to create a field called computational biology. The basic idea behind computational biology is to analyze data and even conduct experiments on a computer to supplement or even substitute for actual laboratory results instead.

For those serious about computational biology, you can download Bio-Linux, a dedicated Linux distribution based on Ubuntu but packed with tools specific to computational biologists. For a greater challenge, you can install these computational biology packages and run them directly on OS X too if you want.

Figure 5. Bio-Linux offers a specialized operating system for computational biology.

For the greatest flexibility, use OS X to make common tasks easy and then use Linux (or OS X's ability to run Linux programs) to tackle more complicated problems. With the huge variety of UNIX-related software out there for the scientific community, it's easy to see that the future of scientific computing relies more on Linux and UNIX-based operating systems than anything else.

Free Graphics Programs

There are two types of graphics programs: bitmap and vector. Bitmap graphics programs let you modify individual pixels of an image, but if you blow up an image too much, the image starts looking clunky and ugly, known as pixilation. For editing photographs or drawing, bitmap graphics editors can still be useful.

Vector graphics may not always look as realistic as bitmap images, but vector graphics let you blow up an image with absolutely no pixilation whatsoever. That's because vector graphics describe images mathematically so no matter what resolution you display the image, it still looks sharp and clear.

The two most popular bitmap and vector graphics programs are Adobe Photoshop (bitmap) and Adobe Illustrator (vector), but both programs are expensive and designed for professional graphics artists. If you want a less expensive option, you can choose Paintbrush (bitmap) or DrawBerry (vector), both of which are free.

Paintbrush lets you zoom in or out so you can edit individual pixels if you want. You won't have all the features of Photoshop, but if you just want to play around with simple editing or painting, then Paintbrush should meet most of your needs.

Figure 6. Paintbrush lets you edit pixels.

DrawBerry provides basic vector drawing tools so you can teach yourself how to draw something using lines and curves that you can manipulate in different ways. While paint programs may let you create something as simple as scribbling with a pencil on paper, drawing programs let you create objects like lines or shapes that you can modify in different ways, so drawing can be less intuitive than painting.

Figure 7. DrawBerry lets you play with vector drawings.

Since both programs are free, you might as well try them to see if they meet your needs. If you find yourself outgrowing their capabilities, then it might be time to buy a paint or drawing program, but until then, you might as well explore the world of painting and drawing at no cost until you know for sure what you actually need.

*                    *                    *

In general, it's a good idea to keep you software updated. That way you get the latest bug fixes and features, although you still have to hope that the latest software updates don't actually make things worse on your computer.

In case you value convenience over possibly downloading and installing faulty software updates, you can tell OS X to automatically download and install the latest updates so you don't have to do it manually.

Just click on the Apple menu and choose System Preferences. Then click the App Store icon and select the check boxes to automatically install iOS or OS X software updates.

Figure 8. OS X can automatically download and install software updates.

In the early days, before Wally became an Internationally renowned comedian, computer book writer, and generally cool guy, Wally Wang used to hang around The Byte Buyer dangling participles with Jack Dunning and go to the gym to pump iron with Dan Gookin.

Wally is responsible for the following books:

Microsoft Office 2013 For Dummies

Beginning Programming for Dummies

Beginning Programming All-in-One Reference for Dummies

Breaking Into Acting for Dummies with Larry Garrison

Strategic Entrepreneurism with Jon and Gerald Fisher

How to Live with a Cat (When You Really Don't Want To)

The Secrets of the Wall Street Stock Traders

Mac Programming For Absolute Beginners

Republican Fairy Tales (Children's Stories the 1% Tell About the Rest of Us)

The Zen of Effortless Selling with Moe Abdou

The 15-Minute Movie Method

Math for the Zombie Apocalypse

How to Write a Great Script with Final Draft 9

Making a Scene: The Science of Scene Structure

In his spare time, Wally likes blogging about movies and writing screenplays at his site "The 15 Minute Movie Method," finding interesting news stories about cats at his site "Cat Daily News," giving advice to authors who want to self-publish e-books at his site "The Electronic Author," and providing the type of advice he wishes someone would have told him when he was much younger at his personal Web site. Wally can be reached at wally@computoredge.com or you can follow him on Twitter @wallacewang_com.

Editor's Letters: Tips and Thoughts from Readers

“Computer and Internet tips, plus comments on the articles and columns.”
by ComputorEdge Staff

"GIF Extension," "Malwarebytes Anti-Malware Slowdown," "Re: Paul's Observation"

GIF Extension

[Regarding Jack Dunning's November 14 article, "Animate Your Signature with a GIF":]

The article "Animate your signature with a GIF" left out an important step in the instructions.

When "Exporting as" comes up the .jpg extension must be changed to .gif otherwise the

.gif animation screen does not appear.

-Bob

Malwarebytes Anti-Malware Slowdown

[Regarding the November 7 Digital Dave column:]

Regarding Malwarebytes Anti-Malware: I installed it and ran it. It found some malware and I quarantined it. I then noticed a considerable slowdown of my computer. I uninstalled Malwarebytes Anti-Malware, and my computer is running up to speed again.

-Paul Anthony Vild, San Diego, CA

Re: Paul's Observation

[Regarding the November 14 Editors Letters: Tips and Thoughts from Readers column:]

Like a TV channel that rarely has programming I want, I ignore columns that are not of interest to me.

-Ron Cerrato, San Diego

ComputorEdge always wants to hear from you, our readers. If you have specific comments about one of our articles, please click the "Tell us what you think about this article!" link at the top or bottom of the specific article/column at ComputorEdge.com. Your comments will be attached to the column and may appear at a later time in the "Editor's Letters" section.If you want to submit a short "ComputorQuick Review", or yell at us, please e-mail us at ceeditor@computoredge.com. If you would like to review our recent e-books, please visit ComputorEdge E-Books.

Send e-mail to ceeditor@computoredge.com with questions about editorial content.

Send mail to cewebmaster@computoredge.com with questions or comments about this Web site.

Copyright © 1997-2014 The Byte Buyer, Inc.

ComputorEdge Magazine, P.O. Box 83086, San Diego, CA 92138. (858) 484-1998

Click to Visit ComputorEdge™ Online on the Web!