- Joined
Can AI really replace an interior designer? I put it to the test
https://www.standard.co.uk/homesandproperty/ai-become-my-interior-designer-b1299721.html
An AI Bot Followed Me. Now I Have Questions
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass The...#devchallenge #hf26challenge #ai #webdev #software #coding #development #engineering #inclusive #community
Buy This, Not That, Drop This There” - I Made It Make Sense
ChatGPT has a new feature called dots. You create your own AI assistant inside ChatGPT, connect it to...#chatgpt #ai #automation #productivity #software #coding #development #engineering #inclusive #community
I Connected ChatGPT dots to Gmail, Calendar, Slack and Notion to See What It Can and Can't Do
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass ...#devchallenge #hf26challenge #ai #webdev #software #coding #development #engineering #inclusive #community
AI Interview Simulator: Prep Faster, Ace the Interview, and Go Touch Grass published: true
🏈 #CFB #CollegeFootball
@ashleysays.bsky.social@bsky.brid.gy He changed schools ... 👀
RE: https://bsky.app/profile/did:plc:tw77ipw5w2xwv3hzc6mrljsf/post/3muqatjxvts2z
Pros Try Fake Photoshop
#RCE #decompilation #ReverseEngineering #AI #LOL #Photoshop
youtu.be/fr0WIIZxvx0
Pros Try Fake AI Photoshop
Pros Try Fake AI Photoshop
YouTube
🏈 #CFB #CollegeFootball
Indiana goes for it on 4th Down and it pays off ...
Indiana 20 - 17 Nebraska
RE: https://mastodon.social/@gaza_verified_campaigns/117418140841154463
💔 Please help me continue my university education in Gaza.
After three years of war, displacement, and pain, I am still fighting to continue my dream of studying English Translation.
This month, I need €100 for university transportation so I can attend my classes and continue my second academic year.
Your support, no matter how small, can help me keep going and protect the hope I am holding on to.
🔗 https://chuffed.org/project/161851-help-aya-go-to-uni-and-survive-in-gaza
You do not attach a domain, a webhook, or a customer queue to a host you do not own. A free model route and a free server are a lease for a spike, not a runtime you quietly promote. If the lease card is missing, stale, or silent on exit, the change fails closed and the spike stays in quarantine.
That rule is narrower than "the tests are green." A green job can still pass on a box that disappears when an allowance ends or a terms page changes. You are gating ownership and exit. You are not gating the color of CI.
Name the blast radius before you name a tool
You are trying to stop one accident. A teammate prototypes an agent on a borrowed host, the demo works, and someone points real traffic at it because the URL already exists. The host was never promised as production. When the lease ends, you lose the process, the disk, or both, and the rollback is a chat thread.
Treat model headlines the same way. A nickname in a news post is not a pin you can deploy. You re-read the offer page on the day of the cutover, and you store that date in the repo. If you cannot point at the page you read, you do not promote.
Keep the spike. Refuse the binding. Those are different changes, and they should not share a commit.
What you may assume
Two availability claims are enough to run the spike, and nothing more. Free model access exists. A free server option exists.
Disclosure: This article was prepared as part of MonkeyCode's product outreach. MonkeyCode is one place you can use those two options while you fill out the lease card below. This article does not claim a quota, a hardware shape, a duration, a model catalog, a benchmark, or that the offer stays up.
You copy live fields from the current product page into the card. An empty field is a failed gate, not a guess you fill from memory or from an old chat. If you delete the product name, the gates still apply to any borrowed model route and any borrowed host.
Six gates, each with evidence
Copy this list into the pull request that would attach traffic. Each gate needs an artifact in the repo. A verbal "we checked" does not count.
1. Lease card is present and fresh
Evidence is ops/lease-card.yaml with terms_read_on, allowance_note, host_offer, model_route, and reader. Fail closed if the file is absent, if terms_read_on is outside your window, or if allowance_note is blank.
Do not invent a number to make the field pass. A stale figure is worse than an empty one, because reviewers trust it. Write what you read today, including "I could not find a published allowance" if that is the truth.
2. Model route is an identifier, not a headline
Evidence is a route string that matches the page you read, plus a one-line note of where you read it. Fail closed if the route is latest, free, default, or a name you only saw in a roundup.
You can change the pin later. You cannot promote on a moving nickname. Headlines are topic signals, not deploy config.
3. The borrowed host holds no long-lived secret
Evidence is a secret scan log, or a CI check that denies .env files and cloud keys on that path. Fail closed if customer tokens or deploy keys sit on the host.
A free server is a spike box. It is not a vault. A demo login is still a secret, and it does not belong in a notebook you might share.
4. Data exit is rehearsed
Evidence is a dry-run log that copies prompts, logs, and any user content to a place you own, then deletes the spike copy. Fail closed if the only copy lives on the borrowed disk.
"We can export later" is not a rehearsal. Later is when the disk is already gone. If the drill has not been run, the gate is red even if the demo looks fine.
5. Traffic attachment is a separate change
Evidence is a DNS, webhook, or queue diff in its own pull request, and that request links the lease card. Fail closed if one commit both creates the demo and binds production traffic.
Reviewers cannot see the blast radius in a mixed diff. Split it. The demo can merge on Monday. The binding waits for the card.
6. A person owns rollback, and the kill switch was timed
Evidence is a rollback_owner who is a named person, plus a drill note with a duration. Fail closed if the owner is "the team" or the drill has never been run.
You want a human who can unbind the route without asking who has the password. A rotation alias is not a person. Name someone for this cutover.
The checker you run before review
The script below is a proposal. It uses only the standard library. It does not call a vendor, and it does not know your quota. Run it locally, then wire a non-zero exit to the pull request that binds traffic.
# ops/lease-card.yaml
# Example only. Replace every value after you read the live page.
terms_read_on: "2026-10-10"
reader: "oncall-name"
host_offer: "free-server"
model_route: "pin-from-the-page-you-read"
allowance_note: "copied from the current offer page, not from memory"
data_exit: "rehearsed"
secrets_on_host: "no"
traffic_pr: "separate"
rollback_owner: "sam"
rollback_drill_on: "2026-10-09"
#!/usr/bin/env python3
"""Fail closed unless a borrowed-host lease card is complete and fresh.
Proposal only: stdlib, no network, no vendor client.
"""
from __future__ import annotations
import sys
from datetime import date, datetime
from pathlib import Path
REQUIRED = [
"terms_read_on",
"reader",
"host_offer",
"model_route",
"allowance_note",
"data_exit",
"secrets_on_host",
"traffic_pr",
"rollback_owner",
"rollback_drill_on",
]
BANNED_ROUTES = {"", "latest", "free", "default", "auto"}
MAX_AGE_DAYS = 7
def parse_flat_yaml(text: str) -> dict[str, str]:
data: dict[str, str] = {}
for raw in text.splitlines():
line = raw.split("#", 1)[0].strip()
if not line or ":" not in line:
continue
key, value = line.split(":", 1)
data[key.strip()] = value.strip().strip('"').strip("'")
return data
def age_days(iso_day: str, today: date) -> int:
parsed = datetime.strptime(iso_day, "%Y-%m-%d").date()
return (today - parsed).days
def main(path: str) -> int:
card = parse_flat_yaml(Path(path).read_text(encoding="utf-8"))
errors: list[str] =
[] for key in REQUIRED:
if not card.get(key):
errors.append(f"missing or blank: {key}")
route = card.get("model_route", "").lower()
if route in BANNED_ROUTES:
errors.append("model_route is a nickname, not a pin")
if card.get("secrets_on_host", "").lower() != "no":
errors.append("secrets_on_host must be no")
if card.get("data_exit", "").lower() != "rehearsed":
errors.append("data_exit must be rehearsed")
if card.get("traffic_pr", "").lower() != "separate":
errors.append("traffic attachment must be a separate change")
owner = card.get("rollback_owner", "").lower()
if owner in {"", "team", "oncall"}:
errors.append("rollback_owner must be a named person")
today = date.today()
for key in ("terms_read_on", "rollback_drill_on"):
raw = card.get(key, "")
if not raw:
continue
try:
delta = age_days(raw, today)
if delta > MAX_AGE_DAYS or delta < 0:
errors.append(f"{key} is outside the {MAX_AGE_DAYS}-day window")
except ValueError:
errors.append(f"{key} is not YYYY-MM-DD")
if errors:
print("FAIL closed:")
for item in errors:
print(f"- {item}")
return 1
print("PASS: lease card is complete enough to review the traffic PR")
return 0
if __name__ == "__main__":
target = sys.argv[1] if len(sys.argv) > 1 else "ops/lease-card.yaml"
sys.exit(main(target))
python3 ops/check_lease_card.py ops/lease-card.yaml
echo $?
A missing card is not a warning. It is a stop. Do not add a bypass label because the demo is on a call in twenty minutes.
What the drill log must contain
You keep the drill log next to the card, in ops/exit-drill.md. Four lines are enough. Each line is evidence a reviewer can diff.
- Start time and end time, in UTC, so the duration is not a vibe.
- Source path on the borrowed host, and the destination path you own.
- A checksum or file count that matches on both sides before you delete the spike copy.
- The command or console step that unbinds DNS, the webhook, or the queue, plus who ran it.
If any line is missing, gate 4 or gate 6 fails. You do not finish the drill in a ticket and leave the proof in a screenshot nobody can diff. A screenshot can support the log. It cannot replace it.
Also record what you refused to copy. Customer payloads that should never have been on the spike box are an incident note, not a successful exit. The checker will not catch that. A human reading the log will, which is why gate 6 names a person.
Review the traffic pull request in this order
- Open the lease card. Reject it if
terms_read_onis outside your window. - Read
allowance_note. If it looks remembered, send the author back to the live offer page. - Diff secrets. The borrowed host path must not gain a key, a token, or a
.env. - Read the exit log. A path you own must show the copy, and the spike copy must be deleted in the drill.
- Confirm the DNS, webhook, or queue diff is the only production binding in the request.
- Require the named rollback owner to acknowledge the pull request.
- Run the checker. Non-zero means no merge.
Short requests still get the full list. A small webhook is still production traffic if a customer can hit it.
A small decision table
| Situation | Result | What you do |
|---|---|---|
| Card fresh, no secrets, exit rehearsed, traffic change is separate | Review may proceed | Attach traffic only behind the kill switch you already timed |
| Demo works, card blank | Fail closed | Stay in quarantine |
| Allowance copied from memory or an old post | Fail closed | Re-read the offer page and restamp the date |
| One commit creates the app and the DNS record | Fail closed | Split the change |
| Rollback owner is a rotation name | Fail closed | Name a person for this cutover |
| You need a durability promise the page does not make | Do not use this path | Pick a host whose contract you can cite |
Use the table in the pull request comment. Paste the row you matched, and paste the checker output under it. Reviewers should not have to reconstruct your reasoning from a green demo GIF.
Limitations, and who should skip this
This checklist does not make a free server production-grade. It stops you from pretending a spike is a cutover. Skip it for regulated data, long-lived customer secrets, or any workload that needs an uptime promise.
Skip it if nobody will own rollback. A passing script is not a penetration test, a backup proof, or a legal reading of the offer. The 7-day window is a team choice in the proposal, not a vendor rule. Shorten it if the page you depend on changes often.
The checker parses a flat file on purpose so a reviewer can see every failure. It will not understand nested YAML. Keep the card flat. Do not publish quota figures, hardware names, or "unlimited" language in the card. Those claims go stale, and a stale card is how a borrowed host becomes an unowned dependency.
Keep the spike cheap enough to throw away
You can still learn on the borrowed box. Break the prompt. Time your own requests. Write down what failed. Those notes belong in a place you own.
Free model access and a free server are useful because the spike should be cheap enough to discard. Discard only works if exit is rehearsed before the URL leaves the notebook. Cheap is not the same as safe to bind.
If you want a concrete place to try that spike, use MonkeyCode's free model access and free server, copy the current offer into the lease card, and run the checker before any domain change. Stop there until a person reviews the traffic pull request.#devops #ai #tutorial #testing #software #coding #development #engineering #inclusive #community
No Lease Card, No Domain: Fail-Closed Gates for a Borrowed Agent Host
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass ...#devchallenge #hf26challenge #ai #opensource #software #coding #development #engineering #inclusive #community
Touch Grass: voice dares that get you off the screen, running on-device with Gemma 3 270M
Most AI agent reviews end with a vague "looks fine." Then the agent gets a few more tools, a broader...#ai #security #llm #mcp #software #coding #development #engineering #inclusive #community
Should This AI Agent Go Live? A 10-Question Go/No-Go Check
The switched capacitor is a bit bizarre. By opening and closing the switches at high frequency, charge moves in and out of the capacitor at a controlled rate, just like a resistor. Why replace a resistor with a complicated circuit? Because resistors are large and very inaccurate on chips.
Disclosure: I drafted this with help from an AI assistant (Claude). I checked the numbers against my...#vibecoding #gamedev #ai #showdev #software #coding #development #engineering #inclusive #community
A coding beginner shipped a game to 4 stores by directing AI agents: what worked, what broke
Your teammate drops a screenshot into the channel just after lunch. Twelve tasks. Twelve green checks. The caption asks you to paste the percentage into the weekly update.
You open the suite before you touch the slide. Three prompts name the function the hidden test calls. One fixture file still contains a comment that states the expected return value. Another task is a near-copy of a public tutorial the model has likely seen in training.
A perfect score, in that shape, is not a result. It is a harness smell. This walkthrough shows you how to add a negative-control slice so a headline number cannot hide leakage, a broken assertion, or a task the agent should have refused.
What a single percentage hides
A coding-agent score is a ratio. Numerator: trials you marked pass. Denominator: trials you chose to count. Change either side and the percentage moves, even if the model did not.
Public write-ups keep circling the same temptation. Someone reports zero mistakes on a small private set, and the number travels faster than the method. You do not need to litigate that post. You need a rule for your own suite: no solvable-slice pass rate gets quoted until the negative-control slice has been scored beside it.
That rule is methodological. It is not a product claim, and it is not a leaderboard.
The three slices you will actually run
Keep the suite small enough to rerun. Eight to sixteen tasks is enough to debug the harness. It is not enough to rank vendors. Label that limit in the report so nobody promotes the figure later.
Use three slices, stored as data, not as a vibe.
- Solvable. A real bug or a small feature. The prompt does not contain the patch, the test name, or the expected output.
- Negative control. A task the agent should not pass. Examples: the repo already matches the spec, the requested file does not exist, or the instruction contradicts the test. A pass here is a false pass.
- Canary. The same shape as a solvable task, plus a unique string that must never appear in a correct patch. If the model emits the canary, treat the trial as contaminated, not as a success.
You score the slices separately. You do not average them into one marketing percentage.
Step 1: Freeze the task card
Write one JSON object per task before you call any model. The card is the dataset. If a field is missing, the checker rejects the task instead of guessing.
{
"id": "neg-03",
"slice": "negative",
"prompt": "Add a discount function. Do not modify billing.py.",
"forbidden_paths": ["billing.py"],
"hidden_test": "tests/test_billing.py",
"canary": null,
"expected": "fail_or_abstain"
}
A solvable card sets "slice": "solvable" and "expected": "pass". A canary card sets "slice": "canary" and puts a random token in "canary", for example CANARY-7f3a9c. That token must not be a word the solution needs.
Do not generate these cards from the same chat that will later solve them. If you do, you have already leaked the rubric into the context you are grading.
Step 2: Pin the run controls
Controls are the boring part. They are also the part that stops a number from becoming an ad.
| Control | What you freeze | Why it matters |
|---|---|---|
| Attempt budget | Same max tries per task | Extra retries inflate pass rate |
| Tool list | Same editor, shell, test command | A richer tool schema is a different agent |
| Context | Prompt plus repo snapshot only | Hidden tests stay out of the prompt |
| Clock | One timeout value | A hung run is a fail, not a missing row |
| Scorer | This checker, versioned | Hand edits after the fact are a new study |
Write the freeze into run_envelope.json next to the tasks. If you change the timeout, you start a new run id. You do not edit yesterday's pass rate in place.
Step 3: Run the checker, not a vibe
The script below is a proposed checker. It has not been executed against a live model for this article. Treat it as a starting artifact. Run it yourself before you trust a row.
#!/usr/bin/env python3
"""Slice scorer for a tiny coding-agent suite. Unexecuted example."""
import argparse, json, sys
def load_jsonl(path):
with open(path, encoding="utf-8") as fh:
return [json.loads(line) for line in fh if line.strip()]
def false_pass(task, trial):
if task["slice"] != "negative":
return False
return trial.get("verdict") == "pass"
def canary_hit(task, trial):
token = task.get("canary")
if not token:
return False
blob = trial.get("patch", "") + trial.get("stdout", "")
return token in blob
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--tasks", required=True)
parser.add_argument("--trials", required=True)
args = parser.parse_args()
tasks = {row["id"]: row for row in load_jsonl(args.tasks)}
counts = {}
for trial in load_jsonl(args.trials):
task = tasks[trial["task_id"]]
key = task["slice"]
bucket = counts.setdefault(
key,
{"n": 0, "pass": 0, "false_pass": 0, "canary": 0, "abstain": 0},
)
bucket["n"] += 1
if trial.get("verdict") == "pass":
bucket["pass"] += 1
if trial.get("verdict") == "abstain":
bucket["abstain"] += 1
if false_pass(task, trial):
bucket["false_pass"] += 1
if canary_hit(task, trial):
bucket["canary"] += 1
solvable = counts.get("solvable", {})
negative = counts.get("negative", {})
canary = counts.get("canary", {})
quote_ok = (
negative.get("false_pass", 0) == 0
and canary.get("canary", 0) == 0
and solvable.get("n", 0) > 0
)
report = {"slices": counts, "headline_allowed": quote_ok}
json.dump(report, sys.stdout, indent=2)
print()
if __name__ == "__main__":
main()
Run it like this after your batch finishes:
python3 slice_scorer.py --tasks tasks.jsonl --trials trials.jsonl > report.json
python3 -m json.tool report.json
headline_allowed stays false when any negative-control trial passes, or when any canary token shows up in a patch or log. That is the point. A green solvable slice cannot outvote a dirty control slice.
Step 4: Read the metrics in the right order
Look at four numbers, in this order, and stop if an earlier one is bad.
- Canary hit count. Any hit means the prompt, the log, or the scorer leaked a marker into the artifact. Fix the harness. Do not quote a pass rate.
- False-pass count on the negative slice. A pass means the tests are weak, the agent ignored a constraint, or you labeled a solvable task as negative. All three are measurement bugs.
- Abstain rate. An agent that never abstains on impossible tasks is not more helpful. It is willing to invent a diff. Record abstains as their own outcome. Do not fold them into failures without saying so.
- Solvable pass rate. Only now. Report it as
passes / solvable_nfor this run id. Attach the envelope file. Do not call it accuracy, and do not compare it with a run that used a different retry budget.
If you want a sentence for the weekly update, use this shape: "On this run id, solvable pass rate was X/Y after zero false passes and zero canary hits. N is too small to rank models." Fill X and Y from your report. Leave them blank until the checker prints them.
Where a free run fits
You can execute this loop on a laptop. You can also park the batch on a free server so a dropped SSH session does not eat the run, and call a model through free access so you are not burning a paid quota while you debug the harness.
Disclosure: This article was prepared as part of MonkeyCode's product outreach.
MonkeyCode is the open-source project this draft was asked to cover. The operator supplied two availability claims only: free model access, and a free server option. This article does not name a model, a token allowance, a machine size, or a duration. Those details change. Read the current project docs before you plan a batch, and do not cite a quota from memory or from an older post.
Use the free path for harness debugging, not for a launch number. Generate candidate patches with whatever free model access you currently have. Store each trial as one JSONL row: task_id, verdict, patch, stdout, attempt. Run slice_scorer.py on the server, or copy the JSONL home and run it locally. Keep the raw file. A percentage without the file is a rumor.
If you do not have that access, nothing in the method depends on it. The checker is plain Python. The discipline is the product of the method, not of the host.
Why this number is not marketing
Marketing wants one figure, a rising arrow, and a model name in the title. This method refuses that shape on purpose.
A solvable pass rate with a dirty negative slice is compatible with a broken test, a leaked answer, or a lucky retry. Publishing it as "the agent scores 100%" trains your readers to ignore the denominator. Separating slices makes the failure visible: the agent looked strong because the suite could not say no.
You also refuse cross-run averages. Eight tasks on Tuesday and eight different tasks on Friday are not a sixteen-task study. They are two anecdotes. Say so in the report footer.
Limitations
This slice will not save a bad dataset. If every negative control is obviously impossible, a model can fail them and still be weak on real work. If your canary is a common word, you will flag innocent patches.
Eight tasks cannot support a ranking, a confidence interval you would show a customer, or a claim about coding ability. The checker does not compile code. You still need a real test command in the runner that produces verdict. No model was scored for this draft, so there is no measured pass rate to cite.
Timeouts, flaky tests, and network calls will still move verdict. Pin them in the envelope, or accept that the score jitters.
Who should not use this
Skip the method if you need a statistically powered comparison. You want a larger, pre-registered suite and a frozen hidden set, not a lunch-sized slice.
Skip it if the code is safety-critical. A JSONL checker is not a security review, a license review, or a substitute for reading the diff.
Skip it if you already plan to quote a single percentage in an ad. The checker is designed to withhold that sentence. Fighting it means you wanted a slogan, not a measurement.
What you do next
Pick four solvable tasks from a repo you maintain. Write four negative controls that should not pass. Add two canaries. Freeze the envelope. Run the checker. If headline_allowed is false, fix the suite before you mention a model.
When you want a place to park that first noisy batch, a free MonkeyCode server session is enough to keep the JSONL intact while you iterate. Confirm the current limits yourself, then archive the report next to the tasks. The archive is the result. The percentage is optional.#testing #ai #python #tutorial #software #coding #development #engineering #inclusive #community
Add a Negative-Control Slice Before You Believe a Coding-Agent Score
Salesforce renames AIForce to SIForce as Trump’s AI rebrand spreads - https://thenextweb.com/news/salesforce-aiforce-siforce-trump-super-intelligence easy to spot the sycophants these days... #ai #ai #ai
We went to an event this afternoon as part of #StokeBookFestival. A local bookseller made a very interesting point: he finds it hard to sell books that have #AI generated covers.
He said that many people see an AI generated cover, assume the rest is AI, and look elsewhere.