The receipt should come from the person who received it
This is a submission for Weekend Challenge: Generosity Edition What I Built Every...
找到 1950 篇相关文章
This is a submission for Weekend Challenge: Generosity Edition What I Built Every...
Yash K Saini — Engineer, building in public — AI/ML, low-level (Rust/C/C++), and open source. GitHub...
Hello, fellow version-bumping enthusiasts, sleep-deprived Rustaceans, and accidental software...
A cryptography library had a bottleneck no test could see : encrypting half a megabyte took fifty seconds. Every test passed. They had been passing for months. The cause is a trap that keeps recurring: a correct, well-documented optimisation that fixes the constant and not the order — and whose comment, precisely because it is well written, convinces the reader the problem is already solved. What the code did Quipu renders encrypted data as a sequence of symbols. To do that it converts the whole message into a single huge integer and repeatedly divides it to extract digits, the same way you would convert a base-10 number to base 2 by hand. The code did not divide one digit at a time. It carried a sensible optimisation: divide by the largest power of the base that fits in a machine word, extracting nine digits per pass instead of one. The comment explaining it opened by saying that doing it one at a time would be quadratic , and then described the improvement. All true. And the result was still quadratic: extracting nine digits per pass divides the work by nine; it does not change how the work grows. That sentence — "doing it this way would be quadratic" — reads in the past tense, as if it described the previous state. It described the current one. The measurement, which is the only thing that says so Size Time Factor per doubling 64 KiB 0.79 s — 128 KiB 3.16 s ×4.0 256 KiB 12.6 s ×4.0 512 KiB 50.7 s ×4.0 Exactly four, three times running. That is textbook quadratic: every time the input doubles, the time quadruples. Extrapolating, ten megabytes would have cost about five and a half hours . And here is the point: a correctness test sees none of this . A slow algorithm produces exactly the same bytes as a fast one. The suite stayed green, and would have stayed green forever. The fix is two hundred years old Nothing had to be invented. Divide-and-conquer radix conversion is a classical algorithm: instead of peeling digits off one end, you split the number in half — div
According to the Recording Industry Association of America (RIAA), CD sales exploded in the first half of 2026. A new report from the organization says 17.5 million CDs were sold in the first six months of the year, up from just 12 million during the same period in 2025. That's a jump of 45.7 percent, […]
GitHub热门项目 | The open-source observability database. One columnar engine for metrics, logs, and traces, on object storage. | Stars: 6,625 | 11 stars today | 语言: Rust
GitHub热门项目 | Personal AI Toolbox | Stars: 1,377 | 19 stars today | 语言: Rust
It's Bullitt meets Christine meets Waymo. A new short film imagines a San Francisco car chase where the other driver isn't human - and the car may be trying to kill you. That a robotaxi can now be cast as the villain with almost no explanation says something about the present moment. Autonomous cars have […]
I haven't written an article in a while. But nothing gives you more inspiration to write than an opinion you really, really disagree with. In my case it was I'm done using AI article by Brett Codes. Over around 2000 words, the author explains his negative views on AI and why he decided to stop using it . I am really no AI evangelist. I am aware of its limits and its problems and the incompetent people causing more harm than good with it. But I also see the goodies, and I am pretty much convinced author's decision was driven less by rationality and more by the false pride. Let's swallow one bitter, but important pill - no one is paying you solely for being a good developer. You are being paid for delivering a value. And yes - being a good developer greatly contributes towards the ability of delivering apps that work and help businesses yielding the values. And by "work" I mean not only they look good at the first glance, but also being not (too much) buggy, secure and maintainable in the foreseeable future. Therefore, purely vibe-coded projects driven solely by non-IT people often (if not always) fail. Because their authors don't know what it takes and so they cannot prompt their agents to reason and care about it. We devs do. Some of us know more, some of us know less (yet). The "AI is going to replace all programmers" is a lunatic nonsense. But so is rejecting AI and sanctifying "good ol' hand work" . Does anyone seriously think we should reject modern programming languages and revert into writing in assembly or even better directly in binary code? Do you develop in plain text editor without syntax highlighting? Why are you using containers and not building new on-premise servers every time? Whaat? You use frameworks and 3rd party libraries? You don't implement everything from scratch in the vanilla language? Seriously? Why all those abstractions and shortcuts? They make you lazy and they obfuscate the true principles, aren't they? You are a worse developer if you
There is a strange contradiction happening in software engineering right now. A lot of developers are worried that AI is going to make them obsolete. At the same time, the people building the most capable AI coding tools are demonstrating something that should probably make us rethink what being a software engineer actually means. I don't think the future is one where nobody understands software anymore. I think it is one where writing the software becomes dramatically cheaper. And if that happens, the thing that makes an engineer valuable has to move. That is what I mean by career safety. Career safety isn't about making yourself impossible to replace. It is about making your value portable. We've always resisted giving up the code Developers have a long history of being suspicious of abstractions that take work away from us. We went from machine code to assembly, from assembly to higher-level languages, from manually managing memory to garbage collection, from building everything ourselves to libraries and frameworks, and from text editors to IDEs. We even had entire categories of tools, such as CASE tools, designed to automate parts of software development. And every time, there was resistance. Because programmers don't just use code. We build our identities around it. John Carmack captured this unusually well when he wrote: “Coding” was never the source of value, and people shouldn’t get overly attached to it. — John Carmack He followed that with the more important point: Problem solving is the core skill. — John Carmack That is a difficult idea for developers to internalize because coding is tangible. You can point at the repository. You can point at the pull request. You can count the commits. You can say, "I wrote this." But the business doesn't ultimately pay you for the number of lines you wrote. It pays you for what those lines accomplish. The business never really bought the code A company doesn't wake up in the morning thinking: "We need 14,000 more line
TL;DR — I put an AI code reviewer on a pull request written by an AI coding agent. On the default setting it found nothing. On the strict setting it found a real vulnerability. And the patch it offered would have quietly broken every negative number in the exported file. I ship small browser tools written by Claude Code, and I am not a good enough reviewer to catch a security bug in code I did not write. That is the awkward kind of gap: the code looks fine, the page works, the tests pass. So I installed CodeRabbit on the repository and gave it something real to read: a CSV export for a pricing calculator. One row per material line, then other costs, total cost, selling price, profit, margin. About sixty lines of vanilla JS. My own checks passed first — a static site audit, plus a headless browser run of the tool, 14 of 14. Round 1: silence No actionable comments were generated in the recent review. That is the default. CodeRabbit ships a review profile called CHILL , tuned not to nag. For a team drowning in review comments that is probably right. For someone who cannot fully audit their own code, silence is the least useful answer available. So I committed a config file: # .coderabbit.yaml reviews : profile : assertive Same commit. Same diff. Same reviewer. Only the setting changed. Round 2: a real bug, checked the hard way The strict pass flagged CSV formula injection (CWE-1236) , and it was right. A spreadsheet treats a cell that begins with = , + , - or @ as a formula. Name a product =1+1 , export it, and the number two appears in the file the other person opens. Pick a nastier formula and it stops being a curiosity. My csvCell() escaped quotes and commas correctly and did nothing at all about this. What surprised me was how it checked. Folded into the comment was a shell command it had actually run against the repo — a ripgrep over every place a product name or unit flows into the exporter — to see whether something upstream already sanitised the value. It did n
Are you pushing your body to the limit or just driving it into the ground? In the world of high-performance athletics and biohacking, Heart Rate Variability (HRV) has become the "North Star" for recovery. But raw numbers from your Garmin or Oura Ring only tell half the story. To truly understand the relationship between sleep quality , exercise load , and stress perception , we need more than a dashboard—we need a predictive pipeline. In this tutorial, we will build a multi-dimensional analysis system using Scikit-learn , LSTM (Keras) , and the Terra API to predict overtraining risks. By the end of this guide, you'll know how to turn messy wearable data into actionable health insights. The Architecture: From Bio-Signals to Insights To handle the complexity of time-series data (HRV) and categorical features (activity types), we use a hybrid approach. We use Random Forest to identify which lifestyle factors impact recovery the most and LSTM to predict future HRV trends based on historical sequences. graph TD A[Garmin / Oura Ring / Apple Watch] -->|Webhook| B(Terra API) B --> C{Data Preprocessing} C -->|Feature Engineering| D[Random Forest Classifier] C -->|Sequence Processing| E[LSTM Neural Network] D -->|Feature Importance| F[Stress Analysis Engine] E -->|Trend Prediction| F F --> G[FastAPI Endpoint] G --> H[End User Dashboard] Prerequisites To follow along, you'll need: Terra API Keys : For unified access to wearable data (Garmin, Oura, etc.). Tech Stack : Python 3.9+, Scikit-learn, Keras/TensorFlow, and FastAPI. The Mindset : A passion for Health Tech and Wearable Data Science . Step 1: Ingesting Data with Terra API Standardizing data across different wearables is a nightmare. The Terra API acts as an abstraction layer, giving us a unified JSON structure for heart rate, sleep, and activity. import requests def get_wearable_data ( user_id , start_date ): # Using Terra API to fetch aggregated daily health data url = f " https://api.tryterra.co/v2/daily?user_id= { use
Audacity 4 has been in the works for some time, and had its own mini controversy last year when an unfortunate redesigned logo started making the rounds. The final version of the new icon isn't nearly as bad as the early rendition that was circulating last October. But more importantly, all the promised improvements to […]
Other archives and libraries around the world may also contain genetic traces of past disease outbreaks.
I have spent more than six years shipping production software and I have no public repositories worth showing you. Everything substantial I have written at work lives in private repositories belonging to the companies I wrote it for, and confidentiality obligations do not lapse when a role ends. So I cannot hand you the code, and I am not going to. That is not caution for its own sake. An engineer who sends a prospective employer another company's source code has told you exactly what they will do with yours. The restraint is part of what you are assessing, and I would want the same restraint applied to my work later. Which leaves a real problem. "I was the principal author of the web application" and "I contributed to the web application" are the same sentence to a reader who cannot check either. Most engineering CVs resolve this by getting louder. I think the only honest resolution is to publish the measurement method rather than the artefact, in enough detail that someone familiar with the tools can judge the figure on its own terms without ever seeing the repository. Here is the method I actually used, what it does badly, and the places where applying it forced me to shrink a claim I would have preferred to keep. Three measurements, in increasing order of rigour All-branch commit count. Total authored activity. Do not use this. It counts abandoned branches, spikes and experiments, and it inflates — usually in favour of whoever is most willing to commit. It is the number that makes contribution graphs look impressive and says the least about a codebase. Production-branch commit count, scoped to tenure. What reached customers, while you were there. Better, because it excludes work that never shipped, and because scoping to tenure stops you either taking credit for years of history that predate you or being penalised for them. But it still counts commits, and a commit is a unit of activity, not a unit of code. Commit share rewards granular committers and punishes p
The standard objection to writing the design down is that it is what you give up in exchange for speed. Early-stage companies are meant to be the place where you skip it: no specifications, no plans, just build the thing and find out. Documentation is treated as a tax that mature organisations can afford and small ones cannot. I have worked the other way round, and I want to make the argument properly rather than just assert it. At Cendra , across a twelve-month tenure as one of two founding engineers, the work produced 255 design specifications, 207 implementation plans and 17 production runbooks. Over the same period: 377 production releases coordinated across four repositories, and 482 merge commits across those repositories (an all-merges count, broader than the frontend-only first-parent integration figure on the Cendra page), across 239 active development days. That release figure works out at roughly one every twenty-two hours. All of those figures are tenure-scoped, and self-measured against private repositories while I held authorised access to them, which is a caveat I will come back to. But the shape is the point: the documents and the shipping happened together, at the same time, by the same person. What I am not claiming I cannot prove the specifications caused the cadence. There is no control group. It is entirely possible to imagine a version of that year with no documents and more releases, and I have no way to rule it out. What I can do is describe precisely what the artefacts removed from the critical path, and let you judge whether that is worth the hours. The mechanism matters more than the correlation, because the mechanism is the part that transfers to your codebase rather than mine. The specification is a comprehension test I administer to myself The honest reason I write a design down before building it is not communication. It is that writing it is how I find out whether I actually understand the problem. There is a specific and reliable exp
It's not quite the "push button; get song" of Suno, but Roland's new Melody Flip tool marks the company's foray into generative AI music. Available as a plug-in for your digital audio workstation (DAW), Melody Flip offers around 250 "Palettes," which are essentially themed collections of musical ideas sorted by genre. You can start from […]
It’s officially the Ternus era at Apple. Tim Cook stepped down as CEO this week, handing the company to former hardware chief John Ternus, whose first memo promised a “huge launch next week” — timing that puts Apple’s next iPhone event on his desk before he’s even settled in. Cook isn’t going far, though: he’s staying on as Executive Chairman, focused on the kind of policy […]
The company says no children under 13 can ride -- even with a parent. That's more restrictive than the Model Y SUVs it's using as robotaxis.
Saying X is “formerly Twitter” in App Store lets Musk block use of Twitter name.