Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
540 changes: 540 additions & 0 deletions docs/source/_static/css/is-this-ai.css

Large diffs are not rendered by default.

1,249 changes: 1,249 additions & 0 deletions docs/source/_static/js/is-this-ai.js

Large diffs are not rendered by default.

42 changes: 42 additions & 0 deletions docs/source/academia/is-this-ai.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
.. Author: Akshay Mestry <xa@mes3.dev>
.. Created on: 11 August, 2026
.. Last updated on: 18 August, 2026

:og:title: Is this AI?
:og:description: A completely scientific* investigation into whether (real)
humans can actually tell AI writing from human writing.
:og:type: article
:fb:title: What did you think of this idea?
:fb:description: Make your guess. Tell me why.
:fb:button: Let me know!

.. _academia-is-this-ai:

===============================================================================
:fas:`robot far` Is this AI?
===============================================================================

.. rst-class:: lead

People think they can tell AI writing from human writing, they're probably
wrong.

.. author:: @xames3
:avatar: https://avatars.githubusercontent.com/u/90549089?v=4
:target: https://github.com/xames3
:background: https://m.media-amazon.com/images/M/MV5BMzFiYjI5YWItNjUwOC00MzllLWIwODItMGE0ZWNhODJkOTA0XkEyXkFqcGc@._V1_.jpg
https://static.wikia.nocookie.net/familyguyfanon/images/0/04/Clash_for_Mayors.jpg

This is a small live experiment: gather a few people, everyone pastes in a
chunk of text, and then everyone votes on whether each piece was written by a
human or by an AI, with their optional reasons.

.. iframe::
:uid: km-css230
:api-base-url: https://func-slopcode-294281165.azurewebsites.net/api
:local-api-base-url: http://localhost:7071/api
:local-dev: false
:expected-headcount-max: 20
:file: ../assets/html/is-this-ai.html
:css: css/is-this-ai.css
:js: js/is-this-ai.js
282 changes: 282 additions & 0 deletions docs/source/assets/html/is-this-ai.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,282 @@
<!--
Peter, Is this AI? widget
==========================

