Wednesday, February 28, 2007

Mozilla Firefox 2

The web browser Mozilla Firefox 2 was released last week. It is included in my list of useful Open Source software on the CroftSoft Links webpage.

Get Firefox

Sunday, January 28, 2007

Interface Slot

I wrote a Java programming tutorial on Interface Slot, a new interface class to be used as a mail slot for receiving messages to be processed, stored, or relayed.

Saturday, December 16, 2006

CroftSoft Slideshow

CroftSoft Slideshow presents a slideshow of your pictures. It is a conversion of the CroftSoft Savor Pix screensaver to an applet and a desktop application. It requires Java 6. Take a peek at the source code.


Tuesday, December 12, 2006

Java 6

Java 6 was released today. You can download it here.

In the past I would always switch to the latest release of Java as soon as it was out of beta. For Java 5, however, I waited a year or so until there was also a Java 5 implementation for the Mac since we did not want to exclude any of our users. I think that proved to be a mistake for a number of reasons. This time I am upgrading immediately.


Sunday, December 10, 2006

Slideshow Screensaver

I created a slideshow screensaver for Windows, CroftSoft Savor Pix. It displays the images in your "My Pictures" directory and subdirectories in random order. You can configure the slideshow speed and turn on a display of the filename path. Pressing the spacebar skips to the next image.

I know that there are screensavers that come installed with Windows that already do this sort of thing but I wanted to create one that I could customize. Here is the source code.

Tuesday, November 28, 2006

Program D Client

I have created a Java user interface client for the Program D chatbot server, CroftSoft Client. It comes in three flavors: applet, desktop application, and desktop application with speech synthesis.

I also started a new tutorial, Program D Setup on JBoss.

Thursday, October 26, 2006

A.I. Chatbots

I just signed a short contract with Terasem Movement to create an A.I. chatbot web application. The goal is to enable users to create chatbots representing themselves by uploading customized Artificial Intelligence Markup Language (AIML) files. I have already had some success installing and testing Program D, an Open Source Java A.L.I.C.E. interpreter.

If I have time, I hope to add speech synthesis for output. At my previous job, we were able to combine an Open Source Java text-to-speech (TTS) engine FreeTTS with the Speech Synthesis Markup Language (SSML). This was a favorite feature of my children as they delighted in typing in text to make the computer say whatever they wanted. This promises to be a fun project.

It is wonderful to be able to combine all of these Open Source components to create a new application. Fortunately I will be able to contribute this effort to the Open Source community as well. Look for the source code to start appearing in the CroftSoft Code Library in the days ahead.

Sunday, October 01, 2006

Savor Screensaver

I wrote my first screensaver, CroftSoft Savor, using the early access SaverBeans Screensaver SDK version 0.2. So far I have only deployed it on Windows but since the SaverBeans SDK is Java-based it should be cross-platform. After you have a chance to download and install it, take a peek at the source code.


Tuesday, September 26, 2006

Interface APIs

Last night I started the Java 3D Interfaces (J3DI) API. J3DI is an "interface API". An interface API provides interfaces for the concrete and abstract classes of another API. The purpose is to be able to program your applications to the interface API so that you can swap out the underlying implementation at compile-time or run-time without additional coding. Applications and libraries programmed to manipulate instances of the interfaces will work with any of the implementations. Wrapper classes are used to adapt implementations to the interface API. They also shield application code from changes in the implementation APIs as they evolve over time.

J3DI is based on the Java 3D scene graph API. Sun Microsystems provides a public source reference implementation. Xith is an Open Source implementation of the Java 3D API with a few deviations. I developed a COLLADA loader for the Xith API. I also created a multiplayer game prototype and a 3D browser based on Xith. I am modifying the COLLADA loader, the game, and the browser to work with J3DI instead so that they can use either Java 3D or Xith as the underlying implementation.

Using J3DI also gives me the flexibility to experiment with a new implementation under development while retaining compatibility with working implementations. I am toying with a J3DI implementation (JIMP) that will render using another interface API, JIGL. No wrapper classes will be needed as the concrete classes will implement the J3DI interfaces directly. You can take a look at what I have so far in the project source code repository for J3DI, JIMP, and JIGL.