Skip to content

fuck im leaking...#6

Merged
vxfemboy merged 4 commits into
masterfrom
harder
May 17, 2026
Merged

fuck im leaking...#6
vxfemboy merged 4 commits into
masterfrom
harder

Conversation

@vxfemboy

@vxfemboy vxfemboy commented May 12, 2026

Copy link
Copy Markdown
Owner

wipedicks v1.0.0

Two years ago we posted to r/programming, the redditors had notes, and someone opened an issue asking for a live ASCII penis progress bar.

TL;DR

  • Won't trash your SSD anymore. Refuses to multi-pass overwrite flash by default and points you at the right native secure-erase command instead. --secure-erase will run it for you.
  • Live [8========D~~~~] progress bar that resolves #1.
  • Configurable shaft length, jizz volume, balls chance, plus 23 randomized completion verbs (fucked / creamed / 🥛 milked / 💀 destroyed / ☢ nuked / ...). The cum father asked.

Reddit FAQ

"Doesn't support configuring lengths or jizz amounts 😞" Light_Wood_Laminate Reddit comment

It does now. Five new knobs:

wipedicks \
  --shaft-min 20 --shaft-max 40 \   # how long the =====
  --jizz-min  5  --jizz-max  10 \   # how much ~~~
  --balls-chance 1.0 \              # 0.0..1.0 probability of #
  ./your_file

--dry-run previews the generator output without destroying anything, so you can tune the dick dimensions to taste.

The code review

Deleted Reddit user's code review

