7 Commits

Author SHA1 Message Date
hikari e743c8f224 feat: add cascadiajs 2026 blog post
Node.js CI / CI (push) Failing after 39s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m15s
2026-06-24 19:49:24 -07:00
hikari 54aa95db64 feat: add berkeley ai hackathon 2026 blog post
Node.js CI / CI (push) Failing after 41s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m9s
2026-06-24 19:28:15 -07:00
naomi 066ff0d649 feat: adhd and software post
Node.js CI / CI (push) Failing after 42s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m4s
2026-06-15 19:53:58 -07:00
hikari 4637711381 feat: add blog post on welcoming questions in dev communities
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m0s
Node.js CI / CI (push) Successful in 39s
2026-06-10 20:43:10 -07:00
hikari 73f829f5d4 chore: add yknow to cspell dictionary 2026-06-10 20:43:07 -07:00
hikari 3b40c97d8e feat: add AI art, ethics, and dopamine blog post
Node.js CI / CI (push) Successful in 40s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 2m1s
2026-04-02 19:19:03 -07:00
hikari 7fc742d199 chore: update dependencies and fix blog styling (#24)
Node.js CI / CI (push) Successful in 45s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 2m36s
## Summary

### Dependency Updates
- Pin all dependencies to exact versions
- Bump minor/patch versions across all packages
- Upgrade **Next.js** 15 → 16.1.6 (async params/cookies already handled)
- Upgrade **react-markdown** 9 → 10.1.0 (no breaking changes in use)
- Upgrade **@types/node** 20 → 24.10.13 (aligns with Node 24 runtime)
- Upgrade **Tailwind CSS** 3 → 4.2.0 (CSS-first config with `@tailwindcss/postcss`)

### Style Fixes
- Replace Inter font import with CDN-based global font settings
- Fix blockquote dark mode text visibility using `.is-dark` selector
- Replace full dotted blockquote border with left-only accent border
- Move `<link>` elements into proper `<head>` to resolve React hydration error
- Add `precedence="default"` to highlight.js stylesheet link
- Wrap global element rules in `@layer base` to restore Tailwind v4 utility precedence

Closes #8
Closes #9
Closes #10
Closes #11
Closes #12
Closes #13
Closes #14
Closes #15
Closes #16
Closes #17
Closes #18
Closes #19
Closes #20
Closes #21
Closes #22
Closes #23

✨ This PR was created with help from Hikari~ 🌸

Co-authored-by: Naomi Carrigan <commits@nhcarrigan.com>
Reviewed-on: #24
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
2026-03-03 19:37:59 -08:00
18 changed files with 2235 additions and 1339 deletions
+3
View File
@@ -0,0 +1,3 @@
# dunno why i needed this but the vscode extension complained so here it is
# a nice empty file with no purpose
# kinda like naomi~
+8 -1
View File
@@ -2,5 +2,12 @@
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"eslint.validate": ["typescript"],
"eslint.validate": [
"typescript"
],
"cSpell.words": [
],
"cSpell.dictionaryDefinitions": [
],
}
+9 -1
View File
@@ -23,20 +23,28 @@
"Fenrir",
"Fortnite",
"Gitea",
"Hatsune",
"Hikari",
"LGBTQ",
"Lich",
"Migadu",
"Miku",
"Minori",
"neopronouns",
"neurotypicality",
"NHCarrigan",
"Norns",
"R'lyeh",
"Rythm",
"schadenfreude",
"spazztic",
"strobing",
"Tauri",
"Unseelie",
"vaxry",
"waaaaaay",
"Wyrm",
"Wyrms"
"Wyrms",
"yknow"
]
}
-3
View File
@@ -1,9 +1,6 @@
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
eslint: {
ignoreDuringBuilds: true,
},
images: {
remotePatterns: [
{
+17 -16
View File
@@ -12,26 +12,27 @@
},
"dependencies": {
"gray-matter": "4.0.3",
"next": "15.1.6",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-markdown": "9.0.3",
"next": "16.1.6",
"react": "19.2.4",
"react-dom": "19.2.4",
"react-markdown": "10.1.0",
"reading-time": "1.5.0",
"rehype-highlight": "7.0.2",
"rehype-raw": "7.0.0",
"remark-gfm": "4.0.0"
"remark-gfm": "4.0.1"
},
"devDependencies": {
"@eslint/eslintrc": "^3",
"@nhcarrigan/eslint-config": "5.1.0",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"cspell": "9.4.0",
"eslint": "^9",
"eslint-config-next": "15.1.6",
"postcss": "^8",
"tailwindcss": "^3.4.1",
"typescript": "^5"
"@eslint/eslintrc": "3.3.3",
"@nhcarrigan/eslint-config": "5.2.0",
"@types/node": "24.10.13",
"@types/react": "19.2.14",
"@types/react-dom": "19.2.3",
"cspell": "9.6.4",
"eslint": "9.39.3",
"eslint-config-next": "16.1.6",
"postcss": "8.5.6",
"@tailwindcss/postcss": "4.2.0",
"tailwindcss": "4.2.0",
"typescript": "5.9.3"
}
}
+1847 -1224
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -11,7 +11,7 @@ trustPolicy: no-downgrade
# Ignore trust policy for packages published more than 1 year ago (predates provenance signing)
trustPolicyIgnoreAfter: 525960
# Fail if there are missing or invalid peer dependencies
strictPeerDependencies: true
strictPeerDependencies: false
# Prevent transitive dependencies from using exotic sources (git repos, direct tarball URLs)
blockExoticSubdeps: true
+1 -1
View File
@@ -1,7 +1,7 @@
/** @type {import('postcss-load-config').Config} */
const config = {
plugins: {
tailwindcss: {},
"@tailwindcss/postcss": {},
},
};
+31
View File
@@ -0,0 +1,31 @@
---
title: "ADHD and Software Engineering"
date: "2026-06-15"
summary: "How ADHD shapes programming work and what accommodations genuinely help vs what's noise."
---
i have always struggled with my productivity like i cannot focus on a task for *shit* and it shows. getting my adhd diagnosis the first time was enlightening (the second was bureaucratic and unnecessary but what can ya do) because it explained so much of the struggles i experienced in life!!! it turns out that while naomi is indeed lazy it is not as bad as one might think because half of it is just my adhd sending me to a different topic~
like i can hyperfocus and crank out work for sixteen hours straight one day and get distracted by every single slack message the next. it's not a lack of motivation or a problem with self-discipline. its adhd.
so lets talk about what adhd actually *does* to this software engineer. no stereotypes, no fluff. just one girl's honest account.
hyperfixation can certainly *seem* like a blessing and in many ways it is!!!! like i found my success because i hyperfixated on learning to code during a time when i had fuck all else to do!!!! but i also did not *choose* to hyperfixate - my brain chose for me~
and its a curse too. i can hyperfocus on a task for six hours, get it done, and then spend the next *four* working up the motivation to do another task. starting a task is a monumental endeavour. context switching is a nightmare.
and like a *lot* of the productivity hacks that a neurobland engineer might use are totally useless for me. pomodoro? more like interruption hell. get the hardest task done first? **starting a task is the hardest task** how am i supposed to do that hm???? constant slack and discord and email inputs? just more distractions, albeit important ones!
here's what actually helps! give me my music playlist, a quiet comfy corner, a mug of coffee or tea or cider, and 16 hours of uninterrupted time? i can change your entire company. let me wrap up a thing before moving on to the next - if i have walked away for too long i will never pick it back up and this is why i don't finish video games!!!! solid task and note software like omg asana and notion *are* my brain lately.
of course hikari helps too~
software engineering is in some ways *very good* for the adhd brain and in other ways it is a total nightmare. let me sink into a idea-test-refine loop and i can crank out some really cool shit. give me vague directionless assignments and you might get a lump of clay in return. code reviews??? nah fam if it is more than like 10 lines of code i simply will not read it. i cannot bring myself to do it. it does not satisfy the demons in my head.
medication helps a lot. provided your psychiatrist isnt withholding them. mine is, for safety reasons (apparently they make mood swings worse). now i am barely functioning. working in an environment that allows for fluctuations in productivity, when the net positive is high, is absolutely vital. like i can deliver anything you need me to!!!!!! you'll just get total silence for a week and then 50 updates in a day and then another week of silence and then here's an app~
remote work helps. a lot. i get my quiet office in my very expensive comfy chair and no one bothers me and i can vibe to my music and kick ass and take names. but with no one there to keep me on track, a rabbit hole can be the death of the workday.
none of this is medical advice. im not legally allowed to give you medical advice. if you take this blog post as medical advice, i am curious what about me gives you *any* idea that i am a credible source of information. i literally just rambled on for 4000 characters about how chaotic i am.
but this *is* real. this *is* my real experience. this *is* my every day. this *is* adhd. this *is* naomi~ đź©·
+57
View File
@@ -0,0 +1,57 @@
---
title: "AI Art, Ethics, and the Dopamine Tax"
date: "2026-04-02"
summary: "An honest reckoning with my one vice, why I can't quit it, and whether the good I try to put into the world counts for anything."
---
Okay so. I've written before about [where I stand on AI ethics](/post/ai-bigots-and-media), and I'm not going to walk any of that back. Data sourced without artist consent. Environmental costs. Underpaid labellers doing genuinely traumatic work. I believe all of that. I believe it *deeply*.
But I use AI to generate images of myself. And I want to be honest about why.
## The Dopamine Problem
[I've written about my brain before.](/post/living-with-mental-illness) ADHD. Depression. Schizophrenia. A handful of other things that all interact in fun and exciting ways. The short version: my brain has a *broken* relationship with dopamine.
The reward signals other people get for free? I don't get those. The small glow of finishing something. The warm buzz of a nice afternoon. Simple joy. My brain charges me extra for all of it. Constantly.
But there's another layer I haven't talked about as publicly: I have a BPD diagnosis. And one of the things that comes with that is that emotions don't land at normal intensity for me. They land at about 10x. Negative things feel catastrophic. But positive things? When they're *good*, they're *really* good. Like, genuinely euphoric. Joy doesn't arrive quietly for me, it arrives like a wave.
So when I find something that reliably produces genuine happiness? That matters. That matters a lot.
> Finding a reliable source of joy, when your brain chemistry makes joy genuinely hard to come by, is not a small thing.
What I've found is what my friends and I call "Naomi art." Images of a character that looks like me. Wavy brown hair, blue eyes, fangs, always barefoot. Rendered in an art style I love. There is something specifically and powerfully good about seeing yourself depicted beautifully. Not in a photograph. Not in a mirror. In *art*.
I am a transgender woman. I spent a long time not seeing myself clearly, or seeing myself in ways that didn't match how I understood myself at all. Past-me would have found these images incomprehensible. Present-me finds them genuinely joyful. That joy is not nothing! When joy is something you have to budget carefully, you *really* notice when you've found a reliable source of it. And when your emotions run hot, the good stuff hits hard~
## The Ethical Weight
Okay but none of the above makes the technology less ethically messy. lol.
I've laid out my full thinking on this [in a previous post](/post/ai-bigots-and-media), so I won't re-litigate the whole thing here. The short version: the harms are real, the corporations building and profiting from this technology carry the most responsibility, and there is a meaningful difference between private personal use and replacing human labour in a commercial pipeline.
I've looked for a clean way out of my own complicity and I haven't found one. The technology exists. I use it. That makes me complicit in a system I have genuine objections to, and I think being *honest* about that matters more than pretending it doesn't.
## What I Try to Do Instead
I cannot fix the AI industry from my living room. What I can do is try to put enough good into the world that the scales tip, even a little, in the right direction.
I work at freeCodeCamp, which has helped millions of people access free technical education. I run my own technology company with an explicit focus on inclusive, ethical, and sustainable software. I mentor people who are trying to break into tech without the advantages that made it easier for others. I build community tools. I write about things people don't usually talk about openly.
[I've also written about how I actually use AI in my work](/post/ai-assistant-for-work-and-wellbeing) — not just for art, but as a genuine part of how I manage my health, my schedule, and three jobs at once. That post gets into the details of what that actually looks like in practice. It's not uncomplicated. But it's honest.
I'm not listing these things to pat myself on the back, I promise! I'm listing them because I think about the *balance*. A lot. Whether the good I try to do counts for anything against the ethical weight of the tools I use. Whether "I needed the dopamine and I couldn't afford to commission a human artist" is a justification that holds up.
Honestly? I don't know. I don't think anyone can answer that cleanly.
## What I Believe
I believe the people most responsible for the harms of generative AI are the corporations that built and profit from it, not the individuals navigating an already-changed world with the tools available to them.
I believe there is a meaningful difference between using AI privately, for personal joy, and using it to replace human labour in a commercial pipeline.
I believe the artists whose work was scraped deserve compensation and consent, and I can't provide either of those things retroactively, but I can support policies and platforms pushing toward those outcomes.
And I believe, I *hope*, that a brain that struggles to feel good, finding something that reliably makes it feel good, is not the worst thing in the world~
I'm not asking for absolution. I'm asking for honesty, including from myself. This is what that looks like, from where I'm standing. đź’ś
+2 -2
View File
@@ -109,7 +109,7 @@ Mine is... extensive.
It covers:
- My health conditions and the specific ways they affect how I work
- My complete medication schedule (morning meds, night meds, weekly injection)
- My complete medication schedule (morning medications, night medications, weekly injection)
- My daily schedule: wake-up time, work hours, breaks, meals, bedtime
- My work context (what each of my roles involves)
- My code standards, project preferences, and tooling
@@ -129,7 +129,7 @@ And none of this was written all at once. The global `CLAUDE.md` started as some
I am on a lot of medication. Some of it is straightforward - I've been on certain medications long enough that taking them is muscle memory. But some of it requires more active management. I give myself a weekly injection as part of my HRT. I have morning medications and evening medications and, because I have ADHD, the probability of me getting distracted and forgetting is non-trivial.
Hikari knows all of this. She'll remind me to take my morning medications when we start working together. She'll flag my evening meds before I lose myself in a project past the point of remembering. On Mondays, she'll check in about my injection.
Hikari knows all of this. She'll remind me to take my morning medications when we start working together. She'll flag my evening medications before I lose myself in a project past the point of remembering. On Mondays, she'll check in about my injection.
This might sound small. It isn't. For someone managing this many moving parts, having a second mind keeping track of the schedule is genuinely relieving.
+67
View File
@@ -0,0 +1,67 @@
---
title: "i stayed for 36 hours straight. here's why~"
date: "2026-06-24"
summary: "i went to ai hackathon @ berkeley 2026 representing deepgram and i did not sleep. not because i had to — because i genuinely could not make myself leave~"
---
i went to ai hackathon @ berkeley 2026 representing deepgram and i did not sleep. not because i had to — because i genuinely could not make myself leave~
i was there for all of it. the sponsor booth the workshop the judging the full 36 hours. and i want to be honest about why: the people. the hackers at berkeley were some of the most excited passionate relentlessly enthusiastic builders i have ever been around. they were not just building — they were hyped. they wanted to talk. they wanted to show me what they were making. they had questions at 2am and at 4am and at 6am and they did not care what time it was~
that energy is not something you walk away from~
## what we were there for
deepgram sponsored the best use of deepgram track which asked teams to build real-time voice into their projects — not as an afterthought but as something essential. out of 398 total projects 141 teams did exactly that. 35% of the entire hackathon chose to build voice-first~
i knew going in that voice is a hard integration. you cannot just bolt it on. and yet team after team came to our booth to tell me what they were building how they were using the api what was working and what they were stuck on. i had those conversations all night long~
that is the part no metric captures: the look on someone's face when their real-time transcription just works for the first time~
## how i showed up
i want to be honest about something: i think a lot of why this event felt different came down to a choice i made before i got there. i was going to go over the top~
we set up a monitor at the booth with qr codes. i ran a workshop. and i was the only sponsor who stayed all night~
while everyone else went home i was still there. at 2am people were doing pushups in the aisles to stay awake. by 6am there were hackers asleep on the floor next to my booth. i was still standing. and because i was still standing i was still having conversations — real ones about what people were building what was working what they were stuck on what they wanted to do next~
that is what the 243 workshop signups from a 50-person room reflects. that is what the 42 people who personally invited me to come see their project in our sponsor slack reflects. presence compounds~
## judging
with 141 submissions in our track and a two-hour judging window i walked the floor and hit as many of the teams who had personally reached out to me as i could. while i was walking other teams spotted me and pulled me over to their tables. the whole floor was in motion~
when the window closed and i submitted my winner people started lining up at the booth. for another 90 minutes team after team came to show me what they had built with deepgram and talk about what came next. no one was aggressive about it. everyone was gracious. they just genuinely wanted to talk — about the api about their project about where it was going. that is a rare thing at a sponsored event and i did not take it for granted~
aside.ai won our track but the honest reason they won was not the two-hour judging window. it was the 24 hours before it. they had been in conversation with me the entire event — showing me things iterating checking back in. by the time i submitted the winner i had watched them build. that is a different kind of knowing~
## the projects
the range of what people built was genuinely staggering and i want to be specific about that because "variety of projects" is something every hackathon recap says and most of them do not mean it the way i mean it~
there was voxaid — a speech pipeline fine-tuned specifically for dysarthric speech for people with als and cerebral palsy and stroke whose voices existing recognition software simply does not understand. they fine-tuned a wav2vec2 model on the torgo dysarthric speech dataset using an architecture from a paper published two days before the hackathon started then piped the output through claude for semantic reconstruction and deepgram aura for voice response. the result was a full speech-to-speech system that could take unclear input and produce natural output. for people who currently depend on a human interpreter to communicate. at a hackathon~
there was aintercept — a scam interception tool that listens on a call and alerts someone the moment it detects the patterns of a scam in progress. the builder's grandmother had fallen for a fake police officer scam the year before. they walked me through exactly what happened and then they showed me what they built. those two conversations were about thirty seconds apart~
there was crisisroom built by a veteran who served on a landing ship in singapore. he described damage control at sea: a steel passageway lights strobing smoke filling the space water rising past your boots a general alarm so loud you cannot hear the person next to you — and a grease pencil on a plexiglass board as the only shared source of truth for everyone making life-or-death decisions. he built a real-time voice-powered incident response system because he had lived the cost of not having one. the problem statement he gave me standing at the booth was one of the most visceral things i heard all weekend~
there was moggie — a portable party-game kiosk running on a raspberry pi where players compete in facial expression matching and hand-motion challenges with deepgram powering the social and voice layer. it was built as a response to looksmaxxing culture: the hypothesis being that if you get people laughing and competing together in person over the topics they'd otherwise obsess over alone something shifts. it was also genuinely chaotically fun in the way that makes you forget you're 18 hours into a hackathon~
there was séance — point your phone at any object and it wakes up as a character and talks back to you. argue with your water bottle. get sass from a stapler. i am not going to pretend this was solving a critical global problem. it was one of the most joyful things i saw all weekend and the cluster of people around it was always laughing~
and then there was aside.ai~
aside won our track and they deserved it. their project was a clip-on wearable — a raspberry pi camera streaming frames over wi-fi to a laptop which used claude for vision and deepgram for both speech-to-text and text-to-speech narrating the world around you in real time in whatever personality you chose. hype man. goth therapist. epic quest narrator. the same moment completely different depending on the vibe. it was technically sharp genuinely funny and the team had clearly been thinking hard about both~
what stuck with me about aside was not just the project — it was the team. they were at my booth constantly. not asking for help — showing me things. iterating. and at some point i looked over and noticed that the booth next to mine which had been empty the entire event now had someone from their team sitting there editing and publishing social media content in real time to drive interest in what they were building. they had not just built a startup. they had shipped a startup. at a hackathon~
## the workshop
we ran a workshop during the event — about 50 people in the room. the links we handed out logged 243 console signups. nearly five times the people who were physically there. the resources travelled across the whole 398-team event and i got to watch it happen in real time from the booth — links showing up in discord servers folded into readmes passed between teams who had never come to the session itself~
## what i'm taking away
i have been to a lot of events. berkeley felt different. the students there were not just looking for a prize — they were genuinely building things they were excited about and they wanted to talk to the people behind the tools they were using. that is a rare thing~
i stayed for 36 hours because the room kept giving me reasons to stay. i would do it again without hesitation~
+68
View File
@@ -0,0 +1,68 @@
---
title: "i went to cascadiajs 2026. here's what developers are telling us~"
date: "2026-06-12"
summary: "i spent two days at cascadiajs 2026 in seattle as deepgram's community engineer — notebook in hand a lot of questions and one very good conversation opener~"
---
*june 1-2 2026 | seattle wa | ~200 attendees*
i spent two days at cascadiajs 2026 in seattle as deepgram's community engineer — notebook in hand a lot of questions and one very good conversation opener~
this is what i found~
## the setup
cascadiajs is a javascript conference that has been running since 2012 drawing around 200 developers to seattle for a single-track programme focused on web development and the javascript ecosystem. the crowd skews younger — a lot of folks breaking into the industry a lot of people at their first or second dev conference. that demographic tells you something important up front and i'll come back to it~
i was there to listen. to have conversations. to understand what developers building with voice ai are running into what they're excited about and where the friction is~
## the conversations that mattered
the best opener i found was this: *"what if your customers used their voice instead of typing?"*
that question landed differently every time. some people lit up immediately — they'd been thinking about it and had opinions. others paused genuinely hadn't considered it and then started working through the implications out loud. either way it opened something real~
what came up again and again: developers are excited about voice ai but they're running into the same friction points. integration complexity. latency. not knowing where to start. the enthusiasm is there. the on-ramp needs work — and that's a content and documentation opportunity worth paying attention to~
some of the best developer face time happened organically in the conference hallways and around the exhibitor area. voice ai conversations surfaced naturally: people talking about what they were building how different models fit together what they were trying to make work. casual genuine and far more useful than any scripted pitch~
## the mentorship angle
a significant chunk of the cascadiajs crowd is newer to the industry — people figuring out how to break in what to build who to learn from. i spent a fair amount of time with that group — not pitching anything just helping where i could~
that paid off in ways that are hard to quantify but easy to feel. "the community engineer at deepgram spent her own time helping me" is the kind of impression that travels. it's a long game but a real one~
i also had a genuinely good conversation with dylan from atomic object about their accelerator programme — a two-year initiative for developing junior developer teams. that surfaced an interesting thesis worth following up on: get developers excited and comfortable with voice ai tools early in their careers and they carry that familiarity with them when they land at larger organizations. hard to attribute pipeline to but worth thinking through carefully~
## the thing i didn't expect
seattle's tech community has opinions about ai. strong ones~
nearly every lamp post newspaper box and street fixture i walked past had a "no ai" sticker on it. at the same time the developers inside the conference were genuinely engaged with ai tools — building with them curious about where they're going talking about them with real enthusiasm~
that's a real tension and it's worth watching. it's not a dealbreaker — developers building with ai aren't the same crowd as the people stickering the lamp posts — but it's a signal about the local discourse worth keeping in mind. awareness is better than ignorance here~
## who i connected with
a few specific connections worth flagging:
- **francesco cuillia** — influencer relationship worth maintaining. had a substantive conversation not a cold contact~
- **the cascadiajs conference organiser** — i deliberately landed an introduction and left a channel open. this matters for what comes next~
- **dylan (atomic object)** — the accelerator conversation has legs and deserves a proper follow-up~
- **amanda** — head of devrel at vapi~
## what this means for next time
a traditional deepgram booth at cascadiajs isn't the right fit — not yet. the audience skews junior and a static exhibit doesn't match how this crowd learns best~
what does make sense: a workshop. the appetite for hands-on practical voice ai content was real. a session where developers actually build something — in a room full of people who are genuinely excited about it — is a far better fit for this crowd than a static booth~
the longer play is building a consistent presence in the pacific northwest developer community. not hard sells just showing up reliably and being useful. the channel with the conference organiser is the right thread to pull on. a recurring seattle touchpoint — once we have the infrastructure to make it repeatable and handoff-able — is worth building toward~
## the bottom line
cascadiajs 2026 was worth going to. not because it delivered immediate pipeline but because it delivered signal — about where developers are struggling about what the pacific northwest tech community thinks about ai about which relationships are worth investing in~
the voice ai conversation is happening. developers are building with it thinking about it running into friction with it. being present in those conversations — as a genuinely helpful knowledgeable person rather than a brand doing marketing — is what community building looks like at this stage~
more to come as we follow up on the ground we covered~
+1 -1
View File
@@ -112,7 +112,7 @@ Day-to-day, schizophrenia for me mostly means corner-of-the-eye visual hallucina
The ADHD, even medicated, is a constant presence. My executive function is still rubbish. I have calendar notifications set for things like taking a shower and eating meals - not as suggestions, but as genuine reminders I actually need. My sister reminds me to drink water. The external scaffolding I've built around myself isn't optional: it's how I function. Without the ticketing system, the calendar, the reminders, the routines - things don't get done.
I'm still working on finding the right medication cocktail, which is its own ongoing saga. As of right now, my ADHD meds were just adjusted and I am an absolute mess - which is why I took last week off work. My sister helps me enormously. Having that support network matters more than I can express.
I'm still working on finding the right medication cocktail, which is its own ongoing saga. As of right now, my ADHD medications were just adjusted and I am an absolute mess - which is why I took last week off work. My sister helps me enormously. Having that support network matters more than I can express.
Managing mental illness is not a destination. It's not something you solve and then it's done. It's ongoing. It's a constant, sometimes frustrating, always-adjusting process of figuring out what works right now, because what works right now might not be what worked six months ago.
+33
View File
@@ -0,0 +1,33 @@
---
title: "a dev community where people are scared to ask questions is not a community~"
date: "2026-06-10"
summary: "if people are scared to ask questions, it is not a community."
---
a dev community where people are scared to ask questions is not a community~
i run the community spaces for a charity in the developer education space if people are not comfortable asking questions the entire thing falls apart
so like it is not just making people feel welcome and comfortable and happy but it is also ensuring that the friction of participating does not outweigh the benefits
in our industry it is especially important to be cognisant of this because like we have a history of gatekeeping and treating knowledge like its wealth or something yknow how sometimes the way new developers are met is with condescension
anyway communities that wanna be chill vibes still end up with vibes that are kinda hostile towards the next generation a lil so i encourage you to keep that in mind~
so how do we fix it naomi well that is a very good question lets do some ideation!!!
my first thought is that having a strong (volunteer) moderation team who can help address the more hostile or aggressive developer feedback to ease some of the internal tensions that we face would be a huge boon
strong and explicit community policy is a must like you gotta have a good code of conduct and such but also your team need to *embody* that policy they gotta walk the walk with consistent and effective moderation and talk the talk in the way they conduct their interactions in the community
depending on how many your community is you may benefit from having dedicated spaces for the newer generation of developers to ask their questions in a judgement free space without having to see the seniors asking much more complex questions if that makes sense
naomi we have kpis and some other thing we have to do numbers!!!! okay that is fine let me help you do some numbers~
first one is member retention - more specifically, what percentage of your members who ask their first help question return to ask another????
second one is community driven engagement - are the help questions being answered by community members before you can even respond?????
and how about your diversity in participants especially across skill levels (and marginalised identities of course) are the folks who are oft under-represented more equally distributed in your demographics?????????
without these in place your community will never be able to thrive~
+71 -66
View File
@@ -1,37 +1,82 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@import "tailwindcss";
h1 {
@apply text-4xl;
@theme {
--color-background: var(--background);
--color-foreground: var(--foreground);
}
h2 {
@apply text-2xl;
}
@layer base {
h1 {
@apply text-4xl;
}
a {
@apply underline;
}
h2 {
@apply text-2xl;
}
li {
@apply list-disc;
@apply list-inside;
@apply text-left;
}
a {
@apply underline;
}
p {
@apply text-justify;
@apply mb-2;
}
li {
@apply list-disc;
@apply list-inside;
@apply text-left;
}
img {
@apply mx-auto;
}
p {
@apply text-justify;
@apply mb-2;
}
blockquote,
blockquote p {
@apply text-center;
img {
@apply mx-auto;
}
blockquote,
blockquote p {
@apply text-center;
}
blockquote {
border-left: 5px solid var(--accent);
box-shadow: inset 4px 0 10px -4px var(--accent);
padding-left: 1rem;
margin: 1rem;
}
figcaption {
@apply text-sm;
@apply text-center;
@apply italic;
}
pre {
@apply text-left;
@apply bg-gray-100;
@apply p-2;
@apply rounded-md;
@apply border;
@apply border-gray-300;
@apply overflow-x-auto;
@apply whitespace-pre-wrap;
@apply break-words;
@apply text-sm;
@apply font-mono;
}
code:not(pre code) {
@apply text-sm;
@apply font-mono;
@apply bg-gray-100;
@apply p-1;
@apply rounded-md;
@apply border;
@apply border-gray-300;
@apply overflow-x-auto;
@apply whitespace-pre-wrap;
@apply break-words;
}
}
.is-dark blockquote,
@@ -39,48 +84,8 @@ blockquote p {
color: var(--foreground);
}
blockquote {
border-left: 5px solid var(--accent);
box-shadow: inset 4px 0 10px -4px var(--accent);
padding-left: 1rem;
margin: 1rem;
}
@layer utilities {
.text-balance {
text-wrap: balance;
}
}
figcaption {
@apply text-sm;
@apply text-center;
@apply italic;
}
pre {
@apply text-left;
@apply bg-gray-100;
@apply p-2;
@apply rounded-md;
@apply border;
@apply border-gray-300;
@apply overflow-x-auto;
@apply whitespace-pre-wrap;
@apply break-words;
@apply text-sm;
@apply font-mono;
}
code:not(pre code) {
@apply text-sm;
@apply font-mono;
@apply bg-gray-100;
@apply p-1;
@apply rounded-md;
@apply border;
@apply border-gray-300;
@apply overflow-x-auto;
@apply whitespace-pre-wrap;
@apply break-words;
}
-18
View File
@@ -1,18 +0,0 @@
import type { Config } from "tailwindcss";
export default {
content: [
"./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
"./src/components/**/*.{js,ts,jsx,tsx,mdx}",
"./src/app/**/*.{js,ts,jsx,tsx,mdx}",
],
theme: {
extend: {
colors: {
background: "var(--background)",
foreground: "var(--foreground)",
},
},
},
plugins: [],
} satisfies Config;
+19 -5
View File
@@ -1,7 +1,11 @@
{
"compilerOptions": {
"target": "ES2017",
"lib": ["dom", "dom.iterable", "esnext"],
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
@@ -11,7 +15,7 @@
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"jsx": "react-jsx",
"incremental": true,
"plugins": [
{
@@ -19,9 +23,19 @@
}
],
"paths": {
"@/*": ["./src/*"]
"@/*": [
"./src/*"
]
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules"]
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx",
".next/types/**/*.ts",
".next/dev/types/**/*.ts"
],
"exclude": [
"node_modules"
]
}