<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Niko Sagiadinos</title>
    <description>The latest articles on DEV Community by Niko Sagiadinos (@sagiadinos).</description>
    <link>https://dev.to/sagiadinos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F735814%2F43e7a9c1-e75a-415c-be56-116090c83d6c.png</url>
      <title>DEV Community: Niko Sagiadinos</title>
      <link>https://dev.to/sagiadinos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sagiadinos"/>
    <language>en</language>
    <item>
      <title>Open Source Digital Signage: What the License Doesn't Tell You</title>
      <dc:creator>Niko Sagiadinos</dc:creator>
      <pubDate>Thu, 19 Mar 2026 17:51:50 +0000</pubDate>
      <link>https://dev.to/sagiadinos/open-source-digital-signage-what-the-license-doesnt-tell-you-3d15</link>
      <guid>https://dev.to/sagiadinos/open-source-digital-signage-what-the-license-doesnt-tell-you-3d15</guid>
      <description>&lt;p&gt;"Open Source" sounds like control. In practice it often means: free to get in, stuck later.&lt;/p&gt;

&lt;p&gt;The license tells you nothing about whether you can actually run the system yourself, whether your screens keep running when the server goes down, or whether your content is stored in open formats or locked into a proprietary schema. That's decided by the architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Matters
&lt;/h2&gt;

&lt;p&gt;Four things separate genuinely independent systems from vendor-dependent ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosting&lt;/strong&gt;: Does it run on your own infrastructure, or does it require external servers you don't control?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Player/CMS separation&lt;/strong&gt;: If the server goes down, do your screens go dark? A decoupled architecture means players continue their last schedule independently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open standards&lt;/strong&gt;: Proprietary playlist formats lock your content to one vendor. &lt;a href="https://garlic-signage.com/resources/technology/digital-signage-smil/" rel="noopener noreferrer"&gt;SMIL&lt;/a&gt; is the open W3C alternative.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment model&lt;/strong&gt;: Docker or bare-metal vs. vendor-specific runtimes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A system that ticks all four stays portable long-term. One that doesn't will eventually hold you hostage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Six Platforms Compared
&lt;/h2&gt;

&lt;p&gt;I evaluated GarlicSignage, Screenly Anthias, Concerto, Xibo, DigitalSignage.com, and signageOS against these criteria.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Software&lt;/th&gt;
&lt;th&gt;Open Source&lt;/th&gt;
&lt;th&gt;Self-hosted&lt;/th&gt;
&lt;th&gt;Vendor Dependency&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GarlicSignage&lt;/td&gt;
&lt;td&gt;✔&lt;/td&gt;
&lt;td&gt;✔&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Screenly Anthias&lt;/td&gt;
&lt;td&gt;✔&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Concerto&lt;/td&gt;
&lt;td&gt;✔&lt;/td&gt;
&lt;td&gt;✔&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Xibo&lt;/td&gt;
&lt;td&gt;✔ (core)&lt;/td&gt;
&lt;td&gt;✔&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DigitalSignage.com&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;signageOS&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;✖&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Screenly Anthias&lt;/strong&gt; is genuinely open source, but designed for single screens. No central CMS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Concerto&lt;/strong&gt; is best for campuses or organizations where multiple departments manage their own content with a moderation workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Xibo&lt;/strong&gt; has the broadest feature set and an active community, but production setups will likely touch paid components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DigitalSignage.com&lt;/strong&gt; uses open source messaging as an acquisition funnel. Core functionality runs on their cloud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;signageOS&lt;/strong&gt; is enterprise device abstraction across 41+ hardware vendors. Not for self-hosted use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GarlicSignage&lt;/strong&gt; is SMIL-based, fully self-hosted, Player and CMS are strictly separated. Setup requires technical knowledge.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Uncomfortable Pattern
&lt;/h2&gt;

&lt;p&gt;Several platforms in this space publish parts of their code as open source while keeping device management, hosting, or core features tied to their own services. Open license, closed system.&lt;/p&gt;

&lt;p&gt;That model is commercially legitimate. But if you're planning to run 50 or 200 screens on a platform, you should know whether you own the infrastructure or you're renting it before you build on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;I'm the developer of GarlicSignage. I've tried to evaluate the other platforms as fairly as possible, but take that context into account.&lt;/p&gt;

