What is a wearable computer

Do you hava a watch? See there is one. ;)
See The MIT Wearable Computimg Web Page for a good definition of what a wearable computer is.
 

Something does not work as expected

Contact me about it Marcus@Wolschon.biz, most of the time I can help you instantly. This is especially true for Windows-users as I we are all not using (and thus testing) that a lot ;) .
And please file a bug-report, so that you can keep track of our progress in finding and fixing the problem.
 

Where to get information on wearable computers?


 

How to start?

Nowadays the most simple methods are to get the installer (the web-installer loads only the needed parts of the net but cannot be used only localy) or the Debian-packages.
On Linux you have to execute "chmod a+x *.sh buildme ant/bin/*" to set the executable-flag.
If you want to try the 3D-user-interface or the ARUI, download it and follow the instructions in it's /doc/README.
If you have any problems with setting it up (e.g. under Windows) please don't hesitate to ask me!
 

How to start with JINI and a network?

We are working on making that work automatically, up to then consult the documentation of the JINI-starter-pack from java.sun.com (it's a .zip-file named JINI1.1-G-CS.zip)
then: edit jaugment2.conf, src/start_* and src/test
fourth: start src/test

 

How far is the developement of jAugment? Can I use it?

Yes, you can. See the roadmap-section for details!

hardwear


What will it run on? It is regularly tested to run a number of reference-platforms. These include a Xybernaut MA-IV using Windows98, a Laptop running Debian-Linux, a selfbuild Geods-SBC and Linux -based wearable and a Compaq Ipaq 3870.

It run on everything with a JVM on it, (no, applications do not need to be written in Java,) output-modalities already include speech-synthesesis, textual and graphical display-devices (monitor and co) and serial-port comsoles(PDA, micro-controllers, ...). For input we have: keyboard(there are very small ones and even special ones to be used with one hand from inside your pocket), serial-port-console(I am using a very cheap casio-PDA for mobile-input), speech-recognition (Java-speech-API, I am using the IBM-Viavoice-for-Linux-API with JavaSpeech but others are avaliable too), Pointer-devices(mouse&co). Of cause you can think of other things like gestures or eye-tracking(simple in soft- but not in hardw(e)are) or data-gloves (I am working on that point.).
The Swing-UI and maybe the 3D-UI do support an interface to drive custom-displays like LCDs or external devices (like the display of a PDA).

Do I need any costly special-made stuff? NO! I myself ran perfectly well with a Laptop in my backpack and a headset. But text-representations are not that good yet so a display is a good idea.
Does it run on a MA-IV/MA-V?
Yes, it is regularly tested to perform on that platform and I am using it on that myself.
Does it run on a WIA/Poma?
We are working on that, it is possible.
Does it run on a Ipaq in Ce/Linux?
We are working on that, it is possible.

Javadoc

Click here to browse the class-documentation of the base-package. And get an overview about what we have and how it works.

Why JINI and not CORBA/SOAP/...?

First: It's not exclusive! With the proxy-paradigm, the reflection-api and the other details of JINI it's fairly easy to write an adapter to other communication/collaboration-systems. In fact we even have bindings for CORBA and SOAP in alpha-stage.
Second: It's paradigms and design-principles meet the requirements nearly perfectly! It's notion of representations as atached properties meets the requirement of dynamic UIs, leases and RemoteExceptions handle partitial failures, dynamic integration of new services and the whole networking part (If you provide e-mail and non-local directory-services on a server in a network they will become avaliable and go with connections to that network automatically and you know that nothing breaks if the network goes in the wrong moment).
Third: It's there, it's finished, it's small. You do not need a full blown CORBA-ORB to use the software. A lookup-service can be small and does not even need to be avaliable for one-UI-operation.

Why java?

Well, it's easy and fast to write something that works in Java. With not having to care about memory-allocation, byte-order and compactability of mobile code it's all much faster.
And if you don't like Java, well, there's JPhyton, there's gcj to compile it, there's the native-API, there's the possibility of a CORBA,SOAP, shared-library-usage, ... -bridge. It's not that bad.
Last point: There's Java3D and a _lot_ of other very good APIs to use. With the JavaSpeech-API you can abstract from the speech-recognition-toolkit. With Java3D we are using a 3D-UI with all you need to represent 2D- and text-representation _easily_. ...you get the idea.

How to add/delete a file from/to the media-DB?

You cannot (yet) delete a single file. You can delete the media-db by deleting bin/mediaplayerervicestate.dat. Adding is done by selecting a URL or m3u in the directory-browser and selecting "index".

How may I help, where to make suggestions?

If you are interested in more information on it or are even willing to participate in it you are advised to subscribe to the jaugment-announce -mailing-list first. This project evolves very fast (new versions come every few days, sometimes even 2 or 4 times in one day) and this way you stay informed about it's status. Not every small step forward gets announced there (we are no spammers) but every important step gets.
The next thing obvisiously is to get the code and try out what we have so far yourself.
And if you find it buggy, incomplete or simply unusable tell us about it (or even better do something about it, it's fairly well documented and easy to read ...most of the time).

How to use desktop-sharing?

In the desktop-sharing-package there is a README in the /doc-directory describing the setup.
The current desktop-sharing aproach will not be developed any further and be replaced by a VNC-based solution in the near future.

What question does the seminat-representation of the media-player understard?

[please] play [something|sth.|some|anything|everything] [random|(named NAMEPART)|(from ARTISTPART)|(of ALBUMPART)|GENRE]*.
something and sth. mean "play 1 file or show all if multiple"
random and some mean "play a random one of the ones found"
everything means "play all that matches"

How to store references to directory-contexts in filesesktop-sharing?

Create a file with a content like:
#
java.naming.factory.object=jaugment2.directory.FileObjectFactory
java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory
java.naming.provider.url=file:///var
Beware that spaces at the end of lines are not ignored!
The syntax is: {environment-property-name}+"="+{value}+"\n"
JNDI already has contexts for LDAP, DNS, file-systems, CORBA-naming, RMI-registry,... . This project develops contexts for dictionaries, phone-books, cook-books, text-archieves,...

What Well-Known-Interfaces(JINI) do you specify

There are others that you can find in each service's package by looking at the {SericeName}IF.java file.
More to be added soon! 

What license do you use?

The Source itself is distributed under the terms of the LGPL with the extension, that all developers must stay named, so you cannot build a commercial application without telling where your code comes from! Some small changes were needed because LGPLs definition of a library does not really fit. But it's the same.
However, there are some libraries used that are not part of the distribution but only the convenience-package that have different licenses. See Doc/LICENSE of the base-distribution for more details.
We do incorporate code from other projects. If that code is distributed under the terms of different licenses and we are not permitted to incorporate it even in binary-form we either try to get a permission to use it or use it exclusively in applications, that only use our infrastructure but are not part of the base-distribution and are distributed under different licenses.
 

How does it work?

(this quote is a bit outdated but still acurate)

first:
jAugment is not a single application.
It is a set of applications collaborating using JINI (and optionally some other means of communication like CORBA and SOAP). There are 3 standart-user-interfaces that are basically service- browsers. Their job is to look for services and a) execute one (of multiple or zero) representation of the ones that they can represent. and b) help the user administrating the services providing known administrative interfaces. c) UIs too provide a means of starting-up services. This is done via the class UIManagerBean parsing the config-file and instanciating any services found with an "execute"-entry. Then of cause whe have the services. A service is a piece of code being executed somewhere. A service has a proxy-class being downloaded to the UI (or another service using this one). Atached to the UI are entries. Some entries are user-interfaces. The proxy provides an administrator-object that allowes (among other things like saying where the service should store it's persistent state) adding and removing entries. This design has a few implications: Another user can write a new representation for a service. A service can be represented in multiple UIs at the same time. A service can be used by multiple users at the same time. New UIs and representations for strange devices can be added very easily and without modifiing existing code or endagering the working-state of the system. Services can be executed on another system in a network (this makes sense for e.g. a WML-browser as you cannot use it offline and it will be found dynamically once you connect to the network). Services and applications have a very easy time using, extending and integrating into each other so you get a mesh of code collaborating and extending each others functionality whereever possible. And finally: It is very easy to allow people meeting online to share new applications, additions and bug-fixes as they can download the code from each other (if allowing to do that, we do have access-control after all) and even give each-other a guided-tour using remote-desktop-sharing.