ES2024; EditorConfig; Obselete Command Line Tools
I’m gonna have to write a script and systemd scheduled job runner to tell me when a post is not published, aren’t I?
Three completely unrelated resources, today. The middle one was a welcome discovery for me, but I’m pretty sure more than a few readers are likely using it already.
TL;DR
(This is an AI-generated summary of today’s Drop using Sonnet via Perplexity.)
- ES2024 introduces new JavaScript features including top-level await, Promise.withResolvers(), Object.groupBy(), and enhanced regular expression functionality with the /v flag. [https://tc39.es/ecma262/2024/]
- EditorConfig is a tool for maintaining consistent coding styles across different editors and IDEs, using a simple .editorconfig file format to define rules for indentation, line endings, and more. [https://editorconfig.org]
- Several classic Linux command-line tools are now considered obsolete, with modern alternatives recommended, such as tmux for screen, ip for ifconfig, and ss for netstat. [https://linuxexpert.org/obsolete-command-line-tools-of-linux/]
ES2024

ECMAScript 2024 has been out for a bit and I thought it might be useful to drop a short list of what’s officially in it. (We’ve covered some candidate entries in previoud Drops, including the much anticipatd Temporal API.)
One of the most notable additions is the top-level await, which lets us use await directly at the module level without needing to wrap it in an async function. This change simplifies asynchronous code and makes it more readable.
Another significant update is the introduction of Promise.withResolvers(), a new static method on Promise. This method creates a promise and exposes its resolve and reject functions as separate references, offering greater external control over promise resolution and rejection.
JavaScripters and any data sci/vis folks who have to do some final data ops in JS-land will also likely adore the new Object.groupBy() and Map.groupBy() methods, which allow for grouping elements of an iterable or array based on a callback function. The Object.groupBy() method returns a plain object, while Map.groupBy() returns a Map, providing flexibility in how the grouped data is structured.
Regular expression functionality receives a boost with the new /v flag (unicodeSets), which introduces several enhancements. These include support for Unicode string properties, string literals in character classes, and set operations for character classes, making regular expressions more powerful and versatile.
ArrayBuffers now support resizing and transferring, while SharedArrayBuffers can be resized, but only to grow, not shrink. This update offers more flexibility in managing binary data in JavaScript.
String handling sees improvements with the introduction of two new methods: String.isWellFormed() and String.toWellFormed(). These methods help ensure that strings are well-formed with respect to Unicode encoding, enhancing the reliability of string manipulation.
In addition, the new Atomics.waitAsync() method provides asynchronous waiting on shared memory changes, which is particularly useful for communication between worker threads, enabling more efficient multi-threaded operations.
The Exploring JavaScript: ES2024 Edition‘s “New in ES2024” section has some examples, as does the W3Schools coverage of JavaScript ECMAScript 2024. “ES2024 is Here, Hurry Up to Learn” is especially well-done, too.
EditorConfig

I learned about EditorConfig whilst working on my DuckDB PCAP extension, and feel pretty daft for not knowing about it before. More so because I use 4-5 different editors on a regular basis. It’s a tool that helps maintain consistent coding styles across different editors and IDEs; it’s especially handy for multiple folks working on the same project. It consists of two main components: a file format for defining coding styles (known as .editorconfig files) and text editor plugins that read these files and apply the styles.
The .editorconfig files use a simple INI-like format, with sections and key-value pairs to define coding style rules. Common properties that can be set in these files include indent_style (whether to use tabs or spaces), indent_size, end_of_line (such as lf, cr, or crlf), charset, trim_trailing_whitespace, and insert_final_newline. These files are placed in project directories, and when opening a file, editors will look for .editorconfig files in the current directory and any parent directories. The rules are applied in a top-down manner, with closer or more specific rules taking precedence.
Scads of editors and IDEs either have built-in EditorConfig support or offer plugins that enable this functionality. EditorConfig works seamlessly with version control systems since the .editorconfig file can be committed with the project, ensuring consistent styles across all contributors.
And, EditorConfig is language-agnostic! So, it can be used for any type of text file.
I’ll def be using this from now on.
Obselete Command Line Tools

ngl: this one hurt, a bit
Several classic Linux command-line tools are now considered obsolete due to limitations in functionality, security, or compatibility with modern systems. “Exploring Obsolete Linux Command Line Tools and Modern Alternatives” has a rundown of these tools and their recommended replacements, but the TL;DR version of it is below:
screen→tmux: Better session management and more features.ifconfig→ip: More versatile for modern networking tasks.netstat→ss: Faster and more detailed network statistics.nslookup→digorhost: More comprehensive DNS querying.fdisk→gdiskorparted: Better support for GPT and large disks.route→ip route: More powerful routing table management.arp→ip neigh: Better management of ARP and neighbor cache entries.traceroute→mtr: Interactive, real-time network diagnostics.telnet→ssh: Secure, encrypted remote access.wget→curl(for some use cases): Broader protocol support and more options.
FWIW, you’ll find it hard to pry screen from my toolbox. Though, I have (begrudgingly) gotten used to ip.
Which Linux/macOS CLI command do you miss the most (or install via Homebrw/apt/yum/etc)?
FIN
Remember, you can follow and interact with the full text of The Daily Drop’s free posts on Mastodon via @dailydrop.hrbrmstr.dev@dailydrop.hrbrmstr.dev ☮️
Leave a reply to Drop #526 (2024-09-09): Monday Morning Grab Bag Misfire – hrbrmstr's Daily Drop Cancel reply