<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nova on jdcsen</title><link>https://jdcsen.com/tags/nova/</link><description>Recent content in Nova on jdcsen</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 01 Jan 1970 00:33:44 +0000</lastBuildDate><atom:link href="https://jdcsen.com/tags/nova/index.xml" rel="self" type="application/rss+xml"/><item><title>gRPC Bidirectional Streaming for a C++ Node-Graph Framework</title><link>https://jdcsen.com/projects/grpc-pipe-wrapper/</link><pubDate>Thu, 01 Jan 1970 00:33:44 +0000</pubDate><guid>https://jdcsen.com/projects/grpc-pipe-wrapper/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;Nova Sonic needed the speech framework&amp;rsquo;s pipelines delivered as a containerized gRPC service: audio and system prompts streaming in, inference requests streaming out. The team&amp;rsquo;s code had only ever been called through JNI.&lt;/li&gt;&#10;&lt;li&gt;Mapped gRPC C++&amp;rsquo;s bidirectional-streaming reactor onto the framework&amp;rsquo;s pipe abstraction once, as a reusable layer covering session setup and teardown, signal handling, graceful error handling and logging.&lt;/li&gt;&#10;&lt;li&gt;A new service needs under 300 lines of integration code: which pipe input receives request messages, and which pipe outputs become response messages. Adopted org-wide as the standard way to deploy a pipeline.&lt;/li&gt;&#10;&lt;li&gt;Established Protobuf and gRPC generated code as first-class CMake libraries in the framework&amp;rsquo;s build, so the same generated types are consumed by the pipeline&amp;rsquo;s nodes and by the server without duplicate-symbol conflicts.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>One-Command Nova Sonic Dev Environments</title><link>https://jdcsen.com/projects/nova-sonic-dev-provisioning/</link><pubDate>Thu, 01 Jan 1970 00:33:44 +0000</pubDate><guid>https://jdcsen.com/projects/nova-sonic-dev-provisioning/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;Python provisioning system that stands up the complete Nova Sonic inference stack on one developer machine.&lt;/li&gt;&#10;&lt;li&gt;Deploys several Triton model containers plus the C++ node-graph orchestrator, wired together and ready to take speech-to-speech traffic.&lt;/li&gt;&#10;&lt;li&gt;Took a fifteen-person team from sharing a couple of hand-built demo environments to every engineer having their own.&lt;/li&gt;&#10;&lt;li&gt;Same pattern as &lt;a href="https://jdcsen.com/projects/l3dockerize/"&gt;L3Dockerize&lt;/a&gt;: make the right environment the cheap one.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Static Service Registry for a C++ Node-Graph Framework</title><link>https://jdcsen.com/projects/static-service-registry/</link><pubDate>Thu, 01 Jan 1970 00:33:43 +0000</pubDate><guid>https://jdcsen.com/projects/static-service-registry/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;Nodes in the C++ stream-processing framework behind Nova Sonic register themselves in a global registry through static initialization. No central list to edit, no explicit dependency from tools on the nodes they might load.&lt;/li&gt;&#10;&lt;li&gt;Registry is a thread-safe, function-local static constructed on first use, so registration is safe regardless of static initialization order across translation units.&lt;/li&gt;&#10;&lt;li&gt;Registration works by linking a node library or by &lt;code&gt;LD_PRELOAD&lt;/code&gt;ing it. The development CLI can assemble a graph from a JSON definition using nodes it was never compiled against.&lt;/li&gt;&#10;&lt;li&gt;Pulled double duty as a dependency-inversion mechanism: consumers depend on the node interface, not on implementing libraries. Adopted across the organization and later picked up for embedded speech processing.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item></channel></rss>