&lt;p&gt;The full architectural comparison, including details on Player/CMS decoupling and SMIL support, is in the &lt;a href="https://garlic-signage.com/resources/technology/digital-signage-open-source/" rel="noopener noreferrer"&gt;original article&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>digitalsignage</category>
      <category>selfhosted</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Stop Calling LLMs AI</title>
      <dc:creator>Niko Sagiadinos</dc:creator>
      <pubDate>Wed, 05 Nov 2025 08:34:43 +0000</pubDate>
      <link>https://dev.to/sagiadinos/stop-calling-llms-ai-1ihk</link>
      <guid>https://dev.to/sagiadinos/stop-calling-llms-ai-1ihk</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;This article explains why LLMs are useful tools, but calling them "AI" is dumb marketing bullshit that leads to bad decisions, wasted money, and unrealistic expectations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hypes are Everywhere
&lt;/h2&gt;

&lt;p&gt;When I scroll through LinkedIn, Reddit, or various blogs, I always read the same annoying phrases about our future: AI will soon replace nearly every engineer, will change the world, or, depending on who's talking, enslave us.&lt;/p&gt;

&lt;h3&gt;
  
  
  It's Just Marketing, Stupid
&lt;/h3&gt;

&lt;p&gt;AI is just a marketing slogan. Because this is what marketing does. It shouts loud and sells smoke and mirrors.&lt;/p&gt;

&lt;p&gt;What we call AI technically is only a simulation of "intelligence."&lt;/p&gt;

&lt;p&gt;Take Large Language Models, for example. Not magic, not conscious, not smart.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Large&lt;/strong&gt;: the immense amount of data it has been trained on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language&lt;/strong&gt;: the primary function is to process and generate human language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model&lt;/strong&gt;: it is a statistical model, a computational framework, not a living entity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Same Story with Image Generators
&lt;/h3&gt;

&lt;p&gt;I know it is getting boring, but nothing has changed and nothing will change: the so-called AI trained on the world's knowledge and draws people with three or four fingers. &lt;/p&gt;

&lt;p&gt;I still get this in 2025 with different tools like Dall-E, Gemini, Stable Diffusion, Flux etc. Especially if you need content that is more complex than a simple portrait of a cute smiling person.&lt;/p&gt;

&lt;p&gt;Different tech, same limitation: they're pattern-matching machines, not intelligent creators.&lt;/p&gt;

&lt;h3&gt;
  
  
  Intelligence is a Loaded Term
&lt;/h3&gt;

&lt;p&gt;"Intelligence" in humans is multifaceted, encompassing reasoning, problem-solving, creativity, emotional understanding, social skills, and more.&lt;/p&gt;

&lt;p&gt;An LLM can perform certain tasks that might be considered "intelligent" (like generating coherent text, answering questions, or even writing code). But this "intelligence" is narrow, specific to the data it's trained on and the algorithms that govern the responses.&lt;/p&gt;

&lt;p&gt;Language models lack common sense, intuition, and the ability to truly learn from experience in the same way a human does. Their "understanding" is statistical, not conceptual.&lt;/p&gt;

&lt;p&gt;That's why you get hallucinated facts, broken code, and three-fingered portraits. Sure, there might be &lt;a href="https://www.nature.com/articles/d41586-025-00068-5#:~:text=AI%20hallucinations%20can't%20be,techniques%20can%20limit%20their%20damage" rel="noopener noreferrer"&gt;workarounds&lt;/a&gt;, but you can't patch away a fundamental limitation. These aren't bugs. They're features of a system that mimics understanding without actually having any.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feazz5s0d4y57osg13lrr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feazz5s0d4y57osg13lrr.jpg" alt=" " width="798" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Personal Experiences
&lt;/h2&gt;

&lt;p&gt;I have been working with LLMs for years and also use them as support in my current &lt;a href="https://garlic-signage.com/garlic-hub/" rel="noopener noreferrer"&gt;garlic-hub&lt;/a&gt; project. &lt;/p&gt;

&lt;p&gt;They have advantages in researching, translations, summaries, code explanations, concepting, prototyping, and documentation, but not for writing production code. &lt;/p&gt;

&lt;p&gt;Even with precise prompts, you’ll get too often inconsistent, crappy code that breaks the moment you touch it.&lt;/p&gt;

&lt;p&gt;Let's try to write unit tests based on your own classes when they consist of more than getters and setters.&lt;/p&gt;

&lt;p&gt;Among other oddities, you will find the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;testing of private methods&lt;/li&gt;
&lt;li&gt;mocking of inherited methods&lt;/li&gt;
&lt;li&gt;even mocking the testing class&lt;/li&gt;
&lt;li&gt;inconsistency in the naming, although prompts are specific&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's be clear: unit tests are designed to test isolated, manageable pieces of code. If a tool marketed as "intelligent" can't even write tests for a single class reliably, how is it supposed to automate software development or rule the world?&lt;/p&gt;

