From 7b88e8727a76c4405a063145228434cc17eae31d Mon Sep 17 00:00:00 2001 From: Lukasz Szoszkiewicz <36566583+lszoszk@users.noreply.github.com> Date: Sat, 15 Nov 2025 23:44:06 +0100 Subject: [PATCH] Fix responsible vibe-coding include reference --- README.md | 117 ++ _includes/responsible-vibe-coding.html | 1233 +++++++++++++++++ _pages/responsible-vibe-coding.html | 8 + .../responsible-vibe-coding.html | 1233 +++++++++++++++++ bin/fix-protobuf-macos.sh | 33 + reports/jekyll-run.md | 16 + 6 files changed, 2640 insertions(+) create mode 100644 _includes/responsible-vibe-coding.html create mode 100644 _pages/responsible-vibe-coding.html create mode 100644 assets/responsible-vibe-coding/responsible-vibe-coding.html create mode 100755 bin/fix-protobuf-macos.sh create mode 100644 reports/jekyll-run.md diff --git a/README.md b/README.md index ad624d8f..4a1e28d6 100644 --- a/README.md +++ b/README.md @@ -282,8 +282,125 @@ $ pip install jupyter $ bundle exec jekyll serve --lsi ``` +> **Having trouble installing gems?** +> Some environments (e.g., shared machines or CI runners) block writes to the +> system RubyGems directory and show `Your user account isn't allowed to install +> to the system RubyGems.`. In that case, run Bundler with a local path so the +> gems install inside the repository: +> +> ```bash +> $ bundle install --path vendor/bundle +> ``` +> +> You can double-check that Bundler is configured to reuse this folder with +> `bundle config get path` (it should print `vendor/bundle`). + To see the template running, open your browser and go to `http://localhost:4000`. You should see a copy of the theme's demo website. Now, feel free to customize the theme however you like. After you are done, remember to **commit** your final changes. +##### Fixing `LoadError: cannot load such file -- google/protobuf_c` + +macOS users occasionally see this error when running `bundle exec jekyll serve` because the transitive `google-protobuf` gem did not compile its native extension inside `vendor/bundle`. + +**Fast fix:** run the helper script we added in `bin/fix-protobuf-macos.sh` (it removes the broken gem, forces Bundler to compile the replacement, and verifies the `google/protobuf_c` extension): + +```bash +bin/fix-protobuf-macos.sh +``` + +**Where do I run that command? (plain-English version)** + +1. **Open the Terminal app on your Mac.** Press `⌘ + Space`, type “Terminal”, and hit Enter. +2. **Move into your website folder.** Type `cd ` (with a trailing space), then drag the `lszoszk.github.io` folder from Finder into the Terminal window so macOS fills in the full path. Press Enter. +3. **Check that you are in the right place.** Run `pwd`. The output should end with `/lszoszk.github.io`. If it doesn’t, repeat step 2. +4. **Run the helper script.** Enter: + + ```bash + ./bin/fix-protobuf-macos.sh + ``` + + (The leading `./` just means “run the file that lives inside this folder.”) +5. **Wait for the script to finish.** It removes the broken gem, reinstalls everything with Bundler, and then suggests the final `bundle exec jekyll serve --lsi` command. Follow the prompt when it appears. + +> **Seeing `zsh: no such file or directory: ./bin/fix-protobuf-macos.sh`?** +> You are either not inside the `lszoszk.github.io` folder yet or you are using an older copy of the repository that predates the helper script. Run `pwd` (the output must end with `/lszoszk.github.io`). Then list the helper with `ls bin/fix-protobuf-macos.sh`. If the file is missing, pull the latest code from GitHub (our default branch is `work`, so run `git pull origin work`) or download a fresh ZIP before trying again. If your fork uses a different default branch name, check it with `git remote show origin` (look for “HEAD branch”) or `git branch -r` and pull that branch instead of hardcoding `main`. + +#### “fatal: couldn't find remote ref main” + +If you see this error when running `git pull origin main`, it means your remote repository does **not** have a branch called `main`. This project’s canonical branch is `work`, so run: + +```bash +git pull origin work +``` + +If you renamed the branch in your fork, replace `work` with the name reported by `git remote show origin` (look for the “HEAD branch” line) or by `git ls-remote --heads origin`. + +That’s it—no editing of the script is required, and you never need administrator permissions. Every time the protobuf error reappears, just repeat the steps above. + +Prefer to run the steps manually? Rebuild the gem with the commands below: + +```bash +# Ensure Apple's command line tools (clang + make) are available — harmless if already installed +xcode-select --install + +# Remove the broken gem from vendor/bundle so Bundler rebuilds it +bundle exec gem uninstall google-protobuf -v 3.23.4 + +# Reinstall all gems so google-protobuf is fetched again (uses vendor/bundle) +bundle install --jobs "$(sysctl -n hw.ncpu 2>/dev/null || echo 4)" --retry 3 + +# Retry the server +bundle exec jekyll serve --lsi +``` + +After the reinstall succeeds the `google/protobuf_c` extension will be present inside `vendor/bundle`, allowing `sass-embedded` (and therefore `jekyll-sass-converter`) to load normally. + +If you see `Could not find google-protobuf-3.23.4 in any of the sources`, it means the reinstall step above did not run yet—rerun `bundle install` (with the local path still configured) so Bundler downloads the gem again. + +Still seeing the same stack trace? Remove the cached gems and force Bundler to rebuild everything from source (the helper script already applies these config settings, but it’s handy to know what it does under the hood): + +```bash +rm -rf vendor/bundle .bundle/config + +# reinstall with a local path and skip platform-specific precompiled gems +bundle config set --local path vendor/bundle +bundle config set --local force_ruby_platform true +bundle install + +# verify the extension exists +bundle exec ruby -e "require 'google/protobuf_c'; puts 'google-protobuf OK'" + +# start Jekyll +bundle exec jekyll serve --lsi +``` + +This sequence ensures there are no stale binary artifacts (especially from a different Ruby version) and forces Bundler to compile `google-protobuf`—and other native gems—directly for your macOS toolchain. + +--- + +### One-line quickstart (copy/paste only) + +When you just want to preview the site, copy and paste these **entire** commands into Terminal from inside the `lszoszk.github.io` folder: + +```bash +bundle install --path vendor/bundle +bundle exec jekyll serve --lsi +``` + +> **If you see `command not found: b`, `m`, `install jekyll`, or similar:** +> The shell is telling you that only part of a command was entered (for example, just the letter `b`). Make sure to paste the full line from above so the command starts with `bundle`, not `b`, `install`, or any flags by themselves. + +If the server stops with `LoadError: cannot load such file -- google/protobuf_c`, run the helper once and then retry the two commands above: + +```bash +./bin/fix-protobuf-macos.sh +``` + +--- + +### Responsible Vibe-Coding workshop snapshot + +If you need the long-form “Responsible Vibe-Coding” workshop site as a standalone HTML file (for example to upload elsewhere or share outside the Jekyll build), grab it from `assets/responsible-vibe-coding/responsible-vibe-coding.html`. The live page is rendered from `_includes/responsible-vibe-coding.html` (referenced by `_pages/responsible-vibe-coding.html`), so edit the include to update the site and copy it back to `assets/responsible-vibe-coding/responsible-vibe-coding.html` when you want a refreshed downloadable snapshot. + --- #### Deployment diff --git a/_includes/responsible-vibe-coding.html b/_includes/responsible-vibe-coding.html new file mode 100644 index 00000000..315a86c6 --- /dev/null +++ b/_includes/responsible-vibe-coding.html @@ -0,0 +1,1233 @@ + + + + + + Responsible Vibe-Coding for Human Rights | 2025 + + + + + + + + + + +
+ +
+ +
+╔══════════════════════════════════════════════════════════════════════════╗
+║  __   __ _____ ____   _____     _____  ___  ____  _____ _   _  _____   ║
+║  \ \ / /|_   _| __ ) | ____|   / ____|/ _ \|  _ \|_   _| \ | |/ ____|  ║
+║   \ V /   | | |  _ \ |  _|    | |    | | | | | | | | | |  \| | |  __   ║
+║    | |    | | | |_) || |___   | |____| |_| | |_| | | | | |\  | |__| |  ║
+║    |_|   |___||____/ |_____|   \_____|\___/|____/ |___| |_| \_|\_____|  ║
+║                                                                          ║
+║        Programming with Natural Language for Human Rights               ║
+╚══════════════════════════════════════════════════════════════════════════╝
+        
+ + + + + + +
+
+
+
+
+
welcome.sh
+
+
+
cat course_info.txt
+
+ WORKSHOP: NLP & Vibe-Coding for Human Rights

