Projects
Return to main pageCurrent Projects
Matt's C Utility Library
I'm a big believer in code reuse, and since I'm often totally on my own, I have to build on previous work, otherwise I'm totally on my own every time I start a project over. So basically, I end up writing my code and evolving my code to build towards reuse. Over time its gotten better organized, and now its mostly organized into a library. Of course, its accreting stuff all the time. It even loses stuff sometimes. For instance, due to my work on parsing, I have split off the parsing code into a totally separate project.
I posted this project to Freshmeat, and I have a page for it that I designed using CityDesk(part of a previous attempt at having a webpage, and to experiment with CityDesk(which is a good tool for some work, just be ready to buy it, because it limits what you can do otherwise). Here's the page: http://tos.maintree.com/matt/Projects/MattsCUtilityLibrary.html
BaLRoG
Israel Huff and I have wanted to design a massive multiplayer game for a long time. This is an ongoing project, that we both work on, and never have time for. This is the archive of our progress and attempts.
Mandala
What I'm calling Mandala has gone through several iterations of names, but the basic idea is this: All solutions for writing web applications are horrible in my opinion. The goal is to develop a cross between a framework and an application(probably in Java) that allow web application development to procede a much higher level, and to give users control over their websites to reduce loads on system administrators. In the future I will be posting comments from various emails I have had with Will Holcomb(whom is working on his own solutions to these problems), and Wayne Douglas(who is interested in making webpages with such a system) and comments from the Geeks mailing list. I would have put more up here, but time is always short.
IDE Project
After reading a post on LL1 and seeing a webpage on the concept of Source Code In Database I became deeply interested in the idea of writing an Integrated Development Environment. While the ideas of SCID served as an inspiration, I have sense gone into amazing directions with this idea. The basic technology to be used is XML. The IDE will save source code parse trees in an XML intermediate format(and import and export code as necessary, while base-64 encoding any information that could be lost into the comments). Several features this will support: Display of expressions as equations, SVG/MathML/XHTML in comments. Transparent ability to switch between various "views" of the code... and edit the code in ANY of those views. Lisp like Macros for more common languages. XSLT transformations on the source tree, as well as code refactoring support enabled by the better source code representation(renaming variables is a snap). Innovative code visualization features like call graph diagramming. Tool-tips and code completion for everything, including code in your project. Code will be syntactically correct all the time due the ability of the editor to check syntax in real time. CWeb like intermingling of code and documentation and the ability to output views for multiple sources.
Alexandria
After reading Neal Stephenson's "The Diamond Age", I was inspired by the "Young Lady's Illustrated Primer", and I have set out on my own attempt to make a comprehensive "self teaching" program that is complete in itself. In the pursuit of that, Alexandria is meant to be the database that would back such a program. The goal of Alexandria is to be a relational database that in some ways acts like a "user space filesystem". News March 2004:I have started on this project and given it a webpage, it has also morphed into a document management system.
Geeks
This is our "local" hangout, where me and many of my friends talk about software development, science, robotics, and other technical things, with a rounding out of politics and humor when relevant. This page is partially to serve as a placeholder for some of my posts to the mailing list and other "ephemera" from the list as relevant. The list is unmoderated, but membership is moderated.
Small Projects
TeX Bingo
So for the 2004 SuperBowl, the officer's at the Wesley Foundation decided we needed a bingo game at our party. So they needed about 25 random boards. Well, no one wants to sit and type in 25 random rearrangements of the same board, so I wrote a program to do it. The program takes an XML description of the bingo board and the number of variations on the board you want. It then generates a bunch of LaTeX files so you can print it nicely. The files are named 0.tex up to however many versions you wanted. Included in the zip file is an example XML file that should cover it. Oh yeah, its slightly one offish, so don't be surprised if it can be crashed. TeXBingo.zip. Oh yeah, if anyone cares, I'll post the source code under the GPL.
Signal Flow Graph
In my ECE 3210 - Control Systems class we used Signal Flow Graphs to analyze Control systems. This is a nice GUI for entering in graphs and calculating arbitrary transfer functions between nodes. Not all editing functionality complete, and SVG output option never finished. Otherwise it works. Features a nice state machine design for the gui editor. Code available on request. I'll GPL it and post it eventually.
Old Stuff
Programs
- QuickBASIC Code - I first learned to program on a TRS-80 Color Computer II with ROM Basic and 16KB of RAM. If you wanted to save something to long term storage you used a cassette tape recorder. Of course, I don't have any of those first attempts at programming, but when I moved to my first PC system(a 286 with a whopping 640KB of RAM, this time it was a Tandy) I did some major work in the GW-BASIC that came with it, and then I ended up with a copy of QuickBASIC 4.5. This opened a world of programming for me. With QuickBASIC I did several major projects, and made use of Basic in much the same way a *nix sysadmin would use shell scripting - lots of small utilities for little tasks. I made a "Program Shell" for running programs from a menu(at startup), a image editor, a small tetris-like game, random password generator tools. Programs for creating a series of camera positions to make animations with POV-Ray and VistaPro(an old terrain rendering program). The tetris game I originally wrote on my TI-85 calculator, but I got tired of it running at like .5 frames per second, and so I just straight "ported" it to QuickBASIC. These projects are GPL'ed because they are my work and I can license them how I want, I really doubt anyone will find them useful, but if you do, promote Free Software.
- TWHNC - Gallery of Champions - My first "big" project. I had just bought a scanner and my dad wanted a screensaver based on the pictures from the Tennessee Walking Horse Celebration's Gallery of Champions book. It ended up turning into a business venture with the eventual goal of selling multimedia CD's about all things Walking Horses. This is where I learned the lesson(and learned it hard) that you should have the rights to everything you touch, otherwise you may never be ABLE to go anywhere. The Celebration has never done anything like this. Talks with them fell apart due to internal politics and basically, we were stuck with this CD and no where to go. The code for the screensaver is all C, but uses 3rd party library to load JPG's(too little time to get libjpeg working). The actual CD browser is mostly Wizard generated MFC code after a huge ordeal learning how to write COM objects and embedding Internet Explorer in C code. For what its worth, I would let anyone look at the code, but first ask yourself: Why?
- Blue 3D Engine - This started as a software 3D engine running under DOS. The actual texture mapping code for this was written by Israel Huff, along with some of the really low level timing, and graphics code, but the actual scene graph stuff was all mine(including all the transformations and animation code, as well as overall design). Somewhere in the middle of this I got a Voodoo Rush 3D Accelerator, so I started porting it all to Windows and GLide(which is now so defunct its not funny). Anyway, I never finished the port(required rewriting the texture management code to download it to the card, and the Fall Semester had started). Its all in C with a little bit of assembly in the DOS code, and compiles under DJGPP for DOS, the Windows code is not worth talking about however. Code available on request. I'll post it once I add suitable licensing notices to all the files(all mine will be GPL'ed, I need to ask Israel what he wants with his).
- URHOEA - Championship Spotlight CD-ROM - Multimedia CD's Round 2. I learned some lessons, but there were still others lurking in the background. This time, we got involved with the United Racking Horse Owners and Exhibitors Association and they were having their first Championship horse show. This time we paid the photographer for full rights to the pictures, and since we were all in from the get-go, all relevant rights were secured. The problems: The pictures were too expensive(and so there were very few pictures), and 8 people bought the first years copy, but NO ONE ordered the 2nd year's, so I abandoned the effort. The technology development for this one reflects a lot more experience though. I decided against using HTML due to rendering and scaling issues, and the fact that I was writing my own parser made the quirks of HTML more annoying(I knew not of Parser Generators at the time). In fact, many of my problems with HTML anticipated the development and deployment of both XML and CSS(this was 1999). I wrote my own web browser with my own rendering/hyperlink language. Its all 100% C code(~6000 lines), and I wrote all of it(except the PCX loader, but I HEAVILY modified it. It came from Israel Huff). Code is available on request, and I'll post it once I add GPL notices through all the files.
- Address Book - Israel wanted some example windows code for a program he was writing, so I gave him a full blown framework, but in the process I wrote an example app using everything he would need. This turned into a rather small, but useful address book program. I used it for a long time, but unfortunately, my Palm Pilot had its own address book, and keeping it synced was far more useful than maintaining this separately. Code available on request. As usual, when I add the GPL notices, I'll post the source.
- Majority Opinion System - UPDATE 11-2005 Premier Horse Show Management System is the fulfillment of my plan to write a horse show management system. Anyway, it incorporates the Majority Opinion Scoring so for those looking for something along those lines, enjoy. I've started getting several emails about this, and I realized I needed to update this page to point the way forward.End Update - More hard lessons. I don't know WHY I keep writing code for stuff involving horses. This time around it was a scoring program for 3 judge horse shows. All based on information in an article from TWHNC show program. I'm not sure if its a correct implementation of the algorithm, but its been heavily tested and matches with all results given by other programmers, but so few people understand the system I doubt anyone would catch the problems, the mistakes all lie in boundary cases, but like I said, I think I've found all of them and worked them all out. The problems? I was originally contracted to write it for the East Tennessee Walking Horse Association so they wouldn't have to pay a hand scorer and rely on borrowing laptops from others. The reneged 75% through writing the code. I ended up getting paid to score the 3rd URHOEA Celebration though, which recovered the contract amount. It was originally supposed to have a nice GUI, but I never wrote it since I'm the only person who has ever used it. Code is NOT available on request. Personally, I'm free about everything, but if I posted an executable(and maybe even the source) some horse person would download the program and use it free in their horse show(or worse, give it ETWHA, who was supposed to PAY me for this program). So the code is only available if you can prove to me that you will NEVER let this fall into the hands of anyone who runs a horse show or would use it score a horse show.
- fRISCee uP(RISC Is Super Complicated) - My senior design project for ECE 4120. Features innovative use of support tools to make a complete computer system. The name(fRISCee) is the teacher's, but the team name(the recursive acronym) was inspired by my desire to have at least something cool(someone else came up with the acrony). It is a VERY complete, it comes with assembler and emulator as well. The documentation is the work of my entire team, but the code is 100% mine. The final code is VHDL, but I used a code generator to make that, but it was modified from the generated code by hand in the "last mile stretch"(rather than fix the code generator's broken parts). Code for various pieces available on request. Still deciding the best way to put this on the net(requires an Altera Max environment as well as Flex10K FPGA dev board).
- VHDL Macro Tool - VHDL is a horrid language. I cannot stand it. So, being a programmer, I wrote a code generator and then used that to do all my work. Its pretty complete, and almost everything you would wish to do can be done in my language, which is weaker in its forcing of typing issues(it figures out what you meant), and features a very complete tool for the generation of Finite State Machines(Moore and Mealy style) from Transition Lists. This development strain is now abandoned though. Three quarters of the way through this I had a "blinding flash" of inspiration and realized how to make a MUCH better language than this or VHDL. Future developments will follow that strain. Code is mostly available on request, but you must agree to never ever give to Dr. Haggard at TTU.
- The Dirty Rat - During the Spring 2003 semester, I took a class in robotics offered at my university. This is the page describing the robot we built and what we learned. Lots of pictures.
Papers
- I Know Script Fu: An Introduction to using Scheme to Script the GIMP - This is a presentation I wrote up to for my Math 6460 - Computer Methods for Graphics and Modelling Class. Its got a decent introduction to the barest essentials of Scheme, and what it takes to do stuff in the GIMP, and several pretty pictures.
- I Want My MP3: Intellectual Property in the Information Age - I wrote this in Spring 2001 for the Tennessee Honors Conference. Its really dated now, and a lot of stuff has changed. I'm posting it mostly for historical purposes.
- Wavelets - This isn't actually code, but its got enough information to go write some code if you know basic Digital Signal Processing algorithms. This is a paper I wrote for my ECE 402 class in Digital Signal Processing.
Web Applications
- Showhorsetimes.com - The United Show Horse Times online version. Probably the coolest feature of the site is the results database which now has about 4 years of horse show results in it. My first web application ever, so its rough in spots. I eventually hoped to extendto it into a full blown online newspaper system, and the results database part into a full blown horse show management tool, with instant online results, and even built-in MOS Scoring. It was originally writte in PerlScript and Active Server Pages, but due to some problems and documentation issues, I eventually switched to VBScript. Its backed by an MS SQL Server database. Code available on request.
- PC Lab Inventory - This is a tool I wrote for Gary Andraza and Frank Bush to inventory the PC Labs and keep track of their software. I thought that it would eventually be linked from Tech's PC Lab webpage, but its not, so its just sitting there in oblivion. But they actually use it, so its up to date on the software and hardware in all labs on campus. Its written in VBScript and Active Server Pages with an MS Access database. Code available on request.
- Babel - My final big web application project before I "got out" of doing them for a while. Its a pretty much what Showhorsetimes.com should have been, minus the results database code. The idea was to make a community site where I could blog and have discussion boards. Somewhere along the way, the code stopped working(due to the particular way I was making use of databases). Its written in VB Script, backed by an MS Access Database. Code is available on request. As always, one day, I'll put GPL notices in the source and then post it.