Plan: Transitioning to Forward Deployed Engineer / AI Engineer
백엔드 엔지니어가 FDE·AI 엔지니어로 전환하기 위한 단계별 로드맵
주어진 용액 부피에 대한 탈수 배지 질량을 계산하는 미생물학 학생용 인터랙티브 연습 도구
An interactive practice tool for microbiology students learning to calculate dehydrated media masses for a given volume of solution.
교육JavaScript · CSSGitHub @CalebHendren온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A simple practice problem generator for media preparation in microbiology
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A self-contained web app that drills microbiology students on the math behind preparing dehydrated culture media. Students see a randomized problem, get three attempts to enter the correct mass in grams, and on either success or failure are shown a full step-by-step ratio-and-proportion solution.
Built for Preliminary Microbiology lab instruction. Drop it on GitHub Pages and share the link — no server, no build step, no dependencies.
Once deployed, the app lives at: https://calebhendren.github.io/mediacalc/
x g / V mL = gPerL g / 1 L, the unit conversion, the cross-multiplication, and the final 2-decimal-place answer.role="math" and a plain-English aria-label so screen readers describe the math instead of trying to parse the visual fraction layout.prefers-reduced-motion respected.The student's input is parsed as a number and compared to the true answer with a tolerance of ±0.02 g (configurable). This is loose enough to accept either round-half-up or round-half-down at the 2-decimal place, but tight enough that random guesses fail.
For example, for 1635 mL of MSA the exact answer is 181.485 g. Any of the following is accepted:
.
├── index.html # Markup only — no inline CSS or JS
├── css/
│ └── styles.css # All styles
├── js/
│ ├── config.js # Media list and tunable constants — edit this
│ ├── utils.js # Formatting and random helpers
│ ├── question.js # Random question generation
│ ├── solution.js # Worked-solution HTML builder
│ ├── calculator.js # On-screen calculator widget
│ └── app.js # Entry point — wires everything together
└── README.md
The JS is loaded as native ES modules (<script type="module">), which every browser shipped in the last several years supports. There is still no package.json, no bundler, no build step.
Everything you might want to change lives in a single file: js/config.js.
export const MEDIA = [
{ name: 'nutrient agar', gPerL: 23 },
{ name: 'tryptic soy agar', gPerL: 40 },
{ name: 'citrate agar', gPerL: 24 },
{ name: 'MacConkey agar', gPerL: 50 },
{ name: 'mannitol salt agar', gPerL: 111 }
];
name is rendered directly in the problem text. Use the spelling and capitalization you want students to see (the app capitalizes the first letter at the start of a sentence).gPerL is grams of dehydrated powder per 1 L of finished medium.These default values reflect common Difco/BD formulations; verify against your own manufacturer's label before using in the actual lab.
| Constant | Default | What it controls |
|---|---|---|
COMMON_VOLUMES_ML | [100, 150, 200, 250, 300, 400, 500, 600, 750, 1000, 1500, 2000] | The "clean" classroom volumes used 75% of the time. |
COMMON_VOLUME_PROBABILITY | 0.75 | Probability (0–1) of picking from COMMON_VOLUMES_ML instead of the random range. |
RANDOM_MIN_ML / RANDOM_MAX_ML / RANDOM_STEP_ML | 100 / 2000 / 5 | Random-volume range and step size in mL. |
ANSWER_TOLERANCE_G | 0.02 | Maximum allowed error in grams when grading a student's answer. |
ATTEMPTS_PER_QUESTION | 3 | Number of guesses before the solution is revealed. The pip indicator scales to match. |
No other file needs to change. The footer count, attempts pip count, and grading tolerance all derive from these values at runtime.
Because the app uses ES modules, opening index.html directly via file:// will be blocked by the browser's module CORS rules. Run it through a local static server instead:
# Python 3
python3 -m http.server 8000
# Node (with npx, no install needed)
npx serve .
Then visit http://localhost:8000.
main branch and the / (root) folder.https://calebhendren.github.io/<repo-name>/.GitHub Pages serves the files over HTTPS, so the ES modules load with no extra configuration. No build step or GitHub Actions required.
Tested on current versions of Chrome, Safari, Firefox, and Edge, on both desktop and mobile. The app uses no build tooling and no transpilation; it relies on ES2017+ features and native ES modules, which every browser released since 2018 supports.
This app is intended for use in higher-education courses and aims to meet WCAG 2.1 Level AA.
<label> associations, validation messages are surfaced via an ARIA live region, and equation blocks expose plain-English descriptions for screen readers.If you find an accessibility issue, please open an issue on the repository.
MIT. Use it, modify it, share it with your students.