{"id":41234147,"url":"https://github.com/hyperpolymath/ubicity","last_synced_at":"2026-01-23T01:00:49.951Z","repository":{"id":325549758,"uuid":"1101583090","full_name":"hyperpolymath/ubicity","owner":"hyperpolymath","description":"Making the city itself a learning environment, one captured experience at a time.","archived":false,"fork":false,"pushed_at":"2026-01-04T13:49:20.000Z","size":352,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-05T02:55:47.927Z","etag":null,"topics":["hyperpolymath-tools","rhodium-standard","rsr"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyperpolymath.png","metadata":{"files":{"readme":"README.adoc","changelog":"CHANGELOG.adoc","contributing":"CONTRIBUTING.adoc","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":"THREAT_MODEL.md","audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":"codemeta.json","zenodo":null,"notice":null,"maintainers":"MAINTAINERS.md","copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"hyperpolymath","ko_fi":"hyperpolymath","liberapay":"hyperpolymath"}},"created_at":"2025-11-21T22:17:42.000Z","updated_at":"2026-01-04T13:49:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hyperpolymath/ubicity","commit_stats":null,"previous_names":["hyperpolymath/ubicity"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/hyperpolymath/ubicity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fubicity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fubicity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fubicity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fubicity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperpolymath","download_url":"https://codeload.github.com/hyperpolymath/ubicity/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperpolymath%2Fubicity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28676441,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T20:48:19.482Z","status":"ssl_error","status_checked_at":"2026-01-22T20:48:14.968Z","response_time":144,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hyperpolymath-tools","rhodium-standard","rsr"],"created_at":"2026-01-23T01:00:28.090Z","updated_at":"2026-01-23T01:00:49.905Z","avatar_url":"https://github.com/hyperpolymath.png","language":"JavaScript","funding_links":["https://github.com/sponsors/hyperpolymath","https://ko-fi.com/hyperpolymath","https://liberapay.com/hyperpolymath"],"categories":[],"sub_categories":[],"readme":"= UbiCity Learning Capture System\n\nimage:https://img.shields.io/badge/License-MPL_2.0-blue.svg[MPL-2.0,link=\"https://opensource.org/licenses/MPL-2.0\"]\nimage:https://img.shields.io/badge/Philosophy-Palimpsest-purple.svg[Palimpsest,link=\"https://github.com/hyperpolymath/palimpsest-licence\"]\n\n\n\u003e *Making the city itself a learning environment, one captured experience at a time.*\n\n== What Is This?\n\nUbiCity (the Ubiquitous City of Learning) is a vision for dissolving the boundaries between formal education and urban exploration. This repository contains *practical tools* to capture, map, and analyze learning experiences that happen outside traditional institutional boundaries.\n\nInstead of waiting for infrastructure, we're building tools to document urban learning *as it happens* - creating a corpus of learning experiences that can reveal patterns invisible within traditional educational frameworks.\n\n== The Problem\n\nYou have an expansive vision (UbiCity) but need concrete next steps. How do you move from concept to practice without:\n\n1. Infinite scope creep\n2. Analysis paralysis\n3. Building technology before validating the idea\n4. Losing the essence in the implementation\n\n== This Solution\n\n*Start with data, not infrastructure.* Capture learning experiences using a minimal protocol, then use analysis tools to discover what patterns emerge organically.\n\n=== What You Get\n\n- 📋 *JSON Schema* - Structured format for learning experiences\n- 🎯 *Capture Tool* - CLI for recording experiences in the moment\n- 🗺️ *Mapper* - Analysis engine finding connections and patterns\n- 📊 *Minimal Viable Protocol* - The simplest possible UbiCity instantiation\n- 🔍 *Export to Voyant* - Text analysis integration for deeper insights\n\n== Quick Start\n\n=== Installation\n\n```bash\ncd ubicity\nnpm install  # if needed for dependencies\nchmod +x capture.js  # make capture tool executable\n```\n\n=== Capture Your First Experience\n\n*Option 1: Quick capture (30 seconds)*\n```bash\nnode capture.js quick\n```\n\n*Option 2: Full capture (2 minutes)*\n```bash\nnode capture.js full\n```\n\n*Option 3: Generate a template to edit*\n```bash\nnode capture.js template \u003e my-experience.json\n= Edit the JSON file, then manually add to ubicity-data/experiences/\n\n```\n\n=== Analyze Your Experiences\n\n*Generate a full report:*\n```bash\nnode mapper.js report\n```\n\n*Find learning hotspots:*\n```bash\nnode mapper.js hotspots\n```\n\n*View domain connection network:*\n```bash\nnode mapper.js network\n```\n\n*Track a learner's journey:*\n```bash\nnode mapper.js learner \u003clearner-id\u003e\n```\n\n== The 4-Week Experiment\n\nWant to test if UbiCity works for you? Follow the protocol in `MINIMAL_VIABLE_PROTOCOL.md`:\n\n- *Week 1*: Capture 5 learning experiences in different locations\n- *Week 2*: Run analysis, look for patterns\n- *Week 3*: Decide to stop or add one collaborator\n- *Week 4*: Meet and discuss, capture that collaboration\n\n*Success criteria*: If you found one unexpected connection and generated one new question, UbiCity works at minimum viable scale.\n\n== Data Model\n\n=== Core Structure (MVP)\n\nEvery learning experience needs:\n\n```json\n{\n  \"learner\": {\n    \"id\": \"who learned\"\n  },\n  \"context\": {\n    \"location\": {\n      \"name\": \"where they learned\"\n    }\n  },\n  \"experience\": {\n    \"type\": \"what kind of learning\",\n    \"description\": \"what they learned\"\n  }\n}\n```\n\n=== Optional Enrichment\n\nAdd any of these to deepen analysis:\n\n- *Learner background/interests* - For finding similar learners\n- *GPS coordinates* - For spatial mapping\n- *Situation/connections* - Who else was involved\n- *Domains* - Disciplinary areas (enables interdisciplinary analysis)\n- *Artifacts* - Photos, sketches, code created\n- *Outcome* - Success/failure, new questions, unexpected connections\n- *Tags/privacy* - Organization and access control\n\nFull schema: `schema/learning-experience.json`\n\n== Analysis Capabilities\n\nThe mapper provides several analytical lenses:\n\n=== 1. Interdisciplinary Connections\n\nFind experiences that span multiple domains:\n\n```javascript\nmapper.findInterdisciplinaryConnections()\n```\n\nReturns learning moments where different disciplines met, often yielding unexpected insights.\n\n=== 2. Learning Hotspots\n\nIdentify locations with high disciplinary diversity:\n\n```javascript\nmapper.findLearningHotspots()\n```\n\nThese are places where the city itself facilitates cross-domain learning.\n\n=== 3. Domain Networks\n\nSee which disciplines frequently co-occur:\n\n```javascript\nmapper.generateDomainNetwork()\n```\n\nReveals the natural boundaries (or lack thereof) between fields in practice.\n\n=== 4. Learner Journeys\n\nTrack how individuals' interests evolve:\n\n```javascript\nmapper.getLearnerJourney(learnerId)\n```\n\nShows progression, new domains discovered, questions emerged.\n\n=== 5. Location Mapping\n\nUnderstand the learning characteristics of places:\n\n```javascript\nmapper.mapByLocation()\n```\n\nHow many different disciplines meet at each location? How many unique learners?\n\n== Use Cases\n\n=== For Individuals\n- Document self-directed learning\n- Find patterns in your interests\n- Justify learning time to yourself/others\n- Create a learning portfolio\n\n=== For Small Groups\n- Track collaborative learning\n- Find intersection of interests\n- Identify productive meeting locations\n- Build shared knowledge maps\n\n=== For Researchers\n- Study informal learning patterns\n- Analyze urban learning environments\n- Generate papers from captured data\n- Validate educational theories in practice\n\n=== For Institutions\n- Understand learning outside classroom\n- Find community partners\n- Document experiential learning\n- Support lifelong learners\n\n== Integration with Existing Tools\n\n=== Zotero Connection\n\nThis repo started as a Zotero → Voyant exporter. The connection:\n\n- *Zotero*: Captures research reading and sources\n- *UbiCity*: Captures experiential learning and practice\n- *Voyant*: Analyzes text patterns in both\n\nYou can export UbiCity experiences to Voyant:\n\n```javascript\nconst mapper = new UrbanKnowledgeMapper();\nmapper.loadAll();\nconst corpus = mapper.exportToVoyant();\n// Upload corpus to Voyant for text analysis\n```\n\n=== Other Integrations\n\n- *Echomesh*: Context preservation across time\n- *JanusKey*: Reversible operations for experimental learning\n- *Oblíbený*: Type-safe learning protocols\n- *MAA Framework*: Accountability in public learning spaces\n\n== Scaling Considerations\n\n=== Don't Scale Until You Have 50+ Experiences\n\nSeriously. Capture data first. Then:\n\n1. *Add visualization* - Map experiences geographically\n2. *Add recommendations* - \"Learners like you also explored...\"\n3. *Add mobile capture* - Quick smartphone entry\n4. *Add social features* - Share discoveries\n5. *Add institutional integration* - Course credit, portfolios\n\nBut each of these is *optional*. The core works with just the CLI tools.\n\n== Design Principles\n\n=== 1. *Capture First, Analyze Later*\nMinimize friction in the moment. Rich analysis can wait.\n\n=== 2. *Privacy by Default*\nPseudonymous learner IDs. Privacy levels. Opt-in sharing.\n\n=== 3. *Failures Are Data*\nExperiments that fail still generate valuable learning experiences.\n\n=== 4. *Location Matters*\nWhere you learn shapes what you learn. The city is co-teacher.\n\n=== 5. *Interdisciplinary by Nature*\nCities don't respect academic boundaries. Neither should learning.\n\n=== 6. *Incomplete Is Better Than Perfect*\nA sketchy capture is better than waiting for perfect data.\n\n=== 7. *Tools, Not Platforms*\nComposable tools you control, not a locked-in platform.\n\n== Project Philosophy\n\nThis is *not a startup*. Not a platform. Not a product.\n\nThis is *infrastructure for a practice* - like a yoga mat or a notebook.\n\nUbiCity isn't something to complete. It's a continuous process:\n\n- You capture experiences\n- Patterns emerge\n- You explore those patterns\n- New questions arise\n- You capture more experiences\n- Patterns evolve\n\nThe tools here support that cycle. They don't try to optimize it, gamify it, or monetize it.\n\n== Connection to Your Other Work\n\n=== Formal Methods\n- Learning experiences as verifiable events\n- Safety properties: learner wellbeing, privacy\n- Verification conditions for \"successful learning\"\n\n=== Solidarity Economics\n- Learning as commons, not commodity\n- Mutual accountability in public learning\n- Skills-sharing over credentials\n\n=== Phase-Separated Development\n- MVP protocol provides clear phase boundaries\n- Each week of experiment is a phase\n- Natural pause points prevent scope creep\n\n=== Seven Tentacles Framework\n- Character-driven narrative of learning journeys\n- Urban spaces as characters in learning story\n- Multi-threaded exploration of ideas\n\n== Next Steps\n\n=== If This Resonates (Immediate)\n\n1. Read `MINIMAL_VIABLE_PROTOCOL.md`\n2. Capture one experience right now\n3. Decide: 4-week experiment or not?\n\n=== If You Want to Extend (Month 2+)\n\n1. Add visualization (D3.js maps of learning)\n2. Create web interface (form + map view)\n3. Integrate with Zotero (reading → practice)\n4. Write paper: \"Formal Verification of Urban Learning Systems\"\n\n=== If This Becomes a Life Project\n\n1. Establish quarterly 4-week cycles\n2. Each cycle explores new aspect\n3. Publish findings after each cycle\n4. Tools evolve based on real usage\n5. Community emerges organically\n\n== Contributing\n\nThis is a personal exploration toolkit, but if UbiCity resonates with you:\n\n- Capture your own experiences\n- Share patterns you discover\n- Extend the tools for your context\n- Write about your experiments\n\nThe GPL3 license means you can fork, modify, and share freely.\n\n== Credits\n\n- *Concept*: UbiCity vision from 2017+ work with UAL Creative Communities\n- *Implementation*: Built on learnings from zotero-voyant-export project\n- *Inspiration*: Voyant (text analysis), Zotero (research management), and years of trying to formalize the informal\n\n== License\n\nGPL3 - Same as the original zotero-voyant-export project.\n\nLearning should be free as in freedom.\n\n---\n\n== Get Started\n\n```bash\nnode capture.js quick\n```\n\nThen:\n\n```bash\nnode mapper.js report\n```\n\nThat's it. You're doing UbiCity.\n\nWelcome to the Ubiquitous City of Learning. 🏙️\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperpolymath%2Fubicity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperpolymath%2Fubicity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperpolymath%2Fubicity/lists"}