-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
473 lines (459 loc) · 30.6 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
<!DOCTYPE html>
<html lang="en">
<head>
<title>Jack Chou</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://fonts.googleapis.com/css?family=Open+Sans|Merriweather" rel="stylesheet" type="text/css">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/bootstrap-glyphicons.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="jumbotron">
<img src="img/jack-chou.jpg" class="face img-circle img-responsive" data-toggle="tooltip" title="Hi there! :)">
<h1>Jack Chou</h1>
</div>
<div class="tabbable">
<ul class="nav nav-tabs nav-justified">
<li class="active"><a href="#about" data-toggle="tab"><span class="glyphicon glyphicon-home"></span> About</a></li>
<li><a href="#projects" data-toggle="tab"><span class="glyphicon glyphicon-folder-open"></span> Projects</a></li>
<li><a href="#resume" data-toggle="tab"><span class="glyphicon glyphicon-file"></span> Resume</a></li>
<li><a href="#contact" data-toggle="tab"><span class="glyphicon glyphicon-envelope"></span> Contact</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane fade in active" id="about">
<h2>Nice to meet you.</h2>
<p>I'm a software engineer with <span id="num-dev-exp-years">many</span> years of backend experience and 3 years of cybersecurity experience from sunny <a href="https://maps.google.com/?q=San+Diego,+CA" target="_blank">San Diego, CA</a>. The San Francisco bay area was my home from 2012 to 2022, and I currently live in New York City. Outside of software, I enjoy <a data-toggle="tooltip" title="piano, flute, piccolo, saxophone (alto/baritone), trombone, voice">playing music</a>, dancing, learning and practicing <a data-toggle="tooltip" title="Mandarin, Spanish, Arabic">languages</a>, taking siestas, drinking tea, playing video games, traveling, taking and editing photos, trying new food, and using the <a href="https://en.wikipedia.org/wiki/Serial_comma" target="_blank">Oxford comma</a>.
</div>
<div class="tab-pane fade" id="projects">
<div class="page-header">
<h2>Personal projects <small>Take a look.</small></h2>
<p>Feel free to <a href="#contact" data-toggle="tab">shoot me a message</a> about any of my projects!</p>
</div>
<div class="row">
<div class="col-md-12">
<h3>Jacobs Institute project submission portal</h3>
<h4>Ruby on Rails</h4>
<p>
<a href="https://github.com/jacobs-design/jortal" class="btn btn-xs btn-primary" target="_blank">View on Github <span class="glyphicon glyphicon-new-window"></span></a>
</p>
<p>
This rails web app, affectionally called <abbr title="Jacobs pORTAL!" data-toggle="tooltip">Jortal</abbr>, is a simple central repository for project submissions to the <a href="//jacobsinstitute.berkeley.edu/" target="_blank">Jacobs Institute for Design Innovation</a> at UC Berkeley.
</p>
</div>
</div>
<div class="row">
<div class="col-md-12">
<h3>SecureMe</h3>
<h4>Java | Android SDK & Studio</h4>
<p>
<a href="https://github.com/sait-berkeley-infosec/SecureMe" class="btn btn-xs btn-primary" target="_blank">View on Github <span class="glyphicon glyphicon-new-window"></span></a>
</p>
<p>
SecureMe is a simple native Android app targeted at versions 2.2+ (practically 100% of all Android versions in use) that automagically helps users improve security settings on their Android devices. SecureMe checks devices for common security settings like securing a lock screen with a password, PIN, or pattern lock; enabling encryption; and other security-related configurations. Instead of users having to look up how to secure their devices, SecureMe tells users at a quick glance which security settings they have configured well (either manually or by default) and which settings they should take a look at to keep their data safe.
</p>
</div>
</div>
<div class="row">
<div class="col-md-12">
<h3>bwReport</h3>
<h4>Python | Cisco NetFlow</h4>
<p>
bwReport is an internal command-line interface tool for quick, simple, and precise bandwidth usage analysis. It is useful for gathering network usage statistics over both Ethernet and RADIUS Accounting (RFC 2866) Wi-Fi sessions (hosts behind NAT).
</p>
</div>
</div>
<div class="row">
<div class="col-md-12">
<h3>jchou.github.io</h3>
<h4>HTML/CSS/JavaScript | Twitter Bootstrap</h4>
<p>
<a href="https://github.com/jchou/jchou.github.io" class="btn btn-xs btn-primary" target="_blank">View on Github <span class="glyphicon glyphicon-new-window"></span></a>
</p>
<p>
You're looking at it! My personal website uses <a href="https://getbootstrap.com/" target="_blank">Twitter Bootstrap</a> to deliver a responsive, clean experience.
</p>
</div>
</div>
<div class="page-header">
<h2>Class projects <small>UC Berkeley <abbr title="Electrical Engineering and Computer Sciences" data-toggle="tooltip">EECS</abbr></small></h2>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">INFO 290: Sensors, Humans, Data, Apps (quantified self, affective computing, etc.)</a></h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-12">
<h3>Emotional pattern recognition from electrocardiogram signals <small>An exploration.</small></h3>
<h4>NeuLog electrocardiogram sensor | <a href="neulog-ecg-exploration.pdf" target="_blank">Slides</a></h4>
<p>
This was my first foray into electrocardiogram signals, so I had a few project goals:
<ul>
<li>Play with the NeuLog ECG sensor</li>
<li>Explore ECG correlates with:
<ul>Ephemeral emotional states</ul>
<ul>Sustained emotional states</ul>
</li>
</ul>
In all data recordings, I placed the NeuLog reference on my left forearm and the left and right nodes on my left and right wrists.
</p>
<p><strong>Ephemeral emotional states</strong></p>
<p>I wanted to see if I could reproduce a <a href="//www.nus.edu.sg/nurop/2009/FoE/U049092A.PDF" target="_blank">finding</a> by Teo Kah Ming (Department of Mechanical Engineering, National University of Singapore) of multiple P-wave ECG activity following shock, <em>i.e.</em>, sudden emotional disturbance. I subjected myself to videos that would present loud, screaming zombie at times unknown to me. The first few trials yielded unsatisfactory data, as electrical signals from my muscle movements created significant noise and interference with the ECG data. This was a result of the relatively crude nature of the NeuLog ECG sensor, the natural physiological response of muscle tension or movement to shock, and the self-experimental nature of this exploration. By the time I was finally able to acquire a clean signal, I likely already developed a desensitized response to the shock, despite the intermittency of the shocks. From this clean signal, I could not perceive any significant irregularity with any component of the PQRST wave complex, but there was an interesting elevation of total voltage between the final resting ECG and the initial resting ECG. However, this likely has no implications and is presumably an artifact of the nature of collecting data with the Neulog sensor.</p>
<p><strong>Sustained emotional states</strong></p>
<p>I briefly experimented with longer periods of data collection, this time while listening to the sad pieces of the <em>Les Misérables</em> film soundtrack. For both <em>I Dreamed a Dream</em> and <em>On My Own</em>, there were a few peculiar segments of the respective ECGs that nicely correlated to key segments of the respective pieces, but again this may be due to noisy interference from muscular electrical signals in response to my emotional states.</p>
<p><strong>Insights</strong></p>
<p>It was interesting to experiment with the NeuLog ECG sensor. It is very sensitive, yet it is simply clipped onto one's wrists and forearm (or knee), leading to noisy interference with the slightest muscle micromovements. Many other factors affected this exploration, including test subject health and variability (I only collected data from myself; next steps would be to collect the same data from others), and reproducibility of both ephemeral and sustained emotional states. Many thanks to <a href="//people.ischool.berkeley.edu/~chuang/" target="_blank">Professor John Chuang</a> and <a href="//people.ischool.berkeley.edu/~andy/" target="_blank">Andy Brooks</a> of the <a href="//ischool.berkeley.edu" target="_blank">UC Berkeley School of Information</a> for providing guidance throughout the course.</p>
</div>
</div>
<div class="row">
<div class="col-md-12">
<h3>face2emoji</h3>
<h4>Objective-C | Xcode | Affectiva</h4>
<p>
Native iOS app that captures facial expressions and outputs a corresponding emoji.
</p>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">CS 162: Operating Systems and Systems Programming</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-6">
<h3>Shell</h3>
<h4>C</h4>
<p>
Implementation of a shell, with support for basic built-ins, $PATH resolution, input/output resolution, signal handling and terminal control, and background processing.
</p>
</div>
<div class="col-md-6">
<h3>HTTP file and proxy server</h3>
<h4>C</h4>
<p>
Implementation of an HTTP file and proxy server, with support for directory index resolution, directory listing, and multiple requests per proxy connection.
</p>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">CS 160: User Interface Design and Development</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-12">
<h3>You Animal!</h3>
<h4>Java | Android SDK & Studio</h4>
<p>
Intuitive native Android app that instantly converts an input age to various corresponding animal years.
</p>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">CS 186: Database Systems</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-3">
<h3>Contribution data visualization</h3>
<h4>D3.js | Twitter Bootstrap | Flask | Postgresql</h4>
<p>
Uses D3.js to visualize campaign contribution data from the <a href="https://en.wikipedia.org/wiki/Federal_Election_Commission" title="Federal Election Commission" data-toggle="tooltip">FEC</a>.
</p>
</div>
<div class="col-md-3">
<h3>Distributed query implementation</h3>
<h4>Scala | Apache Spark</h4>
<p>
Implements symmetric hash join for distributed asynchronous programming using Apache Spark.
</p>
</div>
<div class="col-md-3">
<h3>Distributed SQL subroutine caching</h3>
<h4>Scala | Apache Spark</h4>
<p>
Implements user-defined function result caching using disk-based hash partitioning and in-memory UDF caching to dramatically reduce performance bottlenecks in a general distributed data processing framework.
</p>
</div>
<div class="col-md-3">
<h3>Efficient text parser and analyzer</h3>
<h4>Python | Bash</h4>
<p>
Efficiently captures the contents of large ebooks in a structured form suitable for analysis via a database or statistical package using streaming and out-of-core divide-and-conquer algorithms.
</p>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">CS 170: Efficient Algorithms and Intractable Problems</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-4">
<h3>Machine learning classifier for optical character recognition</h3>
<h4>Python</h4>
<p>
<a href="https://github.com/jchou/knn-classifier" class="btn btn-xs btn-primary" target="_blank">View on Github <span class="glyphicon glyphicon-new-window"></span></a>
</p>
<p>
Classifies images of handwritten digits and predicts machine-readable digits using the <a href="https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm" target="_blank">k-nearest neighbors</a> machine learning algorithm.
</p>
</div>
<div class="col-md-4">
<h3>DNA sequencer</h3>
<h4>Python</h4>
<p>
<a href="https://github.com/jchou/shotgun-sequencer" class="btn btn-xs btn-primary" target="_blank">View on Github <span class="glyphicon glyphicon-new-window"></span></a>
</p>
<p>
Takes overlapping DNA subsequences and assembles the respective full DNA sequence using <a href="https://en.wikipedia.org/wiki/Shotgun_sequencing" target="_blank">shotgun sequencing</a>.
</p>
</div>
<div class="col-md-4">
<h3>Sudoku SAT solver input generator</h3>
<h4>Python | STP (<a href="https://en.wikipedia.org/wiki/Boolean_satisfiability_problem" target="_blank">SAT</a> solver)</h4>
<p>
<a href="https://github.com/jchou/sat-sudoku" class="btn btn-xs btn-primary" target="_blank">View on Github <span class="glyphicon glyphicon-new-window"></span></a>
</p>
<p>
Generates the input to STP, a SAT solver, which in turn solves a Sudoku puzzle respective to given input.
</p>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">CS 168: Networking Architecture and Protocols</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-4">
<h3>Reliable transport protocol emulator</h3>
<h4>Python</h4>
<p>
Bears Transport Protocol (BTP) provides in-order, reliable delivery of UDP datagrams in the face of packet loss, delay, corruption, duplication, and re-ordering, using fast retransmit and selective acknowledgments to optimize performance.
</p>
</div>
<div class="col-md-4">
<h3>Distance-vector router simulation</h3>
<h4>Python</h4>
<p>
Simulates a network of <a href="https://en.wikipedia.org/wiki/Distance-vector_routing_protocol" target="_blank">distance-vector</a> routers. Each router is an instance of a single DV router class and must correctly forward packets throughout the network of router instances in the face of new links, broken links, routing loops, and no central routing authority.
</p>
</div>
<div class="col-md-4">
<h3>Stateful firewall</h3>
<h4>Python</h4>
<p>
Simulates a network firewall on given input and output interfaces. Performs packet capture, analysis, and forwarding based on specified firewall rules. Covers TCP/UDP, DNS, ICMP, HTTP. Modular and extensible to other protocols.
</p>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">CS 161: Computer Security</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-6">
<h3>Forensics tool</h3>
<h4>C</h4>
<p>
A secure metadata extraction tool for PNG and JPEG-Exif images written in C. Extracts data from PNGs and JPEGs in a safe and secure manner to neutralize image data attack vectors. Safely handles malicious input injected into a PNG/JPEG by an attacker.
</p>
</div>
<div class="col-md-6">
<h3>DNS spoofer</h3>
<h4>Python | Scapy</h4>
<p>
Sends packets to hosts making DNS requests on the same local area network in order to impersonate a DNS server and launch DNS spoofing attacks. When successful, redirects unsuspecting users to desired destination.
</p>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">CS 61C: Computer Architecture (Machine Structures)</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-3">
<h3>Distributed word co-occurrence analyzer</h3>
<h4>Java | Apache Hadoop MapReduce | Amazon EC2 cloud computing</h4>
<p>
Answers the question: given a word, what other words are statistically associated with it? Given a target word, we can find words in a body of text that are closely related to it by ranking each unique word in a document by its co-occurrence rate with the target word.
</p>
</div>
<div class="col-md-3">
<h3>MIPS instruction set emulator</h3>
<h4>C</h4>
<p>
Parses instructions in the <abbr title="Microprocessor without Interlocked Pipeline Stages" data-toggle="tooltip">MIPS</abbr> <abbr title="Instruction Set Architecture" data-toggle="tooltip">ISA</abbr> to simulate a processor operating on the MIPS instruction set. Sample instructions include bit shifting, reading/writing in memory, arithmetic operations, conditional statements, instruction execution logic jumps, and system calls.
</p>
</div>
<div class="col-md-3">
<h3>Optimized parallel image processor</h3>
<h4>C | OpenMP</h4>
<p>
Performs optimized 2D convolution on images, using kernels to achieve image <em>filter</em> effects such as sharpening, blurring, inverting, and more. Specific optimization techniques include <a href="http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions" title="Streaming SIMD Extensions" data-toggle="tooltip">SSE</a> batch processing, register and cache blocking, loop unrolling, matrix padding, and OpenMP multi-threading and parallel processing.
</p>
</div>
<div class="col-md-3">
<h3>Processor design</h3>
<h4>Logisim</h4>
<p>
Simulates a 16-bit processor in <a href="//cburch.com/logisim/" target="_blank">Logisim</a>, complete with a specified <abbr title="Instruction Set Architecture" data-toggle="tooltip">ISA</abbr> including arithmetic operations, writing/reading to/from registers and memory, and instruction logic such as jumping and branching.
</p>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">CS 61B: Data Structures</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-4">
<h3>Sharks and Fish (simulation)</h3>
<h4>Java</h4>
<p>
Simulates an ocean containing sharks and fish, which are created and destroyed according to a given set of rules, similar to Conway's <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life" target="_blank">Game of Life</a>. Uses <a href="https://en.wikipedia.org/wiki/Run-length_encoding" target="_blank">run-length encoding</a> to compress the ocean representation.
</p>
</div>
<div class="col-md-4">
<h3>Network (the game)</h3>
<h4>Java</h4>
<p>
Network is a 2-player game on an 8-by-8 board. A player can win by connecting six or more chips orthogonally or diagonally from the player's edge of the board to the opposite edge of the board. Players can play against simple artficial intelligence logic that uses <a href="https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning">alpha-beta pruning</a> and the <a href="https://en.wikipedia.org/wiki/Minimax" target="_blank">minimax algorithm</a> to determine optimal moves.
</p>
</div>
<div class="col-md-4">
<h3>Weighted undirected graphs and <abbr title="Minimum Spanning Trees" data-toggle="tooltip">MSTs</abbr></h3>
<h4>Java</h4>
<p>
This final project combines a variety of data structures and algorithms to implement a well-encapsulated abstract data type to represent a weighted undirected graph. The second part of the project implements the greedy <a href="https://en.wikipedia.org/wiki/Kruskal's_algorithm" target="_blank">Kruskal's algorithm</a> to find a minimum spanning tree.
</p>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">CS 61A: Structure and Interpretation of Computer Programs</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-3">
<h3>Hog (the game)</h3>
<h4>Python</h4>
<p>
Hog is a text-based dice game. Among several gameplay rules, the game implements (and allows easy extension of) several different strategies to achieve victory using probability and other heuristics.
</p>
</div>
<div class="col-md-3">
<h3>Tweet sentiment trends visualization</h3>
<h4>Python (+ graphics/Tkinter)</h4>
<p>
Data visualization project that collects public geotagged tweets, assigns a sentiment to each tweet based on its content, geographically aggregates tweets, and colors each US state according to its aggregate tweet sentiment.
</p>
</div>
<div class="col-md-3">
<h3>Ants vs. SomeBees</h3>
<h4>Python (+ graphics/Tkinter)</h4>
<p>
Ants vs. SomeBees is a tower defense game inspired by the popular PopCap Games's Plants vs. Zombies. The project is an exercise in and focuses on code modularity and reusability.
</p>
</div>
<div class="col-md-3">
<h3>Scheme interpreter</h3>
<h4>Python</h4>
<p>
Scheme interpreter interprets a subset of the <a href="https://en.wikipedia.org/wiki/Scheme_(programming_language)" target="_blank">Scheme programming language</a>, naturally focusing on the power of recursion and functional languages.
</p>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">EE 40: Microelectronic Circuits</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-12">
<h3>Electroencephalogram</h3>
<h4>Multisim</h4>
<p>
As the final project of the course, we designed an <abbr title="Electroencephalogram" data-toggle="tooltip">EEG</abbr> complete wth its own power source on Multisim and printed custom <abbr title="Printed Circuit Boards" data-toggle="tooltip">PCBs</abbr>. We tested the EEG on none other than our very own <a href="https://www.eecs.berkeley.edu/Faculty/Homepages/maharbiz.html" target="_blank">Professor Michel Maharbiz</a> (with the necessary safety precautions). In essence, the EEG can detect electrical impulses the brain fires when moving one's eyeballs up/down and to each side.
</p>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">EE 20: Structure and Interpretation of Systems and Signals</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-12">
<h3>Acoustic fingerprinting and frequency-based music identifier</h3>
<h4>MATLAB</h4>
<p>
This project, written solely in MATLAB, is similar to the popular <a href="www.shazam.com/" target="_blank">Shazam</a> music identification service to identify music based on <a href="https://en.wikipedia.org/wiki/Acoustic_fingerprint" target="_blank">acoustic fingerprinting</a> and frequency analysis.
</p>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane fade" id="resume">
<a href="jack-chou-resume.pdf" class="btn btn-primary btn-lg btn-block"><span class="glyphicon glyphicon-save"></span> Download jack-chou-resume.pdf</a>
<div class="embed-responsive embed-responsive-4by3">
<object data="jack-chou-resume.pdf#view=FitH" type="application/pdf" class="embed-responsive-item"></object>
</div>
</div>
<div class="tab-pane fade" id="contact">
<h2>Let's talk.</h2>
<div class="row">
<div class="col-xs-1 col-md-1 text-right"><strong>email:</strong></div>
<div class="col-xs-11 col-md-11"><script type="text/javascript">var y="jacksh";var a="chou@gm";var s="ail.com";yas=y+a+s;document.write('<a href="mailto:'+yas+'">'+yas+'</a>');</script><noscript>Please enable JavaScript to see my email address.</noscript></div>
</div>
<div class="row">
<div class="col-xs-1 col-md-1 text-right"><strong>github:</strong></div>
<div class="col-xs-11 col-md-11"><a href="https://github.com/jchou" target="_blank">github.com/<strong>jchou</strong></a></div>
</div>
<div class="row">
<div class="col-xs-1 col-md-1 text-right"><strong>linkedin:</strong></div>
<div class="col-xs-11 col-md-11"><a href="https://linkedin.com/in/jackschou" target="_blank">linkedin.com/<strong>jackschou</strong></a></div>
</div>
<div class="row">
<div class="col-xs-1 col-md-1 text-right"><strong>more:</strong></div>
<div class="col-xs-11 col-md-11"><a href="#resume" data-toggle="tab">see my resume (PDF)</a></div>
</div>
</div>
</div>
</div>
</div>
<script src="js/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/scripts.js"></script>
</body>
</html>