-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
485 lines (363 loc) · 19 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>David Dudson</title>
<meta name="description" content="A blog and cv site">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="//cdn.rawgit.com/konpa/devicon/master/devicon.min.css">
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div id="particles-js">
<div class="header" id="head">
<h1>
<span class="site-title">David Dudson</span>
<span class="site-description">Software Developer</span>
</h1>
<br/>
<div class="icons-header standard_flex">
<div class="standard_flex_item">
<div>
<a aria-label="My Twitter" target="_blank" href="https://twitter.com/bigdavenz1"><i
class="icon fa fa-twitter" aria-hidden="true"></i></a>
<a aria-label="My Linked In" target="_blank" href="https://www.linkedin.com/in/daviddudson/posts"><i
class="icon fa fa-linkedin" aria-hidden="true"></i></a>
<a aria-label="My Github" target="_blank" href="https://github.com/daviddudson"><i
class="icon fa fa-github-alt" aria-hidden="true"></i></a>
</div>
<a class="link" aria-label="Send email" href="mailto:[email protected]">[email protected]</a>
<div>
+61 45 890 7221
</div>
</div>
</div>
<br/>
<a class="link section-link" href="#about" data-scroll>About Me</a>
<a class="link section-link" href="#tech" data-scroll>Technical</a>
<a class="link section-link" href="#opensource" data-scroll>Open Source</a>
<a class="link section-link" href="#employer" data-scroll>Employment</a>
<a class="link section-link" href="#refs" data-scroll>References</a>
<br/>
<br/>
<br/>
<br/>
<a class=link href="https://daviddudson.github.io/assets/pdf/DavidDudsonCV.pdf">PDF Version</a>
</div>
<a class="down" href="#about" data-scroll><i class="icon fa fa-chevron-down" aria-hidden="true"></i></a>
</div>
<br>
<section id="" class="section container">
<div class="page">
<h3 id="about">About me</h3>
<p> I am a cross-paradigm, performance driven, Full stack Software Developer. With a passion for learning new languages, paradigms and frameworks, I can adapt to any team. Excelling in both collaborative and independent environments, I write clean, maintainable code to ensure future organizational success.
</p>
<hr/>
<h3 id="employer">Employment</h3>
<div>
<p><b>Company: </b>Didgigo<br>
<b>Time Employed: </b>March 2017 - Present</p>
<p>
<br>
<br>
Didgigo is a travel documentation solution for large tour operators globally. Supporting large clients such as Hello World Group, Jonview Canada, Abbey Group Ireland & UK and Tahiti Nui I took Didgigo from approximately 8000 total itineraries to over 135,00. I have managed projects and junior developers, I attended World Travel Mart London 2019 to assist with technical discussions relating to sales. As a fullstack developer I have been in charge of our Kubernetes cluster, nodejs based servers, mobile application and many other aspects of the business. The job has allowed me to understand how developers can enable potential business success and profitability.
</p>
<h4>Projects</h4>
<div class="standard_flex">
<div class="standard_flex_item">
<h5>Tripigo (Mobile App)</h5>
<p>Tripigo is the Mobile App I produced for Didgigo. A leading edge itinerary viewer, Tripigo is built on Ionic, a hybrid app built using web technologies for iOS and Android. Foreign language support, realtime group chat for tour groups, High quality imagery, curated things to do an see near destinations.
</p>
</div>
<div class="standard_flex_item">
<h5>Kubernetes Cluster</h5>
<p>I organised, set up and maintained our Kubernetes Cluster on Google Cloud Platform. with 50+ running containers and well over 99.99% uptime it enabled us to prepare for a potential 500,000 documents in 2021
</p>
</div>
<div class="standard_flex_item">
<h5>Didgigo API and Import Server</h5>
<p>The Didgigo API was produced so we could move away from using a single dedicated server, into a cloud based envorinment. The API enabled external customers to interface directly with Didgigo, aswell as all cloud based systems using the API for general activities. We also interfaced with a number of pieces of Tour Operator software, such as Tourplan and Softrip to automate the import of content (Hotel/Tour content) and production of documentation (Itineraries).
</p>
</div>
<div class="standard_flex_item">
<h5>Productivity Suite</h5>
<p>The Productivity Suite is and Angular 9 web application to introspect how imports are running. With the ability to be as transparent as possible with regards to how data is transformed from third party systems into the Didgigo data model and see which itineraries have been imported. the entire system has a consistent format so using the system is the same for all Third Party API's.
</p>
</div>
</div>
<h3>Previous</h3>
<p><b>Company: </b>Electric Memory IT (EMIT)<br>
<b>Contracted To: </b>Process Systems Enterprise (PSE)<br>
<b>Time Employed: </b>June 2015 - March 2017</p>
<p>
<br>
<br>
I was part of many projects at PSE/EMIT. They challenged me and allowed me to grow as a developer under the guidance of a very good team.
</p>
<h4>Projects</h4>
<div class="standard_flex">
<div class="standard_flex_item">
<h5>New Language Engine (NLE)</h5>
<p>Using Scala for AST and validation logic, and Antlr4 as our parser and lexer, I collaborate in a team of three to build a fast, immutable, threadsafe and storage efficient language module. I have written most of the Antlr grammars, the parsing logic and a large portion of the language model. Whilst the rest of the team worked on integration with existing code.
</p>
</div>
<div class="standard_flex_item">
<h5>Maven to Gradle migration</h5>
<p>I led the Gradle migration project. Our build system is rather complex,
we have multiple code generation steps, multiple JVM languages
being used, extra post-compile tasks (obfuscation and encryption) and
multiple repositories. The build was designed to be modular via
Gradle plugins. I had to manage other developers such as the CI and
Kernel teams. The build had to run fast and support both Windows and
Linux.
</p>
</div>
<div class="standard_flex_item">
<h5>Flowsheet Routing</h5>
<p>Flowsheet routing is the act of ensuring the connection between nodes on a flowsheet are orthogonal. For user-generated projects this could happen on project load and could trigger up to 8 hour GUI freezes. I moved the route calculations off the event dispatch thread (Swing’s GUI thread), ensuring asynchronous execution. I also altered all routing actions so they would be undoable, parallelizable and cancellable.
</p>
</div>
</div>
</div>
<hr/>
<div>
<h3>Past Non Technical Employment</h3>
<div class="standard_flex">
<div class="centered standard_flex_item">
<h5>Dick Smith Electronics</h5>
<p><b>Role: </b>Salesman<br>
<b>Time Employed: </b>2014 - 2015</p>
</div>
<div class="centered standard_flex_item">
<h5>Countdown Supermarkets</h5>
<p><b>Role: </b>Butchers Assistant/Checkout Operator<br>
<b>Time Employed: </b>2009 - 2013</p>
</div>
<div class="centered standard_flex_item">
<h5>Paradise Valley Berry Farm</h5>
<p><b>Role: </b>Raspberry Harvester<br>
<b>Time Employed: </b>2008</p>
</div>
</div>
</div>
<hr/>
</div>
<div class="page">
<h3 id="opensource">Open Source</h3>
<div class="opensource">
<p>In the past I have worked extensively in the open source section of the scala ecosystem. Although in the last 2 years I have done no open source work.
</p>
<div class="standard_flex">
<div class="standard_flex_item centered">
<a class="link" href="https://github.com/scalameta/scalagen"><h5><i class="icon fa fa-github-alt" aria-hidden="true"></i> scalagen</h5> </a>
<p><b>Author</b></p>
<p>I authored this library primarily because the existing scalameta/paradise library was deprecated, and scalamacros/paradise is not ide or user friendly. I managed everything from issues to design and implementation. No longer maintained as I left the Scala ecosystem.
</p>
</div>
<div class="standard_flex_item centered">
<a class="link" href="https://github.com/DavidDudson/Elysium"><h5><i class="icon fa fa-github-alt" aria-hidden="true"></i> Elysium</h5> </a>
<p><b>Author</b></p>
<p>Elysium was an exploration of what could be accomplished with Macro Annotations, I also wrote a macro to develop macros. All Elysium macros are strongly typed and became the foundation of scalagen’s API. No longer maintained as I left the Scala ecosystem.
</p>
</div>
<div class="standard_flex_item centered">
<a class="link" href="https://github.com/scalameta/scalameta"><h5><i class="icon fa fa-github-alt" aria-hidden="true"></i> scalameta</h5> </a>
<p><b>Maintainer</b></p>
<p>A huge center point for Scala’s tooling which exists primarily as an AST manipulation library. I am the co-author of the scalameta-contrib module, built to simplify interactions with scalameta.
</p>
</div>
<div class="standard_flex_item centered">
<a class="link" href="https://github.com/scalameta/paradise"><h5><i class="icon fa fa-github-alt" aria-hidden="true"></i> scalameta paradise</h5> </a>
<p><b>Maintainer</b></p>
<p>Macro library for Scala. Now deprecated in favor of scalameta/scalagen (annotation macros) and scalacenter/macros (def macros). I have written a large portion of the annotation processing logic used to ensure feature parity with scalamacros/paradise.
</p>
</div>
</div>
</div>
<h3 id="tech">Technical</h3>
<div class="tech">
<h5>Languages, Libraries and Skills</h5>
<dl class="standard_flex">
<div class="standard_flex_item">
<dt>Javascript</dt>
<dd>I have written a lot of Javascript/Typescript. It is what most of my last 2 years has been. I have experience in ES5, ES6, Typescript and Coffeescript. I have also used frameworks such as AngularJS, Angular and React, using tools such as NPM, Bower, Gulp, Ionic and Webpack.
</dd>
</div>
<div class="standard_flex_item">
<dt>Scala</dt>
<dd>I have 6 years Scala experience, 2 and a half in industry. I have given a talk and follow-up workshop on the language at the local Software Development meetup group.
</dd>
</div>
<div class="standard_flex_item">
<dt>Java</dt>
<dd>I have 7 years Java experience, 2 and a half in industry. I am a competent OO developer and have spent a lot of time profiling the JVM and optimizing low level code.
</dd>
</div>
<div class="standard_flex_item">
<dt>C#</dt>
<dd>The core application for Didgigo was a C# ASP.Net Web Forms application. Most of my time was adding functionality to our cloud infrastructure, however a portion was spent working on the existing web forms.
</dd>
</div>
<div class="standard_flex_item">
<dt>Python</dt>
<dd>I have over 5 years Python experience, with a small amount in industry. I have used Python for small web servers (Django or Flask) and command line tooling in the past.
</dd>
</div>
<div class="standard_flex_item">
<dt>Category theory</dt>
<dd>I learnt basic category theory which helped me understand programming from a mathematical perspective. Various abstractions such as Monoids, Free Monads and Natural Transformations allowed me to further grasp general programming concepts.
</dd>
</div>
<div class="standard_flex_item">
<dt>Functional Programming</dt>
<dd>I apply functional programming knowledge to all programming languages, It has helped me to produce clean reusable pieces of code with a clear separation of behavior, data and effects.
</dd>
</div>
<div class="standard_flex_item">
<dt>Testing</dt>
<dd>I’m competent with all testing and use different testing methods depending on the situation. My knowledge covers unit, integration, interactive and acceptance testing, as well as benchmarking.
</dd>
</div>
<div class="standard_flex_item">
<dt>Code Review</dt>
<dd>I am experienced with code review, both on Github for reviewing pull requests, and Gerrit for internal code review.
</dd>
</div>
</dl>
<h5>Operating System</h5>
<p>I am experienced with all 3 major operating systems. Linux, OSX and Windows. I am most experienced with Linux, primarily NixOS, and Ubunutu.
</p>
<h5>Version Control</h5>
<p>I use git for version control. I am competent with git and have written many programs interacting with Git repositories. I am familiar with git-flow.
</p>
<h5>IDE's and Editors</h5>
<ul class="standard_flex centered">
<li class="standard_flex_item ">
IntelliJ IDEA
</li>
<li class="standard_flex_item ">
Pycharm
</li>
<li class="standard_flex_item ">
Webstorm
</li>
<li class="standard_flex_item ">
Rider
</li>
<li class="standard_flex_item ">
Android Studio
</li>
<li class="standard_flex_item ">
VSCode
</li>
<li class="standard_flex_item ">
Atom
</li>
</ul>
</div>
<hr/>
<div>
<h3>Conferences</h3>
<ul class="standard_flex centered">
<li class="standard_flex_item ">
Kiwicon X
</li>
<li class="standard_flex_item ">
2x Kiwi Pycon
</li>
<li class="standard_flex_item ">
NZJSCon
</li>
<li class="standard_flex_item ">
linux.conf.au 2018
</li>
</ul>
</div>
<hr/>
<div>
<h3>Community</h3>
<p>I enjoy attend conferences and programming events, I would like to grow the Software Development community in Cairns and potentially start a meetup group.</p>
</div>
<hr/>
<div class="education">
<h3>Education</h3>
<div class="standard_flex">
<div class="standard_flex_item centered">
<h5>Massey University</h5>
<p><b>Qualification: </b>Bachelor of Information Science. Computer Science Major</p>
<p><b>Status: </b>Compulsories complete in 2015</p>
<p>Left for fulltime development work before completing all electives.</p>
</div>
<div class="standard_flex_item centered">
<h5>New Plymouth Boys' High School (NPBHS)</h5>
<p><b>Qualification: </b>NCEA level 3</p>
<p><b>Status: </b>Complete in 2011</p>
</div>
</div>
</div>
</div>
<div class="page">
<h3 id="refs">References</h3>
<div class="standard_flex">
<div class="standard_flex_item">
<h5>Matt McKinley</h5>
<p>
<b>Relationship:</b> Founder and CEO Of Didgigo <br>
<b>Location:</b> Cairns, Australia <br>
<b>Timezone:</b> Australian Eastern Standard Time (AEST - UTC+10) <br>
<b>Email:</b> [email protected] <br>
<p></p>
</div>
<div class="standard_flex_item">
<h5>Duane Griffin</h5>
<p>
<b>Relationship:</b> Cofounder of Electric Memory IT <br>
<b>Location:</b> Palmerston North, New Zealand <br>
<b>Timezone:</b> New Zealand Standard Time (NZST - UTC+13) <br>
<b>Email:</b> [email protected] <br>
<p></p>
</div>
<div class="standard_flex_item">
<h5>Luke Usherwood</h5>
<p>
<b>Relationship:</b> Cofounder of Electric Memory IT <br>
<b>Location:</b> Hungary <br>
<b>Timezone:</b> Central European Time (CET - UTC+1) <br>
<b>Email:</b> [email protected] <br>
<p></p>
</div>
<div class="standard_flex_item">
<h5>Andrew Bevan</h5>
<p>
<b>Relationship:</b> Head of Software Development, Process Systems Enterprise <br>
<b>Location:</b> London, England <br>
<b>Timezone:</b> Greenwich Mean Time (GMT - UTC+0) <br>
<b>Email:</b> [email protected] <br>
<b>Phone:</b> +44 20 8563 0888</p>
<p></p>
</div>
</div>
</div>
</section>
<footer class="footer centered">
<br>
<p>© David Dudson
<br>Built in the open by <a href="daviddudson.github.io">David Dudson</a> on <a href="https://github.com/DavidDudson/daviddudson.github.io/tree/develop">Github</p>
</footer>
<script src="//cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script>
<script src="/assets/js/sweet-scroll.min.js"></script>
<script src="/assets/js/main.js"></script>
<!-- Google Analytics -->
<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','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-42525615-1', 'auto', 'github_pages');
ga('send', 'pageview');
</script>
</body>
</html>