Gregory J. Weston

Other contact information available on request.


Last Update: 2007-08-13

New Jersey Institute of Technology

09/1988 - 05/1994

Major in Applied Math; minor in Science, Technology, and Society; heavy load of computer science courses. Well, this is a bit embarassing, actually. I didn't finish. Had GPA in minor and CS areas in excess of 3.7. Overall GPA wasn't that hot and I burned out near the end. The troublesome areas were things like partial differential equations; I couldn't find a book or person who could help me get it into my head. Courses relevant to programming like linear algebra, probability, and traditional calculus were fine.

Very Comfortable

C, C++, Objective-C, Pascal


BASIC, Java, Smalltalk, SQL

Out of practice

APL, Forth, ForTran, Lisp, NEAT/3, Prolog, various assembly, others that no-one uses any more

(Alphabetically) Apple II, BeOS, Java, MacOS, Mac OS X, PalmOS, Un*x (various), VRX, Windows (16- & 32-bit)

Encryption, Interface Design, Machine Intelligence, Networking & Communications, Oracle DBA, Tool Development

Fencing, Ice Hockey, Reading. I also write utilities and entertainment software in my free time. Current focus along those lines is a Mac OS X system enhancement called Compost.

  1. Most effective with a hands-off management style.

  1. Arbitrary decisions when relevant data recommend a solution.

  2. The favoring of unsupported personal bias over relevant knowledge and experience in the decision-making process.

I expect that I get hired because the skills and experience I have are considered valuable. I don't work well with a supervisor who is aware of my background, yet ignores my input in relevant situations because it conflicts with personal opinions, biases, or incorrect/outdated information. The goal of professional software development, as in most fields, is to maximize ROI. Companies that allow what amounts to religion to interfere with or replace analysis of a business situation do not want to hire me.

  1. Cooking, musical composition, and programming are the same thing. If you can do any of them, then you can do all of them if you want. In each case, you're given a set of ingredients which, used correctly, can be turned into wonderful things. The amazing part is that a relative small set of components can be combined in so many interesting ways. Memorization can make you competent in each endeavor, but there's a feel you acquire after a while that gets you across the threshold from technician to craftsman. It takes practice; it takes dedication. The people who are willing to invest that effort are the ones who write the music that sticks with you, the food that's a fond memory for months after it's eaten, and the programs that are an extension of the user's will.

  2. There are some skills that all programmers should have under their belts. One of them is some knowledge of assembly. There're an awful lot of people floating around who will claim assembly languages are completely useless in the modern world. Not so! I would recommend that every serious programmer should at least learn a simple assembly language. Doesn't have to be relevant to anything you want to do. Learn 6502; it's got a small, simple instruction set. The point is not to learn how to program a 6502. It's to learn how the computer sees your code. On the typical basic computer architecture, you can add, compare, and jump; everything else builds on those. Understanding approximately what the compiler turns your code into is essential to writing efficient code.

  3. In general, programmers should know as many languages as possible. Keep learning new ones. Why? Easy; every computer language in existence is a reaction by its creator(s) to a need they had - a shortcoming they perceived in the alternatives. Consequently, each language has it's own strengths and weaknesses reflecting the priorities of the designer(s). Knowing several languages allows the developer to match the implementation tools to the task at hand.


Silicon Shaman, LLC

Avon CT 06001

11/2006 - present

Running my own business doing freelance software development.


135 Darling Drive, Avon CT 06001

10/1994 - 11/2006

Hired as an entry-level programmer for the mainframe, and rapidly commended and promoted to more fun and interesting duties.

  1. Last responsibilities included design and implementation of large-scale systems, mentoring/advising smaller projects and supporting compliance with in-house and industry standards.

  2. Part of the team responsible for moving from mainframe to a robust client-server system. Particularly involved in interfacing existing front-end processes to the new back-end online and moving the new back-end from single-client roots to a service bureau focus.

  3. Worked with another developer and related team to create a desktop-based loan servicing suite.

  4. Maintenance of several pre-existing desktop solutions.

  5. Created a serial arbitration mechanism to allow simultaneous access to the mainframe by multiple client processes.

  6. Created several utility programs for internal or client use.

  7. Conversion of several mainframe programs to more efficient storage mechanisms.

Nations' Care (EBI Companies)

192 Scott Swamp Road, Farmington CT 06032

06/1990 - 06/1994


Programming Languages



& Skills