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

    Skills

    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.


    Languages
    Skill NameSkill LevelLast UsedExperience
    Java Advanced current 20 yrs
    Javascript Advanced current 6 yrs
    Delphi Expert current 25 yrs
    HTML Advanced current 15 yrs
    CSS Intermediate current 9 yrs
    PHP Advanced current 9 yrs
    C# Intermediate current 5 yrs
    C Intermediate 11 yrs ago 2 yrs
    C++ Beginner 11 yrs ago 1 year
    Arduino Intermediate 4 yrs ago 2 yrs
    Tcl/tk Beginner 18 yrs ago 1 yrs
    VAX/Basic Advanced 23 yrs ago 5 yrs
    80x86 Assembler Intermediate 23 yrs ago 2 yrs
    COBOL Intermediate 29 yrs ago 2 yrs
    Fortran Beginner 30 yrs ago 2 yrs
    IBM 370 Assembler Beginner 30 yrs ago 2 yrs

    Development Tools
    Skill NameSkill LevelLast UsedExperience
    Delphi IDE Expert current 30 yrs
    Eclipse Advanced current 15 yrs
    IntelliJ Intermediate current 1 yr
    Android Studio Intermediate current 1 yr
    Maven Intermediate current 10 yrs
    Gradle Beginner current 1 yrs
    KDiff3 Intermediate current 10 yrs
    npm Intermediate current 2 yrs
    JMeter Intermediate current <1 yr
    Selenium Beginner current <1 yr
    JUnit Intermediate current 2 yrs
    DUnit Advanced current 12 yrs
    NUnit Intermediate current 6 yrs

    Frameworks, Servers, Distributed Systems, and Related Technologies
    Skill NameSkill LevelLast UsedExperience
    Spring/Hibernate Beginner current 1 yr
    AngularJS Intermediate current 4 yrs
    Express/Node Beginner 3 yrs ago 1 year
    Android Advanced current 5 yrs
    J2EE Advanced current 7 yrs
    JAX-RS Intermediate current 2 years
    Apache Intermediate current 14 yrs
    Struts/Tiles Intermediate 14 yrs ago 2 yrs
    TomEE Beginner current 1 year
    EJB Intermediate 4 yrs ago 4 yrs
    JDBC Advanced current 14 yrs
    XML Expert current 13 yrs
    XSLT Advanced current 3 yrs
    DOM Intermediate current 5 yrs
    JSON Advanced current 9 yrs
    HTTP Expert current 12 yrs
    COM/ActiveX Expert current 7 yrs
    REST Expert current 7 yrs
    RPC Expert current 7 yrs
    SOAP Intermediate current 7 yrs
    JSP Expert 6 yrs ago 2 yrs
    NetDynamics Intermediate 14 yrs ago 1 year
    CGI Intermediate 2 yrs ago 2 yrs
    CORBA Intermediate 15 yrs ago 1 year

    Databases
    Skill NameSkill LevelLast UsedExperience
    MySQL Advanced current 15 yrs
    MS SQL Server Advanced current 8 yrs
    Oracle Intermediate current 15 yrs
    SQLite Intermediate current 2 yrs
    MS Access Intermediate current 2 yrs
    Informix Intermediate 20 yrs ago 1 year
    Btrieve Expert 14 yrs ago 10 yrs
    Pervasive SQL Expert 14 yrs ago 1 year
    DEC RMS Expert 20 yrs ago 5 yrs

    Operating Systems
    Skill NameSkill LevelLast UsedExperience
    Windows Expert current 27 yrs
    Linux Intermediate current 12 yrs
    MSDOS Expert current 30 yrs
    Unix Intermediate 20 yrs ago 1 year
    Novell Intermediate 28 yrs ago 1 year
    Sun/Solaris Intermediate 20 yrs ago 2 yrs

    Graphics
    Skill NameSkill LevelLast UsedExperience
    Print Shop Pro Expert current 12 yrs
    GIMP Intermediate current 1 year
    Blender Beginner current 1 year
    Xara 3D Advanced current 12 year

    Virtualization
    Skill NameSkill LevelLast UsedExperience
    VMWare Intermediate current 15 yrs
    Virtual PC Intermediate current 10 yrs
    Docker Beginner current 1 yr

    Source Control
    Skill NameSkill LevelLast UsedExperience
    Mercurial Intermediate current 10 yrs
    Git Intermediate current 1 yrs
    VSS Intermediate 5 yrs 10 yrs

    Industries
    IndustrySystemsSinceExperience
    Retail POS, inventory, customer management, EFT, customizationscurrent15 yrs
    Mobility Front-end integrations to legacy systemscurrent4 years
    Healthcare Social media3 yrs less than 1 year
    Health and Human ResourcesFiduciary and case management20 yrs5 yrs
    Shipping Manifests, tracking, billing, web services25 yrs5 yrs
    Medical Patient accounting, medical records, clinicals30 yrs5 yrs
    Real Estate Sale tracking, customer tracking, mapping, integrations30 yrs2 yrs
    Call center Statistics, reporting35 yrs1 yr

    Methodologies

    Miscellaneous

    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