<?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: Felipe 0liveira</title>
    <description>The latest articles on DEV Community by Felipe 0liveira (@felipe0liveira).</description>
    <link>https://dev.to/felipe0liveira</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F214230%2F9b60a432-df31-4c2f-89f0-e1d2df05e513.jpeg</url>
      <title>DEV Community: Felipe 0liveira</title>
      <link>https://dev.to/felipe0liveira</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/felipe0liveira"/>
    <language>en</language>
    <item>
      <title>Passing Once Isn't Reliable — This Week's Agent Engineering Puts the Harness Before the Model</title>
      <dc:creator>Felipe 0liveira</dc:creator>
      <pubDate>Tue, 25 Aug 2026 11:14:24 +0000</pubDate>
      <link>https://dev.to/felipe0liveira/passing-once-isnt-reliable-this-weeks-agent-engineering-puts-the-harness-before-the-model-3maj</link>
      <guid>https://dev.to/felipe0liveira/passing-once-isnt-reliable-this-weeks-agent-engineering-puts-the-harness-before-the-model-3maj</guid>
      <description>&lt;p&gt;This digest covers AI agent developments from 2026-08-18 to 2026-08-25: orchestration patterns, tool/function calling, memory, planning loops, multi-agent coordination, and agent evaluation.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔥 Highlights
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2608.23078" rel="noopener noreferrer"&gt;AgentWeave: Routing Before Reasoning for Efficient Function Calling in Tool-Rich Language Models&lt;/a&gt; — cuts tool exposure 70%, latency 51%.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://huggingface.co/papers/2608.19741" rel="noopener noreferrer"&gt;One Success Isn't Reliability: Thinkingbox, a Sandbox and Benchmark for Agents in Stateful Business Workflows&lt;/a&gt; — pass@1 success hides a pass@20 collapse.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2608.22077" rel="noopener noreferrer"&gt;Spine-Branch Coordination for Multi-agent Computer Use&lt;/a&gt; — solves VM state merging across parallel agents.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.langchain.com/blog/introducing-langsmith-tuned-evaluators-starting-with-perceived-error" rel="noopener noreferrer"&gt;Introducing LangSmith Tuned Evaluators, starting with Perceived Error&lt;/a&gt; — grades 100% of production traffic, cheaply.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.latent.space/p/attention-interface" rel="noopener noreferrer"&gt;The Evolution of the Agent Harness&lt;/a&gt; — engineering value shifts as models absorb skills.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  arXiv (cs.AI / cs.MA)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://arxiv.org/abs/2608.23078" rel="noopener noreferrer"&gt;AgentWeave: Routing Before Reasoning for Efficient Function Calling in Tool-Rich Language Models&lt;/a&gt;&lt;/strong&gt; — 2026-08-24&lt;br&gt;
Instead of touching the model, AgentWeave filters the candidate tool set before the prompt is even processed. Across 48 tasks under the BFCL protocol it cut tool exposure by roughly 70%, input tokens by 62%, and latency by 51% versus exposing every registered tool. Direct, practical payoff for anyone whose agent is choking on function calling with dozens or hundreds of registered tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://arxiv.org/abs/2608.22077" rel="noopener noreferrer"&gt;Spine-Branch Coordination for Multi-agent Computer Use&lt;/a&gt;&lt;/strong&gt; — 2026-08-22&lt;br&gt;
Tackles VM state merging in multi-agent computer-use systems: a "spine" keeps the primary VM's state continuous while parallel "branches" gather information and are discarded afterward, removing the need to reconcile divergent state. On 200 long-horizon tasks it lifted success rate by 6–16.5 points and cut cost per task by 34–70% — relevant for anyone architecting parallelism into computer-use agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://arxiv.org/abs/2608.23041" rel="noopener noreferrer"&gt;AutoSaddler: Automatic Harness Optimization with Durable Updates from Agent Execution Traces&lt;/a&gt;&lt;/strong&gt; — 2026-08-24&lt;br&gt;
Optimizes the agent's external harness offline, from execution traces rather than the model: it diagnoses failures, generates structured code patches, and selectively validates them before applying. Gains of 9–10 points across three benchmarks make the case for "deep debugging" and constrained edits over shallow reflection or unrestricted rewrites — a useful pattern for evolving production agents without regressions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hugging Face Daily Papers
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://huggingface.co/papers/2608.19741" rel="noopener noreferrer"&gt;One Success Isn't Reliability: Thinkingbox, a Sandbox and Benchmark for Agents in Stateful Business Workflows&lt;/a&gt;&lt;/strong&gt; — 2026-08-20&lt;br&gt;
A sandbox and benchmark (507 policy-governed workflows across retail, hospitality, insurance, banking, and IT support) showing that top models hit 65.36% pass@1 but drop to 25.25% pass@20 — finding one successful trajectory once is not the same as being reliably successful. A strong argument against using single-response signals as a proxy for production reliability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://huggingface.co/papers/2608.23035" rel="noopener noreferrer"&gt;MobilePA-Bench: Benchmarking Mobile Planner Agents on Complex Real-World Tasks&lt;/a&gt;&lt;/strong&gt; — 2026-08-24&lt;br&gt;
A benchmark for mobile planner agents (212 tools, 13 domains) combining interactive tool use with real runtime constraints: task decomposition with sub-agent delegation, memory/preference use for implicit requests, and invoking packaged skills instead of planning every action from scratch. Leading models degrade sharply under strict tool ordering, permissions, and unexpected runtime errors — a warning sign for anyone building planning agents on rigid tool chains.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anthropic Engineering Blog
&lt;/h2&gt;

&lt;p&gt;Nothing new published on anthropic.com/engineering in this window — the most recent post there predates 2026-08-18.&lt;/p&gt;

&lt;h2&gt;
  
  
  LangChain / LangGraph Blog
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.langchain.com/blog/introducing-langsmith-tuned-evaluators-starting-with-perceived-error" rel="noopener noreferrer"&gt;Introducing LangSmith Tuned Evaluators, starting with Perceived Error&lt;/a&gt;&lt;/strong&gt; — 2026-08-18&lt;br&gt;
A managed evaluation system: post-trained, specialized models from LangChain replace frontier LLMs as "judges," cutting evaluation cost by 82% (per their own benchmark) while holding quality. The first evaluator, "Perceived Error," runs automatically over all production conversations — not just a sample — to detect when the agent got confused or misread the request. Practical value: continuous evaluation of 100% of traffic without building a custom evaluator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.langchain.com/blog/langsmith-preview-builds-test-agent-changes-before-production" rel="noopener noreferrer"&gt;LangSmith Preview Builds: Test agent changes before production&lt;/a&gt;&lt;/strong&gt; — 2026-08-20&lt;br&gt;
Temporary, production-like deployments spun up from a branch or PR, auto-synced on every commit and isolated from the main deployment. Lets teams test prompt, tool, model, or integration changes before merge, with non-technical stakeholders inspecting real traces and agent behavior. Practical value: reduces the risk of behavioral regressions in an agent — not just code regressions — becoming a CI/CD architecture decision for agent teams.&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenAI News
&lt;/h2&gt;

