About
Project Overview
The Dangerous Writing App is a minimalist desktop editor built in Python with zero external dependencies. If you stop typing for 5 seconds, the editor clears everything. It replicates the “Most Dangerous Writing App” concept in a desktop form while emphasizing clean code, clarity of intent, and maintainability.
Core Technologies
- Python 3 (standard library only)
- Tkinter for GUI and event loop
- Timer via
after(1000, ...)cadence - Single
Textwidget for editing + a status bar
Technical Execution & Problem Solving
I constrained scope to the least amount of code that still reads well and is easy to extend.
The app is organized as a single class (DangerousWriter) with small, well-named methods
(_tick, _on_key) and comments explaining intent. The countdown uses a single
periodic tick scheduled by Tkinter’s event loop—no threads or extra timers—to avoid drift and complexity.
- Timer design: one recurring tick and an integer
remainingcounter for reliability. - Input handling: binding
<Key>resets inactivity in a single place. - UX clarity: a simple status label provides live feedback (seconds remaining, timeout events).
- Maintainability: UI setup, timer logic, and event handling are separated within the class for easy refactors.
Key Features / Technical Highlights
- Inactivity wipe: clears all text after 5 seconds of no input.
- Minimal UI: one editor pane + subtle status bar for focus.
- Zero dependencies: portable across platforms with standard Python.
- Clean structure: single-file, documented, and easy to extend.
Demonstrated Skill Set
- Pragmatic technology selection and scope control
- Event-driven desktop UI design and state management
- Readable code: naming, comments, docstrings, small functions
- Performance-aware UX decisions without over-engineering
- Foundation for testing and future features
Reflection & Next Steps
The main challenge was resisting scope creep while keeping the experience polished. The big learning was how effective a single event loop + fixed cadence can be for timing logic in small desktop tools. If iterating further, I would add:
- Input filtering: reset the timer only on actual text insertions.
- Warning phase: brief background flash or audio cue before deletion.
- Configurability: timeout slider or
--timeoutflag; theme and font size toggles. - Testing: unit tests for timeout edges and event handling.