Archive for the 'Language Aid' Category

Language Aid: A Postmortem

August 27th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

Language Aid is a system-wide text lookup tool I developed and sold for the past couple of years. I recently decided to make it free and release the source code. This is the story behind it.

Rewind to 2006, I was just winding down active development of Vision, my OpenGL Window Sever/UI Framework. I had started work on Vision in college 3 years earlier and had been churning on it full-time for the previous 2 years. I had decided that it was finally time to get a job and so I interviewed around and accepted a position at Apple. I had two weeks until my start date and I wanted to do some programming for fun that was completely different from what I had been doing.

Iron Coder[0]

It was during that two week period of not yet working for Apple that Wolf Rentzsch started the (now defunct) Iron Coder contest. The way it worked was that the organizer announces an API that each of the contestants must use somehow in their entry and then 24 hours later a theme is announced that entries must also somehow incorporate. I thought it was just what I needed. A fun, small-scoped project with a little bit of competition. So the day of the very first Iron Coder arrived and the contest API was announced: The Accessibility API. Accessibility API? What’s that? Until that moment I had not been aware of it but it was actually just what I had been looking for to solve a different problem I had. I started researching it and immediately there were portions of it that were very interesting to me. Specifically, the ability for programs to inspect and copy data (like displayed text) out of other running applications was of particular interest to me.

(more…)

Language Aid 1.2

August 27th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

Language Aid version 1.2 is out! The big feature of this release is that it is free and open source! This will also be the last release supported by Aoren Software. Development has pretty much wound all the way down at this point and the source has experienced some code rot as Core Foundation has progressively become more and more obsolete and Mac OS X has marched forward.

So it occurred to me that the time has come to set Language Aid free. Anyone care to take the code and modernize it? Maybe even release it on the Mac App Store? Let me know and I can work with you to make that happen. Be sure to check out my tell all Language Aid postmortem.

Language Aid 1.1.6 is out!

March 7th, 2009
Spencer Nielsen Follow snielsen42 on Twitter

Again, not too much to see here. Just a little maintenance update. I fixed some problems with the Japanese localized nib files and also got rid of the inspector window fade in/out. Previously when you hit the lookup trigger or initiated a lookup the inspector window would fade in quickly which gave it a nice feeling. Unfortunately there are occasionally some problems with the fade in/out not completing properly that are very hard to reproduce. I decided to just axe the behavior altogether and am actually pleased with the snappiness of the window simply coming into full view immediately now.

Language Aid is on MacZOT!

December 2nd, 2008
Spencer Nielsen Follow snielsen42 on Twitter

For today only you can purchase Language Aid for half price (US$10) through a promotion at MacZOT! To take advantage of the promotion pricing, buy your copy of Language Aid through MacZOT and once the promotion is over you will receive an email with an application attached to it that will configure your computer for Language Aid registration. All you have to do is run the application and then click the “Register” button in the Language Aid preference pane. It will be fun to see how the promotion turns out.

Language Aid 1.1.5 is out!

November 22nd, 2008
Spencer Nielsen Follow snielsen42 on Twitter

Not much to see here in this release honestly. Just a couple of small bug fixes and refinements here and there. Nothing worthy of noting here, mostly stuff that makes support a little easier for me on the back end.

iTunes 8.0 supports the Accessibility API!

September 17th, 2008
Spencer Nielsen Follow snielsen42 on Twitter

That means that Language Aid can now grab text from it and perform lookups. It has been a long time coming and it a significant enough change that Steve mentioned it in his keynote at the music event. This is somewhat less significant these days because there are two other ways independent from the Accessibility API that Language Aid has to grab text from applications. However, the fact that iTunes was a first party app made it quite a big omission. To its credit I suspect that this was due to the entire interface being implemented independently of any OS frameworks to allow for easier porting to Windows and higher consistency in behavior between the app on the two platforms.

There are a few major apps that still do not fully support Apple’s Accessibility API fully (Office, Firefox, I am looking at you…) but every little step helps.

