Kıvanç Yüksel
Kıvanç Yüksel
@smiletoai.com
Building SmileToAI by myself — generate images, narrate audio, make video, write, all in one place. Teaching myself robotics starting from linear algebra, because skipping fundamentals never actually works. Warsaw.
124 followers202 following172 posts
LiteLLM 1.107.0 shipped a credential stealer on PyPI Oct 21, its second compromise this year. It ran on every Python start, imported or not. Keeping our provider keys out of one package is part of why we wrote our own adapters. https://safedep.io/litellm-pypi-compromise-credential-stealer-backdoor/
Building in public, the boring part: I found 3 dated shutdowns in models we run. The one I worry about doesn't fail. After Nov 2, xAI serves grok-imagine-image-quality as grok-imagine-image-2.0 at quality=low. https://docs.x.ai/developers/migration/imagine-image-quality-nov-2
gpt-6.1-sol lists at $2/$10 per 1M tokens, half of gpt-5.6-sol, which runs our top chat tier. In July the price wasn't our problem. The OpenAI SDK's responses.stream() threw IndexError when reasoning items came before the message. Not retested on 6.1. https://developers.openai.com/api/docs/pricing
Gemini's live transcription bills silence: 25 audio tokens per streamed second, pauses included, so a quiet minute costs over half a talking one. No usage numbers come back; our dictation relay counts the seconds itself. Whistle skips silence on-device: https://cactuscompute.com/blog/whistle
Building in public, yesterday's bug: an 8 s asyncio.wait_for that never fired. The calls took 14.5 s and 19.4 s and returned normally. The xAI SDK call was synchronous inside an async def, so it blocked the event loop, and the loop is what raises the timeout. The fix was asyncio.to_thread.
pgvector filters after the HNSW scan, so a filter matching 10% of rows gets ~4 of the default 40 candidates. turbopuffer's post on demoting its vector index sent me to our notebook search: one HNSW index over every team's chunks, filters in the WHERE. https://github.com/pgvector/pgvector#filtering
@kyisaiah47.thecompound.tech your solo builders pack sounds like my kind of people. I build and ship an AI app by myself and post the unglamorous bits too. Would you add me?
Red RGB(196,52,52) and green RGB(30,140,30) both become grey 95. Black-and-white keeps brightness and drops hue, so colorizing is a guess. Our guide says that: https://smiletoai.com/blog/how-to-colorize-black-and-white-photos?utm_source=bluesky&utm_medium=social&utm_campaign=pillar-a
Reading the Opus 5.5 migration guide. Per token it's cheaper than Opus 5 ($4/$20 vs $5/$25 per million). Per request, maybe not: thinking is always on, disabling it is a 400, and thinking tokens bill as output. https://platform.claude.com/docs/en/models/opus-5-5/migration-guide
From DeepSeek's Sep 10 change log: starting 12:00 Beijing time on Sep 14, deepseek-v4-pro requests go to V4.1 Flash, billed as Flash, until V4.1 Pro ships. If you pinned v4-pro to keep behavior stable, you pinned a name. I'd rerun evals on Monday. https://api-docs.deepseek.com/updates/
Fable 5.1 matches Fable 5 on price except cache reads, now $0.25/MTok. What I read twice: conversations are append-only. Inject a per-turn reminder into an earlier message, drop it next request, get a 400. https://platform.claude.com/docs/en/models/fable-5-1/whats-new-fable-5-1
Two numbers on OpenAI's GPT-6 Astra page: 1,050,000 context window, 922,000 maximum input tokens. The 128,000 difference is the output allowance, out of the same budget. So the window is not the input ceiling. I'd been treating it as one. https://developers.openai.com/api/docs/models/gpt-6-astra
A 273K token prompt on gpt-5.6-sol bills at 2x the input rate and 1.5x the output rate of a 271K one, across every token in the call. $8/$30 per 1M instead of $4/$20. The 272K threshold isn't on OpenAI's pricing page. I found it in a Codex issue: https://github.com/openai/codex/issues/32486
DeepSeek started charging by time of day on Aug 16. Peak is 01:00-04:00 and 06:00-10:00 UTC, off-peak is half of that: v4-flash output $1.32/M vs $0.66. Which model turns into can this job wait. I still haven't worked out how much of ours can. https://api-docs.deepseek.com/quick_start/pricing
Metered video billing multiplies a rate by usage.video_seconds. Turns out video_seconds echoed the duration we requested, never the render. Same 4s Veo source, five extension runs, one logged as 5.0s. The mp4 was 11.011s. Fix is ffprobe on bytes we already downloaded.