-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
373 lines (345 loc) · 18.2 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
<!DOCTYPE HTML>
<!--
Dimension by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
-->
<html>
<head>
<title>Daniel Black</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<link rel="stylesheet" href="assets/css/main.css" />
<noscript><link rel="stylesheet" href="assets/css/noscript.css" /></noscript>
</head>
<body class="is-preload">
<!-- Wrapper -->
<div id="wrapper">
<!-- Header -->
<header id="header">
<div class="logo">
<span class="icon"><i class="fas fa-terminal fa-lg"></i></span>
</div>
<div class="content">
<div class="inner">
<h1>Daniel RG Black</h1>
<p>Welcome to my portfolio, here you can find my past and future works as a software engineer.<br />
Javascript • Python • C++ • Flask • Express • SQL • Postgres • Docker • React</p>
</div>
</div>
<nav>
<ul>
<li><a href="#intro">Why</a></li>
<li><a href="#work">Projects</a></li>
<li><a href="#about">About Me</a></li>
<li><a href="#contact">Contact</a></li>
<!--<li><a href="#elements">Elements</a></li>-->
</ul>
</nav>
</header>
<!-- Main -->
<div id="main">
<!-- Intro -->
<article id="intro">
<h2 class="major">Intro</h2>
<p>The purpose of this portfolio website is to help me keep track of <a href="#work">past works</a> as well as help fellow engineers and companies alike review my stack. My portfolio will be continuously updated so I can look back on my past projects to keep track of my own progress. I hope the clear quality discrepency between each project is something that gives new engineers confidence while being something seasoned engineers can appreciate.</p>
<p>Whoever you are, I hope this site serves its purpose to you well. Feel free to visit the <a href="#about">contact</a> page to send me an email with questions or business inqueries at any time and for any reason. Also, if you'd like you can read my story on the <a href="#about">about me</a> page.</p>
</article>
<!-- Work -->
<article id="work">
<h2 class="major">Work</h2>
<span class="image main"><img src="images/gx.png" alt="" /></span>
<p>GXRift/RiftStats is stat-tracking application that can be utilized by all League of Legends Players world-wide. Many similar website exist to help players improve their play and track their progress, unfourtunately the stats given by those websites were not ones I found beneficial to me and my circle of friends. I figured the best way to fix that dilemma was to create my own, and so I did!</p>
<p>The application utilizes the Riot Games API to retrieve dynamic data for individual players and each game they've played (including the stats for all 9 opponents a searched player has in each game). I created simple but effective algorithms to take data from each match(100 matches, each multiplied by 10 to include data for each opponent) to display the stats I wanted to see. The largest obstical I faced were the APIs call limits. I realized that for this site to work for every LoL player, I needed to store the data locally and have players individually call the API only when needed. I used Python and Flask to do this by storing 100 of the most recent matches a searched player was found in. A page load will only access the local data, and there is a very high likelihood that a new user search will be successful because a former opponent has also had their data retrieved. If not, a user can click update to call the API and store more data in the database.</p>
<span class="image main"><img src="images/wfl.png" alt="" /></span>
<p>WhatsForLunch is a clone of Instagram, it was created to help myself and 3 collaborators hone our React and Python skills. Myself, <a href="https://github.com/jarondegen"> Jaron Degen</a>, <a href="https://github.com/aganesh0988"> Andrea Jackson</a> and <a href="https://github.com/doncibo">Quincy Jones</a> used an Agile workflow through every phase of the production cycle over the course of five days to complete the project.</p>
<p>My job in particular was to implement a backend with Python and Flask. This backend handled the storing and retrieval of User, Social, Image and Comment data. The Flask server was called on specific page loads based on the currently logged in user. Flask-SQLAlchemy was used in conjunction with SQL to actually store and retrieve the data.</p>
<span class="image main"><img src="images/ionia.png" alt="" /></span>
<p>OP Champs is an homage to Riot Games' flagship title: League of Legends. As a player of the competitive video game for almost 10 years, I really wanted to utilize my new found React skills on a game I was and am so passionate about. This application is a simple database used to display Champion and Universe lore for the game. Riot developers and story writers have put in a lot of time into each of the 154 champions and their individual stories yet it's hard to find a resource where users can not only find the stories, but also discuss it with others. OPChamps was created to do just that.</p>
<p>The schema for the website is quite simple. Auth and data stoage are handled with an Express backend while the frontend is rendered using React. At the time of create, rReact was a newly aquired skill and this project served great practice for myself. The Express backend stores User, Comment, Champion and Region data.</p>
<span class="image main"><img src="images/average.png" alt="" /></span>
<p>AverageReads was my first deployed application. In collaboration with 3 others, we created a clone of the popular Amazon website GoodReads. The website allows users to find new and noteworthy books to mark as 'read', 'reading', or 'wants to read' similarly to the actual goodreads website.</p>
<p>Javascript is used on both the frontend and the backend of this project. The frontend uses the Pug view-engine to render the pages while Express and Sequelize take care of storing Book and User data.</p>
</article>
<!-- About -->
<article id="about">
<h2 class="major">About Me</h2>
<span class="image main"><img src="images/aboutme.png" alt="" /></span>
<p>My name is Daniel Black and I've always had a passion for solving problems. Early in my life I decided that a career in the investment industry would allow me to follow that passion. I spent countless years honing my craft to be the best I could be in my field. When I finally landed what I would have considered at that time to be my dream job, I felt that I was finally in a position to satisfy my desire of solving problems.</p>
<p>Unfourtunately, I realized that the industry I decided to pursue was not one that I could do that consistently. A brokage firm should care about their clients enough that my own methodology for finding the right stocks shouldn't be utilized, rather I should be using the firms methodology. At that point I decided it was time to do some soul searching and move on.</p>
<p>Coupled with my enduring passion for technology, it was a matter of time that I'd find my self pursuing a career in software development. I do still have an ardent relationship with investing, but it became clear to me while working in the field, that what I really loved was the analytics and the algorithms involved in finding the gem in the rough. Introducing myself to programming was the single greatest choice I have made in my lifetime, as I've quickly realized there are an infinite number of problems to be solved and algorithms to be written. </p>
</article>
<!-- Contact -->
<article id="contact">
<h2 class="major">Contact</h2>
<form method="post" action="#">
<div class="fields">
<div class="field half">
<label for="name">Name</label>
<input type="text" name="name" id="name" />
</div>
<div class="field half">
<label for="email">Email</label>
<input type="text" name="email" id="email" />
</div>
<div class="field">
<label for="message">Message</label>
<textarea name="message" id="message" rows="4"></textarea>
</div>
</div>
<ul class="actions">
<li><input type="submit" value="Send Message" class="primary" /></li>
<li><input type="reset" value="Reset" /></li>
</ul>
</form>
<ul class="icons">
<li><a href="#" class="icon brands fa-twitter"><span class="label">Twitter</span></a></li>
<li><a href="#" class="icon brands fa-facebook-f"><span class="label">Facebook</span></a></li>
<li><a href="https://www.linkedin.com/in/danielrobertblack/" class="icon brands fa-linkedin"><span class="label">Instagram</span></a></li>
<li><a href="https://github.com/drblack8" class="icon brands fa-github"><span class="label">GitHub</span></a></li>
</ul>
</article>
<!-- Elements -->
<article id="elements">
<h2 class="major">Elements</h2>
<section>
<h3 class="major">Text</h3>
<p>This is <b>bold</b> and this is <strong>strong</strong>. This is <i>italic</i> and this is <em>emphasized</em>.
This is <sup>superscript</sup> text and this is <sub>subscript</sub> text.
This is <u>underlined</u> and this is code: <code>for (;;) { ... }</code>. Finally, <a href="#">this is a link</a>.</p>
<hr />
<h2>Heading Level 2</h2>
<h3>Heading Level 3</h3>
<h4>Heading Level 4</h4>
<h5>Heading Level 5</h5>
<h6>Heading Level 6</h6>
<hr />
<h4>Blockquote</h4>
<blockquote>Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.</blockquote>
<h4>Preformatted</h4>
<pre><code>i = 0;
while (!deck.isInOrder()) {
print 'Iteration ' + i;
deck.shuffle();
i++;
}
print 'It took ' + i + ' iterations to sort the deck.';</code></pre>
</section>
<section>
<h3 class="major">Lists</h3>
<h4>Unordered</h4>
<ul>
<li>Dolor pulvinar etiam.</li>
<li>Sagittis adipiscing.</li>
<li>Felis enim feugiat.</li>
</ul>
<h4>Alternate</h4>
<ul class="alt">
<li>Dolor pulvinar etiam.</li>
<li>Sagittis adipiscing.</li>
<li>Felis enim feugiat.</li>
</ul>
<h4>Ordered</h4>
<ol>
<li>Dolor pulvinar etiam.</li>
<li>Etiam vel felis viverra.</li>
<li>Felis enim feugiat.</li>
<li>Dolor pulvinar etiam.</li>
<li>Etiam vel felis lorem.</li>
<li>Felis enim et feugiat.</li>
</ol>
<h4>Icons</h4>
<ul class="icons">
<li><a href="#" class="icon brands fa-twitter"><span class="label">Twitter</span></a></li>
<li><a href="#" class="icon brands fa-facebook-f"><span class="label">Facebook</span></a></li>
<li><a href="#" class="icon brands fa-instagram"><span class="label">Instagram</span></a></li>
<li><a href="#" class="icon brands fa-github"><span class="label">Github</span></a></li>
</ul>
<h4>Actions</h4>
<ul class="actions">
<li><a href="#" class="button primary">Default</a></li>
<li><a href="#" class="button">Default</a></li>
</ul>
<ul class="actions stacked">
<li><a href="#" class="button primary">Default</a></li>
<li><a href="#" class="button">Default</a></li>
</ul>
</section>
<section>
<h3 class="major">Table</h3>
<h4>Default</h4>
<div class="table-wrapper">
<table>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>Item One</td>
<td>Ante turpis integer aliquet porttitor.</td>
<td>29.99</td>
</tr>
<tr>
<td>Item Two</td>
<td>Vis ac commodo adipiscing arcu aliquet.</td>
<td>19.99</td>
</tr>
<tr>
<td>Item Three</td>
<td> Morbi faucibus arcu accumsan lorem.</td>
<td>29.99</td>
</tr>
<tr>
<td>Item Four</td>
<td>Vitae integer tempus condimentum.</td>
<td>19.99</td>
</tr>
<tr>
<td>Item Five</td>
<td>Ante turpis integer aliquet porttitor.</td>
<td>29.99</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="2"></td>
<td>100.00</td>
</tr>
</tfoot>
</table>
</div>
<h4>Alternate</h4>
<div class="table-wrapper">
<table class="alt">
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>Item One</td>
<td>Ante turpis integer aliquet porttitor.</td>
<td>29.99</td>
</tr>
<tr>
<td>Item Two</td>
<td>Vis ac commodo adipiscing arcu aliquet.</td>
<td>19.99</td>
</tr>
<tr>
<td>Item Three</td>
<td> Morbi faucibus arcu accumsan lorem.</td>
<td>29.99</td>
</tr>
<tr>
<td>Item Four</td>
<td>Vitae integer tempus condimentum.</td>
<td>19.99</td>
</tr>
<tr>
<td>Item Five</td>
<td>Ante turpis integer aliquet porttitor.</td>
<td>29.99</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="2"></td>
<td>100.00</td>
</tr>
</tfoot>
</table>
</div>
</section>
<section>
<h3 class="major">Buttons</h3>
<ul class="actions">
<li><a href="#" class="button primary">Primary</a></li>
<li><a href="#" class="button">Default</a></li>
</ul>
<ul class="actions">
<li><a href="#" class="button">Default</a></li>
<li><a href="#" class="button small">Small</a></li>
</ul>
<ul class="actions">
<li><a href="#" class="button primary icon solid fa-download">Icon</a></li>
<li><a href="#" class="button icon solid fa-download">Icon</a></li>
</ul>
<ul class="actions">
<li><span class="button primary disabled">Disabled</span></li>
<li><span class="button disabled">Disabled</span></li>
</ul>
</section>
<section>
<h3 class="major">Form</h3>
<form method="post" action="#">
<div class="fields">
<div class="field half">
<label for="demo-name">Name</label>
<input type="text" name="demo-name" id="demo-name" value="" placeholder="Jane Doe" />
</div>
<div class="field half">
<label for="demo-email">Email</label>
<input type="email" name="demo-email" id="demo-email" value="" placeholder="jane@untitled.tld" />
</div>
<div class="field">
<label for="demo-category">Category</label>
<select name="demo-category" id="demo-category">
<option value="">-</option>
<option value="1">Manufacturing</option>
<option value="1">Shipping</option>
<option value="1">Administration</option>
<option value="1">Human Resources</option>
</select>
</div>
<div class="field half">
<input type="radio" id="demo-priority-low" name="demo-priority" checked>
<label for="demo-priority-low">Low</label>
</div>
<div class="field half">
<input type="radio" id="demo-priority-high" name="demo-priority">
<label for="demo-priority-high">High</label>
</div>
<div class="field half">
<input type="checkbox" id="demo-copy" name="demo-copy">
<label for="demo-copy">Email me a copy</label>
</div>
<div class="field half">
<input type="checkbox" id="demo-human" name="demo-human" checked>
<label for="demo-human">Not a robot</label>
</div>
<div class="field">
<label for="demo-message">Message</label>
<textarea name="demo-message" id="demo-message" placeholder="Enter your message" rows="6"></textarea>
</div>
</div>
<ul class="actions">
<li><input type="submit" value="Send Message" class="primary" /></li>
<li><input type="reset" value="Reset" /></li>
</ul>
</form>
</section>
</article>
</div>
<!-- Footer -->
<footer id="footer">
<p class="copyright">© dblack.app - Daniel Black</p>
</footer>
</div>
<!-- BG -->
<div id="bg"></div>
<!-- Scripts -->
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/browser.min.js"></script>
<script src="assets/js/breakpoints.min.js"></script>
<script src="assets/js/util.js"></script>
<script src="assets/js/main.js"></script>
</body>
</html>