Programs I have written
programs..
In my spare time I work on the projects on this page. Some of them, I consider to be completed, like TkNotePad. These are are all released as "Open Source". These programs are provided as is and with no warranty expressed or implied! While I have tested them, I am not responsible for anything that might happen if you use them. They just might not work the way you think that they should!
Please notify me if you intend to include any of this software as a part of any distribution or mirror site. Thank you! Email me with any questions or comments.

NOTE: Unless otherwise specified, these programs are all released under the GPL. If not supplied with the software in a License file then the GPL can be found here gpl.html.

C

godura-0.6.4.tar.gz
This is a simple editor that requires gtk2.0+. It will not work with earlier version of gtk+. It is basically an implementation of my Tk Notepad Editor. It is not complete. See the INSTALL, README, TODO, and KNOWNBUGS first. screen shot. NOTE: This is pretty STABLE.

GUTime-0.1.1.tar.gz
This is a simple uptime applet for the GNOME panel. It was basically take from the GNOME Applets example and enhanced. It now installs the the .server file. This is the first release for gtk 2.x and GNOME 2.x on x86 Linux machines only. Here is a screen shot. NOTE: This is considered STABLE.

mpstat-0.1.1.tar.bz2
Unmaintained
This is a program that I have hacked for Linux specifically. It was hacked from the source code to vmstat.c. The mpstat.c file I have written no longer needs procps in order to compile. Here is a screen shot . NOTE: this is INCOMPLETE but STABLE as of 2 July, 1999.


Tcl/Tk

Tk Notepad version 0.8.0 TkNotePad by Joseph Acosta. Click here to download.
When I first started using Linux I could not find any good text editors, other than vi and Emacs. There were other editors, but often I could not get them to compile or they did not work the way I expected them to, or they were just to different. I soon came across a Tcl/Tk program, that had a bug in it and fixed it. I found Tcl/Tk to be a rather easy to understand language. I then decided to learn more about Tcl/Tk and bought a book on Tcl/Tk. Soon I had written a basic editor that could read and write a file and TkNotepad was born. I then decided on a design that I would find familiar to myself. I decided to mimic the behavior of MS Windows Notepad. A simple editor that had cut, copy and paste, and a few other features. It now mimics most of the behavior of Notepad, and has a few added features like unlimited Undo/Redo. It does not print under Windows, or Mac, but it will run on those platforms and all the other functionality works. It was written entirely in Tcl/Tk. I consider it to be completed, as most of the known bugs are now removed. I will continue to work on removing those last bugs and some code cleanups, but there will probably not be any new features added. It is very stable and I use it quite frequently myself. Originally it was designed using Tcl7.6/Tk4.2, but now it has since moved to Tcl8.4/Tk8.4 and no longer works with Tcl 7.6 / Tk 4.2. Although it is designed to resemble Notepad for windows it also runs on Linux, and other UNIX flavors, Windows 95/98/NT, and I have been informed that it works on Macintosh also.
It was written once and runs anywhere, but it's BETTER on LINUX!
Here is a screen shot taken with gimp for Linux.


JavaScript

WebBrowser
This is a WebBrowser Object that I have created. Originally it was designed for browser sniffing, but now it can do a little more. It is now comprised of a few files. The WebBrowser object now includes AJAX functionality and makes doing AJAX with XML a little bit easier. The AJAX object incorporats AJAX and XML parsing into one object. While it does not solve all of the AJAX issues, it does handle the cross browser initialization of the AJAX XMLHttpRequest object, and also has two async functions for GET and POST of requests.
Currently Supported browsers are IE4 thought IE7, Gecko based browsers, Opera 6 and later, and MAC OS X's Safari (?.?) and Konqueror 3.x.
 
First include the WebBrowser object base functionality:
<script type="text/javascript" src="wb/WebBrowser.js"></script>

