Category: Development

Rohlang3: A Minimalist Dependently Typed SK Calculus

2025-01-06
Rohlang3: A Minimalist Dependently Typed SK Calculus

Rohan Ganapavarapu's Rohlang3 is an experimental minimalist language written in Rust. It attempts to combine point-free style, homoiconicity, and dependent typing atop an SK-calculus foundation. While built on the standard S and K combinators, Rohlang3 adds reflection (q and e), partial evaluation (z), and environment reordering (i, E, D) combinators, along with a simplified Pi/Sigma dependent type system (p and g). The project isn't aiming for perfect consistency, but rather explores the interplay of these concepts. Homoiconicity allows runtime manipulation of the AST, and the reflection and partial evaluation features enable powerful metaprogramming capabilities.

Development

Chrome Extension Filters Toxic Tweets using LLMs

2025-01-06
Chrome Extension Filters Toxic Tweets using LLMs

Unbaited is a Chrome extension leveraging Llama 3.3 and Groq's API to filter engagement bait and inflammatory content from your X (formerly Twitter) feed. It analyzes tweets in real-time, blurring those identified as provocative or designed to increase engagement through controversial topics. Users can customize prompts for personalized filtering and easily un-blur hidden tweets. This prototype showcases how social media platforms could improve user control over their feeds. Requires a Groq API key.

Development AI filtering

Why Computer Scientists Consult Oracles

2025-01-06
Why Computer Scientists Consult Oracles

Computational complexity theorists use hypothetical 'oracles'—devices that instantly answer specific questions—to explore the fundamental limits of computation. By studying how different oracles affect problem difficulty (e.g., the P vs. NP problem), researchers gain insights into inherent computational limitations and inspire new algorithms. For example, Shor's algorithm, a quantum algorithm for factoring large numbers crucial to modern cryptography, was inspired by oracle-based research. Oracles serve as a powerful tool, pushing the boundaries of theoretical understanding and driving innovation in fields like quantum computing.

Einsum: Beyond Matrix Multiplication

2025-01-06

Einsum is more than just matrix multiplication; it's an efficient implementation of Einstein summation convention. It uses concise notation to represent complex tensor operations, avoiding nested loops and improving code readability and performance. This article delves into the mechanics of Einsum, demonstrating its advantages in handling high-dimensional tensor operations such as matrix multiplication, transposition, and trace calculations with illustrative examples. For developers needing high-performance tensor computations, Einsum is an invaluable tool.

My Linkblogging Workflow: 7,607 Posts and Counting

2025-01-06
My Linkblogging Workflow:  7,607 Posts and Counting

Simon Willison shares his approach to running a successful link blog spanning over two decades. He details his methods for curating and presenting links, emphasizing the value of adding insightful commentary, giving proper credit to creators, and using technology (Django, Markdown, Claude) to enhance the experience. He argues link blogging is a low-effort, high-reward way to contribute meaningfully to online discourse and encourages others to adopt the practice.

OKRs vs. Daily Grind: A Tale of Two Teams

2025-01-06
OKRs vs. Daily Grind: A Tale of Two Teams

This post explores the contrasting uses of Objectives and Key Results (OKRs) in engineering and marketing teams. The author argues that marketing teams find OKRs easier to define because their work is more project-based, whereas engineering work is more product-driven. Engineering OKRs shouldn't simply reiterate the product roadmap; instead, they should highlight what's unique about the quarter, what's changing, and what challenges need addressing. For example, an OKR for a "smooth launch of Frontend Observability" focuses not just on the launch itself, but on ensuring a smooth launch and its positive impact on the business. The post emphasizes that OKRs should highlight special focus areas for the quarter, not try to encompass everything.

Development

io_uring: Revolutionizing Asynchronous I/O on Linux

2025-01-06

io_uring is a powerful new approach to asynchronous I/O programming under Linux, overcoming limitations of previous I/O subsystems. This comprehensive guide by Shuveb Hussain covers io_uring's introduction, low-level interface, liburing examples (including cat, cp, and a web server), and advanced usage. Source code examples and GitHub repositories are provided for learning and contribution.

Development

OCRing YouTube Music with Common Lisp: A Pixel-Perfect Adventure

2025-01-06