+ WELCOME: In January 2024, Andrej Karpathy tweeted that "The hottest new programming language is English" - and pinned it to his profile. In this course, you'll learn how to leverage natural language to build powerful tools for human rights work - no computer science degree required. If you can describe what you want, you can build it. But be prepared to leave your comfort zone and dive into the basics of how computers process text.

+ AUTHOR: Łukasz Szoszkiewicz | Adam Mickiewicz University
+
+
+
+ + +
+ 🗺️ THE JAGGED TECHNOLOGICAL FRONTIER +

+ We're standing on what Ethan Mollick calls the "jagged technological frontier" - + AI capabilities are uneven, excelling in unexpected areas while failing in others. + As human rights experts, we must experiment to discover where and how LLMs + can be integrated into our work. No one will do it for us. +

+

+ + 📖 Read: "Centaurs and Cyborgs on the Jagged Frontier" by Ethan Mollick + +

+
+ + +
What is Natural Language Processing?
+ +
+
+
+
+
+
nlp_intro.md
+
+
+

DEFINITION:

+

Natural Language Processing (NLP) is a field of artificial intelligence that enables computers + to understand, interpret, and generate human language. It's the bridge between human communication + and machine computation.

+ Key NLP tasks include:
+ • Search: Find relevant documents from large collections
+ • Classification: Categorize documents by topic, sentiment, or type
+ • Extraction: Pull out specific information (names, dates, concepts)
+ • Analysis: Discover patterns and trends in text data
+ • Summarization: Condense long documents into key points
+

