Squashed commit of the following:
commit ebaa635573162552e8272cd2d8b7677ccf5f1f31 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 28 09:29:59 2020 -0500 Update site generator blog post commit 52c978e319735ea9d16b3310ea71234f166d06da Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 28 09:29:45 2020 -0500 Use Source Code Pro for monospace font commit c44b09533fd4d621fbf0fb4fcf5b732cd6bf348d Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 28 09:08:03 2020 -0500 Squashed commit of the following: commit1597f5d315
Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Sun Dec 13 01:02:07 2020 -0500 Update to latest version of obelix-plugin-excerpt commit167fccb9de
Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 14:46:17 2020 -0500 Add RSS icon commit2bede8ed64
Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 13:58:20 2020 -0500 Center images by default commit5ba172bab8
Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 12:40:28 2020 -0500 Don't use :target :bundle for cljs commit444ecd51d0
Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 10:42:04 2020 -0500 Rebuild site with Obelix site builder Squashed commit of the following: commit b61428ef9441b6c6b68192483f20576576484c46 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 10:30:13 2020 -0500 Remove draft post commit b4e01335329091ea0618805515414498487e4569 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 10:29:17 2020 -0500 Make RSS feed commit f9c2956db1f44fea2c9f45d18aad189a950bad17 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 10:28:50 2020 -0500 Update to Obelix 1.1.0 (no longer escapes HTML automatically) commit 1d0b09fb904bee4d19af9eb96c8ec7945b4e4257 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:57:44 2020 -0500 Don't draw <hr> on last blog summary commit e97d3399614d04ae2f2364e18de60d8076d66ba4 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:53:00 2020 -0500 Fix mobile layout commit 4931b8153106702f33200f8098314a54151350d6 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:46:07 2020 -0500 Dedupe tree branches correctly commit 54708b956e1bc4722efbef5f01f96985891a702e Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:45:54 2020 -0500 Add randomness to tree sketch commit 81a68a8d1a92630394082f5218574b52aced56d1 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:45:29 2020 -0500 Re-render sketch on window resize commit eca26effffb5dbc1d881031a76d044608bd3fa69 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:44:46 2020 -0500 Support stochastic l-system grammars commit 6050d59408548c7d014da450d0e6737fe768f19f Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 21:07:00 2020 -0500 Add TODO commit d478bcc3f642dd58e93e8ef0542e19ea9acc6f1a Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 21:05:51 2020 -0500 Don't sort l-system output; downsize to 6 iteration commit f01f9135172e7b60480b64ede936e380384c0060 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 17:26:15 2020 -0500 [WIP] Leave game plan comment commit e191ea7b86e05098d2fcc2e6ea99c06e6ad493fb Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 17:17:44 2020 -0500 [WIP] Don't draw lines multiple times commit 7cbc9bd839743fa660962f036f34817c6deb05de Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 13:57:49 2020 -0500 Batch size = 50 commit 571ea7728e2605456578be7f70e0c0806434b750 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 13:55:19 2020 -0500 Account for depth when rendering tree branches commit 53469c671c0ecf92edaabd152b58a532dfb5f54f Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Mon Dec 7 08:45:50 2020 -0500 Have the tree draw itself commit 5b023911a346f72cb4fea56aaedebc371b0f7135 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Mon Dec 7 07:11:08 2020 -0500 Calculate l-system once commit 4b9daa8cd2e5790973e93d2ff3909a4791d3332b Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 11:38:15 2020 -0500 Extract l-system->lines into a function commit 7bcef9263aadcb00b0e8e045e23ccfca4ef22a0f Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 11:21:04 2020 -0500 Tweak plant: more iterations, smaller segment length commit 9b37f41af829d64ffd2513573eaf71ab4f6b1fe1 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 11:16:22 2020 -0500 Move all calculations to update-state; use more natural l-system commit 6496fa4b57487a97d037ecb5d357ccd0c1db13a1 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 11:16:10 2020 -0500 Add l-system/rules macro commit 17e1b0f867fe5ea6e188e67b90a5895d9d34cfef Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 11:15:39 2020 -0500 Optimize l-system/step and allow strings as axioms commit f7b35123c3f01e65449a2393645a5b4719c5a9e0 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 10:00:03 2020 -0500 Implement test l-system commit 2088e66fad63ca890c9c4b1c268d868d03d9a7f5 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 08:57:10 2020 -0500 Use HSB color mode in tree sketch commit bf7aac0636c1208a9226df7fce29fce633453cf2 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 08:57:01 2020 -0500 Clean up main.cljs commit 7c5a4cda9932d8ddcd29c5540fb326d444ce9241 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 08:56:35 2020 -0500 Hide empty scroll bar on landing page commit 92559812c1e7a6cc25a0f507f978028a2619fbf8 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 08:55:59 2020 -0500 Initial l-system implementation commit 2e8669c0434a0b26d7571b1cd7098ba12ce4323c Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 06:51:31 2020 -0500 Ignore cache files commit 14c605639a7d3862dccb9ecc23f0c9fe23a34144 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Tue Dec 1 08:28:57 2020 -0500 Lay out sketch on main page commit c58155b13bcf285bdcc0d5ceb12ecda442631832 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Mon Nov 30 07:45:11 2020 -0500 Fix makefile target name commit 888ec38de1cfcfe184192a42313232a837cea49c Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Mon Nov 30 07:42:48 2020 -0500 [WIP] Put a quil sketch on the homepage commit 59145b883e77d2b32a483f44d93ebc47ea1ab493 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 29 10:57:18 2020 -0500 Add Makefile with production build command commit febd037d06a4d03efe5bad9c35ce67c169b61347 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 29 10:41:07 2020 -0500 Remove :bundle-freq figwheel option commit 4f15b81202c12270762c2145b224dae62bd544b8 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 29 09:35:22 2020 -0500 Set up Figwheel build + obelix serve config commit fece49200abd1348c7a2d9585c06878f9ce5ac0b Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sat Nov 21 15:10:11 2020 -0500 Add cljs source commit a0b2ed9c36b37bb83b35addcb39a791738704a92 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Thu Nov 19 21:35:23 2020 -0500 Don't make images full-bleed commit cb0b2f6e321616f1d4538bfaa86e266656356522 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Thu Nov 19 19:32:05 2020 -0500 Match index page styling to existing site commit 03f6b943ad2299789583ba35ad08a1686f703a92 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Thu Nov 19 08:26:27 2020 -0500 Format the blog index page commit 782c13fcdf1309806dd065af5383f92d5e1209cc Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Thu Nov 19 07:39:05 2020 -0500 Sort blog posts by publish date on blog index commit dd59865f6ef127604d0508302964fa130b834208 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Wed Nov 18 08:35:52 2020 -0500 Update obelix-plugin-typography version commit 682e69aff9ffb8aecfd3d2bc09b73e00a390d815 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Wed Nov 18 08:35:09 2020 -0500 Style the header commit 4ae624d42215c309f1e6c3b7fbbb0b43b83282b8 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Wed Nov 18 08:34:54 2020 -0500 Add Google Fonts links commit 8d3a3ffc3c32d6f40c37a7692fa0f87dd5a11f55 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 15 16:00:31 2020 -0500 Add typography.js plugin commit fdf743ad58d8a0978778f9577f766cae815e71b5 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 16:26:01 2020 -0500 Sketch out site styling commit 4a6b986d27a4aae364942da1571d2cb86a902963 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 16:25:53 2020 -0500 Add titles commit 3cd7ad4cef10a53ac94a90527667453c433344d5 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 16:25:23 2020 -0500 Make blog headers h2s commit 28106c2d37eefacca98160a09cf8572485e1f3f2 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:08:08 2020 -0500 Fix markdown formatting commit 2549d00cccb9c782b5dcc3b98eaf436e1e2e6d9b Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:07:57 2020 -0500 Make header images full-bleed commit 9256dc3c3e1f6c6db0772533e3b9003ebfaf240b Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:03:07 2020 -0500 Add preliminary blog index commit 3380b8c02a87abfac62edc09af79331b802ccd0d Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:02:57 2020 -0500 Make sure index.md gets read as a page commit cc0aecdf1d039602d69a5b2669826a99228b426f Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:02:40 2020 -0500 Flesh out layout and add separate blog layout commit e978957fe36a6bce93ade00b7e5f5c03e633d09a Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:02:07 2020 -0500 Vendor in highlight.js commit 60d3b7071ba128f026f9c9423c643fc21707cbdb Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:01:22 2020 -0500 Delete package.json and rely on globally-installed Obelix commit 9d0cd7b46e52885012a1c94cca0a7c26811afef4 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Thu Nov 5 09:43:13 2020 -0500 Port blog posts and index over to Obelix commit 800f4a088bd72f999835280d3381e9307c32776f Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sat Oct 10 15:06:19 2020 -0400 Delete everything commit64febcc68a
Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Oct 12 12:35:35 2020 -0400 Fix typo commit b4e01335329091ea0618805515414498487e4569 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 10:29:17 2020 -0500 Make RSS feed commit f9c2956db1f44fea2c9f45d18aad189a950bad17 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 10:28:50 2020 -0500 Update to Obelix 1.1.0 (no longer escapes HTML automatically) commit 1d0b09fb904bee4d19af9eb96c8ec7945b4e4257 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:57:44 2020 -0500 Don't draw <hr> on last blog summary commit e97d3399614d04ae2f2364e18de60d8076d66ba4 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:53:00 2020 -0500 Fix mobile layout commit 4931b8153106702f33200f8098314a54151350d6 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:46:07 2020 -0500 Dedupe tree branches correctly commit 54708b956e1bc4722efbef5f01f96985891a702e Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:45:54 2020 -0500 Add randomness to tree sketch commit 81a68a8d1a92630394082f5218574b52aced56d1 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:45:29 2020 -0500 Re-render sketch on window resize commit eca26effffb5dbc1d881031a76d044608bd3fa69 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Thu Dec 10 08:44:46 2020 -0500 Support stochastic l-system grammars commit 6050d59408548c7d014da450d0e6737fe768f19f Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 21:07:00 2020 -0500 Add TODO commit d478bcc3f642dd58e93e8ef0542e19ea9acc6f1a Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 21:05:51 2020 -0500 Don't sort l-system output; downsize to 6 iteration commit f01f9135172e7b60480b64ede936e380384c0060 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 17:26:15 2020 -0500 [WIP] Leave game plan comment commit e191ea7b86e05098d2fcc2e6ea99c06e6ad493fb Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 17:17:44 2020 -0500 [WIP] Don't draw lines multiple times commit 7cbc9bd839743fa660962f036f34817c6deb05de Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 13:57:49 2020 -0500 Batch size = 50 commit 571ea7728e2605456578be7f70e0c0806434b750 Author: Jeremy Dormitzer <jeremydormitzer@lola.com> Date: Mon Dec 7 13:55:19 2020 -0500 Account for depth when rendering tree branches commit 53469c671c0ecf92edaabd152b58a532dfb5f54f Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Mon Dec 7 08:45:50 2020 -0500 Have the tree draw itself commit 5b023911a346f72cb4fea56aaedebc371b0f7135 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Mon Dec 7 07:11:08 2020 -0500 Calculate l-system once commit 4b9daa8cd2e5790973e93d2ff3909a4791d3332b Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 11:38:15 2020 -0500 Extract l-system->lines into a function commit 7bcef9263aadcb00b0e8e045e23ccfca4ef22a0f Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 11:21:04 2020 -0500 Tweak plant: more iterations, smaller segment length commit 9b37f41af829d64ffd2513573eaf71ab4f6b1fe1 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 11:16:22 2020 -0500 Move all calculations to update-state; use more natural l-system commit 6496fa4b57487a97d037ecb5d357ccd0c1db13a1 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 11:16:10 2020 -0500 Add l-system/rules macro commit 17e1b0f867fe5ea6e188e67b90a5895d9d34cfef Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 11:15:39 2020 -0500 Optimize l-system/step and allow strings as axioms commit f7b35123c3f01e65449a2393645a5b4719c5a9e0 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 10:00:03 2020 -0500 Implement test l-system commit 2088e66fad63ca890c9c4b1c268d868d03d9a7f5 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 08:57:10 2020 -0500 Use HSB color mode in tree sketch commit bf7aac0636c1208a9226df7fce29fce633453cf2 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 08:57:01 2020 -0500 Clean up main.cljs commit 7c5a4cda9932d8ddcd29c5540fb326d444ce9241 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 08:56:35 2020 -0500 Hide empty scroll bar on landing page commit 92559812c1e7a6cc25a0f507f978028a2619fbf8 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 08:55:59 2020 -0500 Initial l-system implementation commit 2e8669c0434a0b26d7571b1cd7098ba12ce4323c Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Dec 6 06:51:31 2020 -0500 Ignore cache files commit 14c605639a7d3862dccb9ecc23f0c9fe23a34144 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Tue Dec 1 08:28:57 2020 -0500 Lay out sketch on main page commit c58155b13bcf285bdcc0d5ceb12ecda442631832 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Mon Nov 30 07:45:11 2020 -0500 Fix makefile target name commit 888ec38de1cfcfe184192a42313232a837cea49c Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Mon Nov 30 07:42:48 2020 -0500 [WIP] Put a quil sketch on the homepage commit 59145b883e77d2b32a483f44d93ebc47ea1ab493 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 29 10:57:18 2020 -0500 Add Makefile with production build command commit febd037d06a4d03efe5bad9c35ce67c169b61347 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 29 10:41:07 2020 -0500 Remove :bundle-freq figwheel option commit 4f15b81202c12270762c2145b224dae62bd544b8 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 29 09:35:22 2020 -0500 Set up Figwheel build + obelix serve config commit fece49200abd1348c7a2d9585c06878f9ce5ac0b Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sat Nov 21 15:10:11 2020 -0500 Add cljs source commit a0b2ed9c36b37bb83b35addcb39a791738704a92 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Thu Nov 19 21:35:23 2020 -0500 Don't make images full-bleed commit cb0b2f6e321616f1d4538bfaa86e266656356522 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Thu Nov 19 19:32:05 2020 -0500 Match index page styling to existing site commit 03f6b943ad2299789583ba35ad08a1686f703a92 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Thu Nov 19 08:26:27 2020 -0500 Format the blog index page commit 782c13fcdf1309806dd065af5383f92d5e1209cc Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Thu Nov 19 07:39:05 2020 -0500 Sort blog posts by publish date on blog index commit dd59865f6ef127604d0508302964fa130b834208 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Wed Nov 18 08:35:52 2020 -0500 Update obelix-plugin-typography version commit 682e69aff9ffb8aecfd3d2bc09b73e00a390d815 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Wed Nov 18 08:35:09 2020 -0500 Style the header commit 4ae624d42215c309f1e6c3b7fbbb0b43b83282b8 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Wed Nov 18 08:34:54 2020 -0500 Add Google Fonts links commit 8d3a3ffc3c32d6f40c37a7692fa0f87dd5a11f55 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 15 16:00:31 2020 -0500 Add typography.js plugin commit fdf743ad58d8a0978778f9577f766cae815e71b5 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 16:26:01 2020 -0500 Sketch out site styling commit 4a6b986d27a4aae364942da1571d2cb86a902963 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 16:25:53 2020 -0500 Add titles commit 3cd7ad4cef10a53ac94a90527667453c433344d5 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 16:25:23 2020 -0500 Make blog headers h2s commit 28106c2d37eefacca98160a09cf8572485e1f3f2 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:08:08 2020 -0500 Fix markdown formatting commit 2549d00cccb9c782b5dcc3b98eaf436e1e2e6d9b Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:07:57 2020 -0500 Make header images full-bleed commit 9256dc3c3e1f6c6db0772533e3b9003ebfaf240b Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:03:07 2020 -0500 Add preliminary blog index commit 3380b8c02a87abfac62edc09af79331b802ccd0d Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:02:57 2020 -0500 Make sure index.md gets read as a page commit cc0aecdf1d039602d69a5b2669826a99228b426f Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:02:40 2020 -0500 Flesh out layout and add separate blog layout commit e978957fe36a6bce93ade00b7e5f5c03e633d09a Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:02:07 2020 -0500 Vendor in highlight.js commit 60d3b7071ba128f026f9c9423c643fc21707cbdb Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sun Nov 8 13:01:22 2020 -0500 Delete package.json and rely on globally-installed Obelix commit 9d0cd7b46e52885012a1c94cca0a7c26811afef4 Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Thu Nov 5 09:43:13 2020 -0500 Port blog posts and index over to Obelix commit 800f4a088bd72f999835280d3381e9307c32776f Author: Jeremy Dormitzer <jeremy.dormitzer@gmail.com> Date: Sat Oct 10 15:06:19 2020 -0400 Delete everything
This commit is contained in:
parent
1597f5d315
commit
f32acdc8da
@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
title: Building a purely-functional static site generator
|
||||||
|
author: Jeremy Dormitzer
|
||||||
|
published: 2020-12-28
|
||||||
|
---
|
||||||
|
Ok, I know. That was kind of a lie. No static site generator can ever really be purely functional, since the side effects are the whole point. But I think I found a way to build a site generator that retains all the benefits of a purely functional architecture - simplicity, flexibility, and hackability.
|
||||||
|
|
||||||
|
Let me back up. I have been looking into new technology for my website for a while now. Right now I'm using a very capable site generator called [Pollen](https://docs.racket-lang.org/pollen/), but it has started to feel too complicated for my needs. I found [Gatsby.js](https://www.gatsbyjs.com/), and while it ticks most of the right boxes (able to source content from multiple sources at compile time, pluggable with a huge plugin ecosystem), it still has a ton of features I'm never going to use and feels over-architected for what should be a simple solution.
|
||||||
|
|
||||||
|
So I decided to build my own static site generator. I'm calling it [Obelix](https://github.com/obelix-site-builder/obelix), and it aims to combine the best parts of Gatsby with a stripped-down, simple architecture. This blog post was rendered in it! In this post, I'm going to give a brief overview of how Obelix works and talk about why I built it this way.
|
||||||
|
|
||||||
|
## The big picture
|
||||||
|
Obelix uses a simple internal data structure to represent the contents of a static site:
|
||||||
|
|
||||||
|
```clojure
|
||||||
|
{:metadata {}
|
||||||
|
:routes []}
|
||||||
|
```
|
||||||
|
|
||||||
|
`:metadata` holds a dictionary of arbitrary metadata about the site as a whole, stuff like the copyright date or the last updated timestamp. `:routes` is a list of all the site's static pages. If the site consists of three routes — `index.html`, `blog/post-1.html`, `blog/post-2.html` — then the `:routes` list might look like this:
|
||||||
|
|
||||||
|
```clojure
|
||||||
|
[{:name "index.html"
|
||||||
|
:type :page
|
||||||
|
:content "Content here"}
|
||||||
|
{:name "blog/post-1.html"
|
||||||
|
:type :page
|
||||||
|
:content "More content here"}
|
||||||
|
{:name "blog/post-2.html"
|
||||||
|
:type :page
|
||||||
|
:content "So much content!"}]
|
||||||
|
```
|
||||||
|
|
||||||
|
As you can see, the elements of the `:routes` list are nodes representing the asset that lives at that URL. Asset maps can have whatever keys are necessary to render that asset.
|
||||||
|
|
||||||
|
The heart of Obelix is a pipeline of handler functions. A handler function takes in a site map and does something with it — add a key, transform a node, write stuff out to disk. Handler functions are added via plugins, which are simply modules that provide handler functions to be run at various points during the build pipeline. Obelix comes with several core plugins that always run during the build process, and more can be added via third-party or project-specific plugins.
|
||||||
|
|
||||||
|
The plugins are where all of the actual behavior of the site generator lives. For example, one plugin reads Markdown-formatted files from disk, parses them, and adds them as routes in the site list. Another plugin walks the routes, transforms the pages to text, and writes them to disk in the output directory.
|
||||||
|
|
||||||
|
The beauty of this functional approach is that it is capable of supporting basically any feature offered by other static site generators, but those features can be implemented by plugins outside the core of the generator itself. A templating engine, for example, where template files in the source directory get applied to multiple pages in the output site, can be implemented as a plugin that wraps some of the routes in the site map with new content.
|
||||||
|
|
||||||
|
I'm really happy with how Obelix turned out. It's available for installation [on NPM](https://npmjs.org/obelix) and the full source code is available on [GitHub](https://github.com/obelix-site-builder/obelix). If you’re interested in contributing plugins or want to use Obelix for your own site, let me know [on Twitter](https://twitter.com/jeremydormitzer)!
|
@ -31,6 +31,7 @@
|
|||||||
</footer>
|
</footer>
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap" rel="stylesheet">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,300;0,400;0,600;0,700;1,300;1,400;1,600;1,700&display=swap" rel="stylesheet">
|
||||||
<link rel="stylesheet" href="/css/highlight/default.css">
|
<link rel="stylesheet" href="/css/highlight/default.css">
|
||||||
<script src="/js/highlight.pack.js"></script>
|
<script src="/js/highlight.pack.js"></script>
|
||||||
<script>hljs.initHighlightingOnLoad();</script>
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
@ -4,14 +4,15 @@ html {
|
|||||||
|
|
||||||
body {
|
body {
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
code, pre, kbd, samp {
|
||||||
|
font-family: "Source Code Pro", monospace
|
||||||
|
}
|
||||||
|
|
||||||
header {
|
header {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
</footer>
|
</footer>
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap" rel="stylesheet">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,300;0,400;0,600;0,700;1,300;1,400;1,600;1,700&display=swap" rel="stylesheet">
|
||||||
<script src="cljs/main.js"></script>
|
<script src="cljs/main.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user