1<!DOCTYPE HTML> 2<html dir=""> 3 <head> 4 <meta charset="utf-8"> 5 6 <title>Personal Blog — Personal Journal</title> 7 8 <link rel="stylesheet" type="text/css" href="/css/write.css?e42ba390ed9c9ce4164cb" /> 9 <link rel="shortcut icon" href="/favicon.ico" /> 10 <link rel="canonical" href="https://personaljournal.ca/personal-blog/"> 11 12 13 <link rel="alternate" type="application/rss+xml" title="Personal Blog » Feed" href="https://personaljournal.ca/personal-blog/feed/" /> 14 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 15 16 <meta name="generator" content="WriteFreely"> 17 <meta name="description" content=""> 18 <meta itemprop="name" content="Personal Blog"> 19 <meta itemprop="description" content=""> 20 <meta name="twitter:card" content="summary"> 21 <meta name="twitter:title" content="Personal Blog"> 22 <meta name="twitter:image" content="https://personaljournal.ca/img/avatars/p.png"> 23 <meta name="twitter:description" content=""> 24 <meta property="og:title" content="Personal Blog" /> 25 <meta property="og:site_name" content="Personal Blog" /> 26 <meta property="og:type" content="article" /> 27 <meta property="og:url" content="https://personaljournal.ca/personal-blog/" /> 28 <meta property="og:description" content="" /> 29 <meta property="og:image" content="https://personaljournal.ca/img/avatars/p.png"> 30 31 32 33 <style type="text/css">/* 34 Written in 2020 by Write.as 35 36 To the extent possible under law, the author(s) have dedicated all 37 copyright and related and neighboring rights to this software to the 38 public domain worldwide. This software is distributed without any 39 warranty. 40 41 You should have received a copy of the CC0 Public Domain Dedication 42 along with this software. If not, see 43 http://creativecommons.org/publicdomain/zero/1.0 44*/ 45 46body { 47 color: #eee; 48 background: #111; 49 } 50 51body .post-title a:link, a:visited { 52 color: #ccc; 53 } 54 55#collection .post-title a { 56 color: #ccc; 57} 58
59#collection { 60 color: #eee; 61 } 62 63#collection pre { 64 background: #060606; 65 } 66 67body h1 a, body header h2 a { 68 color: #cfcfcf; 69 } 70 71body h1 a:hover, body header h2 a:hover { 72 color: #fff; 73 } 74 75body h1 a:visited, body header h2 a:visited { 76 color: #ccc; 77 } 78 79body #manage ul a, body .dropdown-nav ul a, body #manage ul ul a, body #manage ul a { 80 color: #ccc; 81 } 82 83body .dropdown-nav ul ul, body .dropdown-nav ul li:hover, body #manage ul ul, body #manage ul ul li:hover, body #manage ul li:hover { 84 background: #222; 85 } 86 87body #official-writing h2, body #official-writing h3, body #official-writing h4, body #wrapper h2, body #wrapper h3, body #wrapper h4 { 88 color: #ddd; 89 } 90 91body a { 92 color: #a2a2ff; 93 } 94 95body a:visited { 96 color: #c98afd; 97 } 98 99body #official-writing h2, body #official-writing h3, body #official-writing h4, body #wrapper h2, body #wrapper h3, body #wrapper h4 { 100 color: #aaa; 101 } 102 103body #official-writing ul.collections li.collection a.title:link, body #official-writing ul.collections li.collection a.title:visited, body #wrapper ul.collections li.collection a.title:link, body #wrapper ul.collections li.collection a.title:visited { 104 color: #cfcfcf; 105 } 106 107body #official-writing ul.collections li a.create, body #wrapper ul.collections li a.create { 108 color: #aaa; 109 } 110 111body#me #official-writing h2 a:link, body#me #official-writing h2 a:visited { 112 color: #a2a2ff; 113 } 114 115 116input { 117 background: #202020; 118 color: #bbb; 119 } 120 121#manage ul ul li img { 122 filter: invert(1); 123 } 124 125#post code, #collection code, #subpage code { 126 background: #202020; 127 color: #bbb; 128 } 129 130body#collection pre, body#post pre, body#subpage pre { 131 background: #060606; 132}</style> 133 134 135 136 137
138<script> 139 140 addEventListener('DOMContentLoaded', function () { 141 var hlbaseUri = "/js/"; 142 var lb = document.querySelectorAll("code[class^='language-']"); 143 144 145 146 var aliasmap = { 147 "elisp" : "lisp", 148 "emacs-lisp" : "lisp", 149 "c" : "cpp", 150 "cc" : "cpp", 151 "h" : "cpp", 152 "c++" : "cpp", 153 "h++" : "cpp", 154 "hpp" : "cpp", 155 "hh" : "cpp", 156 "hxx" : "cpp", 157 "cxx" : "cpp", 158 "sh" : "bash", 159 "js" : "javascript", 160 "jsx" : "javascript", 161 "html" : "xml" 162 }; 163 164 165 function highlight(nodes) { 166 for (i=0; i < nodes.length; i++) { 167 hljs.highlightBlock(nodes[i]); 168 } 169 } 170 171 172 function loadLanguages(uris, callback) { 173 uris.forEach(function(uri) { 174 var sc = document.createElement('script'); 175 sc.src = uri; 176 sc.async = false; 177 178 if (uris.indexOf(uri) == uris.length-1) { 179 180 181 182 sc.onload = callback; sc.onerror = callback; 183 } 184 document.head.appendChild(sc); 185 }); 186 } 187 188 189 if (lb.length > 0) { 190 191 var st = document.createElement('link'); 192 st.rel = "stylesheet"; 193 st.href = "/css/lib/atom-one-light.min.css"; 194 document.head.appendChild(st); 195 196 197 var jss = [hlbaseUri + "highlight.min.js"]; 198 199 for (i=0; i < lb.length; i++) { 200 lang = lb[i].className.replace('language-','').toLowerCase(); 201 202 if (aliasmap[lang]) lang = aliasmap[lang]; 203 lurl = hlbaseUri + "highlightjs/" + lang + ".min.js"; 204 if (!jss.includes(lurl)) { 205 jss.push(lurl); 206 } 207 } 208 209 loadLanguages(jss, () => {highlight(lb)}); 210 } 211 }); 212</script>
212 213 214 215 </head> 216 <body id="collection" itemscope itemtype="http://schema.org/WebPage"> 217 218 219 <header> 220 221 <h1 dir="" id="blog-title"><a href="/personal-blog/" class="h-card p-author u-url" rel="me author">Personal Blog</a></h1> 222 223 224 <nav> 225 </nav> 226 227 </header> 228 229 <section id="wrapper" itemscope itemtype="http://schema.org/Blog"> 230 231 232 233 234<article id="post-b6b3nj85t5" class="norm h-entry" itemscope itemtype="http://schema.org/BlogPosting"> 235 236 <h2 class="post-title" itemprop="name" class="p-name"><a href="/personal-blog/dark-theme-for-blogs" itemprop="url" class="u-url">Dark Theme for Blogs</a> 237 238 </h2> 239 <time class="dt-published" datetime="2020-02-11T16:57:21Z" pubdate itemprop="datePublished" content="2020-02-11 16:57:21 +0000 UTC">February 11, 2020</time> 240 241 242<div lang="en" dir="auto" class="book e-content"><p>If you've checked out your blog's settings page before, you've probably seen the <em>Custom CSS</em> section. This allows you to customize the design of your own blog to your heart's content. While this lets you change anything easily, it can be a little daunting for some people.</p> 243 244<p>The good folks at <a href="https://write.as" rel="nofollow">Write.as</a> just made a complete dark theme for use on your blog if you find that the default light theme is a bit too bright for your preferences.</p> 245 246<p><details> 247<summary>Click Here to View CSS</summary></p> 248 249<pre><code class="language-css">/* 250 Written in 2020 by Write.as 251 252 To the extent possible under law, the author(s) have dedicated all 253 copyright and related and neighboring rights to this software to the 254 public domain worldwide. This software is distributed without any 255 warranty. 256 257 You should have received a copy of the CC0 Public Domain Dedication 258 along with this software. If not, see 259 http://creativecommons.org/publicdomain/zero/1.0 260*/ 261 262body { 263 color: #eee; 264 background: #111; 265 } 266 267body .post-title a:link, a:visited { 268 color: #ccc; 269 } 270 271#collection .post-title a { 272 color: #ccc; 273} 274 275#collection { 276 color: #eee; 277 } 278 279#collection pre { 280 background: #060606; 281 } 282 283body h1 a, body header h2 a { 284 color: #cfcfcf; 285 } 286 287body h1 a:hover, body header h2 a:hover { 288 color: #fff; 289 } 290 291body h1 a:visited, body header h2 a:visited { 292 color: #ccc; 293 } 294 295body #manage ul a, body .dropdown-nav ul a, body #manage ul ul a, body #manage ul a { 296 color: #ccc; 297 } 298 299body .dropdown-nav ul ul, body .dropdown-nav ul li:hover, body #manage ul ul, body #manage ul ul li:hover, body #manage ul li:hover { 300 background: #222; 301 } 302 303body #official-writing h2, body #official-writing h3, body #official-writing h4, body #wrapper h2, body #wrapper h3, body #wrapper h4 { 304 color: #ddd; 305 } 306 307body a { 308 color: #a2a2ff; 309 } 310 311body a:visited { 312 color: #c98afd; 313 } 314 315body #official-writing h2, body #official-writing h3, body #official-writing h4, body #wrapper h2, body #wrapper h3, body #wrapper h4 { 316 color: #aaa; 317 } 318 319body #official-writing ul.collections li.collection a.title:link, body #official-writing ul.collections li.collection a.title:visited, body #wrapper ul.collections li.collection a.title:link, body #wrapper ul.collections li.collection a.title:visited { 320 color: #cfcfcf; 321 } 322 323body #official-writing ul.collections li a.create, body #wrapper ul.collections li a.create { 324 color: #aaa; 325 } 326 327body#me #official-writing h2 a:link, body#me #official-writing h2 a:visited { 328 color: #a2a2ff; 329 } 330 331 332input { 333 background: #202020; 334 color: #bbb; 335 } 336 337#manage ul ul li img { 338 filter: invert(1); 339 } 340 341#post code, #collection code, #subpage code { 342 background: #202020; 343 color: #bbb; 344 } 345body#collection pre, body#post pre, body#subpage pre { 346 background: #060606; 347} 348</code></pre> 349 350<p></details></p> 351 352<p>For other great themes, check out <a href="https://write.as/themes/" rel="nofollow">write.as/themes</a></p> 353</div></article><article id="post-8bgwali6ek" class="norm h-entry" itemscope itemtype="http://schema.org/BlogPosting"> 354 355 <h2 class="post-title" itemprop="name" class="p-name"><a href="/personal-blog/pinning-important-posts" itemprop="url" class="u-url">Pinning Important Posts</a> 356 357 </h2> 358 <time class="dt-published" datetime="2019-07-04T20:54:46Z" pubdate itemprop="datePublished" content="2019-07-04 20:54:46 +0000 UTC">July 4, 2019</time> 359 360 361<div lang="en" dir="auto" class="book e-content"><p>
361Did you know you can pin any blog post to your blog's navigation bar? This could include pages such as an About or Contact page, or anything else you may desire. To pin a blog post, follow these steps:</p> 362<ol><li>Publish a post to your blog</li> 363<li>Go to your blog home page by clicking your blog name in the top-left corner</li> 364<li>Hover over the post</li> 365<li>Click <strong>Pin</strong></li></ol> 366 367<p>That's it! You'll see a link to that post from every page on your blog.</p> 368</div></article><article id="post-8q6gbuccb7" class="norm h-entry" itemscope itemtype="http://schema.org/BlogPosting"> 369 370 <h2 class="post-title" itemprop="name" class="p-name"><a href="/personal-blog/hello-world" itemprop="url" class="u-url">Hello world!</a> 371 372 </h2> 373 <time class="dt-published" datetime="2019-06-26T14:36:31Z" pubdate itemprop="datePublished" content="2019-06-26 14:36:31 +0000 UTC">June 26, 2019</time> 374 375 376<div lang="en" dir="auto" class="book e-content"><p>Testing out my very first post on my new website. I hope for this to be a place where anybody can come to create their own blog or private journal without having to worry about all the crap that typically comes with free hosting sites. If you're interested in trying this out, sign up for free and get started today!</p> 377 378<h4 id="note-this-website-supports-creating-blog-posts-using-markdown-for-a-simple-getting-started-guide-on-how-to-improve-the-design-of-your-posts-visit-writefreely-s-writing-guide-https-writefreely-org-docs-v0-9-1-writer-writing-md">Note: This website supports creating blog posts using Markdown, for a simple getting started guide on how to improve the design of your posts, visit WriteFreely's <a href="https://writefreely.org/docs/v0.9.1/writer/writing.md" rel="nofollow">Writing Guide</a></h4> 379</div></article> 380 381 382 383 384 </section> 385 386 387 <footer> 388 <hr /> 389 <nav dir="ltr"> 390 <a class="home pubd" href="/">Personal Journal</a> · powered by <a style="margin-left:0" href="https://writefreely.org">writefreely</a> 391 </nav> 392 </footer> 393 394 </body> 395 396 397
397<script src="/js/h.js"></script>
397 398
398<script src="/js/postactions.js"></script>
398 399
399<script src="/js/localdate.js"></script>
399 400
400<script type="text/javascript" src="/js/menu.js"></script>
400 401
401<script type="text/javascript"> 402var deleting = false; 403function delPost(e, id, owned) { 404 e.preventDefault(); 405 if (deleting) { 406 return; 407 } 408 409 410 if (window.confirm('Are you sure you want to delete this post?')) { 411 412 deletePost(id, "", function() { 413 414 var $postEl = document.getElementById('post-' + id); 415 $postEl.parentNode.removeChild($postEl); 416 417 }); 418 } 419} 420 421var deletePost = function(postID, token, callback) { 422 deleting = true; 423 424 var $delBtn = document.getElementById('post-' + postID).getElementsByClassName('delete action')[0]; 425 $delBtn.innerHTML = '...'; 426 427 var http = new XMLHttpRequest(); 428 var url = "/api/posts/" + postID; 429 http.open("DELETE", url, true); 430 http.onreadystatechange = function() { 431 if (http.readyState == 4) { 432 deleting = false; 433 if (http.status == 204) { 434 callback(); 435 } else if (http.status == 409) { 436 $delBtn.innerHTML = 'delete'; 437 alert("Post is synced to another account. Delete the post from that account instead."); 438 439 440 441 } else { 442 $delBtn.innerHTML = 'delete'; 443 alert("Failed to delete." + (http.status>=500?" Please try again.":"")); 444 } 445 } 446 } 447 http.send(); 448}; 449 450var pinning = false; 451function pinPost(e, postID, slug, title) { 452 e.preventDefault(); 453 if (pinning) { 454 return; 455 } 456 pinning = true; 457 458 var callback = function() { 459 460 var $postEl = document.getElementById('post-' + postID); 461 $postEl.parentNode.removeChild($postEl); 462 var $header = document.getElementsByTagName('header')[0]; 463 var $pinnedNavs = $header.getElementsByTagName('nav'); 464 465 var link = '<a class="pinned" href="/personal-blog/'+slug+'">'+title+'</a>'; 466 if ($pinnedNavs.length == 0) { 467 $header.insertAdjacentHTML("beforeend", '<nav>'+link+'</nav>'); 468 } else { 469 $pinnedNavs[0].insertAdjacentHTML("beforeend", link); 470 } 471 }; 472 473 var $pinBtn = document.getElementById('post-' + postID).getElementsByClassName('pin action')[0]; 474 $pinBtn.innerHTML = '...'; 475 476 var http = new XMLHttpRequest(); 477 var url = "/api/collections/personal-blog/pin"; 478 var params = [ { "id": postID } ]; 479 http.open("POST", url, true); 480 http.setRequestHeader("Content-type", "application/json"); 481 http.onreadystatechange = function() { 482 if (http.readyState == 4) { 483 pinning = false; 484 if (http.status == 200) { 485 callback(); 486 } else if (http.status == 409) { 487 $pinBtn.innerHTML = 'pin'; 488 alert("Post is synced to another account. Delete the post from that account instead."); 489 490 491 492 } else { 493 $pinBtn.innerHTML = 'pin'; 494 alert("Failed to pin." + (http.status>=500?" Please try again.":"")); 495 } 496 } 497 } 498 http.send(JSON.stringify(params)); 499}; 500 501 try { 502 WebFontConfig = { 503 custom: { families: [ 'Lora:400,700:latin', 'Open+Sans:400,700:latin' ], urls: [ '/css/fonts.css' ] } 504 }; 505 (function() { 506 var wf = document.createElement('script'); 507 wf.src = '/js/webfont.js'; 508 wf.type = 'text/javascript'; 509 wf.async = 'true'; 510 var s = document.getElementsByTagName('script')[0]; 511 s.parentNode.insertBefore(wf, s); 512 })(); 513 } catch (e) {} 514 </script>
514 515</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.