Cappuccino

Today, Travis has mentioned he may want to work on Cappuccino (formerly known has HotCap). We have decided that WPF may be the way to go. We will see if we can get this project some steam again and get a beta version up and running soon.

03/08/2008

DIFF a tree?

Today I created a DIFF of a tree. It uses recursion and some nice little techniques like setting the Tag for each TreeNode to the associated TreeNode of the other side so they are synchronized when selected / collapsing / expanding a TreeNode. Below are some screenshots of the results:

11/27/2007

Add some humor into your code

Why not enternain the user with your code? Especially errors. Of course I would only recommend this for those rarer exceptions.
if  (_fixFileErrorCount < _maxFixFileErrorCount)
{
    _fixFileErrorCount++
;

    bool 
isLastTime  (_fixFileErrorCount  ==  _maxFixFileErrorCount) ;
    bool 
isNextToLastTime  (_fixFileErrorCount  ==  _maxFixFileErrorCount -  1 ) ;
    bool 
isNextToNextLastTime  (_fixFileErrorCount  ==  _maxFixFileErrorCount -  2 ) ;
    
String message  = null;
    if 
(isNextToNextLastTime)
    {
        message 
=
            
"FIX FILE EXCEPTION (printer on fire): "  + e.Message ;
    
}
    
else if  (isNextToLastTime)
    {
        message 
=
            
"FIX FILE EXCEPTION (I was just kidding, the printer is not on fire): "  + e.Message ;
    
}
    
else if  (isLastTime)
    {
        message 
=
            
"FIX FILE EXCEPTION (ok, maybe you should check the printer): "  + e.Message ;
    
}
    
else
    
{
        message 
"FIX FILE EXCEPTION: "  + e.Message ;
    
}
    Errors.Add(message)
;
}

11/15/2007

SQL to CSV

Noticing a co-worker was Unhappy with SQL Server's too many clicking to save a text file from a query, I whipped up a quick little SQL to CSV converter. Download now. This is a .NET 2.0 application, so you will need the .NET 2.0 framework to run.


The main interface for SQL to CSV.

10/24/2007

File Text Box

I created a file text box in .NET 2.0. Source code may follow.


Here is the text control with no file selected. The icon on the left is actually a browse button, which can be clicked at any time.


Start typing, and you get intellisense-like help.


Select a file from the list.


After selecting a file, the icon for that file displays.

10/22/2007

Easter Eggs

What would a program or system be without easter eggs? Boring, I say. Today I added an Easter Egg to the program I have been working on for awhile now. To activate the Easter Egg, all you do is type in "idkfa" in the main window, then a simple window shows up scrolling some text and plays some music. Below are some screenshots:


Yay1.


Yay2.

Oh yea, this same mechanism for unlocking this Easter Egg is also the same mechanism for unlocking another Easter Egg I created. Da Frito code? Maybe. Something else? More likely.

10/08/2007

Extensibility++

Even more features are happening with the little plugin extensibility. Now plugins can have their own settings and it is integrated to the settings form. The plugin that I am working on is a verification plugin where certain fields called holy fields need to be verified before commiting to the actual database. The plugin adds buttons to the main form and shows which fields need to be verified by changing the background color of the field in the user interface. Below are a few screenshots of the plugin in action.


The two buttons are added at the bottom of the main user interface. The unverified button has already been clicked.


After opening the record, the unverified fields are highlighted.


After opening the sub-record, the unverified fields are highlighted and default values are put in.


This tab is generated by the plugin. As you can see you can change the highlight color if you wanted to.

09/18/2007

Extensibility

Still working on SAFE OBM Manager, which will have a name change soon. The main new feature I added was extensibility through plugins. To implement plugins, I scan the plugins directory underneath the application directory. Using reflection, each assembly is loaded and scanned for types that implement the plugin interfaces. Each type is instantiated and stored for use.

Furthermore, an assembly can be uploaded to the database so next time a client connects, they will download the plugin and be up-to-date when it comes to plugins. Naturally, the last time plugins were successfully downloaded is stored on the client's computer so the entire set of plugins will not be downloaded over and over. Below is a screen shot of the plugin manager page in order to upload / delete plugin assemblies.


The plugin manager.


The "World" and "Hello" buttons were added by the dynamically loaded plugins.

09/18/2007

SAFE OBM Manager

Taking a break off of SAFE Swift Reports while it is being tested, I started working on another project called SAFE OBM Manager which is basically a front-end for editing multiple databases. Each database is a list of politically exposed persons (PEPs) fed in daily from each respective source. Anyways, the solution I came up with makes it so I can change the user interface and behavior very easily by just changing the "OBM_DESIGNER". Below are many screenshots.

09/06/2007

SAFE Swift Report Services

After working hard on the Swift parser and importer, it is now time to move on to the report background services where you can schedule a report to be ran from the front-end GUI and the reports will be ran daily, weekly, monthly, interval, etc. By abstracting the database access to a seperate module, this made the job of creating the service and generating the reports as easy as ... something that is very easy to do.

08/16/2007

Wormy!

Wormy. Wormy was a game I made while I was bored and in college. Come to think of it, I made a lot of stuff when I was in college. In all I was a much more interesting person back then. Today, I'm just boring and barely creative at all. Where has all the creativity gone!? Probably sucked out by watching too much TV. Mmmmm, TV. Anyways, follow the link at the end of this sentence for Wormy. Oh, you will need a Java 1.4.2 enabled browser or greater to run it.

08/2/2007

Burninate SAFE Swift Reports

Great progress has been made in rewriting SAFE Swift Reports. However, the initial project steam has been lacking a bit lately, so I will take a little pause to upload some pictures of the application.

07/31/2007

Burninate SAFE Swift Reports

Great progress has been made in rewriting SAFE Swift Reports. However, the initial project steam has been lacking a bit lately, so I will take a little pause to upload some pictures of the application.

Main form for SAFE Swift Reports
The main form for SAFE Swift Reports

Reports menu
The menu is built dynamically from the database

Selection Criteria
What the selection criteria looks like for a report

Selection Criteria
The selection criteria form is pseudo-generated by what is stored in the database

07/31/2007

SAFE Swift Reports

The past two days have been hardcore programming trying to get the fat front-end of a C++ program converted to .NET. In two days we have been able to convert probably over half of the functionality and features over. The reason for hardcore converting is my company actually sold the software which was written over 5 years ago and was never really tested / completed.

I am not complaining by any means necessary, especially since we have about 2 months to get it working. I kind of actually like working under pressure and I always love starting new projects. However, I hardly ever finish any of the projects I start for some reason.

7/27/2007

My First Firefox Extension

I created my first Firefox extension today for the HTML annotator I am working on for my job. All the extension does is install a menu item and a toolbar item. When either is clicked, it simply opens a new tab sending the URL to the annotation engine. Below are a couple of images of the extension. Getting the extension to work was fairly easy once you start with a set of skeleton code. In total it probably took me a couple of hours to get the extension to work.

I will post more information about the HTML annotator soon.

Firefox add-ons with SAFE Note Web
Add-ons dialog.

Firefox add-ons with SAFE Note Web
Firefox's toolbar

Firefox add-ons with SAFE Note Web
Settings dialog.

7/24/2007