Live data from Hacker News

Ask HN: What are you working on? (March 2025)

news.ycombinator.com

301–310 of 1001 posts

Re: Ask HN: What are you working on? (March 2025)

#302
Open source presenter software. If you ever need to show something on screen, this will handle it for you. Useful for any events like concert, conference, camps, etc. You can also use it for things like digital signage.

Still a lot of features to be added, but it's already useful for simple use-cases.

https://github.com/Vija02/TheOpenPresenter

Re: Ask HN: What are you working on? (March 2025)

#303
I want to build a "tokio for C++" where the user can run CPU bound tasks freely without having to worry about introducing tail latencies. For now I gave it the code name Rio, but that may change.

This is at the very early stages where I have a design sketch and some experiments that validate the design. Below is the README:

Rio is an experimental C++ async framework. The goal is to provide a lightweight framework for writing C++ server applications that is easy to use and provides low consistent latencies.

Today, async frameworks that focus on efficiency typically use one of two architectures:

1. Shared nothing architectures, also called thread-per-core. This is used by frameworks such as Seastar and Boost.Asio. In a shared-nothing architecture, each worker thread runs its own event loop and is intended to run on its own dedicated core. The application is architected to shard its workload over multiple workers with only infrequent communication between them. When a task performs a CPU bound task, it needs to be explicitly run in a thread pool as otherwise it would block other tasks from running in the current worker (often referred to as a "reactor stall").

2. Work stealing architectures. This architecture is used by frameworks such as Tokio. In this case there are also multiple worker threads, each running their own event loop. When a specific worker gets overloaded or runs a blocking task, other threads can execute ready tasks. This goes some way to prevent reactor stalls. However, even though other threads can steal ready tasks, they do not poll the event loop for new readiness events. This means that a task that does not yield back to the runtime will increase latencies for other requests assigned to that worker.

The thesis for Rio is that in real-world server applications, it gets increasingly hard to ensure you yield back frequently to the event loop. In particular, there are many CPU bound tasks that server applications commonly perform, such parsing protocols, or performing encryption and compression. If tasks take less than ~10 microseconds it is often not worth it to offload these to a thread pool as the system call overhead of synchronization will take more time than this. Additionally, putting in various thread offloads makes it harder to develop, especially in larger teams with individuals of different experience levels. The result is that there will either be too many work pushed on thread pools or too little. The net effect will be that latencies will be less consistent.

Rio is an experiment for a work stealing architecture where completion events can also be stolen. The Rio runtime uses multiple worker threads to handle asynchronous tasks. Each worker threads runs its own io_uring, which is also registered to an eventfd. A central "stealer" thread listens to the eventfds for all workers. When an readiness event becomes available, the stealer will check if the corresponding thread is currently executing a task. If so, it will signal an idle worker with a request to process the completion event and run any tasks that results in it. The stealing logic is aware of the system topology and will try to wake up a thread that shares a higher level cache with the task.

Re: Ask HN: What are you working on? (March 2025)

#304
My toddler has a LeapFrog talking dictionary that drives my teenage daughter crazy. So I just started a project to replace its logic board with a RPi Pico 2 and interfacing with all ~45 of the toy's buttons and LEDs via a couple of GPIO expansion cards.

We'll have about ~300 short audio clips to record, and we'll store/access them via an SPI SD card reader peripheral. Audio output via a MAX98357A combo DAC/class D amplifier that we'll talk to via I2S. Powered by 2 AA batteries. Programming will be in CircuitPython, which is a cool way to teach the kids programming. (There are easy libraries for talking to all those peripherals.)

Re: Ask HN: What are you working on? (March 2025)

#305
I'm working on Video Clip Library (https://videocliplibrary.com), a desktop app for browsing, searching, and managing large collections of video files locally on your computer.

It's essentially a small search engine for videos that runs locally on your laptop. Previously, the system just extracted information about whole video files and maintained a searchable list of those files.

