# Scripting

The practice of creating and running script files containing program source code that an interpreter executes.

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

## ESP32 Bit Pirate: a multi-protocol workbench built on the ESP32-S3

DevFeed: [ESP32 Bit Pirate: a multi-protocol workbench built on the ESP32-S3](<https://devfeed.tech/articles/esp32-bit-pirate-a-multi-protocol-workbench-built-on-the-esp32-s3-13788.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/2026/08/esp32-bit-pirate/>)

Author: John Lee

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

Content type: article

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [ESP32-S3](<https://devfeed.tech/topics/esp32-s3.md>), [Embedded Software Dev](<https://devfeed.tech/topics/embedded-software-dev.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [ESP32-C5](<https://devfeed.tech/topics/esp32-c5.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [2](<https://devfeed.tech/tags/2.md>), [ble](<https://devfeed.tech/tags/ble.md>), [blog](<https://devfeed.tech/tags/blog.md>), [bridging](<https://devfeed.tech/tags/bridging.md>), [cli](<https://devfeed.tech/tags/cli.md>), [community-contribution](<https://devfeed.tech/tags/community-contribution.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [development-board](<https://devfeed.tech/tags/development-board.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [esp32-c5](<https://devfeed.tech/tags/esp32-c5.md>), [esp32-s3](<https://devfeed.tech/tags/esp32-s3.md>), [firmware](<https://devfeed.tech/tags/firmware.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [open-hardware](<https://devfeed.tech/tags/open-hardware.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [python](<https://devfeed.tech/tags/python.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [usb](<https://devfeed.tech/tags/usb.md>), [wi-fi](<https://devfeed.tech/tags/wi-fi.md>)

### AI overview

ESP32 Bit Pirate turns an ESP32-S3 into a scriptable multi-protocol workbench. The article describes its firmware, more than twenty wired and wireless modes, serial and web-based interfaces, Python scripting, and companion open-hardware projects including an ESP32-C5 radio adapter and a carrier dock.

### Source excerpt

ESP32 Bit Pirate turns an ESP32-S3 into a scriptable multi-protocol workbench with more than twenty modes, a web and serial CLI, and dump and sniff tooling. This article walks through the firmware and the two open-hardware companions that extend it: a carrier dock with selectable 1.8 V, 3.3 V and 5 V level translation, and an ESP32-C5 adapter that adds a dual-band radio.

## Creator of Lua: Scripting, Programming Languages, Predictions | Roberto Ierusalimschy

DevFeed: [Creator of Lua: Scripting, Programming Languages, Predictions | Roberto Ierusalimschy](<https://devfeed.tech/articles/creator-of-lua-scripting-programming-languages-predictions-roberto-ierusalimschy-18087.md>)

Original publisher: [Read original article](<https://www.developing.dev/p/creator-of-lua-scripting-programming>)

Author: Ryan Peterman

Published: 2026-08-03T13:05:15Z

Content type: article

Language: en

Sources: [The Developing Dev](<https://devfeed.tech/sources/the-developing-dev.md>)

Topics: [Lua](<https://devfeed.tech/topics/lua.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [C](<https://devfeed.tech/topics/c.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [lua](<https://devfeed.tech/tags/lua.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [python](<https://devfeed.tech/tags/python.md>), [scripting](<https://devfeed.tech/tags/scripting.md>)

### AI overview

A conversation with Lua creator Roberto Ierusalimschy explains how Lua works as an embeddable scripting language alongside C or C++, including how applications can call Lua or Lua can call C. The discussion also covers Lua's use in games such as World of Warcraft and Roblox and recommendations for learning other programming languages.

### Source excerpt

When I worked at Instagram, most of the codebase was in Python but occasionally I'd see these bindings into C++.

## Three Gradle Talks from KotlinConf 2026 (and What to Steal from Each)

DevFeed: [Three Gradle Talks from KotlinConf 2026 (and What to Steal from Each)](<https://devfeed.tech/articles/three-gradle-talks-from-kotlinconf-2026-and-what-to-steal-from-each-24622.md>)

Original publisher: [Read original article](<https://blog.gradle.org/gradle-at-kotlinconf-2026>)

Author: Laura Kassovic

Published: 2026-07-28T04:00:00Z

Content type: article

Language: en

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

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Groovy](<https://devfeed.tech/topics/groovy.md>), [ide](<https://devfeed.tech/topics/ide.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [build](<https://devfeed.tech/tags/build.md>), [build-tool](<https://devfeed.tech/tags/build-tool.md>), [conference](<https://devfeed.tech/tags/conference.md>), [developer](<https://devfeed.tech/tags/developer.md>), [dsl](<https://devfeed.tech/tags/dsl.md>), [event](<https://devfeed.tech/tags/event.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [groovy](<https://devfeed.tech/tags/groovy.md>), [ide](<https://devfeed.tech/tags/ide.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlinconf](<https://devfeed.tech/tags/kotlinconf.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [script](<https://devfeed.tech/tags/script.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [talk](<https://devfeed.tech/tags/talk.md>), [talks](<https://devfeed.tech/tags/talks.md>)

### AI overview

The article reviews three Gradle talks from KotlinConf 2026. It explains the progression from Groovy build scripts to the Kotlin DSL and early Declarative Gradle, emphasizing the problems each approach addresses. It also introduces Gradle best practices for organizing and optimizing builds.

### Source excerpt

Every year I tell myself I'll watch every conference talk I missed. Every year I get through maybe three before a build breaks and I get pulled back into real life. KotlinConf is the one event where I actually follow through, partly because the talks are short and dense, and partly because a good chunk of my coworkers and friends are on stage. This year in Munich, three of them talked about Gradle: Paul Merlin on the history of our DSLs, Stefan Wolf on best practices, and Marcin Mycek on Declarative Gradle for Kotlin. I watched all three so you can decide which ones are worth your fifteen minutes. A Tale of the Gradle DSLs -- Paul Merlin Paul has been inside Gradle's DSL machinery for years, which makes him exactly the right person to tell this story and exactly the wrong person to pretend the early days were clean. The talk traces how build logic went from Groovy, to the Kotlin DSL, to Declarative Gradle. The useful part isn't the timeline. It's that each of those was solving a real problem the previous one couldn't. Groovy gave us a flexible, dynamic scripting language, which was great right up until you wanted your IDE to tell you what was valid. The Kotlin DSL brought static typing, real autocompletion, and refactoring that doesn't rely on hope. That's why the Kotlin DSL is now the default for new Gradle builds. Declarative Gradle is the next swing: describe what your build is rather than script how it runs. The honest through-line is that none of these fully replaces the last one. Kotlin DSL is where most people should be today. Groovy still runs an enormous amount of the world's build logic and isn't going anywhere fast. Declarative Gradle is early but points at where things are headed. Real talk: if your build scripts are still Groovy and still working, you don't have to panic-migrate this weekend. But if you're starting something new, reach for the Kotlin DSL and let the IDE carry some of the weight. 📺 Watch the talk 10 Gradle Best Practices Every Kotlin Deve

## Inspect feature flag history with Vercel CLI

DevFeed: [Inspect feature flag history with Vercel CLI](<https://devfeed.tech/articles/inspect-feature-flag-history-with-vercel-cli-985.md>)

Original publisher: [Read original article](<https://vercel.com/changelog/inspect-feature-flag-history-with-vercel-cli>)

Author: Chris Widmaier

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

Content type: release

Language: en

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

Topics: [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Vercel](<https://devfeed.tech/topics/vercel.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [feature](<https://devfeed.tech/tags/feature.md>), [json](<https://devfeed.tech/tags/json.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [update](<https://devfeed.tech/tags/update.md>), [vercel](<https://devfeed.tech/tags/vercel.md>)

### AI overview

Vercel CLI now supports inspecting Vercel Flags version history, including revision authors, messages, timestamps, changed environments, filtering, pagination, JSON output, and semantic diffs between revisions.

### Source excerpt

Vercel Flags version history can now be inspected from the Vercel CLI with the new vercel flags versions command. Run vercel flags versions <flag> to print the full revision history for a flag, with each revision's author, message, timestamp, and changed environments. Filter to a specific environment with --environment, paginate with --limit and --cursor, or add --json for scripting. To compare a revision against the one before it, run vercel flags versions diff <flag> --revision <n>. The diff is semantic, surfacing field-level changes to targeting rules, rollout percentages, and conditions. Additions, removals, and modifications appear as colored +, -, and ~. Update to the latest version of the Vercel CLI and learn more in the Vercel Flags CLI documentation to get started. Read more

## Worth Reading: Scripting Good Practices in Python

DevFeed: [Worth Reading: Scripting Good Practices in Python](<https://devfeed.tech/articles/worth-reading-scripting-good-practices-in-python-11420.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2026/07/worth-reading-python-good-practices/>)

Published: 2026-07-08T05:28:00Z

Content type: article

Language: en

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

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [python](<https://devfeed.tech/tags/python.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [worth-reading](<https://devfeed.tech/tags/worth-reading.md>)

### AI overview

A recommendation to read Brett Cannon's guidance on good scripting practices in Python, especially when building a simple Python project.

### Source excerpt

Just in case you decide to build a simple Python project over the summer: read scripting good practices in Python by Brett Cannon and tell your AI friend to adhere to them ;)

## Documenting the manual: how curiosity and robotic arms led to a career in open source

DevFeed: [Documenting the manual: how curiosity and robotic arms led to a career in open source](<https://devfeed.tech/articles/documenting-the-manual-how-curiosity-and-robotic-arms-led-to-a-career-in-open-source-34308.md>)

Original publisher: [Read original article](<http://opensource.googleblog.com/2026/06/documenting-the-manual-how-curiosity-and-robotic-arms-led-to-a-career-in-open-source.html>)

Author: Google Open Source (noreply@blogger.com)

Published: 2026-06-22T18:30:00Z

Content type: article

Language: en

Sources: [Google Open Source Blog](<https://devfeed.tech/sources/google-open-source-blog.md>)

Topics: [Documentation](<https://devfeed.tech/topics/documentation.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Linux Kernel](<https://devfeed.tech/topics/linux-kernel.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [C](<https://devfeed.tech/topics/c.md>), [Undocumented feature](<https://devfeed.tech/topics/undocumented-feature.md>), [Network](<https://devfeed.tech/topics/network.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [communities](<https://devfeed.tech/tags/communities.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [linux](<https://devfeed.tech/tags/linux.md>), [linux-kernel](<https://devfeed.tech/tags/linux-kernel.md>), [linux-man-pages](<https://devfeed.tech/tags/linux-man-pages.md>), [network](<https://devfeed.tech/tags/network.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [sponsorship](<https://devfeed.tech/tags/sponsorship.md>), [undocumented-feature](<https://devfeed.tech/tags/undocumented-feature.md>), [work](<https://devfeed.tech/tags/work.md>)

### AI overview

This article profiles Alejandro "Alex" Colomar's path from working with robotic arms to maintaining Linux Kernel documentation. It explains how documenting the previously undocumented SO_TIMESTAMPNS feature led to his first man-pages patch and eventually to a career focused on clarity in open source communities. Google sponsors his work on the Linux Kernel man-pages project.

### Source excerpt

by Daryl Ducharme, Google Open Source When you think of "innovation" in open source, your mind probably jumps to the latest AI model or a revolutionary new framework. You might not immediately think of manual pages. Even Alejandro "Alex" Colomar, who spends his days maintaining Linux Kernel documentation, jokingly admits that some might find the work "boring" because it focuses on fixing existing issues and documenting new features rather than flashy inventions. But as any developer knows, the most powerful code is only as good as the documentation behind it. At Google, we believe that investing in the success of projects we don't own is a core part of being a good open source citizen. That is why we are proud to sponsor Alejandro's work on the Linux Kernel man-pages project--supporting the critical infrastructure that many of our own systems rely on every day. Documentation is the gift you give to your future self and your whole community. The precision of a robot Alejandro's journey into the world of essential documentation started at university. He was working with robotic arms that used a proprietary scripting language. Wanting more control, he decided to write a C library to communicate with the robots over the network by sniffing packets with Wireshark. It worked, but it was slow--he had to wait seconds between commands to ensure the robot had finished moving. To make the movements smooth, he needed to understand the messages the robot was sending back in real-time. This required high-precision timing. He found SO_TIMESTAMP, which provided microsecond precision, but he noticed a macro called SO_TIMESTAMPNS in the header files that promised nanosecond resolution. The problem? It wasn't documented in the manual page. The first patch After figuring out how to use the undocumented feature by looking at the kernel source code, Alejandro decided to ensure the next person wouldn't have to struggle. He cloned the man-pages repository, wrote a new paragraph based on exis

## Managing Multiple Lua Scripts with Ceph Object Storage

DevFeed: [Managing Multiple Lua Scripts with Ceph Object Storage](<https://devfeed.tech/articles/managing-multiple-lua-scripts-with-ceph-object-storage-12338.md>)

Original publisher: [Read original article](<https://ceph.io/en/news/blog/2026/rgw-multiple-scripts/>)

Author: Kirby Chin

Published: 2026-06-10T00:00:00Z

Content type: article

Language: en

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

Topics: [Lua](<https://devfeed.tech/topics/lua.md>), [Script](<https://devfeed.tech/topics/script.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Security](<https://devfeed.tech/topics/security.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>), [ransomware](<https://devfeed.tech/topics/ransomware.md>)

Tags: [availability](<https://devfeed.tech/tags/availability.md>), [blog](<https://devfeed.tech/tags/blog.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [ceph](<https://devfeed.tech/tags/ceph.md>), [cli](<https://devfeed.tech/tags/cli.md>), [data](<https://devfeed.tech/tags/data.md>), [developer](<https://devfeed.tech/tags/developer.md>), [en-article](<https://devfeed.tech/tags/en-article.md>), [en-blog-post](<https://devfeed.tech/tags/en-blog-post.md>), [examples](<https://devfeed.tech/tags/examples.md>), [feature](<https://devfeed.tech/tags/feature.md>), [go](<https://devfeed.tech/tags/go.md>), [lua](<https://devfeed.tech/tags/lua.md>), [management](<https://devfeed.tech/tags/management.md>), [new-feature](<https://devfeed.tech/tags/new-feature.md>), [object-storage](<https://devfeed.tech/tags/object-storage.md>), [operations](<https://devfeed.tech/tags/operations.md>), [rados](<https://devfeed.tech/tags/rados.md>), [ransomware](<https://devfeed.tech/tags/ransomware.md>), [rgw](<https://devfeed.tech/tags/rgw.md>), [s3](<https://devfeed.tech/tags/s3.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [security](<https://devfeed.tech/tags/security.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

This article introduces a Ceph RADOS Gateway feature for managing multiple Lua scripts within the same request context and tenant. It demonstrates scripts for enforcing bucket object locks to mitigate ransomware risks and for optimizing storage through object auto-tiering.

### Source excerpt

Since the Pacific release, Lua scripting in Ceph's RADOS Gateway (RGW) has provided users the ability to interpolate a single script to upload operations per request context and tenant. This way of working might be completely fine for a storage deployment with limited scripting customizations. However, script management becomes increasingly difficult as more than one team wants to get involved in managing the Lua script within the same context and tenant. For this reason, we've released a new feature in RGW allowing you to manage more than one Lua script at a time. In this blog, we'll go over a couple of examples to walk you through how this feature can help your team to reduce runtime errors and lower developer friction when managing Lua scripts in RGW. To begin, we will create a script to enforce a bucket security control and then add another script to demonstrate the new feature. Script 1: Bucket security ¶ Let's suppose we are part of a security team and want to mitigate the risk of ransomware threats happening on our storage platform. One possible way to achieve this is to implement a Write Once, Read Many (WORM) strategy to add an object lock onto any newly created bucket. By using an object lock, we can add a constraint to write objects to disk only once, ensuring that an infected client cannot delete or override objects at a later time. To set our WORM strategy, we can create a Lua script in the prerequest context that aborts when a create_bucket operation is made without the write-once (object lock) requirement. objectlock.lua -- enforcing object lock on bucket creation if Request.RGWOp == "create_bucket" and Request.HTTP.Metadata["x-amz-bucket-object-lock-enabled"] ~= "true" then RGWDebugLog("object lock is missing on bucket: " .. Request.Bucket.Name) Request.Response.Message = "Bucket must have object lock enabled" return RGW_ABORT_REQUEST end You can create a new objectlock.lua file with the contents above and run the CLI commands below to upload the scr

## Jenkins Series

DevFeed: [Jenkins Series](<https://devfeed.tech/articles/jenkins-series-4532.md>)

Original publisher: [Read original article](<https://feeds.feedblitz.com/~/953170670/0/baeldung/ops~Jenkins-Series>)

Author: baeldung

Published: 2026-04-03T12:36:55Z

Content type: tutorial

Language: en

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

Topics: [Jenkins](<https://devfeed.tech/topics/jenkins.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Groovy](<https://devfeed.tech/topics/groovy.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Server](<https://devfeed.tech/topics/server.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [administration](<https://devfeed.tech/tags/administration.md>), [automation](<https://devfeed.tech/tags/automation.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [docker](<https://devfeed.tech/tags/docker.md>), [jenkins](<https://devfeed.tech/tags/jenkins.md>), [jenkins-series](<https://devfeed.tech/tags/jenkins-series.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [series](<https://devfeed.tech/tags/series.md>), [server](<https://devfeed.tech/tags/server.md>)

### AI overview

A tutorial series covering Jenkins pipelines, job management, administration, Groovy scripting, parameterized and parallel builds, and server maintenance across the CI/CD lifecycle.

### Source excerpt

This tutorial provides an overview of Jenkins pipelines, job management, and administration. Related Stories Git Series Troubleshoot Docker Daemon Connection Issues in Jenkins Troubleshooting Jenkins 403 No Valid Crumb in Request Error

## Playground and java.time Support in Codename One

DevFeed: [Playground and java.time Support in Codename One](<https://devfeed.tech/articles/playground-and-java-time-support-in-codename-one-19438.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/playground-and-java-time-support/>)

Author: Shai Almog

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

Content type: release

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [Scripting](<https://devfeed.tech/topics/scripting.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Java](<https://devfeed.tech/topics/java.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [java](<https://devfeed.tech/tags/java.md>), [playground](<https://devfeed.tech/tags/playground.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Codename One adds a new Playground for rapid UI scripting, prototyping, and sharing runnable examples, along with built-in support for the java.time API to improve modern Java compatibility.

### Source excerpt

Codename One now includes a new Playground for rapid UI scripting and iteration, and adds built-in support for the java.time API.

## ClickPy at 2 Trillion rows: Scaling ingestion and fixing the past

DevFeed: [ClickPy at 2 Trillion rows: Scaling ingestion and fixing the past](<https://devfeed.tech/articles/clickpy-at-2-trillion-rows-scaling-ingestion-and-fixing-the-past-5184.md>)

Original publisher: [Read original article](<https://clickhouse.com/blog/clickpy-2-trillion-rows>)

Author: Lionel Palacin

Published: 2026-01-21T10:48:32Z

Content type: article

Language: en

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

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [data](<https://devfeed.tech/topics/data.md>), [Python](<https://devfeed.tech/topics/python.md>), [BigQuery](<https://devfeed.tech/topics/bigquery.md>), [dataset](<https://devfeed.tech/topics/dataset.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>), [Code](<https://devfeed.tech/topics/code.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>)

Tags: [bigquery](<https://devfeed.tech/tags/bigquery.md>), [blog](<https://devfeed.tech/tags/blog.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [cloud-storage](<https://devfeed.tech/tags/cloud-storage.md>), [code](<https://devfeed.tech/tags/code.md>), [data](<https://devfeed.tech/tags/data.md>), [database](<https://devfeed.tech/tags/database.md>), [operational](<https://devfeed.tech/tags/operational.md>), [python](<https://devfeed.tech/tags/python.md>), [scale](<https://devfeed.tech/tags/scale.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

ClickPy has grown to more than 2 trillion Python package-download rows dating back to 2011. This article describes replacing a custom, cron-based ingestion script with ClickPipes and correcting historical data while keeping the service available and ingestion uninterrupted.

### Source excerpt

A look at how ClickPy handles over 2 trillion Python package downloads, from ingestion redesign to fixing historical data at scale.

## Embedding Wren in Hare

DevFeed: [Embedding Wren in Hare](<https://devfeed.tech/articles/embedding-wren-in-hare-20796.md>)

Original publisher: [Read original article](<https://drewdevault.com/blog/Hare-and-Wren/>)

Author: August

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

Content type: article

Language: en

Sources: [Drew DeVault](<https://devfeed.tech/sources/drew-devault.md>)

Topics: [Scripting](<https://devfeed.tech/topics/scripting.md>), [API](<https://devfeed.tech/topics/api.md>), [Library](<https://devfeed.tech/topics/library.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [C](<https://devfeed.tech/topics/c.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [cli](<https://devfeed.tech/tags/cli.md>), [library](<https://devfeed.tech/tags/library.md>), [scripting](<https://devfeed.tech/tags/scripting.md>)

### AI overview

The article introduces hare-wren, an interface for embedding the Wren scripting language in Hare programs. It describes its Hare-oriented wrapper around the Wren C API, bidirectional calls between Hare and Wren, an optional asynchronous runtime and standard library, file and process-environment features, third-party module loading, and command-line access without a REPL.

### Source excerpt

I've been on the lookout for a scripting language which can be neatly embedded into Hare programs. Perhaps the obvious candidate is Lua - but I'm not particularly enthusiastic about it. When I was evaluating the landscape of tools which are "like Lua, but not Lua", I found an interesting contender: Wren. I found that Wren punches far above its weight for such a simple language. It's object oriented, which, you know, take it or leave it depending on your use-case, but it's very straightforwardly interesting for what it is. I found a few things to complain about, of course - its scope rules are silly, the C API has some odd limitations here and there, and in my opinion the "standard library" provided by wren CLI is poorly designed. But, surprisingly, my list of complaints more or less ends there, and I was excited to build a nice interface to it from Hare. The result is hare-wren. Check it out! The basic Wren C API is relatively straightforwardly exposed to Hare via the wren module, though I elected to mold it into a more idiomatic Hare interface rather than expose the C API directly to Hare. You can use it something like this: use wren; export fn main() void = { const vm = wren::new(wren::stdio_config); defer wren::destroy(vm); wren::interpret(vm, "main", ` System.print("Hello world!") `)!; }; $ hare run -lc main.ha Hello world! Calling Hare from Wren and vice-versa is also possible with hare-wren, of course. Here's another example: use fmt; use wren; export fn main() void = { let config = *wren::stdio_config; config.bind_foreign_method = &bind_foreign_method; const vm = wren::new(&config); defer wren::destroy(vm); wren::interpret(vm, "main", ` class Example { foreign static greet(user) } System.print(Example.greet("Harriet")) `)!; }; fn bind_foreign_method( vm: *wren::vm, module: str, class_name: str, is_static: bool, signature: str, ) nullable *wren::foreign_method_fn = { const is_valid = class_name == "Example" && signature == "greet(_)" && is_static; if (!is_vali

## openHAB 5.0 Release

DevFeed: [openHAB 5.0 Release](<https://devfeed.tech/articles/openhab-5-0-release-16734.md>)

Original publisher: [Read original article](<https://openhab.org/blog/2025-07-21-openhab-5-0-release.html>)

Published: 2025-07-21T19:00:00Z

Content type: release

Language: en

Sources: [openHAB](<https://devfeed.tech/sources/openhab.md>)

Topics: [releases](<https://devfeed.tech/topics/releases.md>), [Matter](<https://devfeed.tech/topics/matter.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [Code](<https://devfeed.tech/topics/code.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [features](<https://devfeed.tech/tags/features.md>), [github](<https://devfeed.tech/tags/github.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [java](<https://devfeed.tech/tags/java.md>), [new-features](<https://devfeed.tech/tags/new-features.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [release](<https://devfeed.tech/tags/release.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

openHAB 5.0 is a major release with Matter support, a new Python Scripting add-on, upgraded dependencies, Java 21, virtual threads, and 64-bit-only support. The release includes breaking changes and contributions across the project's repositories.

### Source excerpt

As this is a major release, we have a number of breaking changes that are required for the new features and improvements. So, please have a look at our official release notes to learn about all breaking changes, new add-ons, enhancements and fixes.

## Using Lua as ESP-IDF Component with ESP32

DevFeed: [Using Lua as ESP-IDF Component with ESP32](<https://devfeed.tech/articles/using-lua-as-esp-idf-component-with-esp32-13968.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/using-lua-as-esp-idf-component-with-esp32/>)

Author: John Lee

Published: 2024-10-22T00:00:00Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [Lua](<https://devfeed.tech/topics/lua.md>), [ESP-IDF](<https://devfeed.tech/topics/esp-idf.md>), [ESP32](<https://devfeed.tech/topics/esp32.md>), [Embedded Systems](<https://devfeed.tech/topics/embedded-systems.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [component](<https://devfeed.tech/tags/component.md>), [embedded-systems](<https://devfeed.tech/tags/embedded-systems.md>), [esp-idf](<https://devfeed.tech/tags/esp-idf.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [esp32-c3](<https://devfeed.tech/tags/esp32-c3.md>), [firmware](<https://devfeed.tech/tags/firmware.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [lua](<https://devfeed.tech/tags/lua.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [risc-v](<https://devfeed.tech/tags/risc-v.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [spiffs](<https://devfeed.tech/tags/spiffs.md>)

### AI overview

This tutorial explains how to integrate Lua as an ESP-IDF component in ESP32 projects and run Lua scripts from the SPIFFS filesystem. It covers the example project, cross-architecture support for ESP32 and ESP32-C3, configurable Lua stack size, and memory monitoring while Wi-Fi is enabled.

### Source excerpt

Lua is a lightweight and powerful scripting language, making it ideal for use in embedded systems like the ESP32. By integrating Lua into your ESP-IDF project, you can execute scripts directly on the ESP32, offering a flexible way to manage application behavior without recompiling the entire firmware. This guide walks through how to set up Lua as an ESP-IDF component, with a focus on running Lua scripts from the filesystem.

## A hacking hat-trick: previewing three PortSwigger Research publications coming to DEF CON & Black Hat USA

DevFeed: [A hacking hat-trick: previewing three PortSwigger Research publications coming to DEF CON & Black Hat USA](<https://devfeed.tech/articles/a-hacking-hat-trick-previewing-three-portswigger-research-publications-coming-to-def-con-black-hat-usa-7666.md>)

Original publisher: [Read original article](<https://portswigger.net/research/a-hacking-hat-trick-previewing-three-portswigger-research-publications-coming-to-def-con-amp-black-hat-usa>)

Author: James Kettle

Published: 2024-07-02T12:57:08Z

Content type: article

Language: en

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

Topics: [Hacking](<https://devfeed.tech/topics/hacking.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [ctf](<https://devfeed.tech/topics/ctf.md>)

Tags: [attacks](<https://devfeed.tech/tags/attacks.md>), [automated](<https://devfeed.tech/tags/automated.md>), [black-hat](<https://devfeed.tech/tags/black-hat.md>), [ctf](<https://devfeed.tech/tags/ctf.md>), [hacking](<https://devfeed.tech/tags/hacking.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [releases](<https://devfeed.tech/tags/releases.md>), [research](<https://devfeed.tech/tags/research.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [side-channel](<https://devfeed.tech/tags/side-channel.md>)

### AI overview

PortSwigger Research previews three publications scheduled for Black Hat USA and DEF CON 32. The article highlights practical timing attacks using timing oracles, including techniques for uncovering server secrets, masked misconfigurations, blind data-structure injection, hidden routes, and invisible attack surfaces. It also describes open-source tools for automated exploitation and attack scripting, a CTF, and a forthcoming session on the challenges of parsing email addresses.

### Source excerpt

We're delighted to announce three major research releases from PortSwigger Research will be published at both Black Hat USA and DEF CON 32. In this post, we'll offer a quick teaser of each talk, info

## Node.js script to run multiple commands in parallel

DevFeed: [Node.js script to run multiple commands in parallel](<https://devfeed.tech/articles/node-js-script-to-run-multiple-commands-in-parallel-37322.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/node-script-to-run-multiple-commands-in-parallel/>)

Author: Stanko

Published: 2024-06-13T00: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>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [commands](<https://devfeed.tech/tags/commands.md>), [concurrently](<https://devfeed.tech/tags/concurrently.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [script](<https://devfeed.tech/tags/script.md>)

### AI overview

This tutorial presents a small Node.js script for running multiple commands in parallel. It explains the requirements, including stopping all commands when one fails and prefixing each command's output with color-coded names, and shows how to use and implement the script.

### Source excerpt

If you encountered a case where you wanted to run multiple commands in parallel, the usual suggestion is to use the shell's & operator to send commands to the background. This approach kind of works, but it has its quirks. I often ended up with a process hanging in the background, multiple outputs being mangled, or the output of some commands completely missing. Bash scripting wizards can probably solve all of these issues, but I turned to JavaScript, as it is the language I know best. If you're eager to see the code, feel free to jump to it. Why not an existing library? # In my professional projects, I would probably just use concurrently. However, this time I decided to write a poor man's version of it. Although simple and basic, it covers my specific use case. It was mostly for learning purposes, but sometimes I create things from scratch for fun or to avoid installing a large library for a tiny piece of it. My requirements # Run multiple commands in parallel. Terminate all of the commands if any of them fail. Prefix each command's output with its color-codedIn the finished version, I added an option to disable colors, as I know some people really don't like colors in their terminals name. I also decided to keep it simple: No CLI version to avoid parsing the arguments. Name (prefix) should be a mandatory input. Usage # To use the script, you need to import it and pass the list of your commands (along with their names) to it. Like this: import { Runner } from './runner.js'; const tasks = [ { name: 'sass', command: 'npm run sass' }, { name: 'build', command: 'npm run build' }, ]; new Runner(tasks); This is how the script looks in action: Source code # Here is the complete script: import { spawn } from 'child_process'; export class Runner { tasks = []; exiting = false; colors = [ '\x1b[33m', // yellow '\x1b[34m', // blue '\x1b[35m', // magenta '\x1b[36m', // cyan ]; /** * Create a new runner. * @param {Object[]} tasks - List of tasks to run in parallel. * @param {st

## I am very excited about using nushell everyday

DevFeed: [I am very excited about using nushell everyday](<https://devfeed.tech/articles/i-am-very-excited-about-using-nushell-everyday-31879.md>)

Original publisher: [Read original article](<https://okmanideep.me/i-am-very-excited-about-using-nushell-everyday/>)

Author: Manideep Polireddi

Published: 2023-08-28T13:00:00Z

Content type: opinion

Language: en

Sources: [@okmanideep](<https://devfeed.tech/sources/okmanideep.md>)

Topics: [Structured-data](<https://devfeed.tech/topics/structured-data.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [PowerShell](<https://devfeed.tech/topics/powershell.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [here](<https://devfeed.tech/tags/here.md>), [nushell](<https://devfeed.tech/tags/nushell.md>), [optimizing](<https://devfeed.tech/tags/optimizing.md>), [plugins](<https://devfeed.tech/tags/plugins.md>), [powershell](<https://devfeed.tech/tags/powershell.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

The author explains why Nushell appeals to them as a structured-data shell combining aspects of Bash and PowerShell. They compare Nushell's table-oriented pipelines and clearer property-based sorting with Unix-style commands, while noting that startup and new-terminal performance remain slow despite profiling and optimization.

### Source excerpt

From the moment I saw the intro video, I found it very appealing. It takes the best of bash and powershell

## Performance impacts of Apollo Router customizations

DevFeed: [Performance impacts of Apollo Router customizations](<https://devfeed.tech/articles/performance-impacts-of-apollo-router-customizations-23479.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/performance-impact-of-customizing-the-apollo-router>)

Author: Lucas Leadbetter

Published: 2023-07-10T10:00:00Z

Content type: article

Language: en

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

Topics: [configuration](<https://devfeed.tech/topics/configuration.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Script](<https://devfeed.tech/topics/script.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Jule](<https://devfeed.tech/topics/jule.md>)

Tags: [apollo](<https://devfeed.tech/tags/apollo.md>), [backend](<https://devfeed.tech/tags/backend.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [curl](<https://devfeed.tech/tags/curl.md>), [docker](<https://devfeed.tech/tags/docker.md>), [github](<https://devfeed.tech/tags/github.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [latency](<https://devfeed.tech/tags/latency.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [performance](<https://devfeed.tech/tags/performance.md>), [router](<https://devfeed.tech/tags/router.md>), [scripting](<https://devfeed.tech/tags/scripting.md>)

### AI overview

This article examines the performance overhead of three Apollo Router extensibility options: configuration, Rhai scripting, and external coprocessing. It reports that configuration generally performs best, followed by Rhai scripting, while external coprocessing adds about 350 microseconds of overhead. Results can vary with factors such as programming language, task complexity, network proximity, and host machine.

### Source excerpt

The Apollo Router features three customization options out of the box to adjust behavior: configuration options, Rhai scripting, and external coprocessing. We refer to these as extensibility options. Extensibility of the Router is one of its primary strengths and is a critical feature for many organizations large and small. Understanding the performance implications of these options is important as the Router is designed for performance and serves as the entry point to your supergraph.

## Using Kotlin Scripts and GitHub Copilot for Quick Command-Line Tasks

DevFeed: [Using Kotlin Scripts and GitHub Copilot for Quick Command-Line Tasks](<https://devfeed.tech/articles/supercharge-kscript-with-github-copilot-25278.md>)

Original publisher: [Read original article](<https://kau.sh/blog/kscript-copilot/>)

Author: Kaushik Gopal

Published: 2023-05-07T01:25:34Z

Content type: tutorial

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [GitHub Copilot](<https://devfeed.tech/topics/github-copilot.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [Scripting, bash](<https://devfeed.tech/topics/scripting-bash.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [github](<https://devfeed.tech/tags/github.md>), [github-copilot](<https://devfeed.tech/tags/github-copilot.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ide](<https://devfeed.tech/tags/ide.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

This tutorial presents Kotlin scripts as an alternative to Bash for command-line automation and demonstrates using GitHub Copilot to build a script that processes Markdown front matter. The author reports completing the example in less than 4½ minutes, including IDE autocomplete setup.

### Source excerpt

One of the gifts we got from Kotlin 1.3.70 was the ability to effortlessly run a kscript (Kotlin script) from the command line. All you need to do is add the suffix .main.kts. Seriously, this is all you need to do: brew install kotlin echo '#!/usr/bin/env kotlin' > hello-world.main.kts chmod +x hello.main.kts ./hello.main.kts # 💥 With this 0 friction setup, there's little reason for me to ever write a bash script again. I get to write my script in Kotlin -- a modern & beautiful language. But slap on Github Copilot and I think we've unlocked the holy grail of quick scripting. To prove my point, I recorded a video live coding a script tackling a moderately involved task. Here's what I wanted to do: Take a directory path as argument Make sure it's valid and has at least one .md (markdown) file in it Search the front matter for the "categories" array pluck all the categories from all the files de-duplicate, sort and print them out The entire thing took less than 4½ minutes. This is including me figuring out how to get autocomplete working in my IDE, restarting it etc. Sure I could try to wield a one-line command and do the same thing for this use case but it's so much nicer in Kotlin. If you're intrigued, feel free to checkout my github repo of kscripts. I try to tackle a variety of common use cases in there P.S: The text snippet I use in there kscript;; basically gives me a starter hello world template. Not cheating, I promise.

## Pleasant debugging with GDB and DDD

DevFeed: [Pleasant debugging with GDB and DDD](<https://devfeed.tech/articles/pleasant-debugging-with-gdb-and-ddd-21492.md>)

Original publisher: [Read original article](<https://begriffs.com/posts/2022-07-17-debugging-gdb-ddd.html>)

Published: 2022-07-17T00:00:00Z

Content type: article

Language: en

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

Topics: [debugging](<https://devfeed.tech/topics/debugging.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Text-based user interface](<https://devfeed.tech/topics/tui.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [ddd](<https://devfeed.tech/tags/ddd.md>), [debugger](<https://devfeed.tech/tags/debugger.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [gdb](<https://devfeed.tech/tags/gdb.md>), [linux](<https://devfeed.tech/tags/linux.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

This article presents configuration and scripting techniques for making GDB debugging more pleasant on Linux and BSD systems. It compares several interface-customization approaches and focuses on using the Data Display Debugger (DDD), including workarounds for its compatibility problems with recent GDB versions and its remote SSH support.

### Source excerpt

2022-07-17 GDB is an old and ubiquitous debugger for Linux and BSD systems that has extensive language, processor, and binary format support. Its interface is a little cryptic, but learning GDB pays off. This article is a set of miscellaneous configuration and scripting tricks that illustrate reusable principles. It assumes you're familiar with the basics of debugging, like breakpoints, stepping, inspecting variables, etc. Table of contents By default, GDB provides a terse line-based terminal.

## Miller: Command-Line Data Processing for CSV, TSV, JSON, and JSON Lines

DevFeed: [Miller: Command-Line Data Processing for CSV, TSV, JSON, and JSON Lines](<https://devfeed.tech/articles/miller-a-swiss-army-chainsaw-for-csv-data-data-science-and-data-munging-28153.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/data_science/2022/05/13/miller-a-swiss-army-chainsaw-for-csv-data-data-science-and-data-munging.html>)

Author: Fuzzygroup

Published: 2022-05-13T16:54:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [CSV](<https://devfeed.tech/topics/csv.md>), [Data Science](<https://devfeed.tech/topics/data-science.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [command-line](<https://devfeed.tech/tags/command-line.md>), [commands](<https://devfeed.tech/tags/commands.md>), [csv](<https://devfeed.tech/tags/csv.md>), [data-science](<https://devfeed.tech/tags/data-science.md>), [json](<https://devfeed.tech/tags/json.md>), [miller](<https://devfeed.tech/tags/miller.md>), [perl](<https://devfeed.tech/tags/perl.md>), [python](<https://devfeed.tech/tags/python.md>), [ruby](<https://devfeed.tech/tags/ruby.md>)

### AI overview

A practical tutorial introducing Miller, a command-line tool for querying, shaping, and reformatting CSV, TSV, JSON, and JSON Lines data. It covers installation, command structure, help commands, output redirection, and examples such as listing and selecting lines from CSV files.

### Source excerpt

Every so often I run into a tool which just impresses me. This time it is Miller. And when I find such a tool, I write up a blog post to firm up my learnings. Here is the official description: Miller is a command-line tool for querying, shaping, and reformatting data files in various formats including CSV, TSV, JSON, and JSON Lines. The people that know me know that I've spent literal man years working with textual data, often CSV format - I first got started at this using Awk, specifically the NTERGAID version of Awk called HyperAwk and then I've done the Perl dance, spent time in the bowels of the abyss that is Sed, PHP, Python and Ruby. A lot of the ad hoc scripting I've written over the years can be accomplished via Miller and that is a lovely change. Just as a note, Miller's docs are really quite excellent and it is a sophisticated tool. This blog post really only touches a bit on what Miller is capable of. If you don't find what you are looking here then hit the docs. Installation I'm on a Mac so all this took was: brew install miller To confirm this works, just type: mlr --version and you should get back something like 6.x.y. I got: mlr 6.2.0 General Command Structure and Operation Miller is a command line tool that operates with commands like this: mlr --csv sort -f name input.csv Basically the syntax amounts to: input type command verb (sort in this case) option flag input source Getting Help The -help flag gives you help: mlr --help Usage: mlr [flags] {verb} [verb-dependent options ...] {zero or more file names} If zero file names are provided, standard input is read, e.g. mlr --csv sort -f shape example.csv Output of one verb may be chained as input to another using "then", e.g. mlr --csv stats1 -a min,mean,max -f quantity then sort -f color example.csv Please see 'mlr help topics' for more information. Please also see https://miller.readthedocs.io The mlr help topics command is quite informative: mlr help topics Type 'mlr help {topic}' for any of the fol

## Scripting Languages and Compiled Languages in WebAssembly

DevFeed: [Scripting Languages and Compiled Languages in WebAssembly](<https://devfeed.tech/articles/scripting-languages-and-compiled-languages-in-webassembly-15341.md>)

Original publisher: [Read original article](<https://www.fermyon.com/blog/scripts-vs-compiled-wasm>)

Author: Matt Butcher

Published: 2022-03-07T21:51:54Z

Content type: article

Language: en

Sources: [Fermyon - Experience the next wave of cloud computing.](<https://devfeed.tech/sources/fermyon-experience-the-next-wave-of-cloud-computing.md>)

Topics: [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Python](<https://devfeed.tech/topics/python.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [C](<https://devfeed.tech/topics/c.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Go](<https://devfeed.tech/topics/go.md>), [Rust](<https://devfeed.tech/topics/rust.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [go](<https://devfeed.tech/tags/go.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [python](<https://devfeed.tech/tags/python.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

This article surveys WebAssembly across scripting languages such as JavaScript, Python, and Ruby and compiled languages such as C, C++, Go, and Rust, highlighting differences in how developers traditionally work with these language groups.

### Source excerpt

The promise of WebAssembly is that it can be a common runtime for all sorts of languages. But there are differences between how we traditionally write in scripting languages (JavaScript, Python, Ruby) versus compiled languages (C/C++, Go, Rust). In this post, we survey the WebAssembly landscape to see what is happening along these fronts.

## Why I migrated to the Fish Shell

DevFeed: [Why I migrated to the Fish Shell](<https://devfeed.tech/articles/why-i-migrated-to-the-fish-shell-37715.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/fish/>)

Author: Carlos Alexandro Becker

Published: 2020-12-07T00:00:00Z

Content type: opinion

Language: en

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

Topics: [friendly interactive shell](<https://devfeed.tech/topics/fish.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [dotfiles](<https://devfeed.tech/topics/dotfiles.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Environment Variables](<https://devfeed.tech/topics/environment-variables.md>), [lazy loading](<https://devfeed.tech/topics/lazy-loading.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>)

Tags: [aliases](<https://devfeed.tech/tags/aliases.md>), [bash](<https://devfeed.tech/tags/bash.md>), [environment-variables](<https://devfeed.tech/tags/environment-variables.md>), [lazy-loading](<https://devfeed.tech/tags/lazy-loading.md>), [plugins](<https://devfeed.tech/tags/plugins.md>), [porting](<https://devfeed.tech/tags/porting.md>), [prompt](<https://devfeed.tech/tags/prompt.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [shell](<https://devfeed.tech/tags/shell.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

The author explains migrating dotfiles from Zsh to Fish, emphasizing Fish's startup performance, universal variables, lazy loading, and built-in features such as syntax highlighting, autosuggestions, and man-page completions. The article also notes differences from POSIX shells and describes the author's plugin setup.

### Source excerpt

Back in June, I started porting my dotfiles from ZSH to Fish. Here's why.

## Investigating AVX-512 Frequency Transitions on Intel CPUs

DevFeed: [Investigating AVX-512 Frequency Transitions on Intel CPUs](<https://devfeed.tech/articles/gathering-intel-on-intel-avx-512-transitions-28483.md>)

Original publisher: [Read original article](<https://travisdowns.github.io/blog/2020/01/17/avxfreq1.html>)

Author: Travis Downs (travis.downs@gmail.com)

Published: 2020-01-17T00:00:00Z

Content type: article

Language: en

Sources: [Performance Matters](<https://devfeed.tech/sources/performance-matters.md>)

Topics: [intel](<https://devfeed.tech/topics/intel.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Code](<https://devfeed.tech/topics/code.md>), [Script](<https://devfeed.tech/topics/script.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Shell](<https://devfeed.tech/topics/shell.md>)

Tags: [avx](<https://devfeed.tech/tags/avx.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [blog](<https://devfeed.tech/tags/blog.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [code](<https://devfeed.tech/tags/code.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [intel](<https://devfeed.tech/tags/intel.md>), [linux](<https://devfeed.tech/tags/linux.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [performance](<https://devfeed.tech/tags/performance.md>), [python](<https://devfeed.tech/tags/python.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [shell](<https://devfeed.tech/tags/shell.md>), [tests](<https://devfeed.tech/tags/tests.md>), [uarch](<https://devfeed.tech/tags/uarch.md>)

### AI overview

This article investigates the detailed behavior of AVX and AVX-512 frequency transitions on Intel CPUs using target tests and sampled performance metrics. It describes the test structure and provides accompanying source code and data-generation scripts.

### Source excerpt

Investigating some details of SIMD related frequency transitions on Intel CPUs.

## Creating valid and accessible links

DevFeed: [Creating valid and accessible links](<https://devfeed.tech/articles/creating-valid-and-accessible-links-9379.md>)

Original publisher: [Read original article](<https://a11yproject.com/posts/creating-valid-and-accessible-links/>)

Author: Emma Patricios

Published: 2019-02-15T00:00:00Z

Content type: article

Language: en

Sources: [The A11Y Project](<https://devfeed.tech/sources/the-a11y-project.md>)

Topics: [HTML](<https://devfeed.tech/topics/html.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [web-standards](<https://devfeed.tech/topics/web-standards.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [css](<https://devfeed.tech/tags/css.md>), [html](<https://devfeed.tech/tags/html.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

This article explains how to create valid and accessible HTML links. It covers required link structure, meaningful link text, cautious use of the title attribute, visible keyboard focus states, and preserving native keyboard behavior.

### Source excerpt

The anchor element is often cited as the main building block of the World Wide Web. It is used to create a link to other pages, to anchors within the same page, to other resources (such as a PDF) or to an email address. How can we make sure they are accessible to everyone? Start with valid HTML To be a valid link it must have: A href attribute: The location of the anchor, page or resource. Link content Text describing where the link is going, this could be plain text or the alt attribute of an image. Opening and closing tags. Write helpful link text Common unhelpful link texts are 'click here', 'read more' and 'link'. These are problematic because when a person using a screen reader is navigating using links alone these will be read out of context. Where would you expect any of those three links to go if you heard them? It's impossible to know. Think about restructuring your sentence to remove 'click here' or 'link' and then surround the meaningful part with the link: <!-- bad --> To see our documentation <a href="/README.md">click here</a>. <!-- better --> We have made our <a href="/README.md">documentation</a> available. "Read more" can be fixed by including what we will be reading more about: <!-- bad --> <a href="/full-article">Read more</a>. <!-- better --> <a href="/full-article">Read more - Accessible Landmarks</a> What about the title attribute? The title attribute is not exposed by all browsers in an accessible way meaning that people using keyboards and touch-only devices will likely never see that information. If you want to hide content from mobile and tablet users as well as assistive tech users and keyboard only users, use the title attribute. Using the HTML title attribute - TTPGi It is therefore not recommended to use the title attribute on <a> elements. If you do use it don't double up on the accessible name of the link, this can produce unnecessary duplicate announcements to some screen readers. Focus state and keyboard Some developers/designers se

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