summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdownload/build.sh1
-rw-r--r--download/cv.pdfbin34277 -> 39633 bytes
-rw-r--r--download/resume_dl.html104
-rwxr-xr-xresume.css29
-rwxr-xr-xresume.html44
-rw-r--r--themes/Snowflake.cpp49
-rw-r--r--themes/Snowflake.h1
-rwxr-xr-xthemes/dist/output.wasmbin82965 -> 83691 bytes
8 files changed, 151 insertions, 77 deletions
diff --git a/download/build.sh b/download/build.sh
new file mode 100755
index 0000000..b3c88af
--- /dev/null
+++ b/download/build.sh
@@ -0,0 +1 @@
+wkhtmltopdf resume_dl.html cv.pdf \ No newline at end of file
diff --git a/download/cv.pdf b/download/cv.pdf
index 0d05620..bb0dc1d 100644
--- a/download/cv.pdf
+++ b/download/cv.pdf
Binary files differ
diff --git a/download/resume_dl.html b/download/resume_dl.html
index 3ff59d4..bd4ea57 100644
--- a/download/resume_dl.html
+++ b/download/resume_dl.html
@@ -1,10 +1,12 @@
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta charset="utf-8">
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+ <meta charset="UTF-8" />
<style>
body {
- font-size: 14px !important;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 14px;
padding: 2rem;
}
@@ -24,7 +26,6 @@
position: relative;
text-align: left;
background-color: white;
- border-radius: 2px;
color: black;
font-family: Arial,Helvetica Neue,Helvetica,sans-serif !important;
line-height: 1.2rem;
@@ -70,31 +71,45 @@
}
#resume > header > h1 {
- font-size: 2rem;
+ font-size: 1.7rem;
padding: 0;
margin: 0;
+ font-weight: 500;
}
- #resume > header > h3 {
- padding: 1rem;
- margin: 0;
- color: #7a7a7a;
+ #resume > header > div {
+ padding-top: 0.8rem;
}
#resume > header > div > span {
- padding-left: 0.5rem;
padding-right: 0.5rem;
+ padding-left: 0.5rem;
+ }
+
+ #resume > header > div > span > i {
+ padding-right: 0.25rem;
+ }
+
+ .resume_section {
+ width: 100%;
}
- h2 {
+ .resume_section > h2 {
font-size: 1.25rem !important;
font-variant: small-caps;
- border-bottom: 1px solid #d9d9d9;
font-weight: bold;
- width: 100%;
padding: 0;
margin: 0;
- line-height: 2rem;
+ padding: 0.5rem;
+ background-color: #2E4C6D;
+ color: white;
+ }
+
+ .resume_section > div {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ padding-left: 0.5rem;
+ padding-right: 0.5rem;
}
.skill-section {
@@ -119,35 +134,38 @@
flex-direction: row;
justify-content: space-between;
}
+
+ .experience-item li {
+ width: 100%;
+ }
</style>
</head>
<body>
<section id='resume'>
<header>
<h1>Matthew Kosarek</h1>
-
- <h3>Software Engineer</h3>
-
<div>
- <span><b>TEL:</b> +1-201-400-2699</span>
- <span><b>EMAIL:</b> mkosare1@gmail.com</span>
+ <span><i>&#128422;</i>Computer Programmer</span>
+ <span><i>&#128222;</i> +1-201-400-2699</span>
+ <span><i>&#128231;</i> mkosare1@gmail.com</span>
</div>
</header>
- <div>
+ <section class='resume_section'>
<h2>Skills</h2>
- <p>
+ <div>
<div class="skill-section">
- <b>Languages & Tech</b><div>C/C++, OpenGL, C#, ASP.NET, TypeScript/JavaScript, ReactJS, ThreeJS, HTML/CSS, SQL, Java</div>
+ <b>Languages & Tech</b><div>C/C++, C#, TypeScript/JavaScript, HTML & CSS, Java, OpenGL, ASP.NET, ReactJS, WebGL, SQL</div>
</div>
<div class="skill-section">
- <b>Tools</b><div>Git, Visual Studio Professional, Unity, Sourcetree, npm, Webpack, TeamCity, NuGet, AWS</div>
+ <b>Tools</b><div>Git, Visual Studio Professional, Unity, npm, Webpack, TeamCity, NuGet, AWS</div>
</div>
- </p>
- </div>
- <div>
+ </div>
+ </section>
+
+ <section class='resume_section'>
<h2>Experience</h2>
- <p>
+ <div>
<div class="experience-item">
<div class="experience-header">
<div>
@@ -161,10 +179,19 @@
</div>
<ul>
<li>
- Implemented new features and fixed bugs as a member of the MachineLogic Team, which is tasked with creating a visual programming language for our hardware stack.
+ Led the MachineApps team in the development of a robust infrastructure for industrial software applications
+ </li>
+ <li>
+ Developed and shipped a number of time-sensitive client projects
+ </li>
+ <li>
+ Interacted extensively with other teams to align on specific business goals and meet client deadlines
</li>
<li>
- Designed and developed a CNC application for our hardware that accepts G-Code files as input and provides a realtime rendering of the path as the machine follows it.
+ Implemented new features and fixed bugs in both the engine and frontend of a code-free programming language
+ </li>
+ <li>
+ Developed a CNC application that accepts G-Code files as input and provides a realtime rendering of the path during execution
</li>
</ul>
</div>
@@ -181,12 +208,15 @@
</div>
<ul>
<li>
- Developed and maintained the data pipeline - from data entry, to data validation, to data publishing - for <i>Arcane Shodown</i>.
+ Developed and maintained the data pipeline - from data entry, to data validation, to data publishing - for <i>Arcane Showdown</i>
</li>
<li>
Designed, built, and maintained a live operations scheduling and publishing web application for <i>DomiNations</i>
</li>
<li>
+ Implemented a localization system for <i>Arcane Showdown</i> which allowed the game to be released in different languages
+ </li>
+ <li>
Implemented game features on all parts of the stack, including tools, Unity client, and game servers
</li>
<li>
@@ -254,11 +284,12 @@
</li>
</ul>
</div>
- </p>
- </div>
- <div>
+ </div>
+ </section>
+
+ <section class='resume_section'>
<h2>Education</h2>
- <p>
+ <div>
<div class="experience-item">
<div class="experience-header">
<div>
@@ -274,14 +305,15 @@
B.S. in Computer Engineering (Magna Cum Laude)
</li>
<li>
- 3.53 GPA
+ 3.53 GPA (Cumulative)
</li>
<li>
<i>Relevant Coursework</i>: Computer Graphics, Object Oriented Software Engineering, Linear Algebra, Video Game Engines and Design, Operating Systems, Data Structures, Introduction to Renewable Energy Engineering
</li>
</ul>
</div>
- </p>
- </div>
+ </div>
+ </section>
+ </section>
</body>
</html>
diff --git a/resume.css b/resume.css
index 914e296..e5b983f 100755
--- a/resume.css
+++ b/resume.css
@@ -1,3 +1,7 @@
+html {
+ overflow-y: overlay;
+}
+
body {
font-size: 14px !important;
}
@@ -18,7 +22,6 @@ header {
position: relative;
text-align: left;
background-color: white;
- border-radius: 2px;
color: black;
font-family: Arial,Helvetica Neue,Helvetica,sans-serif !important;
line-height: 1.2rem;
@@ -70,18 +73,21 @@ header {
font-weight: 500;
}
-#resume > header > h3 {
+#resume > header > div {
padding-top: 0.8rem;
- padding-bottom: 0.8rem;
- margin: 0;
- color: #396EB01;
- font-weight: 400;
- font-variant: small-caps;
- font-size: 1.25rem;
}
#resume > header > div > span {
- padding-right: 1rem;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+#resume > header > div > span > i {
+ padding-right: 0.25rem;
+}
+
+.resume_section {
+ width: 100%;
}
.resume_section > h2 {
@@ -93,7 +99,6 @@ header {
padding: 0.5rem;
background-color: #2E4C6D;
color: white;
- border-radius: 2px;
}
.resume_section > div {
@@ -125,3 +130,7 @@ header {
flex-direction: row;
justify-content: space-between;
}
+
+.experience-item li {
+ width: 100%;
+} \ No newline at end of file
diff --git a/resume.html b/resume.html
index b075a6e..0abcaa9 100755
--- a/resume.html
+++ b/resume.html
@@ -17,7 +17,7 @@
<li style="display: none;"><a href='/posts.html'>&#128221; Posts</a></li>
</ul>
</nav>
- </header>
+ </header>
<section id='resume'>
<div id='resume_button_container'>
<button id='full_screen_button' title='Toggle Fullscreen'>
@@ -31,11 +31,11 @@
<header>
<h1>Matthew Kosarek</h1>
- <h3>Software Engineer</h3>
-
+
<div>
- <span><b>&#128222;</b> +1-201-400-2699</span>
- <span><b>&#128231;</b> mkosare1@gmail.com</span>
+ <span><i>&#128422;</i>Computer Programmer</span>
+ <span><i>&#128222;</i> +1-201-400-2699</span>
+ <span><i>&#128231;</i> mkosare1@gmail.com</span>
</div>
</header>
@@ -43,13 +43,13 @@
<h2>Skills</h2>
<div>
<div class="skill-section">
- <b>Programming Languages & Tech</b><div>C/C++, C#, TypeScript/JavaScript, HTML & CSS, Java, OpenGL, ASP.NET, ReactJS, WebGL, SQL</div>
+ <b>Languages & Tech</b><div>C/C++, C#, TypeScript/JavaScript, HTML & CSS, Java, OpenGL, ASP.NET, ReactJS, WebGL, SQL</div>
</div>
<div class="skill-section">
<b>Tools</b><div>Git, Visual Studio Professional, Unity, npm, Webpack, TeamCity, NuGet, AWS</div>
</div>
</div>
- </section>
+ </section>
<section class='resume_section'>
<h2>Experience</h2>
@@ -66,15 +66,15 @@
</div>
</div>
<ul>
- <li>
- Led the MachineApps team in the development of a robust infrastructure for industrial software applications
- </li>
- <li>
- Developed and shipped a number of time-sensitive client projects
- </li>
- <li>
- Interacted extensively with other teams to align on specific business goals and meet client deadlines
- </li>
+ <li>
+ Led the MachineApps team in the development of a robust infrastructure for industrial software applications
+ </li>
+ <li>
+ Developed and shipped a number of time-sensitive client projects
+ </li>
+ <li>
+ Interacted extensively with other teams to align on specific business goals and meet client deadlines
+ </li>
<li>
Implemented new features and fixed bugs in both the engine and frontend of a code-free programming language
</li>
@@ -102,6 +102,9 @@
Designed, built, and maintained a live operations scheduling and publishing web application for <i>DomiNations</i>
</li>
<li>
+ Implemented a localization system for <i>Arcane Showdown</i> which allowed the game to be released in different languages
+ </li>
+ <li>
Implemented game features on all parts of the stack, including tools, Unity client, and game servers
</li>
<li>
@@ -169,8 +172,9 @@
</li>
</ul>
</div>
- </p>
- </div>
+ </div>
+ </section>
+
<section class='resume_section'>
<h2>Education</h2>
<div>
@@ -189,7 +193,7 @@
B.S. in Computer Engineering (Magna Cum Laude)
</li>
<li>
- 3.53 GPA
+ 3.53 GPA (Cumulative)
</li>
<li>
<i>Relevant Coursework</i>: Computer Graphics, Object Oriented Software Engineering, Linear Algebra, Video Game Engines and Design, Operating Systems, Data Structures, Introduction to Renewable Energy Engineering
@@ -198,7 +202,7 @@
</div>
</div>
</section>
+ </section>
</body>
-
<script src='/resume.js'></script>
</html>
diff --git a/themes/Snowflake.cpp b/themes/Snowflake.cpp
index da42515..5890b57 100644
--- a/themes/Snowflake.cpp
+++ b/themes/Snowflake.cpp
@@ -41,6 +41,7 @@ inline void initFlake(SnowflakeParticleRenderer* renderer, SnowflakeUpdateData*
inline void spawnFlake(SnowflakeParticleRenderer* renderer, SnowflakeUpdateData* ud) {
ud->velocity = Vector2(randomFloatBetween(-10, 10), randomFloatBetween(-100, -85));
ud->position = Vector2(randomFloatBetween(0, renderer->xMax), randomFloatBetween(renderer->yMax, renderer->yMax + 256));
+ ud->isAlive = true;
}
inline void findAndSpawnNextFlake(SnowflakeParticleRenderer* renderer) {
@@ -49,7 +50,7 @@ inline void findAndSpawnNextFlake(SnowflakeParticleRenderer* renderer) {
if (renderer->endIndex >= renderer->numSnowflakes)
renderer->endIndex = 0;
- } while (renderer->updateData[renderer->endIndex].onGround);
+ } while (renderer->updateData[renderer->endIndex].isAlive);
spawnFlake(renderer, &renderer->updateData[renderer->endIndex]);
}
@@ -106,6 +107,26 @@ void SnowflakeParticleRenderer::load(SnowflakeLoadParameters params, Renderer2d*
glBindVertexArray(0);
}
+inline void updateFlake(SnowflakeParticleRenderer* renderer, SnowflakeUpdateData* ud, int32 s, float32 dtSeconds, bool addWind) {
+ // Once the snowflake has been set to die in this interval, we try and increment the
+ // startIndex
+ if (!ud->isAlive && renderer->startIndex == s) {
+ renderer->startIndex = (renderer->startIndex + 1) % renderer->numSnowflakes;
+ return;
+ }
+
+ if (addWind) ud->velocity += renderer->windSpeed;
+ ud->position += ud->velocity * dtSeconds;
+
+ if (ud->position.y < 0)
+ ud->isAlive = false;
+
+ Mat4x4 m = Mat4x4().translateByVec2(ud->position);
+ for (int32 v = ud->vtxIdx; v < (ud->vtxIdx + ud->numVertices); v++) {
+ renderer->vertices.data[v].vMatrix = m;
+ }
+}
+
void SnowflakeParticleRenderer::update(float32 dtSeconds) {
timeUntilNextSpawnSeconds -= dtSeconds;
if (timeUntilNextSpawnSeconds < 0) {
@@ -121,16 +142,22 @@ void SnowflakeParticleRenderer::update(float32 dtSeconds) {
addWind = true;
}
- for (int32 s = startIndex; s < endIndex; s++) {
- SnowflakeUpdateData* ud = &updateData[s];
-
- if (addWind) ud->velocity += windSpeed;
-
- ud->position += ud->velocity * dtSeconds;
-
- Mat4x4 m = Mat4x4().translateByVec2(ud->position);
- for (int32 v = ud->vtxIdx; v < (ud->vtxIdx + ud->numVertices); v++) {
- vertices.data[v].vMatrix = m;
+ if (startIndex < endIndex) {
+ for (int32 s = startIndex; s < endIndex; s++) {
+ SnowflakeUpdateData* ud = &updateData[s];
+ updateFlake(this, ud, s, dtSeconds, addWind);
+ }
+ }
+ else {
+ int32 endRange = startIndex - numSnowflakes;
+ for (int32 s = endIndex - 1; s >= endRange; s--) {
+ SnowflakeUpdateData* ud;
+ if (s < 0)
+ ud = &updateData[numSnowflakes + s];
+ else
+ ud = &updateData[s];
+
+ updateFlake(this, ud, s, dtSeconds, addWind);
}
}
}
diff --git a/themes/Snowflake.h b/themes/Snowflake.h
index d44851b..f67c214 100644
--- a/themes/Snowflake.h
+++ b/themes/Snowflake.h
@@ -22,6 +22,7 @@ struct SnowflakeUpdateData {
Vector2 velocity;
Vector2 position;
float32 rotation;
+ bool isAlive = false;
bool onGround = false;
int32 vtxIdx = 0;
diff --git a/themes/dist/output.wasm b/themes/dist/output.wasm
index 776adba..d78d57a 100755
--- a/themes/dist/output.wasm
+++ b/themes/dist/output.wasm
Binary files differ