<?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: Cristiano Lacerda</title>
    <description>The latest articles on DEV Community by Cristiano Lacerda (@crisclacerda).</description>
    <link>https://dev.to/crisclacerda</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%2F811832%2Fc983fbbd-e27e-44c5-a718-bf5c4f7f296e.jpeg</url>
      <title>DEV Community: Cristiano Lacerda</title>
      <link>https://dev.to/crisclacerda</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/crisclacerda"/>
    <language>en</language>
    <item>
      <title>Hello Everyone Out There Using LaTeX -</title>
      <dc:creator>Cristiano Lacerda</dc:creator>
      <pubDate>Sun, 29 Sep 2024 02:39:44 +0000</pubDate>
      <link>https://dev.to/crisclacerda/hello-everyone-out-there-using-latex--3344</link>
      <guid>https://dev.to/crisclacerda/hello-everyone-out-there-using-latex--3344</guid>
      <description>&lt;p&gt;&lt;em&gt;An Audacious Plan for the Future of Document Processing&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is kind of an answer to &lt;a class="mentioned-user" href="https://dev.to/hoffmann"&gt;@hoffmann&lt;/a&gt; on &lt;a href="https://dev.to/hoffmann/lets-find-something-better-then-latex"&gt;lets find something better then latex&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;LaTeX was revolutionary, for its time. It empowered generations to create beautifully typeset documents. But the '90s are over, and so is the era of paper and tools that slow you down. It’s time for a 21st century document processing system that &lt;strong&gt;keeps the best of LaTeX and ditches the rest&lt;/strong&gt;. Here’s how to build something better:&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;1. Stand on the Shoulders of Giants&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We're leveraging the proven power of &lt;strong&gt;Pandoc&lt;/strong&gt;, &lt;strong&gt;SQLite&lt;/strong&gt;, and &lt;strong&gt;GNU AutoGen&lt;/strong&gt;. Together, they form a solid foundation that handles all the heavy lifting involved in parsing, semantic analysis, and synthesis. These are all performant, robust, widely used tools with some of finest pedigree on open-source. It is not about reinventing the wheel, we are just about to break it.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;2. A Compiler for Documents&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;LaTeX showed the world that compiling isn't just for code but for documents too. We're definitely keeping that. Think of &lt;strong&gt;DocLiteGen&lt;/strong&gt; as a compiler:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Parsing:&lt;/strong&gt; Pandoc parses your Markdown (or any format) into an Abstract Syntax Tree (AST), giving your textual elements and floating objects structure, organized into nodes that can be easily and meaningfully traversed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Semantic Analysis:&lt;/strong&gt; SQLite handles the semantic analysis, just like an attribute grammar, controlling how each node interacts to inherit and synthesize attributes across the AST.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Synthesis:&lt;/strong&gt; AutoGen gracefully inserts generated content, like dynamic numbering, tables of contents, or entire sections back into the AST before Pandoc takes over again to produce the target format.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;3. Hybrid Publishing&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In today's world, the web is the default. Your documents need to be easily accessible in a browser, richly linked, and beautifully rendered as static sites with intuitive and predictable URLs. But sometimes, you still need to print, and when that happens, it has to be pixel-perfect.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web and Print Harmony:&lt;/strong&gt; We keep the very best of LaTeX, mostly TeX, so you can still enjoy paper print outputs that uses your favorite classes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multiple Formats, No Compromises:&lt;/strong&gt; Need to collaborate with the office crowd or create e-reader-friendly documents? DocLiteGen handles it all from a single source.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;4. Built for LSP Integration&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This is document authoring at it's finest. Forget the days of cryptic errors and waiting ages for LaTeX to compile just to find out a reference was wrong. With &lt;strong&gt;DocLiteGen&lt;/strong&gt;, you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Real-Time Feedback:&lt;/strong&gt; Autocomplete your intentions, lint your style, jump to references, and get diagnostics flagged as you write.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Modern Editing Experience:&lt;/strong&gt; You're not just writing; you’re programming your document with the support of an assistant that provides semantically meaningful, context-aware help.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;5. Extensibility is Key&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Much like LaTeX's core distribution—a basic collection of packages and macros extended by millions to meet all kinds of document needs—&lt;strong&gt;DocLiteGen&lt;/strong&gt; operates on the same &lt;strong&gt;philosophy of extensibility&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;DocLiteGen comes with the basic compiler infrastructure that puts everything together, along with a collection of &lt;strong&gt;Lua filters&lt;/strong&gt;, &lt;strong&gt;SQL queries&lt;/strong&gt;, and &lt;strong&gt;templates&lt;/strong&gt; that cover most of what the core LaTeX offers, updated for the modern age. You shall extend it to cover any need:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Need a new syntax or to change how an element is parsed?&lt;/strong&gt; Write a Lua filter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Want to give it semantic meaning and interact with the rest of the document?&lt;/strong&gt; Write an SQL query.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Need to control how it looks?&lt;/strong&gt; Write a template.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Want editor integration?&lt;/strong&gt; Some JavaScript wizardry will do.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. Extend the system to do anything you imagine, while keeping things maintainable and collaborating with the community.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;6. Database Publishing&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The power of &lt;strong&gt;DocLiteGen&lt;/strong&gt; lies in its ability to manage document elements at a granular level with associated relations and metadata. This allows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Custom Views:&lt;/strong&gt; Create versions of your document without certain sections, or filter content created after a specific date or by a specific author. SQL lets you query your document's structure and content in ways LaTeX could never dream of.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Work like a CMS Systems:&lt;/strong&gt; Enjoy the flexibility of database-driven publishing, complex reporting and advanced search, including full-text, making documents come alive easily, all from flat text files.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;7. DevOps for Docs&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;It's the automation century:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cloud Native:&lt;/strong&gt; Ship your documents straight to and from the cloud. Build them into your CI/CD pipeline. After you push a change to the repository, you can trigger actions to publish to the web, send it straight to the office printer or email the &lt;em&gt;docx&lt;/em&gt; to your dinosaurs colegues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Docs-as-Code:&lt;/strong&gt; Version control, collaboration, deployment, all the DevOps goodness applies. Generate, test, and deploy your documents just like you would with software code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;8. Build It, Profit, Change the World&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This is the blueprint for the future of electronic publishing. Go build it, make a SaaS and profit - or release it into the wild, open-source, and watch it change the world one document at a time. The choice is yours.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Are you ready to start this revolution?&lt;/strong&gt; &lt;em&gt;Because if this doesn't kill LaTeX, nothing will.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>latex</category>
      <category>opensource</category>
      <category>devops</category>
      <category>markdown</category>
    </item>
    <item>
      <title>Continuous Delivery Is Killing Software Quality</title>
      <dc:creator>Cristiano Lacerda</dc:creator>
      <pubDate>Sun, 11 Aug 2024 00:18:43 +0000</pubDate>
      <link>https://dev.to/crisclacerda/continuous-delivery-is-killing-software-quality-2kpl</link>
      <guid>https://dev.to/crisclacerda/continuous-delivery-is-killing-software-quality-2kpl</guid>
      <description>&lt;p&gt;The recent disaster at CrowdStrike is just the latest symptom of a much larger illness plaguing the software industry: continuous delivery is killing software quality. Agility, when applied correctly, is a powerful force in software development. However, the relentless pursuit of rapid and frequent releases has led to a situation where quality is sacrificed in the name of speed. &lt;strong&gt;It's as if the whole software industry has turned into a fast-food factory,&lt;/strong&gt; where delivering software fast is more important than making software that is good.&lt;/p&gt;

