1/01/2010

Using a Binary Patch Maker to Create Secure Software Patches

Once a software product has been released into the field, it's inevitable that software development companies will want to fix problems, add features, solve unforeseen compatibility issues, and fix security holes. That's why a binary patch maker belongs in the software development tool kit of every programmer.

Benefits of Patching
The role of patches in the software deployment life-cycle is to get already installed software up to date after it becomes outdated. Patching technology offers numerous benefits over simply redistributing new versions of the original software in whole form.

Smaller file size
Because they only contain the data that has changed from one version to another, patches can be much smaller than a full software installer needs to be. Especially in situations where large data files are involved, the savings are often dramatic-patches that are less than 1% of the original file sizes are possible.

Reduced bandwidth
Smaller file sizes translate into reduced bandwidth costs, and reducing the amount of traffic leaves more bandwidth for other services.

Faster transmission speeds
Having less data to transmit means that updates can be sent and received faster, which means less time is spent waiting for updates.

Security
The best way to protect information during transmission is to never transmit it in the first place. By only transmitting the data that has changed, patches reduce the risk of third-party interception. Even if some hypothetical future technology made it possible to "crack" the encryption methods used to package the changes, the unchanged data would remain safe.

Integrity
A patch can't update something that isn't there. If a user doesn't already have your software installed, they won't be able to apply the patch. And if someone is using a modified version of a file, that file won't be updated-unless you expressly permit it when you design your patch.

Patching Methods
There are two basic methods that can be used to update a file: binary patching, and whole-file patching.

Binary Patching
Binary patching or "delta compression" involves analyzing two versions of a file in order to extract only the data that has changed. The same changes can then be applied to any file that matches the old version, in order to "transform" it into the new version.

Creating a binary patch involves performing a byte-by-byte comparison between the original file and the new file, and then encoding the differences into a difference file. Each difference file contains the actual bytes that are different in the new file, along with a number of instructions that describe which bytes need to change, and which bytes are the same. This information is said to be encoded into the difference file.

Tip: The term "difference file" is often shortened to "diff file" or just "diff."

When the patch is applied, the difference file is decoded, and the instructions are used to build the new file by copying the "unchanged" data out of the old file, along with the "changed" data that was encoded into the difference file.

For example, given an old file "A" and a new file "B," a binary patching engine would compare A to B and then produce a difference file; let's call it "AB.diff." Once the difference file is created, you can use it to create the B file from any file that matches the A file. In fact, the binary patching engine could recreate B using A and AB.diff.

Because binary patching only stores the parts that have changed, the difference files can be very small-often less than one percent of the new file's size. The size of the difference file depends entirely on how much data has changed between the two versions.

Each difference file can update a single, specific version of a file to another single, specific version of that file. The encoded instructions in the difference file are only valid for a file that is a perfect match of the original source file. Note that binary patching cannot be used to update a file if it has been modified in any way.

For patches that need to update multiple files, the patch executable will need to contain a separate difference file for each file that needs to be updated. So, for example, to update a single file from version 1.0 or 1.1 to version 1.2, using a single patch executable, it would need to contain one difference file to go from 1.0 to 1.2, and another to go from 1.1 to 1.2.

In most cases, the difference files are so small that you can fit a lot of versions into a single patch executable and still use less space than you would by just including the whole file, as in whole-file patching (see below).

Note: An advanced patch maker like Indigo Rose's Visual Patch will automatically switch from binary to whole-file patching on a file-by-file basis whenever the total size of all the difference files surpasses the size of the whole file.

Whole-File Patching
Whole-file patching operates on a different principle. Instead of only containing the parts that have changed (as binary patches do), whole-file patches just copy the entire file. The "patch" is just a copy of the new version.

Whole-file patches can be faster to apply, because they don't have to search through the original file in order to copy the parts that haven't changed to the new version. They just overwrite the old file with the new one. The downside, of course, is that whole-file patches tend to be much larger than binary patches.

There are, however, two situations where whole-file patches can actually be smaller: when creating a single patch file that is able to update many different versions, and when the files being patched are too dissimilar.

A smart patch maker like Visual Patch chooses the patching method that produces the best results. It automatically switches between binary patching and whole-file patching on a file-by-file basis in order to produces the smallest patch possible for your project.

For more information on choosing a binary patch maker that creates compact and secure software updates, visit here and download a free trial version of Visual Patch.

By Danny Forster
Article Source: http://EzineArticles.com/?expert=Danny_Forster

Multitouch Screens Could Enliven New Devices

Multitouch screens have been a little slower to enter the electronics marketplace than consumers might have hoped. Since Jeff Han, a research scientist at New York University’s Courant Institute of Mathematical Sciences, first presented his multitouch wall at the TED Conference in 2006, we’ve seen other multitouch technologies trickle into the electronic marketplace. The cellphone has used the technology most, starting with the iPhone, and then moving into other smartphones using Google’s Android platform and Hewlett-Packard TouchSmart countertop computer. But with the exception of a few outliers and device manufacturer research demos, we haven’t really seen multitouch used in other consumer electronics yet.
That might all change soon. Ilya Rosenberg, Ken Perlin and a small team of computer scientists from New York University’s Media Research Lab hope to bring a new kind of multitouch to everything from new e-readers to musical instruments, with their new company, Touchco.

Devices like the iPhone use a technology called capacitive touch and require contact with skin to activate a touch point. These touch technologies also limit the number of simultaneous inputs (the iPhone can track up to five fingers at once). In contrast, Touchco uses a technology called interpolating force-sensitive resistance, or I.F.S.R. This technology uses force-sensitive resistors, which become more conductive as you apply different levels of pressure, and then constantly scan and detect different inputs.

This allows for very low power, unlimited simultaneous touch inputs and the possibility of fully flexible multitouch devices. The technology is also extremely inexpensive; Mr. Rosenberg hopes to sell sheets of I.F.S.R. for as little as $10 a square foot.

So where can you expect to see this technology? Mr. Perlin believes you will see a new range of multitouch e-readers in the coming year, along with new musical instruments and other laptops or notebooks. Touchco has also been working closely with Disney animators to create a true digital sketchbook replacement, utilizing extremely sensitive pressure sensors to determine pencil thickness or even use of an eraser. The software behind the sensors can easily differentiate between the palm of a hand, a brush or a pencil.

There is also the possibility that the right implementation on computer could change the way we interact with interfaces. As an example, Mr. Rosenberg showed me a long sheet of I.F.S.R., about the size of a large flat panel computer monitor, which allowed manipulation of a 3-D computer program. When I lightly dragged my hand across the touch panel I could control the cursor. When I applied more pressure, I could select objects and change their orientation, size and shape within the program. It was incredibly intuitive and simple to navigate.

As you can see from the images below, there are lots of potential applications and devices that could use inexpensive multitouch technology. You can also see some video demonstrations on Touchco’s YouTube page.

Touchco began selling developer product kits to device manufacturers this year and hopes to see new devices enter the digital marketplace by late 2010. Touchco published technical specifications here.

By NICK BILTON
Article Sourch : http://bits.blogs.nytimes.com/2009/12/30/multi-touch-screens-could-enable-many-new-devices/#more-27105