Is My Home Ready for IPV6?

IPv6I was listening to the Guardian Tech Weekly podcast the other day. In it they discussed the implications of IPV4 addresses running out and the impending arrival of IPV6 address.

So I started looking at the various modems/routers I have around the house to figure out if they support IPV6.

And as expected the main Dynalink ADSL modem which connects to the ISP and provides broadband to the house does not support IPV6. The other wireless routers (and I have three of them around the house — an Airport Extreme and two Airport Express) both have the options to configure IPV6.

Now, I still don’t fully understand what exactly are the implications on my home infrastructure when the time comes to switch to IPV6, but might have start looking for a new modem over the next year!

Create Custom Dictionaries For Mac OSX

Over the last couple of months I’ve been chipping away at creating an add-on dictionary for the Dictionary application on Mac. I wanted to create a dictionary for CFWheels.

Information on how to create such dictionaries was not all that easy to find. So I thought I’d share what I found in case it helps some else.

Apple’s Dictionary Services Programming Tutorial

First up, have a look at this tutorial on Dictionary Services Programming over at It provides all the information one needs to get started. You can also download a PDF of this tutorial.

Template Files for Dictionary

One thing that the tutorial assumes is that you have the template files for dictionary development are. First challenge was to figure out where they were. I found that they are installed with XCode at: /Developer/Examples/Dictionary Development Kit. If you don’t have XCode installed, then you can download the this zip file that contains the Dictionary Development Kit.

The Make Command

Before you customize anything in these files, simply run ‘make’ command in directory where you unzip these files. It should create a dictionary called “My Dictionary”. If you move this dictionary to /Library/Dictionaries or ~/Library/Dictionaries, it will start showing up i the Dictionary app.

There are a couple of other things that the make command can do:

  • make clean : cleans older builds
  • make install : installs the created dictionary to ~/Library/Dictionaries folder
  • make : creates the dictionary

Change the XML and Info.plist

Now add the stuff you want in the XML that will be used to create the dictionary. You will have to generate the XML with the appropriate structure and content. Also modify the plist file as required. Run “make” to create your dictionary.

A Big Gotcha – Cached Dictionaries

On thing that really had me flummoxed was that despite making a new dictionary, the Dictionary app was not reliably showing all the changes I expected.

This took a while to figure. There is a bunch of caching that comes into play if you are creating new builds of the dictionary. Cached versions show up and throw you off the track.

So I had to write this shell script to clean Dictionary app cache. Make sure that you

  • make the script executable before running it, and
  • quit the Dictionary app before you run

I found that I had run this each time I made a change to the XML file.

A downside to doing this is that it resets all Dictionary preferences. So when you start the Dictionary app after running this script, you have go to Preferences and turn on the dictionary you are working on. A bit painful, but not such a biggie.

My Development Workflow

So as I was making changes to the XML file with data, I was running the following commands:

  • ./ (cleans out all dictionary caches)
  • make clean (cleans out older builds of the dictionary)
  • make (makes the dictionary)
  • make install (installs the dictionary)

Example Dictionary: CFWheels

If you want to see an example of the dictionary that I created, check out:

Look at the XML and Info.plist files.

That’s it… go and have fun creating dictionaries now!

CFWheels Dictionary for Mac OS X

Working with any framework involves learning many things like file structure, information flow, etc. One of the most critical aspects of being proficient in a framework is how well one has learned the API. And this holds true of CFWheels as well.

CFWheels provides a simple API that one has to refer to time and again as one learns and develops with it. The CFWheels website has a great section on documentation which lists various API calls. And this helps the process of learning/working with the framework. But…

There were a couple of occasions when I was offline and a few when my connectivity not too good. Under those circumstances it was proving a little slow to figure out various API calls.

So I was browsing around a few months back and came across the ColdFusion 9 dictionary for Mac. That got me thinking that I should probably do something like that for CFWheels. The nice thing about a dictionary is that it is a desktop application, so it is very quick, has a very nice search, and most importantly, integrates very well with native Mac apps.

So here it is!

Download: CFWheels Dictionary for Mac

Installation is simple.

  • Unzip the zip file
  • Copy CFWheels.dictionary to either /Library/Dictionaries OR ~/Library/Dictionaries.

Fire up the Dictionary app, and you should see the CFWheels dictionary in the list of dictionaries available.

A few tips:

  • Once the CFWheels dictionary is installed, you can search for the word “api” and it lists a page where all CFWheels API calls are available. You can select what you want.
  • If you use a native Mac app like Panic’s Coda or TextMate the Mac dictionary service integrates beautifully with them. What that means is that you can select a word and right-click it and then “Look Up in Dictionary”. It opens dictionary and information about the text you selected.
  • Setup a keyboard shortcut (through System Preferences > Keyboards > Keyboard Shortcuts) for “Look Up in Dictionary” so that you can fire it up through keyboard.
  • If you want you can enable/disable various dictionaries through the Preferences menu of the Dictionary app. I find that to be quite handy.

Have fun! And do drop me a line if you like it! Or if you find any bugs/issues.

Update: Source Available on GitHub

The source for the dictionary is now on GitHub: