# Parsing

A compiler-design process that checks source-code syntax, consumes tokens, and produces an abstract syntax tree.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Building a RAG Pipeline for Semantic Code Search: A Developer Diary and Field Notes

DevFeed: [Building a RAG Pipeline for Semantic Code Search: A Developer Diary and Field Notes](<https://devfeed.tech/articles/building-a-rag-pipeline-for-semantic-code-search-a-developer-diary-and-field-notes-41302.md>)

Original publisher: [Read original article](<https://blog.jetbrains.com/ai/2026/09/building-a-rag-pipeline-for-semantic-code-search-a-developer-diary-and-field-notes/>)

Author: Adam Malek

Published: 2026-09-17T12:39:40Z

Content type: article

Language: en

Sources: [The JetBrains Blog](<https://devfeed.tech/sources/the-jetbrains-blog.md>)

Topics: [Retrieval Augmented Generation (RAG)](<https://devfeed.tech/topics/retrieval-augmented-generation-rag.md>), [code search](<https://devfeed.tech/topics/code-search.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>)

Tags: [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [ai](<https://devfeed.tech/tags/ai.md>), [code-search](<https://devfeed.tech/tags/code-search.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [llm](<https://devfeed.tech/tags/llm.md>), [llm-agents](<https://devfeed.tech/tags/llm-agents.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [rag](<https://devfeed.tech/tags/rag.md>), [search](<https://devfeed.tech/tags/search.md>), [semantic](<https://devfeed.tech/tags/semantic.md>)

### AI overview

Part 1 of a developer diary explains how JetBrains built a RAG pipeline for semantic code search, covering parsing, chunking, and vectorization. The pipeline is intended to give LLM agents precise, citable evidence from real repositories and retrieve code by meaning rather than exact keywords.

### Source excerpt

Part 1: Parsing, chunking, and vectorization Some time ago, we set out to build the best semantic code search platform we could: a RAG pipeline that gives LLM agents precise, citable evidence from real repositories instead of whatever grep happens to surface. The eventual solution was JetBrains Context. We got it working, we got it [...]

## Why KV Cache Stores K and V Vectors But Never Q?

DevFeed: [Why KV Cache Stores K and V Vectors But Never Q?](<https://devfeed.tech/articles/why-kv-cache-stores-k-and-v-vectors-but-never-q-18247.md>)

Original publisher: [Read original article](<https://blog.dailydoseofds.com/p/why-kv-cache-stores-k-and-v-vectors>)

Author: Avi Chawla

Published: 2026-08-30T20:15:33Z

Content type: article

Language: en

Sources: [Daily Dose of Data Science](<https://devfeed.tech/sources/daily-dose-of-data-science.md>)

Topics: [LLMs](<https://devfeed.tech/topics/llms.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Inference](<https://devfeed.tech/topics/inference.md>)

Tags: [gpu](<https://devfeed.tech/tags/gpu.md>), [interview](<https://devfeed.tech/tags/interview.md>), [llms](<https://devfeed.tech/tags/llms.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [pdf](<https://devfeed.tech/tags/pdf.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

The document discusses Marker v2, an open-source PDF parsing pipeline that uses shared inference serving and batching to improve GPU utilization. It also begins explaining autoregressive LLMs and why their forward pass is relevant to KV-cache behavior, but the supplied text ends before the explanation is complete.

### Source excerpt

A popular technical LLM interview question.

## Why regex isn't email validation

DevFeed: [Why regex isn't email validation](<https://devfeed.tech/articles/why-regex-isn-t-email-validation-16072.md>)

Original publisher: [Read original article](<https://workos.com/blog/why-regex-isnt-email-validation>)

Author: WorkOS

Published: 2026-08-24T00:00:00Z

Content type: article

Language: en

Sources: [WorkOS Blog](<https://devfeed.tech/sources/workos-blog.md>)

Topics: [Parsing](<https://devfeed.tech/topics/parsing.md>), [Forms](<https://devfeed.tech/topics/forms.md>), [HTML5 and CSS3 tricks](<https://devfeed.tech/topics/html5-and-css3-tricks.md>), [Library](<https://devfeed.tech/topics/library.md>), [Internet](<https://devfeed.tech/topics/internet.md>)

Tags: [advice](<https://devfeed.tech/tags/advice.md>), [deliverability](<https://devfeed.tech/tags/deliverability.md>), [domain](<https://devfeed.tech/tags/domain.md>), [email](<https://devfeed.tech/tags/email.md>), [forms](<https://devfeed.tech/tags/forms.md>), [framework](<https://devfeed.tech/tags/framework.md>), [html5](<https://devfeed.tech/tags/html5.md>), [internet](<https://devfeed.tech/tags/internet.md>), [library](<https://devfeed.tech/tags/library.md>), [regex](<https://devfeed.tech/tags/regex.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

The article explains that email syntax validation with regexes, HTML5 checks, or framework libraries does not establish deliverability or confirm that a mailbox exists. It recommends a loose syntax check and stopping there, while recognizing that stronger checks address separate, less reliable questions.

### Source excerpt

Checking that an address looks right and checking that it can receive mail are different problems. Most signup forms only solve the first one.

## Parsing common IPv4 addresses in C# with AVX-512

DevFeed: [Parsing common IPv4 addresses in C# with AVX-512](<https://devfeed.tech/articles/parsing-ip-addresses-in-c-at-crazy-speeds-29423.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/08/19/parsing-ip-addresses-in-c-at-crazy-speeds/>)

Author: Daniel Lemire

Published: 2026-08-19T19:07:48Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [C#](<https://devfeed.tech/topics/csharp.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [performance-optimization](<https://devfeed.tech/topics/performance-optimization.md>), [.NET](<https://devfeed.tech/topics/net.md>)

Tags: [avx](<https://devfeed.tech/tags/avx.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [ip](<https://devfeed.tech/tags/ip.md>), [ipv4](<https://devfeed.tech/tags/ipv4.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

The article examines parsing common IPv4 address strings in C# for performance. It discusses using SIMD and AVX-512 support in .NET 10, including masked loads for safely loading strings shorter than a SIMD register width.

### Source excerpt

We are all familiar with IP addresses such as 192.168.0.1. They are typically written as four numbers in the range 0 to 255 inclusive, separated by dots. In C#, you can parse them with the standard library using IPAddress.TryParse. Pedantic people are quick to point out that IP addresses can take different forms: they can ... Continue reading Parsing IP addresses in C# at crazy speeds

## DocLang: a markup language for LLMs

DevFeed: [DocLang: a markup language for LLMs](<https://devfeed.tech/articles/doclang-a-markup-language-for-llms-17332.md>)

Original publisher: [Read original article](<https://research.ibm.com/blog/doclang-ai-native-doc-standard>)

Author: Kim Martineau

Published: 2026-08-12T12:00:00Z

Content type: article

Language: en

Sources: [IBM Research](<https://devfeed.tech/sources/ibm-research.md>)

Topics: [XML](<https://devfeed.tech/topics/xml.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [Generative AI](<https://devfeed.tech/topics/generative-ai.md>), [HTML](<https://devfeed.tech/topics/html.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [generative-ai](<https://devfeed.tech/tags/generative-ai.md>), [llms](<https://devfeed.tech/tags/llms.md>), [news](<https://devfeed.tech/tags/news.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

IBM researchers introduce DocLang, a constrained XML sub-language designed to help large language models interpret document structure. The article explains how it represents semantics, layout, bounding boxes, and reading order, and how it may reduce token use, latency, and inference costs in AI pipelines.

### Source excerpt

The lead researcher behind IBM's popular document parser, Docling, explains why generative AI needs its own document standard.

## The simplest interpreter: Write yourself a compiler, Part I

DevFeed: [The simplest interpreter: Write yourself a compiler, Part I](<https://devfeed.tech/articles/the-simplest-interpreter-write-yourself-a-compiler-part-i-38038.md>)

Original publisher: [Read original article](<https://nurkiewicz.com/2026/07/simplest-interpreter-write-yourself-a-compiler-part-i.html>)

Published: 2026-07-16T22:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Nurkiewicz around Java and concurrency](<https://devfeed.tech/sources/tomasz-nurkiewicz-around-java-and-concurrency.md>)

Topics: [Compiler](<https://devfeed.tech/topics/compiler.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [go](<https://devfeed.tech/tags/go.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interpreter](<https://devfeed.tech/tags/interpreter.md>), [lexer](<https://devfeed.tech/tags/lexer.md>), [writing-compiler](<https://devfeed.tech/tags/writing-compiler.md>)

### AI overview

This tutorial begins a series on building a compiler by implementing a simple interpreter in Go. The interpreter lexes and evaluates an input expression containing the addition of two numbers, using a regular expression to validate the structure and extract tokens.

### Source excerpt

I've always felt that writing a compiler is the most romantic software engineering task. You're writing a program that reads textual instructions describing precisely what a computer should do. Do not confuse this with prompting an LLM, where you write vague, verbose instructions that only loosely describe what a computer might do. But I digress.

## Why JSON and other languages should allow more flexible separators

DevFeed: [Why JSON and other languages should allow more flexible separators](<https://devfeed.tech/articles/nontrailing-separators-do-not-spark-joy-25499.md>)

Original publisher: [Read original article](<https://buttondown.com/hillelwayne/archive/nontrailing-separators-do-not-spark-joy/>)

Author: Hillel Wayne

Published: 2026-06-10T12:22:04Z

Content type: opinion

Language: en

Sources: [Newsletter feed for Hillel Wayne's Newsletter](<https://devfeed.tech/sources/newsletter-feed-for-hillel-wayne-s-newsletter.md>)

Topics: [JSON](<https://devfeed.tech/topics/json.md>), [Haskell](<https://devfeed.tech/topics/haskell.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>)

Tags: [json](<https://devfeed.tech/tags/json.md>), [language](<https://devfeed.tech/tags/language.md>), [standard](<https://devfeed.tech/tags/standard.md>), [transformation](<https://devfeed.tech/tags/transformation.md>)

### AI overview

The article argues that requiring separators in particular positions makes common code transformations harder. Using JSON as the main example, it compares trailing, leading, and both-sided separator styles across languages including Haskell, TLA+, Prolog, Python, Go, and Alloy.

### Source excerpt

This is valid JSON: { "a": 1, "b": 2, "c": 3 } This is invalid JSON: { "a": 1, "b": 2, "c": 3, } The difference is the last comma. The JSON grammar specifies that a comma can separate two members of an object but not postcede ("trail") a member. I think this was a design mistake. Say we want to add two new keys to the struct, one before the "a" member and one after the "c" member. Here's what it would look like if trailing commas were permitted: { + "x": 0, "a": 1, "b": 2, "c": 3, + "y": 4, } It's the exact same text transformation regardless of where we add the key. In the current model, we instead have this: { + "x": 0, "a": 1, "b": 2, - "c": 3 + "c": 3, + "y": 4 } Those are different transformations! Similarly if you want to remove an element, you can't just delete the corresponding line1, you have to delete the line and then check that the last line doesn't have a trailing comma. Don't even get me started on all the special cases involved in swapping two lines. JSON isn't the only language with this problem. Haskell writes record types like this: -- from https://play.haskell.org/ data Drone = Drone { xPos :: Int , yPos :: Int , zPos :: Int } This "partial bullet point" style of putting separators at the beginning of rows makes it easier to change the last row but harder to change the first one. TLA+ has this problem too: \* both valid VARIABLES a, b, c vars == <<a, b, c>> \* both invalid VARIABLES a, b, c, vars == <<a, b, c,>> This one's annoying because 1) you're constantly adding new top-level variables while working on a spec and 2) the PlusCal DSL does not have this problem: \* Totally fine! (*--algorithm foo { variables a; b; c; The worst offenders, IMO, are logic languages like Prolog. Not only don't you have trailing separators, you have a special terminating symbol: foo(A, B, C) :- A = 1, % comma B = 2, % comma C = 3. % period! I guess you can sort of think of it as funny-lookin' braces: foo(A, B, C) :- A = 1, B = 2, C = 3 . But this is not standard synt

## Parsing IPv6 Addresses with AVX-512

DevFeed: [Parsing IPv6 Addresses with AVX-512](<https://devfeed.tech/articles/parsing-ipv6-addresses-crazily-fast-with-avx-512-29408.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/05/23/parsing-ipv6-addresses-crazily-fast-with-avx-512/>)

Author: Daniel Lemire

Published: 2026-05-23T02:45:11Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Parsing](<https://devfeed.tech/topics/parsing.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [Internet](<https://devfeed.tech/topics/internet.md>)

Tags: [amd](<https://devfeed.tech/tags/amd.md>), [avx](<https://devfeed.tech/tags/avx.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [intel](<https://devfeed.tech/tags/intel.md>), [internet](<https://devfeed.tech/tags/internet.md>), [ipv6](<https://devfeed.tech/tags/ipv6.md>), [parsing](<https://devfeed.tech/tags/parsing.md>)

### AI overview

This article explains how an AVX-512 implementation parses IPv6 addresses using SIMD operations. The approach loads the input into a 512-bit register, identifies colons, expands bytes, translates hexadecimal digits, and combines them into bytes with few branches. It also describes a benchmark using randomly generated canonical compressed IPv6 addresses, but the supplied text does not include benchmark results.

### Source excerpt

Every machine connected to the Internet has an address called an IP address. Originally, these addresses were 32-bit integers (IPv4), giving a theoretical maximum of about four billion distinct addresses. We are all familiar with these addresses (e.g., 192.168.0.0). There was a big fuss about how we would run out of addresses. It never happened ... Continue reading Parsing IPv6 Addresses Crazily Fast with AVX-512

## Matching JSON and whitespace characters efficiently on ARM processors

DevFeed: [Matching JSON and whitespace characters efficiently on ARM processors](<https://devfeed.tech/articles/the-fastest-way-to-match-characters-on-arm-processors-29401.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/04/19/the-fastest-way-to-match-characters-on-arm-processors/>)

Author: Daniel Lemire

Published: 2026-04-19T20:41:04Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Arm](<https://devfeed.tech/topics/arm.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>)

Tags: [amd](<https://devfeed.tech/tags/amd.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [arm](<https://devfeed.tech/tags/arm.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [avx](<https://devfeed.tech/tags/avx.md>), [intel](<https://devfeed.tech/tags/intel.md>), [json](<https://devfeed.tech/tags/json.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [processors](<https://devfeed.tech/tags/processors.md>)

### AI overview

The article examines vectorized classification for matching ASCII whitespace and structural JSON characters. It describes a branch-free NEON approach and discusses newer ARM Scalable Vector Extension instructions as an alternative on recent ARM processors.

### Source excerpt

Consider the following problem. Given a string, you must match all of the ASCII white-space characters (\t, \n, \r, and the space) and some characters important in JSON (:, ,, [, ], {, }). JSON is a text-based data format used for web services. A toy JSON document looks as follows. { "name": "Alice", "age": ... Continue reading The fastest way to match characters on ARM processors?

## The importance of benchmarks

DevFeed: [The importance of benchmarks](<https://devfeed.tech/articles/the-importance-of-benchmarks-33535.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/the-importance-of-benchmarks>)

Published: 2026-04-13T00:00:00Z

Content type: article

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [performance](<https://devfeed.tech/tags/performance.md>), [structure](<https://devfeed.tech/tags/structure.md>)

### AI overview

The Aha! Develop team investigated a sprint report that took 15 minutes to load and nearly froze the browser. The investigation traced the problem to inefficient progress parsing and data structures that duplicated days without events, producing a more than 100-fold performance increase after changes.

### Source excerpt

Late last year, the Aha! Develop team added support for team line-level reporting. During a team demo in the run-up to the release, we discovered one of our internal sprint reports was taking 15 minutes to load, almost freezing the browser in the p

## Bringing Rust to the Pixel Baseband

DevFeed: [Bringing Rust to the Pixel Baseband](<https://devfeed.tech/articles/bringing-rust-to-the-pixel-baseband-19818.md>)

Original publisher: [Read original article](<http://security.googleblog.com/2026/04/bringing-rust-to-pixel-baseband.html>)

Author: Edward Fernandez (noreply@blogger.com)

Published: 2026-04-10T15:12:00Z

Content type: article

Language: en

Sources: [Google Online Security](<https://devfeed.tech/sources/google-online-security.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Memory Safety](<https://devfeed.tech/topics/memory-safety.md>), [Security](<https://devfeed.tech/topics/security.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-security](<https://devfeed.tech/tags/android-security.md>), [dns](<https://devfeed.tech/tags/dns.md>), [google](<https://devfeed.tech/tags/google.md>), [internet](<https://devfeed.tech/tags/internet.md>), [library](<https://devfeed.tech/tags/library.md>), [memory-safety](<https://devfeed.tech/tags/memory-safety.md>), [none](<https://devfeed.tech/tags/none.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [pixel](<https://devfeed.tech/tags/pixel.md>), [remote-code-execution](<https://devfeed.tech/tags/remote-code-execution.md>), [rust](<https://devfeed.tech/tags/rust.md>), [security](<https://devfeed.tech/tags/security.md>), [test-coverage](<https://devfeed.tech/tags/test-coverage.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

Google describes integrating a memory-safe Rust DNS parser into Pixel modem firmware. The post explains the security motivation, the modem's remote attack surface, and the evaluation of open-source Rust DNS libraries, identifying hickory-proto as the best candidate based on maintenance, test coverage, and adoption.

### Source excerpt

Posted by Jiacheng Lu, Software Engineer, Google Pixel Team Google is continuously advancing the security of Pixel devices. We have been focusing on hardening the cellular baseband modem against exploitation. Recognizing the risks associated within the complex modem firmware, Pixel 9 shipped with mitigations against a range of memory-safety vulnerabilities. For Pixel 10, Google is advancing its proactive security measures further. Following our previous discussion on "Deploying Rust in Existing Firmware Codebases", this post shares a concrete application: integrating a memory-safe Rust DNS(Domain Name System) parser into the modem firmware. The new Rust-based DNS parser significantly reduces our security risk by mitigating an entire class of vulnerabilities in a risky area, while also laying the foundation for broader adoption of memory-safe code in other areas. Here we share our experience of working on it, and hope it can inspire the use of more memory safe languages in low-level environments. Why Modem Memory Safety Can't Wait In recent years, we have seen increasing interest in the cellular modem from attackers and security researchers. For example, Google's Project Zero gained remote code execution on Pixel modems over the Internet. Pixel modem has tens of Megabytes of executable code. Given the complexity and remote attack surface of the modem, other critical memory safety vulnerabilities may remain in the predominantly memory-unsafe firmware code. Why DNS? The DNS protocol is most commonly known in the context of browsers finding websites. With the evolution of cellular technology, modern cellular communications have migrated to digital data networks; consequently, even basic operations such as call forwarding rely on DNS services. DNS is a complex protocol and requires parsing of untrusted data, which can lead to vulnerabilities, particularly when implemented in a memory-unsafe language (example: CVE-2024-27227). Implementing the DNS parser in Rust offers va

## You can use newline characters in URLs

DevFeed: [You can use newline characters in URLs](<https://devfeed.tech/articles/you-can-use-newline-characters-in-urls-29393.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/02/28/you-can-use-newline-characters-in-urls/>)

Author: Daniel Lemire

Published: 2026-02-28T19:21:39Z

Content type: tutorial

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Web](<https://devfeed.tech/topics/web.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [HTML](<https://devfeed.tech/topics/html.md>), [SVG](<https://devfeed.tech/topics/svg.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [code](<https://devfeed.tech/tags/code.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [html](<https://devfeed.tech/tags/html.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [svg](<https://devfeed.tech/tags/svg.md>), [web](<https://devfeed.tech/tags/web.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

This article explains that HTML URLs can contain newline and tab characters in practice because the URL parser reports a validation error but removes those characters and continues. It also describes how ASCII whitespace is handled in data URLs, including base64-encoded PNG and SVG images.

### Source excerpt

We locate web content using special addresses called URLs. We are all familiar with addresses like https://google.com. Sometimes, URLs can get long and they can become difficult to read. Thus, we might be tempted to format them like so in HTML using newline and tab characters, like so: <a href="https://lemire.me/blog/2026/02/21/ how-fast-do-browsers-correct-utf-16-strings/">my blog post</a> It will ... Continue reading You can use newline characters in URLs

## MOLT: A Toolkit for Migrations You Can Trust

DevFeed: [MOLT: A Toolkit for Migrations You Can Trust](<https://devfeed.tech/articles/molt-a-toolkit-for-migrations-you-can-trust-23795.md>)

Original publisher: [Read original article](<https://cockroachlabs.com/blog/molt-migrations-you-can-trust>)

Author: Becca Weng

Published: 2026-01-21T00:00:00Z

Content type: article

Language: en

Sources: [Cockroach Labs](<https://devfeed.tech/sources/cockroach-labs.md>)

Topics: [migration](<https://devfeed.tech/topics/migration.md>), [CockroachDB](<https://devfeed.tech/topics/cockroachdb.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Replication](<https://devfeed.tech/topics/replication.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>)

Tags: [cockroachdb](<https://devfeed.tech/tags/cockroachdb.md>), [database](<https://devfeed.tech/tags/database.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [insights](<https://devfeed.tech/tags/insights.md>), [migrations](<https://devfeed.tech/tags/migrations.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [oracle](<https://devfeed.tech/tags/oracle.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [sql-server](<https://devfeed.tech/tags/sql-server.md>), [tools](<https://devfeed.tech/tags/tools.md>)

### AI overview

This article presents Cockroach Labs' MOLT toolkit for migrating databases to CockroachDB. It describes schema conversion, bulk data transfer, verification, and live replication as parts of a modular migration workflow.

### Source excerpt

Migrating a database is always a high-stakes operation. Downtime, data correctness, data loss, and customer experience are all on the line. Not to mention the business risk if a migration goes poorly. While there are a number of third-party tools that support data migration to CockroachDB, we have the expertise and insights into our product. We knew we could make migrations as efficient as possible in-house.

## Crafting Code: Building a Ruby Pattern Generator for a Crochet Circle

DevFeed: [Crafting Code: Building a Ruby Pattern Generator for a Crochet Circle](<https://devfeed.tech/articles/crafting-code-building-a-ruby-pattern-generator-for-a-crochet-circle-20114.md>)

Original publisher: [Read original article](<https://hashrocket.com/blog/posts/crafting-code-building-a-ruby-pattern-generator-for-a-crochet-circle>)

Author: Mary Lee

Published: 2026-01-20T14:00:00Z

Content type: tutorial

Language: en

Sources: [Hashrocket](<https://devfeed.tech/sources/hashrocket.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Code](<https://devfeed.tech/topics/code.md>), [coding](<https://devfeed.tech/topics/coding.md>)

Tags: [building](<https://devfeed.tech/tags/building.md>), [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [project](<https://devfeed.tech/tags/project.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [side-projects](<https://devfeed.tech/tags/side-projects.md>)

### AI overview

This tutorial describes building a Ruby class that generates crochet circle patterns. It explains how crochet rounds are formatted, how stitch abbreviations and counts reveal repeated increases, and how those patterns can be parsed and modeled in code.

### Source excerpt

In my time as a developer, I have noticed that one of the most common ways my coworkers spend time coding outside of work is by developing little code snippets or apps that solve problems in their everyday lives. From household budgeting, to managing workouts on rowing machines, to generating a Taco Bell order, these projects allow devs to explore different coding styles and learn new technologies. For a long time, most of my side projects have been for the sole purpose of learning a new technology. When I wanted to start building mobile apps with React Native, I wrote a small to-do app that, once finished, I abandoned. The same thing happened when I wanted to try to use PostgreSQL's listen and notify feature to build a live updating chat app. So, when I was thinking about a new side project, I decided it was time to work on something that could be long lived and help me with one of my favorite hobbies: crocheting. The Premise Recently, I've been making a lot of small projects that have started with a base shape that then gets built upon. Often, this shape is a circle. After running through several projects, I started to notice a pattern of increases and repetitions for each row. It occurred to me that if the shape followed a specific pattern, I could probably build a ruby class to generate that pattern. Thus began this side project! Breaking Down a Simplified Pattern To begin, we have to inspect the pattern. Crochet patterns follow a specific format, and use abbreviations for the types of stitches being used. The example pattern uses the following abbreviations and rules: Abbreviation Meaning Use Stitch Count sc single crochet adds a stitch to the round 1 inc increase (two single crochets in the same stitch) adds an extra stitch to the round 2 With those abbreviations in mind, we can start parsing the pattern. R1: 6sc in magic ring (6) R2: [inc] x6 (12) R3: [sc, inc] x6 (18) R4: sc, inc, [2sc, inc] x5, sc (24) R5: [3sc, inc] x6 (30) R6: 2sc, inc, [4sc, inc] x5, 2sc

## Good technology blogs: a reading list for the holidays

DevFeed: [Good technology blogs: a reading list for the holidays](<https://devfeed.tech/articles/good-technology-blogs-a-reading-list-for-the-holidays-5591.md>)

Original publisher: [Read original article](<https://clickhouse.com/blog/tech-blogs>)

Author: Alexey Milovidov

Published: 2025-12-29T00:00:00Z

Content type: article

Language: en

Sources: [ClickHouse Blog](<https://devfeed.tech/sources/clickhouse-blog.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Computer science](<https://devfeed.tech/topics/computer-science.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Networks](<https://devfeed.tech/topics/networks.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [compilers](<https://devfeed.tech/tags/compilers.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [databases](<https://devfeed.tech/tags/databases.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [networks](<https://devfeed.tech/tags/networks.md>), [performance](<https://devfeed.tech/tags/performance.md>), [programming](<https://devfeed.tech/tags/programming.md>), [systems](<https://devfeed.tech/tags/systems.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A holiday reading list of favorite technology blogs covering performance optimization, data structures and algorithms, database development, compilers, operating systems, programming languages, computer science, mathematics, hardware, networks, web development, computer graphics, and AI. It highlights authors and libraries connected to high-performance software and ClickHouse, including simdjson, Roaring bitmap, USearch, StringZilla, Hyperscan, Miniselect, LZ4, and zstd.

### Source excerpt

A collection of my favorite technology blogs

## Using JSON: json vs. jsonb, pglz vs. lz4, key optimization, parsing speed?

DevFeed: [Using JSON: json vs. jsonb, pglz vs. lz4, key optimization, parsing speed?](<https://devfeed.tech/articles/using-json-json-vs-jsonb-pglz-vs-lz4-key-optimization-parsing-speed-33670.md>)

Original publisher: [Read original article](<https://www.depesz.com/2025/11/29/using-json-json-vs-jsonb-pglz-vs-lz4-key-optimization-parsing-speed/>)

Author: depesz

Published: 2025-11-29T19:16:00Z

Content type: article

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [JSON](<https://devfeed.tech/topics/json.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Compression](<https://devfeed.tech/topics/compression.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>)

Tags: [benchmark](<https://devfeed.tech/tags/benchmark.md>), [compression](<https://devfeed.tech/tags/compression.md>), [discord](<https://devfeed.tech/tags/discord.md>), [irc](<https://devfeed.tech/tags/irc.md>), [json](<https://devfeed.tech/tags/json.md>), [jsonb](<https://devfeed.tech/tags/jsonb.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [performance](<https://devfeed.tech/tags/performance.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [slack](<https://devfeed.tech/tags/slack.md>), [speed](<https://devfeed.tech/tags/speed.md>), [text](<https://devfeed.tech/tags/text.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

This article investigates JSON and JSONB storage in PostgreSQL, comparing pglz and LZ4 compression, storage overhead, key-name handling, and parsing speed. In the reported test, pglz compressed slightly better, while LZ4 processed 16 MB of text faster.

### Source excerpt

Recently(ish) I had a conversation on one of PostgreSQL support chats (IRC, Slack, or Discord) about efficient storage of JSON data, which compression to use, which datatype. Unrelated to this, some people (at least two over the last year or so) said that they aren't sure if PostgreSQL doesn't optimize storage between columns, for example, ... Continue reading "Using JSON: json vs. jsonb, pglz vs. lz4, key optimization, parsing speed?"

## Parsing: How Ruby Understands Your Code

DevFeed: [Parsing: How Ruby Understands Your Code](<https://devfeed.tech/articles/parsing-how-ruby-understands-your-code-31806.md>)

Original publisher: [Read original article](<https://patshaughnessy.net/2025/10/27/parsing-how-ruby-understands-your-code>)

Author: Pat Shaughnessy

Published: 2025-10-27T00:00:00Z

Content type: article

Language: en

Sources: [Pat Shaughnessy](<https://devfeed.tech/sources/pat-shaughnessy.md>)

Topics: [Parsing](<https://devfeed.tech/topics/parsing.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [syntax](<https://devfeed.tech/topics/syntax.md>), [tokenization](<https://devfeed.tech/topics/tokenization.md>), [Code](<https://devfeed.tech/topics/code.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [code](<https://devfeed.tech/tags/code.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [tokenization](<https://devfeed.tech/tags/tokenization.md>), [updating-ruby-under-a-microscope](<https://devfeed.tech/tags/updating-ruby-under-a-microscope.md>)

### AI overview

This excerpt explains how Ruby parses source code after tokenization. It describes syntax matching, recursive parsing of subexpressions, and syntax errors when no pattern matches.

### Source excerpt

I've started working on a new edition of Ruby Under a Microscope that covers Ruby 3.x. I'm working on this in my spare time, so it will take a while. Leave a comment or drop me a line and I'll email you when it's finished. Update

## Introducing Elephantshark, a tool to monitor Postgres network traffic

DevFeed: [Introducing Elephantshark, a tool to monitor Postgres network traffic](<https://devfeed.tech/articles/introducing-elephantshark-a-tool-to-monitor-postgres-network-traffic-5240.md>)

Original publisher: [Read original article](<https://neon.com/blog/elephantshark-monitor-postgres-network-traffic>)

Author: George MacKerron

Published: 2025-09-24T16:33:15Z

Content type: article

Language: en

Sources: [Blog -- Neon Docs](<https://devfeed.tech/sources/blog-neon-docs.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [Logging](<https://devfeed.tech/topics/logging.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [drivers](<https://devfeed.tech/tags/drivers.md>), [github](<https://devfeed.tech/tags/github.md>), [logging](<https://devfeed.tech/tags/logging.md>), [logs](<https://devfeed.tech/tags/logs.md>), [monitor](<https://devfeed.tech/tags/monitor.md>), [network](<https://devfeed.tech/tags/network.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ssl](<https://devfeed.tech/tags/ssl.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [tls](<https://devfeed.tech/tags/tls.md>), [tool](<https://devfeed.tech/tags/tool.md>)

### AI overview

Elephantshark is an open-source Ruby script from Neon for monitoring, understanding, and troubleshooting Postgres network traffic. It sits between communicating parties, forwards Postgres-protocol messages, parses and logs them, and can decrypt and re-encrypt SSL/TLS connections so traffic can be inspected or captured for Wireshark.

### Source excerpt

Elephantshark helps you monitor, understand and troubleshoot Postgres network traffic: that's Postgres servers, clients, drivers and ORMs talking to Postgres servers, proxies and poolers. Elephantshark sits between the two parties in a Postgres-protocol exchange, forwarding messa...

## Inside Go -- Part 1: The Compilation Pipeline

DevFeed: [Inside Go -- Part 1: The Compilation Pipeline](<https://devfeed.tech/articles/inside-go-part-1-the-compilation-pipeline-39763.md>)

Original publisher: [Read original article](<https://furkankolcu.com/post/inside-go-part-1-the-compilation-pipeline>)

Author: Furkan Kolcu

Published: 2025-09-11T10:34:38Z

Content type: tutorial

Language: en

Sources: [Furkan Kolcu - Software Engineer Blog](<https://devfeed.tech/sources/furkan-kolcu-software-engineer-blog.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [ast](<https://devfeed.tech/tags/ast.md>), [code-generation](<https://devfeed.tech/tags/code-generation.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [go](<https://devfeed.tech/tags/go.md>), [go-ast](<https://devfeed.tech/tags/go-ast.md>), [go-compilation](<https://devfeed.tech/tags/go-compilation.md>), [go-compiler](<https://devfeed.tech/tags/go-compiler.md>), [go-internals](<https://devfeed.tech/tags/go-internals.md>), [go-lexer](<https://devfeed.tech/tags/go-lexer.md>), [go-parser](<https://devfeed.tech/tags/go-parser.md>), [go-ssa](<https://devfeed.tech/tags/go-ssa.md>), [golang](<https://devfeed.tech/tags/golang.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [ssa](<https://devfeed.tech/tags/ssa.md>), [technology](<https://devfeed.tech/tags/technology.md>)

### AI overview

This tutorial explains how Go source code is transformed into a native executable. It covers lexing and parsing, abstract syntax trees, type checking, SSA, optimization, code generation, and linking, with simple examples and analogies.

### Source excerpt

In this first part of the "Inside Go" series, I'll walk through how Go source code transforms into a binary. From lexing and parsing to ASTs, SSA, and optimizations, we'll explore the steps of the Go compilation pipeline with simple code examples and analogies to make sense of it all.

## Inside ClickHouse full-text search: fast, native, and columnar

DevFeed: [Inside ClickHouse full-text search: fast, native, and columnar](<https://devfeed.tech/articles/inside-clickhouse-full-text-search-fast-native-and-columnar-5095.md>)

Original publisher: [Read original article](<https://clickhouse.com/blog/clickhouse-full-text-search>)

Author: Jimmy Aguilar, Elmi Ahmadov, and Robert Schulze

Published: 2025-08-18T00:00:00Z

Content type: article

Language: en

Sources: [ClickHouse Blog](<https://devfeed.tech/sources/clickhouse-blog.md>)

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [tokenizers](<https://devfeed.tech/topics/tokenizers.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [analytics](<https://devfeed.tech/tags/analytics.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [data](<https://devfeed.tech/tags/data.md>), [database](<https://devfeed.tech/tags/database.md>), [deep-dive](<https://devfeed.tech/tags/deep-dive.md>), [examples](<https://devfeed.tech/tags/examples.md>), [full-text-search](<https://devfeed.tech/tags/full-text-search.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [performance](<https://devfeed.tech/tags/performance.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [search](<https://devfeed.tech/tags/search.md>), [token](<https://devfeed.tech/tags/token.md>), [tokenizers](<https://devfeed.tech/tags/tokenizers.md>), [tokens](<https://devfeed.tech/tags/tokens.md>)

### AI overview

This deep dive explains ClickHouse's rebuilt full-text search implementation, including its column-oriented storage model, tokenization, inverted indexes, finite state transducers, posting lists, and redesigned query pipeline. It describes how the approach reduces I/O and improves search speed and space efficiency, while noting that the implementation described has been deprecated in favor of a newer implementation that was stated to be generally available and production ready as of March 2026.

### Source excerpt

A deep dive into ClickHouse's built-in full-text search -- how it works, what's new, and how to use it for fast, precise text queries.

## What Is Linting?

DevFeed: [What Is Linting?](<https://devfeed.tech/articles/what-is-linting-4505.md>)

Original publisher: [Read original article](<https://feeds.feedblitz.com/~/921146306/0/baeldung/cs>)

Author: John Caleb

Published: 2025-07-04T04:23:28Z

Content type: tutorial

Language: en

Sources: [Baeldung - CS](<https://devfeed.tech/sources/baeldung-cs.md>)

Topics: [developer tooling](<https://devfeed.tech/topics/developer-tooling.md>), [Code quality](<https://devfeed.tech/topics/code-quality.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [code-analysis](<https://devfeed.tech/tags/code-analysis.md>), [code-quality](<https://devfeed.tech/tags/code-quality.md>), [compilers-and-linkers](<https://devfeed.tech/tags/compilers-and-linkers.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [lint](<https://devfeed.tech/tags/lint.md>), [linter](<https://devfeed.tech/tags/linter.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-compilers-and-linkers](<https://devfeed.tech/tags/programming-compilers-and-linkers.md>), [quality-control](<https://devfeed.tech/tags/quality-control.md>), [readability](<https://devfeed.tech/tags/readability.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This tutorial explains what linting is, why linters are useful in software development, and how they detect syntax, semantic, formatting, and coding-style problems. It describes parsing source code into an abstract syntax tree and applying rules to identify issues such as undefined variables and incorrect code usage.

### Source excerpt

Explore linters, tools for automated code analysis that can capture syntactic, semantic, and stylistic errors in code. The post What Is Linting? first appeared on Baeldung on Computer Science. Related Stories How to Start Building an Operating System Raft Consensus Algorithm What Is a Monad?

## Building a Python Package to Turn Unstructured Data into Financial Insights

DevFeed: [Building a Python Package to Turn Unstructured Data into Financial Insights](<https://devfeed.tech/articles/building-a-python-package-to-turn-unstructured-data-into-financial-insights-39400.md>)

Original publisher: [Read original article](<https://blog.pranshu-raj.in/posts/building-concall-parser/>)

Author: Pranshu Raj

Published: 2025-06-23T08:50:45Z

Content type: tutorial

Language: en

Sources: [Pranshu Raj - blog on backend systems, performance and sidequests](<https://devfeed.tech/sources/pranshu-raj-blog-on-backend-systems-performance-and-sidequests.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [pdf](<https://devfeed.tech/topics/pdf.md>), [data](<https://devfeed.tech/topics/data.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [pdf](<https://devfeed.tech/tags/pdf.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [python](<https://devfeed.tech/tags/python.md>), [structured](<https://devfeed.tech/tags/structured.md>)

### AI overview

This article explains how the authors built a Python package to extract structured information from messy earnings-call PDF transcripts. It covers PDF text extraction, cleaning and segmentation, speaker identification, categorization into sections such as management remarks and Q&A, and structured output.

### Source excerpt

How we built concall-parser to extract structured insights from messy earnings call transcripts, dealing with PDFs, text processing, and speaker identification challenges.

## CodeAgents + Structure: A Better Way to Execute Actions

DevFeed: [CodeAgents + Structure: A Better Way to Execute Actions](<https://devfeed.tech/articles/codeagents-structure-a-better-way-to-execute-actions-7494.md>)

Original publisher: [Read original article](<https://huggingface.co/blog/structured-codeagent>)

Author: Aksel Joonas Reedi; Aymeric Roucher

Published: 2025-05-28T00:00:00Z

Content type: article

Language: en

Sources: [Hugging Face - Blog](<https://devfeed.tech/sources/hugging-face-blog.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [AI Development](<https://devfeed.tech/topics/ai-development.md>), [Code](<https://devfeed.tech/topics/code.md>), [Python](<https://devfeed.tech/topics/python.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [gaia](<https://devfeed.tech/topics/gaia.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [community](<https://devfeed.tech/tags/community.md>), [gaia](<https://devfeed.tech/tags/gaia.md>), [llm](<https://devfeed.tech/tags/llm.md>), [nlp](<https://devfeed.tech/tags/nlp.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [python](<https://devfeed.tech/tags/python.md>), [smolagents](<https://devfeed.tech/tags/smolagents.md>), [structured-generation](<https://devfeed.tech/tags/structured-generation.md>), [tools](<https://devfeed.tech/tags/tools.md>)

### AI overview

The article compares traditional JSON-based tool-calling agents with CodeAgents that generate executable Python. It explains that code-based actions provide more flexible tool composition, state management, loops, functions, conditionals, and hypothesis testing, while motivating structured generation to avoid errors when parsing code from Markdown.

### Source excerpt

We're on a journey to advance and democratize artificial intelligence through open source and open science.

## Screen Scraping in 2025

DevFeed: [Screen Scraping in 2025](<https://devfeed.tech/articles/screen-scraping-in-2025-11190.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2025/05/screen-scraping-2025/>)

Published: 2025-05-07T09:32:00Z

Content type: opinion

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [Structured-data](<https://devfeed.tech/topics/structured-data.md>), [JSON](<https://devfeed.tech/topics/json.md>), [XML](<https://devfeed.tech/topics/xml.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [code](<https://devfeed.tech/tags/code.md>), [data](<https://devfeed.tech/tags/data.md>), [json](<https://devfeed.tech/tags/json.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [python](<https://devfeed.tech/tags/python.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

The article examines why screen scraping remains necessary for network devices that lack reliable JSON or XML output. It compares screen-scraped text with structured data, noting that JSON and XML can be larger and that manually generated or legacy structured output may be invalid or unavailable. It also argues that XML is generally harder to process than JSON, especially for large objects and data involving namespaces.

### Source excerpt

Dr. Tony Przygienda left a very valid (off-topic) comment to my Breaking APIs or Data Models Is a Cardinal Sin blog post: If, on the other hand, the customers would not camp for literally tens of years on regex scripts scraping screens, lots of stuff could progress much faster. He's right, particularly from Juniper's perspective; they were the first vendor to use a data-driven approach to show commands. Unfortunately, we're still not living in a perfect world: Read more ...

[Next page](<https://devfeed.tech/topics/parsing.md?cursor=WyIyMDI1LTA1LTA3VDA5OjMyOjAwKzAwOjAwIiwgIjI3OGZkNWUxLTQ0NzUtNGVhNC05M2RlLTZjMDczODVlNzQzMCJd>)