&lt;p&gt;Nothing technical in this window that fits the theme — the items published between 2026-08-17 and 2026-08-24 were policy/compliance, product, or institutional announcements, not agent orchestration or evaluation content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Latent Space
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.latent.space/p/attention-interface" rel="noopener noreferrer"&gt;The Evolution of the Agent Harness&lt;/a&gt;&lt;/strong&gt; — 2026-08-22&lt;br&gt;
Dan McAteer argues that roughly half of an agent's performance comes from the harness surrounding the model, citing spreads of 52.4 to 76.2 points between different harnesses running the same model. The interesting part: as models absorb via RL the capabilities that today live in the harness, engineering value migrates toward what can't be absorbed — an "attention interface" managing interruptions, autonomous decisions, and human approval flows. Useful for deciding where to invest orchestration-layer effort that won't age out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.latent.space/p/wayfinder-skill" rel="noopener noreferrer"&gt;The /wayfinder Skill: Navigating the "Fog of War" of Planning&lt;/a&gt;&lt;/strong&gt; — 2026-08-20&lt;br&gt;
Matt Pocock proposes an orchestration framework for projects without a clear endpoint, avoiding full upfront planning. The skill structures work around three concepts — a "map" of decisions already made, typed "tickets" (grilling, prototype, research, task), and "sessions" that split context across threads without blowing the context window. Practical takeaway: a consistent shared vocabulary between human and agent is a prerequisite for planning/execution loops that don't drift into ambiguity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.latent.space/p/glean-model-routing" rel="noopener noreferrer"&gt;Frontier Model Cost and Open-Weights Popularity is Driving Demand for Model Routing&lt;/a&gt;&lt;/strong&gt; — 2026-08-18&lt;br&gt;
Mostly a cost/business piece, but it surfaces a relevant orchestration detail: Glean uses its own model (Waldo) to pre-filter and assemble the necessary context &lt;em&gt;before&lt;/em&gt; invoking the expensive frontier model, avoiding wasted tokens. A useful "triage before routing" pattern for multi-model pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simon Willison
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://simonwillison.net/2026/Aug/19/smolmachines-untrusted-sandbox/" rel="noopener noreferrer"&gt;smolmachines / smolvm as a sandbox for untrusted Python &amp;amp; JavaScript&lt;/a&gt;&lt;/strong&gt; — 2026-08-19&lt;br&gt;
Smolvm is a hardware-isolated VM platform for running untrusted Python/JS with granular CPU/RAM limits, no network, and filesystem control, via local offline images. Directly relevant to anyone needing to safely execute the outputs of agent tool-calling or code generation without risking the host.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://simonwillison.net/2026/Aug/22/more-than-just-code-review/" rel="noopener noreferrer"&gt;More than just code review&lt;/a&gt;&lt;/strong&gt; — 2026-08-22&lt;br&gt;
Simon argues that working well with coding agents requires instructing them clearly and verifying changes reliably — but not necessarily via line-by-line review. The practical takeaway is about agent evaluation: teams building with agents need alternative verification strategies (tests, observed behavior) instead of relying solely on exhaustive manual code review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://simonwillison.net/2026/Aug/19/jeremy-morrell/" rel="noopener noreferrer"&gt;Quoting Jeremy Morrell&lt;/a&gt;&lt;/strong&gt; — 2026-08-19&lt;br&gt;
Simon quotes Jeremy Morrell's post "Extensible Software in the age of LLMs," which proposes combining a reliable core with LLM-generated dynamic extensions, made viable by modern sandboxing. Relevant to anyone thinking about tool/function calling and runtime capability extension as part of an agent's design.&lt;/p&gt;

&lt;h2&gt;
  
  
  Through-line
&lt;/h2&gt;

&lt;p&gt;The strongest thread this week is that reliability, not raw capability, is where agent engineering effort is concentrating: Thinkingbox shows pass@1 success collapsing at pass@20, LangSmith's Tuned Evaluators exist to catch that kind of drift across 100% of production traffic, and Simon Willison's point about verification beyond code review makes the same argument from the practitioner side. Layered on top of that is a harness-first mindset — AgentWeave, Spine-Branch Coordination, AutoSaddler, and Latent Space's "Evolution of the Agent Harness" all treat the orchestration layer around the model, not the model itself, as the place where engineering gains are currently available.&lt;/p&gt;

