Skip to main content
frame (3)

🐢 slowLang – Slower is Better

🌐 Try it in your browser, no install: https://sebin-gg.github.io/slowlang/

More work by the same author: sebin-gg.vercel.app.

Read the story behind it: I built a programming language that punishes you for typing too fast.

A sarcastic programming language and IDE that throws errors if you type too fast.
Complete with a screaming ASCII turtle, poetic output, and a sassy, minimalistic Python IDE.
Why rush, when your code can feel... meaningful?

🏆 Winner — TinkerHub Useless Projects 2.0 hackathon, built by CS students at College of Engineering Chengannur, Kerala, India.


🧠 Basic Details

Team Name: XYZ

Team Members

  • Team Lead: Sebin Mathew – College of Engineering Chengannur
  • Abin Zachariah Abraham – College of Engineering Chengannur

🚫 The Problem (that doesn't exist)

Most programming languages focus on speed, efficiency, and productivity,
leading to stressful coding habits and unrealistic expectations on typing speed.


✅ The Solution (that nobody asked for)

slowLang introduces a language and IDE that enforces slow, mindful typing.
Typing too fast results in errors and angry turtle ASCII feedback.
It promotes "patience-oriented programming" with haikus, delays, and sarcastic praise.


🔧 Technologies / Components Used

Software:

  • Python (for IDE and core logic)
  • Tkinter (for the fake IDE UI)

Libraries:

  • keyboard
  • time
  • rich
  • os, sys, re, argparse (optional)
  • VS Code + Extensions

⚙️ Installation

pip install -r requirements.txt

Tkinter comes with Python by default on Windows/macOS. On Linux, install via sudo apt install python3-tk.


▶️ How to Run

Try the web demo (easiest):

Open https://sebin-gg.github.io/slowlang/ — the full IDE in your browser, same turtle, same rage, zero install. The desktop and web versions enforce identical rules.

Start the desktop IDE:

python ui-fakeide.py

IDE Features:

  • Live typing speed enforcement:
    Type too fast and a turtle rage window will pop up with sarcastic feedback — and count down your 2-second lockout.
  • Live WPM readout:
    The status line shows your rolling typing speed next to the turtle's verdict.
  • Line numbers:
    A gutter tracks every line, so "near line N" politeness errors point somewhere real.
  • Run code like Python:
    Use the "Run (like Python)" button to execute your code directly in the IDE. Rude code (no please() calls) is refused, just like the CLI.
  • Load sample:
    One click fills the editor with a polite starter program.
  • Gentle streak:
    Consecutive rage-free runs build a streak. Rage resets it. The turtle keeps score.
  • Python color scheme and smart indentation:
    The editor highlights Python keywords, strings, comments, and builtins, and auto-indents after colons for blocks.
  • Turtle moods:
    Different ASCII turtles for "too fast", "just right", and "too slow" typing.
  • Intro popup:
    Shows a summary of features before you start coding.
    • Wisdom: • The compiler will sometimes pop words of wisdom after execution.

Web demo extras (https://sebin-gg.github.io/slowlang/):

  • Mood face in the header, rage diary of the session, copy output/haiku buttons.
  • Offline mode: no network means the tiny fallback runner steps in and says so.
  • Randomness (lazy refusals, moods, haikus, loader jokes) is a feature, drawn from secure sources.

🐢 Language & IDE Features

  • Python-like syntax: Write and run code just like Python.
  • Speed enforcement: Typing too fast triggers sarcastic errors and turtle rage (in a popup window in the IDE).
  • Sarcastic feedback: Get sassy remarks and poetic haikus if you break the rules.
  • Fake IDE: Includes a Tkinter-based IDE with live feedback, Python color scheme, and smart indentation.
  • No PDF export, no .slow interpreter: All code is written and run directly in the IDE for a seamless, fun experience.

🧪 How to Test the IDE

  1. Start the IDE:

    python ui-fakeide.py
    
  2. Type your code in the editor window.

    • If you type too fast, a turtle rage popup will appear and sarcastic feedback will be shown.
    • If you slow down, the turtle will be happy.
  3. Run your code:

    • Click "Run (like Python)" to execute your code in the IDE.

To preview the web demo locally: python3 -m http.server --directory demo, then open http://localhost:8000.


📝 Example Code

print("Hello, world!")
for i in range(3):
    print(i)
print("Done!")

🖼️ Screenshots

Screenshot1
Fake IDE window with turtle ASCII reacting to fast typing.

Screenshot2
Sarcastic error: "Whoa there, Shakespeare. Try again... slower."

Screenshot3
"Compiled" poetic output of slow-written code.

📹 Video

🧑‍🤝‍🧑 Team Contributions

  • Sebin Mathew – Typing speed engine, sarcasm handler, turtle rage ASCII
  • Abin Zachariah Abraham – Fake IDE window UI, poetic output, emoji benchmark spoof

🧑‍🎓 What We Learned

  • UI/UX matters, even for joke projects:
    Making a fun, interactive, and visually engaging IDE (with popups, color schemes, and ASCII art) is as important as the core logic.
  • Python’s Tkinter is powerful and flexible:
    We learned how to build a custom code editor with syntax highlighting, smart indentation, and dynamic feedback using only standard libraries.
  • Injecting humor into code is a design challenge:
    Balancing sarcasm, fake delays, and playful feedback without frustrating the user too much required careful tuning.
  • Code structure and modularity:
    Separating sarcasm, ASCII art, and UI logic into different files made the project easier to maintain and extend.
  • Testing for edge cases:
    We had to handle cases like re-enabling the editor after errors, and making sure the turtle’s moods always matched the user’s typing speed.
  • Collaboration and version control:
    Using GitHub for collaboration, code reviews, and version management helped us work efficiently as a team.

Made with ❤️ at TinkerHub Useless Projects Badge Badge


📐 System Architecture

slowlang uses a real-time event-driven engine to monitor keystroke velocity and enforce cadence:

graph LR
    Key[Keystrokes] --> Engine[Typing Velocity Engine]
    Engine --> Check{WPM > Limit?}
    Check -- Yes --> Penalty[ASCII Rage & Delay]
    Check -- No --> Zen[Haiku & Execution]

Detailed state machine diagrams and runtime architecture documented in ARCHITECTURE.md.

🔒 Security

This repository uses gitleaks for automatic secret scanning on every commit.

Pre-commit Hook

A pre-commit hook is configured to scan for secrets before each commit. This helps prevent accidentally committing sensitive information like:

  • API keys
  • Passwords
  • Tokens
  • Private keys

Setup

To enable the pre-commit hook locally:

# Install pre-commit
pip install pre-commit

# Install hooks
pre-commit install

Bypass (Emergency Only)

In case of emergency, you can bypass the hook:

git commit --no-verify -m "emergency commit"

⚠️ Only use --no-verify in emergency situations. Regular commits should always be scanned.

Metadata

Release files for slowlang 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for slowlang 1.0.0
File Size Uploaded Provenance Actions
slowlang-1.0.0.tar.gz 16.1 kB Without provenance Details for slowlang-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for slowlang 1.0.0
File Interpreter ABI Platform Actions
slowlang-1.0.0-py3-none-any.whl Python 3 none any Details for slowlang-1.0.0-py3-none-any.whl

Total release size: 29.5 kB

Release files / slowlang-1.0.0.tar.gz

Download URL slowlang-1.0.0.tar.gz
Size 16.1 kB
Tags Source
SHA-256 checksum
How to use checksums
045885150e75ee1063551d86a2683990643f7aa8c19b9bd633b979e675198cbe
BLAKE2b-256 checksum
How to use checksums
cb1ced1dd5e7f7a22735100b43e8a6ba1db5ab175687938919d4b23e7ad1cf21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Release files / slowlang-1.0.0-py3-none-any.whl

Download URL slowlang-1.0.0-py3-none-any.whl
Size 13.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8cf6bd8b8ca0cbf6f053d3b4af176c4bc3c214fe7a6900df2438098873deabf4
BLAKE2b-256 checksum
How to use checksums
d0c1e5e4a99d46f6690ba777e2932103adbd0003cfda4f1adb0ff3c8263e9800
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Security for slowlang 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page