A developer attempted to extract music data from a YouTube video using Common Lisp. Initial attempts with Tesseract and ChatGPT proved unsuccessful. Ultimately, an old-school pixel differencing method, involving manual extraction of character images and comparison, successfully extracted most of the musical notation. While not perfect, the extracted data sufficed, proving the method's feasibility. The article also details the developer's experience using Lisp for image processing and efficient development.

Development Image Processing

Supabase: Remote-First Open Source Firebase Alternative Hiring Now

2025-01-06
Supabase: Remote-First Open Source Firebase Alternative Hiring Now

Supabase, a fully remote and asynchronous open-source alternative to Firebase, is hiring globally! They offer excellent benefits including a hardware budget, full health coverage, and annual off-sites. Supabase values open collaboration and boasts a globally distributed team and large community. If you're passionate about open source and want to work in a vibrant and diverse team, apply for a position at Supabase.

Development

Building an IPv6-Only Network with Jool: A Practical Guide

2025-01-06

This post details setting up an IPv6-only network on Linux using the Jool tool. The author starts by highlighting the limitations of traditional dual-stack IPv4/IPv6 home networks. Jool is introduced as a superior alternative to TAYGA, emphasizing its support for Stateful NAT64. The guide provides installation instructions for various Linux distributions, followed by a comprehensive walkthrough of configuring Stateful NAT64, DNS64, and IPv4-to-IPv6 port mapping to achieve IPv4 access within an IPv6-only environment. Persistence of the configuration across reboots is also covered.

Development

The printf Debugging Debate: A Veteran Game Dev Weighs In

2025-01-06

Alex Dixon, a seasoned game developer, challenges the extreme notion of rejecting debuggers in favor of notepad and printf debugging. He argues that debuggers, address sanitizers, and other tools significantly boost efficiency, even for experienced programmers tackling intricate bugs in large projects or legacy code. While advocating for debuggers, he acknowledges printf's utility in specific scenarios (e.g., debugging release builds or mobile touch events). Ultimately, he emphasizes that efficient bug fixing is the goal, and choosing the right tools is key.

Development

This Isn't Your Last Job: A Programmer's Perspective on Career Growth

2025-01-06
This Isn't Your Last Job: A Programmer's Perspective on Career Growth

A seasoned programmer shares his unique insights on career development: this isn't your last technology or job, regardless of your current stage. Using personal anecdotes, he highlights the importance of continuously learning new technologies (like Rust) and the necessity of changing jobs or roles to pursue career growth. He argues that adapting to industry shifts, embracing new technologies, and maintaining a continuous learning attitude are key to staying competitive throughout a long career, ultimately finding a long-term path that fits.

LogLayer: Unify Your JavaScript Logging

2025-01-06
LogLayer: Unify Your JavaScript Logging

LogLayer is a unifying layer for JavaScript logging libraries, providing a consistent logging experience. It supports multiple logging libraries (like Pino, Bunyan) and cloud services (like Datadog, New Relic), and allows extending functionality with plugins for features such as data filtering and redaction. Developers can easily add tags, metadata, and errors, and switch logging providers on the fly without changing application code.

Development

Chip-8 Emulator Intro: Building a Retro Game Console in Code

2025-01-06

This article introduces Chip-8, a simple virtual game console system, and explains how to build its emulator. It clearly explains binary, hexadecimal, and how Chip-8 instructions work, providing the foundational knowledge for building an emulator. The author guides the reader step-by-step, from simple to more complex instructions, explaining the inner workings of Chip-8, making it a great resource for those interested in retro gaming consoles and emulator technology.

Development

srsRAN: Open Source 4G/5G Software Defined Radio

2025-01-05
srsRAN: Open Source 4G/5G Software Defined Radio

srsRAN is an open-source collection of 4G and 5G software radio applications developed by SRS. Implemented in portable C++ with minimal third-party dependencies, srsRAN runs on Linux with off-the-shelf compute and radio hardware. The srsRAN Project features a complete O-RAN native 5G RAN CU+DU, and a full-stack 4G network implementation covering UE, eNodeB, and EPC. The project is hosted on GitHub with comprehensive documentation and an active community forum.

Building a Polite and Fast Web Crawler: Lessons Learned

2025-01-05

Mozilla engineer Dennis Schubert found that 70% of Diaspora's server load stemmed from poorly-behaved bots, with OpenAI and Amazon contributing 40%. This article details the author's experience building a polite and fast web crawler, covering rate limiting, respecting robots.txt, minimizing refetching, and efficient enqueuing. Using Python and gevent, the author assigns a coroutine per domain for rate limiting and leverages Postgres for efficient queue management and deduplication. This design allows for fast and efficient crawling while respecting target websites.

