Meeting our Komodo Users: Gary Chau, Knight IT Inc.

Gary Chau, a Python developer at Knight IT Inc. recently contacted us about upgrading to the latest version of Komodo IDE. It turns out Gary has been a big fan of Komodo and ActivePython since 2003.

One of the interesting aspects of Komodo IDE is that, since it supports multiple languages, it lends itself to a wide variety of applications. In this case, we were intrigued by how Knight IT Inc. uses Komodo IDE and ActivePython in systems integration solutions. Gary was kind enough to share his insights with our blog readers.

Nice to meet you, Gary. Could you tell us about Knight IT Inc?

Sure, and thanks. We provide IT infrastructure, software, payroll, human resource and benefits systems solutions to businesses throughout Canada and the USA. Our clients have included Yahoo Canada, Cornwall General Hospital, Whole Foods Market, Coach Stores and Symantec Corp., to name a few.

Many of the solutions provided to these larger clients involve using ActivePython scripts to compile and generate data interfaces such as general ledger, payroll/HR and demographic data. Python scripting has also been used to automate the process of encrypting and transferring the interface files via HTTP or FTP to these organizations at predefined times.

How did you first get started using Komodo IDE?

I first started using Komodo IDE after being introduced to ActivePython in 2003. We had just implemented a mainframe-based payroll system that was ported to Windows, and there was a need to better integrate the new software with the Windows environment and to automate as many processes as possible.

We decided on using the ActivePython distribution as our main development platform due to its stability and ease of deployment on our Windows and Citrix servers. Impressed with ActivePython, we gave Komodo IDE a try and have written literally hundreds of programs and scripts with it ever since.

What kinds of programs and scripts do you write with Komodo IDE?

Along with ActivePython scripts, we have written wxPython GUI programs, DOS batch files, JavaScript, VBScript, PHP, CSS, HTML, XML, and MySQL scripts.

Right now, we're using Komodo to build Content Management System (CMS) websites with PHP, MySQL, CSS and HTML, as well as using ActivePython to assist our clients in their sys admin and data conversion needs.

Here is a typical example of how we use Python:

#!/usr/bin/env python

# Runs a script passed as a parameter for multiple files with '.csv" extension in a directory.

import glob

def ProcessFiles(CTRL12, sScriptName, sPayGroup, sInputDir, sOutPutDir, sInputExt):

    # Sample input
    CTRL12      = 'BRCA01'
    sScriptName = 'TC152'
    sPayGroup   = 'PAY152'
    sInputDir   = 'H:\\Programs\\TimeEntry_Interface\\TestFiles\\BoatHouse\\Test\\'
    sOutPutDir  = 'H:\\Programs\\TimeEntry_Interface\\TestFiles\\BoatHouse\\Test\\Output\\'
    sInputExt   = 'csv'

    module = __import__(sScriptName)
    iCount = 0
    Listing = glob.glob(os.path.join(sInputDir, '*.' + sInputExt))
    for sInFile in Listing:
        print 'Processing ' + sInFile
        sBaseFileName = os.path.splitext(os.path.basename(sInFile))[0]
        sOutFile = sOutPutDir + sPayGroup + '.TC'
        sLogFile = sOutPutDir + 'TC.log'
        module.ConvertKronosTC(CTRL12, sInFile, sOutFile, sLogFile)
        iCount += 1
    print '\n' + 'Processed all files in ' + sInputDir
    print 'Total Files Processed: ' + str(iCount)

if __name__ == '__main__':
    import sys, os

    errmsg = 'Required arguments missing: C12 ScriptName InputDir OutputDir InputEx OutputExt'
    assert (len(sys.argv) == 7), errmsg
    ProcessFiles(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6])
    print 'Processed all files in ', sys.argv[4]

How does Komodo compare to other IDE's you've used?

Some problems I've encountered with IDE's are:

  • Large resource overhead - very slow to load and bogs down systems at times
  • Overly complicated, having many features I would never use
  • Limited built-in support for other languages
  • No debuggers for the languages I use
  • Lack of support or documentation
  • "Mangling" code that was copied over from other platforms

Most of these problems are beyond the end-user's control. Komodo has none of these problems, and that's why I've been using it consistently for ten years.

In comparison to these problems, what I enjoy about Komodo is:

  • Clean and elegant interface
  • Excellent code formatting and highlighting makes reading and debugging easy
  • Auto-complete, Code Browser
  • Built-in support for many languages without having to load "word files"
  • Build-in debugger for Python
  • Available on other platforms such as Mac and Linux

That's great to hear. Just to switch gears, what do you like to do when you're not programming?

One of my favorite hobbies is amateur radio (call sign VE7MXG). I have a collection of over 20 radios! Lately though, I've been spending much of my time experimenting with the Raspberry Pi and Arduino single board computers. I also enjoy cycling and web-surfing. Currently, my favorite website is

Thanks for your time, Gary. It was great meeting you, and we appreciate your business.

My pleasure. Thank you to ActiveState for the excellent products and customer support over the years.

We're happy to meet more of our Komodo community members. If you would like to share your story or feedback (and promote your application or company in the process), please contact us at marcom [at] activestate [dot] com (subject: Re%3A%20Meeting%20our%20Komodo%20Users) .