<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dennis Krasnov</title>
    <description>The latest articles on DEV Community by Dennis Krasnov (@krasnov).</description>
    <link>https://dev.to/krasnov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F544204%2F13c0ca0c-bd80-411b-b552-a22c13afd4b6.png</url>
      <title>DEV Community: Dennis Krasnov</title>
      <link>https://dev.to/krasnov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/krasnov"/>
    <language>en</language>
    <item>
      <title>DO Hackathon: Official Submission</title>
      <dc:creator>Dennis Krasnov</dc:creator>
      <pubDate>Sat, 09 Jan 2021 19:59:46 +0000</pubDate>
      <link>https://dev.to/krasnov/do-hackathon-official-submission-10ao</link>
      <guid>https://dev.to/krasnov/do-hackathon-official-submission-10ao</guid>
      <description>&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;I built a portfolio website showcasing my skills and experience. Check it out at &lt;a href="https://denniskrasnov.com"&gt;denniskrasnov.com&lt;/a&gt;!&lt;/p&gt;

&lt;h3&gt;
  
  
  Category Submission:
&lt;/h3&gt;

&lt;p&gt;Personal Site/Portfolio&lt;/p&gt;

&lt;h3&gt;
  
  
  App Link
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://denniskrasnov.com"&gt;denniskrasnov.com&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BgD3QLVv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ynj0dqhb6q7zv6bb7dwt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BgD3QLVv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ynj0dqhb6q7zv6bb7dwt.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sGjtTh7S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sbxjwpv1hczbp7dqziqb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sGjtTh7S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sbxjwpv1hczbp7dqziqb.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Description
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://denniskrasnov.com"&gt;denniskrasnov.com&lt;/a&gt; is a portfolio website showcasing my skills and experience.&lt;/p&gt;

&lt;p&gt;Features custom art and branding for a personal touch.&lt;/p&gt;

&lt;p&gt;I designed the website myself, with an equal focus on performance, design, and accessibility. &lt;/p&gt;

&lt;p&gt;See my first post in this series to find out how how I designed my portfolio, my second post to see how it's deployed, and my third post to see deployment benchmarks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Source Code
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/Dennis-Krasnov/Portfolio"&gt;github.com/Dennis-Krasnov/Portfolio&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Permissive License
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/Dennis-Krasnov/Portfolio/blob/master/LICENSE"&gt;MIT License&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;(What made you decide to build this particular app? What inspired you?)&lt;/p&gt;

&lt;p&gt;Building a personal brand is important for my career. In 2020, an online presence is non-negotiable, and a portfolio website allows me to showcase my skills and experience in a way that is not possible via the traditional resume format.&lt;/p&gt;

&lt;h3&gt;
  
  
  How I built it
&lt;/h3&gt;

&lt;p&gt;(How did you utilize DigitalOcean’s App Platform? Did you learn something new along the way? Pick up a new skill?)&lt;/p&gt;

&lt;p&gt;My website is written in Svelte for its simplicity and performance, while Sapper compiles my website into a static bundle. See my first post for more details. &lt;/p&gt;

&lt;p&gt;DigitalOcean's App platform can host and distribute the static bundle on a content delivery network, which simplifies devops and minimizes latencies. Check out my second and third posts in this series for more info :)&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources/Info
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://cloud.digitalocean.com/apps/new?repo=https://github.com/Dennis-Krasnov/Portfolio/tree/master&amp;amp;refcode=4ed2be2d0a5c"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iIBAgYni--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.deploytodo.com/do-btn-blue.svg" alt="Deploy to DO"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can use the Deploy to DigitalOcean button to deploy this repo directly to App Platform :)&lt;/p&gt;

</description>
      <category>dohackathon</category>
    </item>
    <item>
      <title>DO Hackathon: Deployment Benchmark</title>
      <dc:creator>Dennis Krasnov</dc:creator>
      <pubDate>Sat, 09 Jan 2021 19:59:39 +0000</pubDate>
      <link>https://dev.to/krasnov/do-hackathon-deployment-benchmark-18e8</link>
      <guid>https://dev.to/krasnov/do-hackathon-deployment-benchmark-18e8</guid>
      <description>&lt;p&gt;Nobody likes waiting for a website to load, so it's important to have performance in mind while hosting websites.&lt;/p&gt;