Language Aid 1.1.4 is out!

August 18th, 2008
Spencer Nielsen Follow snielsen42 on Twitter

Normal LAID window

The changes included in this round are the usual bug fixes for stability/performance and the like. There is also one major change involving the results window. The results windows are now normal Mac OS X windows with typical window behavior instead of the previous overlay window style. This allows you to put other windows in-front of the results windows instead of them always floating on top of everything. With that there is also the change that you can use command-W to close the results windows in addition to the other methods of dismissal.

Almost all of the feature or behavior additions/changes that have gone in to Language Aid updates have originated from user feedback. I am very grateful to my users for their suggestions and requests so that Language Aid can continue to grow and improve. Thanks and keep it coming!

Marketing!

July 1st, 2008
Spencer Nielsen Follow snielsen42 on Twitter

I havn’t really done very much marketing of my products. Mostly because I want to spend most of my time in actual product development. However, my thoughts sometimes turn to promotion and marketing and how to do it better. Lately I have observed that many products are advertised on what they DON’T have. A product is promoted as not having certain bad things rather than emphasizing that it has these other good things. Thus is the way of business, politics and many other areas of society as of late.

I have decided to think of a few catchy anti-features for Language Aid that are surely going to send sales through the roof. Here are just a few that I have come up with as I have been sitting here:

LAid Marketing

Who needs boring feature lists detailing what a product DOES have. When people see the substantial list of what Language Aid doesn’t have, I am sure they will think twice before passing up purchasing such a great program! Perhaps now I have found my true calling…

Introducing Deadlock

June 23rd, 2008
Spencer Nielsen Follow snielsen42 on Twitter

Deadlock logo

Deadlock is the name for my copy-protection/registration framework that I have been using in Language Aid since version 1.0. It has worked faithfully for me since then and I have have decided to share it with other developers who might be looking for such functionality or looking to bump up their protection a little.

I have long heard many developers argue that most of the time pirates wouldn’t purchase your software anyway and so you shouldn’t bother putting that much effort into fighting it except for the most basic and obvious of protections. In most cases it just isn’t economical. I generally agree with this but the reason that I put so much effort into Deadlock to protect a $20 program was more personal education and entertainment than anything else. I must admit that I had a lot of fun thinking of how to hack the program, come up with a countermeasure, then come up with a circumvention of that countermeasure and then engineer a protection against that back and forth over and over again. I mostly just thought of the kinds of reverse-engineering that I have performed on other software for entertainment and then researched methods to prevent such fun. In the end I thought I had a pretty good setup of minimally invasive mechanisms to prevent piracy for my software.

Deadlock has been refined over the course of Language Aid releases and as of Language Aid 1.1.1 it was built out as its own separate product. I have wanted to refine it and add more diverse functionality to it for a long time. To accomplish this Deadlock needs more clients, preferably applications outside of Aoren Software. In the future I also plan on productizing my payment processing engine (works hand in hand with Deadlock) that makes paying for and registering Language Aid easy, fast and instant (no serial numbers, no confirmation emails, just instant gratification). I wanted to end this post by citing one of the many insightful quips from Bruce Schneier in order to emphasize that security invasion is inevitable and that defenses are simply deterrents. Instead I give you this:

The user’s going to pick dancing pigs over security every time.

— Bruce Schneier

Hehe…dancing pigs…

Language Aid 1.1.3 is out!

June 14th, 2008
Spencer Nielsen Follow snielsen42 on Twitter

Google Translate

The latest update to Language Aid includes a plugin that really shows off its power and utility. Version 1.1.3 includes a plugin for Google Translate which performs general language translation in a multitude of tongues. One of the great features of Google Translate is that it can auto-detect the source language on its own in many cases. What this means is that the next time you are surfing the web and see text that is in a language you don’t understand, you can immediately see the translation of it in your native language. This addition greatly widens the potential user base for Language Aid by significantly expanding the language capability from just Japanese and Chinese dictionary lookups. “Your” language is now supported.

Entries (RSS) and Comments (RSS).