-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
138 lines (132 loc) · 7.13 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<!DOCTYPE html>
<html>
<head>
<title>Kenneth Kam · CV</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/site.css" rel="stylesheet">
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<style type="text/css">
h1,h2,h3,h4,h5,h6,.meta, .sub-heading {
font-weight: 300 !important;
}
</style>
<![endif]-->
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12 col-lg-offset-1 col-lg-10">
<div id="hero">
<div class="row">
<div class="col-sm-9" id="name">
<h1>Kenneth Kam</h1>
<p>
<a href="mailto:[email protected]">[email protected]</a>
</p>
</div>
</div>
<p>
I am a full-stack developer who likes to write maintainable code that solves business problems. Based in London, I enjoy working collaboratively in a team as well as working autonomously. My current technology stack is C# and Angular.
</p>
</div>
<div id="work">
<h2>Work Experience</h2>
<div class="item">
<h3>Senior Software Developer, G-Research</h3>
<p class="meta">August 2016 — January 2024</p>
<ul>
<li>
Full-stack developer on the trading monitoring and tooling team responsible for developing apps for real-time monitoring, alerting, and operational workflows. The following are tasks that I have done in this role:
<ul>
<li>Migrated a complex configuration tool to a simple, API-based design that is easier to maintain and add new features to.</li>
<li>Implemented a workflow platform to orchestrate business processes.</li>
<li>Implemented SLIs using Prometheus to measure the reliability and performance of our apps.</li>
<li>Maintained a variety of apps, such as a real-time monitoring frontend, trading platform configuration tooling, service orchestration, release management, and more.</li>
<li>Organised squad health checks and 1-1 coffees within the team with the aim of understanding and improving the team morale.</li>
</ul>
</li>
</ul>
</div>
<div class="item">
<h3>Senior Software Developer, Perfect Channel</h3>
<p class="meta">October 2014 — August 2016</p>
<ul>
<li>
Development of a multi-tenanted data analytics and visualization platform, implemented as a family of decoupled microservices. I have been responsible for a broad range of technologies, mainly split into the development and maintainance of the microservices and the DevOps to support the platform. The following are tasks that I have done in this role:
<ul>
<li>Developed plugins for our Kibana-based Dashboard that provides OAuth2, theming, and extra metric visualizations.</li>
<li>Developed and maintained an OAuth2 Elasticsearch proxy API that authorized users based on their tenancy.</li>
<li>Maintained the IdentityServer3 implementation as our OpenID Connect server, integrating with our in-house user accounts library.</li>
<li>Implemented a workflow to provision an environment in Azure with a combination of Octopus Deploy, Azure Powershell scripts, and Puppet. The workflow begins by creating a resource group and skeleton services in Azure, the provisioning of the Puppet Master VM, followed by any number of service VMs provisioned as Puppet Agents.</li>
</ul>
</li>
<li>My previous role involved being in a cross-functional team, performing full-stack development for a marketplace trading platform.</li>
<li>Performed regular code reviews to improve the quality of the deliverable as a team and also to learn and to teach others.</li>
<li>Followed the Scrum methodology to deliver iterations. Actively participated in sprint planning and retrospectives to promote continuous improvement.</li>
<li>Proactive in documenting existing technical debt as stories into our backlog to allow the development teams to tackle them in future sprints.</li>
</ul>
</div>
<div class="item">
<h3>Application Developer, Rates E-Commerce, Credit Suisse</h3>
<p class="meta">July 2012 — October 2014</p>
<ul>
<li>Main WPF GUI developer responsible for implementing new features using MVVM to promote code maintainability. Added unittests to enable refactoring the codebase.</li>
<li>Implemented continuous integration using TeamCity and created a QA test plan to maintain application quality between releases.</li>
<li>Implemented an automated release process using TeamCity and shell scripts to allow one-click deployments.</li>
</ul>
</div>
<div class="item">
<h3>Application Developer, Trade Management, Credit Suisse</h3>
<p class="meta">July 2011 — July 2012</p>
<ul>
<li>Developed an ASP.NET based CRUD application to administer user access to a trade blotter using HTML5 and MSSQL stored procedures.</li>
<li>Offered support and troubleshooting for the trade blotter application, talking to the users of the system in front and middle office.</li>
</ul>
</div>
<div class="item">
<h3>Intern, ICT Develop, Airbus</h3>
<p class="meta">July 2008 — July 2009</p>
<ul>
<li>Development of a framework that enabled rapid development of CAD tools in Python.</li>
</ul>
</div>
</div>
<div id="education">
<h2>Education</h2>
<div class="item">
<h3>MSc in Computer Science, University of Bristol</h3>
<p class="sub-heading"></p>
<p class="meta">2010 — 2011</p>
</div>
<div class="item">
<h3>BEng in Aeronautical Engineering, University of Bristol</h3>
<p class="meta">2005 — 2010</p>
<ul>
<li>Achieved 2:1 honours</li>
<li>One-year industrial placement at Airbus, UK. See above.</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="container" id="footer">
<div class="row">
<div class="col-lg-offset-1 col-md-8">
© Kenneth Kam 2021
</div>
</div>
</div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-78127-17', 'kennethkam.com');
ga('send', 'pageview');
</script>
</body>
</html>