After downloading such a great Built for BlackBerry app, AIO Remote, I quickly discovered that the Bluetooth portion of the server portion (the app that runs on the Mac) makes the app crash.

After endless searching of the interwebs, I found a few others having similar issues with the same Bluetooth library (bluecove).

Their workaround was to download the IOBluetooth library from a previous version of OSX and reference that instead of the updated Mountain Lion IOBluetooth (which crashes bluecove).

If you just want to try it out, here is a complete modded version of 3.3.0 server (works with 3.4.2 client):


If you are curious on how I created it, here is what I did:

  1. Grabbed the previous version of AIORemote Server portable 3.3.0:
  2. Grabbed the Wiimote Whiteboard modded zip that contained a working copy of IOBluetooth and modified startup script
  3. I COMBINED THEM!  I copied the IOBluetooth into the AIOServer folder, and update the startup script to look like this:

DIR=$( cd “$( dirname “$0″ )” && pwd )
java -jar AioServer3.3.0.jar

  1.  on the command line, run the server:   ./
  2. Now you should be able to connect your phone!


Git mav for Mac and spotify

Have a Mac? Use git? Have Spotify? well then this is a must-have!

I’ve created a simple bash script that will play “Danger Zone” by Kenny Loggins whenever you type “git mav”

Check it out on github:

My Favorite SilverStripe features:

For the Content Provider:

Page Versioning – Live/Draft + all version history w/compare
Site Hierarchy is managed by a Site Tree – drag and drop sections of the site
Image Gallery – create very nice image albums (example: )
User Forms – content providers can create sophisticated web forms using a drag/drop interface (very awesome)
Fine grained permissions – Group and/or Role based permissions
Workflow – from basic  1-step, 2-step or 3-step, to very customizable advanced workflows (via Advanced Workflow Module)

For the Developer:

Templating – no design constraints or assumptions because of the way templating is done  (unlink Drupal and WordPress with template pieces)
SEO – SilverStripe has really great SEO features
Class Table Inheritance – along with automatic database schema management
ORM – great ORM makes developing data models effortless, with DataObject Interface (for example, we use it to get data from a remote REST api using the standard data object interface)
Automated Testing – unit and functional testing (We run about 800 test w/4000 assertions and have it “Continuously Integrated”)
Tasks – run tasks (they have several handy built-in) from the web or cli, write your own tasks, add them to cron, etc.
Caching – run your site entirely from html cached copies (or just cache partial portions of your pages) based on the last published version of each page, push your static html to multiple servers via rsync automatically

Hi All,

Good news, I have moved the nested url module to github:

I have been testing the nestedurl module (by writing unit/functional test) and hope to push those to github.  As I forgot to mention in my last post about this module, huge props to Andrew Short ( ) for inspiring this module.

Here’s the story:

OSU Libraries have been using code from Andrew’s nested URL branch by creating a diff of his changes, stripping out the non-nestedurl changes, and applying the diff to the stable releases of SilverStripe.  We’ve gone from 2.2.2 up to 2.3.3 using the special diff that was created.  The reason was because OSU Libraries cannot be running an unstable branch of code on our production site!  As of recently, we’ve been having a lot of problems with the nested URLs branch, so it was time to step back and re-evaluate.  So, one weekend I sat down with a fresh copy of SilverStripe 2.3.3 and started coding.   A few hours later, this module was born.  (Again, I can’t say this enough, THANKS Andrew Short for your inspiration for this!).

I wanted to see if this functionality could be put into SilverStripe while changing as little code in sapphire, cms, and jsparty as possible and being very simple so that SilverStripe can be easily updated.  I do believe that this module will be fully featured with a new cool feature (more on that in the next section).  The changes that I’ve made to the core are just adding some utility (added a setter for allParams to HTTPRequest, and an extend call in SiteTree->Link() … see previous post about nestedurls)

By simply extending SiteTree by adding a field called URLParent, nested URL functionality can be done and also another important feature: The ability to control the entire url structure of your SilverStripe site that is independent from the SiteTree/Menu structure.

For example:

At the Libraries, here is a portion of our Site Tree:

  • About
    • Departments
      • Web Implementation Team (WIT)
    • Committees
      • Web Visioning Committee (WVC)

So normally without Nested URLS, these pages would be:

  • /about
  • /departments
  • /WIT
  • /committees
  • /WVC

And with nestedurls (using my module, or Andrew Short’s nestedurl branch):

  • /about
  • /about/departments
  • /about/departments/WIT
  • /about/committees
  • /about/committees/WVC

Now, with the new feature of my nestedurl module, I can set the URLParent fields for the following:

  • Departments: set URLParent = 0 (root of site)
  • Committees: set URLParent = 0 (root of site)