&lt;p&gt;What are you seeing in your own agents — reliability collapsing under repeated runs, or holding up? Drop a note in the comments.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Ingest-Time Compilation Takes On Query-Time RAG, and Agentic Retrieval Meets Its Limits</title>
      <dc:creator>Felipe 0liveira</dc:creator>
      <pubDate>Mon, 24 Aug 2026 20:15:02 +0000</pubDate>
      <link>https://dev.to/felipe0liveira/ingest-time-compilation-takes-on-query-time-rag-and-agentic-retrieval-meets-its-limits-1fll</link>
      <guid>https://dev.to/felipe0liveira/ingest-time-compilation-takes-on-query-time-rag-and-agentic-retrieval-meets-its-limits-1fll</guid>
      <description>&lt;p&gt;This digest covers RAG and GraphRAG developments from roughly August 17–24, 2026: new arXiv papers, Hugging Face Daily Papers picks, and posts from the blogs we track.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔥 Highlights
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2608.20845v1" rel="noopener noreferrer"&gt;RAG Deserves an Index: Why Ingest-Time Compilation Beats Query-Time Interpretation&lt;/a&gt; — pre-compile claims once, stop re-deriving meaning per query.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2608.16004v1" rel="noopener noreferrer"&gt;LineageRAG&lt;/a&gt; — grounds GraphRAG evidence in verbatim source spans, not vibes.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2608.20627v1" rel="noopener noreferrer"&gt;When Failures Propagate: Causal Failure Attribution in Agentic RAG&lt;/a&gt; — diagnosis collapses to zero past the first hop.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2608.20685v1" rel="noopener noreferrer"&gt;Temporal Validity on Real Software Histories&lt;/a&gt; — RAG serves stale facts over a third of the time.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://neo4j.com/blog/graph-database/secure-graphrag-wiring-microsoft-copilot-studio-to-neo4j-with-per-user-okta-sso/" rel="noopener noreferrer"&gt;Secure GraphRAG: Wiring Microsoft Copilot Studio to Neo4j with per-user Okta SSO&lt;/a&gt; — per-user access control for enterprise GraphRAG.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  arXiv (cs.CL / cs.AI)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arxiv.org/abs/2608.20845v1" rel="noopener noreferrer"&gt;RAG Deserves an Index: Why Ingest-Time Compilation Beats Query-Time Interpretation&lt;/a&gt;&lt;/strong&gt; (2026-08-21) — Argues for "ingest-time semantic compilation": pre-computing atomic, provenance-validated claims at index time instead of re-deriving meaning from raw chunks on every query. Compiled claims hit 85.2% correctness on ~2.2k tokens vs. 72.5% on 16.3k tokens for chunk-based RAG. Practical value: a concrete architectural alternative if your pipeline is spending its context budget re-interpreting the same passages over and over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arxiv.org/abs/2608.16621v1" rel="noopener noreferrer"&gt;Cost Scales with Change, Not Corpus Size: Incrementally Maintaining an Evolving Semantic Substrate&lt;/a&gt;&lt;/strong&gt; (2026-08-17) — The engineering companion to the paper above: shows incremental low-rank (SVD) updates to a semantic index are 33.7x cheaper per update than a full rebuild, while tracking the rebuilt index to floating-point precision. Answers the obvious objection to ingest-time compilation ("won't re-indexing kill me on updates?") with a working incremental scheme.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arxiv.org/abs/2608.16004v1" rel="noopener noreferrer"&gt;LineageRAG: Harnessing GraphRAG by Constructing Evidence Lineages with Source Grounding&lt;/a&gt;&lt;/strong&gt; (2026-08-17) — Builds explicit "evidence lineages" per query, grounding each hop of graph traversal in a verbatim source span instead of leaving the evidence trail implicit. Beats leading GraphRAG baselines by 3.51 R@5 / 5.96 EM / 5.22 F1 on HotpotQA, 2WikiMultiHopQA, and MuSiQue — useful if your GraphRAG answers are accurate but impossible to audit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arxiv.org/abs/2608.16586v1" rel="noopener noreferrer"&gt;When Is Complex Chunking Worth It? A Multi-Objective Evaluation of Chunking Methods at Scale&lt;/a&gt;&lt;/strong&gt; (2026-08-17) — Evaluates 8 chunking strategies across 2 corpora, 3 embedding models, and multiple corpus sizes on both retrieval quality and operational cost (throughput/latency/memory). Bottom line: complex chunking rarely pays off consistently once you account for cost — good ammunition against over-engineering your chunker.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arxiv.org/abs/2608.20627v1" rel="noopener noreferrer"&gt;When Failures Propagate: Causal Failure Attribution in Agentic RAG&lt;/a&gt;&lt;/strong&gt; (2026-08-20) — Introduces AgenticRAG-FP, which injects a certified fault at a specific hop and checks whether post-hoc diagnosis can still find it once the agent's trajectory has changed. Coverage-based diagnosis collapses to 0.00 accuracy beyond hop 1 — a hard warning for anyone shipping "explain why the agent failed" tooling on top of agentic RAG.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arxiv.org/abs/2608.17889v1" rel="noopener noreferrer"&gt;VisDocAgentBench: Benchmarking Agents for Visually Rich Document Retrieval&lt;/a&gt;&lt;/strong&gt; (2026-08-18) — A strong static retriever hits 97.5% R@1 on direct queries over visually rich documents but only 2.5% on two-bridge (multi-hop) queries; agentic search recovers most of that loss. Quantifies exactly where the extra cost of agentic retrieval is earned, and where it's wasted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arxiv.org/abs/2608.20685v1" rel="noopener noreferrer"&gt;Temporal Validity on Real Software Histories: Eliminating Stale-Fact Errors in Code-Assistant Memory&lt;/a&gt;&lt;/strong&gt; (2026-08-21) — Validated on 130 real GitHub-issue state transitions: standard RAG has no time model and serves superseded facts 36–38% of the time, even with an LLM reranker in the loop. A deterministic supersession-memory system (MemStrata) drives that down to ~0 at comparable latency — sharp, data-backed illustration of a known RAG failure mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://arxiv.org/abs/2608.20631v1" rel="noopener noreferrer"&gt;Weighted Memory Tree: Remembering What Matters for Long-Horizon LLM Agents&lt;/a&gt;&lt;/strong&gt; (2026-08-21) — A hierarchical memory (tasks/subtasks/actions) with per-memory retention scores and decay, instead of a flat growing transcript. Gains +9.97 points accuracy on GAIA-Text over linear memory while cutting prompt tokens by 32.8% — a practical pruning technique for agents that run long.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hugging Face Daily Papers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://huggingface.co/papers/2608.21156" rel="noopener noreferrer"&gt;Graph Engineering in the Era of LLM Agents: From Individual Intelligence to System Intelligence&lt;/a&gt;&lt;/strong&gt; (2026-08-21) — A position paper proposing "Graph Engineering" as the successor to prompt/context/harness engineering: explicit, evolving graph structures coordinating tasks, agents, and system state across multi-agent systems. Worth reading if you think of GraphRAG purely as a retrieval technique — this argues the graph itself becomes the coordination layer for the whole agent system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://huggingface.co/papers/2608.20886" rel="noopener noreferrer"&gt;EviRank: Structured Relevance Evidence for Multimodal Image Re-ranking&lt;/a&gt;&lt;/strong&gt; (2026-08-21) — Recasts reranking as constraint satisfaction: parses queries into typed criteria (required/forbidden/ignorable) across six semantic slots, then reranks via deterministic rubric scoring plus evidence-grounded listwise comparison. State of the art across five multimodal retrieval benchmarks, and a distilled student model retains 90%+ of teacher quality at much lower cost — relevant if your reranker's failures are hard to explain to stakeholders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://huggingface.co/papers/2608.20202" rel="noopener noreferrer"&gt;MemTrapBench: Benchmarking Cognitive Traps in LLM Memory Use&lt;/a&gt;&lt;/strong&gt; (2026-08-20) — Shows that even faithfully retrieved, relevant memories can distort reasoning (reasoning fixation, belief distortion): every tested memory strategy in the benchmark underperforms a no-memory baseline, with the best methods still losing more than 10%. Proposes a simple inference-time instruction fix (AdaptiveMem). A useful reality check before you ship an agent-memory feature on the assumption that "more retrieved context is strictly better."&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Anthropic Engineering Blog
&lt;/h2&gt;

&lt;p&gt;Nothing relevant this week — no new posts on retrieval, agents, or memory engineering in the window.&lt;/p&gt;

&lt;h2&gt;
  
  
  LangChain blog
&lt;/h2&gt;

&lt;p&gt;Nothing squarely on-topic this week. LangSmith shipped "Tuned Evaluators" (2026-08-18) for flagging perceived error in agent traces, but it's general agent-observability tooling rather than a retrieval-quality or RAG-specific development.&lt;/p&gt;

&lt;h2&gt;
  
  
  LlamaIndex blog
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.llamaindex.ai/blog/temporal-scale-document-orchestration" rel="noopener noreferrer"&gt;How LlamaIndex Uses Temporal to Scale Reliable Document Orchestration&lt;/a&gt;&lt;/strong&gt; (2026-08-17) — Describes migrating their document-processing pipeline from RabbitMQ to Temporal for durable workflow execution at millions-of-pages/day scale, addressing fairness and concurrency in ingestion. It's about ingestion infrastructure rather than retrieval quality, but directly relevant if your RAG pipeline's bottleneck is reliably getting documents indexed in the first place.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Neo4j blog
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://neo4j.com/blog/graph-database/secure-graphrag-wiring-microsoft-copilot-studio-to-neo4j-with-per-user-okta-sso/" rel="noopener noreferrer"&gt;Secure GraphRAG: Wiring Microsoft Copilot Studio to Neo4j with per-user Okta SSO&lt;/a&gt;&lt;/strong&gt; (2026-08-20) — Walks through wiring Microsoft Copilot Studio to a Neo4j-backed GraphRAG system via a Neo4j MCP server on Cloud Run, forwarding each user's Okta access token so graph queries respect per-user permissions instead of a shared service account. Solves the "confused deputy" problem for agentic GraphRAG in enterprise settings that need row/entity-level access control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://neo4j.com/blog/twin4j/this-week-in-neo4j-agent-memory-mcp-skills-cypher-and-more/" rel="noopener noreferrer"&gt;This Week in Neo4j: Agent Memory, MCP, Skills, Cypher and more&lt;/a&gt;&lt;/strong&gt; (2026-08-21) — Roundup pointing to real developer work in-window: Aura instances now ship a built-in MCP server for zero-setup OAuth graph access from clients like Claude Desktop, and skill distillation in Neo4j's Agent Memory Service converts agent memory into portable SKILL packages. Useful as a pointer list if you're evaluating Neo4j's agent-memory tooling specifically.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Simon Willison
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://simonwillison.net/2026/Aug/20/chatgpt-search-now-uses-the-siteoperator-at-scale/" rel="noopener noreferrer"&gt;ChatGPT search now uses the site: operator at scale&lt;/a&gt;&lt;/strong&gt; (2026-08-20) — Citing GEO-monitoring firm Promptwatch, ChatGPT Search's use of the &lt;code&gt;site:&lt;/code&gt; operator jumped from 0.3–0.5% to 16–17% of queries after the GPT-5.6 rollout, alongside a drop in Reddit citations. Simon notes this is likely exposed via a structured &lt;code&gt;search(query, recency, domains)&lt;/code&gt; function rather than a raw operator string — a concrete data point on a production LLM system shifting toward explicit domain-restricted retrieval to improve source reliability.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Latent Space
&lt;/h2&gt;

