Mike
Broughton

Hello, my name is Mike Broughton.

I am a Software Developer from Edmonton Alberta.

face

Professional Profile

I am a software developer with over 10 years of experience in delivering quality technical solutions to meet business needs.

My areas of expertise include: Voice over IP and high performance, real-time network programming; DevOps, automated system and network administration, software deployment and configuration; Relational database design, programming, and administration.

Work Experience

Advanis Inc.

Sep 2007 - Present
Voice over IP Software Engineer and Technical Expert
  • Responsible for transitioning from a traditional call center using expensive proprietary hardware, plain old phone lines, and leased office space to a modern decentralized call center powered by VoIP, commodity hardware, open source software, and custom developed software.
  • Developed custom software for creating various types of telephone surveys and other call center systems, written in Python and C. Guided fellow team members to extend and support said software, with aspects including system architecture, integration, testing, debugging, and performance tuning.
  • Configuration, customization, and deployment of open source VoIP software tools, such as Freeswitch and Kamailio, used to support internal business functions and client projects. These functions include conference call systems, phone extension directories, least cost routing, and load balancing.
DevOps Software Engineer, System and Network Administrator
  • Responsible for transitioning from manually configured and managed FreeBSD Unix systems to Debian Linux systems with automated configuration and management using Salt Stack.
  • Responsible for transitioning to a fully virtualized environment using VMware vSphere, as well as the free VMware Esxi hypervisor. Setup and maintenance of virtualization hardware, storage arrays and storage area network. Performed physical to virtual migrations of legacy systems.
  • Responsible for moving our in-office server room to primary and backup colocation facilities. Reduced operating expenses and management complexity. Increased reliability, uptime, and disaster recovery readiness.
  • Set up and maintenance of network infrastructure utilizing: OpenBSD Unix for firewall, routing, DNS, and virtual private networking; Fortigate cyber security appliances; and Cisco managed switches and routers.
Database Software Engineer and Administrator
  • Setup, configuration, tuning and maintenance of our cluster of PostgreSQL database servers. Wrote custom made backup, archive, and restoration software systems for disaster recovery.
  • Responsible for assisting fellow team members with database design, as well as writing, debugging and tuning SQL queries.
  • Developed custom database solutions for some our largest and most complex client projects, including software to process as much as fifty million records daily.

Distributed Energy Management Inc.

May 2006 - Aug 2007
Software Engineer
  • Developed a system for predicting the hourly price of electricity in the Alberta electrical market. This included artificial neural network based prediction models written in Lua and C, and several long-term simulations to gauge effectiveness.
  • Created an automated system for gathering and analyzing electrical market data utilizing a PostgreSQL database.
  • Created tools for reporting simulation results and market data. Management used these reports to evaluate the company’s business model and to employ for client marketing.

Knightsbridge Wireless Inc.

Aug 2003 - May 2004
Software Engineer
  • Developed software for a wireless, hand-held device that served as a technology demonstration for the company.
  • Created a graphical user interface, including menu’s and text entry fields.
  • Ported LwIP, an open source TCP/IP/PPP stack, to a demonstration platform.
  • Implemented software controls for a wireless networking module, including power management, modem and link controls.
  • Assisted in hardware development and research for the technology demonstration and the final product.
  • Served as a technician, including assembly, soldering, and troubleshooting of various hardware components.

Eleven Engineering Inc.

May 2001 - Jul 2001
Technician
  • Assembled and tested circuit boards for wireless gaming products.
  • Refurbished and tested wireless gaming products. Modified a portion of these refurbished units to triple their range, for trade show demonstrations.
  • Assembled and soldered demonstration units for a next generation wireless gaming product.

Code Examples & Open Source Contributions

Advanis programming competition

When: 2013

Tech: Python

Source: shortfunctions.py

Description: Eight programming problems, with a twist: All code in the solutions must be lambda expressions, with a maximum of eighty characters per statement. Readability ended up being the most time consuming part of my solution. I also wanted to allow for a wide range of inputs, since the challenge involved a secret test suite.

My personal website

When: 2013

Tech: HTML5 Boilerplate, Google Web Fonts, NginX, Debian Linux, Let's Encrypt SSL certificates

Source: Right click, view source.

Description: A basic personal profile website. I’ve always had an interest in web development, though I have only worked on a few websites over my career. This turned out to be a nice simple project to gain some experience with HTML5, CSS3, and responsive design on modern web browsers. I also enjoyed the systems administration aspects like setting up and maintaining Debian Linux, Nginx, DNS, SSL, and IPv6.

Python select.kevent patch

When: 2009

Tech: Python, C, Kqueue, FreeBSD, OSX

Source: kevent.patch

Submission: bugs.python.org

Description: As part of an internal telephony application framework I developed at Advanis, I wrote this enhancement to the kqueue API in Python's select module. This is related to kqueue timer facility in FreeBSD and OSX.

LuaSQL memory leak patch

When: 2007

Tech: C, Lua, LuaSQL, PostgreSQL

Submission: luaforge.net, gmane.org

Description: A quick patch for the PostgreSQL driver in LuaSQL, something I caught while doing a code review.

Coldfire Ethernet Driver

When: 2006

Tech: C, Coldfire/68K Assembly, Linux 2.6.17, uClinux, Freescale 528x/520x MCU's

Source: fec.c, fec.h, m520x.c, m528x.c, cache.patch

Description: This is a Fast Ethernet driver that I wrote for the Freescale Coldfire 528x/520x MCU's running embedded Linux. It is a drop-in replacement for the built in Coldfire Fast Ethernet driver, which had serious bugs and performance issues. I have also included a patch which enables the data cache on these MCU's for an additional performance boost.

Coldfire SDRAM tests

When: 2006

Tech: Coldfire/68K Assembly, Freescale 528x/520x MCU's, March Y algorithm

Source: sdram_test.asm

Description: Pre-boot memory testing routines. Can be used as a quick check during system start, or a more thorough check during the QA stages of manufacturing.

Coldfire/Linux SDRAM setup patch

When: 2006

Tech: C, Coldfire/68K Assembly, Linux 2.6.17, Freescale 520x MCU

Source: auto_mem.patch

Submission: uclinux.org, gmane.org

Description: A small patch to auto-detect the memory size on the 520x MCU, instead of having to define this value at config/compile time.

XinC 32 bit math functions

When: 2004

Tech: XinC, XinC Assembly

Source: xinc_math.asm

Description: Early in my career I was fortunate to receive a XinC development kit from Eleven Engineering. This code sample has few 32 bit math functions (XinC is a 16 bit processor) that I wrote for fun.

For professional inquiries, email mikebroughton+pi@gmail.com.

Also check out my linkedin profile.