Axum 0.8.0 Released: Path Parameter Syntax and Optional Extractor Improvements

2025-01-05

Axum 0.8.0 is out! This Rust web framework built with Tokio, Tower, and Hyper boasts significant updates. The most notable changes include an altered path parameter syntax (from `/single` and `/*many` to `/{single}` and `/{*many}`) and improvements to `Option` extractors, enabling more flexible handling of optional parameters and errors. Additionally, due to Rust language feature updates, the `#[async_trait]` macro is no longer needed. These improvements enhance Axum's usability and flexibility, but also introduce breaking changes; careful migration is advised. Consult the changelog for details.

Development

Northeastern's Khoury Curriculum Redesign: Abandoning Fundamentals?

2025-01-05
Northeastern's Khoury Curriculum Redesign: Abandoning Fundamentals?

Northeastern University's Khoury College of Computer Sciences is overhauling its curriculum, eliminating foundational courses like Fundies 1, Fundies 2, and Object-Oriented Design. This op-ed argues that this change abandons core computer science principles in favor of chasing the currently popular Python language, neglecting the crucial development of systematic program design skills. The author fears this will lower educational quality, hindering the production of competent software developers and potentially harming the long-term prospects of Northeastern's computer science program.

WireGuard Setup Complexity: A Guide from Simple to Advanced

2025-01-05

This blog post explores various WireGuard setup complexities, ranging from the simplest, with completely isolated internal IP address spaces, to the most challenging 'VPN' setup where some endpoints are accessible both inside and outside the WireGuard tunnel. The author details the difficulty and potential issues of each setup, such as routing conflicts and recursive routing. The article stresses the importance of upfront planning and suggests opting for simpler configurations to avoid complex routing when designing a WireGuard environment.

Development Network Configuration

Sequin: Coordinating Change Data Capture in Postgres with Watermarks

2025-01-05
Sequin: Coordinating Change Data Capture in Postgres with Watermarks

Sequin is a real-time change data capture (CDC) tool that streams changes from Postgres to destinations like Kafka and SQS. This article dives into how Sequin elegantly solves the complex problem of simultaneously performing full table capture and incremental change capture. By employing a watermarking mechanism, Sequin coordinates two data streams, preventing data loss or duplication and ensuring data consistency. Sequin uses a chunked capture strategy, processing tables in smaller batches for efficiency and reduced memory usage.

Efficient Linux System Call Interception: Beyond the Inefficiencies of ptrace

2025-01-05

This article introduces a more efficient method for intercepting Linux system calls than ptrace: seccomp user notify. Leveraging BPF filters, it returns only for desired system calls, significantly reducing performance overhead. The author uses their tool, copycat, as an example, demonstrating how to intercept open() system calls to achieve file replacement. The article details the seccomp user notify mechanism, including BPF filter creation and system call argument handling. Security and potential issues, such as TOCTOU attacks, are also discussed.

Development System Calls

AI-Assisted Coding: The Two Sides of the Coin

2025-01-05
AI-Assisted Coding: The Two Sides of the Coin

The rise of AI-assisted coding tools has revolutionized software engineering, but it's not without its challenges. This article explores two typical AI usage patterns: "bootstrappers" and "iterators." Bootstrappers leverage AI to rapidly build prototypes, while iterators use AI in their daily workflow for code completion, refactoring, and more. While AI significantly boosts efficiency, it also presents the "70% problem": AI quickly handles most of the work, but the remaining 30% of fine-tuning still requires human intervention, especially challenging for inexperienced developers. The article emphasizes that AI is better suited for experienced developers, helping them accelerate solutions to known problems and explore new approaches, rather than completely replacing them. In the future, AI-assisted coding will move toward "intelligent agents" with greater autonomy and multimodal capabilities, but human oversight and guidance will remain crucial. Ultimately, the essence of software engineering remains unchanged, and the demand for experienced engineers may even increase.

Development AI-assisted coding

Level Up Your Skills: A 90s-Style Link List of Learning Resources

2025-01-05
Level Up Your Skills: A 90s-Style Link List of Learning Resources

