Shaun Sorensen

I'm a self taught software developer working in the Hospitality and Voice Mail industry. Having worked in all levels of the software industry starting in production, technical support, product test and finally software development, I bring a wealth of understanding and knowledge about the product chain.

Some of the largest hotels in the world use software I've designed and developed, including Emerald Queens Casino, MGM, Hilton, Foxwoods Casino and numerous resorts.

While predominantly a Windows developer working in C/C++, I'm responsible for design and implementation of all of my companies web based interfaces using Apache HTTP server and PHP.

Languages

C/C++, PHP, Python, Lua, Javascript, NSIS.

APIs, SDKs and Frameworks

WIN32, CodeIgniter, Twig, Bootstrap, Dialogic R4/Global Call, SIP, ZeroMQ, gRPC, MongoDB, TAPI, IP Office Web Services, DEVLINK, LDAP, Cisco AXL, Comtrol, and SOAP.

PBXs

IP Office, Panasonic, Avaya Aura with Session Manager, Avaya Communications, Definity, ShoreTel, NEC 3C, Asterisk, Askozia, Cisco, Norstar, MITEL 3300, RingCentral, Kandy, and Grandstream

Learning

Currently teaching myself Flutter (Dart) and Kotlin.

DuVoice provides any hosted, on premise IP or legacy PBX a connection to the property management system, wake up calls and guest messaging all managed through a friendly web console for the staff. Unified messaging is available for staff or business customers.

2002 ~ Present - Sr. Software Developer

Responsibilities include
  • Manage software development including schedules, and new feature creation.
  • Primary contact for technical support.
  • Maintain company support web site.
  • All install processes and scripts.
  • All web interfaces.
  • Documentation.
  • Build machines and scripts to build product.
  • Manage all source repositories.
  • Telephony interfaces, including SIP, Analog and Digital.
  • PBX integrations not associated with property management systems (PMS).

Formally Applied Voice Technology (AVT) providing voicemail for business.

1993 ~ 2002 - Sr. Software Developer

Responsible for interfacing email servers with voicemail for text to speech and desktop clients.

1990 ~ 1993 - Product Test Engineer

Black box testing of the companies voicemail product and hardware testing and evaluation for product acceptance.

1988 ~ 1990 - Technical Support

Telephone support for hardware and software based voicemail system using a customized version of C-DOS.

1987 ~ 1988 - Production Technician

Responsible for all shipping, receiving, PC assembly and software duplication.

  • 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.
    Link between DuVoice DV2000 and the Cisco Broadsoft PBX to change names and other settings based on hospitality.
  • KANDY PBXLink
    Provides 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 with the DuVoice DV2000. 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. Online demo at https://demo.duvoice.com. 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.