+
+
+ + + +
What is Vibe-Coding?
+ +
+
+
+
+
+
vibe_coding_intro.md
+
+
+

DEFINITION:

+

Vibe-coding is programming through natural language conversation with AI assistants. + Instead of writing code syntax, you describe what you want to build in plain English (or any language!).

+ +

THE PARADIGM SHIFT:

+
    +
  • ✓ Focus on ideas and outcomes, not syntax
  • +
  • ✓ Iterate rapidly through conversation
  • +
  • ✓ Learn "on demand" - depth-wise, not breadth-wise
  • +
  • ✓ Accessible to domain experts without CS degrees
  • +
+
+
+ + +
+
+
+
+
+
pros_cons.json
+
+
+
+
{
+  "advantages": {
+    "accessibility": "Opens programming to non-technical experts",
+    "speed": "Rapid prototyping and iteration",
+    "focus": "Concentrate on solving problems, not syntax",
+    "learning": "Learn programming concepts as needed"
+  },
+  "limitations": {
+    "control": "Less fine-grained control over implementation",
+    "debugging": "Harder to understand generated code deeply",
+    "dependency": "Reliant on AI capabilities - need to leverage domain expertise",
+    "optimization": "May not produce the most efficient code"
+  },
+  "read_more": {
+    "link": "https://www.datacamp.com/blog/vibe-coding"
+  }
+}
+
+
+
+ +
+ 🧯 ANTI-HYPE: start simple +

+ Vibe-coding shines for simple, useful tools: a document search engine, + a lightweight analytics dashboard, or a short report generator. + Human rights experts often miss exactly these basics: decision/document search, filtering, and XLSX export. + Build step by step and shift towards your own code changes as you learn. + Over-ambitious first projects often end like this: +

+
+ Ambitious project goes wrong (funny meme) +
“Ship the simple thing first, then grow.”
+
+
+ + + +
+ 💡 MESSAGES FROM ANDREJ KARPATHY +
+

How to become expert at thing:

+
    +
  1. Iteratively take on concrete projects and accomplish them depth wise, learning "on demand"
  2. +
  3. Teach/summarize everything you learn in your own words
  4. +
  5. Only compare yourself to younger you, never to others
  6. +
+

+ "LLMs are the new operating system - Software 3.0"
+ Watch: Software Is Changing (Again) +

+
+
+ + +
+ 🔬 WHY WE USE GOOGLE COLAB (NOT JUST AI) +

+ Writing code in Google Colab + and implementing the data analysis process ourselves (extraction, cleaning, text classification) provides: +

+ +

+ 💡 To start: Go to colab.research.google.com, + sign in with Gmail (create a new account if needed), and click "New Notebook". + It's the fastest way to start coding - no installation required! +

+
+ + +
+ ⚖️ WHY HUMAN RIGHTS NEEDS NLP & AI +

