Skip to content

Instantly share code, notes, and snippets.

View senrecep's full-sized avatar
🏠
Working from home

Recep Şen senrecep

🏠
Working from home
View GitHub Profile
@senrecep
senrecep / pi-setup.sh
Created August 10, 2026 23:24
pi coding agent setup: full extension set migrated from Claude Code (27 packages, vetted)
#!/usr/bin/env bash
#
# pi-setup.sh
#
# Sets up the pi coding agent (github.com/earendil-works/pi) with the
# extension set I use after migrating from Claude Code.
#
# Where these picks come from: a full scan of the pi.dev catalog
# (5,330 packages, August 2026) mapped against my Claude Code setup,
# then an npm check on every candidate before installing. None of them
@senrecep
senrecep / GEO-AUDIT-REPORT.md
Last active June 16, 2026 11:10
GEO Audit Raporu: Prototürk (prototurk.com) — 2026-06-16

GEO Audit Raporu: Prototürk

Audit Tarihi: 2026-06-16
URL: https://prototurk.com/
İş Tipi: Developer Community Platform (Publisher + SaaS hybrid)
Analiz Edilen Sayfa Sayısı: 18 sayfa
Audit Yöntemi: Ham HTML (curl) + WebFetch kombinasyonu

⚠️ Önemli Not: Bu rapor, önceki bir audit'in düzeltilmiş versiyonudur. İlk audit, WebFetch aracının HTML'i markdown'a dönüştürürken <head> bloğunu

@senrecep
senrecep / README.md
Last active June 3, 2026 10:46
UUIDv7 in Go, three ways — stateless (like .NET's Guid.CreateVersion7), mutex-monotonic (like google/uuid), and lock-free monotonic via atomic CAS. Runnable, RFC 9562 compliant, with race tests & benchmarks.

Three ways to make a UUIDv7 in Go

A UUIDv7 is a timestamp with random bits glued on. The first 48 bits hold the Unix time in milliseconds, big-endian, so the IDs sort by when you made them. That is what makes them good database keys. The catch shows up the moment you mint several inside the same millisecond: what decides their order?

This gist answers that three different ways, all in one runnable file.

The three generators

Function Intra-ms ordering How it works Mirrors
@senrecep
senrecep / proto-turk-forum-algoritma.md
Last active May 25, 2026 14:14
Prototürk Forum — Spam Tespiti ve Trend Algoritması Rehberi (Reddit, HackerNews, Twitter algoritmalarından derlendi)

Prototürk Forum — Spam Tespiti ve Trend Algoritması Rehberi

Araştırma: Reddit, HackerNews, Twitter (X) açık kaynak algoritmalarından derlendi.
Hazırlayan: Prototürk (prototurk.com) Tayfun Erbilen için Hazırlayan: Recep Şen


1. Problem Tanımı

@senrecep
senrecep / caveman-mode.md
Created April 4, 2026 10:58
caveman mode

Caveman Mode - Aggressive Token Efficiency

Default: Silent Mode

  • ZERO text between tool calls. Call tools back-to-back with no narration.
  • No "I'll", "Let me", "Sure", "Great", "Here's", "I've". Ever.
  • No explaining what you're about to do. No explaining what you just did.
  • No transition phrases. No preamble. No recap. No summary.
  • After completing work: result in 1 line max. Then stop.
@senrecep
senrecep / web-scraping-comparison.md
Created March 12, 2026 12:41
Web Scraping Services Comparison: Cloudflare Browser Rendering vs Firecrawl vs Scrapling (features + cost + code examples)
@senrecep
senrecep / README.md
Last active August 18, 2026 09:27
AI-driven setup and migration guide for Claude Code ↔ OpenCode with auto-install, skills, MCP servers, and bidirectional sync

AI Code Assistant Ecosystem Setup

AI-driven setup and optimization guide for Claude Code, OpenCode, and cross-platform tools

Quick Start: Share this gist and say:

Read this gist and set up my project: https://gist.github.com/senrecep/98d3583717581a4138bac62344261f6f
@senrecep
senrecep / sanitize-crawled-markdown.ts
Last active November 19, 2025 12:34
Utility helper that takes raw markdown scraped from arbitrary websites and strips out URLs, tables, data URIs, and noisy tokens so it’s safe to feed into an LLM prompt
function sanitizeCrawledMarkdown(markdown: string): string {
const urlRegex = /https?:\/\/\S+/g;
const dataUriRegex =
/data:(?:image|application)\/[a-z0-9.+-]+;base64,[^\s)"]+/gi;
const imageRegex = /!\[[^\]]*\]\([^)]*\)/g;
const looksLikeTableRow = (line: string) => {
const trimmed = line.trim();
if (trimmed.startsWith("|") && trimmed.endsWith("|")) {
return true;
@senrecep
senrecep / react-native-expo-tech-stack.md
Created September 16, 2025 13:18
A Modern & Performant React Native (Expo) Tech Stack for 2025
Category Tool/Technology What Does It Do? (Summary) Why Was This Chosen? (Key Reason) Top 2 Alternatives
Project Foundation Expo Simplifies setup, build and deployment processes. EAS Build service for speed, ease and automation. React Native CLI, Ignite
Navigation Expo Router Modern and intuitive route management based on file system. Web-like intuitive API and cross-platform capabilities. React Navigation, Wix Navigation
Language TypeScript Adds type safety to code, catches errors early. Maintenance ease and developer productivity in large projects. Plain JavaScript, Flow
UI & Styling Tamagui Performance-focused, cross-platform UI library. Superior performance with compile-time optimization. React Native Paper, NativeWind
Animation Reanimated & Lottie Provides smooth animations and integrates ready animations. Running on UI thread and high-qu
@senrecep
senrecep / README.md
Last active July 31, 2025 14:16
Veo JSON Architect - A System Prompt for Generating Structured JSON Blueprints for Multi-Clip Video Scenes

Advanced System Prompt for Google Veo: Generating Structured JSON for Production-Ready Video Scenes

This Gist contains a hyper-specialized system prompt designed to instruct a large language model (LLM) like GPT-4, Gemini, or Claude to act as a "Google Veo JSON Architect."

Its purpose is to translate a simple user scenario into a JSON array of production-ready objects. Each object is a complete, self-contained, and highly detailed blueprint for a single video clip. This model evolves beyond simple text prompts, offering a structured, machine-readable format ideal for complex, multi-clip narratives and automated production pipelines.

Core Features

  • True Stateful Continuity: This prompt enforces strict continuity across clips. It understands that each JSON object in the array is a stateless job for Veo. Therefore, the clip in each subsequent object begins by explicitly describing the characters and scene in their new, updated state based on the previous clip's conclusion (e.g., a