This blog post presents a curated list of excellent learning materials, formatted as a nostalgic 90s-style link list, for anyone looking to acquire new skills. The resources cover a wide range of topics, including finance, music composition, machine learning, algorithms, optimization algorithms, LLM app development, and JavaScript. Each resource is reviewed, highlighting its strengths and weaknesses. For instance, Andrew Ng's Machine Learning course is praised for its clear explanations and exercises, while "Essentials of Metaheuristics" is recommended for its practical approach and clear explanations. This is a valuable guide for programmers and developers seeking to enhance their skillset.

Teaching AI to Read Code Like a Senior Dev

2025-01-05

The author recounts how they improved AI code analysis. Initially, the AI acted like a fresh bootcamp grad, linearly processing code. Inspired by senior developers' approaches, they redesigned the AI's analysis: building a mental model of the architecture first, grouping files by functionality, and then delving into details. This drastically improved accuracy and depth, enabling the AI to detect subtle connection errors, performance bottlenecks, and suggest architectural improvements—achieving a senior-level understanding. The key wasn't bigger models but mimicking senior dev thinking: prioritizing context, pattern matching, impact analysis, and historical awareness.

(nmn.gl)
Development

Home Server Hacked: A New Year's Surprise

2025-01-05

The author discovered their home server infected with Kinsing malware after Christmas, exploiting an unprotected Docker container to mine cryptocurrency. The attacker repeatedly attempted brute-force attacks. The author closed all external network access to minimize the attack surface. This incident serves as a stark reminder of the risks of exposing a home server to the internet, highlighting the need for robust security measures even with password protection.

Tailscale's NAT Traversal: A Deep Dive

2025-01-05
Tailscale's NAT Traversal: A Deep Dive

This Tailscale blog post details how their VPN overcomes the challenges of NAT (Network Address Translation) to enable direct device-to-device connections. It explains NAT's workings and various techniques to handle NAT and firewalls, including STUN for discovering public IPs, the birthday paradox for faster port probing, and DERP as a fallback relay. Finally, it introduces the ICE protocol, which automatically tries various methods, selecting the best connection to ensure reliable connectivity.

Development

Long Polling Beats WebSockets: A Practical Guide to Scalable Real-time Systems

2025-01-05

Inferable's team chose HTTP long polling over WebSockets when building a scalable real-time system using Node.js and TypeScript. Facing challenges of hundreds of worker nodes needing real-time job updates and agents requiring real-time state synchronization, they found long polling surprisingly effective. By keeping HTTP connections open until new data arrives or a timeout is reached, they avoided the complexities of WebSockets, such as authentication, observability, and infrastructure compatibility. The article details their implementation, including database optimization, error handling, and best practices like mandatory TTL, client-configurable TTL, and sensible database polling intervals. The choice stemmed from needing core product control over message delivery, zero external dependencies, and ease of understanding and modification. Alternatives like ElectricSQL are briefly discussed, highlighting scenarios where WebSockets might be preferable.

Interactive CSS Flexbox Learning Tool

2025-01-05

The CSS Flexbox Playground is an interactive online learning tool that lets users adjust various Flex properties to see layout changes in real-time and copy the generated CSS code. It covers key properties like flex-direction, justify-content, align-items, and flex-wrap, providing a visual understanding of Flexbox layout. Hands-on experimentation allows users to quickly master Flexbox and improve web development efficiency.

Development

FSF Calls for Continued Pressure on Microsoft

2025-01-05

The Free Software Foundation (FSF) published a blog post urging continued pressure on Microsoft to combat its anti-free software practices. The post uses this year's International Day Against DRM (IDAD) as an example, highlighting Microsoft's forced Windows 11 upgrade requiring a TPM module, harming user freedom and digital rights. The FSF encourages switching to GNU/Linux, avoiding new Microsoft software releases, and moving projects off Microsoft GitHub to support the free software movement. Simultaneously, the FSF is conducting its annual fundraiser, seeking support to fight digital restrictions and promote software freedom.

Development Digital Restrictions

Wildcard: Spreadsheet-Powered Website Customization

2025-01-05
Wildcard: Spreadsheet-Powered Website Customization

Wildcard, a browser extension developed by MIT PhD student Geoffrey Litt, lets users modify websites to their liking using a familiar spreadsheet interface. The project, detailed in several academic papers and showcased in demo videos (like adding read times to Hacker News), is currently in development but offers a downloadable dev build. Explore its potential for personalized web experiences.

Development web customization
1 2 192 193 194 196 198 199 200 214 215