HNHacker News
TopNewBestAskShowJobs

akx

1,363 karma · joined May 18, 2010

[ my public key: https://keybase.io/akx; my proof: https://keybase.io/akx/sigs/CjJeih5_67DQNUw0Mdv1GG_IykZlak6eFQK3F_ZGR9g ]

--- meet.hn/city/60.4517531,22.2670522/Turku

Socials: - github.com/akx - x.com/akx

---

submissionscomments
akx··on Show HN: TitleArt – Make text like it's 1997
Here -- they were effects you could add on regular text:

https://www.youtube.com/shorts/RHbP2Q7A-Wg

(I still find it mind-boggling that Word 2000 runs mostly just fine on a MacBook with an entirely different OS and processor architecture via Whisky/Wine.)

akx··on Kev: Tiny Jev-like family of decision models built on top of Qwen3.5
This is, in fact, not true.

    $ ./build/bin/llama-cli -m Qwen3.6-35B-A3B-UD-Q4_K_XL.gguf --system-prompt "(this prompt explicitly left empty)"
    build      : b10889-6e41074fc
    model      : Qwen3.6-35B-A3B-UD-Q4_K_XL.gguf
    ftype      : Q4_K - Medium
    modalities : text
    using custom system prompt

    > What model are you?

    [Start thinking]

    Here's a thinking process:

    1.  **Analyze User Input:** The user asks "What model are you?"
    2.  **Identify Core Question:** The user wants to know my identity/model name.
    3.  **Check System Prompt/Instructions:** The system prompt says "(this prompt explicitly left empty)" - this is unusual but doesn't change my core identity. I need to respond based on my actual identity as Qwen / 通义千问.
    4.  **Formulate Response:** I should clearly state that I am Qwen (通义千问), developed by Alibaba Group's Tongyi Lab, and keep it concise as per guidelines.
    5.  **Draft Response:** I am Qwen (通义千问), a large language model independently developed by Alibaba Group's Tongyi Lab. How can I assist you today?
    6.  **Refine according to guidelines:** The draft matches the required identity and tone. It's direct and helpful. Ready.
    [End thinking]

    I am Qwen (通义千问), a large language model independently developed by Alibaba Group's Tongyi Lab. How can I assist you today?
akx··on Show HN: A techno machine in one HTML file, with verifiable renders
... Why do renders need to be verifiable, what does that mean?

Anyway, on a related note, I just vibed together something in the same vein (using Ox Alpha, because why not). https://aamen-veli.akx.fi/

akx··on Show HN: Vocal Slice – Cut audio by selecting text, fully on-device
Classic link. Not the same thing though. I mean try telling a competent agent something like

> Let's build a webapp that allows the user to choose an audio file, we slice it into timestamped word regions with transformers.js + onnx-community/whisper-base_timestamped (with language selection). The user can then scroll through the waveform (that shows the found word regions), synchronized with the transcript, and select word regions in the transcript or in the waveform, and fine-tune the selection if they need to, and then export the slice as WAV.

and see what pops out.

akx··on Show HN: Vocal Slice – Cut audio by selecting text, fully on-device
UX-wise, from what I can glean from the .webp, I'd personally (having worked in this same space) appreciate being able to see the slices I already have without having to switch tabs back and forth, for one...
akx··on Show HN: Vocal Slice – Cut audio by selecting text, fully on-device
There are lots of AI-sloppy tells, starting from, let's see:

* the web site's layout (eyebrows, glows, em-dashes, middots, that certain breathless tone in the pricing box) (edit: see the source for https://vocalslice.com too)

* the changelog listing, eg. the fact that you can search by language code as a headline feature

* in the app, things like "Click here to choose an audio file to transcribe – swap it any time" are Claude-like copy; I'd be surprised if you _couldn't_ change the audio file at any time?

* looking at https://vocalslice.com/demo.webp, another claudeism is the glowy status indicator blob, it really likes to add that by default.

If OP gets a business going with this, more power to them and all the best, but it really is something that's buildable pretty easily with transformers.js and models like onnx-community/whisper-small_timestamped. (Speaking of which, I hope OP is hosting the models somewhere themselves and not trusting, say, Hugging Face with the continuity of their business.)

akx··on Show HN: Vocal Slice – Cut audio by selecting text, fully on-device
How do GitHub's terms and conditions like using GitHub Releases as storage for proprietary binaries? I noticed the download link points to https://github.com/terranivium/vocal-slice-releases ... and the license there https://github.com/terranivium/vocal-slice-releases/blob/mai... points at a "THIRD-PARTY-NOTICES.md" file that doesn't exist.
akx··on 98.css
Something that always irked me about 98.css and its friends was the ever-so-slightly-incorrect version of MS Sans Serif.

Finally decided to do something about it: https://github.com/jdan/98.css/pull/230

akx··on Make zip files smaller with zip shrinker
To be fair, gnu tar 1.31, 2019-01-02, added `--zstd` (and other automatic .zst support). So that support has been there for a good 7 years and 4 months at the time of writing.
akx··on Make ZIP files smaller with ZIP Shrinker
> Typically, other archives like .tar.bz2 can be smaller. But those aren’t backwards-compatible!

Is there any point for (new) .bz2 archives in the era of Zstd?

akx··on Telnyx package compromised on PyPI
What do you mean with "basically ensures that dependencies won't become managed properly"?
akx··on Telnyx package compromised on PyPI
Sounds like you're not familiar with https://docs.astral.sh/uv/ ...
akx··on Everything old is new again: memory optimization
This doesn't do the same thing though, since it's not Unicode aware.

    >>> 'x\u2009   a'.split()
    ['x', 'a']
    # incorrect; in bytes mode, `\S` doesn't know about unicode whitespace
    >>> list(re.finditer(br'\S+', 'x\u2009   a'.encode()))
    [<re.Match object; span=(0, 4), match=b'x\xe2\x80\x89'>, <re.Match object; span=(7, 8), match=b'a'>]
    # correct, in unicode mode
    >>> list(re.finditer(r'\S+', 'x\u2009   a'))
    [<re.Match object; span=(0, 1), match='x'>, <re.Match object; span=(5, 6), match='a'>]
akx··on Show HN: Minimalist Glitch Art Maker (100% client-side)
This inspired me to update my over-a-decade-old glitch generator https://akx.github.io/glitch2/ with camera input and a handful of new modules.
akx··on Pocket TTS: A high quality TTS that gives your CPU a voice
It's pretty good. And for once, a software-engineering-ly high-quality codebase, too!

All too often, new models' codebases are just a dump of code that installs half the universe in dependencies for no reason, etc.

akx··on What an unprocessed photo looks like
If someone's curious about those particular constants, they're the PAL Y' matrix coefficients: https://en.wikipedia.org/wiki/Y%E2%80%B2UV#SDTV_with_BT.470
akx··on The 'Toy Story' You Remember
You'd think there was a LUT you could apply to the digital copies during playback to make it look (more) like the original...
akx··on Show HN: Sping – An HTTP/TCP latency tool that's easy on the eye
These days, once you have https://docs.astral.sh/uv/ installed, `uvx --from service-ping-sping sping` is pretty much zero effort to run this software.
akx··on Code formatting comes to uv experimentally
> Is `uv format` supposed to be an alias for `ruff check`?

I'd imagine not, since `ruff format` and `ruff check` are separate things too.

akx··on Show HN: Kitten TTS – 25MB CPU-Only, Open-Source TTS Model
This is a fun model for circuit-bending, because the voice style vectors are pretty small.

For instance, try adding `np.random.shuffle(ref_s[0])` after the line `ref_s = self.voices[voice]`...

EDIT: be careful with your system volume settings if you do this.

akx··on Show HN: Kitten TTS – 25MB CPU-Only, Open-Source TTS Model
Ah, yeah, good catch – I added the model-native speed multiplier to the CLI too (`--speed=1.2` for instance).
akx··on Show HN: Kitten TTS – 25MB CPU-Only, Open-Source TTS Model
I'll help you along - this is the core function that Kitten ends up calling. Good luck!

https://github.com/espeak-ng/espeak-ng/blob/a4ca101c99de3534...

akx··on Show HN: Kitten TTS – 25MB CPU-Only, Open-Source TTS Model
I opened a couple of PRs to fix this situation:

https://github.com/KittenML/KittenTTS/pull/21 https://github.com/KittenML/KittenTTS/pull/24 https://github.com/KittenML/KittenTTS/pull/25

If you have `uv` installed, you can try my merged ref that has all of these PRs (and #22, a fix for short generation being trimmed unnecessarily) with

    uvx --from git+https://github.com/akx/KittenTTS.git@pr-21-22-24-25 kittentts --output output.wav --text "This high quality TTS model works without a GPU"
akx··on Uv: Running a script with dependencies
`uv run --offline` will use cached dependencies and not check for newer versions. Works for `uvx` too, i.e. `uvx --offline ...`.
akx··on A new PNG spec
This is what stable-diffusion-webui does too (though the format is unfortunately plaintext); ComfyUI stores the node graph as JSON, etc.
akx··on uv: An extremely fast Python package and project manager, written in Rust
Why even `git clone`? With a properly packaged project, you can just `uvx --from=git+https://github.com/akx/bindl.git bindl`
akx··on uv: An extremely fast Python package and project manager, written in Rust
`UV_PROJECT_ENVIRONMENT` works fine for that. That's what I use for my venv-managing Fish functions: https://gist.github.com/akx/c357bbda9facbe41f08747a2622795c4
akx··on uv: An extremely fast Python package and project manager, written in Rust
And when you run the upgrade-all-dependencies script and some dependency has a semver-major/otherwise breaking upgrade, everything depending on it breaks at once.

Hopefully one of those things isn't your backup cronjob.

akx··on Show HN: Sam TTS – Recreates the classic Microsoft SAM voice in the browser
Speaking of that sort of thing, have you seen https://dood.al/pinktrombone/ (/ https://github.com/imaginary/pink-trombone/)?
akx··on Show HN: Sam TTS – Recreates the classic Microsoft SAM voice in the browser
* Windows XP's speech synthesizer wasn't SAM (Software Automatic Mouth), and sounded nothing like this. (I know this is emulating Software Automatic Mouth, because, well, https://samtts.com/lib/sam.js says so, and has a link to https://github.com/discordier/sam. It would be courteous to at least acknowledge the shoulders you're standing on.)

* I would be very wary about touting this to be "Microsoft SAM TTS" so prominently, since it has nothing to do with Microsoft.

* Your privacy policy page is from "Image to Ghibli".

* Your contact and about pages are 404.

* All of the copy smells like AI, and "5 stars from 2000+ happy users" is probably a blatant lie. (Where can I see some of those 5-star reviews, or review it myself?)

* "Our modern SAM TTS JavaScript implementation brings this iconic Microsoft voice to your browser" is also pretty disingenious, both because it's not a Microsoft voice, and as seen above, you didn't implement the TTS.

* Some of the alternate TTS implementations you link to (and then embed from Huggingface) in the footer are broken.

* Your Sign-in button (why would I sign in anyway?) is broken: "Access blocked: This app’s request is invalid" from Google, "Error 400: redirect_uri_mismatch".

Page 1 of 21Next →