&lt;p&gt;Nothing relevant this week — posts in the window covered agent harness design, behavioral simulation, and model routing economics, none with substantive retrieval or memory-architecture content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Interconnects
&lt;/h2&gt;

&lt;p&gt;Nothing relevant this week — the one post in the window covered open-model business strategy, not retrieval or evaluation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Through-line
&lt;/h2&gt;

&lt;p&gt;The strongest thread this week is a shift from treating retrieval as a query-time problem to treating it as an ingest-time and provenance problem: pre-compiled semantic indexes, evidence lineages grounded in verbatim spans, and Neo4j's per-user access wiring all move work and accountability earlier in the pipeline instead of hoping the query-time retriever gets it right. The second thread is a set of sober benchmarks pushing back on assumptions: agentic retrieval only earns its cost on genuinely multi-hop queries, more retrieved memory can actively hurt reasoning, and plain RAG has no notion of time and will confidently hand back superseded facts more than a third of the time. Taken together, it's a good week for treating "retrieval works" as a claim to verify per failure mode, not a property you get for free.&lt;/p&gt;

&lt;p&gt;What's your pipeline doing about stale facts or evidence provenance? Drop a comment below.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>rag</category>
    </item>
    <item>
      <title>🚀 SemVer: por que esse `1.2.3` muda sua vida (e seus bugs)</title>
      <dc:creator>Felipe 0liveira</dc:creator>
      <pubDate>Sat, 09 Aug 2025 15:50:03 +0000</pubDate>
      <link>https://dev.to/felipe0liveira/semver-por-que-esse-123-muda-sua-vida-e-seus-bugs-1d64</link>
      <guid>https://dev.to/felipe0liveira/semver-por-que-esse-123-muda-sua-vida-e-seus-bugs-1d64</guid>
      <description>&lt;p&gt;Você já deve ter visto algo assim no &lt;code&gt;package.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"react"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^18.2.0"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E aí surge a dúvida:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Mas que raios significam esses números? É só o dev mostrando que sabe contar?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Não, jovem padawan. Isso é &lt;strong&gt;Semantic Versioning&lt;/strong&gt; — o famoso &lt;strong&gt;SemVer&lt;/strong&gt; — e ele é mais importante do que parece.&lt;/p&gt;




&lt;h2&gt;
  
  
  📦 O formato
&lt;/h2&gt;

&lt;p&gt;SemVer segue o padrão:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MAJOR.MINOR.PATCH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo: &lt;code&gt;2.5.1&lt;/code&gt; significa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MAJOR (2)&lt;/strong&gt; → Mudanças que quebram compatibilidade (&lt;em&gt;breaking changes&lt;/em&gt;).&lt;br&gt;&lt;br&gt;
Tipo quando você atualiza e metade do seu código para de funcionar 😅.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MINOR (5)&lt;/strong&gt; → Novos recursos, mas compatíveis com a versão anterior.&lt;br&gt;&lt;br&gt;
É como adicionar novas pizzas no cardápio sem tirar as antigas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PATCH (1)&lt;/strong&gt; → Correções de bugs e ajustes pequenos.&lt;br&gt;&lt;br&gt;
Aquele “remendinho” que ninguém percebe… até perceber.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Por que importa?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Te ajuda a saber &lt;strong&gt;o tamanho da treta&lt;/strong&gt; antes de atualizar.&lt;/li&gt;
&lt;li&gt;Facilita comunicação entre equipes.&lt;/li&gt;
&lt;li&gt;Evita “surpresas” no deploy — embora a gente saiba que sempre rola.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚠️ O cuidado com &lt;code&gt;^&lt;/code&gt; e &lt;code&gt;~&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;No npm/yarn, esses símbolos definem como a versão pode variar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;^1.2.3&lt;/code&gt; → Pode atualizar &lt;strong&gt;MINOR e PATCH&lt;/strong&gt;, mas não MAJOR.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~1.2.3&lt;/code&gt; → Pode atualizar só o PATCH.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📌 Ou seja: aquele &lt;code&gt;npm install&lt;/code&gt; inocente pode te trazer um bug fresquinho se você não prestar atenção.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Moral da história
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Confie no SemVer&lt;/strong&gt; (mas verifique o changelog).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MAJOR&lt;/strong&gt; = risco alto
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MINOR&lt;/strong&gt; = recurso novo
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PATCH&lt;/strong&gt; = bug corrigido
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;E lembre-se: nem todo projeto segue SemVer direito… às vezes, a galera inventa moda. 😏&lt;/p&gt;




&lt;p&gt;💬 &lt;strong&gt;E aí, você segue SemVer ou só atualiza e reza? Conta aí nos comentários.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>semver</category>
      <category>semanticversion</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Definitivamente pontuando tasks</title>
      <dc:creator>Felipe 0liveira</dc:creator>
      <pubDate>Thu, 27 Mar 2025 17:03:50 +0000</pubDate>
      <link>https://dev.to/felipe0liveira/definitivamente-pontuando-tasks-89c</link>
      <guid>https://dev.to/felipe0liveira/definitivamente-pontuando-tasks-89c</guid>
      <description>&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%2Fna5letvfd1rwwen8kifi.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%2Fna5letvfd1rwwen8kifi.png" alt=" " width="776" height="643"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Matriz de Complexidade e Incerteza
&lt;/h1&gt;

&lt;p&gt;A Matriz de Complexidade e Incerteza é uma ferramenta visual que ajuda equipes e organizações a compreenderem melhor o grau de dificuldade de um projeto ou iniciativa, levando em consideração dois eixos principais:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Complexidade Técnica:&lt;/strong&gt; Representa o nível de conhecimento tecnológico disponível na equipe, a dependência de outros times e o domínio sobre as soluções técnicas necessárias.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Incerteza de Negócios:&lt;/strong&gt; Refere-se ao grau de clareza das regras de negócio envolvidas, o entendimento do problema a ser resolvido e o alinhamento com os objetivos estratégicos.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A combinação desses dois eixos gera uma classificação em diferentes níveis de dificuldade, que vão desde contextos simples (baixa complexidade e baixa incerteza) até cenários altamente desafiadores (alta complexidade e alta incerteza).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Para facilitar a compreensão e comunicação entre times, cada nível de dificuldade é representado por um animal simbólico, que reflete de forma lúdica e intuitiva a situação enfrentada. Além disso, os níveis de dificuldade são numerados com base na sequência de Fibonacci, que ilustra a progressão natural do aumento de esforço e incerteza à medida que os desafios se tornam mais complexos.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  1. Cachorro
&lt;/h3&gt;

&lt;p&gt;Pontuação: 1&lt;br&gt;
Complexidade: Baixa&lt;br&gt;
Incerteza: Baixa&lt;br&gt;
Definição:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conhecemos a tecnologia&lt;/li&gt;
&lt;li&gt;Não temos dependência de outros times&lt;/li&gt;
&lt;li&gt;Regras de negócio bem definidas&lt;/li&gt;
&lt;li&gt;Todos conhecem as regras de negócio&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Cavalo
&lt;/h3&gt;

&lt;p&gt;Pontuação: 2&lt;br&gt;
Complexidade: Baixa&lt;br&gt;
Incerteza: Média&lt;br&gt;
Definição:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conhecemos a tecnologia&lt;/li&gt;
&lt;li&gt;Não temos dependência de outros times&lt;/li&gt;
&lt;li&gt;Regras de negócio não estão claras&lt;/li&gt;
&lt;li&gt;Alguém do time conhece as regras de negócio&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. Rinoceronte
&lt;/h3&gt;

&lt;p&gt;Ação: Refinar&lt;br&gt;
Pontuação: 3&lt;br&gt;
Complexidade: Baixa&lt;br&gt;
Incerteza: Alta&lt;br&gt;
Definição:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conhecemos a tecnologia&lt;/li&gt;
&lt;li&gt;Não temos dependência de outros times&lt;/li&gt;
&lt;li&gt;Regras de negócio confusas e/ou complexas&lt;/li&gt;
&lt;li&gt;Ninguém conhece as regras de negócio&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Cavalo
&lt;/h3&gt;

&lt;p&gt;Pontuação: 5&lt;br&gt;
Complexidade: Média&lt;br&gt;
Incerteza: Baixa&lt;br&gt;
Definição:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alguém do time conhece a tecnologia&lt;/li&gt;
&lt;li&gt;Temos pouca dependência de outros times&lt;/li&gt;
&lt;li&gt;Regras de negócio bem definidas&lt;/li&gt;
&lt;li&gt;Todos conhecem as regras de negócio&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. Camelo
&lt;/h3&gt;

&lt;p&gt;Pontuação: 8&lt;br&gt;
Complexidade: Média&lt;br&gt;
Incerteza: Média&lt;br&gt;
Definição:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alguém do time conhece a tecnologia&lt;/li&gt;
&lt;li&gt;Temos pouca dependência de outros times&lt;/li&gt;
&lt;li&gt;Regras de negócio não estão claras&lt;/li&gt;
&lt;li&gt;Alguém do time conhece as regras de negócio&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  6. Girafa
&lt;/h3&gt;

&lt;p&gt;Ação: Refinar&lt;br&gt;
Pontuação: 13&lt;br&gt;
Complexidade: Média&lt;br&gt;
Incerteza: Alta&lt;br&gt;
Definição:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alguém do time conhece a tecnologia&lt;/li&gt;
&lt;li&gt;Temos pouca dependência de outros times&lt;/li&gt;
&lt;li&gt;Regras de negócio confusas e/ou complexas&lt;/li&gt;
&lt;li&gt;Ninguém conhece as regras de negócio&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  7. Rinoceronte
&lt;/h3&gt;

&lt;p&gt;Ação: Quebrar e Refinar&lt;br&gt;
Pontuação: 21&lt;br&gt;
Complexidade: Alta&lt;br&gt;
Incerteza: Baixa&lt;br&gt;
Definição:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ninguém do time conhece a tecnologia&lt;/li&gt;
&lt;li&gt;Temos dependência de outros times&lt;/li&gt;
&lt;li&gt;Regras de negócio bem definidas&lt;/li&gt;
&lt;li&gt;Todos conhecem as regras de negócio&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  8. Girafa
&lt;/h3&gt;

&lt;p&gt;Ação: Quebrar e Refinar&lt;br&gt;
Pontuação: 34&lt;br&gt;
Complexidade: Alta&lt;br&gt;
Incerteza: Média&lt;br&gt;
Definição:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ninguém do time conhece a tecnologia&lt;/li&gt;
&lt;li&gt;Temos dependência de outros times&lt;/li&gt;
&lt;li&gt;Regras de negócio não estão claras&lt;/li&gt;
&lt;li&gt;Alguém do time conhece as regras de negócio&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  9. Elefante
&lt;/h3&gt;

&lt;p&gt;Ação: Quebrar e Refinar&lt;br&gt;
Pontuação: 55&lt;br&gt;
Complexidade: Alta&lt;br&gt;
Incerteza: Alta&lt;br&gt;
Definição:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ninguém do time conhece a tecnologia&lt;/li&gt;
&lt;li&gt;Temos dependência de outros times&lt;/li&gt;
&lt;li&gt;Regras de negócio confusas e/ou complexas&lt;/li&gt;
&lt;li&gt;Ninguém conhece as regras de negócio&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Esse artigo foi gerado com o auxilio de uma IA Generativa&lt;/em&gt;&lt;br&gt;&lt;br&gt;
Fontes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PM3&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>storypoint</category>
      <category>agile</category>
      <category>scrum</category>
      <category>kanban</category>
    </item>
    <item>
      <title>Iniciando na área de desenvolvimento (guia prático)</title>
      <dc:creator>Felipe 0liveira</dc:creator>
      <pubDate>Mon, 18 Nov 2024 13:38:03 +0000</pubDate>
      <link>https://dev.to/felipe0liveira/iniciando-na-area-de-desenvolvimento-4odp</link>
      <guid>https://dev.to/felipe0liveira/iniciando-na-area-de-desenvolvimento-4odp</guid>
      <description>&lt;p&gt;Entrar na área de desenvolvimento pode parecer desafiador no início. Com termos técnicos, múltiplas linguagens de programação, ferramentas e frameworks surgindo constantemente, é natural sentir-se perdido. No entanto, o desenvolvimento de software é uma carreira repleta de oportunidades, desafios empolgantes e possibilidades de crescimento.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Neste post, vamos compartilhar uma visão prática e acessível para quem está começando na área de desenvolvimento, com base em quase uma década de experiência em desenvolvimento Frontend e Fullstack. Nosso objetivo é ajudar você a entender o que é necessário para iniciar sua jornada, os primeiros passos que você deve dar e como se manter motivado ao longo do caminho.&lt;/p&gt;
&lt;/blockquote&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%2F8qyofdcgck1n8mu7r91j.gif" 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%2F8qyofdcgck1n8mu7r91j.gif" alt="John Travolta" width="480" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Mas por onde começar?
&lt;/h1&gt;

&lt;p&gt;Se você está pensando em entrar no mundo do desenvolvimento, o primeiro passo é entender as diferentes áreas dentro dessa carreira. Isso ajuda a decidir onde concentrar seus esforços inicialmente. Vamos explicar de forma prática e clara:&lt;/p&gt;




&lt;h3&gt;
  
  
  Frontend: A “cara” do software
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;O Frontend é a parte visível de um site ou aplicação, tudo o que o usuário interage diretamente. É como o “design funcional”, onde se criam botões, menus, animações e layouts bonitos e intuitivos.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;O que faz um desenvolvedor Frontend?&lt;/strong&gt;&lt;br&gt;
Ele transforma designs (em ferramentas como Figma ou Photoshop) em código funcional, usando linguagens como HTML, CSS e JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplos práticos:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Criar o botão de “comprar” em uma loja virtual.&lt;/li&gt;
&lt;li&gt;Fazer uma página se ajustar automaticamente a telas de celular (responsividade).&lt;/li&gt;
&lt;li&gt;Adicionar animações, como imagens que aparecem suavemente ao rolar a página.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se você gosta de combinar lógica com criatividade, o Frontend pode ser um ótimo ponto de partida.&lt;/p&gt;




&lt;h3&gt;
  
  
  Backend: O cérebro por trás da aplicação
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;O Backend é o que acontece “nos bastidores”. Ele cuida de tudo que o usuário não vê, como lógica, banco de dados e servidores.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;O que faz um desenvolvedor Backend?&lt;/strong&gt;&lt;br&gt;
Ele garante que os dados fluam corretamente, que as regras de negócio funcionem e que o sistema seja rápido e seguro. Linguagens como Python, Java, Node.js e PHP são comuns aqui.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplos práticos:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Salvar os dados de um formulário em um banco de dados.&lt;/li&gt;
&lt;li&gt;Processar pagamentos em um e-commerce.&lt;/li&gt;
&lt;li&gt;Implementar uma lógica para recomendar filmes ou produtos com base no perfil do usuário.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se você gosta de resolver problemas lógicos e trabalhar com dados, o Backend pode ser o caminho.&lt;/p&gt;




&lt;h3&gt;
  
  
  Fullstack: O "faz tudo"
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Um desenvolvedor Fullstack é como um “canivete suíço” da programação. Ele trabalha tanto no Frontend quanto no Backend, conectando os dois lados.&lt;/p&gt;
&lt;/blockquote&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%2Fjdcsdrhfvmv43endepy9.gif" 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%2Fjdcsdrhfvmv43endepy9.gif" alt="Mulher baquetando o ar" width="480" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que faz um desenvolvedor Fullstack?&lt;/strong&gt;&lt;br&gt;
Ele entende o suficiente de ambos os mundos para construir um sistema completo, desde a interface até a lógica e o banco de dados.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplos práticos:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Criar um blog do zero: da página inicial ao armazenamento das postagens.&lt;/li&gt;
&lt;li&gt;Construir uma aplicação que mostre produtos e permita comprá-los, lidando com o design e o pagamento.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ser Fullstack é ideal para quem gosta de aprender um pouco de tudo e busca flexibilidade.&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%2Fnlpqbnitxrzkfw8l7hpn.gif" 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%2Fnlpqbnitxrzkfw8l7hpn.gif" alt="menina com duvida" width="400" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Qual escolher primeiro?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; Se você gosta de design, interação visual e de ver resultados rápidos.&lt;br&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Se prefere lógica, trabalhar “nos bastidores” e lidar com dados.&lt;br&gt;
&lt;strong&gt;Fullstack:&lt;/strong&gt; Se quer explorar tudo e ter uma visão ampla (ideal para quem não sabe por onde começar).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Independentemente do caminho, o importante é dar o primeiro passo! O próximo tópico trará as ferramentas e linguagens essenciais para cada área.&lt;/em&gt; 🚀&lt;/p&gt;




&lt;h1&gt;
  
  
  JavaScript: O Alicerce da Web e Além
&lt;/h1&gt;

&lt;p&gt;Se existe uma linguagem de programação que todo iniciante deveria considerar, essa linguagem é o JavaScript. Extremamente versátil, o JavaScript (ou simplesmente JS) é uma das tecnologias mais utilizadas no desenvolvimento de software. Ele começou como a “linguagem da web”, mas hoje é muito mais do que isso, sendo uma poderosa ferramenta tanto para Frontend, Backend e até mesmo áreas além do desenvolvimento tradicional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por que aprender JavaScript?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Onipresença na Web:&lt;/strong&gt;&lt;br&gt;
Quase todos os sites que você acessa dependem de JavaScript. Ele é responsável por adicionar dinamismo e interatividade às páginas, como menus, animações e formulários que “respondem” ao usuário.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Versatilidade&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Com JavaScript, você pode desenvolver para diferentes plataformas:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; Criar interfaces visuais com frameworks como React, Vue.js ou Angular.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend:&lt;/strong&gt; Construir servidores robustos usando Node.js.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aplicativos Mobile:&lt;/strong&gt; Desenvolver apps para Android e iOS com React Native.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aplicações Desktop:&lt;/strong&gt;&lt;br&gt;
Criar softwares multiplataforma com Electron.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inteligência Artificial e Data Science:&lt;/strong&gt;&lt;br&gt;
Sim, até áreas como IA estão sendo exploradas com bibliotecas JS, como TensorFlow.js.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comunidade e Recursos&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O JavaScript tem uma comunidade global gigantesca. Isso significa que você encontrará muitos tutoriais, vídeos, fóruns e ferramentas gratuitas para aprender e resolver dúvidas.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Alta Empregabilidade:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;JS é uma habilidade essencial para desenvolvedores Frontend e muito valorizada por Fullstack e Backend. Empresas de todos os tamanhos, de startups a gigantes como Google e Facebook, usam JavaScript em seus projetos.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  O Potencial do JavaScript
&lt;/h2&gt;

&lt;p&gt;Imagine que você quer construir um sistema completo. O JavaScript permite isso com as seguintes ferramentas:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; Com frameworks como React, você pode criar interfaces modernas e dinâmicas, como as que vemos em redes sociais ou e-commerces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend:&lt;/strong&gt; Usando Node.js, é possível criar servidores que processam milhões de solicitações por dia. Exemplo? A Netflix usa Node.js para parte de sua plataforma.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Banco de Dados:&lt;/strong&gt; O JavaScript trabalha bem com bancos de dados modernos como o MongoDB, que usa a mesma estrutura de objetos que o JS (JSON).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API e Integrações:&lt;/strong&gt; Você pode construir sistemas que se conectam com outros serviços, como gateways de pagamento, redes sociais ou sistemas internos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Projetos Criativos:&lt;/strong&gt; Com bibliotecas como Three.js, você pode criar experiências 3D para a web. Quer fazer jogos? Experimente o Phaser.js.&lt;/p&gt;




&lt;h2&gt;
  
  
  Começando com JavaScript
&lt;/h2&gt;

&lt;p&gt;Aqui está um plano inicial para explorar o JS:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Aprenda o básico:&lt;/strong&gt; Entenda variáveis, funções, loops e eventos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explore o DOM:&lt;/strong&gt; Descubra como manipular elementos de uma página web.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crie pequenos projetos:&lt;/strong&gt; Um jogo simples, um cronômetro ou uma lista de tarefas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avance para frameworks:&lt;/strong&gt; Experimente React para o Frontend e Node.js para o Backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aprofunde-se com APIs e bancos de dados:&lt;/strong&gt; Conecte suas aplicações ao mundo real.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;O JavaScript é a porta de entrada para muitas áreas do desenvolvimento e continua sendo uma das linguagens mais procuradas no mercado. Nos próximos tópicos, vamos falar sobre ferramentas práticas e dicas para você se aprofundar ainda mais. Seu futuro na tecnologia pode começar aqui!&lt;/p&gt;
&lt;/blockquote&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%2F2ik8me5bctekxez6veyn.gif" 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%2F2ik8me5bctekxez6veyn.gif" alt="seila, só achei no giphy memo" width="480" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chegamos ao final deste guia prático, e espero que você tenha se sentido inspirado(a) e mais preparado(a) para dar o primeiro passo na sua carreira em desenvolvimento. A tecnologia é um campo dinâmico, cheio de desafios e oportunidades, e o mais importante é começar, mesmo que pareça desafiador no início. Cada linha de código escrita é um passo em direção a um futuro cheio de possibilidades.&lt;/p&gt;

&lt;p&gt;Seja explorando o Frontend, o Backend ou se aventurando como Fullstack, lembre-se: a curiosidade e a prática constante são suas maiores aliadas. E, como vimos, o JavaScript é uma ferramenta poderosa para iniciar essa jornada, conectando você às várias possibilidades da programação.&lt;/p&gt;

&lt;p&gt;Agradeço por dedicar seu tempo à leitura deste post e por confiar nessa visão prática de quem já passou pelos desafios e conquistas dessa área. Agora é a sua vez de brilhar!&lt;/p&gt;

&lt;p&gt;👉 Compartilhe suas ideias! Tem dúvidas, quer compartilhar sua experiência ou até mesmo sugerir outros tópicos para explorarmos? Deixe um comentário! Vou adorar saber o que você pensa e ajudar na sua caminhada.&lt;/p&gt;

&lt;p&gt;Bem-vindo(a) à área de desenvolvimento! O mundo da tecnologia precisa de pessoas como você. 🌟&lt;/p&gt;

