diff --git a/linecounter b/linecounter
new file mode 100755
index 0000000..a689595
--- /dev/null
+++ b/linecounter
@@ -0,0 +1,70 @@
+#!/usr/bin/env python3
+
+import os
+import sys
+
+def is_binary(file_path):
+    """
+    Determines if a file is binary by checking its content.
+    Returns True for binary files, False for text files.
+    """
+    try:
+        with open(file_path, 'rb') as f:
+            # Read the first 1024 bytes to check if it's binary
+            chunk = f.read(1024)
+            if b'\0' in chunk:
+                return True
+            return False
+    except Exception as e:
+        print(f"Error reading file {file_path}: {e}")
+        return True  # Treat unreadable files as binary for safety.
+
+def count_lines_in_file(file_path):
+    """
+    Counts the number of lines in a given text file.
+    """
+    try:
+        with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:
+            return sum(1 for _ in f)
+    except Exception as e:
+        print(f"Error counting lines in file {file_path}: {e}")
+        return 0
+
+def count_lines_in_directory(directory, extensions=None):
+    """
+    Recursively counts lines in all text files (optionally filtered by extensions) within the directory.
+    """
+    total_lines = 0
+    total_files = 0
+    for root, _, files in os.walk(directory):
+        for file_name in files:
+            file_path = os.path.join(root, file_name)
+
+            # Skip binary files
+            if is_binary(file_path):
+                continue
+
+            # Check for extensions if provided
+            if extensions and not file_name.lower().endswith(tuple(extensions)):
+                continue
+
+            # Count lines in the valid file
+            lines = count_lines_in_file(file_path)
+            total_lines += lines
+            total_files += 1
+
+    return total_files, total_lines
+
+if __name__ == "__main__":
+    # Get extensions from command-line arguments
+    extensions = [ext.lower() for ext in sys.argv[1:]] if len(sys.argv) > 1 else None
+
+    # Get the current working directory
+    current_dir = os.getcwd()
+    print(f"Scanning directory: {current_dir}")
+    if extensions:
+        print(f"Filtering by extensions: {', '.join(extensions)}")
+    total_files, total_lines = count_lines_in_directory(current_dir, extensions)
+    print(f"Total matching files: {total_files}")
+    print(f"Total lines across matching files: {total_lines}")
+
diff --git a/ollapull b/ollapull
new file mode 100755
index 0000000..e77d776
--- /dev/null
+++ b/ollapull
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+# Pull the latest version of every locally installed model:
+
+ollama ls | tail -n +2 | awk '{print $1}' | while read MODEL; do
+  echo "Pulling latest for $MODEL..."
+  ollama pull "$MODEL"
+done
+