And the result is the following:

  • /about
  • /departments
  • /departments/WIT
  • /committees
  • /committees/WVC

By default, if there is no URLParent field set for a given page, it will use the Parent field to determine the preceding URL segment.  So as you can see, the URLs for WIT (department), and WVC (committee) are nested with departments and committees, respectively, because these page have a NULL value for URLParent so the normal Parent field is used.   The “parent url” for committees and departments have been overridden by the URLParent field that we set to 0 earlier  (so they jump to the root of the site).

In summary,  this module is still under development, and is currently being tested with other modules (googlesitemaps, userforms, dataobjectmanager, imagegallery).  I now have the module on Github to track changes and issues.  If anyone would like to contribute to this module, let me know!  Thanks so much for reading.

I was excited to share about the carmen library link application that is used in Ohio State Universities. I could talk for hours about this, so I decided to write a blog post with more information. If you were not there, to clarify, Carmen is Ohio State University’s Learning Management System (Desire2Learn).   This application allows librarians to create subject/resource guides to be delivered within Carmen and stores all content in a REST API.  I will be managing an Open Source release of this application sometime in the future (sooner depending on the demand!).

Presentation from LITA lightning talks session 2:

Example of Carmen Library Link “widgets” re-used as Subject Guides on our website: (click on one of the subjects)

Carmen Library Link v2 Beta screenshots:

Carmen Library Link v2 Beta

Editor View (Creating items, widgets, pages)

Subject Guide Page view

Subject Guide Page view

Key points:

  • Allows anyone (non-technical) users to create items, widgets, pages very easily (drag and drop interface)
  • Modular Design and a decentralized design (API + any web services client)
  • API is separate from Editor (the editor can be thought of as a web services client to the API)
  • Can host/manage content locally
  • API is secure (more details available by request)

Carmen Library Link v2 is built with:

About the REST api:

  • Every single item/widget/page/resource/librarian/user/org/(etc) has its own URL!
  • Every URL can be used in a “create/read/update/delete” (CRUD) context using POST/GET/PUT/DELETE
  • All data is available in multiple formats: json, XML, html (just by adding extension to URL)
  • MVC infrastructure which allows for even more formats (mobile format, iGoogle gadget)

Possible Uses for this reusable content

  • Any item (item, widget, page, librarian profile, library information) can be embedded in any website
  • Pull into Content Management System
  • iGoogle / Netvibes / Other Portal
  • Mobile Subject Guides
  • Course Management / Learning Management System
  • Data is free and accessible in a granular level (via unique URL)

Example API response for an Item: GET /user/8/items/674.json

  "success": true,
  "data": {
    "id": "674",
    "librarian_id": "1",
    "type": "CarmenLink",
    "title": "net.TUTOR: Finding Articles",
    "description": "this is cool!",
    "url": "",
    "created_at": "2009-09-18 10:18:46",
    "updated_at": "2009-09-28 14:55:44",
    "created_by": null,
    "updated_by": "",
    "html": "
\nnet.TUTOR: Finding Articles this is cool! \n
", "librarian": { "id": "1", "email": "" }, "widgets": [ { "id": "376", "name": "my widget", "publiclabel": "my widget", "type": "findArticles", "librarian_id": "1", "created_at": "2009-09-18 10:18:40", "updated_at": "2009-09-18 10:18:40", "created_by": null, "updated_by": "" } ] } }

I may be crazy, but I believe I have been able to get the basic functionality of Nested URLS in a module with only 2 modifications to the core of sapphire.


  1. As little change possible to the core of SilverStripe (cms, jsparty, sapphire)
  2. To separate navigation/Sitetree structure with URL structure
  3. Ability to toggle nested urls


Image courtesy of

Image courtesy of

I enjoy all things relating to engineering.  I love well engineered consumer products as well as large commercial/military things that come accross my path (for instance: power plants, huge military cargo planes, manufacturing facilities, etc. you get the idea).  Currenty I am very much interested in robots.  This includes everything from microcontrollers on wheels to humanoid robots.  As a part of the Fundamentals of Engineering  for Honors program at Ohio State, I was given the opportunity to work in a team of 4 to create a Handy Board based robot to move about a course and compete with other student teams doing the same.  This project sparked my interest in robots and computer programming (the Handy Board understands a subset of the C programming language).   It also introduced me to product design with Autodesk Inventor.  I hope to build another robot from scratch soon.  It will be using an Atmel AVR microcontroller (AT90S8535) and thats about all I’ve decided at this point.  Does anybody have any good ideas or a “purpose” for this robot?  I am also open to making this a collaborative project.

I am Jim and I will be writing about software developing, mechanical engineering, writing and creating music, mobile phone tips/experiences (mostly BlackBerry), computer hardware, and anything else that I might find interesting to share. Hope you enjoy!