Author: Akshay Mestry <xa@mes3.dev>
Created on: 12 August, 2026
Last updated on: 18 August, 2026
-->
<div class="site-is-this-ai"
id="{{ uid }}"
data-is-this-ai="true"
data-api-base-url="{{ api-base-url }}"
data-local-api-base-url="{{ local-api-base-url|default('http://localhost:7071/api') }}"
data-local-dev="{{ local-dev|default('false') }}"
data-local-dev-real-backend="{{ local-dev-real-backend|default('false') }}"
data-headcount-max="{{ expected-headcount-max }}">
<section id="{{ uid }}-phase-choice"
class="site-is-this-ai__card site-is-this-ai__card--choice">
<div class="sd-tab-set docutils">
<input checked="checked"
id="{{ uid }}-choice-tab-join"
name="{{ uid }}-choice-tab-set"
type="radio">
<label class="sd-tab-label"
for="{{ uid }}-choice-tab-join">
<span class="fas fa-users far"></span> Participants
</label>
<div class="sd-tab-content docutils">
<div class="site-is-this-ai__tab-layout">
<div class="site-is-this-ai__tab-copy">
<p class="pre-title-text rubric"
style="margin-top: 0 !important">
<span class="fab fa-alien-8bit far"></span> AI → Actual Imposter
</p>
<p class="site-is-this-ai__tab-title">Who's an AI Among Us</p>
<p class="subtitle-text">Join with a room code.</p>
</div>
<div class="site-is-this-ai__tab-form">
<div class="site-is-this-ai__field">
<input class="site-is-this-ai__input site-search__input"
id="{{ uid }}-choice-room-code"
type="text"
maxlength="5"
placeholder="Room code"
aria-label="Room code">
</div>
<div style="display: flex;
flex-direction: column">
<button class="site-is-this-ai__button"
id="{{ uid }}-choice-join"
type="button">Join room</button>
<p class="site-is-this-ai__error"
id="{{ uid }}-choice-join-error"></p>
</div>
</div>
</div>
</div>
<input id="{{ uid }}-choice-tab-host"
name="{{ uid }}-choice-tab-set"
type="radio">
<label class="sd-tab-label"
for="{{ uid }}-choice-tab-host">
<span class="fas fa-user far"></span> Host
</label>
<div class="sd-tab-content docutils">
<div class="site-is-this-ai__tab-layout">
<div class="site-is-this-ai__tab-copy">
<p class="pre-title-text rubric"
style="margin-top: 0 !important">
<span class="fab fa-alien-8bit far"></span> AI → Actual Imposter
</p>
<p class="site-is-this-ai__tab-title">Who's an AI Among Us</p>
<p class="subtitle-text">Sign in to host your own room.</p>
</div>
<div class="site-is-this-ai__tab-form">
<div id="{{ uid }}-host-login-fields">
<div class="site-is-this-ai__field">
<input class="site-is-this-ai__input site-search__input"
id="{{ uid }}-login-username"
type="text"
autocomplete="username"
placeholder="Username"
aria-label="Username">
</div>
<div class="site-is-this-ai__field">
<input class="site-is-this-ai__input site-search__input"
id="{{ uid }}-login-password"
type="password"
autocomplete="current-password"
placeholder="Password"
aria-label="Password">
</div>
<div class="site-is-this-ai__action-row">
<button class="site-is-this-ai__button"
id="{{ uid }}-login-submit"
type="button">Sign in</button>
<p class="site-is-this-ai__error site-is-this-ai__error--inline"
id="{{ uid }}-login-error"></p>
</div>
</div>
<div class="site-is-this-ai__field site-is-this-ai__field--stacked site-is-this-ai--hidden"
id="{{ uid }}-host-create-fields">
<input class="site-is-this-ai__input site-search__input"
id="{{ uid }}-choice-headcount"
type="number"
min="2"
value="3"
placeholder="Expected number of participants"
aria-label="Expected number of participants">
<button class="site-is-this-ai__button"
id="{{ uid }}-choice-create"
type="button">Create a room</button>
<p class="site-is-this-ai__error"
id="{{ uid }}-choice-host-error"></p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="{{ uid }}-phase-lobby"
class="site-is-this-ai__card site-is-this-ai--hidden">
<p class="pre-title-text rubric">
<span class="fab fa-loader far"></span> It's fun when many participate.
</p>
<section>
<h2 class="site-is-this-ai__title">Let's wait for others to join.</h2>
<p class="site-is-this-ai__lobby-count"
id="{{ uid }}-lobby-count"></p>
<ul class="site-is-this-ai__avatar-stack"
id="{{ uid }}-lobby-participants">
</ul>
<div class="site-is-this-ai__host-panel site-is-this-ai--hidden"
id="{{ uid }}-lobby-host-panel">
<button class="site-is-this-ai__button"
id="{{ uid }}-lobby-start-submission"
type="button">Start submissions</button>
<button class="site-is-this-ai__button site-is-this-ai__button--secondary"
id="{{ uid }}-lobby-stop-session"
type="button">Stop</button>
</div>
</section>
</section>
<section id="{{ uid }}-phase-submission"
class="site-is-this-ai__card site-is-this-ai--hidden">
<p class="pre-title-text rubric">
<span class="fas fa-pen-nib far"></span> Type. Edit. Paste.
</p>
<section>
<h2 class="site-is-this-ai__title">
Enter your <i style="color: hsl(var(--km-color-yellow))"><s> slop  </s></i> text.
</h2>
<p class="site-is-this-ai__subtitle">
Nobody else can see this until voting starts. You can keep editing and
resubmitting until the host starts voting.
</p>
<div class="site-is-this-ai__field">
<div class="site-is-this-ai__composer">
<textarea class="site-is-this-ai__textarea site-is-this-ai__textarea--composer"
id="{{ uid }}-submission-textarea"
placeholder="Paste or type your content here..."></textarea>
<p class="site-is-this-ai__composer-status site-is-this-ai--hidden"
id="{{ uid }}-submission-host-count"></p>
<div class="site-is-this-ai__composer-nav site-is-this-ai--hidden"
id="{{ uid }}-submission-nav">
<button class="site-is-this-ai__composer-nav-btn"
id="{{ uid }}-submission-nav-prev"
type="button"
aria-label="Previous submission">
<i class="fa-solid fa-chevron-left"></i>
</button>
<span class="site-is-this-ai__composer-nav-label"
id="{{ uid }}-submission-nav-label"></span>
<button class="site-is-this-ai__composer-nav-btn"
id="{{ uid }}-submission-nav-next"
type="button"
aria-label="Next submission">
<i class="fa-solid fa-chevron-right"></i>
</button>
</div>
<button class="site-is-this-ai__composer-submit"
id="{{ uid }}-submission-submit"
type="button"
aria-label="Submit">
<i class="fa-solid fa-arrow-up"></i>
</button>
</div>
</div>
<p class="site-is-this-ai__submission-status"
id="{{ uid }}-submission-status"></p>
<p class="site-is-this-ai__error"
id="{{ uid }}-submission-error"></p>
<div class="site-is-this-ai__host-panel site-is-this-ai--hidden"
id="{{ uid }}-submission-host-panel">
<button class="site-is-this-ai__button"
id="{{ uid }}-submission-start-voting"
type="button">Allow voting</button>
<button class="site-is-this-ai__button site-is-this-ai__button--secondary"
id="{{ uid }}-submission-stop-session"
type="button">Stop</button>
</div>
</section>
</section>
<section id="{{ uid }}-phase-voting"
class="site-is-this-ai__card site-is-this-ai--hidden">
<p class="pre-title-text rubric">
<span class="fas fa-shuffle far"></span> Guess wisely.
</p>
<section>
<h2 class="site-is-this-ai__title">Let's vote.</h2>
<p class="site-is-this-ai__swipe-instructions">
Swipe right for human, left for AI
</p>
<div id="{{ uid }}-voting-active">
<div class="site-is-this-ai__swipe-deck"
id="{{ uid }}-voting-deck">
<div class="site-is-this-ai__swipe-hint site-is-this-ai__swipe-hint--ai">
AI
</div>
<div class="site-is-this-ai__swipe-hint site-is-this-ai__swipe-hint--human">
HUMAN
</div>
</div>
<p class="site-is-this-ai__error"
id="{{ uid }}-voting-error"></p>
</div>
<div id="{{ uid }}-voting-waiting"
class="site-is-this-ai--hidden">
<p style="margin-top: 1rem">
You're done voting. Waiting for everyone else to finish...
</p>
</div>
<p class="site-is-this-ai__voting-tally"
id="{{ uid }}-voting-tally"></p>
<div class="site-is-this-ai__host-panel site-is-this-ai--hidden"
id="{{ uid }}-voting-host-panel">
<button class="site-is-this-ai__button"
id="{{ uid }}-voting-stop-session"
type="button">End</button>
</div>
</section>
</section>
<section id="{{ uid }}-phase-results"
class="site-is-this-ai__card site-is-this-ai--hidden">
<p class="pre-title-text rubric">
<span class="fas fa-trophy far"></span> Results.
</p>
<section>
<h2 class="site-is-this-ai__title">The verdict is in.</h2>
<div class="site-is-this-ai__swipe-deck site-is-this-ai__swipe-deck--results"
id="{{ uid }}-results-deck"></div>
<div class="site-is-this-ai__results-tally"
id="{{ uid }}-results-tally">
<div class="site-is-this-ai__results-tally-bar">
<div class="site-is-this-ai__results-tally-bar-fill site-is-this-ai__results-tally-bar-fill--ai"
id="{{ uid }}-results-tally-bar-ai"></div>
<div class="site-is-this-ai__results-tally-bar-fill site-is-this-ai__results-tally-bar-fill--human"
id="{{ uid }}-results-tally-bar-human"></div>
</div>
<div class="site-is-this-ai__results-tally-pills">
<span class="site-is-this-ai__results-tally-pill site-is-this-ai__results-tally-pill--ai">
<i class="fas fa-robot far"></i>
AI <b id="{{ uid }}-results-tally-ai-count">0</b>
</span>
<span class="site-is-this-ai__results-tally-pill site-is-this-ai__results-tally-pill--human">
<i class="fas fa-user far"></i>
Human <b id="{{ uid }}-results-tally-human-count">0</b>
</span>
</div>
</div>
<div class="site-is-this-ai__host-panel site-is-this-ai--hidden"
id="{{ uid }}-results-host-panel">
<button class="site-is-this-ai__button"
id="{{ uid }}-restart-session"
type="button">End session for everyone</button>
</div>
</section>
</section>
<p class="site-is-this-ai__error"
id="{{ uid }}-connection-status"></p>
<!-- <button class="site-is-this-ai__button" id="{{ uid }}-manual-resync" type="button">Refresh</button> -->
</div>
2 changes: 1 addition & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

Author: Akshay Mestry <xa@mes3.dev>
Created on: 22 February, 2025
Last updated on: 28 June, 2026
Last updated on: 12 August, 2026

This file contains the configuration settings for building my static
website using Sphinx, a popular Python documentation tool. Sphinx is a
Expand Down
4 changes: 2 additions & 2 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.. Author: Akshay Mestry <xa@mes3.dev>
.. Created on: 22 February, 2025
.. Last updated on: 28 June, 2026
.. Last updated on: 12 August, 2026

:orphan:
:og:title: Akshay's Corner
Expand Down Expand Up @@ -166,7 +166,7 @@ and my position, when asked for any help.
:titlesonly:

academia/thoughts-on-teaching
miscellany/slopcode
academia/is-this-ai

.. toctree::
:caption: Explained
Expand Down
26 changes: 0 additions & 26 deletions docs/source/miscellany/slopcode.rst

This file was deleted.

Loading
Loading