# ASCII

A 7-bit coded character set for information interchange.

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

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

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

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

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

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

## Simple colorful logging in Node.js

DevFeed: [Simple colorful logging in Node.js](<https://devfeed.tech/articles/simple-colorful-logging-in-node-js-37323.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/nodejs-simple-colorful-logging/>)

Author: Stanko

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

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [Node.js](<https://devfeed.tech/topics/node-js.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Logging](<https://devfeed.tech/topics/logging.md>), [color](<https://devfeed.tech/topics/color.md>), [console](<https://devfeed.tech/topics/console.md>), [Script](<https://devfeed.tech/topics/script.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>)

Tags: [ansi](<https://devfeed.tech/tags/ansi.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [color](<https://devfeed.tech/tags/color.md>), [commands](<https://devfeed.tech/tags/commands.md>), [console](<https://devfeed.tech/tags/console.md>), [logging](<https://devfeed.tech/tags/logging.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [script](<https://devfeed.tech/tags/script.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

A tutorial showing how to create simple colorful console logs in Node.js with ANSI escape codes, including a small reusable script, recommendations for picocolors and Chalk, and a browser-console alternative using CSS.

### Source excerpt

When writing Node.js scripts, I often want to output information to the console in different colors. Usually, it is to get the user's attention and signalize success or error. I could reach for a battle-tested library like Chalk, but I usually don't need all of its features. Instead, I have a tiny script I copy from project to project: const reset = "\x1b[0m"; const log = { green: (text) => console.log("\x1b[32m" + text + reset), red: (text) => console.log("\x1b[31m" + text + reset), blue: (text) => console.log("\x1b[34m" + text + reset), yellow: (text) => console.log("\x1b[33m" + text + reset), }; Then, I can easily log things in color: log.green("This seems like a very successful message"); log.red("Something might have gone wrong"); log.blue("I'm here to inform you of something"); log.yellow("Lemon 🍋"); Once executed, it looks like this: How it works # The script uses something called ANSI escape codes. It is a way to give commands to a terminal by passing sequences of bytes, usually starting with an ASCII escape character \x1b. They are mostly used to move the cursor and to change the color or styling of the text. They are standardized, and they should work on any platform. For example, \x1b[31m is an escape sequence that tells our terminal to switch color to red. All text after it will be red, until we pass the reset sequence \x1b[0m, which will revert text to the default color. More robust version # If you need more features, I suggest using an existing library. I usually recommend picking one of these two: picocolors - when I need more robust but still lightweight library Chalk - when I need a fully featured coloring library Browser # As a bonus, let's see how we can use color in a browser's console. Escape sequences are not going to work, but we can actually use CSS. console.log("%c🍋 Lemon", "background: black; color: yellow;"); Everything after %c will be styled using CSS defined in the parameter after it. Open the console in your browser and click on the b

## Code Ranges: A Deeper Look at Ruby Strings

DevFeed: [Code Ranges: A Deeper Look at Ruby Strings](<https://devfeed.tech/articles/code-ranges-a-deeper-look-at-ruby-strings-1346.md>)

Original publisher: [Read original article](<https://shopify.engineering/code-ranges-ruby-strings>)

Author: Kevin Menard

Published: 2022-04-14T20:39:18Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [Code](<https://devfeed.tech/topics/code.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [code](<https://devfeed.tech/tags/code.md>), [ruby](<https://devfeed.tech/tags/ruby.md>)

### AI overview

An informal technical examination of Ruby's encoding-aware string representation and the runtime behavior that makes it functional and performant. It covers mutable and immutable strings, frozen literals, Ruby's support for more than 100 encodings, default encodings such as UTF-8, US-ASCII, and ASCII-8BIT, validation, encoding compatibility checks, and the performance characteristics of ASCII and fixed-width encodings.

### Source excerpt

An informal look at what makes encoding-aware strings in Ruby functional and performant, providing insight into all the wonderful things the Ruby VM does.

## History of PowerDNS: 2013-2020 (Technology)

DevFeed: [History of PowerDNS: 2013-2020 (Technology)](<https://devfeed.tech/articles/history-of-powerdns-2013-2020-technology-36436.md>)

Original publisher: [Read original article](<https://berthub.eu/articles/posts/history-of-powerdns-2013-2020/>)

Published: 2020-12-21T19:32:58Z

Content type: article

Language: en

Sources: [Bert Hubert's writings](<https://devfeed.tech/sources/bert-hubert-s-writings.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [domain](<https://devfeed.tech/topics/domain.md>), [DNSSEC](<https://devfeed.tech/topics/dnssec.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [business](<https://devfeed.tech/tags/business.md>), [cleanup](<https://devfeed.tech/tags/cleanup.md>), [cognitive-load](<https://devfeed.tech/tags/cognitive-load.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [dns](<https://devfeed.tech/tags/dns.md>), [dnssec](<https://devfeed.tech/tags/dnssec.md>), [domain](<https://devfeed.tech/tags/domain.md>), [history](<https://devfeed.tech/tags/history.md>), [powerdns](<https://devfeed.tech/tags/powerdns.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [software](<https://devfeed.tech/tags/software.md>), [standards](<https://devfeed.tech/tags/standards.md>), [technology](<https://devfeed.tech/tags/technology.md>)

### AI overview

This article covers the technical development of PowerDNS from 2013 to 2020, including an extensive internal cleanup of mature code. It explains how the cleanup addressed accumulated complexity, bugs, and incorrect treatment of DNS names as ASCII strings, including ordering, case, escaping, and spaces.

### Source excerpt

In this part of the history of PowerDNS, I talk about the technical developments from 2013 to 2020. Over these years many fascinating business & hiring developments also happened, but these are described in a separate post, part 3B of the PowerDNS History. Here are the earlier parts: Part 1, Part 2 For context, the 2013-2020 era is what I would describe as "PowerDNS 3.0" - how we grew from a one (or two) person company to a healthy and thriving department of Open-Xchange.

## Automatically Detecting Text Encodings in C++

DevFeed: [Automatically Detecting Text Encodings in C++](<https://devfeed.tech/articles/automatically-detecting-text-encodings-in-c-21017.md>)

Original publisher: [Read original article](<https://preshing.com/20200727/automatically-detecting-text-encodings-in-cpp>)

Author: Jeff Preshing

Published: 2020-07-27T20:10:00Z

Content type: article

Language: en

Sources: [Jeff Preshing](<https://devfeed.tech/sources/jeff-preshing.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Internet](<https://devfeed.tech/topics/internet.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [files](<https://devfeed.tech/tags/files.md>), [framework](<https://devfeed.tech/tags/framework.md>), [internet](<https://devfeed.tech/tags/internet.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [platform](<https://devfeed.tech/tags/platform.md>), [python](<https://devfeed.tech/tags/python.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

This article explains why text-file encodings are ambiguous and describes how the Plywood C++ Framework detects and normalizes text formats. It covers ASCII, UTF-8, UTF-16, Windows-1252, BOMs, and platform-specific line endings.

### Source excerpt

Consider the lowly text file. This text file can take on a surprising number of different formats. The text could be encoded as ASCII, UTF-8, UTF-16 (little or big-endian), Windows-1252, Shift JIS, or any of dozens of other encodings. The file may or may not begin with a byte order mark (BOM). Lines of text could be terminated with a linefeed character \n (typical on UNIX), a CRLF sequence \r\n (typical on Windows) or, if the file was created on an older system, some other character sequence. Sometimes it's impossible to determine the encoding used by a particular text file. For example, suppose a file contains the following bytes: A2 C2 A2 C2 A2 C2 This could be: a UTF-8 file containing "ccc" a little-endian UTF-16 (or UCS-2) file containing "ꋂꋂꋂ" a big-endian UTF-16 file containing "슢슢슢" a Windows-1252 file containing "ÂcÂcÂc" That's obviously an artificial example, but the point is that text files are inherently ambiguous. This poses a challenge to software that loads text. It's a problem that has been around for a while. Fortunately, the text file landscape has gotten simpler over time, with UTF-8 winning out over other character encodings. More than 95% of the Internet is now delivered using UTF-8. It's impressive how quickly that number has changed; it was less than 10% as recently as 2006. UTF-8 hasn't taken over the world just yet, though. The Windows Registry editor, for example, still saves text files as UTF-16. When writing a text file from Python, the default encoding is platform-dependent; on my Windows PC, it's Windows-1252. In other words, the ambiguity problem still exists today. And even if a text file is encoded in UTF-8, there are still variations in format, since the file may or may not start with a BOM and could use either UNIX-style or Windows-style line endings. How the Plywood C++ Framework Loads Text Plywood is a cross-platform open-source C++ framework I released two months ago. When opening a text file using Plywood, you have a couple of o

## The Life of a Data Byte

DevFeed: [The Life of a Data Byte](<https://devfeed.tech/articles/the-life-of-a-data-byte-35206.md>)

Original publisher: [Read original article](<https://blog.jessfraz.com/post/the-life-of-a-data-byte/>)

Published: 2020-03-08T08:09:26Z

Content type: article

Language: en

Sources: [Jessie Frazelle](<https://devfeed.tech/sources/jessie-frazelle.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [Code](<https://devfeed.tech/topics/code.md>), [digital](<https://devfeed.tech/topics/digital.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [code](<https://devfeed.tech/tags/code.md>), [data](<https://devfeed.tech/tags/data.md>), [digital](<https://devfeed.tech/tags/digital.md>), [encoding](<https://devfeed.tech/tags/encoding.md>), [storage](<https://devfeed.tech/tags/storage.md>), [unicode](<https://devfeed.tech/tags/unicode.md>)

### AI overview

An overview of how bits and bytes have been stored across historical and modern media, followed by an explanation of character encoding with ASCII, Unicode, UTF-8, UTF-16, and UTF-32.

### Source excerpt

A byte of data has been stored in a number of different ways as newer, better, and faster mediums of storage are introduced. A byte is a unit of digital information that most commonly refers to eight bits. A bit is a unit of information that can be expressed as 0 or 1, representing logical state. In the case of paper cards, a bit was stored as the presence or absence of a hole in the card at a specific place. If we go even further back in time to Babbage's Analytical Engine, a bit was stored as the position of a mechanical gear or lever. For magnetic storage devices, such as tapes and disks, a bit is represented by the polarity of a certain area of the magnetic film. In modern dynamic random-access memory (DRAM), a bit is often represented as two levels of electrical charge stored in a capacitor, a device that stores electrical energy in an electric field. In June 1956, Werner Buchholz1 coined the word byte2 to refer to a group of bits used to encode a single character of text3. Let's go over a bit about character encoding. We will start with American Standard Code for Information Interchange, or ASCII. ASCII was based on the English alphabet, therefore every letter, digit, and symbol (a-z, A-Z, 0-9, +, -, /, ", ! etc) were represented as a 7 bit integer between 32 and 127. This wasn't very friendly to other languages. In order to support other languages, Unicode extended ASCII. With Unicode, each character is represented as a code-point, or character, for example a lower case j is U+006A, where the U stands for Unicode and after that is a hexadecimal number. UTF-8 is the standard for representing characters as eight bits, allowing every code-point between 0-127 to be stored in a single byte. If we think back to ASCII this is fine for English characters, but other language's characters are often expressed as two or more bytes. UTF-16 is the standard for representing characters as 16 bits and UTF-32 is the standard for representing characters as 32 bits. In ASCII eve

## EOF is not a character

DevFeed: [EOF is not a character](<https://devfeed.tech/articles/eof-is-not-a-character-33311.md>)

Original publisher: [Read original article](<https://ruslanspivak.com/eofnotchar/>)

Author: Ruslan Spivak

Published: 2020-03-01T16:53:00Z

Content type: tutorial

Language: en

Sources: [Ruslan Spivak](<https://devfeed.tech/sources/ruslan-spivak.md>)

Topics: [C](<https://devfeed.tech/topics/c.md>), [IO](<https://devfeed.tech/topics/io.md>), [Unix](<https://devfeed.tech/topics/unix.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [Streams](<https://devfeed.tech/topics/streams.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [blog](<https://devfeed.tech/tags/blog.md>), [c](<https://devfeed.tech/tags/c.md>), [code](<https://devfeed.tech/tags/code.md>), [computer](<https://devfeed.tech/tags/computer.md>), [example](<https://devfeed.tech/tags/example.md>), [file](<https://devfeed.tech/tags/file.md>), [function](<https://devfeed.tech/tags/function.md>), [library](<https://devfeed.tech/tags/library.md>), [linux](<https://devfeed.tech/tags/linux.md>), [mac-os](<https://devfeed.tech/tags/mac-os.md>), [python](<https://devfeed.tech/tags/python.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>), [stream](<https://devfeed.tech/tags/stream.md>), [systems](<https://devfeed.tech/tags/systems.md>), [text](<https://devfeed.tech/tags/text.md>), [unix](<https://devfeed.tech/tags/unix.md>), [value](<https://devfeed.tech/tags/value.md>)

### AI overview

This tutorial explains that EOF in C is not a character and is not stored at the end of a file. It examines EOF in Unix I/O, its usual value of -1, and why that value cannot represent a character.

### Source excerpt

I was reading Computer Systems: A Programmer's Perspective the other day and in the chapter on Unix I/O the authors mention that there is no explicit "EOF character" at the end of a file.

## Unicode programming, with examples

DevFeed: [Unicode programming, with examples](<https://devfeed.tech/articles/unicode-programming-with-examples-21485.md>)

Original publisher: [Read original article](<https://begriffs.com/posts/2019-05-23-unicode-icu.html>)

Published: 2019-05-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Joe Nelson](<https://devfeed.tech/sources/joe-nelson.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [C](<https://devfeed.tech/topics/c.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [c](<https://devfeed.tech/tags/c.md>), [code](<https://devfeed.tech/tags/code.md>), [examples](<https://devfeed.tech/tags/examples.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

An introduction to Unicode text processing that explains why handling human-language strings is complex and uses example programs to illustrate the concepts.

### Source excerpt

2019-05-23 Most programming languages evolved awkwardly during the transition from ASCII to 16-bit UCS-2 to full Unicode. They contain internationalization features that often aren't portable or don't suffice. Unicode is more than a numbering scheme for the characters of every language - although that in itself is a useful accomplishment. Unicode also includes characters' case, directionality, and alphabetic properties.

## PostgreSQL Data Types: Text Encoding

DevFeed: [PostgreSQL Data Types: Text Encoding](<https://devfeed.tech/articles/postgresql-data-types-text-encoding-34593.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2018/04/postgresql-data-types-text-encoding/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2018-04-09T11:33:01Z

Content type: tutorial

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [data type](<https://devfeed.tech/topics/data-type.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [data-type](<https://devfeed.tech/tags/data-type.md>), [encoding](<https://devfeed.tech/tags/encoding.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>)

### AI overview

This tutorial introduces PostgreSQL's text data type and explains character encoding, including ASCII representation, server-side encoding, and client-side encoding.

### Source excerpt

Continuing our series of PostgreSQL Data Types today we're going to introduce the PostgreSQL text data type. The first notion to understand when processing text in any program is of course the notion of encoding. So when addressing the text datatype we must mention encoding settings, and possibly also issues. An encoding is a particular representation of characters in bits and bytes. In the ASCII encoding the letter A is encoded as the 7-bits byte 1000001, or 65 in decimal, or 41 in hexadecimal. All those numbers are going to be written the same way on-disk, and the letter A too.

## Handling User Input in an Infinite Console Loop

DevFeed: [Handling User Input in an Infinite Console Loop](<https://devfeed.tech/articles/controlling-not-just-ctrl-c-32774.md>)

Original publisher: [Read original article](<https://reactos.org/blogs/controlling-not-just-ctrlc/>)

Published: 2016-08-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Front Page on ReactOS Website](<https://devfeed.tech/sources/front-page-on-reactos-website.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [console](<https://devfeed.tech/topics/console.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [blocking](<https://devfeed.tech/tags/blocking.md>), [code](<https://devfeed.tech/tags/code.md>), [console](<https://devfeed.tech/tags/console.md>), [free](<https://devfeed.tech/tags/free.md>), [loops](<https://devfeed.tech/tags/loops.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [os](<https://devfeed.tech/tags/os.md>), [react](<https://devfeed.tech/tags/react.md>), [reactos](<https://devfeed.tech/tags/reactos.md>), [win32](<https://devfeed.tech/tags/win32.md>), [winapi](<https://devfeed.tech/tags/winapi.md>)

### AI overview

This tutorial examines why a console application's infinite loop fails when it uses getchar() to detect a key press. The call blocks loop execution, so the article explores the need for non-blocking keyboard input while retaining controlled termination and final output.

### Source excerpt

Probably one of the funniest moments while developing is when you realize that something that "looks easy" is not as straight forward as it seemed at first sight. The task was "really easy": Just creating a console app which (1)loops infinitely, (2)doing some tasks and (3) which breaks when the user decides to stop it (4)printing some valuable info before exiting. "Naaah, this is easy. I just need a while/for/do-while/whatever infinite loop, a printf message asking the user to press a specific key to stop it, then a getch() to capture the key in order to break/stop the loop, and finally another printf to print the valuable info: PROFIT!

## Find non-ASCII chars

DevFeed: [Find non-ASCII chars](<https://devfeed.tech/articles/find-non-ascii-chars-37714.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/find-non-ascii-chars/>)

Author: Carlos Alexandro Becker

Published: 2015-02-17T00:00:00Z

Content type: tutorial

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [ASCII](<https://devfeed.tech/topics/ascii.md>), [dotfiles](<https://devfeed.tech/topics/dotfiles.md>), [file](<https://devfeed.tech/topics/file.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [file](<https://devfeed.tech/tags/file.md>), [function](<https://devfeed.tech/tags/function.md>), [project](<https://devfeed.tech/tags/project.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>)

### AI overview

A quick tip for finding non-ASCII characters in files, particularly dotfiles, using a command-line function. Such characters can cause shellcheck and other tools to break, and identifying them makes cleanup faster.

### Source excerpt

FYI: This is a really quick tip.

## Prime numbers and universe factories

DevFeed: [Prime numbers and universe factories](<https://devfeed.tech/articles/prime-numbers-and-universe-factories-27097.md>)

Original publisher: [Read original article](<https://andrea.corbellini.name/2015/02/15/prime-numbers-and-universe-factories/>)

Author: andreacorbellini

Published: 2015-02-15T16:54:00Z

Content type: opinion

Language: en

Sources: [Andrea Corbellini](<https://devfeed.tech/sources/andrea-corbellini.md>)

Topics: [ASCII](<https://devfeed.tech/topics/ascii.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [encoding](<https://devfeed.tech/tags/encoding.md>), [fun](<https://devfeed.tech/tags/fun.md>), [math](<https://devfeed.tech/tags/math.md>), [numbers](<https://devfeed.tech/tags/numbers.md>), [xkcd](<https://devfeed.tech/tags/xkcd.md>)

### AI overview

The article explores how prime numbers can encode ASCII text, inspired by an XKCD comic. The author searches prime numbers for English messages and discusses the possibility of finding longer texts or software encoded this way, while noting uncertainty about some primality results.

### Source excerpt

I'm a XKCD fan, and I look it up regularly. There's a comic that I particularly enjoyed: Pi Equals. The comic Pi Equals, from XKCD.com (CC-BY-NC 2.5). Well, it appears that Randall was right in that there's a help message hidden somewhere. And I just found it in a prime number: 245178888024581899558766786108789912235672909204719666025638877624752119760547413887830514281649480308707369249 That number corresponds to the ASCII encoding ...

## Understanding Unicode and UTF-8 Character Encoding

DevFeed: [Understanding Unicode and UTF-8 Character Encoding](<https://devfeed.tech/articles/finally-understanding-unicode-and-utf-8-35398.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/finally-understanding-unicode-and-utf-8/>)

Author: Graham King

Published: 2012-05-31T22:25:18Z

Content type: tutorial

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [Python](<https://devfeed.tech/topics/python.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [.NET](<https://devfeed.tech/topics/net.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [ascii](<https://devfeed.tech/tags/ascii.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [encoding](<https://devfeed.tech/tags/encoding.md>), [go](<https://devfeed.tech/tags/go.md>), [java](<https://devfeed.tech/tags/java.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [software](<https://devfeed.tech/tags/software.md>), [unicode](<https://devfeed.tech/tags/unicode.md>), [utf8](<https://devfeed.tech/tags/utf8.md>)

### AI overview

This guide explains how Unicode code points represent characters and how UTF-8 stores them using one to four bytes. It compares Unicode, UTF-8, UTF-32, ASCII, and ISO-8859-1, with examples in Python and references to Java, .NET, Go, and Python.

### Source excerpt

Demystifying Unicode and UTF-8: A byte-sized guide to character encoding.

## Coding Challenge: The Luhny Bin

DevFeed: [Coding Challenge: The Luhny Bin](<https://devfeed.tech/articles/coding-challenge-the-luhny-bin-15580.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/coding-challenge-the-luhny-bin>)

Author: Square Engineering

Published: 2011-11-14T17:00:00Z

Content type: article

Language: en

Sources: [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Code Challenge](<https://devfeed.tech/topics/code-challenge.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [coding](<https://devfeed.tech/topics/coding.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Streams](<https://devfeed.tech/topics/streams.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [coding](<https://devfeed.tech/tags/coding.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [github](<https://devfeed.tech/tags/github.md>), [logs](<https://devfeed.tech/tags/logs.md>), [numbers](<https://devfeed.tech/tags/numbers.md>), [sequences](<https://devfeed.tech/tags/sequences.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

This coding challenge asks readers to write a command-line program that reads ASCII text, identifies digit sequences resembling credit card numbers using the Luhn checksum, masks every digit in qualifying sequences with X characters, and writes the filtered text to standard output. The challenge includes requirements for 14- to 16-digit numbers, separators, and overlapping matches.

### Source excerpt

Do you have what it takes to escape the Luhny Bin?

## String Generation for Brute-force Attacks

DevFeed: [String Generation for Brute-force Attacks](<https://devfeed.tech/articles/string-generation-for-brute-force-attacks-40744.md>)

Original publisher: [Read original article](<https://radek.io/posts/string-generation-for-brute-force-attacks/>)

Published: 2011-08-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [ASCII](<https://devfeed.tech/topics/ascii.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [attacks](<https://devfeed.tech/tags/attacks.md>), [password](<https://devfeed.tech/tags/password.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

The article explains simple Python string-sequence generators for brute-force password guessing. It discusses generating every combination and restricting the character set to printable characters to reduce unlikely attempts.

### Source excerpt

A simple way to generate strings in Python

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