&lt;p&gt;Até a próxima...&lt;/p&gt;

&lt;p&gt;Autor: &lt;a href="https://github.com/felipe0liveira" rel="noopener noreferrer"&gt;Felipe Oliveira&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Liberar espaço deletando os node_modules/</title>
      <dc:creator>Felipe 0liveira</dc:creator>
      <pubDate>Mon, 17 Aug 2020 13:20:27 +0000</pubDate>
      <link>https://dev.to/felipe0liveira/liberar-espaco-deletando-os-nodemodules-nh8</link>
      <guid>https://dev.to/felipe0liveira/liberar-espaco-deletando-os-nodemodules-nh8</guid>
      <description>&lt;p&gt;Pra quem não sabe a pastinha node_modules, armazena todos os "modulos" e bibliotecas que usamos em nosso projeto, porém na maioria das vezes nós temos mais de 1 projeto que usam uma mesma dependência, na minha maquina em questão, tenho por volta de 40 repositórios que usam o &lt;code&gt;npm&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Por conta disso, tenho muito espaço sendo utilizado em disco e pra dar uma boa aliviada, uma alternativa super interessante é simplesmente apagar as pastas &lt;code&gt;node_modules&lt;/code&gt; de cada projeto.&lt;/p&gt;

&lt;p&gt;Para não precisar acessar cada diretório, basta abrir o seu terminal e ir para a pasta do seu workspace e rodar o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;~ &lt;span class="nv"&gt;$ &lt;/span&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; node_modules &lt;span class="nt"&gt;-type&lt;/span&gt; d &lt;span class="nt"&gt;-print0&lt;/span&gt;|xargs &lt;span class="nt"&gt;-0&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fi%2Fba4lz5l2cgr64cgliz8g.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%2Fi%2Fba4lz5l2cgr64cgliz8g.png" alt="Terminal" width="697" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse comando basicamente é dividido em duas partes, a primeira é responsável por procurar todos os diretórios com o nome &lt;code&gt;node_modules&lt;/code&gt; e retornar seu caminho completo para o segundo comando que tem a atribuição de deletar, a partir de um caminho e,&lt;/p&gt;

&lt;p&gt;All Done Galera!&lt;/p&gt;

&lt;p&gt;Espero ter ajudado &amp;lt;3&lt;/p&gt;

</description>
      <category>npm</category>
      <category>node</category>
      <category>modules</category>
      <category>linux</category>
    </item>
    <item>
      <title>Frontend - Testes E2E</title>
      <dc:creator>Felipe 0liveira</dc:creator>
      <pubDate>Tue, 14 Apr 2020 19:20:39 +0000</pubDate>
      <link>https://dev.to/felipe0liveira/frontend-testes-e2e-63g</link>
      <guid>https://dev.to/felipe0liveira/frontend-testes-e2e-63g</guid>
      <description>&lt;p&gt;Atualmente, são vários os motivos para implementar testes end-to-end em uma aplicação.&lt;/p&gt;

&lt;p&gt;Basicamente, o principal motivo de um teste automatizado é a prevenção de futuros problemas e bugs, que em muitos casos são invisíveis para o desenvolvedor, principalmente em grandes projetos.&lt;br&gt;
Outro cenário bem comum que os testes e2e se aplicam, são as execuções em massa como: cadastro, login, consulta, etc.&lt;/p&gt;

&lt;p&gt;Um teste &lt;strong&gt;e2e&lt;/strong&gt; permitirá testar todos os cenários, sendo eles válidos ou inválidos, em muito menos tempo que uma pessoa pode fazer.&lt;br&gt;
Dos frameworks disponibilizados atualmente, um dos mais famosos para &lt;strong&gt;JavaScript&lt;/strong&gt; é o &lt;strong&gt;Protractor&lt;/strong&gt; que, juntamente ao &lt;strong&gt;Jasmine&lt;/strong&gt;, entregará as ferramentas necessárias para cobrir com testes toda a sua aplicação.&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%2Fd2eip9sf3oo6c2.cloudfront.net%2Ftags%2Fimages%2F000%2F000%2F016%2Ffull%2Fprotractor.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%2Fd2eip9sf3oo6c2.cloudfront.net%2Ftags%2Fimages%2F000%2F000%2F016%2Ffull%2Fprotractor.png" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O &lt;a href="https://www.protractortest.org/" rel="noopener noreferrer"&gt;site oficial&lt;/a&gt; do &lt;strong&gt;Protractor&lt;/strong&gt; fornece uma ótima documentação que te ajudará a iniciar nesse mundo dos testes.&lt;br&gt;
Se você tem uma dúvida ou até mesmo uma observação, sinta-se à vontade para comentar esse post.&lt;/p&gt;

&lt;p&gt;E não se esqueça de aplicar &lt;a href="https://dev.to/felipe0liveira/sua-alma-na-documentacao-docsoul-25f6"&gt;&lt;strong&gt;DocSoul&lt;/strong&gt;&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>e2e</category>
      <category>protractor</category>
      <category>javascript</category>
      <category>jasmine</category>
    </item>
    <item>
      <title>Sua alma na documentação - DocSoul</title>
      <dc:creator>Felipe 0liveira</dc:creator>
      <pubDate>Tue, 14 Apr 2020 19:19:39 +0000</pubDate>
      <link>https://dev.to/felipe0liveira/sua-alma-na-documentacao-docsoul-25f6</link>
      <guid>https://dev.to/felipe0liveira/sua-alma-na-documentacao-docsoul-25f6</guid>
      <description>&lt;p&gt;Em minha concepção, é necessário entender que ter &lt;em&gt;“boas práticas”&lt;/em&gt; não é como aprender uma nova linguagem e sim aplicar uma vertente de lógica visando um entendimento e manutenção futura de um código.&lt;/p&gt;

&lt;p&gt;O mais comum é quando um desenvolvedor precisa alterar uma aplicação que não foi codificada com &lt;em&gt;“boas práticas”&lt;/em&gt;, sendo necessário muitas vezes, refatorar e perder tempo com coisas que deveriam ser muito mais simples.&lt;/p&gt;

&lt;p&gt;Outra situação, é quando um desenvolvedor tem um projeto em desenvolvimento e decide parar a codificação para continuar futuramente.&lt;/p&gt;

&lt;p&gt;Se este desenvolvedor fez seu código utilizando boas práticas e até mesmo fazendo &lt;strong&gt;DocSoul&lt;/strong&gt;, terá um ganho de tempo, simplificando e agilizando seu trabalho.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nomenclatura de variáveis
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;É muito importante que você deixe que uma variável seja auto explicativa, ou seja, quando um Dev se deparar com ela, ele saberá exatamente o propósito da mesma.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Por exemplo, ao invés de utilizar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;elapsed&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Utilize:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;daysSinceModification&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;agesOfUsers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Jamais pense em usar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;nameString&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;theUsers&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando somente o necessário é o melhor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Funções
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Uma função tem o propósito de nomenclatura muito semelhante ao de uma variável, portanto, deixe sua função nomeada de forma com que o desenvolvedor, ao acessar, saiba exatamente sua finalidade.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Por exemplo, imagine que temos uma função que convida um usuário, utilizando seu e-mail. Nesse caso, poderíamos fazer desta forma (uma das formas mais comuns):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;conv&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;usuario&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Basicamente, a abreviação ‘conv’ no nome da função acima significa ‘convidar’ e o parâmetro é chamado de ‘usuário’ pois identificará este por meio de seu email.&lt;br&gt;
Porém, o ideal seria fazer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;convidarUsuario&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Desta maneira, a função tem um nome claro independente de onde for chamada!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ter boas práticas é somente o primeiro passo para ter organização, qualidade e eficiência em seus projetos. O ideal é conciliar com &lt;strong&gt;DocSoul&lt;/strong&gt;, que vai além das boas práticas, é uma cultura a ser desenvolvida e incentivada, tanto por desenvolvedores quanto pela empresa, deixando sua marca no documento, para que quando um desenvolvedor visualize seu código, além de entender a lógica e suas tomadas de decisões, reconheça e entenda que além da linha de raciocínio desenvolvida para aquele código, tem sua marca registrada.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Valeu pessoal!&lt;/p&gt;

