Skip to content

Commit

Permalink
update aoc projects
Browse files Browse the repository at this point in the history
  • Loading branch information
mgtezak committed May 2, 2024
1 parent bad957b commit cfec744
Show file tree
Hide file tree
Showing 11 changed files with 276 additions and 27 deletions.
20 changes: 18 additions & 2 deletions de/projekte.html
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,22 @@ <h2><a href="projekte/pomodino.html">PomoDino Timer
</ul>
</article>

<article>
<header>
<span class="date">30. Januar 2024</span>
<h2><a href="projekte/aoc-analytics.html">Advent of Code
Datenanalyse</a></h2>
<p>
Web Scraping, Analyse und Visualisierung öffentlicher Benutzerdaten von Advent of Code.
Streamlit, Requests, BeautifulSoup, Matplotlib, Seaborn
</p>
</header>
<a href="projekte/aoc-analytics.html" class="image fit"><img src="../images/aoc-submission-times.png" alt="image: aoc-submission-times" /></a>
<ul class="actions special">
<li><a href="projekte/aoc-analytics.html" class="button">Mehr</a></li>
</ul>
</article>

<article>
<header>
<span class="date">4. Dezember 2023</span>
Expand Down Expand Up @@ -125,8 +141,8 @@ <h2><a href="projekte/aoc-solver.html">Advent of Code
Puzzle Solver</a></h2>
<p>
Multifunktionale & interaktive <a href="https://aoc-puzzle-solver.streamlit.app/", target="_blank">Web App</a>
für Advent of Code Puzzle Lösungen, Datenanalyse & mehr.
Streamlit, Pandas, Numpy, Scipy, Sympy, NetworkX, Matplotlib, Seaborn
für Advent of Code Puzzle Lösungen & mehr.
Streamlit, Json, Pandas, Numpy, Scipy, Sympy, NetworkX
</p>
</header>
<a href="projekte/aoc-solver.html" class="image fit"><img src="../images/aoc-screenshot.png" alt="image: aoc-solver" /></a>
Expand Down
110 changes: 110 additions & 0 deletions de/projekte/aoc-analytics.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
<!DOCTYPE HTML>
<!--
Massively by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
-->
<html>
<head>
<title>Michael Tezak Portfolio</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" />
<link rel="icon" type="image/svg+xml" href="../../assets/icons/favicon.svg" />
<noscript><link rel="stylesheet" href="../../assets/css/noscript.css" /></noscript>
</head>

<body class="is-preload">

<!-- Wrapper -->
<div id="wrapper">

<!-- Header -->
<header id="header"></header>

<!-- Nav -->
<nav id="nav">
<ul class="links">
<li class="active"><a href="../projekte.html">Projekte</a></li>
<li><a href="../qualifikationen.html">Qualifikationen</a></li>
<li><a href="../weitere-interessen.html">Weitere-Interessen</a></li>
</ul>
<ul class="icons">
<li><a href="https://github.com/mgtezak" target="_blank" class="icon brands fa-github"><span class="label">GitHub</span></a></li>
<li><a href="https://www.linkedin.com/in/mgtezak/" target="_blank" class="icon brands fa-linkedin"><span class="label">LinkedIn</span></a></li>
</ul>
</nav>

<!-- Main -->
<div id="main">

<!-- Post -->
<section class="post">
<header class="major">
<!-- <span class="date">1. November 2023</span> -->
<h1>Advent of Code Datenanaylse</h1>
<p>
Web Scraping, Analyse und Visualisierung öffentlicher Benutzerdaten von Advent of Code. <br/>
Streamlit, Requests, BeautifulSoup, Matplotlib, Seaborn
</p>
</header>
<div class="image main"><img src="../../images/aoc-submission-times.png" alt="image: aoc-submission-times" /></div>