&lt;p&gt;In this article, I will compare the performance of both the deployment methods from the previous article in this series.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benchmark Methodology
&lt;/h2&gt;

&lt;p&gt;I'll be focusing exclusively on latency as that's what the end-user cares about. I'll be running an &lt;a href="https://github.com/tsenart/vegeta"&gt;http benchmark tool&lt;/a&gt; from DigitalOcean droplets located in Toronto 1 and in Frankfurt 1, running these scripts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Kubernetes deployment&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"GET https://krasnov.dev"&lt;/span&gt; | vegeta attack &lt;span class="nt"&gt;-duration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;60s | vegeta report

&lt;span class="c"&gt;# App Platform deployment&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"GET https://denniskrasnov.com"&lt;/span&gt; | vegeta attack &lt;span class="nt"&gt;-duration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;60s | vegeta report
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Results
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Toronto 1 -&amp;gt; Kubernetes (Toronto 1)
&lt;/h4&gt;

&lt;p&gt;Note that both resources are in the same region.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Requests      [total, rate, throughput]         3000, 50.02, 50.01
Duration      [total, attack, wait]             59.983s, 59.98s, 2.885ms
Latencies     [min, mean, 50, 90, 95, 99, max]  1.715ms, 3.944ms, 2.485ms, 3.147ms, 5.321ms, 50.502ms, 144.859ms
Bytes In      [total, mean]                     6348000, 2116.00
Bytes Out     [total, mean]                     0, 0.00
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Toronto 1 -&amp;gt; App Platform
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Requests      [total, rate, throughput]         3000, 50.02, 50.01
Duration      [total, attack, wait]             59.986s, 59.98s, 5.764ms
Latencies     [min, mean, 50, 90, 95, 99, max]  5.141ms, 9.251ms, 7.443ms, 13.194ms, 17.124ms, 30.828ms, 223.472ms
Bytes In      [total, mean]                     40320000, 13440.00
Bytes Out     [total, mean]                     0, 0.00
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Frankfurt 1 -&amp;gt; Kubernetes (Toronto 1)
&lt;/h4&gt;

&lt;p&gt;This represents a user that lives far away.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Requests      [total, rate, throughput]         3000, 50.02, 49.94
Duration      [total, attack, wait]             1m0s, 59.98s, 96.21ms
Latencies     [min, mean, 50, 90, 95, 99, max]  95.502ms, 103.55ms, 96.419ms, 98.411ms, 103.918ms, 344.845ms, 616.864ms
Bytes In      [total, mean]                     6348000, 2116.00
Bytes Out     [total, mean]                     0, 0.00
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Frankfurt 1 -&amp;gt; App Platform
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Requests      [total, rate, throughput]         3000, 50.02, 50.01
Duration      [total, attack, wait]             59.986s, 59.98s, 6.333ms
Latencies     [min, mean, 50, 90, 95, 99, max]  4.248ms, 9.539ms, 6.037ms, 9.089ms, 11.87ms, 62.803ms, 666.033ms
Bytes In      [total, mean]                     40320000, 13440.00
Bytes Out     [total, mean]                     0, 0.00
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Mean latencies from all runs
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--B8GITQCE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0c13vp226zr06dw3wuyf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B8GITQCE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0c13vp226zr06dw3wuyf.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Kubernetes
&lt;/h2&gt;

&lt;p&gt;Kubernetes clusters are designed to be hosted in one location. This works well locally, but is slower when users are far away.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zqFGoZT1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/45ysd8krx1ftmgzman7s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zqFGoZT1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/45ysd8krx1ftmgzman7s.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  App Platform
&lt;/h2&gt;

&lt;p&gt;Hosting on App Platform is geographically distributed (thanks to the built in CDN), and is performant no matter where the users are located.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LqHlXRHN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iwwszlothnxwwpgwawia.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LqHlXRHN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iwwszlothnxwwpgwawia.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;For static websites, hosting on Digital App Platform can be more performant for users far away.&lt;/p&gt;

</description>
      <category>dohackathon</category>
    </item>
    <item>
      <title>DO Hackathon: Devops Architecture</title>
      <dc:creator>Dennis Krasnov</dc:creator>
      <pubDate>Sat, 09 Jan 2021 19:59:31 +0000</pubDate>
      <link>https://dev.to/krasnov/do-hackathon-devops-architecture-1nk1</link>
      <guid>https://dev.to/krasnov/do-hackathon-devops-architecture-1nk1</guid>
      <description>&lt;p&gt;Once we have a portfolio website ready, we need to host it to make it publicly accessible on the web. Devops, among other things, is the automated process of pushing code onto production hosting.&lt;/p&gt;