</description>
      <category>documentacao</category>
      <category>javascript</category>
      <category>docsoul</category>
      <category>docummentation</category>
    </item>
    <item>
      <title>[MacOS] Biometria para 'sudo' no terminal</title>
      <dc:creator>Felipe 0liveira</dc:creator>
      <pubDate>Wed, 25 Mar 2020 17:04:23 +0000</pubDate>
      <link>https://dev.to/felipe0liveira/macos-biometria-para-sudo-no-terminal-3fpg</link>
      <guid>https://dev.to/felipe0liveira/macos-biometria-para-sudo-no-terminal-3fpg</guid>
      <description>&lt;h1&gt;
  
  
  Por que?
&lt;/h1&gt;

&lt;p&gt;Todos nós sabemos que para utilizar o sudo no terminal precisamos digitar nossa senha de super usuário ou admin. Não seria muito interessante se sempre que precisarmos usar nossa senha, pudessemos usar a biometria do nosso Macbook?&lt;/p&gt;

&lt;h1&gt;
  
  
  Para quem?
&lt;/h1&gt;

&lt;p&gt;Esse tutorial é válido somente para usuários dos Macbooks com Sensor Biométrico.&lt;/p&gt;

&lt;h1&gt;
  
  
  Como fazer?
&lt;/h1&gt;

&lt;p&gt;1 - Vamos abrir o arquivo &lt;code&gt;/etc/pam.d/sudo&lt;/code&gt; através do terminal utilizando o editor de sua preferência, no meu caso utilizarei o nano, que já vem por padrão instalado no MacOS a partir do comando: &lt;code&gt;sudo nano /etc/pam.d/sudo&lt;/code&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%2F8rdyi4z4161sbb060ncr.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%2F8rdyi4z4161sbb060ncr.png" alt="Evidência sudo original" width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 - Com o arquivo aberto, vamos adicionar uma nova forma de autenticação para ele por meio da linha &lt;code&gt;auth       sufficient     pam_tid.so&lt;/code&gt; que deve ser adicionada na segunda linha do arquivo&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%2F5mquxy1d1736aroid56h.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%2F5mquxy1d1736aroid56h.png" alt="Evidência pam_tid.so" width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 - Para fechar o arquivo basta pressionar &lt;code&gt;control + x&lt;/code&gt; (^X) em seguida digite &lt;code&gt;y&lt;/code&gt; para confirmar que quer salvar o arquivo e depois é só apertar &lt;code&gt;return&lt;/code&gt; para sobrescrever o arquivo atual.&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%2F9y6645y50damktfgsnxj.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%2F9y6645y50damktfgsnxj.png" alt="Evidência Salvar" width="794" height="67"&gt;&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%2Fxk4do34zniog84v8vd5i.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%2Fxk4do34zniog84v8vd5i.png" alt="Evidência Sobrescrever" width="799" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Obs.: Com tudo feito, não se esqueça de encerrar o terminal para que ele recarregue as configurações de permissão e então você pode validar a alteração com o comando &lt;code&gt;sudo echo hello&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;É isso pessoal, qualquer coisa é só comentar...&lt;/p&gt;

</description>
      <category>macos</category>
      <category>sudo</category>
      <category>fingerprint</category>
      <category>terminal</category>
    </item>
    <item>
      <title>Visual Studio Online - Minhas considerações</title>
      <dc:creator>Felipe 0liveira</dc:creator>
      <pubDate>Tue, 05 Nov 2019 08:33:16 +0000</pubDate>
      <link>https://dev.to/felipe0liveira/visual-studio-code-online-minhas-consideracoes-3pa3</link>
      <guid>https://dev.to/felipe0liveira/visual-studio-code-online-minhas-consideracoes-3pa3</guid>
      <description>&lt;p&gt;Vejo como um enorme passo para a galera &lt;strong&gt;dev&lt;/strong&gt;, principalmente aqueles que trabalham com múltiplos &lt;strong&gt;ambientes&lt;/strong&gt; e em múltiplos &lt;strong&gt;dispositivos&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Já vejo a alta possibilidade de ser &lt;strong&gt;produtivo&lt;/strong&gt; utilizando um &lt;strong&gt;tablet&lt;/strong&gt;, o real desenvolvimento por meio de alguma plataforma &lt;strong&gt;mobile&lt;/strong&gt; parece estar crescendo de uma forma muito concreta.&lt;/p&gt;

&lt;p&gt;Segue um dos posts falando sobre o &lt;a href="https://devblogs.microsoft.com/visualstudio/announcing-visual-studio-online-public-preview/" rel="noopener noreferrer"&gt;#vsonline&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bora discutir sobre galera...&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>vsonline</category>
      <category>developmnt</category>
    </item>
    <item>
      <title>CSS Buttons - Dopamina</title>
      <dc:creator>Felipe 0liveira</dc:creator>
      <pubDate>Mon, 26 Aug 2019 08:39:59 +0000</pubDate>
      <link>https://dev.to/felipe0liveira/css-buttons-dopamine-3ehj</link>
      <guid>https://dev.to/felipe0liveira/css-buttons-dopamine-3ehj</guid>
      <description>&lt;p&gt;O que nos precisamos fazer, como desenvolvedores, designers, project owners, etc.&lt;/p&gt;

&lt;p&gt;É satisfazer o usuário em cada passo que ele avança dentro da aplicação, sendo desde um login, até uma aprovação.&lt;/p&gt;

&lt;p&gt;É claro que existem muitas formas de fazer isso, a questão é que muitas vezes podemos dar esse gostinho de dopamina totalmente satisfatória com simples botões.&lt;/p&gt;




&lt;h2&gt;
  
  
  Upload buttons
&lt;/h2&gt;

&lt;p&gt;💡&lt;strong&gt;Tips:&lt;/strong&gt; submit, survey, file upload, to shop...&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/iremlopsum/embed/MwrpMK?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/davidmogar/embed/XXJXVE?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Floating action button (FAB)
&lt;/h2&gt;

&lt;p&gt;💡&lt;strong&gt;Tips:&lt;/strong&gt; quick actions, social media, main menu...&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/CSS3fx/embed/RNYaoE?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Pre action button
&lt;/h2&gt;

&lt;p&gt;💡&lt;strong&gt;Tips:&lt;/strong&gt; delete, confirm, submit...&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/YikesItsMikes/embed/zGOELd?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Slide dopamine
&lt;/h2&gt;

&lt;p&gt;💡&lt;strong&gt;Tips:&lt;/strong&gt; delete submit, to shop...&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/chrisdothtml/embed/xbmddV?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Share buttons
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tips:&lt;/strong&gt; quick actions, social networks, menu...&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/keithchis/embed/QjoqRO?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Comenta aí qual é sua animação favorita.&lt;/p&gt;

&lt;p&gt;Espero que tenha gostado 🤘&lt;/p&gt;

</description>
      <category>codepen</category>
      <category>css</category>
      <category>buttons</category>
      <category>design</category>
    </item>
  </channel>
</rss>