<p>
Nachdem ich meine
<a href="aoc-solver.html">Advent of Code Puzzle Solver App</a> entwickelt hatte, dachte ich, dass es schön wäre,
einen Bereich für Datenanalytik mit vielen weihnachtlich gestalteten Visualisierungen hinzuzufügen.
Zuerst fügte ich einige Visualisierungen meiner persönlichen Statistiken hinzu,
dann wollte ich einige globale Community-Statistiken, Ranglisten und allgemeine Partizipationsquoten visualisieren.
Da es keine öffentliche API gab, von der aus ich diese Daten abrufen konnte, beschloss ich,
sie direkt von der Website mit Hilfe von Pythons <i>Requests</i> und <i>BeautifulSoup</i> Bibliotheken zu scrapen.
Dabei lernte ich viel über empfohlene Vorgehensweisen bei ethischem Web Scraping.
Zum Beispiel sollte man seine Kontaktdaten im User-Header seiner Requests mitsenden und
die Frequenz von Requests zeitlich drosseln um den Server nicht zu überlasten.
Nachdem ich die Daten hauptsächlich mit Matplotlib und etwas Seaborn visualisiert hatte,
präsentierte ich meine Ergebnisse in einem öffentlichen
<a href="https://www.reddit.com/r/adventofcode/comments/1aeoazh/aoc_public_stats_visualizations_20152023/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">Reddit-Post</a>.
Es war erfreulich zu sehen, wie viele Leute in der Community Interesse zeigten und mir konstruktives Feedback gaben.
</p>
<ul class="actions special">
<li><a href="https://aoc-puzzle-solver.streamlit.app/" target="_blank" class="button primary">Zur Website</a></li>
</ul>
</section>

<footer>
<div class="pagination">
<a href="pomodino.html" class="previous">Prev</a>
<a href="mohssche-härte.html" class="next">Next</a>
</div>
</footer>

</div>

<!-- Footer -->
<footer id="footer">
<section class="split contact">
<section>
<h3>Kontakt</h3>
<p><a>mgtezak@gmail.com</a></p>
<p><span class="language-toggle"><a href="../../en/projects/aoc-analytics.html">English version</a></span></p>
</section>
</section>
</footer>

<!-- Copyright -->
<div id="copyright"></div>

</div>

<!-- Scripts -->
<script src="../../assets/js/jquery.min.js"></script>
<script src="../../assets/js/jquery.scrollex.min.js"></script>
<script src="../../assets/js/jquery.scrolly.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>
15 changes: 5 additions & 10 deletions de/projekte/aoc-solver.html
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,13 @@ <h1>Advent of Code
Puzzle Solver</h1>
<p>
Multifunktionale & interaktive <a href="https://aoc-puzzle-solver.streamlit.app/", target="_blank">Web App</a>
für Advent of Code Puzzle Lösungen, Datenanalyse & mehr. <br/>
Streamlit, Pandas, Numpy, Scipy, Sympy, NetworkX, Matplotlib, Seaborn
für Advent of Code Puzzle Lösungen & mehr. <br/>
Streamlit, Json, Pandas, Numpy, Scipy, Sympy, NetworkX
</p>
</header>
<div class="image main"><img src="../../images/aoc-screenshot.png" alt="image: aoc-solver" /></div>
<p>
Falls Sie nicht mit <a href="https://adventofcode.com/" target="_blank">Advent of Code</a> vertraut sind, hier eine kurze Beschreibung von der Website:
Falls du nicht mit <a href="https://adventofcode.com/" target="_blank">Advent of Code</a> vertraut bist, hier eine kurze Beschreibung von der Website:
</p>
<blockquote>
Advent of Code is an annual Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.
Expand All @@ -68,13 +68,8 @@ <h1>Advent of Code
temporären Dateisystem gespeichert werden. Es handelt sich hierbei um JSON- und CSV-Dateien, die mit der individuellen Session-ID des Benutzers verknüpft sind.
Auf diese Weise muss der Benutzer seinen Puzzle-Input für den zweiten Teil nicht erneut eingeben oder darauf warten,
dass eine bereits gelaufene Lösungsfunktion erneut ausgeführt wird, falls er seine Antwort noch einmal nachschlagen möchte.
Die meisten Lösungsfunktionen werden zwar ohnehin in unter einer Sekunde ausgeführt, aber einige können mehr als 20 Sekunden dauern. </p>
<span class="image right"><img src="../../images/aoc_public_completions2.png" alt="" /></span>