&lt;p&gt;In this article, I will cover two ways (out of many) to do hosting and devops for a static website.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 1 - DigitalOcean Managed Kubernetes
&lt;/h2&gt;

&lt;p&gt;This version of the website is currently hosted at &lt;a href="https://krasnov.dev"&gt;krasnov.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setup a Kubernetes cluster and container registry&lt;/li&gt;
&lt;li&gt;Apply Kubernetes deployments, services, ingresses, etc.&lt;/li&gt;
&lt;li&gt;Commit and push code&lt;/li&gt;
&lt;li&gt;Within a CI/CD tool:

&lt;ol&gt;
&lt;li&gt;Build an OCI image&lt;/li&gt;
&lt;li&gt;Push the image to a container registry&lt;/li&gt;
&lt;li&gt;Update the Kubernetes cluster to use the new image&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OF4w9LC8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yftz362w51lovyzmifv3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OF4w9LC8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yftz362w51lovyzmifv3.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;notes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Much harder than it looks, Kubernetes is notoriously complex&lt;/li&gt;
&lt;li&gt;It takes a minimum of $10/month for a single node and $10/month for a load balancer on DigitalOcean&lt;/li&gt;
&lt;li&gt;Kubernetes can be used to host just about anything, it's amazing if you're planning to host many other applications&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Method 2 - DigitalOcean App Platform
&lt;/h2&gt;

&lt;p&gt;This version of my portfolio is currently hosted at &lt;a href="https://denniskrasnov.com"&gt;denniskrasnov.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hook up App Platform (starter variant) to GitHub&lt;/li&gt;
&lt;li&gt;Tell it how to build&lt;/li&gt;
&lt;li&gt;Tell it which output folder to use&lt;/li&gt;
&lt;li&gt;Commit and push code&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;OR&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloud.digitalocean.com/apps/new?repo=https://github.com/Dennis-Krasnov/Portfolio/tree/master&amp;amp;refcode=4ed2be2d0a5c"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iIBAgYni--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.deploytodo.com/do-btn-blue.svg" alt="Deploy to DO"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just click the button to get started.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--skOy-2aP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t486ve6ovzhk97z6ry6e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--skOy-2aP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t486ve6ovzhk97z6ry6e.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;notes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is about as simple as it gets, definitively does "Get apps to market faster" as promised&lt;/li&gt;
&lt;li&gt;You can host 3 sites for free, then at $3/month for more, not bad for what you get&lt;/li&gt;
&lt;li&gt;App Platform also supports hosting services and databases, which is enough for most use cases&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;That covers the two ways that I've hosted my portfolio. Between the two, DigitalOcean App Platform is by far the easier option.&lt;/p&gt;

&lt;p&gt;Next up, I will benchmark both these deployment options.&lt;/p&gt;

</description>
      <category>dohackathon</category>
    </item>
    <item>
      <title>DO Hackathon: Portfolio Design</title>
      <dc:creator>Dennis Krasnov</dc:creator>
      <pubDate>Sat, 09 Jan 2021 19:59:21 +0000</pubDate>
      <link>https://dev.to/krasnov/do-hackathon-portfolio-design-441i</link>
      <guid>https://dev.to/krasnov/do-hackathon-portfolio-design-441i</guid>
      <description>&lt;p&gt;Building a personal brand is important for any developer's career. Maintaining a portfolio is a great way to get an online presence. While resumes are limited by conventions and a piece of paper, portfolios can showcase your skills and experience in the best way possible.&lt;/p&gt;

&lt;p&gt;In this article I will showcase and justify the design of my portfolio. Check it out at &lt;a href="https://denniskrasnov.com" rel="noopener noreferrer"&gt;denniskrasnov.com&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Goal
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;My portfolio should:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Showcase my skills and experience&lt;/li&gt;
&lt;li&gt;Make it easy for recruiters and hiring managers to access my resume&lt;/li&gt;
&lt;li&gt;Ultimately get me more job opportunities :)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Layout
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6m1zxalusuq6nphfw9gs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6m1zxalusuq6nphfw9gs.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Landing Section
&lt;/h4&gt;