+ Human rights work is fundamentally about text: treaties, reports, legal documents, testimonies. + Even basic NLP techniques can be gamechangers for human rights work:
+


+

Read about promises and pitfalls of NLP and AI in judiciary in the recent report of the SR on Independence of Judges and Lawyers (A/80/169)

+

+ + +
+

+ How machine learning helps advance access to human rights information
+ + HURIDOCS is using machine learning to facilitate text classification for the UPR Info. + +

+
+ +
+
+ +
+ + + + +
+

🔧 DAY 1: Basics of Natural Language Processing

+ +
+ + +
+ 🔧 WHAT TO INSTALL BEFORE DAY 2 +

+ macOS: +

+ +
+
python3 --version
+
+ + +

+ Windows: +

+ +
+ + +
+

🚀 DAY 2: Building Your Own App - Document Database

+ +
+ + +
+ 💻 LOCAL DEPLOYMENT OF YOUR APP +

+ Quick setup for testing your app: +

+
    +
  1. In one folder: +
      +
    • index.html (the html file you developed yesterday)
    • +
    • ccpr.json (dataset that you already have)
    • +
    +
  2. +
  3. In terminal in this folder:
  4. +
+
+
# Python
+python -m http.server 8000 --bind localhost
+# or python3 -m http.server 8000 --bind localhost
+
+
    +
  1. Open in browser: http://localhost:8000
  2. +
+
+ + +
Seed prompt
+ +
+
+
+
+
+
seed_prompt.md
+
+
+ +
+

Example prompt:

+
+ +
+
+"Create a complete web application for searching 
+UN treaty body documents with the following functions:
+1. Paragraph-Level Extraction +- Extract the first 20 paragraphs from the UN document attached +- Each paragraph maintains its original numbering (1-20) +- Full text preservation with proper formatting + +2. Thematic Labeling System +- Each paragraph has been categorized with relevant UN human rights framework themes - come up with 6 most relevant. Display in the output why and how did you select and defined categories. + +3. Advanced Search Functionality +- Keyword Search: Find individual terms (e.g., "information," "speech") +- Thematic Filtering: Filter by specific human rights themes +- Highlight Results: Search terms highlighted in yellow +- Real-time Search: Instant results as you type + +4. User Interface +- Modern, responsive design similar to OHCHR style +- Live dashboard with stats about filtered documents - theme distribution, term frequency, and bigrams +- Glass morphism effects and professional appearance +- Color-coded theme tags for easy identification +- Paragraph numbering system for reference +- Intuitive copy text and citation function +- Mobile-friendly responsive layout" +
+
+Try cutting-edge models for free: LM Arena (instead of uploading the dataset, indicate the sample document, e.g., CCPR/C/GC/37 (right of peaceful assembly)

+Example output (Sonnet 4.5): Here's what you get (one prompt, zero tweaks!)
+
+
+
+
+ +

🚀 BEYOND GOOGLE COLAB: CLAUDE CODE & CODEX

+

Once you're comfortable with vibe-coding basics, graduate to professional tools:

+ +
+

Claude Code / Codex - The Difference:

+ +
+ Claude Code/Codex creates the ENTIRE project structure - ready to be uploaded! +
+ + +
Resources & Tools
+ +
+
+
+
+
+
resources.sh
+
+
+
+
#!/bin/bash
+
+echo "=== ESSENTIAL TOOLS ==="
+echo "• Claude/Gemini - Your vibe-coding partner"
+echo "• https://lmarena.ai/ - Free (limited) access to cutting-edge models"
+echo "• https://colab.research.google.com - Free Python environment"
+echo "• Dataset (CCPR): https://drive.google.com/drive/folders/1bw2NzG1FQhfcJQiOZdnVCK5ofn7ho6U1?usp=share_link"
+echo "• UN Treaty Body Database: https://lszoszk.pythonanywhere.com"
+
+echo "=== TOOLS FOR THE NEXT LEVEL ==="
+echo "• GitHub - Code sharing and version control"
+echo "• Hugging Face - Open source datasets and models"
+echo "• PyCharm - Coding environment with educational license"
+echo "• PythonAnywhere - Easy web app deployment"
+
+echo ""
+echo "=== ADDITIONAL MATERIALS ==="
+echo "• Karpathy: Software Is Changing (Again)"
+echo "• Karpathy: We’re summoning ghosts, not building animals [podcast]"
+echo "• Mollick: Centaurs and Cyborgs"
+echo "• Mollick: The Cybernetic Teammate"
+echo "• Marker: https://github.com/datalab-to/marker"
+echo "• HURIDOCS OCR repo: https://github.com/huridocs"
+echo "• DataCamp: What is Vibe Coding? [Pros and Cons]"
+echo "• SICSS @ AMU Law: https://sicss.io/2025/amu-law/"
+
+echo ""
+echo "=== EXAMPLE PROJECTS ==="
+echo "• UN Treaty Body Database"
+echo "• Polish Constitutional Court Explorer"
+echo "• Your future projects here!"
+
+
+
+
+ + +
Course Philosophy
+ +
+ 🎯 MY APPROACH +

+ Learning through building: I won't teach you programming theory. + Instead, you'll build real tools for human rights work and learn what you need along the way. +

+

+ Effort over entertainment: This course requires effort. + It's not meant to be easy, but it will be rewarding when you build something that helps real people. +

+

+ Compare to yourself: Don't worry about others' progress. + Focus on what you couldn't do yesterday but can do today. +

+
+ + +
Ready to Start?
+ +
+
+
+
+
+
start_journey.sh
+
+
+
+
#!/bin/bash
+
+echo "Starting your vibe-coding journey..."
+echo ""
+echo "Remember:"
+echo "  [✓] You don't need to be a programmer"
+echo "  [✓] You already have domain expertise"
+echo "  [✓] AI will be your coding partner"
+echo "  [✓] You'll build something meaningful"
+echo ""
+echo "The best time to start was yesterday."
+echo "The second best time is now."
+echo ""
+read -p "Press [ENTER] to begin your transformation..."
+echo ""
+echo "Welcome to the future of human rights tech! 🚀"
+
+
+
+
+ + +
Contact & Information
+ +
+
+
+
+
+
contact_info.txt
+
+
+

AUTHOR:

+

Łukasz Szoszkiewicz

+

Adam Mickiewicz University, Poznań

+

🌐 lszoszk.github.io

+

QUESTIONS?

+

Bring them to class - the best questions come from confusion!

+

Remember: There are no stupid questions, only missed opportunities to learn.

+
+
+ + + +
+ + + + + diff --git a/_pages/responsible-vibe-coding.html b/_pages/responsible-vibe-coding.html new file mode 100644 index 00000000..c00dc77f --- /dev/null +++ b/_pages/responsible-vibe-coding.html @@ -0,0 +1,8 @@ +--- +layout: none +title: Responsible Vibe-Coding +permalink: /responsible-vibe-coding/ +nav: true +nav_order: 9 +--- +{% include responsible-vibe-coding.html %} diff --git a/assets/responsible-vibe-coding/responsible-vibe-coding.html b/assets/responsible-vibe-coding/responsible-vibe-coding.html new file mode 100644 index 00000000..315a86c6 --- /dev/null +++ b/assets/responsible-vibe-coding/responsible-vibe-coding.html @@ -0,0 +1,1233 @@ + + + + + + Responsible Vibe-Coding for Human Rights | 2025 + + + + + + + + + + +
+ +
+ +
+╔══════════════════════════════════════════════════════════════════════════╗
+║  __   __ _____ ____   _____     _____  ___  ____  _____ _   _  _____   ║
+║  \ \ / /|_   _| __ ) | ____|   / ____|/ _ \|  _ \|_   _| \ | |/ ____|  ║
+║   \ V /   | | |  _ \ |  _|    | |    | | | | | | | | | |  \| | |  __   ║
+║    | |    | | | |_) || |___   | |____| |_| | |_| | | | | |\  | |__| |  ║
+║    |_|   |___||____/ |_____|   \_____|\___/|____/ |___| |_| \_|\_____|  ║
+║                                                                          ║
+║        Programming with Natural Language for Human Rights               ║
+╚══════════════════════════════════════════════════════════════════════════╝
+        
+ + + + + + +
+
+
+
+
+
welcome.sh
+
+
+
cat course_info.txt
+
+ WORKSHOP: NLP & Vibe-Coding for Human Rights

+ WELCOME: In January 2024, Andrej Karpathy tweeted that "The hottest new programming language is English" - and pinned it to his profile. In this course, you'll learn how to leverage natural language to build powerful tools for human rights work - no computer science degree required. If you can describe what you want, you can build it. But be prepared to leave your comfort zone and dive into the basics of how computers process text.