&lt;h3&gt;
  
  
  But You Need to Use it Right
&lt;/h3&gt;

&lt;p&gt;If something doesn't work as expected, the typical response is: "You're using it wrong."&lt;/p&gt;

&lt;p&gt;The AI evangelists insist you need to change how you program; stop being a programmer, start being a software engineer. &lt;/p&gt;

&lt;p&gt;Their vision: create detailed documentation of the modules you need and let the agent do the work, including unit tests.&lt;/p&gt;

&lt;p&gt;If something's buggy or needs to change, you update the documentation, let the agent regenerate the code, and review again. They call this "vibe coding," and according to them, it saves tons of time.&lt;/p&gt;

&lt;p&gt;Sounds reasonable at first glance? Let's dig into that.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Time Saving Myth
&lt;/h3&gt;

&lt;p&gt;Of course, starting something new leads to fast results. At first! Eventually, it consumes more and more time.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Technical debt:&lt;/strong&gt; AI-generated code is often suboptimal, buggy, difficult to maintain, poorly documented, insecure, or not scalable. It just works is not enough.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging and correction:&lt;/strong&gt; Debugging, fixing bugs, or adding new features to this code base later on is more labor-intensive than writing clean code manually.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lack of understanding:&lt;/strong&gt; The reality is that people might review the first times, but as it seems to work as expected at first, often they blindly adopt code without understanding the implementation decisions. This makes maintenance and changes a high risk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redevelopment:&lt;/strong&gt; If the system needs to grow or scale, vibe code can become so unusable that a complete redevelopment is necessary – negating all the initial time savings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The immediate productivity gains (rapid prototyping) are essentially a “high-interest loan on the future” of the code base, which will later become due in the form of high maintenance costs. &lt;/p&gt;

&lt;h3&gt;
  
  
  History is Repeated
&lt;/h3&gt;

&lt;p&gt;The same often happens with using 3rd-Party libs like in Node.js or frameworks. First, they save you time, but creating software is only the start. Maintaining in the long run is the real challenge.&lt;/p&gt;

&lt;p&gt;Remember the no-code circus? Similar crappy promises, different label, same dead end.&lt;/p&gt;

&lt;h3&gt;
  
  
  Perceived Efficiency Study
&lt;/h3&gt;

&lt;p&gt;An interesting &lt;a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/" rel="noopener noreferrer"&gt;METR study&lt;/a&gt; shows: Experienced developers only think they are 24% faster with AI, but they're actually about 20% slower&lt;/p&gt;

&lt;p&gt;If you ask AI Bros about this, they will yell that these study is based on wrong assumptions, and you need to learn much about how to use vibe coding. Remember this "You Need to Use it Right"? &lt;/p&gt;

&lt;p&gt;But marketing talks only about "intelligence". Every AI coding company tells us how easy their tools are to use and advertise "reviews" of people who claim to realize huge projects in a few days without even programming skills.&lt;/p&gt;

&lt;p&gt;But at the moment you start measuring a tool according to the promises, and it fails, the excuses come suddenly: You need to dig into endless hours and &lt;a href="https://arxiv.org/abs/2505.19443" rel="noopener noreferrer"&gt;months of learning&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fef8hy02y67rvz8gxsuyk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fef8hy02y67rvz8gxsuyk.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So what's the conclusion?&lt;/strong&gt; You should spend months studying to achieve a rather questionable time saving that is more felt than real?&lt;/p&gt;

&lt;p&gt;You will never read this from the AI-Bros.&lt;br&gt;
What you also never read is about quality assurance and code maintenance.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Junior Developer Problem
&lt;/h3&gt;

&lt;p&gt;Another point is often ignored, too. To review code, you need skills, years of experience and maybe some fails.&lt;/p&gt;

&lt;p&gt;If "vibe coding" becomes standard, how do junior developers learn their craft? You can't learn to review code you never learned to write. We'd be creating a generation of developers who can prompt but can't program. They'd be like consultants without expertise.&lt;/p&gt;

&lt;h2&gt;
  
  
  LLM Training Reaches Limits
&lt;/h2&gt;

&lt;p&gt;The so-called revolution from LLM is based on scraping, storing and searching huge amounts of data. What the ignorant world calls AI is just a highly trained auto-complete feature. &lt;/p&gt;