&lt;p&gt;The goal is to keep things short and simple, with a focus on benefits instead of features, ie. "developer available for hire" instead of "I'm a developer".&lt;/p&gt;

&lt;p&gt;The button to download my resume provides a clear call to action. while the caricature adds some personality to the website :)&lt;/p&gt;

&lt;h4&gt;
  
  
  Skills Section
&lt;/h4&gt;

&lt;p&gt;Most jobs look for a certain set of skills. The goal is to make it easy for the recruiter or hiring manager to check off these requirements.&lt;/p&gt;

&lt;p&gt;Thus I logically divided my skills into six categories, and highlighted the important bits.&lt;/p&gt;

&lt;p&gt;Content that is above the fold (visible without scrolling down) gets viewed the most. The skills section is important enough to put place near the top.&lt;/p&gt;

&lt;h4&gt;
  
  
  Testimonials Section
&lt;/h4&gt;

&lt;p&gt;Social proof helps with credibility, whether it's reviews, recommendations, or testimonials.&lt;/p&gt;

&lt;h4&gt;
  
  
  Work Section
&lt;/h4&gt;

&lt;p&gt;Obviously, work experience is very important when applying to jobs.&lt;/p&gt;

&lt;p&gt;I stylized a standard resume layout to make it more pleasing to look at.&lt;/p&gt;

&lt;h4&gt;
  
  
  Projects Section
&lt;/h4&gt;

&lt;p&gt;I have several notable side projects, and want to showcase them to their fullest potential.&lt;/p&gt;

&lt;p&gt;Thus I created a catchy thumbnail for each project which leads to a case study (description, demo, and optionally highlights).&lt;/p&gt;

&lt;h4&gt;
  
  
  Education Section
&lt;/h4&gt;

&lt;p&gt;Not much to say here, in my case I want to put more emphasis on everything else so I ordered this last.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technology
&lt;/h2&gt;

&lt;p&gt;My content doesn't change often, so a static website is all I need. I also want to use a JavaScript framework and SCSS.&lt;/p&gt;

&lt;p&gt;I settled on &lt;a href="https://svelte.dev/" rel="noopener noreferrer"&gt;Svelte&lt;/a&gt; and &lt;a href="https://sapper.svelte.dev/" rel="noopener noreferrer"&gt;Sapper&lt;/a&gt; for several reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Working with Svelte feels very similar to working with vanilla HTML and CSS, it's simple and enjoyable&lt;/li&gt;
&lt;li&gt;Svelte is extremely lightweight&lt;/li&gt;
&lt;li&gt;Sapper compiles into a static website bundle (reactive Svelte sprinkled in where needed)&lt;/li&gt;
&lt;li&gt;Much like a class in an object oriented language, Svelte components are:

&lt;ul&gt;
&lt;li&gt;Reusable&lt;/li&gt;
&lt;li&gt;Composable&lt;/li&gt;
&lt;li&gt;Enables separation of concerns (JavaScript logic and scoped CSS)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Here's a snippet of code to demonstrate the kind of high level code that's possible with Svelte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;Section&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"skills"&lt;/span&gt; &lt;span class="na"&gt;watermarkPadding&lt;/span&gt; &lt;span class="na"&gt;dark&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;WatermarkHeader&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"skills"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Skills&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;Skill&lt;/span&gt;
            &lt;span class="na"&gt;imageUrl=&lt;/span&gt;&lt;span class="s"&gt;"/skills/backend.svg"&lt;/span&gt;
            &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Backend Development"&lt;/span&gt;
            &lt;span class="na"&gt;summary=&lt;/span&gt;&lt;span class="s"&gt;"&amp;lt;b&amp;gt;Spring&amp;lt;/b&amp;gt;-based &amp;lt;b&amp;gt;Java/Kotlin&amp;lt;/b&amp;gt; ..."&lt;/span&gt;
        &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

        &lt;span class="c"&gt;&amp;lt;!-- other skills ... --&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;/Skills&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/Section&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- other sections ... --&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Right now I hard code website content in the code, but if I ever get tired of editing source code to change content, I can source the data from a content management system easily with minimal changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;That covers the layout and the technologies that I used to make my portfolio.&lt;/p&gt;

&lt;p&gt;Next up, I will cover how I deployed my portfolio.&lt;/p&gt;

</description>
      <category>dohackathon</category>
    </item>
  </channel>
</rss>