I'm putting the finishing touches on a major architectural change to solve a request from someone who creates highlight reels for professional soccer matches. They needed to tag and search for specific moments within videos - like all goals scored by a particular player across dozens of camera angles of dozens of matches.

This required re-engineering the entire data model to support metadata entries that point to specific segments of a file entity rather than just the file itself.

Instead of treating each file as an atomic unit, I now separate the concept of "content" from the actual files that contain it. This distinction allows me to:

1. Create "virtual clips" - time segments within a video that have their own metadata, tags, and titles - without generating new files

2. Connect multiple files that represent the same underlying content (like a match highlight with different ad insertions for YouTube vs. Twitch)

3. Associate various resolution encodings with the same logical content

For example, a content creator might have multiple versions of the same video with different ad placements for different channels. In the old system, these were just separate, unrelated files. Now, they're explicitly modeled as variants of the same logical content, making organization and search much more powerful.

I also completely reworked the job system, moving from code running in the Electron main process to spawning Temporal in a child process. I know it sounds like overkill for a desktop app, but it's been surprisingly perfect for a desktop app that's processing hundreds of terabytes of video.

When you're running complex ML pipelines on random people's home computers, things go wrong - custom FFmpeg versions that don't support certain codecs, permission issues with mounted volumes, their local model server crashes. With Temporal, when a job fails, I just show users a link to the Temporal Web UI where they can see exactly what failed and why. They can fix their local config and retry just that specific activity instead of starting over. It's cut my support burden dramatically.

My developer experience is so much better too. The ML pipeline for face recognition has multiple stages (small model looks for faces, bigger model does pose detection, embedding generation with even larger model) that takes minutes to run. With Temporal, I can iterate on just the activity that's failing without rerunning the entire pipeline. Makes developing these data-intensive workflows so much more manageable.

Re: Ask HN: What are you working on? (March 2025)

#306

I'm working on tooling to turn kids from consumers into creators. I'm focusing on game development initially, but have plans for video production and hands on crafts. For younger kids I've modified Overcooked 2, a traditionally co-op game. I've replaced the second player with a visual scripting platform that allows kids to code their way through levels — worth noting I haven't removed co-op, there's still room for 2…

I love your Overcooked mod.

Re: Ask HN: What are you working on? (March 2025)

#308

I'm working on pure.md[1], which lets your scripts, APIs, apps, agents, etc reliably access web content in markdown format. Simply prefix any URL with `pure.md/` and you get the unblocked markdown content of that webpage. It avoids bot detection and renders JavaScript-heavy websites, and can convert HTML, PDFs, images, and more into pure markdown. pure.md acts as a global caching layer between LLMs and web content. I…

Thanks for sharing. I was planning on building something like this in April after hitting too many issues with Jina and Tavily but it looks like you've already done the hard work!

Thanks! Still a work in progress :-)

Re: Ask HN: What are you working on? (March 2025)

#309

- Semi-automated job finder for a job site focused on non-mainstream programming languages [1]. - Eiffel-inspired programming language [2]. It's hard to juggle between the two. [1] https://beyond-tabs.com [2] https://github.com/andreamancuso/rivar-lang

Very nice on both! I've long had an affinity for non-mainstream programming languages (mostly those with Wirth lineage). I wish there were more projects that used them.

Re: Ask HN: What are you working on? (March 2025)

#310

I've been putting together a no-nonsense free invoice generator, for people (like myself) that only occasionally send invoices. It's more-or-less a WYSIWYG editor, and the state is stored in the URL, so you don't have to worry about keeping track of where you stored your copy - if you've sent someone an email with the link, you've got a copy. This project was born out of the frustration of trying to generate an invoi…

Pls add support for changing currency and deductions (in India 10% TDS is supposed to be deducted on the amount (ie amount before tax is added)

Overall it’s pretty good solution for occasional invoice generators.

Post reply on HN