Skip to content

Commit ba6ef62

Browse files
committed
update with the blog
1 parent 35b511f commit ba6ef62

7 files changed

Lines changed: 165 additions & 126 deletions

File tree

README.md

Lines changed: 29 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ title: "Your Post Title"
6363
series: agents-for-academic-practice
6464
repo_url: "https://github.com/username/repo-for-this-post"
6565
skills_url: ""
66+
discussion:
67+
url: "https://github.com/YOUR_REPO_OWNER/YOUR_REPO_NAME/discussions/123"
6668
---
6769
Your post content here.
6870
```
@@ -75,11 +77,12 @@ Your post content here.
7577
**Optional fields:**
7678
- `repo_url: "..."` – link to GitHub repository with related skills/instructions
7779
- `skills_url: "..."` – direct link to skills/instructions file
80+
- `discussion.url: "..."` – direct link to the GitHub Discussion for this post
7881

7982
Posts with this series tag will automatically appear on `/blog/` with optional links rendered below each post.
8083

8184
### Add GitHub Discussions to your blog posts
82-
Readers can discuss each post directly on GitHub Discussions, with an optional giscus comment thread embedded in the post.
85+
Readers discuss each post on GitHub Discussions.
8386

8487
#### Setup steps
8588

@@ -88,104 +91,40 @@ Readers can discuss each post directly on GitHub Discussions, with an optional g
8891
- Scroll to "Discussions" and enable it
8992
- (Optional) Configure title and description for your discussion categories
9093

91-
**2. Find your Discussion Category ID**
92-
To auto-create discussions for posts, you need the numeric category ID. Get it via GitHub GraphQL Explorer:
93-
94-
1. Go to [GitHub GraphQL Explorer](https://docs.github.com/en/graphql/overview/explorer)
95-
2. Sign in with your GitHub account
96-
3. Paste this query, replacing `YOUR_REPO_OWNER` and `YOUR_REPO_NAME`:
97-
```graphql
98-
query {
99-
repository(owner: "YOUR_REPO_OWNER", name: "YOUR_REPO_NAME") {
100-
discussionCategories(first: 10) {
101-
nodes {
102-
id
103-
name
104-
}
105-
}
106-
}
107-
}
108-
```
109-
4. Click the play button. Copy the `id` of the category you want (e.g., "Blog Discussions" or similar).
110-
111-
**3. Set your GitHub token**
112-
The automation script needs a GitHub Personal Access Token to create discussions on your behalf.
113-
114-
1. Go to [GitHub SettingsPersonal Access TokensTokens (classic)](https://github.com/settings/tokens)
115-
2. Click "Generate new token (classic)"
116-
3. Give it a name like "Discussion Auto-Create"
117-
4. Check scopes: `repo`, `discussions`
118-
5. Generate and copy the token
119-
6. Save it as an environment variable: `export GH_TOKEN=ghp_xxxxxxxxxxxx`
120-
121-
**4. Auto-create a discussion for a post**
122-
Once your post is created with the frontmatter above, run:
94+
**2. Create a discussion manually for the post**
95+
- In your repository, open the **Discussions** tab
96+
- Click **New discussion**
97+
- Use a title matching your blog post title (or close variation)
98+
- Publish the discussion and copy its URL
12399

124-
```bash
125-
export GH_TOKEN=your_token_here
126-
python scripts/create_discussion.py _posts/YYYY-MM-DD-title.md
127-
```
128-
129-
The script will:
130-
- Read your post frontmatter
131-
- Create a discussion on GitHub with the post title
132-
- Update your post file with the discussion URL in the frontmatter
133-
- Print success or error messages
100+
**3. Link the discussion in post front matter**
101+
Add this to the post front matter:
134102

135-
**Example output:**
136-
```
137-
✓ Repository: marinedenolle/denolle.ai
138-
✓ Discussion created: https://github.com/marinedenolle/denolle.ai/discussions/42
139-
✓ Updated _posts/2026-02-26-welcome.md with discussion URL
103+
```yaml
104+
discussion:
105+
url: "https://github.com/YOUR_REPO_OWNER/YOUR_REPO_NAME/discussions/123"
140106
```
141107
142-
#### Enable optional giscus comment embed (advanced)
143-
By default, posts link to GitHub Discussions but don't embed comments. To add a giscus-powered comment thread in each post:
144-
145-
1. Find your repository ID via GraphQL:
146-
```graphql
147-
query {
148-
repository(owner: "YOUR_REPO_OWNER", name: "YOUR_REPO_NAME") {
149-
id
150-
}
151-
}
152-
```
153-
Copy the ID (e.g., `R_kgDOLN4fFg`).
154-
155-
2. Find your Discussion Category ID (from step 2 above, e.g., `DIC_kwDOLN4fFg4CiPzp`).
156-
157-
3. Edit `_config.yml` and uncomment/fill in the giscus section:
158-
```yaml
159-
giscus:
160-
enabled: true
161-
repo: "YOUR_REPO_OWNER/YOUR_REPO_NAME"
162-
repo_id: "R_kgDOLN4fFg" # from GraphQL
163-
category: "Blog Discussions"
164-
category_id: "DIC_kwDOLN4fFg4CiPzp" # from GraphQL
165-
mapping: "pathname"
166-
theme: "light"
167-
```
168-
169-
4. Rebuild your site. New posts will now show a giscus comment thread below the discussion link.
108+
Once saved, the post will automatically show a **Discuss this post →** link and a discussion section.
170109
171-
#### Troubleshooting
110+
#### Publish checklist (recommended)
111+
For each new blog post:
112+
1. Publish the markdown post in `_posts/`
113+
2. Create the matching GitHub Discussion
114+
3. Paste the discussion link into `discussion.url`
115+
4. Run `bundle exec jekyll build` to verify the site build
172116