&lt;p&gt;But there's only one Stack Overflow, one YouTube, one Wikipedia to scrape. We've already done that, and now we're running out of training material. &lt;a href="https://theconversation.com/researchers-warn-we-could-run-out-of-data-to-train-ai-by-2026-what-then-216741" rel="noopener noreferrer"&gt;The Conversation&lt;/a&gt;, &lt;a href="https://www.businessinsider.com/ai-training-data-shortage-slop-goldman-sachs-2025-10#:~:text=The%20meteoric%20rise%20of%20artificial,Exchanges%22%20podcast%20published%20on%20Tuesday." rel="noopener noreferrer"&gt;Business Insider&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The widely propagated solution? Use synthetic data, which means: LLMs generated data to train other LLMs. Nvidia is already building a synthetic data generator called &lt;a href="https://arxiv.org/html/2406.11704v1" rel="noopener noreferrer"&gt;Nemotron&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Meanwhile, more and more text on the web is LLM-generated, and it's nearly &lt;a href="https://medium.com/better-programming/detecting-llm-generated-texts-befce4426da9" rel="noopener noreferrer"&gt;impossible&lt;/a&gt; to distinguish machine generated text from human written content.&lt;/p&gt;

&lt;p&gt;How hard is it to see where this leads? Training AI on AI-generated content will inevitably cause &lt;a href="https://www.scimex.org/newsfeed/using-ai-to-train-ai-could-cause-them-to-collapse" rel="noopener noreferrer"&gt;model collapse and degeneration&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;AI Bros do not discuss this and companies chasing investor money keep pushing their "revolution" at all costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Self-Driven Hype
&lt;/h2&gt;

&lt;p&gt;Unfortunately, this mix of agitators, marketers, and their uncritical followers has created a relentless hype cycle.&lt;/p&gt;

&lt;p&gt;Plenty of mediocre ex-managers and corporate has-beens crave public visibility. Some are paid to push a narrative; others genuinely see themselves as visionaries who deserve an audience.&lt;/p&gt;

&lt;p&gt;All of them open their mouths to fill the air with empty, meaningless words. Their followers, in turn, are simply cheerleading. If you express skepticism, the retort is often: "Hey, Bill Gates is a billionaire. He knows what is going on." No, he knew nothing. He's speculating just like thousands of others. But for some reason, people trust vague predictions from wealthy people as if wealth equals expertise.&lt;/p&gt;

&lt;p&gt;This creates a self-fulfilling prophecy: shortsighted decision-makers fear missing out if they don't jump on the AI bandwagon. So they start slapping "AI" on everything, whether it makes sense or not.&lt;/p&gt;

&lt;p&gt;In the end, the hype just fuels a reckless, resource-guzzling industry that burns cash and electricity.&lt;/p&gt;

&lt;h2&gt;
  
  
  More Absurdities from My Industry
&lt;/h2&gt;

&lt;p&gt;My home is the &lt;a href="https://garlic-signage.com/" rel="noopener noreferrer"&gt;digital signage industry&lt;/a&gt; and while others face similar nonsense, here it’s downright absurd. &lt;br&gt;
Companies constantly invent pointless "features" just to slap 'AI' somewhere on their landing pages. &lt;br&gt;
Like&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Display chatbots:&lt;/strong&gt; because apparently people want to have conversations with a screen showing ads, instead of just reading the information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"AI-optimized" ad placement:&lt;/strong&gt; algorithms that optimize for metrics nobody asked for, ignoring actual campaign goals. The AI decides what's "best," not your business objectives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predictive Audience AI:&lt;/strong&gt; tools that claim to forecast audience behavior and generate impressive projections based on laughably small datasets. Garbage in, "insights" out. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Age/gender estimation:&lt;/strong&gt; computer vision that's been around for years, now rebranded as "AI-powered." It fails in noisy environments, struggles with viewing angles, and provides data that's rarely actionable anyway.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this solves real problems. New software features should be driven by customer pain points, not by marketing departments desperate for buzzwords.&lt;/p&gt;

&lt;p&gt;Whenever you see a digital signage company shouting about AI, remember this: it’s not built to help you or your business. It’s built to sell you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stop Calling LLMs AI
&lt;/h2&gt;

&lt;p&gt;I'm not worried about a Terminator future. There's no technical singularity coming from this approach.&lt;/p&gt;

&lt;p&gt;This industry is now running into problems, because they've already scraped most available data. &lt;/p&gt;

&lt;p&gt;Plans to generate synthetic data to train will lead to degeneration. &lt;/p&gt;

&lt;p&gt;An LLM is a useful tool, that impressively simulates human behavior. No more, no less. It can perform tasks that might seem intelligent.&lt;/p&gt;