<p>
Kürzlich habe ich einen neuen Bereich für Datenanalyse mit vielen schönen Visualisierungen in weihnachtlichem Stil hinzugefügt.
Er bietet Einblicke sowohl in meinen persönlichen Fortschritt auf der Plattform als auch in öffentliche Statistiken,
Leaderboard-Ranking und allgemeine Abschluss- und Partizipationsraten. Insgesamt war diese App bisher das größte und vielseitigste meiner Projekte.
Die meisten Lösungsfunktionen werden zwar ohnehin in unter einer Sekunde ausgeführt, aber einige können mehr als 20 Sekunden dauern.
Insgesamt war diese App bisher das größte und vielseitigste meiner Projekte.
In etwas mehr als einem Monat nach ihrem Start hat sie mehr als 2500 individuelle Besucher angezogen,
von denen einige zu regelmäßigen Gästen geworden sind. Ich habe auch viel positives Feedback von der Advent of Code Community erhalten.
</p>
Expand Down
2 changes: 1 addition & 1 deletion de/projekte/mohssche-härte.html
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ <h1>

<footer>
<div class="pagination">
<a href="pomodino.html" class="previous">Prev</a>
<a href="aoc-analytics.html" class="previous">Prev</a>
<a href="raucher-prädiktion.html" class="next">Next</a>
</div>
</footer>
Expand Down
2 changes: 1 addition & 1 deletion de/projekte/pomodino.html
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ <h1>PomoDino Timer</h1>

<footer>
<div class="pagination">
<a href="mohssche-härte.html" class="next">Next</a>
<a href="aoc-analytics.html" class="next">Next</a>
</div>
</footer>

Expand Down
19 changes: 17 additions & 2 deletions en/projects.html
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,21 @@ <h2><a href="projects/pomodino.html">PomoDino Timer</a></h2>
</ul>
</article>

<article>
<header>
<span class="date">30. January 2024</span>
<h2><a href="projects/aoc-analytics.html">Advent of Code Data Analytics</a></h2>
<p>
Web scraping, analysis and visualization of Advent of Code's public user data.
Streamlit, Requests, BeautifulSoup, Matplotlib, Seaborn
</p>
</header>
<a href="projects/aoc-analytics.html" class="image fit"><img src="../images/aoc-submission-times.png" alt="image: aoc-submission-times" /></a>
<ul class="actions special">
<li><a href="projects/aoc-analytics.html" class="button">More</a></li>
</ul>
</article>

<article>
<header>
<span class="date">4. December 2023</span>
Expand Down Expand Up @@ -137,8 +152,8 @@ <h2><a href="projects/smokers-prediction.html">Smoker Status Prediction<br /></a
<h2><a href="projects/aoc-solver.html">Advent of Code Puzzle Solver</a></h2>
<p>
Multifaceted & interactive <a href="https://aoc-puzzle-solver.streamlit.app/", target="_blank">web app</a>
devoted to Advent of Code solutions, data analytics & more.
Streamlit, Pandas, Numpy, Scipy, Sympy, NetworkX, Matplotlib, Seaborn
devoted to Advent of Code solutions & more.
Streamlit, Json, Pandas, Numpy, Scipy, Sympy, NetworkX
</p>
</header>
<a href="projects/aoc-solver.html" class="image fit"><img src="../images/aoc-screenshot.png" alt="image: aoc-solver" /></a>
Expand Down
113 changes: 113 additions & 0 deletions en/projects/aoc-analytics.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<!DOCTYPE HTML>
<!--
Massively by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
-->
<html>
<head>
<title>Michael Tezak Portfolio</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" />
<link rel="icon" type="image/svg+xml" href="../../assets/icons/favicon.svg" />
<noscript><link rel="stylesheet" href="../../assets/css/noscript.css" /></noscript>
</head>

