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
  • NOTE: TGE Software now has its own website. Click 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 at tgrigsby dot com (I'll replace that with an email form later...).

    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 only a couple of times have I had to construct anything really large with it. The largest project is something I'm working on now, in conjunction with AngularJS.


    Languages and IDEs
    Skill NameSkill LevelLast UsedExperience
    JavaExpertcurrent13 yrs
    JavascriptIntermediatecurrent3 yrs
    EclipseExpertcurrent13 yrs
    DelphiExpertcurrent22 yrs
    HTMLExpertcurrent13 yrs
    CSSAdvancedcurrent6 yrs
    ArduinoIntermediate2 yrs ago2 yrs
    PHPIntermediatecurrent2 yrs
    C#Advancedcurrent3 yrs
    CIntermediate8 yrs ago2 yrs
    C++Beginner8 yrs ago1 year
    Tcl/tkBeginner14 yrs ago1 yrs
    VAX/BasicExpert20 yrs ago5 yrs
    80x86 AssemblerIntermediate20 yrs ago2 yrs
    COBOLIntermediate20 yrs ago2 yrs
    FortranBeginner23 yrs ago2 yrs
    IBM 370 AssemblerBeginner23 yrs ago2 yrs

    Frameworks, Servers, and Related Technologies
    Skill NameSkill LevelLast UsedExperience
    ApacheIntermediatecurrent9 yrs
    AndroidAdvancedcurrent5 yrs
    J2EEExpert1 yr ago7 yrs
    JAX-RSIntermediate1 yr ago1 year
    AngularJS/Express/Node.jsBeginnercurrent1 year
    TomEEBeginnercurrent1 year
    EJBIntermediate2 yrs ago4 yrs
    JDBCExpertcurrent12 yrs
    XMLExpertcurrent13 yrs
    XSLTAdvancedcurrent2 yrs
    DOMIntermediatecurrent2 yrs
    HTTPExpertcurrent12 yrs
    COM/ActiveXExpertcurrent7 yrs
    RESTExpertcurrent7 yrs
    RPCExpertcurrent7 yrs
    .NETIntermediatecurrent3 yrs
    StrutsExpert6 yrs ago2 yrs
    JSPExpert6 yrs ago2 yrs
    NetDynamicsIntermediate14 yrs ago1 year
    CGIIntermediate2 yrs ago2 yrs
    CORBAIntermediate14 yrs ago1 year

    Databases
    Skill NameSkill LevelLast UsedExperience
    MySQLAdvancedcurrent4 yrs
    MS SQL ServerAdvancedcurrent5 yrs
    OracleIntermediatecurrent12 yrs
    MongoDBBeginnercurrent1 year
    SQLiteIntermediatecurrent2 yrs
    MS AccessIntermediatecurrent2 yrs
    InformixIntermediate5 yrs ago1 year
    BtrieveExpert1 year ago10 yrs
    Pervasive SQLExpert2 yrs ago1 year
    DEC RMSExpert10 yrs ago5 yrs

    Operating Systems
    Skill NameSkill LevelLast UsedExperience
    MS Windows (3.1 - 8.1)Expertcurrent15 yrs
    LinuxIntermediatecurrent12 yrs
    MSDOSExpertcurrent25 yrs
    UnixIntermediate20 yrs ago1 year
    NovellIntermediate4 yrs ago1 year
    Sun/SolarisIntermediate10 yrs ago2 yrs

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

    Virtualization
    Skill NameSkill LevelLast UsedExperience
    VMWareAdvancedcurrent10 yrs
    Virtual PCIntermediatecurrent10 yrs

    Source Control
    Skill NameSkill LevelLast UsedExperience
    MercurialIntermediatecurrent4 yrs
    VSSIntermediatecurrent10 yrs
    GitBeginnercurrent1 yrs

    Industries
    IndustrySystemsSinceExperience
    Mobility Front-end integrations to legacy systemscurrent4 years
    Retail POS, inventory, customer management, EFT, customizationscurrent10 yrs
    Health and Human ResourcesFiduciary and case management10 yrs5 yrs
    Shipping Manifests, tracking, billing, web services15 yrs5 yrs
    Medical Patient accounting, medical records, clinicals15 yrs5 yrs
    Real EstateSale tracking, customer tracking, mapping, integrations20 yrs2 yrs
    Call centerStatistics, reporting20 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