A Petition to Reject Racially Prejudiced Research at Harvard | News with Tags http://t.co/KGwnBBDCXA
Most Popular Ever
- Experiment: Stay in EU/Schengen for More than 3 Months (How-To) 62 comment(s)
- Sleep Hack: Fall Asleep in 2 Minutes or Less 10 comment(s)
- Google+, A Programmer’s First Experience (Loaded with Screenshots) 138 comment(s)
- Why You Should (Not) Have Your Own Mobile App 33 comment(s)
- Experiment: Sleep Less, Do More 30 comment(s)
Smart software can mean a lot of things. Most people probably think of an AI (Artificial Intelligence) when they hear “smart” and “software” together.
Many types of software must be smart in order to be robust (not break easily). They need to adapt to changes in the environment in which they run. For example, SGPlus interacts with different web browsers (Chrome, Safari and Firefox) as well as different services (Google Plus, Facebook and Twitter). When one of these three change, SGPlus needs to adapt.
If SGPlus had to be manually updated (by me, by hand) each time this happened, it would be annoying for users. Thus, it is prudent to create “smart” software. Perhaps this is not quite the “HAL” Artificial Intelligence we think of when we hear the phase AI, yet on a basic level the concepts are the same.
As Google Plus was changed and updated by Google, SGPlus was broken. This is because SGPlus works by injecting new items into the Google Plus website.
Think of it like an after-market car body modification. The car (website) is produced by Daimler-Chrysler (Google), but SGPlus removes and adds things as needed.
Now, when a new version of the car comes out, there is a chance different part numbers might be used. The steering wheel might be the same, but the clutch could be a new model of the same basic part. For our after market modifications, we need to be aware of this, otherwise we won’t know what to replace!
The problem, here, is that software is literal. It needs something specific (like the part number on the steering wheel) to know what to make changes on. But if the part number changes, how does a literal system know what to do?
The answer is something I first implemented back when I was 15 years old and wrote a piece of software for the game Ultima Online (my first ever commercial software creation, by the way – 2 years later I found myself working at EA because of this very product). Skipping over the technical nitty-gritty, basically the idea is to look for well-known properties in order to extrapolate the part number.
All steering wheels are round (we hope) and made out of one of a few different materials (we hope). There are a few other round things in a car, but by looking for objects in the car that match a list of static properties like these, we can hopefully narrow down the list of candidates of which object might be the steering wheel to just one object. Rinse, wash, repeat and hopefully we can find everything we need in the car.
In some ways, this is an AI. The software is looking for properties as a human might see them instead of part numbers. Instead of being a robot, it is being an observer.
How it Applies
Here’s an example of how this all works within the SGPlus software.
As you use the Google Plus website, the SGPlus browser extension looks for things it needs. One such example is the “comment creator”:
When it finds such a comment creator, it looks at it in order to find the “part numbers” (classes) of the comment editing box, the buttons, etc. This way, when it needs to create such an editor, it knows how to copy the style that Google Plus is using. It simply saves the details somewhere safe, and then later when you attempt to make a comment on a Facebook post, SGPlus knows how to format the editor.
The advantage to this is that it automatically fixes itself when Google Plus gets updated (we hope). The disadvantage is that it cannot do so until it finds such an editor to examine. If you never make a comment, it never finds an editor to examine – and therefore never updates itself!
This “smart software” technique leads to greater robustness, but it is not perfect. Maybe one day Google will start making steering wheels out of wood. We can’t know for sure, but we can make good guesses.
And that’s the basic idea!
Thoughts? Did this article do a good job of explaining how such software works?