<body class="is-preload">

<!-- Wrapper -->
<div id="wrapper">

<!-- Header -->
<header id="header"></header>

<!-- Nav -->
<nav id="nav">
<ul class="links">
<li class="active"><a href="../projects.html">Projects</a></li>
<li><a href="../technical-skills.html">Technical-Skills</a></li>
<li><a href="../other-interests.html">Other-Interests</a></li>
</ul>
<ul class="icons">
<li><a href="https://github.com/mgtezak" target="_blank" class="icon brands fa-github"><span class="label">GitHub</span></a></li>
<li><a href="https://www.linkedin.com/in/mgtezak/" target="_blank" class="icon brands fa-linkedin"><span class="label">LinkedIn</span></a></li>
</ul>
</nav>

<!-- Main -->
<div id="main">

<!-- Post -->
<section class="post">
<header class="major">
<!-- <span class="date">1. November 2023</span> -->
<h1>Advent of Code Data Analytics</h1>
<p>
Web scraping, analysis and visualization of Advent of Code's public user data.
<br/>
Streamlit, Requests, BeautifulSoup, Matplotlib, Seaborn
</p>
</header>
<div class="image main"><a href="https://aoc-puzzle-solver.streamlit.app/" target="_blank"><img src="../../images/aoc-submission-times.png" alt="image: aoc-solver" /></a></div>

<!-- <span class="image right"><img src="../../images/aoc_public_completions2.png" alt="" /></span> -->

<p>
After having built my <a href="aoc-solver.html">Advent of Code Puzzle Solver</a> app,
I figured, that it would be nice to add a data analytics part with lots of Christmas-themed visualizations to the website.
First I added some visualizations of my personal stats, then I wanted to visualize some global community stats, leaderboard rankings and overall puzzle completion rates.
Since there wasn't any public API from which to pull these data,
I decided to scrape them directly from the website using Python's <i>Requests</i> and <i>BeautifulSoup</i> libraries.
In the process I learned a lot about best practices in ethical web scraping.
For example, one should put their contact info in the user-header of each request and throttle the speed at which requests are sent so as not to overwhelm the server.
After visualizing the data using mostly Matplotlib and some Seaborn I presented my results in a public
<a href="https://www.reddit.com/r/adventofcode/comments/1aeoazh/aoc_public_stats_visualizations_20152023/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">reddit post</a>.
It was gratifying to see how many people in the community took an interest and gave me constructive feedback.

<!-- All in all, this has been the biggest, most multifaceted and gratifying of my projects so far.
I'm glad to say that, in little more than a month after its launch, it has received more than 2500 unique visitors, some of whom have become regular guests.
I've also received a lot of positive feedback by the Advent of Code community. -->

</p>
<ul class="actions special">
<li><a href="https://aoc-puzzle-solver.streamlit.app/" target="_blank" class="button primary">Visit Website</a></li>
</ul>
</section>
<footer>
<div class="pagination">
<a href="pomodino.html" class="previous">Prev</a>
<a href="mohs-hardness.html" class="next">Next</a>
</div>
</footer>
</div>

<!-- Footer -->
<footer id="footer">
<section class="split contact">
<section>
<h3>Contact</h3>
<p><a>mgtezak@gmail.com</a></p>
<p><span class="language-toggle"><a href="../../de/projekte/aoc-analytics.html">Deutsche Version</a></span></p>

</section>
</section>
</footer>

<!-- Copyright -->
<div id="copyright"></div>

</div>

<!-- Scripts -->
<script src="../../assets/js/jquery.min.js"></script>
<script src="../../assets/js/jquery.scrollex.min.js"></script>
<script src="../../assets/js/jquery.scrolly.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>
Loading

0 comments on commit cfec744

Please sign in to comment.