&lt;p&gt;Remember the golden age of gaming? When a game was released, it was printed on a cartridge or burned onto a DVD. &lt;strong&gt;There was no turning back, no patches, no hotfixes.&lt;/strong&gt; If your game was full of bugs or incomplete, it was a financial disaster. The pressure to deliver the best possible product was immense. The result? Games were usually impeccable.&lt;/p&gt;

&lt;p&gt;Fast forward to today, and we find ourselves in the era of "early access" releases. Games, and increasingly other &lt;strong&gt;software, are launched unfinished with the promise of "fixing it later."&lt;/strong&gt; Continuous delivery has become the perfect excuse for shoddy work. We are literally telling our customers, "Don't worry that your product isn't ready now; we'll finish it eventually."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This mentality is spreading like wildfire. It's not just games anymore.&lt;/strong&gt; Critical infrastructure, financial systems, even medical devices and transport infrastructure are being subjected to this reckless approach. The CrowdStrike incident is a harsh reminder that when software fails, the consequences can be catastrophic.&lt;/p&gt;

&lt;p&gt;We need to return to the principle of formal releases. Software should only be launched after rigorous processes that validate real-world usage in controlled environments. &lt;strong&gt;The idea of putting software that is just done, after passing some pipeline of tests, into production is crazy dangerously.&lt;/strong&gt; While automated tests are crucial for ensuring code quality, they are complete meaningless for validating the overall system correctness and reliability.&lt;/p&gt;

&lt;p&gt;We can learn a lot from other engineering fields. Take civil engineering, for example. When a bridge is built, no one would open it to the public traffic before it is fully completed and has undergone rigorous safety tests. In Brazil, the ART (Technical Responsibility Annotation) requires engineers to sign off on their projects, assuming full responsibility for their execution. &lt;strong&gt;A mistake, caused by lack of skill or negligence, can have severe criminal implications.&lt;/strong&gt; Why should we expect any less from software, which is increasingly becoming a vital component of our lives?&lt;/p&gt;

&lt;p&gt;We know it is possible to create safety critical software that works correctly. This happens when the responsible organizations are motivated &lt;strong&gt;not by economic forces, but by significant regulatory pressure.&lt;/strong&gt; The problem is that as software continues to "eat the world," more and more critical systems are being developed by industries that face no regulatory pressure.&lt;/p&gt;

&lt;p&gt;We can therefore expect things to go very wrong, and a major disaster involving the loss of many lives is a question of "when," not "if." Perhaps then developers will stop treating their work as a &lt;strong&gt;perpetual beta&lt;/strong&gt; and start treating it as the critical component of our lives that it truly is.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>softwareengineering</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
