title: Design & Implementation of Human-Computer Interfaces papersize: a4 numbersections: false documentclass: scrartcl toc: false toc-title: 'Contents' geometry:
- margin=0.5in colorlinks: true
| // ==UserScript== | |
| // @name New script github.com | |
| // @namespace Violentmonkey Scripts | |
| // @match https://claude.ai/* | |
| // @grant none | |
| // @version 1.0 | |
| // @author - | |
| // @description 8/18/2024, 12:49:16 AM | |
| // ==/UserScript== |
| VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json vulkaninfo --summary |
| // Place your key bindings in this file to override the defaultsauto[] | |
| [ | |
| { | |
| "command": "workbench.action.nextEditor", | |
| "key": "shift+l", | |
| "when": "vim.mode == 'Normal' && (editorTextFocus || !inputFocus)" | |
| }, | |
| { | |
| "command": "workbench.action.previousEditor", | |
| "key": "shift+h", |
title: Design & Implementation of Human-Computer Interfaces papersize: a4 numbersections: false documentclass: scrartcl toc: false toc-title: 'Contents' geometry:
| #!/usr/bin/env bash | |
| # Loop through all week* directories | |
| for dir in week*/; do | |
| # Extract week number from directory name | |
| week_num=$(echo "$dir" | grep -o '[0-9]\+') | |
| # Enter directory | |
| cd "$dir" |
| #!/bin/bash | |
| # Check if required tools are installed | |
| command -v pdfimages >/dev/null 2>&1 || { echo "pdfimages is required but not installed. Install poppler-utils."; exit 1; } | |
| command -v img2pdf >/dev/null 2>&1 || { echo "img2pdf is required but not installed. Install img2pdf."; exit 1; } | |
| # Create output directory if it doesn't exist | |
| mkdir -p output_pdfs | |
| mkdir -p temp_images |
| // Moved to a github repo for versioning, the file can now be loaded from a CDN | |
| // <script type="module" src="https://esm.sh/gh/loueed/bsky@v1.0.0/comments"></script> | |
| class BskyComments extends HTMLElement { | |
| constructor() { | |
| super(); | |
| this.attachShadow({ mode: "open" }); | |
| this.visibleCount = 3; | |
| this.thread = null; | |
| this.error = null; |
| pw_all_content_2025-01-25.json | |
| pw_downloads.crawljob |
| // ==UserScript== | |
| // @name CustomYTSpeed | |
| // @version 0.4 | |
| // @description Allows the user to set a custom playback speed on YouTube.com videos | |
| // @match *://*.youtube.com/watch* | |
| // @grant none | |
| // ==/UserScript== | |
| // deno-lint-ignore-file no-window | |
| (function () { |
| import re | |
| import csv | |
| from pathlib import Path | |
| def parse_questions(content): | |
| questions = [] | |
| # Look for question patterns - Q.1, Q.2, etc. and capture the content until the next question | |
| question_pattern = re.compile(r'(Q\.\s*\d+(?:\s*–\s*Q\.\s*\d+)?\s+(?:Carry|carry)\s+(?:ONE|TWO|one|two)\s+marks?(?:\s+Each)?|Q\.\s*\d+(?:\s*–\s*Q\.\s*\d+)?)') |