&lt;p&gt;But their capabilities are just reflections of data and algorithms and it is not a sign of true consciousness or human-like intelligence. &lt;/p&gt;

&lt;p&gt;Here's the reality: LLMs are calculators that learned to talk. Nobody panicked that calculators would replace mathematicians. Stop pretending autocomplete will replace engineers.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>vibecoding</category>
      <category>marketing</category>
    </item>
    <item>
      <title>SpicyCamCast: Lightweight Camera and Screencast Integration for JavaScript</title>
      <dc:creator>Niko Sagiadinos</dc:creator>
      <pubDate>Wed, 29 Jan 2025 12:50:56 +0000</pubDate>
      <link>https://dev.to/sagiadinos/spicycamcast-lightweight-camera-and-screencast-integration-for-javascript-65d</link>
      <guid>https://dev.to/sagiadinos/spicycamcast-lightweight-camera-and-screencast-integration-for-javascript-65d</guid>
      <description>&lt;h2&gt;
  
  
  Why I Built SpicyCamCast
&lt;/h2&gt;

&lt;p&gt;While developing a new digital signage application, I needed reliable screencast and webcam recording capabilities. Existing libraries, though capable, often came with unnecessary complexity or were not clear enough. I saw an opportunity to create something more straightforward.&lt;/p&gt;

&lt;p&gt;SpicyCamCast emerged from this need – a minimal, purpose-built library that handles media capture with minimal fuss. It's not just another webcam library; it's a practical solution born from real-world digital signage development challenges.&lt;/p&gt;

&lt;p&gt;The result is now published on &lt;a href="https://github.com/sagiadinos/SpicyCamCast/tree/main" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;SpicyCamCast is a minimal JavaScript library (under 3KB) that simplifies camera and screencast integration in web applications. Built with modern JavaScript features, it provides an intuitive API for managing video streams and capturing photos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight&lt;/strong&gt;: Less than 3KB, keeping your application bundle small&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modern JavaScript&lt;/strong&gt;: Leverages ES6 classes, private fields, promises, and async/await&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dual Functionality&lt;/strong&gt;: Handles both camera streams and screen recording&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible Photo Capture&lt;/strong&gt;: Supports multiple formats (JPEG, PNG, WebP)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Device Management&lt;/strong&gt;: Easy video device detection and selection&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Start Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Camera Integration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
import { SpicyCam } from './src/SpicyCamCast.js';

const videoElement = document.querySelector('video');
const spicyCam = new SpicyCam(videoElement);

// Start camera stream
spicyCam.justStart()
  .then(() =&amp;gt; console.log('Camera started'))
  .catch(error =&amp;gt; console.error('Error:', error));

// Capture photo
const canvasElement = document.querySelector('canvas');
const photoDataUrl = spicyCam.capturePhotoAsJpeg(canvasElement);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Screen Recording
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { SpicyCast } from './src/SpicyCamCast.js';

const videoElement = document.querySelector('video');
const spicyCast = new SpicyCast(videoElement);

spicyCast.startScreencast()
  .then(() =&amp;gt; console.log('Screencast started'))
  .catch(error =&amp;gt; console.error('Error:', error));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Capturing Photo
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const canvasElement = document.querySelector('canvas');
const photoDataUrl = spicyCam.capturePhotoAsJpeg(canvasElement);
console.log('Captured photo:', photoDataUrl);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SpicyCamCast provides flexible photo capture from active video streams. Capture in multiple formats:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// JPEG capture
const jpegPhoto = spicyCam.capturePhotoAsJpeg(canvasElement);

// PNG capture for lossless quality
const pngPhoto = spicyCam.capturePhotoAsPng(canvasElement);

// WebP for optimal compression
const webpPhoto = spicyCam.capturePhotoAsWebp(canvasElement);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each method returns a data URL string that can be used directly in &lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt; elements or uploaded to servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;SpicyCamCast aims to simplify media capture for web developers. By focusing on essential features and providing a concise API, it offers a lightweight and efficient solution for integrating camera and screencast functionality into your projects. &lt;/p&gt;

&lt;p&gt;Whether you're building interactive web applications, creating digital signage experiences, or developing video-centric tools, SpicyCamCast provides a solid foundation for your media capture needs.&lt;/p&gt;

&lt;p&gt;I encourage you to explore the full documentation and examples on &lt;a href="https://github.com/sagiadinos/SpicyCamCast/tree/main" rel="noopener noreferrer"&gt;GitHub - SpicyCamCast&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webcam</category>
      <category>screencast</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
