# ASCII

Published articles for ASCII.

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

## Flirty OnlyFans promoters on X may be using AI to appear human

DevFeed: [Flirty OnlyFans promoters on X may be using AI to appear human](<https://devfeed.tech/articles/flirty-onlyfans-promoters-on-x-may-be-using-ai-to-appear-human-8430.md>)

Original publisher: [Read original article](<https://www.malwarebytes.com/blog/ai/2026/09/flirty-onlyfans-promoters-on-x-may-be-using-ai-to-appear-human>)

Author: Pieter Arntz

Published: 2026-09-07T11:18:00Z

Content type: article

Language: en

Sources: [Malwarebytes](<https://devfeed.tech/sources/malwarebytes.md>)

Topics: [AI Chat](<https://devfeed.tech/topics/ai-chat.md>), [Script](<https://devfeed.tech/topics/script.md>), [Chat Bot](<https://devfeed.tech/topics/chatbot.md>), [Bot](<https://devfeed.tech/topics/bot.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [bots](<https://devfeed.tech/tags/bots.md>), [fraud](<https://devfeed.tech/tags/fraud.md>), [generative-ai](<https://devfeed.tech/tags/generative-ai.md>), [messaging](<https://devfeed.tech/tags/messaging.md>), [onlyfans](<https://devfeed.tech/tags/onlyfans.md>), [scam](<https://devfeed.tech/tags/scam.md>), [scams](<https://devfeed.tech/tags/scams.md>), [scripted](<https://devfeed.tech/tags/scripted.md>), [threat-intel](<https://devfeed.tech/tags/threat-intel.md>), [voice](<https://devfeed.tech/tags/voice.md>)

### AI overview

An investigation examines X accounts promoting OnlyFans pages that combine repetitive flirtatious scripts with dynamic replies, raising the possibility of generative AI-assisted messaging. It warns that personalized responses and voice notes may no longer reliably distinguish people from automated accounts.

### Source excerpt

Personalized replies and voice notes make it increasingly difficult to tell whether you're talking to a human, chatbot, or AI agent.

## One Tool, three surfaces: from an OpenAPI file to an MCP server, without writing it twice

DevFeed: [One Tool, three surfaces: from an OpenAPI file to an MCP server, without writing it twice](<https://devfeed.tech/articles/one-tool-three-surfaces-from-an-openapi-file-to-an-mcp-server-without-writing-it-twice-12656.md>)

Original publisher: [Read original article](<https://tyk.io/blog/one-tool-three-surfaces-from-an-openapi-file-to-an-mcp-server-without-writing-it-twice/>)

Author: Hal Tyk's tutorial bot

Published: 2026-09-07T09:27:00Z

Content type: tutorial

Language: en

Sources: [Tyk API Management](<https://devfeed.tech/sources/tyk-api-management.md>)

Topics: [OpenAPI Specification](<https://devfeed.tech/topics/openapi.md>), [Model Context Protocol (MCP)](<https://devfeed.tech/topics/model-context-protocol-mcp.md>), [MCP Server](<https://devfeed.tech/topics/mcp-server.md>), [API](<https://devfeed.tech/topics/api.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [cURL](<https://devfeed.tech/topics/curl.md>)

Tags: [ai-gateway](<https://devfeed.tech/tags/ai-gateway.md>), [ai-governance](<https://devfeed.tech/tags/ai-governance.md>), [ai-readiness](<https://devfeed.tech/tags/ai-readiness.md>), [ai-studio](<https://devfeed.tech/tags/ai-studio.md>), [api](<https://devfeed.tech/tags/api.md>), [api-management](<https://devfeed.tech/tags/api-management.md>), [api-platform-teams](<https://devfeed.tech/tags/api-platform-teams.md>), [article](<https://devfeed.tech/tags/article.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [curl](<https://devfeed.tech/tags/curl.md>), [developer](<https://devfeed.tech/tags/developer.md>), [http](<https://devfeed.tech/tags/http.md>), [llm-governance](<https://devfeed.tech/tags/llm-governance.md>), [llm-observability](<https://devfeed.tech/tags/llm-observability.md>), [mcp-server](<https://devfeed.tech/tags/mcp-server.md>), [model-context-protocol](<https://devfeed.tech/tags/model-context-protocol.md>), [openapi](<https://devfeed.tech/tags/openapi.md>)

### AI overview

This tutorial shows how to define an HTTP API once in an OpenAPI document and expose it through three surfaces: model-initiated tool calls, a REST endpoint accessed with curl, and an MCP server. It uses the public Frankfurter foreign exchange API and explains import requirements such as OpenAPI 3.x, a complete servers URL, operationId values for every operation, and plain ASCII.

### Source excerpt

Hello. I'm Hal, Tyk's tutorial bot, and today I have been given a genuinely satisfying assignment. We are going to describe an ordinary HTTP API once, in an OpenAPI document, and then use it three entirely different ways without touching that description again. A model will call it on its own initiative inside a chat. [...] The post One Tool, three surfaces: from an OpenAPI file to an MCP server, without writing it twice appeared first on Tyk API Management.

## Beyond the Luminance Ramp: A Shape-Aware ASCII Renderer in Three.js

DevFeed: [Beyond the Luminance Ramp: A Shape-Aware ASCII Renderer in Three.js](<https://devfeed.tech/articles/beyond-the-luminance-ramp-a-shape-aware-ascii-renderer-in-three-js-4337.md>)

Original publisher: [Read original article](<https://tympanus.net/codrops/2026/09/04/beyond-the-luminance-ramp-a-shape-aware-ascii-renderer-in-three-js/>)

Author: Edoardo Lunardi

Published: 2026-09-04T15:01:38Z

Content type: tutorial

Language: en

Sources: [Codrops](<https://devfeed.tech/sources/codrops.md>)

Topics: [shape-aware rendering](<https://devfeed.tech/topics/shape-aware-rendering.md>), [ASCII art shader](<https://devfeed.tech/topics/ascii-art-shader.md>), [Three.js shaders](<https://devfeed.tech/topics/three-js-shaders.md>), [Three.js custom shaders](<https://devfeed.tech/topics/three-js-custom-shaders.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [ascii-art-shader](<https://devfeed.tech/tags/ascii-art-shader.md>), [ascii-dithering](<https://devfeed.tech/tags/ascii-dithering.md>), [ascii-shader](<https://devfeed.tech/tags/ascii-shader.md>), [atlas](<https://devfeed.tech/tags/atlas.md>), [browser-based-ascii-renderer](<https://devfeed.tech/tags/browser-based-ascii-renderer.md>), [creative-coding-three-js](<https://devfeed.tech/tags/creative-coding-three-js.md>), [custom-element-webgl](<https://devfeed.tech/tags/custom-element-webgl.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [draggable-3d-logo](<https://devfeed.tech/tags/draggable-3d-logo.md>), [glsl-ascii-shader](<https://devfeed.tech/tags/glsl-ascii-shader.md>), [glyph-atlas-rendering](<https://devfeed.tech/tags/glyph-atlas-rendering.md>), [glyph-matching-algorithm](<https://devfeed.tech/tags/glyph-matching-algorithm.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [gpu-ascii-rendering](<https://devfeed.tech/tags/gpu-ascii-rendering.md>), [gpu-glyph-search](<https://devfeed.tech/tags/gpu-glyph-search.md>), [interactive-ascii-art](<https://devfeed.tech/tags/interactive-ascii-art.md>), [luminance-ramp-alternative](<https://devfeed.tech/tags/luminance-ramp-alternative.md>), [procedural-ascii-art](<https://devfeed.tech/tags/procedural-ascii-art.md>), [real-time-ascii-rendering](<https://devfeed.tech/tags/real-time-ascii-rendering.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [shape-aware-ascii-renderer](<https://devfeed.tech/tags/shape-aware-ascii-renderer.md>), [shape-aware-rendering](<https://devfeed.tech/tags/shape-aware-rendering.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [three-js-ascii-renderer](<https://devfeed.tech/tags/three-js-ascii-renderer.md>), [three-js-custom-shaders](<https://devfeed.tech/tags/three-js-custom-shaders.md>), [three-js-shader-tutorial](<https://devfeed.tech/tags/three-js-shader-tutorial.md>), [three-js-webgl](<https://devfeed.tech/tags/three-js-webgl.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [webgl](<https://devfeed.tech/tags/webgl.md>), [webgl-ascii-art](<https://devfeed.tech/tags/webgl-ascii-art.md>), [webgl-post-processing](<https://devfeed.tech/tags/webgl-post-processing.md>), [webgl-shader-tutorial](<https://devfeed.tech/tags/webgl-shader-tutorial.md>)

### AI overview

A Three.js ASCII renderer improves on luminance-only glyph selection by sampling each character cell's shape and matching it against printable glyphs on the GPU.

### Source excerpt

The Codrops mark, rebuilt as a draggable solid and printed in ASCII on the GPU, where every character cell searches 95 glyphs for its own.

## ASCII smuggling crosses over from AI prompt injection to phishing evasion

DevFeed: [ASCII smuggling crosses over from AI prompt injection to phishing evasion](<https://devfeed.tech/articles/ascii-smuggling-crosses-over-from-ai-prompt-injection-to-phishing-evasion-7640.md>)

Original publisher: [Read original article](<https://www.microsoft.com/en-us/security/blog/2026/09/03/ascii-smuggling-crosses-over-from-ai-prompt-injection-to-phishing-evasion/>)

Author: Microsoft Security Research, Noam Kochavi and Sarah Wolstencroft

Published: 2026-09-03T16:00:00Z

Content type: article

Language: en

Sources: [Microsoft Security Blog](<https://devfeed.tech/sources/microsoft-security-blog.md>)

Topics: [ASCII](<https://devfeed.tech/topics/ascii.md>), [Machine Learning, Security Attacks](<https://devfeed.tech/topics/machine-learning-security-attacks.md>), [Language models](<https://devfeed.tech/topics/language-models.md>), [telemetry](<https://devfeed.tech/topics/telemetry.md>), [Microsoft](<https://devfeed.tech/topics/microsoft.md>)

Tags: [ai-models](<https://devfeed.tech/tags/ai-models.md>), [ai-security](<https://devfeed.tech/tags/ai-security.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [phishing](<https://devfeed.tech/tags/phishing.md>), [security](<https://devfeed.tech/tags/security.md>), [social-engineering](<https://devfeed.tech/tags/social-engineering.md>), [telemetry](<https://devfeed.tech/tags/telemetry.md>)

### AI overview

Microsoft describes a phishing campaign that uses invisible Unicode tag characters to split lure words and evade email parsing. The technique, known as ASCII smuggling, was previously prominent in AI prompt-injection research because models can process hidden text that people cannot see.

### Source excerpt

Invisible Unicode characters popularized for hiding instructions from AI models are now being used to obfuscate words before email filters parse them. The post ASCII smuggling crosses over from AI prompt injection to phishing evasion appeared first on Microsoft Security Blog.

## Chat SDK now supports XChat

DevFeed: [Chat SDK now supports XChat](<https://devfeed.tech/articles/chat-sdk-now-supports-xchat-858.md>)

Original publisher: [Read original article](<https://vercel.com/changelog/chat-sdk-now-supports-xchat>)

Author: Ben Sabic

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

Content type: release

Language: en

Sources: [Vercel News](<https://devfeed.tech/sources/vercel-news.md>)

Topics: [SDKs](<https://devfeed.tech/topics/sdks.md>), [Bot](<https://devfeed.tech/topics/bot.md>), [Encryption](<https://devfeed.tech/topics/encryption.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [bots](<https://devfeed.tech/tags/bots.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

Chat SDK now supports XChat through a new adapter that enables bots to conduct end-to-end encrypted one-to-one and group conversations. The adapter manages encryption, keys, and signature verification, while providing fallbacks for XChat's lack of Markdown rendering and supporting streaming through message edits.

### Source excerpt

You can now build bots that hold end-to-end encrypted 1:1 and group conversations on XChat with the new XChat adapter for Chat SDK. The adapter handles all encryption, key management, and signature verification automatically. Bots can also message users first, as long as the user has encrypted chat set up and follows the bot. XChat has no markdown rendering, so the adapter falls back automatically: URLs and @mentions render as tappable links, tables as ASCII code blocks, and cards as text with a link preview. Streaming works through message edits. Read the XChat adapter documentation to get started. Read more

## RFC 9850: The SSLKEYLOGFILE Format for TLS

DevFeed: [RFC 9850: The SSLKEYLOGFILE Format for TLS](<https://devfeed.tech/articles/rfc-9850-the-sslkeylogfile-format-for-tls-41808.md>)

Original publisher: [Read original article](<https://www.bortzmeyer.org/9850.html>)

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

Content type: article

Language: fr

Sources: [Blog de Stéphane Bortzmeyer](<https://devfeed.tech/sources/blog-de-stephane-bortzmeyer.md>)

Topics: [TLS (Transport Layer Security)](<https://devfeed.tech/topics/tls.md>), [Internet Engineering Task Force (IETF)](<https://devfeed.tech/topics/ietf.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [SSL](<https://devfeed.tech/topics/ssl.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [communication](<https://devfeed.tech/tags/communication.md>), [format](<https://devfeed.tech/tags/format.md>), [rfc](<https://devfeed.tech/tags/rfc.md>), [ssl](<https://devfeed.tech/tags/ssl.md>), [tls](<https://devfeed.tech/tags/tls.md>), [wireshark](<https://devfeed.tech/tags/wireshark.md>)

### AI overview

This French article explains RFC 9850, which specifies the SSLKEYLOGFILE format for exporting TLS session secrets so packet analyzers such as Wireshark can decrypt and inspect network communication. It notes that the legacy name refers to SSL even though the format is used with TLS, and describes the file's text-based structure.

### Source excerpt

Déboguer une application réseau qui utilise le chiffrement est difficile. Le but du chiffrement est justement d'empêcher un tiers (par exemple l'analyseur de paquets) de regarder ce qui se passe. Une approche possible est de demander gentiment à l'application d'exporter ses clés de chiffrement dans un fichier que l'analyseur pourra importer pour ensuite déchiffrer la communication. Ce RFC décrit le format le plus répandu pour exporter ses clés, connu sous le nom de SSLKEYLOGFILE et très commun aujourd'hui.

## Vercel Open Source Program: Spring 2026 cohort

DevFeed: [Vercel Open Source Program: Spring 2026 cohort](<https://devfeed.tech/articles/vercel-open-source-program-spring-2026-cohort-785.md>)

Original publisher: [Read original article](<https://vercel.com/blog/vercel-open-source-program-spring-2026-cohort>)

Author: Amy Egan

Published: 2026-06-29T13:00:00Z

Content type: news

Language: en

Sources: [Vercel News](<https://devfeed.tech/sources/vercel-news.md>)

Topics: [Open Source](<https://devfeed.tech/topics/open-source.md>), [Vercel](<https://devfeed.tech/topics/vercel.md>), [Maintainers](<https://devfeed.tech/topics/maintainers.md>), [Next.js](<https://devfeed.tech/topics/next-js.md>), [React](<https://devfeed.tech/topics/react.md>), [Model Context Protocol (MCP)](<https://devfeed.tech/topics/model-context-protocol-mcp.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [MCP](<https://devfeed.tech/topics/mcp.md>), [Filesystems](<https://devfeed.tech/topics/filesystems.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Framer Motion](<https://devfeed.tech/topics/framer-motion.md>), [SVG](<https://devfeed.tech/topics/svg.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [browser](<https://devfeed.tech/tags/browser.md>), [maintainers](<https://devfeed.tech/tags/maintainers.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [model-context-protocol](<https://devfeed.tech/tags/model-context-protocol.md>), [next-js](<https://devfeed.tech/tags/next-js.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [react](<https://devfeed.tech/tags/react.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [vercel](<https://devfeed.tech/tags/vercel.md>)

### AI overview

Vercel announces the Spring 2026 cohort of its Open Source Program, providing selected maintainers with platform credits, third-party service credits, and guidance. The cohort includes projects for ASCII video rendering, React UI components, MCP server development, animated icons, design systems, and abstract syntax tree exploration.

### Source excerpt

The world runs on open source software. The frameworks, libraries, and tools we rely on are made possible by communities that share ideas and build in the open. At Vercel, we want to help those communities thrive. That's why we run the Vercel Open Source Program: a developer initiative that gives maintainers the resources and support they need to keep shipping and growing their projects. Four times a year, we welcome a new cohort of open source projects into the program. Maintainers receive $3,600 in Vercel platform credits, a starter pack with credits from third-party services, and guidance from Vercel and the community. Today, we welcome a new cohort into the program. Spring 2026 cohortASCII Studio A browser-based tool that converts video frames in real time into precise ASCII representations using an optimized rendering pipeline. Users can adjust density, contrast, and character sets to produce customized ASCII animations. Creator: Vansh Nagar View the project View GitHub repository Sync UI A free, open-source React UI library offering 125+ animated components, 13+ pre-built blocks, and 3 premium templates. Built with Material UI and Motion (motion/react), designed for design engineers building landing pages and Next.js projects. Creator: Abhi Varde View the project View GitHub repository xmcp A TypeScript framework for building and deploying MCP (Model Context Protocol) servers, featuring file-system routing, hot reloading, middleware support, and flexible deployment options including zero-config Vercel support. Creator: Valentina Bearzotti View the project View GitHub repository Componentry An open-source collection of animated, interactive React UI components styled with Tailwind CSS and Framer Motion, designed to be copied and pasted into apps rather than installed as a dependency. Creator: Harsh Jadhav View the project View GitHub repository AnimateIcons A library of 281 animated SVG icons for React, built on motion/react with hover and imperative triggers p

## 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?

## Querying DateTimes in ClickHouse

DevFeed: [Querying DateTimes in ClickHouse](<https://devfeed.tech/articles/querying-datetimes-in-clickhouse-5539.md>)

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

Author: Mark Needham

Published: 2026-03-20T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [datasets](<https://devfeed.tech/topics/datasets.md>), [data](<https://devfeed.tech/topics/data.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [data](<https://devfeed.tech/tags/data.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [speed](<https://devfeed.tech/tags/speed.md>)

### AI overview

A practical guide to querying date and datetime columns in ClickHouse using the New York City taxi dataset. It covers hourly and 15-minute bucketing, filtering by date and time of day, calculating journey durations and average speed, and visualizing relative values with an ASCII bar chart.

### Source excerpt

How to query datetime columns in ClickHouse - from hourly bucketing to rush hour analysis with real taxi data.

## 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

## Notes on clarifying man pages

DevFeed: [Notes on clarifying man pages](<https://devfeed.tech/articles/notes-on-clarifying-man-pages-21125.md>)

Original publisher: [Read original article](<https://jvns.ca/blog/2026/02/18/man-pages/>)

Author: Julia Evans

Published: 2026-02-18T00:00:00Z

Content type: opinion

Language: en

Sources: [Julia Evans](<https://devfeed.tech/sources/julia-evans.md>)

Topics: [Documentation](<https://devfeed.tech/topics/documentation.md>), [Cheat sheet](<https://devfeed.tech/topics/cheatsheet.md>), [Tool](<https://devfeed.tech/topics/tool.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [Git](<https://devfeed.tech/topics/git.md>), [ls](<https://devfeed.tech/topics/ls.md>), [Perl](<https://devfeed.tech/topics/perl.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [cheat-sheet](<https://devfeed.tech/tags/cheat-sheet.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [examples](<https://devfeed.tech/tags/examples.md>), [git](<https://devfeed.tech/tags/git.md>), [notes](<https://devfeed.tech/tags/notes.md>)

### AI overview

The article explores ways to make Unix man pages easier to navigate and more useful. It considers embedding concise cheat sheets, using terse SYNOPSIS sections with OPTIONS SUMMARY sections, grouping options by category, providing condensed ASCII layouts, and including practical examples.

### Source excerpt

Hello! After spending some time working on the Git man pages last year, I've been thinking a little more about what makes a good man page. I've spent a lot of time writing cheat sheets for tools (tcpdump, git, dig, etc) which have a man page as their primary documentation. This is because I often find the man pages hard to navigate to get the information I want. Lately I've wondering - could the man page itself have an amazing cheat sheet in it? What might make a man page easier to use? I'm still very early in thinking about this but I wanted to write down some quick notes. I asked some people on Mastodon for their favourite man pages, and here are some examples of interesting things I saw on those man pages. an OPTIONS SUMMARY If you've read a lot of man pages you've probably seen something like this in the SYNOPSIS: once you're listing almost the entire alphabet, it's hard ls [-@ABCFGHILOPRSTUWabcdefghiklmnopqrstuvwxy1%,] grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] The rsync man page has a solution I've never seen before: it keeps its SYNOPSIS very terse, like this: Local: rsync [OPTION...] SRC... [DEST] and then has an "OPTIONS SUMMARY" section with a 1-line summary of each option, like this: --verbose, -v increase verbosity --info=FLAGS fine-grained informational verbosity --debug=FLAGS fine-grained debug verbosity --stderr=e|a|c change stderr output mode (default: errors) --quiet, -q suppress non-error messages --no-motd suppress daemon-mode MOTD Then later there's the usual OPTIONS section with a full description of each option. an OPTIONS section organized by category The strace man page organizes its options by category (like "General", "Startup", "Tracing", and "Filtering", "Output Format") instead of alphabetically. As an experiment I tried to take the grep man page and make an "OPTIONS SUMMARY" section grouped by category, you can see the results here. I'm not sure what I think of the results but it was a fun exercise. When I was writing that I was thinking

## Analysis of PPPP "encryption"

DevFeed: [Analysis of PPPP "encryption"](<https://devfeed.tech/articles/analysis-of-pppp-encryption-36629.md>)

Original publisher: [Read original article](<https://palant.info/2026/01/05/analysis-of-pppp-encryption/>)

Author: Wladimir Palant

Published: 2026-01-05T15:50:53Z

Content type: article

Language: en

Sources: [Almost Secure](<https://devfeed.tech/sources/almost-secure.md>)

Topics: [Encryption](<https://devfeed.tech/topics/encryption.md>), [Cryptography](<https://devfeed.tech/topics/cryptography.md>), [Network](<https://devfeed.tech/topics/network.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>)

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [cryptanalysis](<https://devfeed.tech/tags/cryptanalysis.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [lan](<https://devfeed.tech/tags/lan.md>), [network](<https://devfeed.tech/tags/network.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [theory](<https://devfeed.tech/tags/theory.md>)

### AI overview

This analysis examines weaknesses in PPPP "encryption." It explains that app keys are reduced to a four-byte effective key and that the scheme is vulnerable to known-plaintext attacks. For LAN camera discovery when the app and traffic are unknown, the article describes sending all possible encrypted search packets, with at most 157,092 ciphertexts, and notes a pull request to update the device-detection script.

### Source excerpt

My first article on the PPPP protocol already said everything there was to say about PPPP "encryption": Keys are static and usually trivial to extract from the app. No matter how long the original key, it is mapped to an effective key that's merely four bytes long. The "encryption" is extremely susceptible to known-plaintext attacks, usually allowing reconstruction of the effective key from a single encrypted packet. So this thing is completely broken, why look any further? There is at least one situation where you don't know the app being used so you cannot extract the key and you don't have any traffic to analyze either. It's when you are trying to scan your local network for potential hidden cameras. This script will currently only work for cameras using plaintext communication. Other cameras expect a properly encrypted "LAN search" packet and will ignore everything else. How can this be solved without listing all possible keys in the script? By sending all possible ciphertexts of course! TL;DR: What would be completely ridiculous with any reasonable protocol turned out to be quite possible with PPPP. There are at most 157,092 ways in which a "LAN search" packet can be encrypted. I've opened a pull request to have the PPPP device detection script adjusted. Note: Cryptanalysis isn't my topic, I am by no means an expert here. These issues are simply too obvious. Contents Mapping keys to effective keys Redundancies within the effective key ASCII to the rescue How large is n? How many ciphertexts is that? Understanding the response Mapping keys to effective keys The key which is specified as part of the app's "init string" is not being used for encryption directly. Nor is it being fed into any of the established key stretching algorithms. Instead, a key represented by the byte sequence b1,b2,...,bnb_1, b_2, \ldots, b_n is mapped to four bytes k1,k2,k3,k4k_1, k_2, k_3, k_4 that become the effective key. These bytes are calculated as follows (⌊x⌋\lfloor x \rfloor means r

## Solving the "Impossible" in ClickHouse: Advent of Code 2025

DevFeed: [Solving the "Impossible" in ClickHouse: Advent of Code 2025](<https://devfeed.tech/articles/solving-the-impossible-in-clickhouse-advent-of-code-2025-5061.md>)

Original publisher: [Read original article](<https://clickhouse.com/blog/clickhouse-advent-of-code-2025>)

Author: Zach Naimon

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

Content type: article

Language: en

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

Topics: [Advent of Code](<https://devfeed.tech/topics/advent-of-code.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Bash](<https://devfeed.tech/topics/bash.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [database](<https://devfeed.tech/tags/database.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

The article describes solving Advent of Code 2025 puzzles with a single pure ClickHouse SQL query. It outlines constraints including raw-input parsing and no UDFs or intermediate tables.

### Source excerpt

At ClickHouse, we don't like the word "impossible." We believe that with the right tools, everything is a data problem. To prove it, we decided to complete the 2025 Advent of Code unconventionally: using pure ClickHouse SQL.

## Some Fun Software Facts

DevFeed: [Some Fun Software Facts](<https://devfeed.tech/articles/some-fun-software-facts-25505.md>)

Original publisher: [Read original article](<https://buttondown.com/hillelwayne/archive/some-fun-software-facts/>)

Author: Hillel Wayne

Published: 2025-12-10T18:45:37Z

Content type: article

Language: en

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

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Simulation](<https://devfeed.tech/topics/simulation.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [Vim](<https://devfeed.tech/topics/vim.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [simulation](<https://devfeed.tech/tags/simulation.md>), [software](<https://devfeed.tech/tags/software.md>), [vim](<https://devfeed.tech/tags/vim.md>)

### AI overview

A year-end newsletter shares miscellaneous software facts, including a Game of Life implementation of Tetris, leap-second handling, Vim's computational capabilities, ASCII history, impractical faster algorithms, Cloudflare's lava-lamp randomness, and historical sorting-algorithm details.

### Source excerpt

Last newsletter of the year! First some news on Logic for Programmers. Thanks to everyone who donated to the feedchicago charity drive! In total we raised $2250 for Chicago food banks. Proof here. If you missed buying Logic for Programmers real cheap in the charity drive, you can still get it for $10 off with the holiday code hannukah-presents. This will last from now until the end of the year. After that, I'll be raising the price from $25 to $30. Anyway, to make this more than just some record keeping, let's close out with something light. I'm one of those people who loves hearing "fun facts" about stuff. So here's some random fun facts I accumulated about software over the years: In 2017, a team of eight+ programmers successfully implemented Tetris as a game of life simulation. The GoL grid had an area of 30 trillion pixels and implemented a full programmable CPU as part of the project. Computer systems have to deal with leap seconds in order to keep UTC (where one day is 86,400 seconds) in sync with UT1 (where one day is exactly one full earth rotation). The people in charge recently passed a resolution to abolish the leap second by 2035, letting UTC and UT1 slowly drift out of sync. Vim is Turing complete. The backslash character basically didn't exist in writing before 1930, and was only added to ASCII so mathematicians (and ALGOLists) could write /\ and \/. It's popular use in computing stems entirely from being a useless key on the keyboard. Galactic Algorithms are algorithms that are theoretically faster than algorithms we use, but only at scales that make them impractical. For example, matrix multiplication of NxN is normally O(N^2.81). The Coppersmith Winograd algorithm is O(N^2.38), but is so complex that it's vastly slower for even 10,000 x 10,000 matrices. It's still interesting in advancing our mathematical understanding of algorithms! Cloudflare generates random numbers by, in part, taking pictures of 100 lava lamps. Mergesort is older than bubblesor

## How we made JSON.stringify more than twice as fast

DevFeed: [How we made JSON.stringify more than twice as fast](<https://devfeed.tech/articles/how-we-made-json-stringify-more-than-twice-as-fast-3524.md>)

Original publisher: [Read original article](<https://v8.dev/blog/json-stringify>)

Author: Patrick Thier

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

Content type: article

Language: en

Sources: [V8](<https://devfeed.tech/sources/v8.md>)

Topics: [modern web development](<https://devfeed.tech/topics/modern-web-development.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [data](<https://devfeed.tech/tags/data.md>), [internals](<https://devfeed.tech/tags/internals.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [json](<https://devfeed.tech/tags/json.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

The article explains V8 optimizations that make JSON.stringify more than twice as fast. It covers a side-effect-free iterative fast path and specialized handling for one-byte and two-byte strings.

### Source excerpt

JSON.stringify is a core JavaScript function for serializing data. Its performance directly affects common operations across the web, from serializing data for a network request to saving data to localStorage. A faster JSON.stringify translates to quicker page interactions and more responsive applications. That's why we're excited to share that a recent engineering effort has made JSON.stringify in V8 more than twice as fast. This post breaks down the technical optimizations that made this improvement possible. A Side-Effect-Free Fast Path # The foundation of this optimization is a new fast path built on a simple premise: if we can guarantee that serializing an object will not trigger any side effects, we can use a much faster, specialized implementation. A "side effect" in this context is anything that breaks the simple, streamlined traversal of an object. This includes not only the obvious cases like executing user-defined code during serialization, but also more subtle internal operations that might trigger a garbage collection cycle. For more details on what exactly can cause side effects and how you can avoid them, see Limitations. As long as V8 can determine that serialization will be free from these effects, it can stay on this highly-optimized path. This allows it to bypass many expensive checks and defensive logic required by the general-purpose serializer, resulting in a significant speedup for the most common types of JavaScript objects that represent plain data. Furthermore, the new fast path is iterative, in contrast to the recursive general-purpose serializer. This architectural choice not only eliminates the need for stack overflow checks and allows us to quickly resume after encoding changes, but also allows developers to serialize significantly deeper nested object graphs than was previously possible. Handling different String Representations # Strings in V8 can be represented with either one-byte or two-byte characters. If a string contains only AS

## What's new in Astro - July 2025

DevFeed: [What's new in Astro - July 2025](<https://devfeed.tech/articles/what-s-new-in-astro-july-2025-3368.md>)

Original publisher: [Read original article](<https://astro.build/blog/whats-new-july-2025/>)

Author: Sarah Rainsberger

Published: 2025-07-31T00:00:00Z

Content type: article

Language: en

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

Topics: [Astro](<https://devfeed.tech/topics/astro.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [Netlify](<https://devfeed.tech/topics/netlify.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [accessibility-compliance](<https://devfeed.tech/tags/accessibility-compliance.md>), [ai-tools](<https://devfeed.tech/tags/ai-tools.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [astro](<https://devfeed.tech/tags/astro.md>), [can](<https://devfeed.tech/tags/can.md>), [discord](<https://devfeed.tech/tags/discord.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [netlify](<https://devfeed.tech/tags/netlify.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [products](<https://devfeed.tech/tags/products.md>), [releases](<https://devfeed.tech/tags/releases.md>)

### AI overview

This July 2025 Astro ecosystem update highlights a new guide for building Astro with AI tools, Astro's appearance at ViteConf 2025, and recognition in the Stack Overflow Developer Survey. It summarizes Astro 5.11, Astro 5.12, and Starlight 0.35 releases, showcases Astro adopters and community activity, and features several websites built with Astro.

### Source excerpt

July 2025 - Build Astro with AI Tools, "The Future of Astro" at ViteConf 2025, and more!

## Drag and Pwnd: Leverage ASCII characters to exploit VS Code

DevFeed: [Drag and Pwnd: Leverage ASCII characters to exploit VS Code](<https://devfeed.tech/articles/drag-and-pwnd-leverage-ascii-characters-to-exploit-vs-code-7676.md>)

Original publisher: [Read original article](<https://portswigger.net/research/drag-and-pwnd-leverage-ascii-characters-to-exploit-vs-code>)

Author: Zakhar Fedotkin

Published: 2025-04-30T12:37:11Z

Content type: tutorial

Language: en

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

Topics: [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [bash](<https://devfeed.tech/tags/bash.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [vs-code](<https://devfeed.tech/tags/vs-code.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

The article explains how ASCII control characters can be abused through VS Code terminal handling to cause command injection behavior.

### Source excerpt

Control characters like SOH, STX, EOT and ETX were never meant to run your code - but in the world of modern terminal emulators, they sometimes do. In this post, I'll dive into the forgotten mechanics

## Easy way to upload, transform and deliver files and images (Sponsored)

DevFeed: [Easy way to upload, transform and deliver files and images (Sponsored)](<https://devfeed.tech/articles/easy-way-to-upload-transform-and-deliver-files-and-images-sponsored-37480.md>)

Original publisher: [Read original article](<https://davidwalsh.name/easy-way-to-upload-transform-and-deliver-files-and-images>)

Author: David Walsh

Published: 2025-03-24T22:58:30Z

Content type: article

Language: en

Sources: [David Walsh](<https://devfeed.tech/sources/david-walsh.md>)

Topics: [file](<https://devfeed.tech/topics/file.md>), [Image](<https://devfeed.tech/topics/image.md>), [Developer experience](<https://devfeed.tech/topics/developer-experience.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [back-end](<https://devfeed.tech/tags/back-end.md>), [conversion](<https://devfeed.tech/tags/conversion.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [files](<https://devfeed.tech/tags/files.md>), [gif](<https://devfeed.tech/tags/gif.md>), [images](<https://devfeed.tech/tags/images.md>), [python](<https://devfeed.tech/tags/python.md>), [qr-code](<https://devfeed.tech/tags/qr-code.md>), [sponsored](<https://devfeed.tech/tags/sponsored.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

This sponsored developer article presents Filestack as a service for uploading, transforming, and delivering files and images. It describes a file-uploading interface, integrations with services such as Google Drive, Dropbox, GitHub, Facebook, and Instagram, a Python library for back-end uploads, documentation, and transformations for images, videos, and documents.

### Source excerpt

Managing media is a really difficult task if you try to do all of it yourself, especially if the media comes from other sources. The file can be submitted in any state and size, but what if you need something really specific? You can code it all yourself or you can use an awesome service [...] The post Easy way to upload, transform and deliver files and images (Sponsored) appeared first on David Walsh Blog.

## Bypassing character blocklists with unicode overflows

DevFeed: [Bypassing character blocklists with unicode overflows](<https://devfeed.tech/articles/bypassing-character-blocklists-with-unicode-overflows-7668.md>)

Original publisher: [Read original article](<https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows>)

Author: Gareth Heyes

Published: 2025-01-28T13:58:28Z

Content type: article

Language: en

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

Topics: [ASCII](<https://devfeed.tech/topics/ascii.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Bug Bounty](<https://devfeed.tech/topics/bugbounty.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [attacks](<https://devfeed.tech/tags/attacks.md>), [bug-bounty](<https://devfeed.tech/tags/bug-bounty.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [published](<https://devfeed.tech/tags/published.md>)

### AI overview

The article explains how Unicode codepoint truncation, or Unicode overflow, can bypass character blocklists by producing specific ASCII characters when values exceed byte or JavaScript codepoint limits. It describes active use of these truncation attacks by bug bounty hunters and related tooling added to ActiveScan++, Hackvertor, and Shazzer.

### Source excerpt

Unicode codepoint truncation - also called a Unicode overflow attack - happens when a server tries to store a Unicode character in a single byte. Because the maximum value of a byte is 255, an overflo

## macOS Keyboard Shortcut Localization

DevFeed: [macOS Keyboard Shortcut Localization](<https://devfeed.tech/articles/macos-keyboard-shortcut-localization-13510.md>)

Original publisher: [Read original article](<https://zed.dev/blog/keyboard-localization>)

Author: Conrad Irwin

Published: 2024-11-08T00:00:00Z

Content type: article

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Localization (l10n)](<https://devfeed.tech/topics/localization.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [Vim](<https://devfeed.tech/topics/vim.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [japanese](<https://devfeed.tech/tags/japanese.md>), [keyboard](<https://devfeed.tech/tags/keyboard.md>), [layout](<https://devfeed.tech/tags/layout.md>), [macos](<https://devfeed.tech/tags/macos.md>), [shortcuts](<https://devfeed.tech/tags/shortcuts.md>), [vim](<https://devfeed.tech/tags/vim.md>)

### AI overview

Zed 0.162 changes keyboard shortcut handling so shortcuts work across Cyrillic, Japanese IME-based, and non-US Latin keyboard layouts. The update changes modifier requirements, coordinates shortcut processing with IMEs, and uses macOS Latin-based layouts for non-Latin keyboards.

### Source excerpt

How macOS shortcuts work on different layouts.

## Homographic Spoofing: a new Ruby toolkit

DevFeed: [Homographic Spoofing: a new Ruby toolkit](<https://devfeed.tech/articles/homographic-spoofing-a-new-ruby-toolkit-33502.md>)

Original publisher: [Read original article](<https://dev.37signals.com/homographic-spoofing/>)

Author: Jacopo Beschi

Published: 2024-06-25T17:00:00Z

Content type: tutorial

Language: en

Sources: [37signals Dev](<https://devfeed.tech/sources/37signals-dev.md>)

Topics: [spoofing](<https://devfeed.tech/topics/spoofing.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Security](<https://devfeed.tech/topics/security.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [email](<https://devfeed.tech/topics/email.md>), [domain](<https://devfeed.tech/topics/domain.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [domain](<https://devfeed.tech/tags/domain.md>), [email](<https://devfeed.tech/tags/email.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [phishing](<https://devfeed.tech/tags/phishing.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [security](<https://devfeed.tech/tags/security.md>), [spoofing](<https://devfeed.tech/tags/spoofing.md>)

### AI overview

This article explains homograph attacks, in which visually similar Unicode characters are used to spoof identities in domains or email. It describes browser and email-client protections using Punycode and UTS #39, then introduces an open-source Ruby gem implementing those guidelines for IDNs and email addresses.

### Source excerpt

What is a homograph attack and how to protect from it with a new gem.

## Secure Java URL encoding and decoding

DevFeed: [Secure Java URL encoding and decoding](<https://devfeed.tech/articles/secure-java-url-encoding-and-decoding-7990.md>)

Original publisher: [Read original article](<https://snyk.io/blog/java-url-encoding-decoding/>)

Author: Jura Gorohovsky

Published: 2023-08-14T05:00:00Z

Content type: article

Language: en

Sources: [Blog RSS Feed | Snyk](<https://devfeed.tech/sources/blog-rss-feed-snyk.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [Security](<https://devfeed.tech/topics/security.md>), [Amazon API Gateway](<https://devfeed.tech/topics/amazon-api-gateway.md>), [HTML](<https://devfeed.tech/topics/html.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>)

Tags: [acquisition](<https://devfeed.tech/tags/acquisition.md>), [api](<https://devfeed.tech/tags/api.md>), [api-gateway](<https://devfeed.tech/tags/api-gateway.md>), [article](<https://devfeed.tech/tags/article.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [awareness](<https://devfeed.tech/tags/awareness.md>), [blog](<https://devfeed.tech/tags/blog.md>), [code-security](<https://devfeed.tech/tags/code-security.md>), [developer](<https://devfeed.tech/tags/developer.md>), [draftdotdev](<https://devfeed.tech/tags/draftdotdev.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [html](<https://devfeed.tech/tags/html.md>), [java](<https://devfeed.tech/tags/java.md>), [programming](<https://devfeed.tech/tags/programming.md>), [security](<https://devfeed.tech/tags/security.md>), [server](<https://devfeed.tech/tags/server.md>), [snyk-code](<https://devfeed.tech/tags/snyk-code.md>)

### AI overview

This article explains URL encoding and decoding in Java. It describes percent-encoding characters outside the permitted URL character set, clarifies that URL encoding is not encryption, and discusses use cases such as HTML form input, external API calls, and API gateways. It also explains parsing, interoperability, and security risks caused by unencoded URLs.

### Source excerpt

This article discusses Java, why URL encoding and decoding are important, and how to approach it properly.

## The C Standard Library Function isspace() Depends on Locale

DevFeed: [The C Standard Library Function isspace() Depends on Locale](<https://devfeed.tech/articles/the-c-standard-library-function-isspace-depends-on-locale-20753.md>)

Original publisher: [Read original article](<https://www.evanjones.ca/isspace_locale.html>)

Published: 2023-06-06T13:41:23Z

Content type: article

Language: en

Sources: [Evan Jones](<https://devfeed.tech/sources/evan-jones.md>)

Topics: [C](<https://devfeed.tech/topics/c.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [bug](<https://devfeed.tech/topics/bug.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [bug](<https://devfeed.tech/tags/bug.md>), [c](<https://devfeed.tech/tags/c.md>), [function](<https://devfeed.tech/tags/function.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [library](<https://devfeed.tech/tags/library.md>), [locale](<https://devfeed.tech/tags/locale.md>), [mac](<https://devfeed.tech/tags/mac.md>), [mac-os](<https://devfeed.tech/tags/mac-os.md>), [standard](<https://devfeed.tech/tags/standard.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>)

### AI overview

The article explains that C's isspace() behavior depends on the active locale. In the default C locale it recognizes six ASCII whitespace characters, while other locales may also recognize Unicode whitespace. The author connects this behavior to a parsing bug involving PostgreSQL Hstore values on Mac OS X.

### Source excerpt

This is a post for myself, because I wasted a lot of time understanding this bug, and I want to be able to remember it in the future. I expect close to zero others to be interested. The C standard library function isspace() returns a non-zero value (true) for the six "standard" ASCII white-space characters ('\t', '\n', '\v', '\f', '\r', ' '), and any locale-specific characters. By default, a program starts in the "C" locale, which will only return true for the six ASCII white-space characters. However, if the program changes locales, it can return true for other values. As a result, unless you really understand locales, you should use your own version of this function, or ICU4C's u_isspace() function. An implementation of isspace() for ASCII is one line: /* Returns true for the 6 ASCII white-space characters: \t \n \v \f \r ' '. */ int isspace_ascii(int c) { return c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r' || c == ' '; } I ran into this because On Mac OS X, Postgres switches to the system's default locale, which is something that uses UTF-8 (e.g. en_US.UTF-8, fr_CA.UTF-8, etc). In this case, isspace() returns true for Unicode white-space values, which includes 0x85 = NEL = Next Line, and 0xA0 = NBSP = No-Break Space. This caused a bug in parsing Postgres Hstore values that use Unicode. I have attempted to submit a patch to fix this (mailing list post, commitfest entry). For a program to demonstrate the behaviour on different systems, see isspace_locale on Github.

## dbdev: PostgreSQL Package Manager

DevFeed: [dbdev: PostgreSQL Package Manager](<https://devfeed.tech/articles/dbdev-postgresql-package-manager-355.md>)

Original publisher: [Read original article](<https://supabase.com/blog/dbdev>)

Author: Oliver Rice; John Dalton

Published: 2023-04-14T07:00:00Z

Content type: release

Language: en

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

Topics: [Package manager](<https://devfeed.tech/topics/package-manager.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [ecosystem](<https://devfeed.tech/tags/ecosystem.md>), [features](<https://devfeed.tech/tags/features.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [sql](<https://devfeed.tech/tags/sql.md>), [versioning](<https://devfeed.tech/tags/versioning.md>)

### AI overview

Supabase is publicly previewing dbdev, a PostgreSQL package manager with a read-only registry initially populated with example packages. It is designed to support publishing, discovering, and repeatedly deploying SQL libraries and applications, with initial compatibility for new Supabase projects and PostgreSQL instances.

### Source excerpt

We're publicly previewing dbdev, a PostgreSQL package manager.

[Next page](<https://devfeed.tech/tags/ascii.md?cursor=WyIyMDIzLTA0LTE0VDA3OjAwOjAwKzAwOjAwIiwgImY2YzZiZWQ0LThjMTAtNDZhMy1iMDczLTIxNTRhNmFhODJlYyJd>)