About Me

Software Engineer working in the Hospitality Voicemail arena providing telephony and property management integrations to customers including MGM, Hilton, Marriott, Holiday Inn, Flamingo, Caesars, and many other casinos world-wide.

I’m a self taught software engineer working primarily in the Windows environment using a wide range of languages. Responsible for more than 200 applications making up frontend Windows applications and Web based interface. Also responsible for backend servers which integrate with PBXs, email, inventory and a variety of 3rd party systems.

LANGUAGES

C++, PHP, LUA, JAVASCRIPT, HTML, NSIS, PYTHON, TAPI, MFC, XML, SIP, JSON, gRPC, GO, YAML, MARKDOWN.

SKILLS

Visual Studio, VSCode, GIT, VMWare, Proxmox, UniFi, OPNSense, Dialogic, Docker, MySQL, MongoDB, Doxygen, CodeIgniter, Wireshark, Synology, Apache Web Server. Numerous phone systems including Avaya, Asterisk, Cisco, Metaswitch along with SIP phones from Grandstream, Polycom, Telematirx, Yealink and Avaya.

EXPERIENCE

  • Responsible for telephony integration using SIP, Analog or Digital interface cards for voicemail, and wakeup calls.
  • Created a server allowing SIP phones to automatically program themselves. Using this data we can then send SIP Notify packets directly to the phone providing message waiting lights on PBXs which don’t always support 3rd party voicemail.
  • Designed and a web based user interface for hotel staff. This was originally developed using Django and later converted to PHP using the CodeIgniter framework. It’s installed locally on the same system as the product and hosted using Apache Web Server.
  • PBX interfaces using multiple protocols including, REST, TAPI, AXML which include, RingCentral, Metaswitch, Crexendo, Cisco, Asterisk, and Avaya. We currently have 37 custom integrations and typically write one or two new each year.
  • Manage companies servers, including VMWare, Docker, Synology, and GIT.
  • Manage all web hosting both inhouse and public.
  • Responsible for and wrote much of the company's public facing documentation. This is a public facing Dokuwiki site which includes all the support documentation.
  • Responsible for developing all the installs for the companies products using the nullsoft (NSIS) install system.
  • Created a web based Message Delivery system which allows hotels to send custom recordings or text-to-speech converted voice as alerts, ads or general announcements. It provides full tracking of each action taken allowing the customer to track ad sales or guest engagement.
  • Created a REST interface allowing OEM’s to create custom integrations using a variety of languages and systems. This interface includes interfaces for system management, guest room controls, and wakeup calls.
  • Created a technical support portal for staff. Used to manage all product licensing, track system metrics and provide reports for all data.
  • Responsible for design and implementation of the company’s Subscriber Based Unified Messaging server. Developed as a multithreaded NT service providing e-mail, fax, and voice mail access from third-party email providers. This allowed the company to win many awards and be recognized as a leader in the Unified Messaging space.
  • Responsible for developing a Message Waiting indicator server which allows users of Lotus Notes and Microsoft Exchange to be notified of new Unified Messages via their desk phones.
  • Designed and implemented a log and debugging facility that was both version and product independent. This allowed the engineers and technical support greater capability at finding and resolving customer problems with high rates of success.
  • Supported and maintained engineering’s primary NT file and web server.
  • Working directly with the Product Test Department, producing tools and test applications allowing for faster product verification and release.
  • Created a Windows NT and Windows 98 audio codec using the Microsoft Windows DDK. This codec allowed customers to play voice mail files directly from any Windows-based computer.
  • Designed and implemented an ATL-based interface capable of accessing any LDAP server throughout an organization. This provided an accompanying control panel applet and configuration manager access to third-party email provider’s configuration data.
  • Responsible for maintenance and implementation of a server-based configuration manager. This server could be accessed from any client on the network, including Visual Basic and MFC applications.
  • Primary responsibilities included black box testing of the company’s voice mail product and hardware testing and evaluation for product acceptance.
  • Continued development of a script-based automated telephony application which is still widely used and relied upon as a primary form of evaluating all releases.
  • Responsibilities included telephone and hardware support of the company's voicemail product.
  • Responsibilities included hardware assembly of PC-based voice mail products, shipping and receiving, and software duplication.
  • Converted a paper-based shipping and receiving system to an R:BASE database system.
  • Implemented IMAP interface for companies email interfaces. Previously it only supported POP3 and SMTP.
  • Major new changes to the product, which include all new notification management, messages information stored in database and so much more.
  • Completely rewrote the old VPS message server. This server is responsible for all events, notifications, message access and anything the plugins require. The old version used MFC nad has always been a pain to maintain.
  • Notifications have been completely rewritten and are significantly faster.
  • Allowed us to completely remove all the old schedevents folders and file based notifications.
  • Provided the abilty to rewrite message handling and placing it now in the database.
  • SIP MWI Light Teat Application. Test application allowing the techs or anybody to verify SIP MWI to devices without a DV2000 system.
  • IPPHONECFG Server. This server acks as a recipient for HTTP posts from phones as well as using the ARP protocol to automatically configure the MWI addresses for SIP phones.
  • MWI Light Receiver. Test application which accepts SIP MWI packets from any source and will display the extension and state of the MWI.
  • Crexendo PBXLink.
  • Added name change support kinda to Asterisk.
  • Improved Cisco PBXLink so it stores cache better and runs faster.
  • Upgraded version 7 and 8 to use openssl version 3.
  • Numerous updates to message delivery.
  • Added full context help for most of InnDesk allowing users to see more detailed help for the page they are looking at without the need to visit the internet.
  • Branched code for 2.1 which will support 8.0 only. This was needed because 7.2 is end of life and code was getting too hard to manage for both versions.
  • Branched code fro 3.0 which will support 8.1 and maby 8.0. This version along with 8.1 will give the customer full access to all messages and better notification controls because those are now in the database.
  • Developed custom themes for 2.0 and above allowing customers to limit the interface per-user or site wide.
  • Solved ability to compile DTX files for updating the UI. Prior to this we needed a dedicated XP system.
  • Certified HotelIFC interface.
  • Created support proxyhost giving staff access to internal tools.
  • Implemented uptime kuma to notify when services go down.
  • Converted old GITLAB to GITEA for source control.
  • Added system counts to tech portal.
  • Improved callhome format allowing for more data and easier additions.
  • Continued improvement of ForgeData our primary application for testing WebUI and hospitality.
  • Developed a configuration library using yaml files which could allow us to make the product more modular.
  • Numerous updates to techportal including a full rewrite.
  • File uploads to internal tech support portal.
  • Added geo location data to tech portal.
  • Ziplys PBXLink.
  • MWI2REST Server. Converts SIP MWI packets to REST allowing 3rd parites to manage MWI lights.
  • MWIREFRESH Server. Will automatically refresh MWI lights. This is needed especially for phones we manage for MWI lights and PBX's like Avaya which turn off all MWI lights when rebooted.
  • Applications which will send CSV reports about mailbox access, wakeup calls and message delivery via email on any schedule the customer chooses.
  • 2.0 Full rewrite making everything faster.
  • Implemented emergency alert notification on Asterisk using the call monitor API.
  • Implemented gRPC for inter process communications.
  • Added FreePBX MWI support using it's AMI API.
  • Converted MFC based web application to full web interface.
  • Redesigned and implanted our existing web interface to use CodeIgniter 4, PHP7, and Javascript for automatic page updates.
  • Created a web based Tenant Care system for bed checks, occupancy status, and other room controls.
  • Fully implemented a message delivery system for hotels to send ads and alerts. Can use either prerecorded prompts or text-to-speech with custom macros.
  • Converted all internal source repositories using Mercurial to GIT. All code is hosted on our private Synology using GOGS.
  • Cisco Broadsoft PBXLink. Cisco Broadsoft PBX to change names and other settings based on hospitality.
  • KANDY PBXLink providing a link to KANDY's ribbon online PBX. Uses the ribbon API which is a rest interface with authentication using nonce and other username and password values.
  • RingCentral PBXLink. Provides name changes for RingCentral user accounts associated. This interface used the RingCentral REST API.
  • Grandstream PBXLink.
  • Implemented new network integration using network based MCI link to NEC PBX's replacing older SMDI. This also provided full SIP integration where before there was none.
  • Managed transition of all product documentation from PDF's and CHM files to wiki enabling. This allowed support staff to contribute to documentation while giving customers greater access.
  • Implemented new Avaya IP Office REST interface for Hospitality interface.
  • Converted Djanago web based interfaces to PHP in order to better support customers remotely and speed up all interfaces. This new interface also gave us the first access for mobile clients.
  • Improved and expanded public REST interface allowing third parities access to most product features.
  • Developed an interface to Metaswitch for name, callbar and dnd changes.
  • REST interface allowing 3rd parties to manage guest rooms and wakeup calls.
  • API for posting names and class of service settings using HTTP POST method.
  • Developed an interface server using HTNG protocol for changing names and class of service settings.
  • Implemented an interface to IPitomy PBX for changing names and class of service settings.
  • Converted all realtime information display to use a ZeroMQ based interface providing faster realtime updates.
  • Started implementing MongoDB. Prior to most data was stored in binary files or SQLITE databases.
  • Developed an interface between the inventory system and the COMTROL interface. This allows our inventory system to communicate with a wider range of accounting systems.
  • Developed a LDAP import utility.
  • Developed an application to detect if analog guest rooms phones remain offhook. This is required by many hotels in cases of emergency. The system then alerts the specified people via telephone or email.
  • Developed a software only licensing system using encryption and a single file. Prior to this the company used hardware dongles.
  • Developed an interface to SIEMENS pbx to change guest names and class of service settings using SOAP.
  • Developed a system which allowed software license to be managed by technical support which could then be downloaded by the customer via the internet.
  • Converted existing telephony interface to support SIP. Previous to this the product could only use Dialogic telephony boards. Implementing SIP provided the company to enter into fully IP based voicemail products for the hospitality market.
  • Created an interface using the LUA language so all SIP integration is handled via a script file rather than hard coding all the possibilities It allows for the inclusion of site specific overrides and has reduced the time needed to provide a customer with a fix because it can be modified on site.
  • Developed a web based inventory system for hotels to manage minibar purchases. The system allows hotel maids to dial specific codes from the guest phone which are then stored in a local database viewable via a web server. This interface also then sends a XML based packet to a remote accounting system.
  • Developed an interface to the Avaya IP Office allowing the product to change the names and class of service from the companies product InnDesk. or our PMS link.
  • Using modified VNC code, created a new support application allowing customer service instant access and control of any installed system.
  • Developed a SOAP based interface for changing names and station class of service to ShoreTel PBX.
  • Developed a web based hospitality room management system for UK Hilton. This system is used to manage all guest wakeup calls. This product was then distributed as a major part of our existing product and continues to influence sales to day.
  • Developed a WAP based interface to Avaya IP Office web enabled phones providing missed wakeup calls and emergency alerts when guests dial 911.
  • Developed an interface for changing guest names and class of service on NEC Univerge PBX.
  • Converted product install to use the NullSoft NSIS product. This allowed development greater ability to create installs.
  • Developed a TAPI interface for call integration to Panasonic PBXs. It also provides the ability to change guest names and class of service.
  • Implemented companies first bug reporting system using Mantis.
  • Developed a serial integration to ITT3100.
  • Designed a in-house database system using python and MySQL This system allows the company to track all shipments, customer sites, hardware installation and technical support trouble tickets. Prior to this no tracking was performed of tech support calls.
  • Created a fax server using black ice fax software. This provided the ability to receive and send faxes and and email faxes received to the client as a PDF.
  • Developed a TAPI interface for call integration to IP Office. It also adds ability to set/clear MWI and DND.
  • Converted existing telephony interface to support Dialogic Digital boards providing interfaces to Avaya, Mitel, Nortel and others. Prior to this the product could only be used with analog boards.
  • Implemented new production procedures for all systems using GHOST and a single bootable diskette production. Using this system production is able to create a new system with only two key presses.
  • Implemented a full revision control system using SourceSafe. Prior to this most code was simply copied from PC to PC.
  • Converted all existing code so product could be built consistently. Prior to this all the product could only be compiled on a single laptop.
  • Produced a product installer using Wise Installer. Prior to this all systems were hand built or produced by hard disk duplication.
  • Using boungs checker to detect memory leaks and bugs spent several months cleaning, rewriting and fixing bugs. Prior to this it was common for the system to be configured to reboot every day in order to clear memory.
  • Implemented a new logging mechanism which provided easier to read logs for technical support and production.
  • Developed a serial integration to NEC using MCI protocol.
  • Convinced the existing software development head which I had been working with for many years to give me a chance as an entry level developer. He accepted the idea and I quickly grew to be a senior developer.
  • Continued to provide product test with updates and enhancements to the script based testing tool giving it a full texted base UI which I developed. I also gave it the ability to load subscripts and add some objected oriented ideas to the language.
  • Developed a server-based configuration manager. This server could be accessed from any client on the network, including Visual Basic and MFC applications.
  • Designed and implemented an ATL-based interface capable of accessing any LDAP server throughout an organization. This provided an accompanying control panel applet and configuration manager access to third-party email providers configuration data.
  • Created a Windows NT and Windows 98 audio codec using the Microsoft Windows DDK. This codec allowed customers to play voice mail files directly from any Windows-based computer.
  • Created a tool for development and product test which would allow them to re-program hardware dongles used for licensing. This tool used a special technique I found for hiding registry entries allowing it to expire in case it was ever exposed.
  • Implemented companies first internal web server for development could help distribute information.
  • Developed a Message Waiting indicator server which allowed users of Lotus Notes and Microsoft Exchange to be notified of new Unified Messages via their desk phones.
  • Designed and implemented a log and debugging facility that was both version and product independent. This allowed the engineers and technical support greater capability at finding and resolving customer problems with high rates of success.
  • Responsible for design and implementation of the companies Subscriber Based Unified Messaging server. Developed as a multi-threaded NT service providing e-mail, fax, and voice mail access from third-party email providers. This allowed the company to win many awards and be recognized as a leader in the Unified Messaging space.
  • Taught myself C++.
  • Took over all development of script based testing tool. Later re-wrote the entire customized language parser to include gosubs, variables, subroutines and more with a C oriented design.
  • Helped develop first ever regression test documents which provided development with consistent and reliable verification procedures to insure product stability.
  • Helped develop a script-based testing tool with development which used a custom language that interfaced to Dialogic telephony boards for automated call testing.
  • Developed a modem based bulletin board system for customer techs to retrieve product documentation and technical bulletins.
  • Helped develop technical document standards and worked with technical writers for printed product manual.
  • Consulted in the development of first customer support database.
  • Developed a PC-based shipping and receiving system using an R:BASE database system. All tracking had been done previously using paper logs. Found the R:BASE software in storage and with nobody else knowing how it worked I taught myself and implemented it on my own. This provided faster more accurate accounting of shipments for sales and finance.
  • Taught myself Borland Turbo C.