The author argues that man pages themselves are a valuable and well-structured source of information, contrary to popular complaints. The problem, they contend, lies with the default man
reader, which uses less, hindering navigation and readability. They suggest alternatives like mandoc
with a pager like less -R
or specialized man page viewers for a better experience. Ultimately, the author champions the efficient and comprehensive nature of man pages when presented effectively, highlighting their consistent organization and advocating for improved tooling to access them.
This blog post explores the architecture and evolution of Darwin, Apple's open-source operating system foundation, and its XNU kernel. It explains how Darwin, built upon the Mach microkernel, incorporates components from BSD and Apple's own I/O Kit. The post details the hybrid kernel approach of XNU, combining the message-passing benefits of a microkernel with the performance advantages of a monolithic kernel. It discusses key XNU subsystems like the process manager, memory manager, file system, and networking stack, highlighting the interplay between Mach and BSD layers. The post also traces Darwin's history, from its NeXTSTEP origins through its evolution into macOS, iOS, watchOS, and tvOS, emphasizing the platform's adaptability and performance.
Hacker News users generally praised the article for its clarity and depth in explaining a complex topic. Several commenters with kernel development experience validated the information presented, noting its accuracy and helpfulness for understanding the evolution of XNU. Some discussion arose around specific architectural choices made by Apple, including the Mach microkernel and its interaction with the BSD environment. One commenter highlighted the performance benefits of the hybrid kernel approach, while others expressed interest in the challenges of maintaining such a system. A few users also pointed out areas where the article could be expanded, such as delving further into I/O Kit details and exploring the security implications of the XNU architecture.
The Unix Magic Poster provides a visual guide to essential Unix commands, organized by category and interconnected to illustrate their relationships. It covers file and directory manipulation, process management, text processing, networking, and system information retrieval, aiming to be a quick reference for both beginners and experienced users. The poster emphasizes practical usage by showcasing common command combinations and options, effectively demonstrating how to accomplish various tasks on a Unix-like system. Its interconnectedness highlights the composability and modularity that are central to the Unix philosophy, encouraging users to combine simple commands into powerful workflows.
Commenters on Hacker News largely praised the Unix Magic poster and its annotated version, finding it both nostalgic and informative. Several shared personal anecdotes about their early experiences with Unix and how resources like this poster were invaluable learning tools. Some pointed out specific commands or sections they found particularly useful or interesting, like the explanation of tee
or the history of different shells. A few commenters offered minor corrections or suggestions for improvement, such as adding more context around certain commands or expanding on the networking section. Overall, the sentiment was overwhelmingly positive, with many expressing appreciation for the effort put into creating and annotating the poster.
The order of files within /etc/ssh/sshd_config.d/
directly impacts how OpenSSH's sshd
daemon interprets its configuration. The daemon reads files alphabetically, applying settings sequentially. This means later files can override earlier ones, leading to unexpected behavior if not carefully managed. A common example is setting PasswordAuthentication no
in a later file, negating an earlier file's Match
block intended to allow password logins for specific users or groups. Therefore, understanding and controlling file order in this directory is crucial for predictable and reliable SSH configuration.
Hacker News users discuss the implications of sshd_config.d file ordering, mostly agreeing it's a surprising but important detail. Several commenters highlight the potential for misconfigurations and debugging difficulties due to this behavior. One user shares a personal anecdote of troubleshooting an issue caused by this very problem, emphasizing the practical impact. Others point out the lack of clear documentation on this behavior in the man pages, suggesting it's a common pitfall. The discussion also touches upon alternative configuration approaches, like using a single file or employing tools like Puppet or Ansible to manage configurations more predictably. Some users express surprise that later files override earlier ones, contrary to their expectations. The overall sentiment reinforces the importance of awareness and careful management of sshd configuration files.
InitWare is a portable init system inspired by systemd, designed to function across multiple operating systems, including Linux, FreeBSD, NetBSD, and OpenBSD. It aims to provide a familiar systemd-like experience and API on these platforms while remaining lightweight and configurable. The project utilizes a combination of C and POSIX sh for portability and reimplements core systemd functionalities like service management, device management, and login management. InitWare seeks to offer a viable alternative to traditional init systems on BSDs and a more streamlined and potentially faster option compared to full systemd on Linux.
Hacker News users discussed InitWare, a portable systemd fork, with a mix of skepticism and curiosity. Some questioned the value proposition, given the maturity and ubiquity of systemd, wondering if the project addressed a real need or was a solution in search of a problem. Others expressed concerns about maintaining compatibility across different operating systems and the potential for fragmentation. However, some commenters were intrigued by the possibility of a more lightweight and portable init system, particularly for embedded systems or specialized use cases where systemd might be overkill. Several users also inquired about specific technical details, like the handling of cgroups and service management, demonstrating a genuine interest in the project's approach. The overall sentiment leaned towards cautious observation, with many waiting to see if InitWare could carve out a niche or offer tangible benefits over existing solutions.
The Ncurses library provides an API for creating text-based user interfaces in a terminal-independent manner. It handles screen painting, input, and window management, abstracting away low-level details like terminal capabilities. Ncurses builds upon the older Curses library, offering enhancements and broader compatibility. Key features include window creation and manipulation, formatted output with color and attributes, handling keyboard and mouse input, and supporting various terminal types. The library simplifies tasks like creating menus, dialog boxes, and other interactive elements commonly found in text-based applications. By using Ncurses, developers can write portable code that works across different operating systems and terminal emulators without modification.
Hacker News users discussing the ncurses intro document generally praised it as a good resource, especially for beginners. Some appreciated the historical context provided, while others highlighted the clarity and practicality of the tutorial. One commenter mentioned using it to learn ncurses for a project, showcasing its real-world applicability. Several comments pointed out modern alternatives like FTXUI (C++) and blessed-contrib (JS), acknowledging ncurses' age but also its continued relevance and wide usage in existing tools. A few users discussed the benefits of text-based UIs, citing speed, remote accessibility, and lower resource requirements.
Lynx, a text-based web browser initially released in 1992, holds the distinction of being the oldest web browser still actively maintained. While its text-only interface might seem antiquated in today's graphical web, Lynx continues to be updated and supported, providing a unique and efficient way to access web content. Its simplicity makes it ideal for users with low bandwidth or accessibility needs, and its focus on text allows for a distraction-free browsing experience. The enduring development of Lynx demonstrates the enduring value of accessible and fundamental browsing technology.
The Hacker News comments discuss Lynx's enduring relevance and unique position as a text-based browser. Several commenters highlight its usefulness for tasks like scripting, accessing websites with complex JavaScript, or simply experiencing the web in a different way. Some appreciate its speed and efficiency, particularly on low-bandwidth connections. Others discuss its accessibility benefits for visually impaired users. A few commenters share their nostalgic memories of using Lynx in the early days of the internet. The discussion also touches on the technical aspects of Lynx's development and maintenance, including its portability and small codebase. A recurring theme is the contrast between Lynx's minimalist approach and the feature-bloated nature of modern browsers.
The blog post highlights the DEC Professional 380's strengths as a retrocomputing platform, specifically its ability to run the PRO/VENIX operating system. The author successfully installed and showcases PRO/VENIX 2.0 on the 380, demonstrating its impressive speed and functionality compared to the standard P/OS. The post emphasizes the sleek and responsive nature of PRO/VENIX, particularly its windowing system and overall performance improvements, making the 380 feel like a more modern machine. The author concludes that PRO/VENIX significantly enhances the user experience and opens up new possibilities for the DEC Professional 380.
Hacker News users discuss the DEC Professional 380, primarily focusing on its historical significance and the PRO/VENIX operating system. Several commenters reminisce about using the machine, praising its then-advanced features and performance. Some highlight its role in bridging the gap between minicomputers and personal computers. The robustness of the hardware and the positive experience with PRO/VENIX are recurring themes. There's also mention of its connection to the VT100 terminal and how the 380 compared to other systems like the IBM PC and the Apple II. A few commenters express surprise at the system's relative obscurity, given its capabilities.
"The Night Watch" argues that modern operating systems are overly complex and difficult to secure due to the accretion of features and legacy code. It proposes a "clean-slate" approach, advocating for simpler, more formally verifiable microkernels. This would entail moving much of the OS functionality into user space, enabling better isolation and fault containment. While acknowledging the challenges of such a radical shift, including performance concerns and the enormous effort required to rebuild the software ecosystem, the paper contends that the long-term benefits of improved security and reliability outweigh the costs. It emphasizes that the current trajectory of increasingly complex OSes is unsustainable and that a fundamental rethinking of system design is crucial to address the growing security threats facing modern computing.
HN users discuss James Mickens' humorous USENIX keynote, "The Night Watch," focusing on its entertaining delivery and insightful points about the complexities and frustrations of systems work. Several commenters praise Mickens' unique presentation style and the relatable nature of his anecdotes about debugging, legacy code, and the challenges of managing distributed systems. Some highlight specific memorable quotes and jokes, appreciating the blend of humor and technical depth. Others reflect on the timeless nature of the talk, noting how the issues discussed remain relevant years later. A few commenters express interest in seeing a video recording of the presentation.
The PuTTY iconography uses a stylized computer terminal displaying a kawaii face, representing the software's friendly nature despite its powerful functionality. The different icons distinguish PuTTY's various tools through color and added imagery. For instance, PSCP (secure copy) features a document with a downward arrow, while PSFTP (secure file transfer protocol) shows a pair of opposing arrows, symbolizing bi-directional transfer. The colors roughly correspond to the traffic light system, with green for connection tools (PuTTY, Plink), amber for file transfer tools (PSCP, PSFTP), and red for key generation (PuTTYgen). The overall design prioritizes simplicity and memorability over strict adherence to real-world terminal appearances or symbolic representation.
Hacker News users discuss Simon Tatham's blog post explaining the iconography of PuTTY's various tools. Several commenters express appreciation for Tatham's clear and detailed explanations, finding the rationale behind the choices both interesting and amusing. Some discuss alternative iconography they've encountered or imagined, while others praise Tatham's software and development style more generally, citing his focus on simplicity and functionality. A few users share anecdotes of misinterpreting the icons in the past, highlighting the effectiveness of Tatham's explanations in clarifying their meaning. The overall sentiment reflects admiration for Tatham's meticulous approach to software design, even down to the smallest details like icon choices.
This blog post presents a revised and more robust method for invoking raw OpenBSD system calls directly from C code, bypassing the standard C library. It improves upon a previous example by handling variable-length argument lists and demonstrating how to package those arguments correctly for system calls. The core improvement involves using assembly code to dynamically construct the system call arguments on the stack and then execute the syscall
instruction. This allows for a more general and flexible approach compared to hardcoding argument handling for each specific system call. The provided code example demonstrates this technique with the getpid()
system call.
Several Hacker News commenters discuss the impracticality of the raw syscall demo, questioning its real-world usefulness and emphasizing that libraries like libc exist for a reason. Some appreciated the technical depth and the exploration of low-level system interaction, viewing it as an interesting educational exercise. One commenter suggested the demo could be useful for specialized scenarios like writing a dynamic linker or a microkernel. There was also a brief discussion about the performance implications and the idea that bypassing libc wouldn't necessarily result in significant speed improvements, and might even be slower in some cases. Some users also debated the portability of the code and suggested alternative methods for achieving similar results.
This 1989 Xerox PARC paper argues that Unix, despite its strengths, suffers from a fragmented environment hindering programmer productivity. It lacks a unifying framework integrating tools and information, forcing developers to grapple with disparate interfaces and manually manage dependencies. The paper proposes an integrated environment, similar to Smalltalk or Interlisp, built upon a shared repository and incorporating features like browsing, version control, configuration management, and debugging within a consistent user interface. This would streamline the software development process by automating tedious tasks, improving code reuse, and fostering better communication among developers. The authors advocate for moving beyond the Unix philosophy of small, independent tools towards a more cohesive and interactive system that supports the entire software lifecycle.
Hacker News users discussing the Xerox PARC paper lament the lack of a truly integrated computing environment, even decades later. Several commenters highlight the continued relevance of the paper's criticisms of Unix's fragmented toolset and the persistent challenges in achieving seamless interoperability. Some point to Smalltalk as an example of a more integrated system, while others mention Lisp Machines and Oberon. The discussion also touches upon the trade-offs between integration and modularity, with some arguing that Unix's modularity, while contributing to its fragmentation, is also a key strength. Others note the influence of the internet and the web, suggesting that these technologies shifted the focus away from tightly integrated desktop environments. There's a general sense of nostalgia for the vision presented in the paper and a recognition of the ongoing struggle to achieve a truly unified computing experience.
Vtm is a terminal-based desktop environment built with Python and inspired by tiling window managers. It aims to provide a lightweight and keyboard-driven workflow, allowing users to manage multiple terminal windows within a single terminal instance. Vtm utilizes a tree-like structure for window organization, enabling split layouts and tabbed interfaces. Its configuration is handled through a simple Python file, offering customization options for keybindings, colors, and startup applications. Ultimately, Vtm strives to offer a minimalist and efficient terminal experience for users who prefer a text-based environment.
Hacker News users discuss vtm, a text-based desktop environment, focusing on its potential niche use cases. Some commenters see value in its minimal resource usage for embedded systems or as a fallback interface. Others appreciate the accessibility benefits for visually impaired users or those who prefer keyboard-driven workflows. Several express interest in trying vtm out of curiosity or for specific tasks like remote server administration. A few highlight the project's novelty and the nostalgic appeal of text-based interfaces. Some skepticism is voiced regarding its practicality compared to modern graphical DEs, but the overall sentiment is positive, with many praising the developer's effort and acknowledging the potential value of such a project. A discussion arises about the use of terminology, clarifying the difference between a window manager and a desktop environment. The lightweight nature of vtm and its integration with notcurses are also highlighted.
Bcvi allows running a full-screen vi editor session over a limited bandwidth or high-latency connection, such as a serial console or SSH connection with significant lag. It achieves this by using a "back-channel" to send screen updates efficiently. Instead of redrawing the entire screen for every change, bcvi only transmits the differences, leading to a significantly more responsive experience. This makes editing files remotely over constrained connections practical, providing a near-native vi experience even with limited bandwidth. The back-channel can be another SSH connection or even a separate serial port, providing flexibility in setup.
Hacker News users discuss the cleverness and potential uses of bcvi
, particularly for embedded systems debugging. Some express admiration for the ingenuity of using the back channel for editing, highlighting its usefulness when other methods are unavailable. Others question the practicality due to potential slowness and limitations, suggesting alternatives like ed
. A few commenters reminisce about using similar techniques in the past, emphasizing the historical context of this approach within resource-constrained environments. Some discuss potential security implications, pointing out that the back channel could be vulnerable to manipulation. Overall, the comments appreciate the technical ingenuity while acknowledging the niche appeal of bcvi
.
1984 saw the rise of networked filesystems like NFS, which offered performance comparable to local filesystems, and the introduction of the Andrew File System (AFS), designed for large-scale distributed environments with client-side caching and whole-file serving. Research focused on improving performance and reliability, with log-structured filesystems like LFS emerging to optimize write operations. Additionally, the standardization of file systems continued, with work on the ISO 9660 standard for CD-ROMs solidifying the format's widespread adoption. This year highlighted the increasing importance of networking and the evolving demands placed upon file systems for both performance and portability.
The Hacker News comments discuss the blog post's focus on the early days of networked filesystems, particularly NFS. Several commenters share their own experiences with early NFS, highlighting its initial slow performance and eventual improvements. Some discuss the influence of Sun Microsystems and the rise of distributed systems. Others delve into technical details like caching, consistency models, and the challenges of implementing distributed locks. A few comments compare NFS to other contemporary filesystems and contemplate the enduring relevance of some of the challenges faced in the 1980s. There's a general appreciation for the historical perspective offered by the blog post.
The post details the author's successful, albeit challenging, experience installing NetBSD 9.0 on a Sun JavaStation Network Computer (NC). The JavaStation's limited resources and unusual architecture, including its use of a microSPARC IIep processor and a small amount of RAM, presented various hurdles. These included needing to create custom boot floppies and finding compatible network drivers. Despite these difficulties, the author achieved a functional NetBSD installation, showcasing the operating system's portability and the author's persistence. The experience also highlighted the resourcefulness required to repurpose older hardware and the satisfaction of breathing new life into vintage computing platforms.
Commenters on Hacker News largely expressed nostalgia for JavaStations and Sun hardware, reminiscing about their quirks and limitations. Several appreciated the author's dedication to getting NetBSD running on such an unusual and constrained platform. Some discussed the challenges of working with the JavaStation's architecture, including its small amount of RAM and unusual graphics setup. Others shared their own experiences using JavaStations and similar thin clients, with some mentioning their use in educational settings. A few commenters also delved into technical details, discussing the specifics of NetBSD's compatibility and the process of getting X11 functioning.
LWN.net's "The early days of Linux (2023)" revisits Linux's origins through the lens of newly rediscovered email archives from 1992. These emails reveal the collaborative, yet sometimes contentious, environment surrounding the project's infancy. They highlight Linus Torvalds's central role, the rapid evolution of the kernel, and early discussions about licensing, portability, and features. The article underscores how open collaboration, despite its challenges, fueled Linux's early growth and laid the groundwork for its future success. The rediscovered archive offers valuable historical insight into the project's formative period and provides a more complete understanding of its development.
HN commenters discuss Linus Torvalds' early approach to Linux development, contrasting it with the more structured, corporate-driven development of today. Several highlight his initial dismissal of formal specifications, preferring a "code first, ask questions later" method guided by user feedback and rapid iteration. This organic approach, some argue, fostered innovation and rapid growth in Linux's early stages, while others note its limitations as the project matured. The discussion also touches on Torvalds' personality, described as both brilliant and abrasive, and how his strong opinions shaped the project's direction. A few comments express nostalgia for the simpler times of early open-source development, contrasting it with the complexities of modern software engineering.
Calendar.txt outlines a simple, universal calendar format based on plain text. Each line represents a day, formatted as YYYY-MM-DD followed by optional event descriptions separated by tabs. This minimalist approach allows for easy creation, parsing, and manipulation by any text editor or scripting tool, promoting interoperability across diverse platforms and applications. The post emphasizes the benefits of this format's portability, version control friendliness, and longevity, contrasting it with proprietary calendar systems that often lock users into specific software or data formats. The suggested structure allows for complex recurring events and to-do lists with simple extensions, making it adaptable to various scheduling needs.
Hacker News users discuss the minimalist approach of calendar.txt
, appreciating its simplicity and portability. Some highlight its alignment with the Unix philosophy of doing one thing well. Others suggest improvements like adding support for recurring events or integration with other tools. A few users express skepticism, finding the plain text format too limiting for practical use, while others champion its accessibility and ease of parsing. The discussion also touches upon alternative calendar solutions and the benefits of plain text for archiving and data longevity. Several commenters share their personal workflows incorporating plain text files for task management and scheduling.
OpenBSD has contributed significantly to operating system security and development through proactive approaches. These include innovations like memory safety mitigations such as W^X (preventing simultaneous write and execute permissions on memory pages) and pledge() (restricting system calls available to a process), advanced cryptography and randomization techniques, and extensive code auditing practices. The project also champions portable and reusable code, evident in the creation of OpenSSH, OpenNTPD, and other tools, which are now widely used across various platforms. Furthermore, OpenBSD emphasizes careful documentation and user-friendly features like the package management system, highlighting a commitment to both security and usability.
Hacker News users discuss OpenBSD's historical focus on proactive security, praising its influence on other operating systems. Several commenters highlight OpenBSD's pledge ("secure by default") and the depth of its code audits, contrasting it favorably with Linux's reactive approach. Some debate the practicality of OpenBSD for everyday use, citing hardware compatibility challenges and a smaller software ecosystem. Others acknowledge these limitations but emphasize OpenBSD's value as a learning resource and a model for secure coding practices. The maintainability of its codebase and the project's commitment to simplicity are also lauded. A few users mention specific innovations like OpenSSH and CARP, while others appreciate the project's consistent philosophy and long-term vision.
Eric Raymond's "The Cathedral and the Bazaar" contrasts two different software development models. The "Cathedral" model, exemplified by traditional proprietary software, is characterized by closed development, with releases occurring infrequently and source code kept private. The "Bazaar" model, inspired by the development of Linux, emphasizes open source, with frequent releases, public access to source code, and a large number of developers contributing. Raymond argues that the Bazaar model, by leveraging the collective intelligence of a diverse group of developers, leads to faster development, higher quality software, and better responsiveness to user needs. He highlights 19 lessons learned from his experience managing the Fetchmail project, demonstrating how decentralized, open development can be surprisingly effective.
HN commenters largely discuss the essay's historical impact and continued relevance. Some highlight how its insights, though seemingly obvious now, were revolutionary at the time, changing the landscape of software development and popularizing open-source methodologies. Others debate the nuances of the "cathedral" versus "bazaar" model, pointing out examples where the lines blur or where a hybrid approach is more effective. Several commenters reflect on their personal experiences with open source, echoing the essay's observations about the power of peer review and decentralized development. A few critique the essay for oversimplifying complex development processes or for being less applicable in certain domains. Finally, some commenters suggest related readings and resources for further exploration of the topic.
A working version of Unix Version 2, specifically a "beta" release predating the official V2 from November 1972, has been recovered and made available. Discovered on a PDP-11 RK05 disk pack, this "Proto-V2" includes intriguing differences like an earlier version of the file system and unique commands. Warren Toomey, leveraging a SIMH emulator and painstaking analysis, managed to boot and explore this historical artifact, offering a fascinating glimpse into Unix's early evolution. The restored system, along with Toomey's detailed notes, is now accessible to the public, providing valuable insights for those interested in computing history.
Hacker News commenters express excitement about the resurrection of Unix V2 "Beta," viewing it as a valuable historical artifact. Several highlight the simplicity and elegance of early Unix compared to modern operating systems, appreciating the ability to explore its concise codebase. Some discuss the technical details of the restoration process, including the challenges of running old software on modern hardware and the use of emulators like SIMH. Others reminisce about their experiences with early Unix, contrasting the collaborative and open environment of the time with the more commercialized landscape of today. The small size of the OS and the speed at which it boots also impress commenters, emphasizing the efficiency of early Unix development.
An interactive, annotated version of the classic "Unix Magic" poster has been created. This online resource allows users to explore the intricate diagram of Unix commands and their relationships. By clicking on individual commands, users can access descriptions, examples, and links to further resources, providing a dynamic and educational way to learn or rediscover the power of the Unix command line. The project aims to make the dense information of the original poster more accessible and engaging for both beginners and experienced Unix users.
Commenters on Hacker News largely praised the interactive Unix magic poster for its nostalgic value, clear presentation, and educational potential. Several users reminisced about their experiences with the original poster and expressed appreciation for the updated, searchable format. Some highlighted the project's usefulness as a learning tool for newcomers to Unix, while others suggested improvements like adding links to man pages or expanding the command explanations. A few pointed out minor inaccuracies or omissions but overall considered the project a valuable resource for the Unix community. The clean interface and ease of navigation were also frequently mentioned as positive aspects.
This blog post details how to automatically remove macOS-specific files (.DS_Store
and ._*
) from external drives upon ejection. The author uses a combination of AppleScript and a LaunchAgent to trigger a cleanup script whenever a volume is ejected. The script leverages dot_clean
to efficiently delete these often-annoying hidden files, preventing their proliferation on non-macOS systems. This automated approach replaces the need for manual cleanup and ensures a cleaner experience when sharing drives between different operating systems.
Commenters on Hacker News largely appreciated the simplicity and directness of the provided AppleScript solution for removing macOS-specific files from external drives upon ejection. Some highlighted the potential for data loss if used carelessly, especially with networked drives or if the script were modified to delete different files. Others offered alternative solutions, including using dot_clean
, incorporating the script into a Hazel rule, or employing a shell script with find
. The discussion also touched upon the annoyance factor of these files on other operating systems and the historical reasons for their existence, with some suggesting that their prevalence has diminished. A few commenters mentioned more robust solutions for syncing and backing up, which would obviate the need for such a script altogether.
Andrew Tanenbaum, creator of MINIX, argued in 1992 that Linux, being a monolithic kernel, represented an outdated design compared to the microkernel approach of MINIX. He believed that microkernels, with their modularity and message-passing architecture, offered superior portability, maintainability, and reliability, especially as technology moved towards distributed systems and multicore processors. Tanenbaum predicted that Linux, tied to the aging Intel 386 architecture, would soon become obsolete and fade away as more advanced hardware and software paradigms emerged. He emphasized the conceptual superiority of MINIX's design, portraying Linux as a step backwards in operating system development.
HN commenters largely dismiss the linked 1992 post arguing for Minix over Linux. Many point out that the author's predictions about Linux's limitations due to its monolithic kernel and lack of microkernel structure were inaccurate, given Linux's widespread success and ongoing development. Some acknowledge that microkernels have certain advantages, but suggest that Linux's approach has proven more practical and adaptable. A few commenters find the historical perspective interesting, noting how the computing landscape has changed significantly since 1992, rendering the arguments largely irrelevant in the modern context. One commenter sarcastically celebrates Tanenbaum's foresight.
Douglas McIlroy, the original author of the Unix spell
command, responded to an article detailing its inner workings with further insights into its development. He clarified that the efficient hashing used wasn't a conscious optimization but rather a side effect of the limited memory available on the PDP-7. The stop word list was chosen pragmatically to shrink the dictionary size. McIlroy also revealed that he experimented with stemming algorithms, ultimately discarding them due to excessive performance overhead and concerns about false positives. He highlighted the importance of spell
's collaborative development, with Steve Johnson's later refinements significantly improving its accuracy and efficiency.
HN commenters discuss McIlroy's response regarding the original Unix spell program. Several express fascination with the historical context and McIlroy's continued engagement with the topic. Some highlight the elegance and efficiency of the original implementation, particularly its use of hashing and minimal resources. Others note the contrast between then-current hardware limitations and modern capabilities, marveling at what was achieved with so little. A few commenters delve into specific technical details, such as the choice of hashing algorithms and the use of a 64KB PDP-11. The overall sentiment is one of appreciation for both McIlroy's contribution and the ingenuity of early Unix development.
The blog post argues against using generic, top-level directories like .cache
, .local
, and .config
for application caching and configuration in Unix-like systems. These directories quickly become cluttered, making it difficult to manage disk space, identify relevant files, and troubleshoot application issues. The author advocates for application developers to use XDG Base Directory Specification compliant paths within $HOME/.cache
, $HOME/.local/share
, and $HOME/.config
, respectively, creating distinct subdirectories for each application. This structured approach improves organization, simplifies cleanup by application or user, and prevents naming conflicts. The lack of enforcement mechanisms for this specification and inconsistent adoption by applications are acknowledged as obstacles.
HN commenters largely agree that standardized cache directories are a good idea in principle but messy in practice. Several point out inconsistencies in how applications actually use $XDG_CACHE_HOME
, leading to wasted space and difficulty managing caches. Some suggest tools like bcache
could help, while others advocate for more granular control, like per-application cache directories or explicit opt-in/opt-out mechanisms. The lack of clear guidelines on cache eviction policies and the potential for sensitive data leakage are also highlighted as concerns. A few commenters mention that directories starting with a dot (.
) are annoying for interactive shell users.
The blog post explores using #!/usr/bin/env uv
as a shebang line to execute PHP scripts with the uv
runner, offering a performance boost compared to traditional PHP execution methods like php-fpm
. uv
leverages libuv for asynchronous operations, making it particularly advantageous for I/O-bound tasks. The author demonstrates this by creating a simple "Hello, world!" script and showcasing the performance difference using wrk
. The post concludes that while setting up uv
might require some initial effort, the potential performance gains, especially in asynchronous contexts, make it a compelling alternative for running PHP scripts.
Hacker News users discussed the practicality and security implications of using uv
as a shebang line. Some questioned the benefit given the small size savings compared to a full path, while others highlighted potential portability issues and the risk of uv
not being installed on target systems. A compelling argument against this practice centered on security, with commenters noting the danger of path manipulation if uv
isn't found and the shell falls back to searching the current directory. One commenter suggested using env
to locate usr/bin/env
reliably, proposing #!/usr/bin/env uv
as a safer, though slightly larger, alternative. The overall sentiment leaned towards avoiding this shortcut due to the potential downsides outweighing the minimal space saved.
Shunpo is a minimalist Bash tool designed to streamline directory navigation. It learns frequently visited directories and allows users to quickly jump to them using short, custom aliases. By storing these aliases and their corresponding paths in a simple text file, Shunpo avoids complex databases and remains lightweight and portable. It offers basic commands for adding, removing, listing, and navigating to saved locations, simplifying the process of moving between commonly accessed folders within the terminal.
Hacker News users discussed Shunpo's utility and potential drawbacks. Some found its core functionality—quickly jumping to frequently used directories—appealing, especially combined with tools like fzf. Others questioned its value proposition over existing solutions like autojump, z, or fasd, particularly given its reliance on find
. Concerns were raised about performance in large directory trees and the security implications of executing arbitrary commands generated from find
results. Some suggested improvements, including leveraging shell builtins for better performance and integrating more advanced selection mechanisms. The project's minimalism was both praised and criticized, with some appreciating its simplicity and others desiring more features like directory tracking or the ability to ignore certain paths.
Bell Labs, celebrating its centennial, represents a century of groundbreaking innovation. From its origins as a research arm of AT&T, it pioneered advancements in telecommunications, including the transistor, laser, solar cell, information theory, and the Unix operating system and C programming language. This prolific era fostered a collaborative environment where scientific exploration thrived, leading to numerous Nobel Prizes and shaping the modern technological landscape. However, the breakup of AT&T and subsequent shifts in corporate focus impacted Bell Labs' trajectory, leading to a diminished research scope and a transition towards more commercially driven objectives. Despite this evolution, Bell Labs' legacy of fundamental scientific discovery and engineering prowess remains a benchmark for industrial research.
HN commenters largely praised the linked PDF documenting Bell Labs' history, calling it well-written, informative, and a good overview of a critical institution. Several pointed out specific areas they found interesting, like the discussion of "directed basic research," the balance between pure research and product development, and the evolution of corporate research labs in general. Some lamented the decline of similar research-focused environments today, contrasting Bell Labs' heyday with the current focus on short-term profits. A few commenters added further historical details or pointed to related resources like the book Idea Factory. One commenter questioned the framing of Bell Labs as primarily an American institution given its reliance on global talent.
TMSU is a command-line tool that lets you tag files and directories, creating a virtual filesystem based on those tags. Instead of relying on a file's physical location, you can organize and access files through a flexible tag-based system. TMSU supports various commands for tagging, untagging, listing files by tag, and navigating the virtual filesystem. It offers features like autocompletion, regular expression matching for tags, and integration with find
. This allows for powerful and dynamic file management based on user-defined criteria, bypassing the limitations of traditional directory structures.
Hacker News users generally praised TMSU for its speed, simplicity, and effectiveness, especially compared to more complex solutions. One commenter highlighted its efficiency for managing a large photo collection, appreciating the ability to tag files based on date and other criteria. Others found its clear documentation and intuitive use of find commands beneficial. Some expressed interest in similar terminal-based tagging solutions, mentioning TagSpaces as a cross-platform alternative and bemoaning the lack of a modern GUI for TMSU. A few users questioned the longevity of the project, given the last commit being two years prior, while others pointed out the stability of the software and the infrequency of needed updates for such a tool.
Summary of Comments ( 63 )
https://news.ycombinator.com/item?id=43631672
HN commenters largely agree with the author's premise that man pages are a valuable resource, but the tools for accessing them are often clunky. Several commenters point to the difficulty of navigating long man pages, especially on mobile devices or when searching for specific flags or options. Suggestions for improvement include better search functionality within man pages, more concise summaries at the beginning, and alternative formatting like collapsible sections.
tldr
andcheat
are frequently mentioned as useful alternatives for quick reference. Some disagree, arguing that man pages' inherent structure, while sometimes verbose, makes them comprehensive and adaptable to different output formats. Others suggest the problem lies with discoverability, and tools likeapropos
should be highlighted more. A few commenters even advocate for generating man pages automatically from source code docstrings.The Hacker News post titled "Man pages are great, man readers are the problem" (linking to an article of the same name) generated a substantial discussion with diverse opinions. Several commenters agreed with the article's premise, citing the density and comprehensive nature of man pages as strengths, and pointing to the awkwardness of
man
's default pager,less
, as a major usability hurdle. They suggest alternative pagers likebat
or incorporating search functionalities within the pager as improvements. One commenter specifically praised the use oftldr
pages for quicker access to common usage examples, while acknowledging man pages as the ultimate source of truth. Another commenter noted how valuable the full technical specifications and corner cases documented in man pages are, even if they are not needed for everyday usage. The verbosity and occasional outdatedness of man pages were mentioned as minor drawbacks, though not significant enough to detract from their overall value.Some commenters argued against the article's premise. They expressed frustration with the structure of man pages, finding the information organization illogical and difficult to navigate, even with improved pagers. They criticized the lack of consistency across different man pages, making it challenging to predict where specific information might be located. These commenters often suggested alternative documentation formats like web pages or dedicated documentation sites, which they perceived as being more user-friendly. One commenter pointed out that the author's preferred approach using
man -Tpdf
and a PDF viewer was a workaround rather than a solution to the underlying usability issues withman
.A few commenters took a more nuanced approach, acknowledging the strengths of man pages while also recognizing their shortcomings. They proposed improvements such as better indexing and search capabilities, more consistent formatting, and perhaps even incorporating some of the strengths of alternative documentation styles into man pages themselves. One commenter highlighted the importance of context and how man pages, being primarily designed for command-line use, fit well within that specific context. They also pointed to the benefit of man pages being readily available offline, a crucial advantage in certain situations. There was also some discussion about the learning curve associated with using man pages effectively, with some users appreciating the challenge while others found it unnecessarily steep.
Finally, there were a few tangential comments, including one about the history of Unix documentation and the cultural significance of man pages. Another commenter questioned the value of man pages in the modern software development landscape, arguing that many modern tools and libraries often lack adequate man page documentation. Overall, the comment section reflects a wide range of opinions on the utility and usability of man pages, with a general agreement that improvements are needed but disagreement on the best approach to achieve them.