173-
**Scripts fails: "GH_TOKEN not found"**
174-
- Run: `export GH_TOKEN=your_token_here` before running the script
175-
176-
**Script fails: "Discussions not enabled"**
177-
- Enable Discussions in your repository Settings (see step 1 above)
117+
#### Troubleshooting
178118

179-
**Script fails: "Post file not found"**
180-
- Check the file path; it should be relative to the repository root (e.g., `_posts/2026-02-26-welcome.md`)
119+
**Discussion link does not appear in the post**
120+
- Check that front matter includes `discussion.url`
121+
- Check indentation under `discussion:` (two spaces before `url`)
181122

182-
**Script fails: "Category not found"**
183-
- Verify category ID in _config.yml (or use GraphQL Explorer to get the right ID)
123+
**GitHub discussion not found / 404**
124+
- Verify the copied URL is correct and public to your readers
184125

185-
**Discussion link appears but comment thread doesn't show**
186-
- Check that `giscus.enabled: true` in `_config.yml`
187-
- Verify `giscus.repo` and `giscus.repo_id` are correct
188-
- Rebuild the site
126+
**Discussions tab is missing in your repository**
127+
- Enable Discussions in your repository Settings (see step 1 above)
189128

190129
### Update styling
191130
Edit `assets/styles.css`.

_config.yml

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,4 @@ media:
4141
# - title: "Panel: Climate-Hazard Intelligence at Scale"
4242
# url: "https://denolle-lab.github.io/"
4343
# - title: "Lab update: Multi-sensor science and impact"
44-
# url: "https://denolle-lab.github.io/"
45-
# GitHub Discussions & Giscus configuration
46-
giscus:
47-
enabled: false
48-
repo: ""
49-
repo_id: ""
50-
category: "Blog Discussions"
51-
category_id: ""
52-
mapping: "pathname"
53-
theme: "light"
44+
# url: "https://denolle-lab.github.io/"

_includes/discussion.html

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,44 +3,21 @@
33
{% assign discussion = page.discussion %}
44

55
{% if discussion.url and discussion.url != "" %}
6-
<!-- Discussion link at top of post -->
76
<div class="post-discussion-header">
87
<a href="{{ discussion.url }}" target="_blank" rel="noopener noreferrer">
98
Discuss this post →
109
</a>
1110
</div>
1211

13-
<!-- Discussion section at bottom of post -->
1412
<section class="post-discussion">
1513
<hr>
1614
<h3>Discussion</h3>
1715

1816
<p>
1917
<a href="{{ discussion.url }}" target="_blank" rel="noopener noreferrer">
20-
Join the discussion on GitHub
18+
Join the collegial discussion on GitHub
2119
</a>
2220
</p>
23-
24-
{% if site.giscus.enabled and site.giscus.enabled != false %}
25-
<!-- Embed giscus if enabled -->
26-
<script
27-
src="https://giscus.app/client.js"
28-
data-repo="{{ site.giscus.repo }}"
29-
data-repo-id="{{ site.giscus.repo_id }}"
30-
data-category="{{ site.giscus.category | default: 'Blog Discussions' }}"
31-
data-category-id="{{ site.giscus.category_id }}"
32-
data-mapping="{{ site.giscus.mapping | default: 'pathname' }}"
33-
data-strict="0"
34-
data-reactions-enabled="1"
35-
data-emit-metadata="0"
36-
data-input-position="top"
37-
data-theme="{{ site.giscus.theme | default: 'light' }}"
38-
data-lang="en"
39-
data-loading="lazy"
40-
crossorigin="anonymous"
41-
async>
42-
</script>
43-
{% endif %}
4421
</section>
4522
{% endif %}
4623
{% endif %}