(Same comment also surfaced as issue #2 fixed verbatim.)

  • Error Handling — failed wipes now always run the fs::remove_file cleanup pass. No more half-pumped corpses lying around in your directory.
  • Code Organizationmain.rs is gutted from 175 lines to ~120. Logic split into seven modules: cli, dicks, wipe, drive, safety, cleanup, progress.
  • Performance — buffered 1 MiB SIMD-batched writes. The original was ~5000× more syscalls than necessary. DickBuf::fill() runs once per round and the same dicks are rewritten for every chunk in that round.
  • Randomness — the dead-on-arrival fast_rand_dick cache is gone. Per-thread SmallRng instead, so threads can't step on each other's seeds.
  • Command Line Argumentsclap derive macros, full --help with per-flag long descriptions, cross-flag validation in Args::validate().
  • Thread Safetythread::scope for join-before-return; bounded worker pool sized to available_parallelism() instead of spawning one OS thread per file.
  • File Existenceparse_filelist runs single-threaded before any worker fires.
  • Code Style — was already snake_case (the reviewer was hallucinating about camelCase), but everything passes cargo fmt --check and cargo clippy -- -D warnings on Linux, macOS, and Windows now.

Closes #1 — Endless Dick Scroll

#1: "Dynamic ASCII penis generation. Real-time updates to reflect the progress of the treatment."

[8=D~~~~~~~~~~~~~~]   1.00 MiB/64.00 MiB   2%  /tmp/victim
[8=========D~~~~~~]  32.00 MiB/64.00 MiB  50%  /tmp/victim
[8==============D]   64.00 MiB/64.00 MiB 100%  /tmp/victim 💦 creamed

Bytes shift yellow→green as you approach 100%. Total bytes stay cyan. Path is bright red. Add --gay and the shaft cycles ROYGBIV.

What's in the box

Safety

  • SSD/NVMe refusal with per-platform classification. Linux: /proc/self/mountinfo + queue/rotational. macOS: diskutil info -plist. Windows: stub (DriveKind::Unknown for now — issue filed for native Get-PhysicalDisk impl).
  • --secure-erase delegates to the right native tool: nvme format -s 1 for NVMe, hdparm --security-erase for SATA. Actually effective, doesn't burn PE cycles.
  • Path-safety guards refuse /, /boot, /etc, /usr, /var, swap files (/proc/swaps), and mounted block devices (/proc/self/mountinfo). --rape overrides. (Yes, the flag is called --rape. Match the project tone or use a different tool.)
  • Ctrl-C cleanup registry — interrupted wipes still unlink their temp files. Idempotent with the normal exit path.
  • --verify reads each round back and confirms every byte is in the canonical penis alphabet {8, =, #, D, ~, ' '}. Catches bad sectors and FS-level corruption.

Performance

  • Buffered writes at 1 MiB chunks (--buffer-size configurable). One write(2) per chunk vs. one per penis.
  • Per-round buffer reuse — within a single overwrite pass we write the same buffer for every chunk. Across passes, fresh randomness. ~100× less RNG work on multi-pass runs.
  • SIMD-batched shaft fill via the wide crate (u8x32::splat). Stable Rust, no nightly.
  • Bounded thread pool via std::thread::scope + Mutex<Vec<PathBuf>> work queue. Sized to available_parallelism().

UX

  • Live progress bar matching the issue spec, rendered via a custom indicatif::with_key callback so the D stays in frame at 100%.
  • 23 random completion verbs, each with its own color and bold/underline/italic mix. Some get emoji prefixes (🥛 milked, 💦 creamed, ☢ nuked, 💀 destroyed, 🍆 pounded, 🍑 creampied). Picked once per file, never shuffles mid-render.
  • --gay rainbow mode, jizz always bright white, file path always red.
  • --dry-run to preview the generator without destroying anything.

Infra

  • GitHub Actions CI on ubuntu-latest, macos-latest, windows-latest. Every push runs cargo fmt --check, cargo clippy --all-targets -- -D warnings, cargo build --release, cargo test --release.
  • Release workflow on v* tags builds prebuilt binaries for x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu, x86_64-apple-darwin, aarch64-apple-darwin, x86_64-pc-windows-msvc and attaches them to the GitHub release.
  • Zero unsafe. Seven unit tests. Cross-target check via cargo check --target x86_64-pc-windows-gnu clean.

Demo

wipedicks plowing 6 HDDs in parallel on an R710

Six 12 TB drives on an R710, wiped in parallel via SSH, with live colorized hexyl panes watching the first 256 bytes of each drive. Before:

00000000: 5a 46 53 ...  (zfs labels, partition tables, your data)

After:

❤  xxd /dev/sdm
00000000: 383d 447e 7e20 383d 3d3d 3d3d 3d3d 447e  8=D~~ 8=======D~
00000010: 2038 233d 3d3d 3d3d 3d3d 3d44 7e7e 2038   8#========D~~ 8
00000020: 233d 3d44 7e7e 2038 3d3d 3d3d 3d3d 3d3d  #==D~~ 8========

Quality bar

Check Status
cargo fmt --check clean
cargo clippy --release --all-targets -- -D warnings (linux/macos/windows) clean
cargo build --release (linux/macos/windows) clean
cargo test --release 7/7 pass
unsafe blocks 0
MSRV stable (any 1.85+, for ErrorKind::StorageFull)

Credits

  • Drewsif/wipedicks the original idea.
  • The r/programming thread. code review and feature requests in the only style this project deserves.
  • #1 Endless Dick Scroll, finally delivered.

8====D~~~

@vxfemboy vxfemboy self-assigned this May 12, 2026
@vxfemboy vxfemboy linked an issue May 12, 2026 that may be closed by this pull request
@vxfemboy vxfemboy added the enhancement New feature or request label May 12, 2026
vxfemboy added 3 commits May 14, 2026 12:21
  I had an old computer that just got fixed I turned it on and it had asked for a password.
  I asked my bf 'What the password was?'
  He replied 'MY PENIS'
  Two seconds later and went back to him and said its says ITS 2 SHORT.
@vxfemboy vxfemboy merged commit 41d8696 into master May 17, 2026
3 checks passed
@vxfemboy vxfemboy deleted the harder branch May 17, 2026 23:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request: Endless Dick Scroll

1 participant