Compare commits
10 Commits
00b6b52584
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 5d9ffc42bb | |||
| b6da409fc7 | |||
| ef33ba471c | |||
| 241066b584 | |||
| 6b15877e7a | |||
| dd702d0f3e | |||
| e2af700c30 | |||
| 8cbe3f8dca | |||
|
|
6bbb623f7c | ||
|
|
e795c2b493 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.obsidian/workspace
|
||||
4
.obsidian/app.json
vendored
4
.obsidian/app.json
vendored
@@ -1,5 +1,7 @@
|
||||
{
|
||||
"legacyEditor": false,
|
||||
"livePreview": true,
|
||||
"promptDelete": false
|
||||
"promptDelete": false,
|
||||
"vimMode": false,
|
||||
"alwaysUpdateLinks": true
|
||||
}
|
||||
3
.obsidian/community-plugins.json
vendored
Normal file
3
.obsidian/community-plugins.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[
|
||||
"extract-url"
|
||||
]
|
||||
9
.obsidian/graph.json
vendored
9
.obsidian/graph.json
vendored
@@ -13,6 +13,13 @@
|
||||
"a": 1,
|
||||
"rgb": 14701138
|
||||
}
|
||||
},
|
||||
{
|
||||
"query": "tag:#cormanthor",
|
||||
"color": {
|
||||
"a": 1,
|
||||
"rgb": 751369
|
||||
}
|
||||
}
|
||||
],
|
||||
"collapse-display": true,
|
||||
@@ -25,6 +32,6 @@
|
||||
"repelStrength": 10,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 1,
|
||||
"scale": 0.48854597807787425,
|
||||
"close": false
|
||||
}
|
||||
21
.obsidian/hotkeys.json
vendored
21
.obsidian/hotkeys.json
vendored
@@ -1 +1,20 @@
|
||||
{}
|
||||
{
|
||||
"graph:open-local": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod",
|
||||
"Shift"
|
||||
],
|
||||
"key": "G"
|
||||
}
|
||||
],
|
||||
"file-explorer:open": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod",
|
||||
"Shift"
|
||||
],
|
||||
"key": "E"
|
||||
}
|
||||
]
|
||||
}
|
||||
9
.obsidian/plugins/extract-url/main.js
vendored
Normal file
9
.obsidian/plugins/extract-url/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
.obsidian/plugins/extract-url/manifest.json
vendored
Normal file
10
.obsidian/plugins/extract-url/manifest.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"id": "extract-url",
|
||||
"name": "Extract url content",
|
||||
"version": "0.9.0",
|
||||
"description": "Extract url converting content into markdown",
|
||||
"author": "Stephen Solka",
|
||||
"authorUrl": "https://github.com/trashhalo",
|
||||
"isDesktopOnly": false,
|
||||
"minAppVersion": "0.12.15"
|
||||
}
|
||||
97
.obsidian/workspace
vendored
97
.obsidian/workspace
vendored
@@ -1,97 +0,0 @@
|
||||
{
|
||||
"main": {
|
||||
"id": "31a002ea75517e3c",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "c994d2d9e7e5e974",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "templates/Person.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
},
|
||||
"left": {
|
||||
"id": "b3e7f94d7e5b05de",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "1c9e0cf23ec68ba1",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "bbd15c75d697bca6",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-explorer",
|
||||
"state": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "a5c443567aaf8c0f",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 300
|
||||
},
|
||||
"right": {
|
||||
"id": "1635bc4eee226ba3",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "dd7b5061cd81c59f",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "9be1b909b9c2b5b3",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "templates/Person.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
"showSearch": false,
|
||||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 300,
|
||||
"collapsed": true
|
||||
},
|
||||
"active": "c994d2d9e7e5e974",
|
||||
"lastOpenFiles": [
|
||||
"templates/Person.md",
|
||||
"People/Colin Diem.md",
|
||||
"People/Abigail Diem.md",
|
||||
"People/Alison Diem.md"
|
||||
]
|
||||
}
|
||||
2
Gaming/TTRPGs/D&D/AcqInc Team Y/Butios Gikru.md
Normal file
2
Gaming/TTRPGs/D&D/AcqInc Team Y/Butios Gikru.md
Normal file
@@ -0,0 +1,2 @@
|
||||
Player: [[Daniel O'Niel]]
|
||||
Human Cleric of
|
||||
2
Gaming/TTRPGs/D&D/AcqInc Team Y/Guy.md
Normal file
2
Gaming/TTRPGs/D&D/AcqInc Team Y/Guy.md
Normal file
@@ -0,0 +1,2 @@
|
||||
Player: [[Murph]]
|
||||
Halfling Warlock of the Great Old One
|
||||
1
Gaming/TTRPGs/D&D/AcqInc Team Y/Jorr.md
Normal file
1
Gaming/TTRPGs/D&D/AcqInc Team Y/Jorr.md
Normal file
@@ -0,0 +1 @@
|
||||
A Human woodsman living in the Witchwood. He joined Team Y to hunt for Red Hand cultists in the Witchwood.
|
||||
12
Gaming/TTRPGs/D&D/AcqInc Team Y/Recap for 2022-04-17.md
Normal file
12
Gaming/TTRPGs/D&D/AcqInc Team Y/Recap for 2022-04-17.md
Normal file
@@ -0,0 +1,12 @@
|
||||
2022-04-17
|
||||
[[Team Y]]
|
||||
The team left Drellin's Ferry after a bit of shopping, and set off in search of [[Jorr]]. They were able to travel to [[Jorr]]'s cabin without incident. Once there, [[Urroul]] was able to successfully handle animal on the dogs, and the party made contact with [[Jorr]] and hired his services at the dangerous rate expecting a week's long contract.
|
||||
From [[Jorr]]'s, they headed across the blackwater causeway, not disturbing the hydra sleeping there and made camp on the other side of the swamp.
|
||||
|
||||
Waking from an uneventful night, they traveled on to Vraath Keep, and were able to sneak into the keep. [[Zilara]] accidentally alerted the Goblin Worg Riders to their presence, but thanks to some accurate shooting from [[Jorr]] and [[Urroul]], they were able to kill them without raising the general alarm within the keep.
|
||||
|
||||
[[Guy]] snuck into the guard room and cast the spell friends on one of the guards and was able to convince them that the party were new recruits sent from the war party. The guard was a bit suspicious and got Wyrmlord Koth, who attempted to cast detect thoughts on [[Guy]]. [[Guy]] made his Wisdom Save and also succeeded at an Arcana check to identify the spell as Detect Thoughts and use his Great Old One telepathy to convice Koth that the spell had succeeded.
|
||||
|
||||
The party then convinced the Red Hand troops that someone else had also just arrived at the keep and killed the goblins, and that they should split up to search for them, with each party member paired up with a Red Hand veteran.
|
||||
|
||||
That was where we left it for the night.
|
||||
17
Gaming/TTRPGs/D&D/AcqInc Team Y/Team Y.md
Normal file
17
Gaming/TTRPGs/D&D/AcqInc Team Y/Team Y.md
Normal file
@@ -0,0 +1,17 @@
|
||||
Players:
|
||||
[[Daniel O'Niel]]
|
||||
[[Bonnie Wessler]]
|
||||
[[Chad Banks]]
|
||||
[[Murph]]
|
||||
|
||||
Characters:
|
||||
[[Guy]]
|
||||
[[Zilara]]
|
||||
[[Urroul]]
|
||||
[[Butios Gikru]]
|
||||
|
||||
NPCs:
|
||||
[[Jorr]]
|
||||
|
||||
Recaps:
|
||||
[[Recap for 2022-04-17]]
|
||||
2
Gaming/TTRPGs/D&D/AcqInc Team Y/Urroul.md
Normal file
2
Gaming/TTRPGs/D&D/AcqInc Team Y/Urroul.md
Normal file
@@ -0,0 +1,2 @@
|
||||
Player: [[Chad Banks]]
|
||||
Dwarven Fighter
|
||||
2
Gaming/TTRPGs/D&D/AcqInc Team Y/Zilara.md
Normal file
2
Gaming/TTRPGs/D&D/AcqInc Team Y/Zilara.md
Normal file
@@ -0,0 +1,2 @@
|
||||
Player: [[Bonnie Wessler]]
|
||||
Half-orc Paladin of Tyr
|
||||
13
Gaming/TTRPGs/D&D/Cormanthor/Background.md
Normal file
13
Gaming/TTRPGs/D&D/Cormanthor/Background.md
Normal file
@@ -0,0 +1,13 @@
|
||||
#cormanthor
|
||||
|
||||
Last year was a bad year for Mistledale. Early in the year, a flight of dragons came from the north, wreaking destruction on everything they encountered. No sooner had the wyrms retreated than Lord Lashan of Scardale invaded his neighbors, hoping to seize control and declare himself king. Lashan’s mercenary forces were met in Mistledale by a coalition army and thrown back, but the fighting left many homeless and trampled the harvest.
|
||||
|
||||
Traditionally, the dale would be able to rely on its position astride the Moonsea Road at the front door of the Cormanthor forest as a way to rebuild. This location has long made Mistledale a meeting place for trade rather than just a subsistence farming community.
|
||||
|
||||
But ill fortune comes in threes, and the elves’ Retreat was the third stroke for Mistledale, stealing away this hope.
|
||||
|
||||
Since the raising of the Standing Stone, 1,357 years ago, the people of the Dalelands and the elves of Cormanthor have lived in neighborly peace. For a time, humanity was welcomed into the forest, and the great city of Myth Drannor served as a meeting place for all peoples. When Myth Drannor fell - through treachery and black magic, they say - the elves closed Cormanthor to the outside world. For centuries, most of the forest has been blanketed in a magical warding, or mythal, that protected it against intrusion; humans have been permitted only on a few roads and trails through the region, or at the very edges of the wood.
|
||||
|
||||
Last year, the mythal disappeared, and it became clear that the elves had abandoned Cormanthor – disappeared West across the ocean to join their brethren at Evermeet. For the first time in many generations, the forest lies open to humanity, and if legends are to be believed, ancient secrets and fantastic treasure can be found within.
|
||||
|
||||
And you are determined to claim some share of that treasure as your own.
|
||||
13
Gaming/TTRPGs/D&D/Cormanthor/Regional Context.md
Normal file
13
Gaming/TTRPGs/D&D/Cormanthor/Regional Context.md
Normal file
@@ -0,0 +1,13 @@
|
||||
#cormanthor
|
||||
|
||||
![[dale_lands.png]]
|
||||
|
||||
The farmers and freeholders of the Dales are not the only people turning their eyes to the potential riches of the abandoned elven forest. Other regional interests include:
|
||||
|
||||
- Sembia, to the south, a young nation formed of the alliance of several merchant city-states on the Sea of Fallen Stars, has constantly sought to expand its influence; the former Moondale has already been absorbed.
|
||||
|
||||
- Cormyr, southwest, an aristocratic monarchy that has sought to expand its borders in the name of “security,” has recently annexed Tilverton and claimed control of Tilver’s Gap through the Thunder Peaks.
|
||||
|
||||
- The Moonsea port cities, to the north, vye among each other for dominance and do not hesitate to pull in unwilling third parties. The traditionally republican Hillsfar has recently turned to a tyrant who has expelled non-humans and occupied neighboring Elventree, while Zhentil Keep seems to have no intent to withdraw its forces from Daggerdale after defeating Lashan’s troops there.
|
||||
|
||||
- The Thunder Peaks, Stonelands, and Desertsmouth Mountains are wild areas that together run south to north, west of the dales and Cormanthor, and house goblins, giants, dragons, and brigands of all kinds.
|
||||
17
Gaming/TTRPGs/D&D/Cormanthor/Rumors.md
Normal file
17
Gaming/TTRPGs/D&D/Cormanthor/Rumors.md
Normal file
@@ -0,0 +1,17 @@
|
||||
#cormanthor
|
||||
|
||||
* The farms around Glen have reported a number of nighttime raids; bandits are probably using Galeth's Roost as a hideout again.
|
||||
|
||||
* Travelers on the Moonsea Road dare each other to visit a crumbling monastery just west of the Standing Stone; the unstable ruins might still contain curiosities after all these years.
|
||||
|
||||
* A stretch of ancient aqueduct spans the trail to Shadowdale; following it east leads to a ruined compound of some sort.
|
||||
|
||||
* There are a few odd hamlets off the trail to Essembra; the folk there are reclusive but may know points of interest further in the forest.
|
||||
|
||||
* The Barrowfields near the western end of the Dale are the remnants of some ancient war; sensible folk leave the haunted place alone.
|
||||
|
||||
* A giant statue of an elven warrior looms over the forest to the north, visible from the trail to Shadowdale; it looks like there are balconies on the shoulders--there must be some way to get inside.
|
||||
|
||||
* A ruined temple sits just inside the wood, west of Oakengrove Abbey; even though it lay outside the mythal, the elves had always pronounced it forbidden.
|
||||
|
||||
* A large manor sits southeast of the Barrowfields, on a bluff a short ways into the wood; it's owned by some Cormyrean noble or something, nobody quite knows who but there are sometimes lights on at night.
|
||||
BIN
Gaming/TTRPGs/D&D/Cormanthor/dale_lands.png
Normal file
BIN
Gaming/TTRPGs/D&D/Cormanthor/dale_lands.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1006 KiB |
4
Linux/Howdy/Setting up Howdy.md
Normal file
4
Linux/Howdy/Setting up Howdy.md
Normal file
@@ -0,0 +1,4 @@
|
||||
install howdy
|
||||
change howdy config for video device to /dev/video0
|
||||
if that doesn't work, try /dev/video1
|
||||
that should be it
|
||||
11
People/Bonnie Wessler.md
Normal file
11
People/Bonnie Wessler.md
Normal file
@@ -0,0 +1,11 @@
|
||||
#people
|
||||
## Bonnie Wessler
|
||||
**Birthday:**
|
||||
**Contact Info:**
|
||||
**Phone:**
|
||||
**Address:** Street City,
|
||||
State PostCode
|
||||
**Email:**
|
||||
**Website:**
|
||||
|
||||
### Details:
|
||||
11
People/Chad Banks.md
Normal file
11
People/Chad Banks.md
Normal file
@@ -0,0 +1,11 @@
|
||||
#people
|
||||
## Chad Banks
|
||||
**Birthday:**
|
||||
**Contact Info:**
|
||||
**Phone:**
|
||||
**Address:** Street City,
|
||||
State PostCode
|
||||
**Email:**
|
||||
**Website:**
|
||||
|
||||
### Details:
|
||||
11
People/Daniel O'Niel.md
Normal file
11
People/Daniel O'Niel.md
Normal file
@@ -0,0 +1,11 @@
|
||||
#people
|
||||
## Daniel O'Niel
|
||||
**Birthday:**
|
||||
**Contact Info:**
|
||||
**Phone:**
|
||||
**Address:** Street City,
|
||||
State PostCode
|
||||
**Email:**
|
||||
**Website:**
|
||||
|
||||
### Details:
|
||||
13
People/Murph.md
Normal file
13
People/Murph.md
Normal file
@@ -0,0 +1,13 @@
|
||||
#people
|
||||
# Richard Murphy
|
||||
## Murph
|
||||
**Birthday:**
|
||||
**Contact Info:**
|
||||
**Phone:**
|
||||
**Address:** Street City,
|
||||
State PostCode
|
||||
**Email:**
|
||||
**Website:**
|
||||
|
||||
### Details:
|
||||
#
|
||||
48
Programming/Articles/If not SPAs then what?.md
Normal file
48
Programming/Articles/If not SPAs then what?.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# [If not SPAs, What? - macwright.com](https://macwright.com/2020/10/28/if-not-spas.html#programming)
|
||||
A few months ago, I [wrote an article about how the SPA pattern has failed to simplify web development](https://macwright.com/2020/05/10/spa-fatigue.html). The *SPA pattern* (Single-Page Apps), I tried to define, was about the React model, which also covers, to a large extent, the model of Vue, Angular, and other frontend frameworks.
|
||||
|
||||
Like any critique, it begs for a prescription and I didn’t give one, other than gesturing toward server-side frameworks like Rails and Django. But I think there are some trends starting to form. I had queued up some time to *really dive into the frameworks*, but things like [walking in parks](https://macwright.com/2020/10/12/holly-park.html) have taken priority, so here’s just a grand tour.
|
||||
|
||||
### Opinionated full-stack JavaScript frameworks ###
|
||||
|
||||
Primarily I’m talking about [Remix](https://remix.run/features), [RedwoodJS](https://redwoodjs.com/), and [Blitz.js](https://blitzjs.com/), though I’m sure there are similar efforts in the non-React world that are relevant. [Next.js](https://nextjs.org/)*almost* falls into this category, but as far as I can tell, it’s still unopinionated about the data layer and most sites that use Next.js are still going to use a separate API stack. But that’s subject to change, because all of these are moving fast.
|
||||
|
||||
It’s interesting to note that Remix, Redwood, and Next are all backed by companies or foundations, and that Blitz is aiming early on to be a [sponsor-funded project](https://github.com/sponsors/blitz-js). These projects, I think, are trying to sidestep the “tragedy of the commons” failures of earlier open source, wherein overworked and unpaid maintainers service a large userbase and eventually burn out and abandon the project.
|
||||
|
||||
To take Remix as an example, it re-ties data loading with routes, and then gives the pretty amazing promise of *no client side data fetching by default*. These frameworks are also *opinionated about status codes and caching strategies*. RedwoodJS automatically creates an [ORM-like interface using GraphQL and Prisma](https://redwoodjs.com/tutorial/side-quest-how-redwood-works-with-data).
|
||||
|
||||
As context, Remix is backed by the folks from [React Training](https://reacttraining.com/), who are also the folks from [React Router](https://reactrouter.com/), which is as much React pedigree as you can get without joining the team at Facebook. Redwood is run by [Preston-Werner Ventures](https://prestonwernerventures.com/), of [Tom Preston-Werner](https://en.wikipedia.org/wiki/Tom_Preston-Werner), a GitHub founder. Next.js is sponsored and heavily promoted by [Vercel](https://vercel.com/), née Zeit.
|
||||
|
||||
### Turbolinks ###
|
||||
|
||||
It’s worthwhile to just mention [Turbolinks](https://github.com/turbolinks/turbolinks). I didn’t use it until this year, and apparently there were issues with it before, but the pitch for Turbolinks 5 is: *what is the bare minimum you need to do to get the SPA experience without any cooperation from your application?*
|
||||
|
||||
So it’s a tiny JavaScript library that sits on top of an existing server-rendered application and replaces full pageloads with SPA-like partial pageloads. Instead of loading a page from scratch, pages are loaded with AJAX, page contents are replaced, and client-side navigation updates your URLs. Basically, it prevents the ‘blink’ of real page transitions and saves on all othe sorts of costs of fully loading a new page. Turbolinks was spawned from the [Ruby on Rails](https://rubyonrails.org/) project, and works great with Rails but doesn’t require it.
|
||||
|
||||
In terms of power-to-weight for user experience improvements, Turbolinks is a standout: it adds very little complexity and a tiny size impact for a big user experience improvement.
|
||||
|
||||
[barba.js](https://barba.js.org/) and [instant.page](https://instant.page/blacklist) are alternative approaches to the same sort of problem.
|
||||
|
||||
### Server-side-state frameworks ###
|
||||
|
||||
These are the spiciest new solution. The main contenders are [Laravel Livewire](https://laravel-livewire.com/) (in PHP), [Stimulus Reflex](https://docs.stimulusreflex.com/) (for Ruby on Rails), and [Phoenix LiveView](https://github.com/phoenixframework/phoenix_live_view) (on Phoenix, in Elixir). There’s also [django-sockpuppet](https://github.com/jonathan-s/django-sockpuppet), for the Python set.
|
||||
|
||||
The pitch here is: *what if you didn’t have to write any JavaScript?* It sort of hearkens back to the critique of JavaScript in [\_why’s ART && CODE talk](https://vimeo.com/5047563), that web development is the only kind where you normally have to write in three (or more) languages. These languages also most remnants of “client-side” logic, putting it all on the server side.
|
||||
|
||||
How do they do this? Well, a lot of WebSockets, in the case of Reflex and LiveView, as well as very tightly coupled server interactions. As you can see in the [LiveView demo](https://www.phoenixframework.org/blog/build-a-real-time-twitter-clone-in-15-minutes-with-live-view-and-phoenix-1-5), which I highly recommend, these frameworks tend to operate sort of like reactive DOM libraries on the front end – in which the framework figures out minimal steps to transform from one state to another - except those steps are computed on the server side and then generically applied on the client side. They also do a lot more data storage & state management on the server-side, because a lot of those interactions which wouldn’t be persisted to the server are now at least communicated to the server.
|
||||
|
||||
These frameworks are exciting, and also extremely contrarian, because they are the polar opposite of the “frontend plus agnostic API layer” pattern, and they also wholeheartedly embrace the thing everyone tries to avoid: mutable state on the server.
|
||||
|
||||
### Modest progressive-enhancement JavaScript frameworks ###
|
||||
|
||||
These are typically used “in addition” to the above, but they certainly deserve a shout-out because I think a wide swath of frontend-programming concerns actually only need a tiny hint of JavaScript. But the main caveat is that *they assume that you know JavaScript and the DOM*, which are not necessarily universal skills anymore. A lot of developers growing up on React have acquired a real blind spot for native browser APIs.
|
||||
|
||||
The main ones I’ve looked at are [Stimulus](https://stimulusjs.org/) (out of the Ruby on Rails camp), [Alpine](https://github.com/alpinejs/alpine/), and [htmx](https://htmx.org/). They’re all tiny, and work great in *existing pages*. I think – and here come the flames – [Web Components](https://developer.mozilla.org/en-US/docs/Web/Web_Components) also fit into this sphere of progressive enhancement! If you just use good web components - [only ones that GitHub writes is a good rule of thumb](https://github.com/search?q=topic%3Aweb-components+org%3Agithub&type=Repositories) - then they can fit the role of just improving an existing static UI. It’s where you start to use Web Components as an apples-to-apples replacement for full-fledged frontend frameworks is where things seem to get dicey.
|
||||
|
||||
These frameworks have the luxury of operating on a deeply improved web stack, one with fundamental components like [fetch()](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) and [MutationObserver](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver). These things were previously at the core of the utility of progressive enhancement frameworks, and now they can just be the utilities that those frameworks build on.
|
||||
|
||||
---
|
||||
|
||||
I’m sure that there are additional patterns out there! But these currents all seem strong right now, and it’s fascinating to see some really divergent and adventurous – and common-sense – approaches start to crop up.
|
||||
|
||||
<details><summary>Follow-ups & commmentary</summary></details>
|
||||
4
Programming/Random thoughts on programming.md
Normal file
4
Programming/Random thoughts on programming.md
Normal file
@@ -0,0 +1,4 @@
|
||||
## On tests:
|
||||
#tdd #testing #worst_practices
|
||||
|
||||
I read a quote that said "some tests are better than no tests", but it made me think that the inverse is also true in my experience. Some tests are worse than no tests. It seems easier to write bad tests than good tests, at least so far in my practice of writing tests after code. As I am delving into TDD, perhaps this will change. It seems even odds that it won't though.
|
||||
1
templates/D&D Recap.md
Normal file
1
templates/D&D Recap.md
Normal file
@@ -0,0 +1 @@
|
||||
{{date}}
|
||||
@@ -1,5 +1,6 @@
|
||||
#people
|
||||
## {{title}}
|
||||
# Name
|
||||
## known as {{title}}
|
||||
**Birthday:**
|
||||
**Contact Info:**
|
||||
**Phone:**
|
||||
|
||||
Reference in New Issue
Block a user