-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.html
More file actions
52 lines (52 loc) · 32 KB
/
index.html
File metadata and controls
52 lines (52 loc) · 32 KB
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
<!doctype html><html lang=en-us dir=ltr><head><meta name=generator content="Hugo 0.121.2"><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="My blog about technology"><title>Graham's Blog</title>
<link rel=canonical href=/blog/><link rel=stylesheet href=/blog/scss/style.min.db95687e1dc8dce4d52302122639863988544704854ed11df4dbe4e6ac5b2b7f.css><meta property="og:title" content="Graham's Blog"><meta property="og:description" content="My blog about technology"><meta property="og:url" content="/blog/"><meta property="og:site_name" content="Graham's Blog"><meta property="og:type" content="website"><meta property="og:updated_time" content=" 2025-04-05T00:00:00+00:00 "><meta name=twitter:title content="Graham's Blog"><meta name=twitter:description content="My blog about technology"><link rel=alternate type=application/rss+xml href=/blog/index.xml><link rel="shortcut icon" href=/blog/favicon.ico></head><body><script>(function(){const e="StackColorScheme";localStorage.getItem(e)||localStorage.setItem(e,"auto")})()</script><script>(function(){const t="StackColorScheme",e=localStorage.getItem(t),n=window.matchMedia("(prefers-color-scheme: dark)").matches===!0;e=="dark"||e==="auto"&&n?document.documentElement.dataset.scheme="dark":document.documentElement.dataset.scheme="light"})()</script><nav class=top-navbar><div class=inner><button class=button-navbar onclick=toggleClass() style=background-color:#7d0e9e><div><svg id="button-toggle-navbar" class="ham hamRotate180 ham5" viewBox="0 0 100 100" width="30"><path class="line top" d="m30 33h40s8.5-.68551 8.5 10.375c0 8.292653-6.122707 9.002293-8.5 6.625L58.928571 38.928571"/><path class="line middle" d="m70 50H30"/><path class="line bottom" d="m30 67h40s8.5.68551 8.5-10.375c0-8.292653-6.122707-9.002293-8.5-6.625L58.928571 61.071429"/></svg></div></button>
<button class=button-navbar style=background-color:#7d0e9e>
<a href=/><div style=width:100px;color:#fff>gPortal</div></a></button>
<button class=button-navbar style=background-color:#7d0e9e>
<a href=https://gportal.link/login/><svg width="2em" class="w-6 h-6 text-gray-800 dark:text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path stroke="#fff" stroke-width="1.5" d="M7 17v1c0 .6.4 1 1 1h8c.6.0 1-.4 1-1v-1a3 3 0 00-3-3h-4a3 3 0 00-3 3zm8-9A3 3 0 119 8a3 3 0 016 0z"/></svg></a></button></div></nav><div class="container main-container flex on-phone--column extended"><aside class="sidebar gcard left-sidebar"><div class=inner><button class="hamburger hamburger--spin" type=button id=toggle-menu aria-label="Toggle Menu">
<span class=hamburger-box><span class=hamburger-inner></span></span></button><header><figure class=site-avatar><a href=/blog><img src=https://avatars.githubusercontent.com/u/42989099 width=300 height=300 class=site-logo loading=lazy alt=Avatar></a></figure><div class=site-meta><h1 class=site-name><a href=/blog>Graham's Blog</a></h1><h2 class=site-description>My blog about technology</h2></div></header><ol class=social-menu><li><a href=https://github.com/gtsteffaniak target=_blank title=GitHub rel=me><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-github" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6.0 00-1.3-3.2 4.2 4.2.0 00-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3.0 00-6.2.0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2.0 00-.1 3.2A4.6 4.6.0 004 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21"/></svg></a></li><li><a href=https://instagram/com/u/grahaman27 target=_blank title=Intagram rel=me><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2.163c3.204.0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849.0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204.0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849.0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741.0 8.333.014 7.053.072c-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948s.014 3.668.072 4.948c.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24s3.668-.014 4.948-.072c4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948s-.014-3.667-.072-4.947c-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403.0-6.162 2.759-6.162 6.162S8.597 18.163 12 18.163s6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zM12 16c-2.209.0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796.0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795.0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/></svg></a></li></ol><ol class=menu id=main-menu><div class=schemas_listing></div><div class=menu-bottom-section><li id=dark-mode-toggle><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-toggle-left" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="8" cy="12" r="2"/><rect x="2" y="6" width="20" height="12" rx="6"/></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-toggle-right" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="16" cy="12" r="2"/><rect x="2" y="6" width="20" height="12" rx="6"/></svg><span>Dark Mode</span></li></div></ol></div></aside><aside class="sidebar gcard right-sidebar sticky"><div class=inner><form action=/blog/search/ class="search-form widget"><p><label>Search</label>
<input name=keyword required placeholder="Type something...">
<button title=Search><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-search" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="10" cy="10" r="7"/><line x1="21" y1="21" x2="15" y2="15"/></svg></button></p></form><section class="widget tagCloud"><div class=widget-icon><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-hash" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><line x1="5" y1="9" x2="19" y2="9"/><line x1="5" y1="15" x2="19" y2="15"/><line x1="11" y1="4" x2="7" y2="20"/><line x1="17" y1="4" x2="13" y2="20"/></svg></div><h2 class="widget-title section-title">Categories</h2><div class=tagCloud-tags><a href=/blog/categories/technology/ class=font_size_10>technology
</a><a href=/blog/categories/development/ class=font_size_6>development
</a><a href=/blog/categories/announcement/ class=font_size_4>announcement
</a><a href=/blog/categories/ai/ class=font_size_3>ai
</a><a href=/blog/categories/art/ class=font_size_2>art
</a><a href=/blog/categories/general/ class=font_size_1>general</a></div></section><section class="widget tagCloud"><div class=widget-icon><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-tag" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11 3l9 9a1.5 1.5.0 010 2l-6 6a1.5 1.5.0 01-2 0L3 11V7a4 4 0 014-4h4"/><circle cx="9" cy="9" r="2"/></svg></div><h2 class="widget-title section-title">Tags</h2><div class=tagCloud-tags><a href=/blog/tags/go/ class=font_size_3>go
</a><a href=/blog/tags/c++/ class=font_size_2>c++
</a><a href=/blog/tags/filebrowser/ class=font_size_2>filebrowser
</a><a href=/blog/tags/javascript/ class=font_size_1>javascript
</a><a href=/blog/tags/llm/ class=font_size_1>llm
</a><a href=/blog/tags/news/ class=font_size_1>news
</a><a href=/blog/tags/npm/ class=font_size_1>npm
</a><a href=/blog/tags/python/ class=font_size_1>python
</a><a href=/blog/tags/rust/ class=font_size_1>rust
</a><a href=/blog/tags/vue/ class=font_size_1>vue</a></div></section></div></aside><main class="main gcard full-width"><div class=inner><section class=article-list><article><header class=article-header><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2025/05_goodbye_python/goodbye/>I'm sorry, Python, it's time to say 'goodbye'.</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Apr 05, 2025</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>4 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/technology/>technology
</a><a href=/blog/categories/development/>development</a></header><section class=article-tags>tags:
<a href=/blog/tags/python/>python</a>
<a href=/blog/tags/go/>go</a></section></div></header></article><article class=has-image><header class=article-header><div class=article-image><a href=/blog/posts/2025/04_typescript_port_go/typescript_go/><img src=/blog/posts/2025/04_typescript_port_go/banner.jpeg loading=lazy alt="Featured image of post Why Microsoft's strategic choice to use Go for Typescript compiler matters"></a></div><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2025/04_typescript_port_go/typescript_go/>Why Microsoft's strategic choice to use Go for Typescript compiler matters</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Mar 13, 2025</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>4 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/technology/>technology
</a><a href=/blog/categories/development/>development</a></header><section class=article-tags>tags:
<a href=/blog/tags/news/>news</a>
<a href=/blog/tags/filebrowser/>filebrowser</a></section></div></header></article><article><header class=article-header><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2025/03_ai_commodity/commodity/>AI is now a commodity</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Mar 03, 2025</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>4 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/ai/>ai
</a><a href=/blog/categories/technology/>technology</a></header></div></header></article><article><header class=article-header><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2025/02_deepseek/deepseek/>Thank God for Deepseek</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Jan 30, 2025</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>4 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/ai/>ai
</a><a href=/blog/categories/technology/>technology</a></header></div></header></article><article class=has-image><header class=article-header><div class=article-image><a href=/blog/posts/2025/01_wishlist/wishlist/><img src=/blog/posts/2025/01_wishlist/banner.jpeg loading=lazy alt="Featured image of post 2025 New Years Wishlist"></a></div><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2025/01_wishlist/wishlist/>2025 New Years Wishlist</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Jan 03, 2025</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>8 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/general/>general</a></header></div></header></article><article class=has-image><header class=article-header><div class=article-image><a href=/blog/posts/2024/vue_migration/vue_migrtation/><img src=/blog/posts/2024/vue_migration/banner.png loading=lazy alt="Featured image of post Migration experience for vue 2 to vue 3"></a></div><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2024/vue_migration/vue_migrtation/>Migration experience for vue 2 to vue 3</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Oct 12, 2024</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>4 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/technology/>technology
</a><a href=/blog/categories/development/>development</a></header><section class=article-tags>tags:
<a href=/blog/tags/vue/>vue</a>
<a href=/blog/tags/filebrowser/>filebrowser</a></section></div></header></article><article class=has-image><header class=article-header><div class=article-image><a href=/blog/posts/2024/march_update/march_update/><img src=/blog/posts/2024/march_update/banner.png loading=lazy alt="Featured image of post March 2024 Update"></a></div><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2024/march_update/march_update/>March 2024 Update</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Mar 14, 2024</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>2 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/announcement/>announcement</a></header></div></header></article><article><header class=article-header><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2023/december/process_simplify_modules/>Simplifying frontend frameworks</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Dec 24, 2023</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>8 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/technology/>technology
</a><a href=/blog/categories/development/>development</a></header><section class=article-tags>tags:
<a href=/blog/tags/javascript/>javascript</a>
<a href=/blog/tags/npm/>npm</a></section></div></header></article><article><header class=article-header><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2023/december/happy_holidays/>Happy Holidays!</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Dec 22, 2023</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>1 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/announcement/>announcement
</a><a href=/blog/categories/art/>art</a></header></div></header></article><article><header class=article-header><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2023/october/dependency-on-dependencies/>The doubled edge sword of modules when developing</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Oct 19, 2023</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>6 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/technology/>technology
</a><a href=/blog/categories/development/>development</a></header></div></header></article><article><header class=article-header><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2023/september/comparing_compiled/>Comparing Go, Rust, and C++: A Deep Dive into Language Performance and Tooling</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Aug 22, 2023</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>5 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/technology/>technology
</a><a href=/blog/categories/development/>development</a></header><section class=article-tags>tags:
<a href=/blog/tags/rust/>rust</a>
<a href=/blog/tags/go/>go</a>
<a href=/blog/tags/c++/>c++</a></section></div></header></article><article><header class=article-header><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2023/may/llama-cpp-tests/>My experience benchmarking llama</a></h2><h3 class=article-subtitle>Comparing some LLMs</h3></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>May 14, 2023</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>14 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/ai/>ai
</a><a href=/blog/categories/technology/>technology</a></header><section class=article-tags>tags:
<a href=/blog/tags/c++/>c++</a>
<a href=/blog/tags/go/>go</a>
<a href=/blog/tags/llm/>llm</a></section></div></header></article><article><header class=article-header><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2023/april/bash-vs-powershell/>Bash Vs Powershell</a></h2><h3 class=article-subtitle>A short comparison of OS scripting languages.</h3></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>May 13, 2023</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>6 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/technology/>technology</a></header><section class=article-tags>tags:
<a href=/blog/tags/windows/>windows</a></section></div></header></article><article><header class=article-header><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2023/may/may-the-4th/>May the 4th be with you</a></h2></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>May 04, 2023</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>1 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/announcement/>announcement
</a><a href=/blog/categories/art/>art</a></header></div></header></article><article><header class=article-header><div class=article-details><div class=article-title-wrapper><h2 class=article-title><a href=/blog/posts/2023/april/first-post/>First Post!</a></h2><h3 class=article-subtitle>An introduction to the blog</h3></div><footer class=article-time><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-calendar-time" width="56" height="56" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><path d="M11.795 21H5a2 2 0 01-2-2V7a2 2 0 012-2h12a2 2 0 012 2v4"/><circle cx="18" cy="18" r="4"/><path d="M15 3v4"/><path d="M7 3v4"/><path d="M3 11h16"/><path d="M18 16.496V18l1 1"/></svg><time class=article-time--published>Apr 29, 2023</time></div><div><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clock" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentcolor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"/><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg><time class=article-time--reading>3 minute read</time></div></footer><header class=article-category><p class=article-subtitle>Categories:</p><a href=/blog/categories/announcement/>announcement</a></header></div></header></article></section><nav class=pagination><span class='page-link current'>1</span>
<a class=page-link href=/blog/page/2/>2</a></nav><footer class=site-footer><section class=copyright>©
2023 -
2025 Graham's Blog</section><section class=powerby>Graham Steffaniak<br>Built with <a href=https://gohugo.io/ target=_blank rel=noopener>Hugo</a><br>Theme <b><a href=https://github.com/CaiJimmy/hugo-theme-stack target=_blank rel=noopener data-version=3.21.0>Stack</a></b> designed by <a href=https://jimmycai.com target=_blank rel=noopener>Jimmy</a></section></footer></div></main></div><script src=https://cdn.jsdelivr.net/npm/node-vibrant@3.1.6/dist/vibrant.min.js integrity="sha256-awcR2jno4kI5X0zL8ex0vi2z+KMkF24hUW8WePSA9HM=" crossorigin=anonymous></script><script type=text/javascript src=/blog/ts/main.js defer></script><script>(function(){const e=document.createElement("link");e.href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700&display=swap",e.type="text/css",e.rel="stylesheet",document.head.appendChild(e)})()</script></body><script>function navigateToHash(){var t=window.location.hash.substring(1);let e=document.getElementById(t);e&&e.scrollIntoView({behavior:"smooth"})}navigateToHash();for(var Anchors=document.querySelectorAll("#TableOfContents a"),i=0;i<Anchors.length;i++)Anchors[i].addEventListener("click",function(){setTimeout(function(){navigateToHash()},50)});function toggleClass(){document.getElementById("button-toggle-navbar").classList.toggle("active")}</script></html>