Home Resume Web Tools I Created Links Contact Me

This website is for maintaining an easily accessible current version of my resume and to view samples of concepts and complete databases and applications I have done.   Everything displayed on this site was done as projects where I was the sole developer from inception to completion.

Most of the applications require a login and password.   A prompt message box will appear to inform you of the needed information when you first click to view it.   Password access can be enabled by contacting me for a demonstration with dummy data.   Once logged in, you are free to play around and test it.  

While on this site, as you navigate between the pages, you may notice the transition is instant.   This is because you are not moving back and forth to the server, but are instead executing code on your local machine.   When you first come to the site, you download code that totals approximately 50 kilobytes, less than an old-fashioned modem style connection downloads in one second.   From that point on, you donít navigate away from the page, but merely execute from within the code that is already downloaded.

By no means does this website contain all my work, ... only samples to demonstrate some concepts Iíve created and implemented.

Things that Distinguish GREAT Programmers!

  • Know the Concepts. Solving a problem via memory or pattern recognition is much faster than solving it by reason alone. If you've solved a similar problem before, you'll be able to recall that solution intuitively. Failing that, if you at least keep up with current research and projects related to your own you'll have a much better idea where to turn for inspiration. Solving a problem "automatically" might seem like magic to others, but it's really an application of "practice practice practice" as Miguel Paraz suggests.>/li>
  • Know the Tools. This is not an end in itself, but a way to maintain "flow" while programming. Every time you have to think about how to make your editor or version-control system or debugger do what you want, it bumps you out of your higher-level thought process. These "micro-interruptions" are small, but they add up quickly. People who learn their tools, practice using their tools, and automate things that the tools can't do by themselves can easily be several times as productive as those who do none of those things.>/li>
  • Manage Time. Again it comes back to flow. If you want to write code, write code. If you want to review a bunch of patches, review a bunch of patches. If you want to brainstorm on new algorithms . . . you get the idea. Don't try to do all three together, and certainly don't interrupt yourself with email or IRC or Twitter or Quora. ;) Get your mind set to do one thing, then do that thing for a good block of time before you switch to doing something else.>/li>
  • Prioritize. This is the area where I constantly see people fail. Every problem worth tackling has many facets. Often, solving one part of the problem will make solving the others easier. Therefore, getting the order right really matters. I'm afraid there's no simple answer for how to recognize that order, but as you gain more experience within a problem domain - practice again - you'll develop a set of heuristics that will guide you.>/li>
  • Reuse Everything. Reuse ideas. Reuse code. Every time you turn a new problem into a problem you already know how to solve - and computing is full of such opportunities - you can save time. Don't worry if the transformed solution isn't absolutely perfect for the current problem. You can refine later if you really need to, and most often you'll find that you're better off moving on to the next problem.>/li>
Keep 
It 
Simple and 
Straight-forward