Gob's OS

I'm a hipster so I like Arrested Development. Ever see the one with Gob's Program? Well, it got promoted to a x86 operating system.

source code
floppy disk image
If you have QEMU installed you can run it like this: qemu -fda gob.flp
Or if you have a 32 bit machine you can put this on a cd or usb drive or whatever and it should boot no problem.

FlipPanel

I wrote an article on Codeproject a few years ago about a Panel control that has two sides. The idea is that you maybe want to display different sets of similar information, but not at the same time. So, you put one set on the back and one on the front and you can flip it over. it animates the transition as you can see in the low-quality .gif

source code with test program
original codeproject article

LCalc

i got an android phone a while ago, and i've been working on a calculator for it. i found that there wasn't a powerful calculator available that can do things like mod and natural logs and show you the calculation history, so i started writing one. its turned out to be a lot of work, but its pretty useful. my calculator is based off of a sablecc generated compiler, so its a lot more like matlab than a regular desk calculator.
since i often end up wanting to do calculations not on my phone, i put a java gui around the math classes and here it is.

lcalc jar file
run it with java -jar lcalc.jar

how to owner draw a UI component in java

hoo boy. i just spent like an hour trying to figure out how to draw a custom JButton. what a pain. i think i may have just searched for the wrong words since i keep thinking of it in terms of C#. the key part is the paintComponent method at the bottom. anyways, here's some code:

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.*;
import java.awt.FontMetrics;

public class javaTest
{
    public javaTest() {
	initComponents();
    }

    private void initComponents()
    {
	AwesomeButton ab = new AwesomeButton("zomg");
	ab.setSize(50, 100);
	ab.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
		    System.out.println("pushed");
		}
	    });
	JFrame frame = new JFrame("button test");
	frame.setLayout(new GridLayout(2, 2));
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.add(ab);
	frame.setSize(200, 200);
	frame.setVisible(true);
    }

    public static void main(String[] args)
    {
	javaTest jt = new javaTest();
    }
}

class AwesomeButton extends JButton 
{
    public AwesomeButton(String text)
    {
	super(text);
    }
    public void paintComponent(Graphics g)
    {
	super.paintComponent(g);
	System.out.println("paint");
	if(getModel().isPressed())
	    g.setColor(Color.black);
	else
	    g.setColor(Color.blue);
	g.fillRect(0, 0, this.getWidth(), this.getHeight());
	g.drawLine(0, 0, this.getWidth(), this.getHeight());
	g.drawLine(this.getWidth(), 0, 0, this.getHeight());

	if(getModel().isPressed())
	    g.setColor(Color.blue);
	else
	    g.setColor(Color.black);
	FontMetrics fm = g.getFontMetrics();
	g.drawString(getText(), this.getWidth() - fm.stringWidth(getText()),
		     this.getHeight() - fm.getHeight() / 2);
    }
}

glCovers

Ok, I got a working alpha version of my CoverFlow clone working. It's really buggy though, so use it at your own risk. Here's a screenshot:

The biggest known issues with it right now are:

Source
Executable

bzzVS

I've got a real problem with code versioning systems. It's that they have a lot of features. I'm not interested in that mess. So, I made a program that doesn't have any features. What I really want to do is have a thumbdrive that I store all of my versions on and I can check those versions out and modify them. So, I did that. It's called bzzVS. It's sort of lame, but I find it more useful than subversion or CVS. I guess that's since I constantly have to move code between computers that aren't networked. Anyways, once you install this program, you can drag folders onto it, and it archives them. I use it by putting the executable on a thumbdrive, and at the end of the day when I want to save some source file, I drag the folder onto that icon, and it takes care of the rest. Then, the next day, I can double-click the icon and see what versions I have. If you right-click on a version, you can check it out to any folder. Oh yeah, it's hot.

Screen Shot
Source Code and Executable

Cowgirl Platform Simulator

Here's the simulation environment for my Cowgirl Platform. It's a pretty good example of how to simulate assembly code, although it's not exactly complete. I'll be working on it a little more. What I really need for it is a way to manipulate bits using C#.

Executable and Sample Assembly File
Source Code

StarScream

Here's an exciting sound experiment. It's based on Conway's Game of Life, but instead of being a boring zero-player game, it generates music. It's pretty beta right now, but I've proven to myself that it can generate interesting sounds, so I'll probably do some more work on it. Even though it's beta, it's stable, so it shouldn't crash. If it does, let me know so I can fix it.

I've just written some software to create html out of a Visual Studio project, so I've used it to create an area to browse through to code. Click on the Code Browser link below to look at it.

StarScream.zip
Code Browser
Screen Shot

CodeSiter

Alright, I did some updating of this code, because I've found it to be very useful for some things, but it was barely usable. So, here are the features I've added:

I'm pretty sure I broke some of the old features when I added these, but they weren't very useful features anyways. I don't have a lot to do today, so maybe I'll fix those.

Code Browser Sample
Source and Executable