_layouts/default.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
<div class="container prose post-shell">
3131
<p class="post-meta">{{ page.date | date: "%B %-d, %Y" }}</p>
3232
<h1>{{ page.title }}</h1>
33-
{% include discussion.html %}
3433
{{ content }}
3534
{% include discussion.html %}
3635
<p><a href="{{ '/blog/' | relative_url }}">&larr; Back to blog</a></p>

_posts/2026-02-20-agentic-earth-update.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
layout: default
33
title: "AgenticEarth Update"
44
series: agents-for-academic-practice
5-
repo_url: "https://github.com/mdenolle/marine-cv"
5+
repo_url: "https://github.com/mdenolle/https://github.com/mdenolle/academic-practice-agents"
66
---
77
This update covers progress on agentic workflows for Earth systems analysis.
88

_posts/2026-02-28-introduction.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
---
2+
layout: default
3+
title: "Introduction to the AI for Academic Practice Blog"
4+
series: agents-for-academic-practice
5+
repo_url: "https://github.com/mdenolle/academic-practice-agents"
6+
skills_url: ""
7+
discussion:
8+
url: "https://github.com/mdenolle/denolle.ai/discussions/1"
9+
---
10+
11+
## Practicing Science at the Speed of Foundation Models
12+
I am beginning a series of opinion essays on how generative AI is reshaping my scientific practice.
13+
14+
Not as commentary from the sidelines.
15+
16+
Not as technological evangelism.
17+
18+
But as a working Earth scientist embedded in academia, research leadership, and family life.
19+
20+
I am an earthquake scientist at the University of Washington. I build data-driven models of Earth systems. I am drawn to interdisciplinary problems where computational scale and physical reasoning intersect. I avoid incremental work whenever possible; I am interested in questions where better structure, better data, and better modeling genuinely change what we can know.
21+
22+
I am also a mother of three young, energetic children. My spouse is a high-powered academic at UW as well. Our household runs on intellectual and athletic intensity, and calendar coordination. We are extraordinarily fortunate to have his parents deeply supporting this life. We are surrounded by remarkable Seattle families and friends who make this stage of life expansive and fun.
23+
24+
I run. I ski. I mentor students seriously.
25+
26+
And over the last two years, I have intentionally integrated generative AI into nearly every dimension of my professional life.
27+
28+
This blog is a record of that integration.
29+
30+
## Why Write Now?
31+
32+
The pace of foundation model development and the emergence of agentic ecosystems around them is too rapid to wait for the slow academic cycle.
33+
34+
I cannot run controlled longitudinal studies on my own productivity. I cannot publish a meta-analysis on workflow acceleration. What I can do is experiment rigorously in my own practice:
35+
* Test systems.
36+
* Track what improves.
37+
* Discard what fails.
38+
* Refine prompts into structured agents.
39+
40+
These essays will describe what actually works in scientific life and what does not.
41+
42+
## My Operating Setup
43+
I use a business OpenAI account so that no model gets trained on my writing and others’ work I analyze through these tools. My work is organized through persistent
44+
45+
“Projects” that gather multiple tasks for a broader purpose. Each major role in my academic life has its own structured AI environment:
46+
* Seismology course development
47+
* Communication statements
48+
* Large-scale proposal architecture (including a focused research organization centered on agents, foundation models, and Earth science)
49+
* Paper reviewing — my own manuscripts and those I referee
50+
* Curriculum design
51+
* Early-stage research concepts
52+
53+
Each project has carefully written standing instructions and attached files as a knowledge base (e.g., a course syllabus, an NSF solicitation). Initially, I drafted the instructions informally. Then I iteratively refined them, asking the model to rewrite and formalize the instructions into a more agent-like specification, closer to structured task decomposition than casual prompting. The improvement in consistency and output quality was substantial. Instruction files have become an externalized role-task description that has lived in my brain for decades.
54+
55+
For coding and lab development, I work in VS Code with Anthropic Sonnet or Opus, alongside premium GitHub Copilot. The annual cost is trivial relative to the leverage gained.
56+
Operationally, this has changed my workflow:
57+
* I no longer need additional TA time to polish documents.
58+
* My writing is clearer and structurally stronger.
59+
* Proposal framing is sharper and tailored to the RFP.
60+
* Departmental analytical work that once required a full day of searching and synthesis now takes under an hour (e.g., syllabus template compatible with university requirements).
61+
* I prototype research software without needing to hire short-term RSE support.
62+
* I iterate privately before asking students or colleagues to invest time.
63+
64+
All of my successful agent specifications are hosted publicly in [academic-practice-agents](https://github.com/mdenolle/academic-practice-agents). They are open for use, critique, and iteration. This is not proprietary infrastructure; it is evolving scientific workflow design.
65+
66+
The overall cost: <$1000/year, cheaper than a single publication.
67+
68+
## On Generalism and Expertise
69+
Foundation models are extraordinary generalists. But generalism is not expertise.
70+
71+
In my own case, I am an A in geophysics, relative to the global distribution of practitioners. That depth comes from decades of training and research.
72+
73+
Across many other domains of professional and personal life (proposal supporting docs, budgeting, visual design, communication framing, multi-sponsor pitching) I operate at a B, C, or sometimes D level.
74+
75+
Base models reliably raise the floor. They do not turn me into an expert in those domains. But they elevate weak execution (D level) into competent execution (B level).
76+
77+
When enough peripheral tasks become competent and efficient, cognitive bandwidth returns: **I can think again**!
78+
79+
That bandwidth can be reinvested into deeper work and into becoming A+ somewhere new.
80+
81+
Used carefully, these systems do not replace domain expertise. They scaffold generalism. They allow experts to approximate polymathy by reducing the burden of incompetence in adjacent domains.
82+
83+
For an academic, that is a transformational advantage.
84+
85+
## What Has Changed
86+
The transformation is not that AI “writes for me.”
87+
The transformation is that I operate at a higher level more consistently.
88+
I:
89+
* Frame bigger research architectures.
90+
* Synthesize across fields more fluidly.
91+
* Move from idea to prototype faster.
92+
* Spend less time polishing language.
93+
* Spend more time mentoring students.
94+
* Build internal clarity before externalizing demands.
95+
96+
I can do more.
97+
98+
I can do it better and with intention.
99+
100+
I rely less on short-term external support for routine tasks.
101+
102+
And I free time to think more deeply.
103+
104+
## Experts Wanted!
105+
Domain expertise has become even more important.
106+
Foundation models are powerful pattern synthesizers. They hallucinate and subtly distort scientific framing. Without deep subject-matter fluency, it is easy to be misled.
107+
108+
In future posts, I will be explicit about:
109+
* Where models fail technically.
110+
* Where human judgment overrides outputs.
111+
* How context engineering improves reliability.
112+
* How it is impacting my multi-role productivity.
113+
114+
## What to Expect
115+
Each post will examine one slice of academic life:
116+
* Teaching with AI assistance
117+
* Pre-reviewing manuscripts (starting with your own!)
118+
* Structuring large interdisciplinary proposals
119+
* Designing research agents
120+
* Departmental service workflows
121+
* Mentorship in the age of foundation models
122+
* Scientific identity under automation
123+
124+
These posts are reflective field notes from active integration, not tutorials. They are open to discussion through GitHub Discussions, where you can add comments and suggestions for improvement.
125+
126+
AI is already inside scientific life. The relevant question is not whether we adopt it. The question is whether domain experts shape its integration. This blog is my attempt to shape it, in public.
127+
128+
I do not believe every scientist must integrate AI deeply into their workflow.
129+
130+
But I do believe that ignoring its leverage entirely may quietly cost us time — time that could be reinvested into the parts of science we care about most.
131+
132+

blog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ permalink: /blog/
99
<p>A running collection of informal opinion pieces on how I use agents in my work life and professional development.</p>
1010
<p>These notes are spontaneous and practice-oriented, not peer-reviewed research outputs.</p>
1111
<p><strong>Posting format:</strong> each post is a single markdown page, and can include a link to the public GitHub repository containing skills/instructions files.</p>
12+
<p><strong>Community note:</strong> to comment, open a post and click <em>Discuss this post →</em>. Discussions happen on GitHub to keep the conversation open, searchable, and collegial.</p>
1213

1314
{% assign agent_posts = site.posts | where: "series", "agents-for-academic-practice" %}
1415

0 commit comments

Comments
 (0)