+ AUTHOR: Łukasz Szoszkiewicz | Adam Mickiewicz University
+
+
+
+ + +
+ 🗺️ THE JAGGED TECHNOLOGICAL FRONTIER +

+ We're standing on what Ethan Mollick calls the "jagged technological frontier" - + AI capabilities are uneven, excelling in unexpected areas while failing in others. + As human rights experts, we must experiment to discover where and how LLMs + can be integrated into our work. No one will do it for us. +

+

+ + 📖 Read: "Centaurs and Cyborgs on the Jagged Frontier" by Ethan Mollick + +

+
+ + +
What is Natural Language Processing?
+ +
+
+
+
+
+
nlp_intro.md
+
+
+

DEFINITION:

+

Natural Language Processing (NLP) is a field of artificial intelligence that enables computers + to understand, interpret, and generate human language. It's the bridge between human communication + and machine computation.

+ Key NLP tasks include:
+ • Search: Find relevant documents from large collections
+ • Classification: Categorize documents by topic, sentiment, or type
+ • Extraction: Pull out specific information (names, dates, concepts)
+ • Analysis: Discover patterns and trends in text data
+ • Summarization: Condense long documents into key points
+

+
+
+ + + +
What is Vibe-Coding?
+ +
+
+
+
+
+
vibe_coding_intro.md
+
+
+

DEFINITION:

+

Vibe-coding is programming through natural language conversation with AI assistants. + Instead of writing code syntax, you describe what you want to build in plain English (or any language!).

+ +

THE PARADIGM SHIFT:

+
    +
  • ✓ Focus on ideas and outcomes, not syntax
  • +
  • ✓ Iterate rapidly through conversation
  • +
  • ✓ Learn "on demand" - depth-wise, not breadth-wise
  • +
  • ✓ Accessible to domain experts without CS degrees
  • +
+
+
+ + +
+
+
+
+
+
pros_cons.json
+
+
+
+
{
+  "advantages": {
+    "accessibility": "Opens programming to non-technical experts",
+    "speed": "Rapid prototyping and iteration",
+    "focus": "Concentrate on solving problems, not syntax",
+    "learning": "Learn programming concepts as needed"
+  },
+  "limitations": {
+    "control": "Less fine-grained control over implementation",
+    "debugging": "Harder to understand generated code deeply",
+    "dependency": "Reliant on AI capabilities - need to leverage domain expertise",
+    "optimization": "May not produce the most efficient code"
+  },
+  "read_more": {
+    "link": "https://www.datacamp.com/blog/vibe-coding"
+  }
+}
+
+
+
+ +
+ 🧯 ANTI-HYPE: start simple +

+ Vibe-coding shines for simple, useful tools: a document search engine, + a lightweight analytics dashboard, or a short report generator. + Human rights experts often miss exactly these basics: decision/document search, filtering, and XLSX export. + Build step by step and shift towards your own code changes as you learn. + Over-ambitious first projects often end like this: +

+
+ Ambitious project goes wrong (funny meme) +
“Ship the simple thing first, then grow.”
+
+
+ + + +
+ 💡 MESSAGES FROM ANDREJ KARPATHY +
+

How to become expert at thing:

+
    +
  1. Iteratively take on concrete projects and accomplish them depth wise, learning "on demand"
  2. +
  3. Teach/summarize everything you learn in your own words
  4. +
  5. Only compare yourself to younger you, never to others
  6. +
+

+ "LLMs are the new operating system - Software 3.0"
+ Watch: Software Is Changing (Again) +

+
+
+ + +
+ 🔬 WHY WE USE GOOGLE COLAB (NOT JUST AI) +

+ Writing code in Google Colab + and implementing the data analysis process ourselves (extraction, cleaning, text classification) provides: +

+ +

+ 💡 To start: Go to colab.research.google.com, + sign in with Gmail (create a new account if needed), and click "New Notebook". + It's the fastest way to start coding - no installation required! +

+
+ + +
+ ⚖️ WHY HUMAN RIGHTS NEEDS NLP & AI +

+ Human rights work is fundamentally about text: treaties, reports, legal documents, testimonies. + Even basic NLP techniques can be gamechangers for human rights work:
+


+

Read about promises and pitfalls of NLP and AI in judiciary in the recent report of the SR on Independence of Judges and Lawyers (A/80/169)

+

+ + +
+

