@@ -771,54 +771,189 @@ <h3 class="font-semibold mb-3">Technology Stack</h3>
771771 </ div >
772772 </ section >
773773
774- <!-- ════════ CASE STUDY: CAPSTONE ════════ -->
775- < section id ="capstone-io " class ="py-24 ">
776- < div class ="max-w-5xl mx-auto px-6 flex items-center justify-between mb-6 ">
777- < h2 class ="text-3xl font-bold text-teal-600 dark:text-teal-300 ">
778- Case Study · Capstone (I-O Psychology)
779- </ h2 >
780- < div class ="flex gap-3 ">
781- < a href ="https://docs.google.com/presentation/d/1RM04EsPeiL34__VhqWeOKPtR3FcDbnCX/edit?usp=sharing "
782- target ="_blank " rel ="noopener "
783- class ="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-gradient-to-r from-teal-600 to-cyan-600 text-white text-sm font-semibold shadow-md hover:scale-105 transition ring-1 ring-teal-500 ">
784- < i class ="ti ti-presentation text-lg "> </ i >
785- View Slideshow
786- </ a >
787- < a href ="https://drive.google.com/file/d/1ZYeAmoUZKIiaJpXmpDDLcLRNZQXHXwum/view?usp=sharing "
788- target ="_blank " rel ="noopener "
789- class ="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-gradient-to-r from-teal-600 to-cyan-600 text-white text-sm font-semibold shadow-md hover:scale-105 transition ring-1 ring-teal-500 ">
790- < i class ="ti ti-headphones text-lg "> </ i >
791- Play Podcast
792- </ a >
774+ <!-- ════════ CASE STUDY: RASPBERRY PI OFFLINE LEARNING ════════ -->
775+ < section id ="raspberry-pi-offline " class ="py-24 ">
776+ < div class ="max-w-5xl mx-auto px-6 flex items-center justify-between mb-6 ">
777+ < h2 class ="text-3xl font-bold text-teal-600 dark:text-teal-300 ">
778+ Case Study · Raspberry Pi Offline Learning
779+ </ h2 >
780+ <!-- Optional icon (replace file when available) -->
781+ < img src ="assets/raspberry-pi-icon.png " alt ="Raspberry Pi "
782+ class ="w-10 h-10 rounded-lg ring-1 ring-gray-200 dark:ring-white/10 bg-white/30 dark:bg-white/5 p-1 hidden sm:block " />
783+ </ div >
784+
785+ <!-- Intro / Outcome -->
786+ < div class ="grid md:grid-cols-3 gap-6 mb-10 ">
787+ <!-- Intro summary -->
788+ < div class ="md:col-span-2 bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/10 ">
789+ < h3 class ="font-semibold mb-2 "> Intro Summary</ h3 >
790+ < p class ="text-gray-700 dark:text-white/85 ">
791+ A self-contained, offline-first learning hub built on Raspberry Pi. Serves Kolibri LMS and Kiwix ZIM archives over a local network—no internet required.
792+ The system is Dockerized, reproducible, and versioned via GitHub Releases, with modular content updates for secure facilities.
793+ </ p >
794+ < ul class ="mt-4 space-y-2 text-gray-700 dark:text-white/80 text-sm ">
795+ < li > • Goals: accessibility in prison settings, zero-internet delivery, simple updates, and auditability.</ li >
796+ < li > • Outcomes: reproducible images, quicker field installs, controlled content curation, and low-touch maintenance.</ li >
797+ < li > • Process: multi-LLM workflow (ChatGPT ↔ Debugger LLM) with handoffs & verification checks.</ li >
798+ </ ul >
799+ </ div >
800+
801+ <!-- My Role — Context Engineer -->
802+ < div class ="bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/10 ">
803+ < h3 class ="font-semibold mb-2 "> My Role — Context Engineer</ h3 >
804+ < ul class ="space-y-2 text-sm text-gray-700 dark:text-white/80 ">
805+ < li > • Designed offline architecture, content packaging, and CI/CD release strategy.</ li >
806+ < li > • Built Docker/Packer (HCL) pipelines and GitHub Actions for artifact vs release flows.</ li >
807+ < li > • Ran cross-LLM debugging loops; authored templates for handoffs and reproducible fixes.</ li >
808+ </ ul >
809+ </ div >
793810 </ div >
794- </ div >
795-
796- < div class ="grid md:grid-cols-3 gap-6 ">
797- <!-- Summary -->
798- < div class ="md:col-span-2 bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/10 ">
799- < h3 class ="font-semibold mb-2 "> Research Summary</ h3 >
800- < p class ="text-gray-700 dark:text-white/85 ">
801- Proposed a metrics-based leadership intervention to < em > redirect</ em > authoritarian leaders’ power needs toward
802- goal attainment—testing whether this boosts employee motivation & morale in a realistic organizational setting.
811+
812+ <!-- Visuals area (placeholders until you add images) -->
813+ < div class ="grid md:grid-cols-2 gap-6 mb-10 ">
814+ < div class ="rounded-xl ring-1 ring-gray-200 dark:ring-white/10 bg-white/5
815+ shadow-md hover:shadow-2xl hover:shadow-teal-500/30
816+ transition-all duration-300 flex items-center justify-center h-64 ">
817+ < div class ="text-center text-sm text-gray-600 dark:text-white/70 ">
818+ < img src ="assets/raspberry-pi-icon.png " alt ="Raspberry Pi "
819+ class ="w-16 h-16 mx-auto mb-3 opacity-80 " />
820+ < p > Device + Classroom Topology (placeholder)</ p >
821+ </ div >
822+ </ div >
823+ < div class ="rounded-xl ring-1 ring-gray-200 dark:ring-white/10 bg-white/5
824+ shadow-md hover:shadow-2xl hover:shadow-teal-500/30
825+ transition-all duration-300 flex items-center justify-center h-64 ">
826+ < div class ="text-center text-sm text-gray-600 dark:text-white/70 ">
827+ < img src ="assets/raspberry-pi-icon.png " alt ="Raspberry Pi "
828+ class ="w-16 h-16 mx-auto mb-3 opacity-80 " />
829+ < p > Content Flow: ZIM → Kiwix → Local Wi-Fi (placeholder)</ p >
830+ </ div >
831+ </ div >
832+ </ div >
833+
834+ <!-- Offline Content & Sync Model -->
835+ < div class ="bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/10 mt-10 ">
836+ < h3 class ="font-semibold text-xl mb-4 "> Offline Content & Sync Model</ h3 >
837+ < p class ="text-gray-700 dark:text-white/85 mb-4 ">
838+ The platform packages open educational content into < b > ZIM archives</ b > for Kiwix and channels for < b > Kolibri</ b > . Content can be updated modularly without reflashing the device.
839+ For QA, ZIMs are validated with a local < code > kiwix-serve</ code > instance before being promoted to a release.
803840 </ p >
804- < ul class ="mt-4 space-y-2 text-gray-700 dark:text-white/80 text-sm ">
805- < li > • Single-group quasi-experimental design (pre / post / follow-up).</ li >
806- < li > • Validated instruments (e.g., PMI, UWES subscales); repeated-measures ANOVA.</ li >
807- < li > • Theory-driven: McClelland’s Power Needs & Self-Determination Theory.</ li >
841+ < ul class ="list-disc pl-5 space-y-2 text-sm text-gray-700 dark:text-white/80 mb-6 ">
842+ < li > < b > Kiwix:</ b > host < code > .zim</ code > archives (e.g., Wikipedia subsets, NASA pages) via < code > kiwix-serve --port=8099 content.zim</ code > .</ li >
843+ < li > < b > Kolibri:</ b > load curated channels (TED-Ed, CK-12, Khan Academy, MIT Blossoms, etc.); track learner progress offline.</ li >
844+ < li > < b > Modular updates:</ b > swap or add ZIMs/channels; keep the base system stable.</ li >
845+ < li > < b > Size strategy:</ b > separate “test artifacts” from “release images”; avoid bloating the build pipeline (160GB+ datasets kept external to CI build steps).</ li >
808846 </ ul >
847+ < div class ="grid md:grid-cols-3 gap-4 text-xs text-gray-700 dark:text-white/80 ">
848+ < div class ="p-4 rounded-xl ring-1 ring-gray-200 dark:ring-white/10 bg-white/5 ">
849+ < b > Content QA</ b >
850+ < pre class ="mt-2 whitespace-pre-wrap text-[11px] leading-4 "> kiwix-serve --port=8099 ./zim/test.zim
851+ # open http://localhost:8099 for quick checks</ pre >
852+ </ div >
853+ < div class ="p-4 rounded-xl ring-1 ring-gray-200 dark:ring-white/10 bg-white/5 ">
854+ < b > Kolibri Import</ b >
855+ < pre class ="mt-2 whitespace-pre-wrap text-[11px] leading-4 "> # via UI or CLI (kolibri manage importchannel)
856+ # test content & progress tracking fully offline</ pre >
857+ </ div >
858+ < div class ="p-4 rounded-xl ring-1 ring-gray-200 dark:ring-white/10 bg-white/5 ">
859+ < b > Release Hygiene</ b >
860+ < pre class ="mt-2 whitespace-pre-wrap text-[11px] leading-4 "> # artifacts for temporary QA
861+ # GitHub Releases for versioned images + notes</ pre >
862+ </ div >
863+ </ div >
809864 </ div >
810865
811- <!-- Role/Skills -->
812- < div class ="bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/10 ">
813- < h3 class ="font-semibold mb-2 "> My Role — Research Lead</ h3 >
814- < ul class ="space-y-2 text-sm text-gray-700 dark:text-white/80 ">
815- < li > • Built the study design, measures, and analysis plan.</ li >
816- < li > • Operationalized constructs; selected validated scales.</ li >
817- < li > • Planned data handling, ethics, and dissemination.</ li >
818- </ ul >
866+ <!-- Architecture -->
867+ < div class ="grid md:grid-cols-2 gap-6 mt-12 ">
868+ <!-- High-level Architecture -->
869+ < div class ="bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/10 ">
870+ < h3 class ="font-semibold mb-3 "> Architecture (high-level)</ h3 >
871+ < div class ="bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/10 mt-6 ">
872+ < ul class ="list-disc pl-5 space-y-2 text-sm text-gray-700 dark:text-white/80 ">
873+ < li > < b > Edge node:</ b > Raspberry Pi OS; local Wi-Fi/LAN; no WAN dependency.</ li >
874+ < li > < b > Services:</ b > Kolibri (LMS) + Kiwix (ZIM server); system services start on boot.</ li >
875+ < li > < b > Content store:</ b > external storage partition for large ZIMs/channels; hot-swappable.</ li >
876+ < li > < b > Admin flow:</ b > web UI over the local network; image upgrades via GitHub Releases.</ li >
877+ < li > < b > Security posture:</ b > minimal open ports; non-root services; secrets via env files; no telemetry by default.</ li >
878+ </ ul >
879+ </ div >
880+ </ div >
881+
882+ <!-- Tech Highlights -->
883+ < div class ="bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/10 ">
884+ < h3 class ="font-semibold mb-3 "> Tech Highlights</ h3 >
885+ < div class ="bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/10 mt-6 ">
886+ < h3 class ="font-semibold mb-3 "> Technology Stack</ h3 >
887+ < ul class ="list-disc pl-5 space-y-1 text-sm text-gray-700 dark:text-white/80 ">
888+ < li > < b > OS / Device:</ b > Raspberry Pi OS</ li >
889+ < li > < b > LMS:</ b > Kolibri</ li >
890+ < li > < b > Offline web:</ b > Kiwix + ZIM archives</ li >
891+ < li > < b > Containerization:</ b > Docker (multi-stage)</ li >
892+ < li > < b > Image build:</ b > Packer (< code > HCL</ code > ) for SD-card images</ li >
893+ < li > < b > Scripting:</ b > Bash / WSL2</ li >
894+ < li > < b > CI/CD:</ b > GitHub Actions (build, lint/tests, artifact uploads)</ li >
895+ < li > < b > Releases:</ b > GitHub Releases (versioned images, changelogs)</ li >
896+ < li > < b > LLM workflow:</ b > ChatGPT (Senior Engineer/PM) + Debugger LLM (cross-model loop)</ li >
897+ </ ul >
898+
899+ <!-- Optional CTA (keep consistent style; add real link later) -->
900+ < a href ="# "
901+ class ="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-teal-600/90 hover:bg-teal-600 text-white text-sm ring-1 ring-teal-500 mt-6 ">
902+ Release notes (coming soon)
903+ </ a >
904+ </ div >
905+ </ div >
819906 </ div >
820- </ div >
821- </ section >
907+ </ section >
908+
909+ <!-- ════════ CASE STUDY: CAPSTONE ════════ -->
910+ < section id ="capstone-io " class ="py-24 ">
911+ < div class ="max-w-5xl mx-auto px-6 flex items-center justify-between mb-6 ">
912+ < h2 class ="text-3xl font-bold text-teal-600 dark:text-teal-300 ">
913+ Case Study · Capstone (I-O Psychology)
914+ </ h2 >
915+ < div class ="flex gap-3 ">
916+ < a href ="https://docs.google.com/presentation/d/1RM04EsPeiL34__VhqWeOKPtR3FcDbnCX/edit?usp=sharing "
917+ target ="_blank " rel ="noopener "
918+ class ="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-gradient-to-r from-teal-600 to-cyan-600 text-white text-sm font-semibold shadow-md hover:scale-105 transition ring-1 ring-teal-500 ">
919+ < i class ="ti ti-presentation text-lg "> </ i >
920+ View Slideshow
921+ </ a >
922+ < a href ="https://drive.google.com/file/d/1ZYeAmoUZKIiaJpXmpDDLcLRNZQXHXwum/view?usp=sharing "
923+ target ="_blank " rel ="noopener "
924+ class ="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-gradient-to-r from-teal-600 to-cyan-600 text-white text-sm font-semibold shadow-md hover:scale-105 transition ring-1 ring-teal-500 ">
925+ < i class ="ti ti-headphones text-lg "> </ i >
926+ Play Podcast
927+ </ a >
928+ </ div >
929+ </ div >
930+
931+ < div class ="grid md:grid-cols-3 gap-6 ">
932+ <!-- Summary -->
933+ < div class ="md:col-span-2 bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/10 ">
934+ < h3 class ="font-semibold mb-2 "> Research Summary</ h3 >
935+ < p class ="text-gray-700 dark:text-white/85 ">
936+ Proposed a metrics-based leadership intervention to < em > redirect</ em > authoritarian leaders’ power needs toward
937+ goal attainment—testing whether this boosts employee motivation & morale in a realistic organizational setting.
938+ </ p >
939+ < ul class ="mt-4 space-y-2 text-gray-700 dark:text-white/80 text-sm ">
940+ < li > • Single-group quasi-experimental design (pre / post / follow-up).</ li >
941+ < li > • Validated instruments (e.g., PMI, UWES subscales); repeated-measures ANOVA.</ li >
942+ < li > • Theory-driven: McClelland’s Power Needs & Self-Determination Theory.</ li >
943+ </ ul >
944+ </ div >
945+
946+ <!-- Role/Skills -->
947+ < div class ="bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/10 ">
948+ < h3 class ="font-semibold mb-2 "> My Role — Research Lead</ h3 >
949+ < ul class ="space-y-2 text-sm text-gray-700 dark:text-white/80 ">
950+ < li > • Built the study design, measures, and analysis plan.</ li >
951+ < li > • Operationalized constructs; selected validated scales.</ li >
952+ < li > • Planned data handling, ethics, and dissemination.</ li >
953+ </ ul >
954+ </ div >
955+ </ div >
956+ </ section >
822957
823958 <!-- ════════ EDUCATION & CERTS ════════ -->
824959 < section id ="education " class ="max-w-5xl mx-auto px-6 py-24 ">
0 commit comments