WebBrowser.name; // browser name
WebBrowser.capabilitiesDetected; // true if the browser name was detected from its capabilities
WebBrowser.screen.maxx; // maximum browser X width etc... use the source to find out more
 
 
To do AJAX with the WebBrowser object:
Use:
create your call back function.
function xmltext() {
    if ( this.xmlhttp.readyState == 4 ) {
        // get the document
        var xml = this.xmlhttp.responseText;
        // or get as DOM tree model
        var doc = this.getAsXMLDocument();
        // you now have an XML document parsed, and usable in most modern browsers,
        // like IE, Firefox, and it should work in Opera, Safari, and other browsers too.
        // So using doc.getElementsByTagName() will give you the XML elements
        // with a specific tag name and let you access your document.
    }
}
then you need to add a function like below if you want the request to be made when the page loads:
function doAjaxStuff() {
    var ajaxObj = new WebBrowser.ajax();
    ajaxObj.get(xmltext, "/pathtofile/yourXMLfile.xml", null);
}
WebBrowser.addOnLoad(doAjaxStuff);

Calendar Examples
The calendar is now part of the WebBrowser package.
and the CSS that goes with it calendar.css is in that package

To use the calendar now:
<script type="text/javascript" src="wb/WebBrowser.js"></script>

<div id="calendarID"></div>


function loadScreen() {
  var webCal = new WebBrowser.calendar("calendarID"); // pass id of parent object
  webCal.render(); // render the calendar
}
WebBrowser.addOnLoad(loadScreen);

calculator.js
This was my first real javascript page. It is basically a calculator that is done using HTML forms and JavaScript. I originally did this program in 1996 and it was not till late 1999 that I started modifying it again. In mid 2000 I re-implemented the calculator to make it work better. There is at least one bug that I know of, but it basically works. It does multiplication, division, addition, subtraction, cosine, sine, tangent, inverse (1/x), x^y, arccos, arcsin, arctan and a few other functions. I may make some more additions to improve it and make it truly useful on the web. You can try it out here.

My alternate calculator, which is based on the WebBrowser object and so requires WebBrowser.js. This is still a work in progress, but seems to bea cleaner implementation and works better. It can be seen here. You need to include WebBrowser.js. First include the WebBrowser object base functionality:
<script type="text/javascript" src="wb/WebBrowser.js"></script>

<div id="calcID"></div>


function loadScreen() {
  var webCalc = new WebBrowser.GUICalculator("calcID"); // pass id of parent object
  webCalc.render(); // render the calculator
}
WebBrowser.events.addOnLoad(loadScreen);

digitalclock.js
This is a little digital clock form 'modern' browsers. Currently Supported browsers those that support the document.getElementById, the Date object, the setTimeout() function, and Object.innerHTML. It is a good idea to get the WebBrowser object and use it for browser detection and upon detecing a supported browser then call this code. Currently just download the clock and
 
Use:
Create the script tag and set src= to the downloaded file.
Then a div or span on the page where you want the clock on the page.
Lastly, create the DigitalClock, set its id and start it.
myclock = new DigitalClock();
myclock.setId(clockId);
myclock.startClock();
                        // clockId is the id of the div that the clock will run in.
                        // The element should already be created.
                        // It is typically a div, but any element that supports innerHTML should work.


PHP

ascii_table.php.tar.gz
This is my php script to generate the ascii table. It also generates the extended ascii table. For the ascii table this script shows the decimal value, the character that they represent and also the equivelant octal, hexadecimal, and binary values. For the extended ascii table it only shows the decimal value, and the equivelant octal, hexadecimal, and binary values. The output can be viewed here.


Perl

apcupsdconf.20010129.tar.gz
Unmaintained
This is my web based application to configure Apcupsd. Apcupsd is the apc ups daemon. This tool, when used in conjunction with Apcupsd, makes it slightly easier to configure the apcupsd.conf file, by informing the user when an error may occur in a selected configuration. A few screen shots can be seen here, here, here, and here.


Java / JSP

jwmailapp.20090922.tar.gz
This is a complete refactor of the the original 2001 codebase. The first refactor was in 2006, this has taken the 2006 code and refactored it again. The old POP3 class has been refactored into a new POP3Service. The old using mail tag files to send mail have been replaced by an SMTPService. Struts and tiles have been implemented, so there are now two layouts, one for ajax and one for regular pages. Configuration is done via an XML file for the pop mail server. JavaScript and AJAX are used for reading messages and refreshing the inbox.

Right now you can only have one pop server because that is specifed in xml config file. This may change in a future release.

The UI works but it is not considered completely polished at this time. It needs a 'design' touch as well the ability to send and recieve attachments.
Pictures can be found here, here, here, and here.