-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwork.html
More file actions
executable file
·348 lines (298 loc) · 20.1 KB
/
work.html
File metadata and controls
executable file
·348 lines (298 loc) · 20.1 KB
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
<!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.0">
<meta name="description" content="Will Browne Software Engineer Portfolio">
<meta name="author" content="Will Browne">
<title>Will Browne | Software Engineer</title>
<link href="assets/css/bootstrap.min.css" rel="stylesheet">
<link href="assets/css/font-awesome.min.css" rel="stylesheet">
<link href="assets/css/main.css" rel="stylesheet">
</head>
<body>
<div class="navbar navbar-inverse navbar-static-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html">Will Browne</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="index.html">About Me</a></li>
<li><a href="index.html#work">Work</a></li>
<li><a href="index.html#technologies">Technologies</a></li>
<li><a href="index.html#contact">Contact</a></li>
</ul>
</div>
</div>
</div>
<div class="header">
<div class="vert-text">
</div>
</div>
<div class="container pt">
<div class="row mt">
<div class="col-lg-6 col-lg-offset-3 centered">
<h1>MY WORK</h1>
<p>Here's more detail of some of the work I've done. If you want to know more, just <a
href="mailto:wbrowne@tcd.ie?Subject=Hello!">get in touch!</a></p>
</div>
</div>
<div id="content">
<ul id="tabs" class="nav nav-tabs" data-tabs="tabs">
<li class="active"><a href="#kijiji" data-toggle="tab">Kijiji</a></li>
<li><a href="#mtt" data-toggle="tab">Mobile Travel Technologies</a></li>
<li><a href="#movieApp" data-toggle="tab">TellMeWhatToWatch</a></li>
<li><a href="#dissertation" data-toggle="tab">Telemedicine Application</a></li>
<li><a href="#bullet" data-toggle="tab">Bullet</a></li>
<li><a href="#deathrun" data-toggle="tab">Death Run</a></li>
<li><a href="#embedded" data-toggle="tab">Embedded Systems</a></li>
</ul>
<div id="my-tab-content" class="tab-content">
<div class="tab-pane active" id="kijiji">
<div class="row mt">
<div class="page-header">
<h2>Kijiji (eBay Classifieds)</h2>
<img class="right-align" src="assets/img/kijiji.svg" alt="Kijiji" />
</div>
<p><a href="http://www.kijiji.ca">Kijiji</a>, an eBay company, is Canada’s leading classifieds site and the 2nd most reputable web and social media brand in Canada after Google**. On average, half of Canadians visit Kijiji each month. In September 2016, Kijiji received 15.3M visitors, or 50% of the Canadian digital population. These figures give an idea of the kind of scale the website needs to be capable of handling.
</p>
<p>Kijiji's tech department consists of several cross functional squads. The squad (known as KIA) I was apart of focussed on development for Kijiji’s commercial revenue streams across all verticals (real estate, autos, jobs, etc.). This included Admarkt, display and text advertising, integations with third partiy vendors (for example Indeed), and any other revenue generating initiatives.</p>
<p>The squad was made up of 3 backend engineers (including myself), 1 frontend engineer, a squad development lead, 1 QA engineer, a product manager and a delivery (project) manager. As part of my role within the team I was responsible for contributing to the design and development of product features and subsystems. After my first year in the company, I was promoted to take on a more senior role where I was entrusted with owning initiatives from the design stage all the way to production and thereafter. One example of this is Kijiji's automobile 'New Car' feature. </p>
<h4>Admarkt</h4>
<p>Admarkt is Kijiji's new cost-per-click advertising platform intended for Business Sellers. It is a completely new way of users operating their business on Kijiji, where instead of paying for features on the fly to boost their business, everything is now based off an ad level budget. Some of my contributions include the initial rollout strategy across Canada, some of the power features (bulk inventory ingestion and expedited account creation) and the integration with our existing user moderation workflows.</p>
<p>For more information on the product itself, please see <a href="https://kijijiforbusiness.ca/en/admarkt/">here</a>.</p>
<small>**Leger Reputation Study 2016</small>
</div>
</div>
<div class="tab-pane" id="mtt">
<div class="row mt">
<div class="page-header">
<h2>Mobile Travel Technologies (MTT)</h2>
<img class="right-align" src="assets/img/mtt_logo.png"
alt="MTT logo" >
</div>
<p>MTT are a software company (more recently acquired by Travelport Digital) that specialize in mobile apps, mobile web and mobile technology
products for airlines, travel management companies, OTAs and hotels. They have customers such
as: EasyJet, Saudia Airlines, Singapore Airlines, BCD, and LATAM.</p>
<h4>Concierge Live</h4>
<p>MTT Concierge Live is a real-time mobile travel assistant that obtains a passenger's relevant
trip
information
in order to provide guidance through every step of the journey. Concierge Live exists as a
software widget
that is embedded within your existing mobile application.</p>
<p>MTT's product team is responsible for building all the core tooling, components and services that make up MTT's products. These services have to be very robust and extensible, as they are used across different solutions for clients with different needs. This meant that code reviews, architecture/design sessions, and pair programming played a large role in our development processes.
My main responsibility for Concierge Live was building, configuring and maintaining Spring Boot web services.
Some of the main technologies used were Groovy, Spring Boot, RabbitMQ, Cucumber, Thymeleaf and MongoDB.</p>
<p>For more information on the product itself, please see MTT's press release on the <a
href="http://digital.travelport.com/gamingresorts-mobile">Concierge
Live product</a>.</p>
<div style="font-size: 16px">
<h4>Automation Deployment (Ansible)</h4>
<p><a href="http://www.ansible.com">Ansible</a> is an automation platform used to provide provisioning,
deployment and configuration
management capabilities. Ansible provides functionality through scripts called <i>playbooks</i>.
</p>
In Ansible terms, a playbook is a list of <i>plays</i> where each <i>play</i> must contain:
<ul>
<li>A set of hosts (remote server instances) to configure</li>
<li>An ordered list of tasks to be executed on those hosts</li>
</ul>
As part of my role at MTT, I used Ansible to:
<ul>
<li>Provision AWS instances</li>
<li>Deploy products and components to the new instances</li>
<li>Setup a broker, AWS elbs and a DNS</li>
<li>Terminate environments</li>
</ul>
</div>
</div>
</div>
<div class="tab-pane" id="movieApp">
<div class="row mt">
<div class="page-header">
<h2>TellMeWhatToWatch</h2>
</div>
<p>TellMeWhatToWatch (name is a work in progress) is a social mobile platform for friends to recommend
viewing content to each other in real time.</p>
<img class="img-responsive center-block" src="assets/img/movie.jpg" alt="TellMeWhatToWatch"/>
<p>Looking for something to watch? Something funny or something more specific such as a movie starring Bob
Odenkirk released before the year 2000 with a rating of at least 4 stars? - Hit up your group of
friends and see what they find
or what they suggest. You can accept their recommendation, awarding that friend a new point (serious bragging rights!). Or
you
could just skip all that and we'll use our own smarts to find something for you. Either way, you'll find something great to watch.</p>
<p>TellMeWhatToWatch is currently in early development for the Android platform.</p>
</div>
</div>
<div class="tab-pane" id="dissertation">
<div class="row mt">
<div class="page-header">
<h2>Dissertation Telemedicine application</h2>
</div>
<p>The following is taken from the abstract section of my dissertation:</p>
<blockquote ><i>"Telemedicine is an important practice that removes the
necessity for
physical encounters between patients and physicians. Combined with the capabilities of remote
monitoring systems, a patient can be monitored using physiological sensors
which seamlessly gather data. Using an Internet of Things (IoT) model, non-invasive
physiological sensors that capture a patient's current health status can
be exposed through a Telemedicine platform. By closely monitoring patient's vital
signs, physicians can capture a snapshot of a patient's well being. This is an
important factor in the lives of palliative care patients, where focus is placed on
quality of life.<br/><br/>
This dissertation outlines a secure, cloud-enabled Telemedicine solution aimed at
the field of palliative medicine. This dissertation plans to expose the Bluetooth
4.0 protocol in order to provide a multi-stream data transmission protocol of low
and high bit-rate data. Use of an adaptive data stream enables efficient sensor
traffic with capabilities of complex sensor data transmission in emergency situations
and low bandwidth data that can provide episodic updates. Each patient
sensor makes use of a gateway to transmit information to a cloud based service,
which publishes current and historic data for individual patients. Secure storage,
access and transmission of patient data is also an important concern. This dissertation
outlines two security mechanisms using a combination of symmetric and
asymmetric cryptography."<br/><br/></i></blockquote>
<p>The following is a high-level overview of the system architecture:</p>
<img class="img-responsive center-block" src="assets/img/telemed_arch.jpg"
alt="Architecture diagram"/>
<br/>
<p>The prototype Bluetooth hardware is designed using a combination of Bluetooth Low Energy and
Bluetooth
Classic modules. <a href="http://redbearlab.com/bleshield/">RedBearLab's BLE shield</a> provides
all
Bluetooth Low Energy functionality, while the <a
href="http://www.connectblue.com/products/wireless-ready-to-embed-modules/bluetooth-dual-mode-serial-port-module-obs421/">ConnectBlue
OBS421</a> chip provides Bluetooth Classic. Both chips are integrated using the <a
href="http://www.arduino.cc/">Arduino</a> platform (written in C), meaning that both
Bluetooth
protocols can be used concurrently. Together, this hardware forms the basis for a smart sensor
that is
capable of transmitting over low and high bit rate streams in parallel. This ensures efficient
and high throughput transmission of patient data.</p>
<p>The sensor gateway exposes the sensor streams to the cloud by routing the traffic securely and
efficiently by
communicating both Bluetooth and IP (Internet Protocol). The gateway is designed to function as
a Bluetooth
Smart Ready mobile phone.</p>
<p>The cloud application serves as a platform that provides data access to caregivers while also
leveraging
control over the patient's remote sensor network. The technology behind the application is
industry standard
- Java, Spring MVC, Hibernate, Bootstrap 3 to provide a rich, secure, user interface
(UI)-centric, and
scalable application.</p>
</div>
</div>
<div class="tab-pane" id="bullet">
<div class="row mt">
<div class="page-header">
<h2>Bullet</h2>
</div>
<p>With close to a year spent in total at <a href="http://www.bullethq.com/">Bullet</a>, I
worked on many
different parts of the Bullet Accounts product. As such a small startup at the time, I worked
closely with the CTO and was given a lot of responsibility.</p>
<p>In order to integrate with one of Ireland's largest online marketplaces
<a href="http://www.adverts.ie">Adverts.ie</a>, I designed and implemented <a href="http://www.bullethq.com/api/v1/index">a RESTful API for
the Bullet
Accounts product</a>. Another feature I developed was Bank Reconciliation (the process of
confirming the bank balance as shown in one's bank balancing statement and the corresponding
amount in an organisation's own accounting records). The feature allows
a user to
upload a bank statement and the feature applies matching rules to each transaction so that they
can be reconciled with the information in Bullet. </p>
<p>Here's a screenshot taken from Bullet's transaction reconciliation process:</p>
<img class="img-responsive center-block" src="assets/img/bullet_reconciliation.jpg"
alt="Bank Reconciliation"/>
</div>
</div>
<div class="tab-pane" id="deathrun">
<div class="row mt">
<div class="page-header">
<h2>DeathRun</h2>
</div>
<p>Death run is a multiplayer split screen game where players have to race each other to the top of
the slope
whilst trying to avoid multiple different oncoming objects. The first player to reach the top of
the
platform wins the game. I got inspiration for this game from the <a
href="http://www.moddb.com/mods/zombie-master">Zombie Master mod</a> for Half Life 2.
The following
is an in-game shot:</p>
<p>
<img class="img-responsive center-block" src="assets/img/deathrun_in_game.jpg" alt="Death Run"/>
</p>
<p>In the future I hope to work on adding a third player, whose role will be to manually control the
obstacles
in order to prevent the other players from reaching the top. I also plan to port the project to
OpenGL ES so
that the game can run on mobile devices.</p>
</div>
</div>
<div class="tab-pane" id="embedded">
<div class="row mt">
<div class="page-header">
<h2>Embedded Systems programming</h2>
</div>
<p>During my masters I worked with the LPC2468 microcontroller developing <a
href="https://github.com/wbrowne/Embedded-Systems">various small-scale
embedded systems</a> making use of peripheral modules and devices such as interrupt controllers,
serial
communication devices, LCD and touchscreen controllers and analogue-to-digital converters. I
also did some
further work using a real-time operating system (<a href="http://www.freertos.org/">FreeRTOS</a>).
</p>
<p>In my spare time I also enjoy hacking around with the <a
href="http://www.arduino.cc/">Arduino</a> and <a href="https://www.raspberrypi.org/">Raspberry Pi</a> platforms.
Because of multiple break-ins around my street I decided to start building a small security
surveillance system. I'll be sure to track the progress I make in my <a
href="http://blog.wbrowne.com">blog</a> as I build it.</p>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div class="container">
<div class="row">
<div class="col-lg-4">
<h4>Location</h4>
<p>
Dublin, Ireland.
</p>
</div>
<div class="col-lg-4">
<h4>Social Media</h4>
<ul class="list-inline">
<li><a href="https://github.com/wbrowne?tab=repositories" class="fa fa-github fa-4x"></a></li>
<li><a href="http://www.linkedin.com/in/willbrowne" class="fa fa-linkedin fa-4x"></a></li>
</ul>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="assets/js/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function ($) {
$('#tabs').tabCollapse();
var url = document.location.toString();
if (url.match('#')) {
$('.nav-tabs a[href=#' + url.split('#')[1] + ']').tab('show');
}
// Change hash for page-reload
$('.nav-tabs a').on('shown', function (e) {
window.location.hash = e.target.hash;
})
});
</script>
<script type="text/javascript" src="assets/js/bootstrap.min.js"></script>
<script type="text/javascript" src="assets/js/bootstrap-tabcollapse.js"></script>
</body>
</html>