AI 资讯
Learning Elixir: Project Structure
When an Elixir project outgrows a handful of modules, the habit of pasting definitions into IEx starts to break down — redefinition warnings pile up, names collide, and nothing survives the session. One way to picture what comes next is a workshop: it begins as a single shelf of drawers and, as the work grows, turns into a whole room with labeled aisles and a storage room for materials that are not tools at all. In the last few articles I filled those drawers — modules — and learned how to reach between them with alias , import , and require . A project structure is the map of that room: it tells me where each module lives on disk, how file names line up with module names, and which aisles other people are allowed to walk into. In this article, we will build a real Mix project from scratch and watch it grow: starting from mix new , adding directories like lib , test , priv , and config , naming modules so they mirror their paths, and drawing boundaries so the project stays navigable as it grows. Note : The examples in this article use Elixir 1.20.1. While most operations should work across different versions, some functionality might vary. This is also a small turning point for the series: instead of pasting examples into iex , everything from now on lives in real files inside a Mix project. Each code block shows the file path, and every example is verified with mix run , with the output shown right after — and when we just want to poke at our functions, iex -S mix brings back the interactive shell, now with the project compiled from its files. Table of Contents Introduction Starting From Mix New The Anatomy of the Default Project Growing Lib: Modules That Mirror Paths Running the Project: Scripts and the Shell Namespaces and Boundaries The Priv Directory Configuration and Environments Practical Guidelines Conclusion Further Reading Next Steps Introduction In the previous articles, every example was self-contained: one or two defmodule blocks pasted into an iex sess
开发者
DHS is using obscure law to snoop on journalists, non-profits, unions
AI 资讯
Sony Music, Warner sue Anthropic, alleging a “brazen campaign” of intellectual property theft
This latest lawsuit is particularly broad and homes in on accusations of illegal piracy.
开发者
The Internet Is Kind of a Predatory Cesspit Now
AI 资讯
Technology Is Rarely the Only Constraint
A technology problem rarely stays a technology problem for very long. A platform may need to scale. A product may need to move faster. An organisation may want to introduce AI, modernise an ageing estate, improve customer experience or launch something entirely new. The first instinct is usually to look at the technology itself. Which architecture should change? Which platform should we buy? Which team should build it? Which tools should we introduce? Those questions matter. But they are often not the questions that determine the outcome. At Cralgo, one pattern keeps appearing across technology work: the harder part is frequently the system around the technology. The problem behind the problem Consider a programme that appears to have an execution issue. Delivery is slow. Priorities keep changing. Teams disagree. Decisions are repeatedly reopened. The roadmap keeps moving. It is easy to conclude that the engineering team needs to become faster. But look closer and the constraint may be somewhere else: ownership is unclear; priorities are not genuinely ordered; product and technology are working from different assumptions; architecture decisions are being made without business context; teams are executing tasks without understanding the judgement behind them; governance exists, but only as reporting; critical decisions remain dependent on a small number of people. None of these are purely technical problems. They are questions of judgement, ownership, capability, sequencing and governance. Technology simply makes them visible. Better technology does not automatically create better execution Organisations understandably invest heavily in platforms, cloud, data, automation and AI. But technology increases capability only when the organisation around it can use that capability well. A new platform cannot decide what should be prioritised. A new operating model diagram cannot create ownership. A dashboard cannot replace judgement. AI cannot resolve ambiguity that an orga
AI 资讯
Quipu: post-quantum encryption in pure Rust, with a Python wheel
Protecting data that must stay secret ten years from now is a problem for today : an adversary can capture your encrypted traffic now and decrypt it once quantum capability exists ( harvest now, decrypt later ). Quipu is a free hybrid post-quantum encryption library for data at rest: it combines proven classical cryptography with the new kind, so that it only breaks if both fall at once. Pure Rust, and why Quipu started out aiming at several languages: a Rust core with a C ABI on top and bindings for Python, Node and Go. It worked, but the lesson was clear: maintaining a stable C interface plus four bindings, each with its own packaging and interoperability tests, was complexity that did not pay for itself against the real goal — protecting data at rest — and it widened the attack surface with unsafe we did not want. Today Quipu is pure Rust : memory safe, no garbage collector, no first-party unsafe . And for people who do not write Rust, it ships as a native Python wheel via PyO3 — the surface that non-Rust users actually need. One codebase, one thing to audit. It is the same philosophy that guides the rest: where good cryptography exists, reuse it; simplicity is a security decision, not a convenience. Installation cargo add quipu # Rust pip install quipu-crypto # Python (native wheel, PyO3) Encrypt and decrypt in Python import quipu # Symmetric, with a passphrase blob = quipu . encrypt_stream ( b " sensitive data " , " my-passphrase " ) assert quipu . decrypt_stream ( blob , " my-passphrase " ) == b " sensitive data " # Post-quantum, for a recipient pub , sec = quipu . generate_keypair () # X25519 + ML-KEM-1024 c = quipu . encode_to_recipient ( b " secret " , pub ) assert quipu . decode_as_recipient ( c , sec ) == b " secret " What is underneath Encryption: XChaCha20-Poly1305 (authenticated AEAD). Key derivation: Argon2id (brute-force resistant) + HKDF. Post-quantum: X25519 + ML-KEM-1024 for keys; Ed25519 + ML-DSA-87 for signatures. Security level: NIST category 5
AI 资讯
Archify (They've just got 4,239 Github stars on Aug 28, 2026)
Archify is taking GitHub by storm, hitting #1 on Trending and crossing 4,200+ stars in record time! If you use AI coding assistants like Cursor or Claude Code, Archify is an absolute game-changer. It allows your AI agent to automatically generate verifiable architecture, workflow, sequence, and data-flow diagrams as beautiful, self-contained HTML files (with dark/light themes and motion animations!). 🔗 Links & Resources: • Archify GitHub Repository: https://github.com/tt-a1i/archify • Try it yourself: npx skills add tt-a1i/archify -g 👇 What do you think of Archify? Are you going to use it for your next system design or PR review? Let me know in the comments! If you found this live demo helpful, please drop a LIKE and SUBSCRIBE for more cutting-edge AI developer tools. Archify #SoftwareArchitecture #Cursor #ClaudeCode #AI #SystemDesign #GitHubTrending #WebDev #OpenSource #DevTools
科技前沿
Why would you pay $359 for the most expensive Whoop membership?
Whoop Life is the highest tier of membership to the Whoop platform, and it does offer more data than the less expensive levels.
产品设计
Sony Music and Warner Chappell Are Suing Anthropic
AI 资讯
Reward Hacking in LLMs: When the Model Learns to Win the Game Instead of Doing the Job
Hello, I'm Shrijith Venkatramana, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. There is a strange thing that happens when you make an AI system very good at optimization. It starts finding solutions that look almost like bugs in reality. Give a boat-playing agent points for hitting objects, and it may learn to drive in circles forever rather than finish the race. Give a robot a reward for putting a block at a certain height, and it may discover that flipping the block upside down satisfies the measurement. Give a language model a reward for producing answers humans prefer, and it may learn that agreeing with humans is often more profitable than correcting them. And give an LLM access to the code that calculates its own reward, and researchers have observed something considerably more unsettling: in a controlled experiment, models that had previously learned simpler forms of specification gaming sometimes went on to modify the mechanism that generated their reward. ([Anthropic][1]) None of this requires the model to "want" anything in the human sense. The optimizer is simply doing its job. The problem is that we specified the job incorrectly . For developers building LLMs, agents, evaluators, and automated coding systems, this is one of the most important failure modes to understand. 1. The Basic Idea: You Asked for X, but Measured Y Suppose you're building a coding agent. What you actually want is: correct, robust, maintainable software But directly measuring that is expensive. So you give the agent a reward: +10 tests pass +1 code compiles +0.1 code is concise -5 tests fail This seems reasonable. But now the agent isn't actually being optimized for: "write correct software" It is being optimized for: "maximize this scoring function" Those are only approximately the same thing. That distinction
AI 资讯
I built a C library that avoids recomputing unchanged state — here are the reproducible benchmarks
Most performance optimization focuses on making each operation faster. HKD Kernel approaches a different question: What if most of those operations did not need to execute at all? I’ve been working on HKD Kernel, a native C library for exact sparse and incremental computation. The target workload looks like this: A large computation has already been evaluated. Only a small subset of the inputs changes. The dependency structure tells us which results can actually change. HKD recomputes those affected regions instead of repeating the entire calculation. The important word is exact. The optimized result must equal the result of full recomputation. What the benchmark measures The repository contains reproducible benchmarks comparing full recomputation with the HKD incremental path. Across the benchmark suite currently documented in the repository, the measured mean speedup is roughly 18,000x. That requires an important qualification: This does not mean HKD makes arbitrary programs 18,000x faster. It means that on workloads with sparse changes and reusable state, avoiding redundant computation can produce extremely large reductions in work. That distinction is important enough that I built the repository around reproducibility rather than a black-box benchmark claim. What HKD Kernel is not HKD Kernel: does not replace the macOS XNU kernel does not modify CPU microcode does not disable SIP does not change processor ALU hardware It is a user-space native computation library. Where I think this model is useful The workloads I’m most interested in include: dependency graphs incremental build systems large simulations with sparse updates optimization systems financial/risk recomputation logistics and scheduling cached numerical pipelines The real question is not “how fast is HKD?” It is: How much of your current computation is being repeated even though the inputs affecting it never changed? I’d especially like developers to try to break the benchmark assumptions or suggest w
AI 资讯
The AI Wrote the Diff. The Tests Wrote the Verdict.
The AI Wrote the Diff. The Tests Wrote the Verdict. AI refactor suggestions are hypotheses. Not facts. A free coding model rewrites your messy legacy function. The diff looks clean. CI stays green. Then a customer hits an edge case you forgot. This article shows a small workflow. Characterize legacy behavior first. Let the model propose a refactor. Run the same tests against both versions. The verdict: safe or not safe. Disclosure: This article was prepared as part of MonkeyCode's product outreach. Why Characterization Comes First Legacy code has no spec. The only reliable spec is current behavior. Even bugs are behavior. If your refactor changes a bug, you need to know. A characterization test records inputs and outputs. It does not judge right or wrong. It freezes the current contract. After freezing, every difference becomes visible. Step 1: Capture Real Inputs and Outputs Pick one messy function. I used a shipping calculator. Nested conditionals, magic numbers, zero tests. Write a probe script. Call the function with realistic cases. Save outputs as JSON. import json from legacy import calculate_shipping cases = [ { ' items ' : [{ ' weight ' : 2.0 , ' qty ' : 3 }], ' region ' : ' US ' }, { ' items ' : [{ ' weight ' : 0.5 , ' qty ' : 10 }], ' region ' : ' EU ' }, { ' items ' : [{ ' weight ' : 0.2 , ' qty ' : 1 }], ' region ' : ' US ' }, { ' items ' : [{ ' weight ' : 5.0 , ' qty ' : 2 }], ' region ' : ' JP ' }, ] for c in cases : result = calculate_shipping ( c [ ' items ' ], c [ ' region ' ]) print ( json . dumps ({ ' input ' : c , ' output ' : result })) Save output to captured.json . That becomes ground truth. Step 2: Ask the Model for a Refactor MonkeyCode's free model access lets me prompt from the CLI. I gave the model one strict instruction: keep behavior identical. Refactor calculate_shipping into smaller functions. Do NOT change edge cases. Do NOT change rounding. Extract private helpers only. The model returned a diff. It split the function into three he
AI 资讯
🔄 Loops in JavaScript
Imagine a teacher wants to greet 5 students: Hello Arun Hello Kumar Hello Ravi Hello Priya Hello Divya Without a loop, we need to write the same code multiple times. console . log ( " Hello Arun " ); console . log ( " Hello Kumar " ); console . log ( " Hello Ravi " ); console . log ( " Hello Priya " ); console . log ( " Hello Divya " ); Instead of writing the same type of code again and again, JavaScript provides loops . 🔄 What is a Loop? A loop is used to execute a block of code repeatedly. It helps us avoid writing the same code again and again. A loop continues running based on a condition or a collection of values . In simple words: A loop means repeating a task multiple times using code. For example: For every student: Print the student's name This is the basic idea of a loop. 🤔 Why Do We Use Loops? Loops are useful when the same task needs to be performed multiple times. For example, without a loop: console . log ( " Hello " ); console . log ( " Hello " ); console . log ( " Hello " ); console . log ( " Hello " ); console . log ( " Hello " ); Using a loop: for ( let i = 1 ; i <= 5 ; i ++ ) { console . log ( " Hello " ); } Output: Hello Hello Hello Hello Hello If the task needs to be performed 100 or 1000 times, using a loop is much easier than writing the same code repeatedly. 📍 Where Are Loops Used? Loops can be used in many situations, such as: Displaying a list of products Processing a list of students Reading values from an array Printing numbers Calculating marks Processing multiple records Repeating a task until a condition becomes false For example: For every product: Display the product ⏰ When Should We Use a Loop? A loop can be used when: The same task needs to be performed multiple times. For example: For every student: Display the student's name or: While the password is incorrect: Ask for the password again Different situations require different types of loops. 🔢 Types of Loops in JavaScript JavaScript provides different types of loops: for loop whi
开发者
Pattern in Number Spirals
submitted by /u/Nouman-Rahman [link] [留言]
AI 资讯
AI-Based Collaboration Tools for Remote Software Teams (2026)
Originally published at nlocoding.com 26% of remote software teams report missing critical project deadlines due to miscommunication—despite using two or more collaboration tools (Gartner, 2026). The proliferation of AI-based collaboration tools for remote software teams isn’t hype—it's necessity. In 2026, 81% of tech companies operate partially or fully remote (Buffer, 2026). The tools have changed. The stakes haven’t. One communication failure and the sprint backlog becomes a graveyard. The difference now: AI can actually fix this. AI-based collaboration tools are rewriting team productivity in 2026 AI-based collaboration tools for remote software teams automate routine coordination, reduce context-switching, and surface blockers in real time. According to Atlassian’s 2026 report, teams using AI-driven tools resolve tasks 42% faster. Not magic. Just relentless automation of the boring parts. You’ll notice the biggest gain is invisible—less time wasted chasing status updates, more time on code. Actionable takeaway: Pick one AI-native platform and go deep. Stacking tools multiplies confusion. 42%Faster task resolution with AI-driven collaboration (Atlassian, 2026) Integrated AI assistants are now table stakes, not a luxury Most people get this wrong: Slackbot isn’t AI. In 2026, 74% of remote teams rely on integrated AI assistants for core workflows (G2, 2026). These bots summarize meeting transcripts, auto-generate Jira tickets, and flag misaligned priorities before you even notice. Microsoft Teams’ Copilot costs $30/user/month and saves the average dev team 5 hours/week (Microsoft, 2026). Actionable takeaway: Train your team to interact with the AI—not ignore its nudges. 💡 Pro Tip: Feed your AI assistant high-quality prompts. Sloppy input = irrelevant output. Use specific, action-oriented queries for summaries and follow-ups. Real-time code collaboration powered by AI cuts merge conflicts in half The data shows: GitHub Copilot’s Live Share reduces code merge confli
AI 资讯
IPQS False Positives: How a New Domain Got a 95 Risk Score
A little over two months ago, I registered a new domain for personal use. The idea was simple. I wanted a permanent, professional email address based on my last name, something like first@lastname.me . I registered the domain for ten years because I wasn’t building a disposable project, launching a marketing funnel, or testing some short-lived startup idea. I wanted an email identity I could keep for the long haul. I configured the domain properly. It has valid DNS. SPF is enabled. DMARC is enabled. It isn’t parked for sale. It isn’t sending spam. It isn’t distributing malware. It isn’t impersonating a bank, crypto exchange, social network, government agency, or anyone else. Then I checked it with IPQualityScore, also known as IPQS. The result was absurd: Phishing: true Suspicious: true Risk score: 95 Spamming: false Malware: false SPF enabled: true DMARC enabled: true DNS valid: true Parked domain: false Hosted content: false Category: N/A Domain rank: 0 Risky TLD: true In other words, IPQS acknowledged that the domain had valid DNS and email authentication, found no spam, found no malware, found no hosted content, assigned it no content category, and still labeled it as phishing with a risk score of 95 out of 100. I submitted a correction request about a month ago. I received no explanation. No evidence. No request for verification. No ticket update. No human response. As of August 29, 2026, the status is still unchanged. That isn’t a harmless technical oddity. IPQualityScore sells reputation and fraud-risk data that businesses can use to block users, reject signups, review transactions, investigate security alerts, and decide whether a domain, email address, IP address, phone number, or device should be trusted. If you’re going to sell suspicion as a service, you need to be accountable when your suspicion is wrong. IPQS, in my case, has been neither accurate nor accountable. A score of 95 is not a gentle warning IPQualityScore’s documentation describes its URL ri
科技前沿
Why 1080p movies can look better than 4K movies on your TV
Resolution isn't the only thing that matters for a quality picture.
AI 资讯
At TechBBQ, Europe’s AI conversations kept coming back to: Who’s actually in control?
Investors, founders, and operators from across Europe arrived for the annual Nordic TechBBQ conference to talk about how humans can have agency over AI.
开发者
Calibrate Before You Accelerate: Bias Toward Action in a New Role
AI 资讯
“We’re not doing 30 bets a year”: Vijay Pande on betting small after running $4 billion at a16z
Vijay Pande — who left a16z's roughly $4 billion biotech practice last year to start the much smaller, AI-native VZVC — talks about why biology is finally shifting from a "discovery" science to an "engineering" one, why clinical trials are still brutally expensive, and why he thinks open, shared datasets (not walled-off ones) are what will actually let AI transform medicine.