+ How machine learning helps advance access to human rights information
+ + HURIDOCS is using machine learning to facilitate text classification for the UPR Info. + +

+
+ +
+
+ +
+ + + + +
+

🔧 DAY 1: Basics of Natural Language Processing

+ +
+ + +
+ 🔧 WHAT TO INSTALL BEFORE DAY 2 +

+ macOS: +

+ +
+
python3 --version
+
+ + +

+ Windows: +

+ +
+ + +
+

🚀 DAY 2: Building Your Own App - Document Database

+ +
+ + +
+ 💻 LOCAL DEPLOYMENT OF YOUR APP +

+ Quick setup for testing your app: +

+
    +
  1. In one folder: +
      +
    • index.html (the html file you developed yesterday)
    • +
    • ccpr.json (dataset that you already have)
    • +
    +
  2. +
  3. In terminal in this folder:
  4. +
+
+
# Python
+python -m http.server 8000 --bind localhost
+# or python3 -m http.server 8000 --bind localhost
+
+
    +
  1. Open in browser: http://localhost:8000
  2. +
+
+ + +
Seed prompt
+ +
+
+
+
+
+
seed_prompt.md
+
+
+ +
+

Example prompt:

+
+ +
+
+"Create a complete web application for searching 
+UN treaty body documents with the following functions:
+1. Paragraph-Level Extraction +- Extract the first 20 paragraphs from the UN document attached +- Each paragraph maintains its original numbering (1-20) +- Full text preservation with proper formatting + +2. Thematic Labeling System +- Each paragraph has been categorized with relevant UN human rights framework themes - come up with 6 most relevant. Display in the output why and how did you select and defined categories. + +3. Advanced Search Functionality +- Keyword Search: Find individual terms (e.g., "information," "speech") +- Thematic Filtering: Filter by specific human rights themes +- Highlight Results: Search terms highlighted in yellow +- Real-time Search: Instant results as you type + +4. User Interface +- Modern, responsive design similar to OHCHR style +- Live dashboard with stats about filtered documents - theme distribution, term frequency, and bigrams +- Glass morphism effects and professional appearance +- Color-coded theme tags for easy identification +- Paragraph numbering system for reference +- Intuitive copy text and citation function +- Mobile-friendly responsive layout" +
+
+Try cutting-edge models for free: LM Arena (instead of uploading the dataset, indicate the sample document, e.g., CCPR/C/GC/37 (right of peaceful assembly)

+Example output (Sonnet 4.5): Here's what you get (one prompt, zero tweaks!)
+
+
+
+
+ +

🚀 BEYOND GOOGLE COLAB: CLAUDE CODE & CODEX

+

Once you're comfortable with vibe-coding basics, graduate to professional tools:

+ +
+

Claude Code / Codex - The Difference:

+ +
+ Claude Code/Codex creates the ENTIRE project structure - ready to be uploaded! +
+ + +
Resources & Tools
+ +
+
+
+
+
+
resources.sh
+
+
+
+
#!/bin/bash
+
+echo "=== ESSENTIAL TOOLS ==="
+echo "• Claude/Gemini - Your vibe-coding partner"
+echo "• https://lmarena.ai/ - Free (limited) access to cutting-edge models"
+echo "• https://colab.research.google.com - Free Python environment"
+echo "• Dataset (CCPR): https://drive.google.com/drive/folders/1bw2NzG1FQhfcJQiOZdnVCK5ofn7ho6U1?usp=share_link"
+echo "• UN Treaty Body Database: https://lszoszk.pythonanywhere.com"
+
+echo "=== TOOLS FOR THE NEXT LEVEL ==="
+echo "• GitHub - Code sharing and version control"
+echo "• Hugging Face - Open source datasets and models"
+echo "• PyCharm - Coding environment with educational license"
+echo "• PythonAnywhere - Easy web app deployment"
+
+echo ""
+echo "=== ADDITIONAL MATERIALS ==="
+echo "• Karpathy: Software Is Changing (Again)"
+echo "• Karpathy: We’re summoning ghosts, not building animals [podcast]"
+echo "• Mollick: Centaurs and Cyborgs"
+echo "• Mollick: The Cybernetic Teammate"
+echo "• Marker: https://github.com/datalab-to/marker"
+echo "• HURIDOCS OCR repo: https://github.com/huridocs"
+echo "• DataCamp: What is Vibe Coding? [Pros and Cons]"
+echo "• SICSS @ AMU Law: https://sicss.io/2025/amu-law/"
+
+echo ""
+echo "=== EXAMPLE PROJECTS ==="
+echo "• UN Treaty Body Database"
+echo "• Polish Constitutional Court Explorer"
+echo "• Your future projects here!"
+
+
+
+
+ + +
Course Philosophy
+ +
+ 🎯 MY APPROACH +

+ Learning through building: I won't teach you programming theory. + Instead, you'll build real tools for human rights work and learn what you need along the way. +

+

+ Effort over entertainment: This course requires effort. + It's not meant to be easy, but it will be rewarding when you build something that helps real people. +

+

+ Compare to yourself: Don't worry about others' progress. + Focus on what you couldn't do yesterday but can do today. +

+
+ + +
Ready to Start?
+ +
+
+
+
+
+
start_journey.sh
+
+
+
+
#!/bin/bash
+
+echo "Starting your vibe-coding journey..."
+echo ""
+echo "Remember:"
+echo "  [✓] You don't need to be a programmer"
+echo "  [✓] You already have domain expertise"
+echo "  [✓] AI will be your coding partner"
+echo "  [✓] You'll build something meaningful"
+echo ""
+echo "The best time to start was yesterday."
+echo "The second best time is now."
+echo ""
+read -p "Press [ENTER] to begin your transformation..."
+echo ""
+echo "Welcome to the future of human rights tech! 🚀"
+
+
+
+
+ + +
Contact & Information
+ +
+
+
+
+
+
contact_info.txt
+
+
+

AUTHOR:

+

Łukasz Szoszkiewicz

+

Adam Mickiewicz University, Poznań

+

🌐 lszoszk.github.io

+

QUESTIONS?

+

Bring them to class - the best questions come from confusion!

+

Remember: There are no stupid questions, only missed opportunities to learn.

+
+
+ + + +
+ + + + + diff --git a/bin/fix-protobuf-macos.sh b/bin/fix-protobuf-macos.sh new file mode 100755 index 00000000..8831e891 --- /dev/null +++ b/bin/fix-protobuf-macos.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +set -euo pipefail + +PROTO_VERSION="${PROTOBUF_VERSION:-3.23.4}" +OS_NAME=$(uname -s) + +if [[ "${OS_NAME}" != "Darwin" ]]; then + echo "[info] This helper is optimized for macOS (Darwin). You're running ${OS_NAME}." >&2 +fi + +if ! command -v bundle >/dev/null 2>&1; then + echo "[error] Bundler (bundle) is not on PATH. Install bundler first." >&2 + exit 1 +fi + +# ensure Bundler writes into vendor/bundle so we don't need sudo +bundle config set --local path vendor/bundle >/dev/null +bundle config set --local force_ruby_platform true >/dev/null + +echo "[step] Removing any stale google-protobuf ${PROTO_VERSION} builds (ignore warnings if not installed)..." +bundle exec gem uninstall google-protobuf -v "${PROTO_VERSION}" -aIx >/dev/null 2>&1 || true + +echo "[step] Reinstalling gems via Bundler so google-protobuf ${PROTO_VERSION} is fetched again..." +CPU_COUNT=$( (command -v sysctl >/dev/null 2>&1 && sysctl -n hw.ncpu) || echo 4 ) +bundle install --jobs "${CPU_COUNT}" --retry 3 + +echo "[step] Verifying that google/protobuf_c can be required..." +bundle exec ruby -e "require 'google/protobuf_c'; puts 'google/protobuf_c OK ✅'" + +cat <<'MSG' +All good! Start the site with: + bundle exec jekyll serve --lsi +MSG diff --git a/reports/jekyll-run.md b/reports/jekyll-run.md new file mode 100644 index 00000000..27a6121b --- /dev/null +++ b/reports/jekyll-run.md @@ -0,0 +1,16 @@ +# Jekyll run attempt + +Date: 2025-11-15T21:19:23Z + +Commands: + +``` +bundle install +bundle exec jekyll serve --lsi +``` + +Result: `bundle install` failed because rubygems.org returned HTTP 403 Forbidden while fetching the gem index. Without the dependencies, `bundle exec jekyll serve --lsi` cannot run in this environment. + +Next steps: +- Retry `bundle install` when outbound network access to rubygems.org is available. +- Alternatively, vendor the required gems or provide an offline bundle cache inside the repository.