|
129
|
1 <!doctype html>
|
|
|
2 <html lang="en">
|
|
|
3 <head>
|
|
|
4 <meta charset="UTF-8">
|
|
|
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
6 <link rel="icon" type="image/svg+xml" href="/public/epi_all_colors.svg">
|
|
|
7
|
|
|
8 <link rel="preload" href="/public/fonts/Roboto-Regular.ttf" as="font" crossorigin>
|
|
|
9 <link rel="preload" href="/public/fonts/Roboto-Thin.ttf"as="font" crossorigin>
|
|
|
10
|
|
|
11 <!-- <link rel="preload" href="/public/fonts/atkinson-regular.woff" as="font" type="font/woff" crossorigin> -->
|
|
|
12 <!-- <link rel="preload" href="/public/fonts/atkinson-bold.woff" as="font" type="font/woff" crossorigin> -->
|
|
|
13
|
|
|
14 <!-- <link rel="preload" href="/public/fonts/more-sugar.extras.otf" as="font" type="font/otf" crossorigin> -->
|
|
|
15 <link rel="preload" href="/public/fonts/more-sugar.regular.otf" as="font" type="font/otf" crossorigin>
|
|
|
16 <link rel="preload" href="/public/fonts/more-sugar.thin.otf" as="font" type="font/otf" crossorigin>
|
|
|
17
|
|
|
18 <link rel="preload" href="/base.css" as="style" />
|
|
|
19 <link rel="stylesheet" href="/base.css" />
|
|
|
20
|
|
|
21
|
|
|
22 </head>
|
|
|
23 <body>
|
|
|
24 <style>
|
|
|
25 :root {
|
|
|
26 --header-background: var(--white);
|
|
|
27 --header-color: rgb(var(--black));
|
|
|
28 --link-hover-accent: var(--awesome);
|
|
|
29 }
|
|
|
30
|
|
|
31 /* Fixed icon in top left corner */
|
|
|
32 #themeToggle {
|
|
|
33 position: fixed;
|
|
|
34 top: 20px;
|
|
|
35 left: 20px;
|
|
|
36 background: var(--header-background);
|
|
|
37 display: flex;
|
|
|
38 align-items: center;
|
|
|
39 border-radius: 50%;
|
|
|
40 cursor: pointer;
|
|
|
41 z-index: 1000;
|
|
|
42 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
|
43 transition: transform 0.2s ease;
|
|
|
44 }
|
|
|
45
|
|
|
46 #themeToggle:hover {
|
|
|
47 transform: scale(1.05);
|
|
|
48 }
|
|
|
49
|
|
|
50 /* Professional header */
|
|
|
51 header {
|
|
|
52 margin: auto;
|
|
|
53 padding: 1.5em 1em;
|
|
|
54 font-family: "More", sans-serif;
|
|
|
55 box-shadow: 0 2px 8px rgba(var(--black), 5%);
|
|
|
56 width: 720px;
|
|
|
57 max-width: calc(100% - 2em);
|
|
|
58 text-align: center;
|
|
|
59 }
|
|
|
60
|
|
|
61 header h1 {
|
|
|
62 margin: 0;
|
|
|
63 font-size: 1.8em;
|
|
|
64 font-weight: 700;
|
|
|
65 letter-spacing: -0.5px;
|
|
|
66 }
|
|
|
67
|
|
|
68 header h1 a {
|
|
|
69 text-decoration: none;
|
|
|
70 color: var(--header-color);
|
|
|
71 }
|
|
|
72
|
|
|
73 header h1 a::before {
|
|
|
74 display: none;
|
|
|
75 }
|
|
|
76
|
|
|
77 /* Mobile responsiveness */
|
|
|
78 @media (max-width: 720px) {
|
|
|
79 #themeToggle {
|
|
|
80 top: 15px;
|
|
|
81 left: 15px;
|
|
|
82 }
|
|
|
83
|
|
|
84 header {
|
|
|
85 padding: 1em;
|
|
|
86 }
|
|
|
87
|
|
|
88 header h1 {
|
|
|
89 font-size: 1.5em;
|
|
|
90 }
|
|
|
91 }
|
|
|
92
|
|
|
93 @media (max-width: 480px) {
|
|
|
94 #themeToggle {
|
|
|
95 top: 10px;
|
|
|
96 left: 10px;
|
|
|
97 }
|
|
|
98
|
|
|
99 #themeToggle img {
|
|
|
100 height: 40px;
|
|
|
101 width: 40px;
|
|
|
102 }
|
|
|
103
|
|
|
104 header h1 {
|
|
|
105 font-size: 1.3em;
|
|
|
106 }
|
|
|
107 }
|
|
|
108
|
|
|
109 #logo {
|
|
|
110 width: 300px;
|
|
|
111 }
|
|
|
112
|
|
|
113 /* 1. DEFINE THE DEFAULTS (Light Mode) */
|
|
|
114 :root {
|
|
|
115 --logo-invert: invert(0);
|
|
|
116 --epi-grayscale: grayscale(0) brightness(1);
|
|
|
117 }
|
|
|
118
|
|
|
119 /* 2. MANUAL DARK OVERRIDE */
|
|
|
120 html.dark {
|
|
|
121 --logo-invert: invert(1);
|
|
|
122 --epi-grayscale: grayscale(1);
|
|
|
123 }
|
|
|
124
|
|
|
125 /* 3. MANUAL LIGHT OVERRIDE */
|
|
|
126 html.light-mode {
|
|
|
127 --logo-invert: invert(0);
|
|
|
128 --epi-grayscale: brightness(2.9) grayscale(1);
|
|
|
129 }
|
|
|
130
|
|
|
131 /* 4. SYSTEM PREFERENCE */
|
|
|
132 @media (prefers-color-scheme: dark) {
|
|
|
133 :root:not(.light-mode) {
|
|
|
134 --logo-invert: invert(1);
|
|
|
135 }
|
|
|
136 }
|
|
|
137
|
|
|
138 /* 5. APPLY TO ELEMENTS */
|
|
|
139 #logo {
|
|
|
140 -webkit-filter: var(--logo-invert);
|
|
|
141 filter: var(--logo-invert);
|
|
|
142 transition: filter 0.3s ease;
|
|
|
143 }
|
|
|
144
|
|
|
145 .epi-logo {
|
|
|
146 -webkit-filter: var(--epi-grayscale);
|
|
|
147 filter: var(--epi-grayscale);
|
|
|
148 transition: filter 0.3s ease;
|
|
|
149 }
|
|
|
150 </style>
|
|
|
151
|
|
|
152 <div id="themeToggle">
|
|
|
153 <img id="epiChan" class="epi-logo" aria-label="Toggle dark mode" src="/public/epi_all_colors.svg" height="50" width="50">
|
|
|
154 </div>
|
|
|
155
|
|
|
156 <header>
|
|
|
157 <h1><a href="/">MrJuneJune</a></h1>
|
|
|
158 </header>
|
|
|
159 <script src="/index.js"></script>
|
|
|
160
|
|
|
161
|
|
|
162 <main>
|
|
|
163 <h1 class="title" style="margin-bottom: 20px;"> Blogs </h1>
|
|
|
164 <ul style="list-style: none;">
|
|
|
165 <li style="margin-bottom: 20px;">
|
|
|
166 <span> January 08 2026 </span>
|
|
|
167 <p><h4><a href="/blog/websocket-demystified">Websocket Demystified</a></h4></p>
|
|
|
168 </li>
|
|
|
169 <li style="margin-bottom: 20px;">
|
|
|
170 <span> January 02 2026 </span>
|
|
|
171 <p><h4><a href="/blog/my-seobeo-journey">Creating Network Library in C</a></h4></p>
|
|
|
172 </li>
|
|
|
173 <li style="margin-bottom: 20px;">
|
|
|
174 <span> Apr 12 2025 </span>
|
|
|
175 <p><h4><a href="/blog/wsl2-ssh">WSL2 Cloudtop Setup</a></h4></p>
|
|
|
176 </li>
|
|
|
177 <li style="margin-bottom: 20px;">
|
|
|
178 <span> Dec 10 2024 </span>
|
|
|
179 <p><h4><a href="/blog/multithread-in-js">MultiThreading in JS</a></h4></p>
|
|
|
180 </li>
|
|
|
181 <li style="margin-bottom: 20px;">
|
|
|
182 <span> Nov 23 2024 </span>
|
|
|
183 <p><h4><a href="/blog/thoughts-on-tdd">My thoughts on TDD</a></h4></p>
|
|
|
184 </li>
|
|
|
185 <li style="margin-bottom: 20px;">
|
|
|
186 <span> Nov 21 2024 </span>
|
|
|
187 <p><h4><a href="/blog/optimizing-grass-rendering">Optimizing Random Placement with Colour Noise</a></h4></p>
|
|
|
188 </li>
|
|
|
189 <li style="margin-bottom: 20px;">
|
|
|
190 <span> Nov 17 2024 </span>
|
|
|
191 <p><h4><a href="/blog/thoughts-on-ide">My thoughts on IDE</a></h4></p>
|
|
|
192 </li>
|
|
|
193 <li style="margin-bottom: 20px;">
|
|
|
194 <span> Nov 16 2024 </span>
|
|
|
195 <p><h4><a href="/blog/optimizing-data-structures">Optimizing Data Structure for Performance</a></h4></p>
|
|
|
196 </li>
|
|
|
197 <li style="margin-bottom: 20px;">
|
|
|
198 <span> Nov 13 2024 </span>
|
|
|
199 <p><h4><a href="/blog/wasm-bunny">WASM using c3</a></h4></p>
|
|
|
200 </li>
|
|
|
201 </ul>
|
|
|
202 </main>
|
|
|
203 <div style="display: flex; align-items: center; justify-content: center; margin: 30px 0px;">
|
|
|
204 <small>© 2026 June Park</small>
|
|
|
205 </div>
|
|
|
206
|
|
|
207 </body>
|
|
|
208 </html>
|