Home - TGE Software
For 10 years I was the Systems Architect for Retail Pro International, LLC. I created the customization facility and keyless license server for Retail Pro 9 and built the framework for Prism RPS from scratch. Now, in my new role as independent customizations contractor for TGE Software, I look forward to helping Retail Pro customers tailor their systems to their business needs.

TGE Software

This page is intended to serve several purposes:
  • To introduce myself to the Retail Pro partner community
  • To assist that community with my knowledge of the Retail Pro products
  • To encourage the growth of the Retail Pro ecosystem
  • You can go directly to the TGE Software by clicking here or on the car.

    (TL;DR: What I can do for you)

    Retail Pro 8 & 9

    Coming into the company, one of the first things I was tasked with was creating plug-ins for V8 and designing a new customization layer for V9. Within the constraints I was given for designing it, my approach to the V9 customization layer was to satisfy the 95th percentile and maximize effectiveness by simply opening up access to all business objects at the lowest level. That allowed us to get to market quickly with the most functionality. The hardest part of that effort is probably the least used, the plug-in datastore functions.

    I immediately got a chance to eat my own dog food when I leveraged the customization layer to build interfaces to OPOS hardware devices. Retail Pro 9 uses the PIAPI to abstract the interface to point of sale devices, and the plug-ins we created up front talked to OPOS drivers for cash drawers, bar code scanners, line displays, etc.

    I also taught a class to the development partners, explaining the difference between the V8 and V9 customization interfaces and the advantages and power of the V9 approach. In doing that I created a ski rental customization that illustrated how to hook into the guts of V9 to inject logic into the V9 workflow.

    Retail Pro Prism

    When it came time to build a new product line, I and two other developers were tapped to figure out what that would look like. We settled on REST as the interface methodology and committed to making it database agnostic. We also built in an RPC facility, but as a matter of policy we discouraged the developers from using it unless absolutely necessary. And, of course, we embraced unit testing, if not test driven design, immediately.

    At the time we started it, the Embarcadero Datasnap framework was new and had serious issues, and their JSON support was just plain broken, so I decided to roll my own REST framework that was tailored to how Retail Pro builds software. I brought in code that I had developed a long time ago for multi-database support and wrote a set of serializer classes that would allow us to switch between XML and JSON as the payload format. I built an interface that allows a consumer to get just about anything they need from any resource, without being tied to pre-built SQL statements or database-specific stored procedures.

    The decisions we made to go with a stateless, full-featured API paid off huge. The load time and performance of the web services rival that of the monolithic V8 and V9 systems, and the flexibilty from the perspectives of both the business logic coder and the API consumer made development on that product a breeze.

    Custom Work

    That project was a HUGE learning experience, and I want to make my expertise available to the Retail Pro community. I am available for contract work on any of the Retail Pro products, and I would love to help existing development partners get a leg up on moving their customizations to Prism.

    You can contact me at 209-679-2802, or email me at todd@tgesoft.com


    I've worked on a lot of different projects, and I've picked up experience with wide variety of technologies along the way. This quick list isn't comprehensive, so if there's something you don't see here, ask me about it.

    It's worth mentioning that, in some cases, the experience is cumulative, broken up over several projects at different times. For instance, I've been using Javascript for at least 12 years, but I've only undertaken really complex projects with it in the last 4 years.

    Skill NameSkill LevelLast UsedExperience
    JavaAdvancedcurrent15 yrs
    JavascriptAdvancedcurrent6 yrs
    DelphiExpertcurrent25 yrs
    HTMLAdvancedcurrent15 yrs
    CSSIntermediatecurrent9 yrs
    PHPAdvancedcurrent9 yrs
    C#Intermediatecurrent5 yrs
    CIntermediate11 yrs ago2 yrs
    C++Beginner11 yrs ago1 year
    ArduinoIntermediate4 yrs ago2 yrs
    Tcl/tkBeginner18 yrs ago1 yrs
    VAX/BasicExpert23 yrs ago5 yrs
    80x86 AssemblerIntermediate23 yrs ago2 yrs
    COBOLIntermediate29 yrs ago2 yrs
    FortranBeginner30 yrs ago2 yrs
    IBM 370 AssemblerBeginner30 yrs ago2 yrs

    Development Tools
    Skill NameSkill LevelLast UsedExperience
    Delphi IDEExpertcurrent30 yrs
    EclipseAdvancedcurrent15 yrs
    IntelliJIntermediatecurrent1 yr
    Android StudioIntermediatecurrent1 yr
    MavenIntermediatecurrent10 yrs
    GradleBeginnercurrent1 yrs
    KDiff3Intermediatecurrent10 yrs
    npmIntermediatecurrent2 yrs
    JMeterBeginnercurrent<1 yr
    SeleniumBeginnercurrent<1 yr
    JUnitIntermediatecurrent2 yrs
    DUnitAdvancedcurrent6 yrs

    Frameworks, Servers, Distributed Systems, and Related Technologies
    Skill NameSkill LevelLast UsedExperience
    Spring/Spring MVC/Spring BootBeginnercurrent1 yr
    AngularJSIntermediatecurrent4 yrs
    Express/NodeBeginner3 yrs ago1 year
    AndroidAdvancedcurrent5 yrs
    J2EEAdvancedcurrent7 yrs
    JAX-RSIntermediatecurrent2 years
    ApacheIntermediatecurrent14 yrs
    Struts/TilesIntermediate14 yrs ago2 yrs
    TomEEBeginnercurrent1 year
    EJBIntermediate4 yrs ago4 yrs
    JDBCAdvancedcurrent14 yrs
    XMLExpertcurrent13 yrs
    XSLTAdvancedcurrent3 yrs
    DOMIntermediatecurrent5 yrs
    JSONAdvancedcurrent9 yrs
    HTTPExpertcurrent12 yrs
    COM/ActiveXExpertcurrent7 yrs
    RESTExpertcurrent7 yrs
    RPCExpertcurrent7 yrs
    SOAPIntermediatecurrent7 yrs
    JSPExpert6 yrs ago2 yrs
    NetDynamicsIntermediate14 yrs ago1 year
    CGIIntermediate2 yrs ago2 yrs
    CORBAIntermediate15 yrs ago1 year

    Skill NameSkill LevelLast UsedExperience
    MySQLAdvancedcurrent15 yrs
    MS SQL ServerAdvancedcurrent8 yrs
    OracleIntermediatecurrent15 yrs
    SQLiteIntermediatecurrent2 yrs
    MS AccessIntermediatecurrent2 yrs
    InformixIntermediate20 yrs ago1 year
    BtrieveExpert14 yrs ago10 yrs
    Pervasive SQLExpert14 yrs ago1 year
    DEC RMSExpert20 yrs ago5 yrs

    Operating Systems
    Skill NameSkill LevelLast UsedExperience
    MS Windows (3.1 - 10.x)Expertcurrent27 yrs
    Linux (Debian family)IntermediateCurrent desktop12 yrs
    MSDOSExpertcurrent30 yrs
    UnixIntermediate20 yrs ago1 year
    NovellIntermediate28 yrs ago1 year
    Sun/SolarisIntermediate20 yrs ago2 yrs

    Skill NameSkill LevelLast UsedExperience
    Print Shop ProExpertcurrent12 yrs
    GIMPIntermediatecurrent1 year
    BlenderBeginnercurrent1 year
    Xara 3DAdvancedcurrent12 year

    Skill NameSkill LevelLast UsedExperience
    VMWareIntermediatecurrent15 yrs
    Virtual PCIntermediatecurrent10 yrs
    Docker/KubernetesBeginnercurrent1 yr

    Source Control
    Skill NameSkill LevelLast UsedExperience
    MercurialIntermediatecurrent10 yrs
    GitIntermediatecurrent1 yrs
    VSSIntermediate5 years ago10 yrs

    Healthcare Social mediacurrent less than 1 year
    Mobility Front-end integrations to legacy systemscurrent4 years
    Retail POS, inventory, customer management, EFT, customizationscurrent15 yrs
    Health and Human ResourcesFiduciary and case management15 yrs5 yrs
    Shipping Manifests, tracking, billing, web services20 yrs5 yrs
    Medical Patient accounting, medical records, clinicals20 yrs5 yrs
    Real Estate Sale tracking, customer tracking, mapping, integrations25 yrs2 yrs
    Call center Statistics, reporting30 yrs1 yr



    As a hobby I tinker with electronics. Using the Arduino hobby board platform I've programmed ATmega microcontrollers in conjunction with XBee tranceivers and various sensors to create motion/range detectors, motor drivers, etc. While my first electronics project didn't involve an Arduino, it allowed me to use my phone to open my garage door.

    One on-going project, which I get to when I can, involves reusing HP printer parts -- the motors and sensors -- to build robots on the cheap. This requires writing drivers for the various motors, which is always a challenge since each motor seems to operate differently, but it's so cool when you see them operating.

    My latest project, though, is to build a 3D printer from scratch. Back in the day, the best projects for researching 3D printing were being tracked by Hackaday, and I always wanted to build one, but didn't have the time. One of my resolutions for this upcoming year is to finally build one. I might cheat and reuse the 3Doodler I got my daughter as the print head. If I ever get to that, I'll post pictures and videos of the progress.

    Todd Grigsby