[{"data":1,"prerenderedAt":664},["ShallowReactive",2],{"site-index":3,"projects":30},{"id":4,"title":5,"body":6,"description":5,"extension":12,"meta":13,"navigation":25,"path":26,"seo":27,"stem":28,"__hash__":29},"content\u002Findex.md","",{"type":7,"value":8,"toc":9},"minimark",[],{"title":5,"searchDepth":10,"depth":10,"links":11},2,[],"md",{"nav":14,"about":16,"footer":22},{"brand":15},"joebacal.work",{"name":17,"bio":18,"resume":19,"linkedin":20,"github":21},"Joe Bacal","Education-centered software engineering and design","\u002Fjoe-bacal-resume.pdf","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjoebacal\u002F","https:\u002F\u002Fgithub.com\u002Fbacalj",{"left":23,"email":24},"© 2026 Joe Bacal","joe@inventionplayground.app",true,"\u002F",{"description":5},"index","GC_GzeVbxjzhQupo192rnzZ1pSc-968QcPlViC7zang",[31,65,96,150,167,193,218,262,277,305,330,346,375,402,417,432,447,471,491,577,592,625,640],{"id":32,"title":33,"body":34,"craft":42,"desc":44,"description":39,"draft":45,"extension":12,"gallery":46,"image":49,"link_to_github":50,"link_to_project":51,"meta":52,"navigation":25,"order":53,"path":54,"seo":55,"stem":56,"tech":57,"type":62,"year":63,"__hash__":64},"projects\u002Fprojects\u002Faccess.md","ACCESS Question & Answer Bot",{"type":7,"value":35,"toc":40},[36],[37,38,39],"p",{},"I built the front-end ecosystem around a core, wrappable bot, and I'm contributing to the underlying agent — a LangGraph system that combines MCP tools, RAG endpoints, and imperative actions so researchers can look up information, manage allocations, or file support tickets.",{"title":5,"searchDepth":10,"depth":10,"links":41},[],[43],"Engineering","Working with a small team on a LangGraph agent and chat interface for researchers using NSF ACCESS supercomputing resources.",false,[47,48],"\u002Fprojects\u002Faccess-1778589216297.jpg","\u002Fprojects\u002Faccess-1778589216298.jpg","\u002Fprojects\u002Faccess.jpg","https:\u002F\u002Fgithub.com\u002Fnecyberteam\u002Fqa-bot-core","https:\u002F\u002Fsupport.access-ci.org\u002F",{},1,"\u002Fprojects\u002Faccess",{"title":33,"description":39},"projects\u002Faccess",[58,59,60,61],"LangGraph","Python","Postgres","React","client",2025,"FQLgoJnpU-gL96KpDH0d-0N8CKh4x8y1pFUcLrQ5eBo",{"id":66,"title":67,"body":68,"craft":75,"desc":78,"description":72,"draft":45,"extension":12,"gallery":79,"image":82,"link_to_github":83,"link_to_project":84,"meta":85,"navigation":25,"order":86,"path":87,"seo":88,"stem":89,"tech":90,"type":93,"year":94,"__hash__":95},"projects\u002Fprojects\u002Factive.md","Active Reading Cards",{"type":7,"value":69,"toc":73},[70],[37,71,72],{},"I ran Active Reading Cards with my own students as an informal pilot. The design calls for an interactive element before each reading; in practice, even simple wordless slideshows in that slot worked well, building the schema and curiosity that prime a reader before they begin.",{"title":5,"searchDepth":10,"depth":10,"links":74},[],[76,43,77],"Design","Concept","Active Reading Cards supports authentic reading comprehension by helping students build mental models and questions through play before reading. A prototype, used with students in my own classroom.",[80,81],"\u002Fprojects\u002Factive-1778589060112.jpg","\u002Fprojects\u002Factive-1779038890801.jpg","\u002Fprojects\u002Factive.jpg","https:\u002F\u002Fgithub.com\u002Fbacalj\u002Farctree-app","https:\u002F\u002Factivereadingcards.com\u002F",{},9,"\u002Fprojects\u002Factive",{"title":67,"description":72},"projects\u002Factive",[91,92],"Nuxt","Firebase","personal",2022,"USgSz04tpG2RGvHFNjHRIzR7956AtKWjbBouvGWYZC4",{"id":97,"title":98,"body":99,"craft":131,"desc":132,"description":103,"draft":25,"extension":12,"gallery":133,"image":136,"link_to_github":137,"link_to_project":138,"meta":139,"navigation":25,"order":140,"path":141,"seo":142,"stem":143,"tech":144,"type":137,"year":148,"__hash__":149},"projects\u002Fprojects\u002Fcamp-cummington.md","Camp Cummington",{"type":7,"value":100,"toc":129},[101,104],[37,102,103],{},"Camp Cummmington is a dog daycare in Cummington Massachuetts. This 100% bespoke application includes:",[105,106,107,111,114,117,120,123,126],"ol",{},[108,109,110],"li",{},"Client log in and booking",[108,112,113],{},"Transportation logistics planning",[108,115,116],{},"Dog data management",[108,118,119],{},"Booking management",[108,121,122],{},"Invoicing and billing with Stripe integration",[108,124,125],{},"Client communication",[108,127,128],{},"Admin reporting",{"title":5,"searchDepth":10,"depth":10,"links":130},[],[77,76,43],"Complete booking and payment management system and marketing site",[134,135],"\u002Fprojects\u002Fcamp-cummington-1777983499582.jpg","\u002Fprojects\u002Fcamp-cummington-1777983515563.jpg","\u002Fprojects\u002Fcamp-cummington.jpg",null,"https:\u002F\u002Fwww.campcummington.com\u002F",{},4,"\u002Fprojects\u002Fcamp-cummington",{"title":98,"description":103},"projects\u002Fcamp-cummington",[145,146,91,147],"Supabase","Squarespace","Stripe",2026,"SGj6-6TboT_3r_xAjjlrVNCiXj2exONAjqyN9Q19J5k",{"id":151,"title":152,"body":153,"craft":157,"desc":5,"description":5,"draft":25,"extension":12,"gallery":158,"image":137,"link_to_github":137,"link_to_project":137,"meta":159,"navigation":25,"order":160,"path":161,"seo":162,"stem":163,"tech":164,"type":137,"year":165,"__hash__":166},"projects\u002Fprojects\u002Fcat-in-the-hat-legos.md","Cat in the Hat + Legos",{"type":7,"value":154,"toc":155},[],{"title":5,"searchDepth":10,"depth":10,"links":156},[],[],[],{},99,"\u002Fprojects\u002Fcat-in-the-hat-legos",{"title":152,"description":5},"projects\u002Fcat-in-the-hat-legos",[],2012,"HCHFaWQwx-K4wDJrRJTWp9_cb5TWD3fktW9NgUHu6CA",{"id":168,"title":169,"body":170,"craft":177,"desc":178,"description":174,"draft":45,"extension":12,"gallery":179,"image":182,"link_to_github":183,"link_to_project":184,"meta":185,"navigation":25,"order":186,"path":187,"seo":188,"stem":189,"tech":190,"type":93,"year":191,"__hash__":192},"projects\u002Fprojects\u002Fchallenge.md","Challenge Galaxy",{"type":7,"value":171,"toc":175},[172],[37,173,174],{},"Each challenge is a small project prompt (make a maze, catch an egg, use the webcam), with hints students can reveal if they get stuck. A gallery lets them share solutions.",{"title":5,"searchDepth":10,"depth":10,"links":176},[],[77,76,43],"ChallengeGalaxy is a repository of open-ended programming challenges for people to complete in Scratch. ",[180,181],"\u002Fprojects\u002Fchallenge-1778588800484.jpg","\u002Fprojects\u002Fchallenge-1778588807643.jpg","\u002Fprojects\u002Fchallenge.jpg","https:\u002F\u002Fgithub.com\u002Fbacalj\u002Fchallengegalaxy","https:\u002F\u002Fwww.challengegalaxy.com\u002F",{},7,"\u002Fprojects\u002Fchallenge",{"title":169,"description":174},"projects\u002Fchallenge",[91],2021,"YpMvYqQu0oeM_tVDXZzCJjwRCdrep0kxCcasxU7amYI",{"id":194,"title":195,"body":196,"craft":203,"desc":204,"description":200,"draft":45,"extension":12,"gallery":205,"image":207,"link_to_github":208,"link_to_project":137,"meta":209,"navigation":25,"order":210,"path":211,"seo":212,"stem":213,"tech":214,"type":62,"year":216,"__hash__":217},"projects\u002Fprojects\u002Fconcord-microbit-network.md","Networked Micro:bits",{"type":7,"value":197,"toc":201},[198],[37,199,200],{},"Students used the paired micro:bits as networked sensors and actuators — one device reading the world, another responding over radio. I designed the circuits, wrote the firmware, and built the programming blocks in Concord's Dataflow environment so kids could program the setup directly.",{"title":5,"searchDepth":10,"depth":10,"links":202},[],[],"A classroom electronics design unit for middle-schoolers at Concord Consortium, using paired BBC micro:bits over radio.",[206],"\u002Fprojects\u002Fconcord-microbit-network-1778530295313.jpg","\u002Fprojects\u002Fconcord-microbit-network.jpeg","https:\u002F\u002Fgithub.com\u002Fconcord-consortium\u002Fcollaborative-learning\u002Fpull\u002F1665",{},31,"\u002Fprojects\u002Fconcord-microbit-network",{"title":195,"description":200},"projects\u002Fconcord-microbit-network",[215,61],"micro:bit",2017,"4TxxDhu1nP0EKjTvtlsjXd6jjTNO1DmVddj6lBNBhtw",{"id":219,"title":220,"body":221,"craft":243,"desc":245,"description":225,"draft":45,"extension":12,"gallery":246,"image":250,"link_to_github":251,"link_to_project":252,"meta":253,"navigation":25,"order":254,"path":255,"seo":256,"stem":257,"tech":258,"type":62,"year":216,"__hash__":261},"projects\u002Fprojects\u002Fconcord-neural-curriculum.md","Neural Engineering Curriculum",{"type":7,"value":222,"toc":241},[223,226],[37,224,225],{},"Middle-schoolers built and programmed Arduinos with sensors and actuators to model neural systems. My contributions:",[227,228,229,232,235,238],"ul",{},[108,230,231],{},"Programming environment for kids to control Arduinos with sensors and actuators",[108,233,234],{},"On-screen simulation modeling the physical system",[108,236,237],{},"Working Lego prototype",[108,239,240],{},"Assembled classroom kits",{"title":5,"searchDepth":10,"depth":10,"links":242},[],[76,43,244],"Writing","NSF-funded neural engineering curriculum, built with the University of Connecticut and the Concord Consortium.",[247,248,249],"\u002Fprojects\u002Fconcord-neural-curriculum-1778528898511.gif","\u002Fprojects\u002Fconcord-neural-curriculum-1778529260922.jpg","\u002Fprojects\u002Fconcord-neural-curriculum-1778530166491.gif","\u002Fprojects\u002Fconcord-neural-curriculum.gif","https:\u002F\u002Fgithub.com\u002Fconcord-consortium\u002Fcollaborative-learning\u002Fpull\u002F2246","https:\u002F\u002Fcollaborative-learning.concord.org\u002F?unit=brain&problem=3.2&domain=https%3A%2F%2Flearn.concord.org%2F&domain_uid=1016229",{},30,"\u002Fprojects\u002Fconcord-neural-curriculum",{"title":220,"description":225},"projects\u002Fconcord-neural-curriculum",[259,260,61],"C++","Arduino","0EYBmW2YA6WxJcEOXDH5Vpsinc9PaAn8xprmVhHIuJc",{"id":263,"title":264,"body":265,"craft":269,"desc":5,"description":5,"draft":25,"extension":12,"gallery":270,"image":137,"link_to_github":137,"link_to_project":137,"meta":271,"navigation":25,"order":160,"path":272,"seo":273,"stem":274,"tech":275,"type":137,"year":63,"__hash__":276},"projects\u002Fprojects\u002Fcsv-asker-free.md","csv-asker (free tier)",{"type":7,"value":266,"toc":267},[],{"title":5,"searchDepth":10,"depth":10,"links":268},[],[],[],{},"\u002Fprojects\u002Fcsv-asker-free",{"title":264,"description":5},"projects\u002Fcsv-asker-free",[],"7NxVEaCcHkB9dKIRHNzzALyaGLZ56d8zLIhR8xHth5M",{"id":278,"title":279,"body":280,"craft":287,"desc":288,"description":284,"draft":45,"extension":12,"gallery":289,"image":293,"link_to_github":137,"link_to_project":294,"meta":295,"navigation":25,"order":296,"path":297,"seo":298,"stem":299,"tech":300,"type":93,"year":303,"__hash__":304},"projects\u002Fprojects\u002Fdigital-block-area.md","Digital Block Area",{"type":7,"value":281,"toc":285},[282],[37,283,284],{},"A working archive from my tech-teaching years — Scratch projects, classroom activities, and notes on what kids actually do when you hand them programming tools.",{"title":5,"searchDepth":10,"depth":10,"links":286},[],[77,76,244],"A blog I wrote as a tech teacher — reflections and resources on teaching computational thinking with elementary and middle-school students.",[290,291,292],"\u002Fprojects\u002Fdigital-block-area-1778588890021.webp","\u002Fprojects\u002Fdigital-block-area-1778588896933.webp","\u002Fprojects\u002Fdigital-block-area-1778588905113.webp","\u002Fprojects\u002Fdigital-block-area.jpg","https:\u002F\u002Fdigitalblockarea.com\u002F",{},97,"\u002Fprojects\u002Fdigital-block-area",{"title":279,"description":284},"projects\u002Fdigital-block-area",[301,302],"Scratch","JavaScript",2014,"X_QVz1Sjl0bQVKHOZZlI_CM0N3yi0pdvjZ9b3bW5UDc",{"id":306,"title":307,"body":308,"craft":318,"desc":319,"description":312,"draft":25,"extension":12,"gallery":320,"image":137,"link_to_github":137,"link_to_project":321,"meta":322,"navigation":25,"order":323,"path":324,"seo":325,"stem":326,"tech":327,"type":93,"year":328,"__hash__":329},"projects\u002Fprojects\u002Fdino-learns-to-program.md","Dino Learns to Program",{"type":7,"value":309,"toc":316},[310,313],[37,311,312],{},"A Scratch project I made that lets kids step a dinosaur through basic programming concepts — sequences, loops, conditionals — by teaching it themselves.",[37,314,315],{},"Built for the Scratch community on MIT's platform, where it picked up a steady audience.",{"title":5,"searchDepth":10,"depth":10,"links":317},[],[],"A Scratch project that teaches kids programming by having them teach a dinosaur. Found an audience in the Scratch community.",[],"https:\u002F\u002Fscratch.mit.edu\u002Fprojects\u002F10993376",{},33,"\u002Fprojects\u002Fdino-learns-to-program",{"title":307,"description":312},"projects\u002Fdino-learns-to-program",[301],2013,"McV5MuSjlomZecEkJH6uOpDJC10jjsoskCA2kvCDWJU",{"id":331,"title":332,"body":333,"craft":337,"desc":5,"description":5,"draft":25,"extension":12,"gallery":338,"image":137,"link_to_github":137,"link_to_project":137,"meta":339,"navigation":25,"order":160,"path":340,"seo":341,"stem":342,"tech":343,"type":137,"year":344,"__hash__":345},"projects\u002Fprojects\u002Fexplorelearning-physics-sim.md","ExploreLearning Physics Sim",{"type":7,"value":334,"toc":335},[],{"title":5,"searchDepth":10,"depth":10,"links":336},[],[],[],{},"\u002Fprojects\u002Fexplorelearning-physics-sim",{"title":332,"description":5},"projects\u002Fexplorelearning-physics-sim",[],2018,"zRbsyUM22Bxi7Cvoxz-G-p7Cm6A4ZjLLW7reX8RS3jA",{"id":347,"title":348,"body":349,"craft":361,"desc":362,"description":363,"draft":25,"extension":12,"gallery":364,"image":365,"link_to_github":137,"link_to_project":366,"meta":367,"navigation":25,"order":368,"path":369,"seo":370,"stem":371,"tech":372,"type":137,"year":373,"__hash__":374},"projects\u002Fprojects\u002Finsight.md","Insight & Change",{"type":7,"value":350,"toc":359},[351],[37,352,353,354],{},"A simple, clean site for a Psychotherapy Practice.  Leverages the beatuful photography of ",[355,356,358],"a",{"href":357},"www.google.com","link",{"title":5,"searchDepth":10,"depth":10,"links":360},[],[],"A small, careful Squarespace presence for a therapy practice. Warm, plain, thoroughly edited.","A simple, clean site for a Psychotherapy Practice.  Leverages the beatuful photography of link",[],"\u002Fprojects\u002Finsight.jpg","https:\u002F\u002Fwww.insightandchange.com\u002F",{},6,"\u002Fprojects\u002Finsight",{"title":348,"description":363},"projects\u002Finsight",[146],2020,"wUyyx8VsuwqDiMymW59ojVNs417x2GZZ_x2wlEvFtiM",{"id":376,"title":377,"body":378,"craft":385,"desc":386,"description":382,"draft":45,"extension":12,"gallery":387,"image":390,"link_to_github":137,"link_to_project":391,"meta":392,"navigation":25,"order":393,"path":394,"seo":395,"stem":396,"tech":397,"type":93,"year":400,"__hash__":401},"projects\u002Fprojects\u002Finvention.md","Invention Playground",{"type":7,"value":379,"toc":383},[380],[37,381,382],{},"Build pure cause-and-effect machines, or layer in computational and robotic elements. Signals travel through the system as databalls — emitted by sensors, caught by actuators like motors and springboxes.",{"title":5,"searchDepth":10,"depth":10,"links":384},[],[77,43,76],"A construction set for Rube-Goldberg machines with computational thinking and robotic elements, drawn from years of teaching. In active development.",[388,389],"\u002Fprojects\u002Finvention-1778550366891.jpg","\u002Fprojects\u002Finvention-1778550436989.jpg","\u002Fprojects\u002Finvention.jpg","https:\u002F\u002Finventionplayground.app\u002F",{},3,"\u002Fprojects\u002Finvention",{"title":377,"description":382},"projects\u002Finvention",[91,145,398,399],"Konva","Rapier",2023,"f2_MTqt0xXXJ7CPnmYYG20NpbThDn_tFd5BdP_erLaU",{"id":403,"title":404,"body":405,"craft":409,"desc":5,"description":5,"draft":25,"extension":12,"gallery":410,"image":137,"link_to_github":137,"link_to_project":137,"meta":411,"navigation":25,"order":160,"path":412,"seo":413,"stem":414,"tech":415,"type":137,"year":328,"__hash__":416},"projects\u002Fprojects\u002Finvention-slides.md","Invention Slides",{"type":7,"value":406,"toc":407},[],{"title":5,"searchDepth":10,"depth":10,"links":408},[],[],[],{},"\u002Fprojects\u002Finvention-slides",{"title":404,"description":5},"projects\u002Finvention-slides",[],"uQn0qah5_iSuMS0eJumHpMLYDI3VXoRurH9GnudmSZ0",{"id":418,"title":419,"body":420,"craft":424,"desc":5,"description":5,"draft":25,"extension":12,"gallery":425,"image":137,"link_to_github":137,"link_to_project":137,"meta":426,"navigation":25,"order":160,"path":427,"seo":428,"stem":429,"tech":430,"type":137,"year":165,"__hash__":431},"projects\u002Fprojects\u002Flego-inchbot.md","Lego Inchbot",{"type":7,"value":421,"toc":422},[],{"title":5,"searchDepth":10,"depth":10,"links":423},[],[],[],{},"\u002Fprojects\u002Flego-inchbot",{"title":419,"description":5},"projects\u002Flego-inchbot",[],"4LTgykXYTQ8SWmKUOWQnFZIgza1K-Qv0Ib6lgsfcVyg",{"id":433,"title":434,"body":435,"craft":439,"desc":5,"description":5,"draft":25,"extension":12,"gallery":440,"image":137,"link_to_github":137,"link_to_project":137,"meta":441,"navigation":25,"order":160,"path":442,"seo":443,"stem":444,"tech":445,"type":137,"year":165,"__hash__":446},"projects\u002Fprojects\u002Flego-slides.md","Lego Slides",{"type":7,"value":436,"toc":437},[],{"title":5,"searchDepth":10,"depth":10,"links":438},[],[],[],{},"\u002Fprojects\u002Flego-slides",{"title":434,"description":5},"projects\u002Flego-slides",[],"tFwK9bah0smpm1j3h3hFEfGwTb72dSdcZItZo4qFNdg",{"id":448,"title":449,"body":450,"craft":460,"desc":461,"description":454,"draft":25,"extension":12,"gallery":462,"image":137,"link_to_github":137,"link_to_project":137,"meta":463,"navigation":25,"order":464,"path":465,"seo":466,"stem":467,"tech":468,"type":93,"year":165,"__hash__":470},"projects\u002Fprojects\u002Fmindstorms-mini-golf.md","Mindstorms Mini Golf",{"type":7,"value":451,"toc":458},[452,455],[37,453,454],{},"A robotics unit from my Smith College Campus School years. Students designed and constructed a mini-golf course, then built and programmed Lego Mindstorms robots to play it — moving fluidly between physical building, programming, and game design.",[37,456,457],{},"The piece I'd point to first if asked what classroom engineering should look like.",{"title":5,"searchDepth":10,"depth":10,"links":459},[],[],"Kids built and played a full mini-golf course with Lego Mindstorms robots — designing holes, programming the bots, and iterating on the rules. The unit I keep coming back to as a model for what classroom engineering can feel like.",[],{},32,"\u002Fprojects\u002Fmindstorms-mini-golf",{"title":449,"description":454},"projects\u002Fmindstorms-mini-golf",[469],"Lego Mindstorms","Sai3ekY27ZRHzfAfCRuqf9yNavkxNrulHf8JZ3Gji60",{"id":472,"title":473,"body":474,"craft":481,"desc":478,"description":478,"draft":25,"extension":12,"gallery":482,"image":137,"link_to_github":137,"link_to_project":137,"meta":483,"navigation":25,"order":484,"path":485,"seo":486,"stem":487,"tech":488,"type":137,"year":94,"__hash__":490},"projects\u002Fprojects\u002Fnetlify.md","Netlify Auth & Sanity Data",{"type":7,"value":475,"toc":479},[476],[37,477,478],{},"A demo application that lets a user sign up, log in, and write user-scoped data to a Sanity.io datastore.",{"title":5,"searchDepth":10,"depth":10,"links":480},[],[],[],{},8,"\u002Fprojects\u002Fnetlify",{"title":473,"description":478},"projects\u002Fnetlify",[489,91],"Sanity","QBwSaTIqOcz8m9EGYvdklGiSkSlkwKIGOrZ36PWsjO0",{"id":492,"title":493,"body":494,"craft":566,"desc":568,"description":5,"draft":45,"extension":12,"gallery":569,"image":570,"link_to_github":137,"link_to_project":137,"meta":571,"navigation":25,"order":160,"path":572,"seo":573,"stem":574,"tech":575,"type":93,"year":216,"__hash__":576},"projects\u002Fprojects\u002Fpublications.md","Publications and Presentations",{"type":7,"value":495,"toc":558},[496,501,510,514,522,526,533,537,540,544,547,551],[497,498,500],"h3",{"id":499},"programming-through-play-scratch-technology-at-campus-school","Programming through Play: Scratch Technology at Campus School",[37,502,503,504],{},"A Smith Lab School feature on the Scratch and computational-thinking work I led at Campus School.\n",[355,505,509],{"href":506,"rel":507},"https:\u002F\u002Fsites.smith.edu\u002Flabschool\u002F2020\u002F01\u002F27\u002Fprogramming-through-play-scratch-technology-at-campus-school\u002F",[508],"nofollow","Read →",[497,511,513],{"id":512},"challenge-galaxy-scaffolding-and-differentiation-with-scratch","Challenge Galaxy: Scaffolding and Differentiation with Scratch",[37,515,516,517],{},"With Andrew Pasquale. CSTA New England Regional Conference, 2019.\n",[355,518,521],{"href":519,"rel":520},"https:\u002F\u002Fcstanewenglandregionalconfe2019.sched.com\u002Fevent\u002FVrsc\u002Fchallenge-galaxy-scaffolding-and-differentiation-with-scratch",[508],"Session →",[497,523,525],{"id":524},"faculty-visions-meet-wordpress-information-architecture","Faculty Visions Meet WordPress: Information Architecture",[37,527,528,529],{},"WPCampus 2018, Washington University in St. Louis. Translating faculty visions for academic sites into workable WordPress IA.\n",[355,530,521],{"href":531,"rel":532},"https:\u002F\u002F2018.wpcampus.org\u002Fschedule\u002Ffaculty-visions-meet-wordpress-information-architecture\u002F",[508],[497,534,536],{"id":535},"reflections-on-using-wordpress-for-eportfolio","Reflections on Using WordPress for ePortfolio",[37,538,539],{},"Academic Technology Administrators Conference (ATAC) 2018, Lafayette College, Easton, PA.",[497,541,543],{"id":542},"new-tools-for-documenting-cross-cultural-and-language-learning","New Tools for Documenting Cross-Cultural and Language Learning",[37,545,546],{},"With Jessica Bacal and Janie Vanpée. AAEEBL International Seminar 2016, University of Edinburgh, Scotland.",[497,548,550],{"id":549},"were-studying-you-dilemmas-in-and-approaches-to-social-studies-curriculum-about-other-cultures","\"We're Studying You\": Dilemmas in, and Approaches to, Social Studies Curriculum About \"Other\" Cultures",[37,552,553,554],{},"M.S.Ed. thesis, Bank Street College of Education, 2002.\n",[355,555,509],{"href":556,"rel":557},"https:\u002F\u002Feducate.bankstreet.edu\u002Findependent-studies\u002F155",[508],{"title":5,"searchDepth":10,"depth":10,"links":559},[560,561,562,563,564,565],{"id":499,"depth":393,"text":500},{"id":512,"depth":393,"text":513},{"id":524,"depth":393,"text":525},{"id":535,"depth":393,"text":536},{"id":542,"depth":393,"text":543},{"id":549,"depth":393,"text":550},[77,76,43,567,244],"IA","Selected articles, guides, and conference talks on my educational engineering and design work.",[],"\u002Fprojects\u002Fpublications.jpg",{},"\u002Fprojects\u002Fpublications",{"title":493,"description":5},"projects\u002Fpublications",[],"Hp7evxivNbp7uuRBljxNYAr6b6tFiueuMy-Haw5CdOQ",{"id":578,"title":579,"body":580,"craft":584,"desc":5,"description":5,"draft":25,"extension":12,"gallery":585,"image":137,"link_to_github":137,"link_to_project":137,"meta":586,"navigation":25,"order":160,"path":587,"seo":588,"stem":589,"tech":590,"type":137,"year":165,"__hash__":591},"projects\u002Fprojects\u002Frobotics-workshops.md","Robotics Workshops",{"type":7,"value":581,"toc":582},[],{"title":5,"searchDepth":10,"depth":10,"links":583},[],[],[],{},"\u002Fprojects\u002Frobotics-workshops",{"title":579,"description":5},"projects\u002Frobotics-workshops",[],"uRaezIXabyCY8nbYHGJhp9Up9KPThNE0fTR1HYR36b8",{"id":593,"title":594,"body":595,"craft":611,"desc":612,"description":599,"draft":45,"extension":12,"gallery":613,"image":617,"link_to_github":137,"link_to_project":618,"meta":619,"navigation":25,"order":10,"path":620,"seo":621,"stem":622,"tech":623,"type":62,"year":373,"__hash__":624},"projects\u002Fprojects\u002Fself.md","Self-Evident Education",{"type":7,"value":596,"toc":609},[597,600],[37,598,599],{},"Self-Evident Education produces documentary videos and curriculum materials on the history of race and resistance in the United States. I did the information architecture, Sanity CMS, Firebase + Stripe auth and subscription flow, site design, and front end.",[37,601,602,603,608],{},"Sanity published my article on the project: ",[355,604,607],{"href":605,"rel":606},"https:\u002F\u002Fwww.sanity.io\u002Fprojects\u002Fself-evident-education",[508],"Self-Evident Education on sanity.io",".",{"title":5,"searchDepth":10,"depth":10,"links":610},[],[76,567,43],"Content platform and membership site for an educational non-profit on race and resistance in U.S. history.",[614,615,616],"\u002Fprojects\u002Fself-1778589277277.jpg","\u002Fprojects\u002Fself-1778589446408.jpg","\u002Fprojects\u002Fself-1778589522836.jpg","\u002Fprojects\u002Fself.jpg","https:\u002F\u002Fselfevidenteducation.com\u002F",{},"\u002Fprojects\u002Fself",{"title":594,"description":599},"projects\u002Fself",[489,91,147,92],"WQS19FjQbMIeEMymyPP8H8qNKg_5vNxqAcpvpcPgq-U",{"id":626,"title":627,"body":628,"craft":632,"desc":5,"description":5,"draft":25,"extension":12,"gallery":633,"image":137,"link_to_github":137,"link_to_project":137,"meta":634,"navigation":25,"order":160,"path":635,"seo":636,"stem":637,"tech":638,"type":137,"year":63,"__hash__":639},"projects\u002Fprojects\u002Ftypewriter-simulator.md","Typewriter Simulator",{"type":7,"value":629,"toc":630},[],{"title":5,"searchDepth":10,"depth":10,"links":631},[],[],[],{},"\u002Fprojects\u002Ftypewriter-simulator",{"title":627,"description":5},"projects\u002Ftypewriter-simulator",[],"y4JLq0jvOrCYtijSpQMPqBEc0KkRPsgCnkMC0wnWckg",{"id":641,"title":642,"body":643,"craft":650,"desc":651,"description":647,"draft":45,"extension":12,"gallery":652,"image":653,"link_to_github":654,"link_to_project":655,"meta":656,"navigation":25,"order":657,"path":658,"seo":659,"stem":660,"tech":661,"type":93,"year":148,"__hash__":663},"projects\u002Fprojects\u002Fweather.md","weather.ink",{"type":7,"value":644,"toc":648},[645],[37,646,647],{},"Python scripts mine Project Gutenberg for weather-themed passages, scored by an LLM. At runtime, a real forecast is matched against the library — no generated prose, just classic text surfaced to fit the conditions.",{"title":5,"searchDepth":10,"depth":10,"links":649},[],[43,76],"Human accomplishments need surfacing these days. Your weather report as a small dose of classic literature.",[],"\u002Fprojects\u002Fweather.jpg","https:\u002F\u002Fgithub.com\u002Fbacalj\u002Fweather-ink","https:\u002F\u002Fweather.ink\u002F",{},98,"\u002Fprojects\u002Fweather",{"title":642,"description":647},"projects\u002Fweather",[59,662],"Vue","l_zZ2BqLYaJ4nRmUfCroaMNQ1wPwaHeboO3RrdzjNds",1779050756245]