I have been programming computers for over 30 years and have proven experience working with and leading highly technical and specialized engineering teams in delivering mission-critical, scalable, fault tolerant parallel and distributed systems. Over the years, I’ve learned that culture is as critical a variable as technology is in building high-performing teams.
My consulting career spans successful engagements for many Fortune 500 clients. Prior to consulting, I spent six years at Microsoft Corporation first as a member of their consulting practice and then as a principal member of the Distributed Systems group, where I shipped Microsoft Windows Server 2000 and designed, developed core replication and topology generation algorithms in the Microsoft Active Directory Service, and represented Microsoft in the Internet Engineering Task Force (IETF) for the Kerberos Network Authentication Protocol and Public Key Infrastructure.
After Microsoft, I spent nearly 9 years leading and functioned as a senior contributing member of very specialized technical teams through strategic and high-profile engagements for Fortune 500 customers with particular attention to performance and scalability remediation.
I joined ipvive as their Chief Technology Officer and a principle software engineer to design and implement core engineering discipline for our ei-OS technology in collaboration with the core research team. ei-OS combines deep machine learning with behavoior and social sciences with Internet of Things (IoT) sensors to to uniquely understand people (emotional + rationale) and deepen relationships, instantly.
I eventually accepted a position with Vix Technology as the Global Head of Engineering and Architecture where my focus was to form and lead a high-performing software engineering team in the modernization, design, and construction of Vix Pulse—Vix’s strategic and fourth-generation automated fare collection (AFC) and open payments product. As a contributing member of the core engineering team, Vix Pulse successfully shipped to customers globally in 2018.
I am an AWS Certified Solutions Architect and constantly strive for increased efficiency in all I do.
I have over 24,000 hours of experience with C# over 15,000 hours experience with Java, and nearly 12,000 combined hours experience with Objective-C and Swift.
I have applied production engineering knowledge and experience with Apache Cassandra, Apache Spark, C#, Java, Scala, Objective-C, Swift, Python, Go, Packer, Terraform, and Chef and have strong experience with many other languages, tools, and frameworks.
Regardless of programming language, I am extremely focused on Test-Driven Development and am a firm believer in its benefits. Though I strive for code coverage of 100%, I end up somewhere between 80% and 92%. The importance of measuring code coverage can’t be understated.
My classical areas of interest include cryptography and cryptanalysis, recreational mathematics, and geometry.
- System and Methods for Linking Unique Identifiers to Business-To-Business Payments United States. 15559-40
- System and Method for Layered, Vector Cluster Pattern with Trim (LVCPT). Provisional Application No.: 62/189,655
Successfully formed and led the software engineering and architecture teams to design and build Vix Pulse—a new and innovative fourth-generation automated fare collection (AFC) and payments system.
Successfully designed, engineered, and shipped Vix Pulse (2018).
Successfully shipped Microsoft Windows 2000 Server and the Microsoft Active Directory Service.
Successful shipped AccelaStudy line of iOS mobile applications.
Represented Microsoft Corporation in the Internet Engineering Task Force (IETF) for the Kerberos Network Authentication Protocol and Public Key Infrastructure (PKI).
As an iOS Developer
I prefer Swift over Objective-C. I’ll give a shout out to Charles Sieg for my interest in iOS as he and I started that journey in 2007 with Apple’s first iOS SDK while we were consulting to Deloitte. His diligence in many areas has heavily influenced my mobile focus.
I prefer SQLite databases for persistent storage in iOS apps. I never use CoreData but have some affection for Realm. I use GRDB for SQLite access. I mostly use socket.io client and Starscream for socket programming but also use Alamofire for networking support. I use CleanroomLogger for logging.
I use SwiftLint to clean up my Swift source code. I like source code files to all adhere to the same coding conventions.
As a DevOps Engineer
The benefits of operational environment and application automation are critical to any organization. Full automation for building all technical operations environments is of critical importance in reducing overall operational costs, reducing the risk of human error, increasing operational efficiency, and in ensuring consistent quality and enabling measurable compliance with security practices and governance.
Establishing a source branching strategy for DevOps source code is critical for Continuous Deployment (CD) and Continuous Integration (CI) activities.
Here is a recent interview I had with BUSRide Magazine on the benefits of DevOps.
As a Parallel and Distributed Systems Engineer
There’s so much to discuss about building parallel and distributed systems. My focus over the past decade has been the convergence of mobile technologies, embedded devices, deep machine learning, cloud computing, non-relational storage, adaptive autonomous agents for parallel and distributed systems, and behavioral and social sciences. The technology shifts in this space even as recent as 2013 are fascinating URI.
The notion of eventually consistency is a fundamentally critical pattern to embrace when designing parallel and distributed systems as we had to do when designing the Microsoft Active Directory Service in the late 1990s for Microsoft Windows Server 2000. I recognize the importance of this pattern.
For analytics, I much prefer Apache Spark and Apache Cassandra though it’s usual to spread data across Amazon S3 buckets given Spark’s intrinsic support for Hadoop Distributed File System (HDFS). I seldom use Apache Hadoop. For production settings, I recommend DataStax as they provide superior support for system operations through DataStax OpsCenter and their distribution provides support for Apache Solr and DataStax DSE ObjectGraph, which is based on Apache TinkerPop.
I use Apache Kafka for distributed streaming of real-time events and data.
As both an architect and software engineer, I think it’s important to have depth and breadth across both Microsoft and Linux technology stacks as it allows one to expand their solution domain.
I actively invest personal time to study, research, and code to ensure proficiency in both strategic trends and systems architecture while maintaining an expert level of ability in various programming languages with Java, Go, Swift, Python, and Scala being my preferred choices. I use C/C++ for embedded systems and use C# for software that requires use of the Microsoft .NET Framework.
The importance of using the Google Protocol Buffer technology also can’t be understated as this framework provides a critical language, transport, and platform neutral abstraction for any application.
Much of my professional career has involved security-sensitive systems. Security can never be an afterthought when designing any system. In addition to representing Microsoft in the IETF for the Kerberos Network Authentication Protocol, I have considerable experience in building payment systems and am proficient with ISO/IEC 27001 and the Payment Card Industry (PCI) standards. Security very much influences technical architecture and design.
I prefer to use Kong for an API Gateway as it is quite mature. The AWS API Gateway is also excellent but does ti you to the AWS platform.
As an Enterprise Architect
Enterprise architecture, the holistic view of an enterprise’s processes, security, information and information technology assets as a vehicle for aligning business and Information Technology (IT) in a structured, more efficient and sustainable manner is of paramount importance to the long-term success of any organization.
Naturally, governance is an essential function of Enterprise Architecture. An architecture governance process institutionalizes the set of activities an organization executes to ensure decisions are made and accountability is enforced during the execution of its architecture strategy. Governance is about guidance and effective and equitable usage of resources to ensure sustainability of an organization’s strategic objectives and less about strict adherence to rules and overt control. It’s of paramount importance to align product and technology roadmaps so an organization has a shared and common vision and are able to confidently navigate technical decisions based upon strategic business objectives.
As an enterprise architect, I strive to balance strategy, process, people, and technology to meet a company’s strategic objectives. Understanding and working toward a desired culture is critically important when defining any enterprise architecture program.