3535< script src ="site_libs/quarto-html/popper.min.js "> </ script >
3636< script src ="site_libs/quarto-html/tippy.umd.min.js "> </ script >
3737< link href ="site_libs/quarto-html/tippy.css " rel ="stylesheet ">
38- < link href ="site_libs/quarto-html/quarto-syntax-highlighting-e1a5c8363afafaef2c763b6775fbf3ca.css " rel ="stylesheet " id ="quarto-text-highlighting-styles ">
38+ < link href ="site_libs/quarto-html/quarto-syntax-highlighting-e1a5c8363afafaef2c763b6775fbf3ca.css " rel ="stylesheet " class ="quarto-color-scheme " id ="quarto-text-highlighting-styles ">
39+ < link href ="site_libs/quarto-html/quarto-syntax-highlighting-dark-8ef56b68f8fa1e9d2ba328e99e439f80.css " rel ="stylesheet " class ="quarto-color-scheme quarto-color-alternate " id ="quarto-text-highlighting-styles ">
40+ < link href ="site_libs/quarto-html/quarto-syntax-highlighting-e1a5c8363afafaef2c763b6775fbf3ca.css " rel ="stylesheet " class ="quarto-color-scheme-extra " id ="quarto-text-highlighting-styles ">
3941< script src ="site_libs/bootstrap/bootstrap.min.js "> </ script >
4042< link href ="site_libs/bootstrap/bootstrap-icons.css " rel ="stylesheet ">
41- < link href ="site_libs/bootstrap/bootstrap-59228ce9c52eba116baca5d538563979.min.css " rel ="stylesheet " append-hash ="true " id ="quarto-bootstrap " data-mode ="light ">
43+ < link href ="site_libs/bootstrap/bootstrap-e0b841d4c46610302a3b39cf654ab3f0.min.css " rel ="stylesheet " append-hash ="true " class ="quarto-color-scheme " id ="quarto-bootstrap " data-mode ="light ">
44+ < link href ="site_libs/bootstrap/bootstrap-dark-58cfad456c997869d10d7b4a2ae8222c.min.css " rel ="stylesheet " append-hash ="true " class ="quarto-color-scheme quarto-color-alternate " id ="quarto-bootstrap " data-mode ="dark ">
45+ < link href ="site_libs/bootstrap/bootstrap-e0b841d4c46610302a3b39cf654ab3f0.min.css " rel ="stylesheet " append-hash ="true " class ="quarto-color-scheme-extra " id ="quarto-bootstrap " data-mode ="light ">
4246< script id ="quarto-search-options " type ="application/json "> {
4347 "location" : "navbar" ,
4448 "copy-button" : false ,
7579< meta property ="og:site_name " content ="A Chemical Engineer's Notebook ">
7680</ head >
7781
78- < body class ="nav-fixed fullcontent quarto-light ">
82+ < body class ="nav-fixed fullcontent quarto-light "> < script id ="quarto-html-before-body " type ="application/javascript ">
83+ const toggleBodyColorMode = ( bsSheetEl ) => {
84+ const mode = bsSheetEl . getAttribute ( "data-mode" ) ;
85+ const bodyEl = window . document . querySelector ( "body" ) ;
86+ if ( mode === "dark" ) {
87+ bodyEl . classList . add ( "quarto-dark" ) ;
88+ bodyEl . classList . remove ( "quarto-light" ) ;
89+ } else {
90+ bodyEl . classList . add ( "quarto-light" ) ;
91+ bodyEl . classList . remove ( "quarto-dark" ) ;
92+ }
93+ }
94+ const toggleBodyColorPrimary = ( ) => {
95+ const bsSheetEl = window . document . querySelector ( "link#quarto-bootstrap:not([rel=disabled-stylesheet])" ) ;
96+ if ( bsSheetEl ) {
97+ toggleBodyColorMode ( bsSheetEl ) ;
98+ }
99+ }
100+ const setColorSchemeToggle = ( alternate ) => {
101+ const toggles = window . document . querySelectorAll ( '.quarto-color-scheme-toggle' ) ;
102+ for ( let i = 0 ; i < toggles . length ; i ++ ) {
103+ const toggle = toggles [ i ] ;
104+ if ( toggle ) {
105+ if ( alternate ) {
106+ toggle . classList . add ( "alternate" ) ;
107+ } else {
108+ toggle . classList . remove ( "alternate" ) ;
109+ }
110+ }
111+ }
112+ } ;
113+ const toggleColorMode = ( alternate ) => {
114+ // Switch the stylesheets
115+ const primaryStylesheets = window . document . querySelectorAll ( 'link.quarto-color-scheme:not(.quarto-color-alternate)' ) ;
116+ const alternateStylesheets = window . document . querySelectorAll ( 'link.quarto-color-scheme.quarto-color-alternate' ) ;
117+ manageTransitions ( '#quarto-margin-sidebar .nav-link' , false ) ;
118+ if ( alternate ) {
119+ // note: dark is layered on light, we don't disable primary!
120+ enableStylesheet ( alternateStylesheets ) ;
121+ for ( const sheetNode of alternateStylesheets ) {
122+ if ( sheetNode . id === "quarto-bootstrap" ) {
123+ toggleBodyColorMode ( sheetNode ) ;
124+ }
125+ }
126+ } else {
127+ disableStylesheet ( alternateStylesheets ) ;
128+ enableStylesheet ( primaryStylesheets )
129+ toggleBodyColorPrimary ( ) ;
130+ }
131+ manageTransitions ( '#quarto-margin-sidebar .nav-link' , true ) ;
132+ // Switch the toggles
133+ setColorSchemeToggle ( alternate )
134+ // Hack to workaround the fact that safari doesn't
135+ // properly recolor the scrollbar when toggling (#1455)
136+ if ( navigator . userAgent . indexOf ( 'Safari' ) > 0 && navigator . userAgent . indexOf ( 'Chrome' ) == - 1 ) {
137+ manageTransitions ( "body" , false ) ;
138+ window . scrollTo ( 0 , 1 ) ;
139+ setTimeout ( ( ) => {
140+ window . scrollTo ( 0 , 0 ) ;
141+ manageTransitions ( "body" , true ) ;
142+ } , 40 ) ;
143+ }
144+ }
145+ const disableStylesheet = ( stylesheets ) => {
146+ for ( let i = 0 ; i < stylesheets . length ; i ++ ) {
147+ const stylesheet = stylesheets [ i ] ;
148+ stylesheet . rel = 'disabled-stylesheet' ;
149+ }
150+ }
151+ const enableStylesheet = ( stylesheets ) => {
152+ for ( let i = 0 ; i < stylesheets . length ; i ++ ) {
153+ const stylesheet = stylesheets [ i ] ;
154+ if ( stylesheet . rel !== 'stylesheet' ) { // for Chrome, which will still FOUC without this check
155+ stylesheet . rel = 'stylesheet' ;
156+ }
157+ }
158+ }
159+ const manageTransitions = ( selector , allowTransitions ) => {
160+ const els = window . document . querySelectorAll ( selector ) ;
161+ for ( let i = 0 ; i < els . length ; i ++ ) {
162+ const el = els [ i ] ;
163+ if ( allowTransitions ) {
164+ el . classList . remove ( 'notransition' ) ;
165+ } else {
166+ el . classList . add ( 'notransition' ) ;
167+ }
168+ }
169+ }
170+ const isFileUrl = ( ) => {
171+ return window . location . protocol === 'file:' ;
172+ }
173+ const hasAlternateSentinel = ( ) => {
174+ let styleSentinel = getColorSchemeSentinel ( ) ;
175+ if ( styleSentinel !== null ) {
176+ return styleSentinel === "alternate" ;
177+ } else {
178+ return false ;
179+ }
180+ }
181+ const setStyleSentinel = ( alternate ) => {
182+ const value = alternate ? "alternate" : "default" ;
183+ if ( ! isFileUrl ( ) ) {
184+ window . localStorage . setItem ( "quarto-color-scheme" , value ) ;
185+ } else {
186+ localAlternateSentinel = value ;
187+ }
188+ }
189+ const getColorSchemeSentinel = ( ) => {
190+ if ( ! isFileUrl ( ) ) {
191+ const storageValue = window . localStorage . getItem ( "quarto-color-scheme" ) ;
192+ return storageValue != null ? storageValue : localAlternateSentinel ;
193+ } else {
194+ return localAlternateSentinel ;
195+ }
196+ }
197+ const toggleGiscusIfUsed = ( isAlternate , darkModeDefault ) => {
198+ const baseTheme = document . querySelector ( '#giscus-base-theme' ) ?. value ?? 'light' ;
199+ const alternateTheme = document . querySelector ( '#giscus-alt-theme' ) ?. value ?? 'dark' ;
200+ let newTheme = '' ;
201+ if ( authorPrefersDark ) {
202+ newTheme = isAlternate ? baseTheme : alternateTheme ;
203+ } else {
204+ newTheme = isAlternate ? alternateTheme : baseTheme ;
205+ }
206+ const changeGiscusTheme = ( ) => {
207+ // From: https://github.com/giscus/giscus/issues/336
208+ const sendMessage = ( message ) => {
209+ const iframe = document . querySelector ( 'iframe.giscus-frame' ) ;
210+ if ( ! iframe ) return ;
211+ iframe . contentWindow . postMessage ( { giscus : message } , 'https://giscus.app' ) ;
212+ }
213+ sendMessage ( {
214+ setConfig : {
215+ theme : newTheme
216+ }
217+ } ) ;
218+ }
219+ const isGiscussLoaded = window . document . querySelector ( 'iframe.giscus-frame' ) !== null ;
220+ if ( isGiscussLoaded ) {
221+ changeGiscusTheme ( ) ;
222+ }
223+ } ;
224+ const authorPrefersDark = false ;
225+ const darkModeDefault = authorPrefersDark ;
226+ document . querySelector ( 'link#quarto-text-highlighting-styles.quarto-color-scheme-extra' ) . rel = 'disabled-stylesheet' ;
227+ document . querySelector ( 'link#quarto-bootstrap.quarto-color-scheme-extra' ) . rel = 'disabled-stylesheet' ;
228+ let localAlternateSentinel = darkModeDefault ? 'alternate' : 'default' ;
229+ // Dark / light mode switch
230+ window . quartoToggleColorScheme = ( ) => {
231+ // Read the current dark / light value
232+ let toAlternate = ! hasAlternateSentinel ( ) ;
233+ toggleColorMode ( toAlternate ) ;
234+ setStyleSentinel ( toAlternate ) ;
235+ toggleGiscusIfUsed ( toAlternate , darkModeDefault ) ;
236+ window . dispatchEvent ( new Event ( 'resize' ) ) ;
237+ } ;
238+ // Switch to dark mode if need be
239+ if ( hasAlternateSentinel ( ) ) {
240+ toggleColorMode ( true ) ;
241+ } else {
242+ toggleColorMode ( false ) ;
243+ }
244+ </ script >
79245
80246< div id ="quarto-search-results "> </ div >
81247 < header id ="quarto-header " class ="headroom fixed-top ">
122288</ ul >
123289 </ div > <!-- /navcollapse -->
124290 < div class ="quarto-navbar-tools ">
291+ < a href ="" class ="quarto-color-scheme-toggle quarto-navigation-tool px-1 " onclick ="window.quartoToggleColorScheme(); return false; " title ="Toggle dark mode "> < i class ="bi "> </ i > </ a >
125292</ div >
126293 </ div > <!-- /container-fluid -->
127294 </ nav >
@@ -159,6 +326,7 @@ <h1 class="title">Allan Farrell</h1>
159326</ div >
160327 </ div >
161328 < div class ="about-contents "> < main class ="content " id ="quarto-document-content ">
329+
162330< section id ="showing-my-work " class ="level2 ">
163331< h2 data-anchor-id ="showing-my-work "> Showing My Work</ h2 >
164332< p > Whenever I run into a problem I do what everyone does: I google it. Frequently some random blog comes up detailing everything I need to know about solving the problem. So, I figured, if I was already doing the work for my own interest, might as well publish it? Be the blog I want to see in the world, or something like that.</ p >
@@ -176,6 +344,19 @@ <h2 data-anchor-id="caveat-emptor">Caveat Emptor</h2>
176344 <!-- /main -->
177345< script id ="quarto-html-after-body " type ="application/javascript ">
178346 window . document . addEventListener ( "DOMContentLoaded" , function ( event ) {
347+ // Ensure there is a toggle, if there isn't float one in the top right
348+ if ( window . document . querySelector ( '.quarto-color-scheme-toggle' ) === null ) {
349+ const a = window . document . createElement ( 'a' ) ;
350+ a . classList . add ( 'top-right' ) ;
351+ a . classList . add ( 'quarto-color-scheme-toggle' ) ;
352+ a . href = "" ;
353+ a . onclick = function ( ) { try { window . quartoToggleColorScheme ( ) ; } catch { } return false ; } ;
354+ const i = window . document . createElement ( "i" ) ;
355+ i . classList . add ( 'bi' ) ;
356+ a . appendChild ( i ) ;
357+ window . document . body . appendChild ( a ) ;
358+ }
359+ setColorSchemeToggle ( hasAlternateSentinel ( ) )
179360 const isCodeAnnotation = ( el ) => {
180361 for ( const clz of el . classList ) {
181362 if ( clz . startsWith ( 'code-annotation-' ) ) {
@@ -567,6 +748,19 @@ <h2 data-anchor-id="caveat-emptor">Caveat Emptor</h2>
567748 } ) ;
568749 </ script >
569750</ div > <!-- /content -->
751+ < footer class ="footer ">
752+ < div class ="nav-footer ">
753+ < div class ="nav-footer-left ">
754+
755+ </ div >
756+ < div class ="nav-footer-center ">
757+ < p > © 2025 Allan Farrell < a href ="https://creativecommons.org/licenses/by-sa/4.0/ "> CC BY-SA 4.0</ a > < br > Made with < a href ="https://quarto.org "> Quarto</ a > </ p >
758+ </ div >
759+ < div class ="nav-footer-right ">
760+
761+ </ div >
762+ </ div >
763+ </ footer >
570764
571765
572766
0 commit comments