Mentions

Conversations linking to GitHub, newest first. Times are UTC.

Mentions by source

X

6,388
Nov 10, 15:00Nov 11, 15:00

Bluesky

2,000
Nov 10, 17:00Nov 11, 17:00
Nov 10, 17:00Nov 11, 17:00
Nov 10, 17:00Nov 11, 17:00
Nov 10, 17:00Nov 11, 17:00
Nov 10, 17:00Nov 11, 17:00
Nov 10, 17:00Nov 11, 17:00
Nov 10, 16:00Nov 11, 16:00
Oct 14, 21:00Oct 15, 21:00

Delayed · data through Oct 15, 21:00 UTC

DEV

828
Nov 10, 17:00Nov 11, 17:00
Nov 10, 17:00Nov 11, 17:00
Nov 10, 10:00Nov 11, 10:00

Delayed · data through Nov 11, 10:00 UTC

Nov 10, 17:00Nov 11, 17:00
Oct 28, 01:00Oct 29, 01:00

Delayed · data through Oct 29, 01:00 UTC

Nov 8, 11:00Nov 9, 11:00

Delayed · data through Nov 9, 11:00 UTC

Nov 10, 17:00Nov 11, 17:00

Latest posts

  1. DiscImageStudio: burn visible artwork onto CDs, DVDs and Blu-ray discs (github.com) Discussion | Main Link

  2. X@yudhanjaya · 1 like · 33 views

    @domesticahobart Sure thing. Will do. I now have results from quite a few machines thanks to the people running Shoggoth: yudhanjaya/Shoggoth

  3. X@benmaritz · 5 likes · 230 views

    Accounting factory ripping on its first month end. 100+ agents running at once doing bank reconciliations. Takes about 2-3 hours each and about a 60% one-shot rate. Not bad as a start. Custom control plane running sol 6.1 agents in open-inspect/background-agents

  4. X@xavriseteritory · 1 like · 43 views

    🔗 Live Demo: pot-starter-hub.vercel.app 💻 GitHub: neduojile/pot-starter-hub Would love to hear your thoughts and feedback. Let’s keep building!

  5. Location: Kathmandu, Nepal (UTC+5:45) Remote: Yes — worldwide, flexible with US/EU overlap Willing to relocate: Yes Technologies: TypeScript, React, Next.js, Node.js, Express, PostgreSQL, Supabase, Redis, Docker, MCP, AI/LLM integrations Résumé/CV: abidit.github.io GitHub: github.com/Abidit Email: abistha01@gmail.com Full-stack / Product Engineer with ~5 years of experience shipping production software, strongest in React, TypeScript, Next.js, and Node.js. At Programiz, I worked on AI-assisted learning features, interactive coding tools, and production systems used by learners and educational institutions. I've also led product delivery cycles and worked across engineering, UX, and product decisions. Recently, I've focused on AI/agent infrastructure, including PHI Guard MCP — a local-first scanner for sensitive health information with regression fixtures and explicitly documented limitations. I enjoy taking ambiguous requirements, investigating production issues, and shipping maintainable, tested solutions. Open to remote full-time and contract opportunities in frontend, full-stack, product engineering, and AI-enabled developer tools. Available immediately.

  6. X@cybertreiber · 1 like · 33 views

    @made_by_dy Please provide (more) benches using JSON and Map. What's your async/gc approach? Asking for a friend (ahirner/perry-wit)

  7. YouTubeRaymond Weiss · YouTube description · 28 views

    GeneralStaff: run many AI projects from one chat GeneralStaff (GS) is an open-source orchestration harness. You run every project from one chat. GS writes a card for each job, hands it to an AI helper, and checks the work against the project's own plan before it reaches you. This short film follows a day with GS: the morning brief, handing out the work, what happens while you are at your day job, the checks, the one decision it asks you for, and the evening digest. GitHub: lerugray/generalstaff Website: generalstaff.io Every frame is drawn by code, and the music is code-composed too.

  8. X@OryhAI · 2 likes · 1 repost · 200 views

    Your agent says "shipped." Can you check the records? Oryh demo: review an order, reserve stock, authorize shipment, then read back the shipment and stock records. 80 pickleballs + 4 bags. Zero outstanding. Demo data. Explore the code + Skills: AIE-enginehub/Oryh t.co

  9. X@massimov_nyc · 1 like · 68 views

    Did a fun little hackathon project at @ComfyUI Reframing and restyling 3DGS splats with #ltx custom camera movements in post production. Will explore this more in the future this was just an MVP! #OpenSourceHiggsfield massimovendola/splat-cinema-studio

  10. Redditu/Ertelun · r/u_Ertelun · 1 point

    DLM Desktop 1.3.16: skip registered works at download start I develop DLM Desktop, a local Windows library for organizing and viewing digital works. Version 1.3.16 checks supported DMM/FANZA, DLsite and BOOTH downloads for an already registered provider/product ID when the download starts. It checks all configured libraries, pauses the transfer during the local check and skips a known duplicate instead of downloading the whole file and then holding the import. For an update or intentional replacement, use Redownload in the work details, then start the download on the official page. The original destination is checked before transfer and again at import. DLsite multipart files for the same explicitly selected work remain supported. This uses exact provider/product IDs, not title or creator similarity. Unknown or conflicting IDs and content-hash providers retain completed-file checks. Initial requests and browser/TCP buffering can still consume bytes; this is not a zero-traffic guarantee or a measured real-store savings percentage. Windows x64, unsigned ZIP. Close DLM and extract the full ZIP into a new empty folder; keep the EXE and app/ together. Browser workflows still require stable WebView2 Runtime 156.0.4314.58 or later. Release, documentation and verification: github.com/Ertelun/dlm-desktop/releases/tag/v1.3.…

  11. Redditu/SerakSan · r/NintendoFans · 2 points · 1 comment

    A little Minish Cap scene maker I've been working on Hi guys! I've been making Minish Studio, a free fan editor for playing around with The Minish Cap's sprites and environments. You can make your own Hyrule scenes, put characters and bosses together, write NPC conversations, or fill the map with little battles and Easter eggs. The gallery shows map scenes, the editor, and a little walking loop. You can also bring in your own pictures, add Zelda-inspired pixel frames, make comics or Instagram carousels, and export short animations. There's a simple mode where you pick a movement and speed, plus a timeline for more control. Animation still has a few rough edges. It's pretty niche, but I thought some Nintendo fans here might have fun with it :) The sprites are included, it runs in your browser or offline, and your creations stay on your device. Try it: seraksan.github.io GitHub / offline download: SerakSan/minish-studio Editor by SerakSan. Unofficial fan project. Game art: Nintendo/Capcom. Hyrule atlas mapped by rocktyt (VGMaps); minimap sheet by Bacon (The Spriters Resource). Sources and contributor credits: github.com/SerakSan/minish-studio/blob/main/CREDI… Enjoy! :)

  12. How to set up a custom CS2 broadcast HUD: a step-by-step GSI guide --- title: "How to set up a custom CS2 broadcast HUD: a step-by-step GSI guide" published: true description: "Everything you need to run a Major-style broadcast HUD in Counter-Strike 2: the GSI cfg file, the Python server, the OBS setup and fixes for the most common problems." tags: gamedev, cs2, obs, tutorial cover_image: hasanalpgungor.com canonical_url: hasanalpgungor.com --- The custom overlays you see on tournament streams (team panels, the killfeed, the bomb timer) do not come from the game itself. A separate overlay reads the live match data the game sends out, and the streaming software puts it on top of the game. In this guide I set up my own open source CS2 Major HUD step by step. The same idea works for other GSI-based HUDs too. What you need - Counter-Strike 2 (Steam) - Python 3 (from python.org) - OBS Studio, or any streaming software that can add a browser source - The HUD files: github.com/manyaksisko35/CounterStrike2MajorHUD 1. Add the GSI cfg file to the game CS2's Game State Integration (GSI) sends the state of the match as JSON to an address you choose. To turn it on, put a file whose name starts with gamestate_integration_ and ends with .cfg into the game's cfg folder. Copy gamestate_integration_manyak.cfg from the project into this folder: Steam\steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg The easy way to find the folder: in Steam, right-click CS2, choose Manage → Browse local files, then open game → csgo → cfg. This is what the file contains; the game sends data to 127.0.0.1:3000 every 0.1 seconds: "Manyaksisko35 GSI v1" { "uri" "http://127.0.0.1:3000" "timeout" "5.0" "buffer" "0.1" "throttle" "0.1" "heartbeat" "30.0" "data" { "provider" "1" "map" "1" "round" "1" "player_id" "1" "player_state" "1" "player_weapons" "1" "player_match_stats" "1" "allplayers_id" "1" "allplayers_state" "1" "allplayers_weapons" "1" "allplayers_match_stats" "1" "phase_countdowns" "1" "allplayers_position" "1" } } The game reads cfg files when it starts, so if CS2 is open, restart it. 2. Start the Python server A small Flask server receives the data the game sends. Open a terminal in the project folder, install the packages and start the server: pip install -r requirements.txt python main.py To check that it works, open http://127.0.0.1:3000 in a browser; you should see "CS2 GSI Sunucusu Aktif" ("CS2 GSI server is running"). During a match, http://127.0.0.1:3000/canli_veri shows the cleaned-up data the HUD reads. That is the first place to look when something is wrong. 3. Add the HUD to OBS - In OBS, click + in the Sources box and choose Browser. - Tick "Local file" and pick index.html from the project. - Set the width to 1920 and the height to 1080. The background is transparent, so nothing else is needed. - Move the browser source above your game capture. The HUD asks the server 10 times a second and only updates what changed, so it does not flicker on stream. Team names and logos are written in index.html; change them there for your own match. Common problems - The HUD shows no data and the timer stays at "--:--": check that the cfg file name starts with gamestate_integration_ and that it is in the right folder, then restart CS2. Make sure the server is running. - The team panels are empty: the game only sends every player's data (allplayers) while you are spectating, not while you are playing yourself. That is why broadcast HUDs are used in spectator mode or with GOTV. - "Address already in use": another program is using port 3000. Change the port in main.py, the uri line in the cfg and the address in index.html to the same new port. - Weapon icons are missing: the icons load from the internet. Without a connection, or if the address changes, the HUD shows the weapon name as text and keeps working. If you want to see how the HUD looks before setting it up, the project page has a live demo running a sample match. The code is open on GitHub, and I wrote about how I built it in a separate post. --- Originally published on my website. Live demo of the HUD: hasanalpgungor.com. Code: manyaksisko35/CounterStrike2MajorHUD.

  13. Hacker Newshemanth2k · 1 point · hemanth1999k/mcpgraphy

    Show HN: MCPgraphy – a proxy that learns when your agent's MCP tools work

  14. DEV@landedjobs · 1 comment

    The 10 AI system design questions that actually come up, and one way to answer all of them If you have an AI engineer onsite coming up, the round to worry about is system design. It runs 45 to 60 minutes, it carries the most weight, and it's where people who breezed through the coding screen lose the offer. The good news is that the prompts barely change. We went through reported AI system design questions from 2026 interview loops, and the same ten kept coming back. Design ChatGPT. Design a RAG system. Design a support bot. Design a banking chatbot that doesn't hallucinate. A few more. They look like ten different problems. They get graded as one. The interviewer isn't checking whether you memorised a ChatGPT architecture. They're watching whether you can walk the same seven steps under a clock and put a number on each. So this post gives you the seven steps first, then the ten prompts with the tradeoff each one is really testing. The full worked answers, with diagrams, latency budgets and cost math, are in a free repo we maintain: landedjobs/awesome-ai-engineer-interview The seven steps every answer walks Chip Huyen's book, HelloInterview's rubric and the open templates on GitHub all land on the same spine. What separates candidates is walking it without skipping and saying a number at every step. 1. Frame the problem. Ask about scale, freshness, tenancy, stakes and latency. Then say the numbers you're assuming out loud and get them confirmed. "Ten million requests a day is about 116 a second on average, call it 350 at peak. I'll assume a p99 of 500 ms. Does that match?" That sentence does more for you than any diagram. 2. Design the eval set before the system. LLM apps rarely have clean labels. Say where the quality signal will come from, and propose 50 to 200 hand-written cases (question, expected answer, expected source) that you grow from production traces. 3. Pick a baseline, then the simplest thing that beats it. BM25 for search. One prompt for generation. A router with canned answers for support. Without a baseline you can't say what your complexity buys. 4. Budget latency per stage. "It'll be under 500 ms" loses points. "Embed 15, search 20, rerank 60, first token 300, guardrails 40, the rest is buffer" wins them. For LLMs, split time to first token from time between tokens. The first is compute-bound prefill, the second is memory-bandwidth-bound decode, and they have different fixes. 5. Pair every metric with a counter-metric. Deflection rate with re-opened tickets. Relevance with false refusals. Offline scores are a gate. The A/B test is the verdict. 6. Put a dollar figure on it. Input tokens times input price, plus output tokens times output price, and output usually costs 3 to 5 times more per token. Multiply out to a month. 7. Say what breaks at 10x. The GPU queue, the index RAM, the cold start. Then how you degrade instead of falling over, like serving a cheaper model instead of timing out. Watch the clock as closely as the content. In a 60 minute round, finish framing and the eval set by minute 18. Completing all seven steps beats a perfect step three. Most people who fail this round fail it in the first ten minutes, by drawing a vector database before anyone has agreed what "good" means. The 10 prompts, and what each one is really testing 1. Design ChatGPT This is a serving question wearing a product costume. The graded tradeoff is latency against cost at scale. Talk about continuous batching, PagedAttention (the vLLM paper cut wasted KV-cache memory from 60-80% to under 4%), streaming, where conversation state lives, and prefix caching on the system prompt. The usual miss is giving one latency number instead of two. 2. Design a RAG system Scope it before you build it. How many documents, how fresh, and who is allowed to see what? Then ingestion, hybrid retrieval (dense plus BM25, fused with reciprocal rank fusion), a reranker, and a cited answer. Do the RAM math on the board. 50 million chunks at 1,536 dimensions and 4 bytes each is about 300 GB before index overhead, so it won't sit on one machine and you'll shard or compress. If you want a strong number, Anthropic's contextual retrieval write-up cut failed retrievals by 49% with contextual embeddings plus BM25, and 67% once a reranker was added. 3. Design LLM inference at scale GPU economics with a latency mask. Start with memory. A 70B model at FP16 is 140 GB, which doesn't fit on one 80 GB H100. FP8 halves that and int4 quarters it, if a quality check says the output holds up. Then the KV cache, which is the real memory pressure under load. Autoscale on queue depth, not GPU memory, because vLLM preallocates memory and the graph will always look full. The trap answer is "buy bigger GPUs to make tokens stream faster". Decode speed is bound by memory bandwidth, so a bigger card mostly helps prefill and concurrency. 4. Design an agent Start by arguing for the simplest pattern that works, usually a single loop. Then the math that drives everything else. If each step succeeds 95% of the time, a 10-step task succeeds about 60% of the time and a 20-step task about 36%. So the design is really about catching and recovering from failure. Fewer than 20 tools. Typed errors that say "retry", "try another way" or "ask a human". State saved outside the model. Traces you can replay. Grade it on pass^k (all k attempts succeed), not pass@k, which flatters you. 5. Design an AI tutoring platform This one has been reported at Oracle. The twist is that a correct answer isn't the goal. The student learning is the goal, so your eval has to measure teaching quality as well as faithfulness. Add safety rules for minors and cost at classroom scale. The tradeoff to name is grounding answers in the curriculum against being a helpful conversation partner. 6. Design a Claude chat service Same serving spine as ChatGPT, with the weight moved. Spend longer on safety checks for both inputs and outputs, on long context (when to retrieve instead of stuffing 200k tokens into every call), on tool use through MCP, and on keeping tenants isolated. Prepare this variant for frontier labs. 7. Design a customer-support chatbot with RAG The business metric is deflection with customer satisfaction held steady. Deflecting with wrong answers is worse than escalating. The shape is a router that picks between answering, acting and escalating, RAG over the help centre, and a short list of typed tools like get_order and issue_refund, with a human approving anything that moves money. The baseline is an intent classifier with canned replies for the top 30 intents. Mention that cost grows with every turn, because each turn resends the transcript. The worked answer lands around 3 cents a conversation. 8. Design a real-time chatbot API A service-level question. Streaming, budgets for first token and per token, rate limits with backoff, hedged requests for tail latency, autoscaling, and a fallback to a smaller model. The senior detail is that the fallback needs its own eval, because users get the degraded answer too. 9. Design a hallucination-free banking chatbot Push back on the premise first, politely. No LLM is provably hallucination-free. What you can build is grounded-or-refuse. Route transactional and out-of-scope requests away from free-form generation. Never let the model produce a number. It calls a typed balance API and quotes the result. Check every claim against a cited source before the answer goes out. Build three eval slices: questions it must answer, questions it must refuse, and adversarial ones. And track the false-refusal rate, because a bot that refuses everything is broken in a different way. 10. Design candidate sourcing over 750M profiles in under 500 ms Pure retrieval at scale, and the RAM math decides the design. 750 million profiles at 1,024 dimensions and 4 bytes each is about 3 TB raw. HNSW won't fit comfortably, so you compress with IVF-PQ (roughly 20x, to about 150 GB) and shard. Apply filters like location, seniority, recruiter permissions and data residency before the vector search, because filtering afterwards returns fewer than k results on narrow queries. Use two stages: vector search down to 500, a ranker down to 25. And in hiring, a fairness check on the ranked list is a legal requirement, not a nice-to-have. What a pass sounds like Three habits show up in almost every strong answer. The candidate names a baseline by minute 18. They describe quality in business terms, like deflection rate or the cost of one wrong answer, instead of model loss. And they bring up a counter-metric before anyone asks. The fourth habit is the one people skip. Check in after each step: "Does this match what you're looking for, or should I go deeper here?" In close calls, clear communication beats raw depth. To practise, pick three of these prompts, set a 45 minute timer, and answer out loud. Record it. Then compare it with the worked design and find the steps where you went quiet. Get the full set The repo has the rubric, ten worked designs with latency budgets and monthly cost estimates, 267 interview questions with answers, and breakdowns of the loops at 12 companies including OpenAI, Anthropic and Google DeepMind. It's MIT licensed and free. If it saves you a weekend, a star helps the next person find it. landedjobs/awesome-ai-engineer-interview If you had an AI system design round this year, what was the prompt? I'd like to add the ones that aren't on this list yet. I'm building landed, which finds jobs that fit you and applies to them early.

  15. X@LifeMa221082 · 3 likes · 1 repost · 73 views

    HairDeck 메모📝 캐릭터 그림 한 장 넣으면 움직이는 3D 머리카락을 만들어 주는 오픈소스 AI. 머리 모양이랑 흔들리게 해 주는 본까지 같이 만들어 줘서 바로 애니메이션에 쓸 수 있다고 함. VRM 아바타로도 뽑힘. 캐릭터 작업할 때 써보려고 저장👍 hyz317/HairDeck t.co

  16. Docs · readme stop the translated READMEs claiming a community review they never had, and put the env setup step after the copy that creates the file github.com/nirholas/three.ws/commit/0a913e8 · 2026-11-03 · nirholas

  17. Redditu/wapform · r/u_wapform · 1 point

    A Real-World Example of COBOL to Flutter Modernization Resources 1. WapForm COBOL — Modernization Architecture wapform.com 2. WapForm Flutter — Source Code of WapForm and Flutter github.com/wapform/wapform_flutter/tree/main/exam… 3. WapForm Technical Manual — English wapform.com 4. WapForm Toolkit — Windows Development Tool apps.microsoft.com 1. COBOL IDENTIFICATION DIVISION. PROGRAM-ID. SYSTEM-PARAMETERS. DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL BEGIN DECLARE SECTION END-EXEC. 01 WS-COMPANY PIC X(30). 01 WS-PHONE PIC X(15). EXEC SQL END DECLARE SECTION END-EXEC. 01 WS-TMP PIC X(30). PROCEDURE DIVISION. MAIN-PROCESS. EXEC SQL SELECT Company, Phone INTO :WS-COMPANY, :WS-PHONE FROM sys END-EXEC DISPLAY "Company Name [" FUNCTION TRIM(WS-COMPANY) "]: " WITH NO ADVANCING ACCEPT WS-TMP IF WS-TMP NOT = SPACES MOVE WS-TMP TO WS-COMPANY END-IF DISPLAY "Phone [" FUNCTION TRIM(WS-PHONE) "]: " WITH NO ADVANCING ACCEPT WS-TMP IF WS-TMP NOT = SPACES MOVE WS-TMP TO WS-PHONE END-IF EXEC SQL UPDATE sys SET Company = :WS-COMPANY, Phone = :WS-PHONE END-EXEC EXEC SQL COMMIT END-EXEC STOP RUN. 2. WapForm WML <?xml version="1.0"?> <wml> <card id="P" title="System Parameters"> <dbquery id="sys"> <![CDATA[select * from sys]]> <field fieldname="Company" displaylabel="Company Name"/> <field fieldname="Phone" displaylabel="Phone"/> </dbquery> <datasource dataset="sys"> <fieldset> Company Name:<input field="Company" size="30"/><br/> Phone:<input field="Phone" size="15"/><br/> </fieldset> </datasource> <do type="prev" label="Close"> <prev/> </do> </card> </wml> 3. Flutter Dart import 'package:flutter/material.dart'; import 'package:wapform_flutter/lazarus_db.dart'; import 'package:wapform_flutter/lazarus_sqldb.dart'; import 'package:wapform_flutter/lazarus_dbgrids.dart'; import 'package:wapform_flutter/lazarus_dbctrls.dart'; import 'package:wapform_flutter/lazarus_stdctrls.dart'; import 'package:wapform_flutter/lazarus_extctrls.dart'; import 'package:wapform_flutter/wapform_lookup_box.dart'; import 'package:wapform_flutter/wapform_expression.dart'; import 'package:wapform_flutter/wapform_lazarus.dart'; const String _kDb = 'WapProductionDB'; TWapSQLConnection? _wapConn; TWapSQLConnection _conn() { if (_wapConn == null) { final c = TWapSQLConnection(null, const WapDbBridgeDriver()); c.databaseName = _kDb; final tx = TSQLTransaction(); tx.database = c; _wapConn = c; } return _wapConn!; } TField _fieldOf(String type) { switch (type) { case 'integer': return TIntegerField(); case 'float': case 'currency': return TFloatField(); case 'date': case 'datetime': case 'time': return TDateTimeField(); case 'boolean': return TBooleanField(); default: return TStringField()..size = 0; } } void _fld(TSQLQuery q, String name, String label, {String type = '', bool readOnly = false}) { final f = _fieldOf(type); f.fieldName = name; f.fieldKind = TFieldKind.fkData; if (label != '') f.displayLabel = label; f.readOnly = readOnly; f.dataSet = q; } void _key(TSQLQuery q, String name, String label) { final f = _fieldOf(''); f.fieldName = name; f.fieldKind = TFieldKind.fkData; f.providerFlags = { TProviderFlag.pfInKey, TProviderFlag.pfInUpdate, TProviderFlag.pfInWhere, }; if (label != '') f.displayLabel = label; f.dataSet = q; } Future<void> _saveAsync(TSQLQuery q) async { if (dsEditModes.contains(q.state)) q.post(); await q.applyUpdatesAsync(); } Future<void> _delAsync(TSQLQuery q) async { q.delete(); await q.applyUpdatesAsync(); } const _kBlue = Color(0xFF1A6FB5); const _kBorder = Color(0xFFD3D1C7); const double _kChar = 8.0; double _w(num size) => size * _kChar; void showSysparam(BuildContext context) => showDialog( context: context, barrierDismissible: false, builder: (_) => const SysparamCardP(), ); class SysparamCardP extends StatefulWidget { final WapEvaluator? ev; final DataSetRegistry? reg; const SysparamCardP({super.key, this.ev, this.reg}); u/override State<SysparamCardP> createState() => _SysparamCardPState(); } class _SysparamCardPState extends State<SysparamCardP> { late final WapEvaluator _ev = widget.ev ?? WapEvaluator(); late final DataSetRegistry _reg = widget.reg ?? DataSetRegistry(); bool get _ownsReg => widget.reg == null; final List<String> _ownedDs = []; TSQLQuery dbquery(String id, String sqlText, {void Function(TSQLQuery ds)? define}) { final existing = _reg.find(id); TSQLQuery q; var isNew = false; if (existing is TSQLQuery) { q = existing; } else { q = TSQLQuery(); q.database = _conn(); q.name = id; _reg.put(id, q); isNew = true; _ownedDs.add(id); } if (sqlText.isNotEmpty) { final sql = expandSql(sqlText); if (q.active) q.close(); q.unPrepare(); q.sql.text = sql; } q.alwaysUpdateable = true; if (isNew && define != null) define(q); return q; } late final TSQLQuery _sys = dbquery("sys", r"select * from sys", define: (ds) { _key(ds, "Company", "Company Name"); _fld(ds, "Phone", "Phone"); }); late final TDataSource _sysSrc; bool _loading = true; String _error = ''; u/override void initState() { super.initState(); _conn(); _sysSrc = TDataSource()..dataSet = _sys; useEngine(_ev, _reg); _reg.put("sys", _sys); _load(); } u/override void dispose() { if (_ownsReg) { _sysSrc.dataSet = null; _sys.free(); _reg.releaseAll(); } else { for (final id in _ownedDs) { _reg.release(id); } } super.dispose(); } Future<void> _load() async { if (mounted) { setState(() { _loading = true; _error = ''; }); } try { await dbquery("sys", r"select * from sys").openAsync(); } catch (e) { if (mounted) setState(() => _error = e.toString()); } finally { if (mounted) setState(() => _loading = false); } } void _snack(String msg, {bool ok = false}) { if (!mounted) return; ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text(msg), backgroundColor: ok ? Colors.green.shade700 : Colors.red.shade700, duration: const Duration(seconds: 2), )); } Widget _edit(TDataSource src, String field, num size, {double order = 0, bool autofocus = false}) { Widget e = SizedBox( width: _w(size) < 44 ? 44.0 : _w(size), height: 28, child: TDBEdit( dataSource: src, dataField: field, autofocus: autofocus, font: const TextStyle(fontSize: 13), ), ); if (order > 0) { e = FocusTraversalOrder( order: NumericFocusOrder(order), child: e, ); } return e; } Widget _line(String label, String field, num size, {double order = 0, bool autofocus = false}) { return Padding( padding: const EdgeInsets.symmetric(vertical: 1), child: Row( children: [ SizedBox( width: 103, child: Text( label, textAlign: TextAlign.right, style: const TextStyle(fontSize: 13), ), ), _edit( _sysSrc, field, size, order: order, autofocus: autofocus, ), ], ), ); } Future<void> _saveIfEditing() async { await _saveAsync(_sys); } u/override Widget build(BuildContext context) { return PopScope( canPop: false, onPopInvokedWithResult: (didPop, result) async { if (didPop) return; try { await _saveIfEditing().timeout(const Duration(seconds: 5)); } catch (_) {} if (context.mounted) Navigator.of(context).pop(); }, child: Dialog( insetPadding: const EdgeInsets.all(12), shape: const RoundedRectangleBorder( borderRadius: BorderRadius.zero, ), child: ConstrainedBox( constraints: const BoxConstraints( maxWidth: 1180, maxHeight: 840, ), child: IntrinsicWidth( child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Container( padding: const EdgeInsets.symmetric( horizontal: 14, vertical: 10, ), color: _kBlue, child: const Row( children: [ Icon( Icons.article_outlined, color: Colors.white, size: 20, ), SizedBox(width: 8), Text( 'System Parameters', style: TextStyle( color: Colors.white, fontSize: 16, fontWeight: FontWeight.w600, ), ), ], ), ), Flexible( fit: FlexFit.loose, child: _loading ? const Center( child: CircularProgressIndicator(), ) : _error.isNotEmpty ? Center( child: Padding( padding: const EdgeInsets.all(20), child: Text( "Load failed: $_error", style: const TextStyle( color: Colors.red, ), ), ), ) : FocusTraversalGroup( policy: OrderedTraversalPolicy(), child: SingleChildScrollView( padding: const EdgeInsets.all(10), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ _line( "Company Name:", "Company", 30, order: 1, autofocus: true, ), _line( "Phone:", "Phone", 15, order: 2, ), ], ), ), ), ), Container( padding: const EdgeInsets.all(8), decoration: const BoxDecoration( border: Border( top: BorderSide(color: _kBorder), ), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ TButton( caption: "Close", onClick: () { Navigator.of(context).maybePop(); }, ), ], ), ), ], ), ), ), ), ); } }

  18. Fix · x402-discovery answer /.well-known/x402.json from the last built catalog instead of making a request wait 20 to 30 seconds on every market feed github.com/nirholas/three.ws/commit/03af674 · 2026-11-03 · nirholas

  19. X@vitalyiegorov · 3 likes · 55 views

    @thymikee @callstackio @vercel So, from almost two hours on macstudio/mini with two VMs limit and maestro To 17 minutes on slimmed simlock farm and e2e! budgie#1867 I encourage everyone to migrate!!!

  20. @hmetouch @u1tra_instinct @SamJWasserman @ComfyUI @robinjhuang @hellorob github.com/drowzeys/Imagination-Studio-by-keys-Wa… this is not your card but it is getting close.

  21. X@howtopam · 9 likes · 1 repost · 464 views

    MagicDesk - An open-source Android workstation. Native multi-window desktops, X11/Wayland, Termux and MCP automation. Shroot runs Linux, systemd, Docker and Podman via Shizuku/Shevery without root. Android 14+; managed Desktop 15+. mekhontsev/magicdesk t.co

  22. X@hidepon_dev · 2 likes · 7 views

    ▼ 入手先リンクはこちら🐾 🛒 Microsoft Store(Windows版) apps.microsoft.com 🐙 GitHub Release(macOS版 / Windows版) github.com/hidepon-dev/tokotoko-releases/releases お使いの環境に合わせて、好きな方から連れて帰ってあげてね🐾

  23. Redditu/HaruMx7 · r/snowsky · 7 points

    Have you guys tried this cfw? Hey guys, I wanna now if someone has tried this fork of ReChord on their echo mini 512 version, it seems very ambitious. dragarok/ReChord

  24. X@Chengcei_yt · 5 views

    我给「能量银行」建了一个 GitHub 项目页 🌱 把专注当作存入,把娱乐当作消费,让小元陪你分配自己的时间。 页面整理了功能介绍、界面截图和问题反馈入口。目前还是 Android 测试版,欢迎围观、提建议,也欢迎来帮忙测试! chengcei/energy-bank

  25. X@tech_wiki · 1 like · 1 repost · 180 views

    [Link] obsproject/obs-studio: OBS Studio - Free and open source software for live streaming and screen recording>obsproject/obs-studio 映像のキャプチャ、合成、エンコード、録画、ストリーミングを行う無料のOSS。ライセンスはGNU GPL v2以降

  26. Two commands in truspec had flags the docs never mentioned, and the gate meant to catch that let them hide. 0.9.0 fixes both. An agent-native API client needs a README that matches what ships. code-with-rashid/truspec

  27. X@star_oo16 · 2 views

    仓库在 YILS-LIN/short-video-factory ,v1.3.0 测的

  28. GitHub - rjzak/malware-modeler-rs: Generate training data and ML models for benign vs. malicious files plus related tools. Something I've been working on for a while: training lightweight machine learning models to determine if a file is benign or malicious based on raw byte sequences (n-grams). The goal is for anyone working with malware (and has goodware samples too) can train their own models, and this could be useful for resource-constrained environments of if you want a model for older systems not supported by typical AV vendors.

  29. V2EX@solidjoker · 软件

    极速 HDR 图片转换器,多格式输出,支持手机的 HDR 照片, JXR 游戏截图, 16-bit RAW 支持 HDR 格式的专业软件又太笨重了, 用 LocalViewer 开源的图片处理代码做了个 Qt 跨平台的图片转换器, 支持安卓苹果的 gain map 照片,Win11 的游戏截图,也支持相机的 RAW 文件转真 HDR. 可以直接导出浏览器兼容的 HDR 图片。 PS: 自我介绍:我是正版 DaVinci Resolve Studio, Calman, ColourSpace 用户,不是一键生成 APP 。 下载地址 JXRConverter 图片转换器 zmz125000/JXRConverter LocalViewer 安卓看图 zmz125000/LocalViewer RAW 原图来自 rawsamples.ch 功能 1. 转换 JXR, JXL, RAW 格式到浏览器和手机支持的 JPG/AVIF 格式。 2. 转换压缩手机 HDR 照片到 AVIF 格式. 6. 采用 Float32 高精度图片处理。 3. 支持 16bit Linear/scRGB/PQ 图片格式输出 3. 自动色彩管理,保留广色域,高色深,ICC, Exif 信息。 4. 准确的 JXR 和 RAW 格式转换流程,RAW 支持 HDR Boost 处理。 5. 快速加载图片缩略图, SSD 下瞬间解码 4K JXR 格式。 7. 支持 Windows, MacOS, Linux. 软件截图 ![0X0/691541709-a9cdc1e5-86de-4592-8fa6-4db33049ab23.webp]( ss1.eisite.cn) JXR, RAW 样图 ![0X0/PRAGMATA_4_17_2026_8_35_44_PM_gainmap.avif]( ss1.eisite.cn) ![0X0/Microsoft_Flight_Simulator_2024_-_1.5.4.0_5_31_2025_12_53_29_AM_gainmap.avif]( ss1.eisite.cn) ![0X0/Microsoft_Flight_Simulator_2024_-_1.5.24.0_8_12_2025_9_39_22_PM_gainmap.avif]( ss1.eisite.cn) ![0X0/RAW_CANON_EOS_5DS_hdr_boost_gainmap.avif]( ss1.eisite.cn)

  30. X@PunkChainer · 2 likes · 67 views

    Herramienta con la que monto este flujo: Claude Code: anthropics/claude-code Truco: guarda el plan en tasks/todo.md y los errores en tasks/lessons.md dentro del repo del agente. Así no repite fallos.

  31. X@pierreneter · 3 likes · 2 reposts · 286 views

    I built an open-source engine that opens DOCX / XLSX / PPTX right in the browser 🚀 300k-row spreadsheet → first paint in ~300ms Edit, collaborate in real time, save back to the original file One-line React embed. MIT. p10node/office-engine t.co

  32. DeepSeek запустила агентный фреймворк для GitHub DeepSeek выпустила dsh-superagent — фреймворк для работы с GitHub Issues и Pull Request. Штука позволяет запускать несколько ИИ-агентов параллельно, чтобы они разбирались с задачами в... deepseek-ai/dsh-superagent-prototype

  33. X@GauravAlbal · 10 views

    Mutation testing is a good start but try my fix my test skill to really get down to the root of it GauravAlbal/fix-my-tests (freshly updated!)

  34. Stop Trusting rotate 14 to Bound Your Disk: Practical logrotate Semantics on Linux A service starts writing 2 GB of logs a day instead of 200 MB. The logrotate rule has not changed in a year. It still says rotate 14, so it must be fine. It is not fine. rotate 14 is a count of files, not a disk budget. Fourteen files at 2 GB each is 28 GB. Nothing in that directive caps how large a single file grows before rotation, how often the rotator runs, or what happens when the writer ignores the rotation entirely. Most logrotate incidents I have seen are not broken syntax. They are correct configs that mean something different from what the operator assumed. Here is the mental model, the three size directives that are easy to confuse, and a way to test a rule before it matters. The number that looks like a quota rotate N means: keep N old versions, then remove the oldest. That is all. - rotate 0 removes old versions rather than keeping them. - rotate -1 never removes old logs, except through maxage. - rotate 14 with a 5 GB file still keeps up to 70 GB of rotated data. The actual disk ceiling is roughly rotate × size at rotation time, plus whatever the live file has grown to since the last run. If you want a bound, you have to bound the file size and make sure rotation runs often enough to enforce it. Two decision layers: the timer and the rules logrotate does not sit in the background watching files. Something invokes it — traditionally a daily cron job, on systemd systems usually logrotate.timer. Then logrotate reads its config and decides, per file, whether this invocation is a rotation. Two consequences follow. First, daily does not mean midnight. It means the first invocation of the day that considers the file. The upstream logrotate.timer ships with: [Timer] OnCalendar=daily RandomizedDelaySec=1h Persistent=true So on a stock setup the run lands somewhere in a one-hour window after midnight, not at 00:00:00. Persistent=true means a missed run is caught up after boot. Distributions do patch these units, so read yours: systemctl cat logrotate.timer logrotate.service systemctl list-timers 'logrotate*' Second, logrotate applies a rate limit of its own: it will not modify a log more than once per day unless the rule is size-based and logrotate runs more than once that day, or you force it. That is why adding a second daily timer does not produce two rotations. size, minsize, maxsize are three different questions These look interchangeable. They are not. - size 100M — rotate only when the file exceeds 100 MB, ignoring the time interval. It is mutually exclusive with daily/weekly/monthly in practice: the last one specified wins. - minsize 100M — rotate only if the file exceeds 100 MB and the time interval has elapsed. Both conditions must be true. - maxsize 100M — rotate when the file exceeds 100 MB even if the time interval has not elapsed. Either condition can trigger it. That last distinction is the one people miss. daily plus maxsize 100M gives you a safety valve, but only on days when logrotate actually runs. If it runs once a day and the service writes 2 GB in that day, the file can reach 2 GB before the next check. The maxsize directive did not fail; it was simply never consulted. If you need a tighter ceiling, run the rotator more often. A drop-in is enough: sudo systemctl edit logrotate.timer [Timer] OnCalendar= OnCalendar=hourly RandomizedDelaySec=5m The empty OnCalendar= clears the inherited value before the new one is added. Then: sudo systemctl daemon-reload sudo systemctl restart logrotate.timer Because the rule includes maxsize, the extra runs can rotate early when needed. Because logrotate still enforces its once-per-day rule for time-based rotation, the hourly timer does not turn daily into 24 rotations. One caveat: two invocations can overlap. logrotate locks its state file; if the lock is held, it exits with status 3. If you run it from your own oneshot unit, either accept that as success or let it wait: [Service] Type=oneshot ExecStart=/usr/sbin/logrotate /etc/logrotate.conf SuccessExitStatus=3 A production rule that actually bounds disk Here is a rule for an application that writes its own log files and can reopen them on a signal: /var/log/myapp/*.log { daily rotate 14 maxsize 100M missingok notifempty compress delaycompress sharedscripts create 0640 myapp myapp su myapp myapp postrotate /bin/systemctl reload myapp.service >/dev/null 2>&1 || true endscript } Why each line is there: - maxsize 100M puts a ceiling on a single file between runs. It does not replace the timer; it makes the timer's cadence matter less. - compress plus delaycompress compresses everything except the most recent rotated file. The delay matters when the writer might still hold the old file descriptor for a moment. - sharedscripts runs the reload once for the whole wildcard block, not once per matched file. Without it, a directory with ten logs gets ten reloads. - create 0640 myapp myapp recreates the file immediately after rotation, before postrotate runs. Omitted attributes are copied from the original file, but being explicit avoids surprises after a package changes the service user. - su myapp myapp performs the file operations as the application user. The man page recommends this when rotating files in directories controlled by non-privileged users, and it avoids the classic skip: skipping "/var/log/myapp/app.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") One subtlety: scripts are not affected by su. prerotate, postrotate, and the action scripts run as the user that invoked logrotate, with /bin/sh, an unspecified working directory, and no guarantees about your shell profile. Keep them short and use absolute paths. The copytruncate shortcut and what it costs Some programs cannot be told to reopen their log file. For those, logrotate offers copytruncate: copy the file, then truncate the original in place. It works, and it has a documented race. There is a small window between the copy and the truncate; records written in that window are lost. If the log is audited or feeds a billing pipeline, that is not a theoretical problem. Prefer a reopen signal when the application supports one. If it does not, copytruncate is a reasonable compromise, but do not combine it with create — the original file stays in place, so create has no effect. And if you need rotated files on a different filesystem, look at renamecopy rather than copytruncate; olddir normally has to be on the same device, and copy, copytruncate, and renamecopy are the documented exceptions. Test the rule without touching production logrotate -d is a dry run: it prints decisions and changes nothing, including the state file. Use a throwaway state file as well, so a test can never poison the real rotation schedule. demo=$(mktemp -d) mkdir -p "$demo/log" head -c 2048 /dev/zero | tr '\0' 'x' > "$demo/log/app.log" cat > "$demo/app.conf" <<EOF $demo/log/app.log { daily rotate 3 maxsize 1k missingok notifempty compress delaycompress create 0640 } EOF logrotate -d -s "$demo/state" "$demo/app.conf" The dry run should report that the file needs rotating because it exceeds maxsize. Now do it for real: logrotate -v -s "$demo/state" "$demo/app.conf" ls -l "$demo/log" You should have a fresh app.log and an older app.log.1. Run the same command again without writing more data: nothing rotates, because the state file now says the file was handled today and the size condition is no longer met. Append another 2 KB and run it a third time. It rotates again, on the same day, because the size criterion overrides the daily interval. That is the behavior you want to prove before trusting the rule in production. Do not use -f on a production config to "see what happens". It forces rotation regardless of the interval, which is exactly the thing you are trying to reason about. When it still will not fire Work through these before rewriting the rule: 1. The timer never ran. systemctl list-timers, then journalctl -u logrotate.service. Check for a failed condition, not just a failed exit code. 2. The service is skipped on battery. The upstream unit sets ConditionACPower=true. Laptop hosts on battery will skip the run; Persistent=true catches up later. Confirm with systemctl cat logrotate.service. 3. The log is smaller than the threshold. size and minsize are hard gates. maxsize is the only one that can pull a rotation forward. 4. The file is empty and notifempty is set. Nothing rotates, correctly. 5. The state file says it was already handled today. That is the once-per-day rule, not a bug. 6. The config file is being ignored. Files in an include directory are read in alphabetical order and skipped if they are not regular files or if their names end in a taboo extension such as .dpkg-old, .rpmnew, .disabled, or ~. Configs that are group- or world-writable are rejected for security reasons. 7. The parent directory is writable by a non-root group. logrotate skips the file. Add su with an appropriate user and group. 8. The glob matches more than you think. A bare * matches already-rotated files too. Prefer *.log, and use olddir or dateext to keep old files out of the match. 9. You are trying to rotate something under /etc or /usr. The shipped service uses ProtectSystem=full, which makes those trees read-only for the service. Logs do not belong there anyway. For a full trace of the decision, run the debug pass against the real config and filter for your file: sudo logrotate -d /etc/logrotate.conf 2>&1 | grep -A 8 '/var/log/myapp' What logrotate does not cover The systemd journal is not a text file and logrotate does not manage it. Rotating /var/log/journal by hand or pointing logrotate at it is the wrong tool. Bound it in /etc/systemd/journald.conf with SystemMaxUse= and SystemMaxFileSize=, then let journald enforce its own retention. Use logrotate for file-based logs: nginx, PostgreSQL, application logs, audit exports. Use journald's own limits for the journal. Mixing the two retention models is how hosts end up with a full disk and two teams blaming each other. Checklist - Treat rotate N as a file count, not a quota. - Add maxsize if a single file can grow between runs. - Run the rotator more often if that ceiling is still too loose. - Prefer reopen signals over copytruncate. - Test with -d and a throwaway state file before deploying. - Read systemctl cat logrotate.timer logrotate.service on the actual host. - Remember that the journal has its own retention settings. The config is short. The semantics are where the outages live. References - logrotate(8), upstream man page: <man7.org> - logrotate.conf(5): <man7.org> - Upstream example units and config: <github.com/logrotate/logrotate/tree/main/examples> - systemd.timer(5): <freedesktop.org> - systemd.exec(5), including ProtectSystem=: <freedesktop.org> - journald.conf(5): <freedesktop.org>

  35. Redditu/a_m_i_t_01234 · r/u_a_m_i_t_01234 · 1 point · 3 comments

    [Project] Building Open Android DeX – An Open-Source Android Desktop Environment for Linux Introduce the project, explain its technical architecture, share what currently works, what you're still developing, and why you're looking for collaborators. GitHub: Bit-manipulators/open-android-dex

  36. X@ai_hakase_ · 241 views

    DeepSeek公式によるアーキテクチャのアプローチを検証するための実験的プロトタイプリポジトリ deepseek-ai/dsh-superagent-prototype DeepSeekのスーパーエージェント設計に関するアーキテクチャ記事について議論が行われているRedditのスレッド reddit.com

  37. LFM3が登場したので、いくつかのモデルと比較してみた【ご参考まで】 はじめに 2026年10月27日、Liquid AIから新しいモデル「LFM3」が公開されました。 私は個人で、ローカルAIを使ったテキストエディタ「OnecaratEditor」を開発しています。無料版(Free)の標準モデルは、同じLiquid AIのLFM2.5-1.2B-JPです。有料版のOnecaratEditor Coreでは、これに加えてGemma 4 E4Bを選べるようにしています。 同じメーカーから新しい世代のモデルが登場したので、気になったのは次の点でした。 「LFM3に置き換えたほうが、アプリの使い勝手は良くなるのだろうか?」 モデルの公開ベンチマークは参考になりますが、私が知りたいのは、実際にアプリで使っている要約、校正、翻訳、議事録作成などで違いが出るかどうかです。 そこで、現行のLFM2.5、日本語処理の置き換え候補としてLFM3の2種類、比較用にGemma 4を加えた4モデルで検証してみました。 結果がまとまったので、今回はその比較データと、LFM3について分かったことを参考程度に公開しておきます。 結論から書くと、OnecaratEditorの標準モデルは、Free版・Core版ともに現時点ではLFM2.5-1.2B-JPのままにすることにしました。ただし、LFM3にも良くなっている部分があり、単純に「新モデルのほうが悪い」という結果ではありません。 ! この記事は、OnecaratEditorの用途、検証条件、2026年11月時点の推論環境で得られた結果です。モデル全体の性能を順位付けするものではありません。LFM3のツール呼び出しや長いコンテキストを使う能力は、今回の比較では評価していません。 1. LFM3はどんなモデルなのか 最初に、LFM3について簡単に整理します。 今回試したLFM3-1.7Bは、約17億パラメータのテキストモデルです。Liquid AIの公開情報によると、ローカル環境で動かすエージェントや、特定用途に合わせた利用を想定しています。 主な特徴は次のとおりです。 項目 LFM3-1.7Bの特徴 パラメータ数 約1.73B モデルの構造 畳み込み、Sliding-Window Attention(SWA)、Global Attentionを組み合わせた構造 コンテキスト長 最大256Kトークン(モデル仕様上) 対応言語 日本語を含む16言語 主な想定用途 ローカルエージェント、ツール呼び出し、構造化出力、用途別の追加学習 4bitモデル 約1GBのGGUFが公開されている ※仕様はLiquid AIのモデルカードを参照しています。 ここでひとつ注意したいのは、LFM3-1.7Bと、私が使っているLFM2.5-1.2B-JPは、同じ条件のモデルではないことです。 LFM2.5-1.2B-JPは日本語向けのモデルですが、LFM3-1.7Bは多言語やエージェント用途も想定しています。パラメータ数も違います。 つまり、今回調べたいのは「どちらが優秀か」ではなく、日本語の文章処理を中心とするアプリで、標準モデルを変更する価値があるかという点です。 LFM3を2種類用意した理由 LFM3は、次の2つのGGUFを試しました。 量子化 ファイルサイズ 特徴 QAD-Q4_0 約1.05GB 量子化で失われた精度を補うために追加学習したモデル Q4_K_M 約1.1GB 一般的によく使われる4bit系の量子化 QADはQuantization-Aware Distillationの略です。Liquid AIの説明では、Q4_0への量子化で失われる精度を回復するよう学習したチェックポイントとされています。 そこで、「ファイルサイズが少し小さいQAD版のほうが、品質も良いのだろうか?」という点も比較してみることにしました。 2. 比較対象と検証方法 今回比較したモデルは次の4つです。 モデル 量子化 比較での位置づけ LFM2.5-1.2B-JP Q4_K_M 現行の標準モデル。比較基準 LFM3-1.7B QAD-Q4_0 新しい標準モデルの候補① LFM3-1.7B Q4_K_M 新しい標準モデルの候補② Gemma 4 E4B Q4_K_M Core版で選択できる高品質モデル。品質の比較対象 検証環境 項目 内容 CPU Ryzen 5 5600X GPU NVIDIA GeForce RTX 3060 12GB メモリ 32GB OS Windows 11 推論エンジン llama.cpp / llama-server(Vulkan、検証用b12058) 比較対象 OnecaratEditorで使う文章処理・チャットなど LFM3は新しいモデル構造のため、執筆時点でアプリに同梱しているllama.cpp b9193では読み込めませんでした。そこで、4モデルともLFM3に対応した同じ検証用ビルドで測定しています。 検証はClaude Codeで自動実行しました。実際のアプリで使っているプロンプトや設定を基準に、llama-serverへ直接リクエストを送る方式です。そのため、画面描画やアプリ内の通信中継にかかる時間は、以下の速度には含まれていません。 何を比較したのか 文章の要約、校正、翻訳、議事録生成、TODO抽出、チャット、JSON形式の出力など、28ケースを用意しました。 テストデータには架空の会社名、担当者名、会議内容を使用しています。通常の入力に加え、あえて扱いにくい文章や、高めのtemperatureを使う条件も含めました。 評価は大きく2つに分けています。 自動判定:必要な形式や項目がそろっているかなどを確認する 文章の採点:内容が正確か、元文書にない情報を作っていないか、指示を守っているかを確認する 文章の採点は、28ケース×4モデルの112出力を、モデル名を伏せてClaudeとChatGPTにそれぞれ評価してもらいました。評価が大きく分かれた出力は、私自身でも確認しています。 採点基準は5段階です。 点数 評価の目安 5 そのまま使える 4 軽微な表記調整だけで使える 3 手直しすれば使える 2 捏造・事実誤認・指示違反などがある 1 実用が難しい 特に厳しく見たのは、元文書にない数字、担当者、期限などを勝手に補っていないかです。 なお、この点数は難しいケースを含む独自テストの結果なので、普段の利用者の満足度を示すものではありません。 3. 品質比較:LFM3は良くなったのか まずは文章のブラインド評価です。 モデル 平均点 / 5 4点以上 捏造 言語混在 指示違反 LFM2.5-1.2B-JP 2.14 18% 13 2 13 LFM3 QAD-Q4_0 2.21 11% 6 4 14 LFM3 Q4_K_M 2.11 14% 5 6 18 Gemma 4 E4B 4.11 79% 2 0 3 ※各モデル28出力の結果です。「捏造」「言語混在」「指示違反」はそれぞれ独立に判定した該当出力の件数で、同じ出力が複数の項目に該当する場合もあります。 最初に気づくのは、LFM2.5とLFM3の平均点がほぼ同じということです。 QAD版は2.21点、Q4_K_M版は2.11点でした。現行モデルの2.14点と比べても、この28ケースの結果だけで明確な優劣があるとは判断できません。 ただ、平均点よりも興味深かったのは、間違え方が違っていたことです。 LFM3は捏造が減る一方、指示違反が増えた 元の文書にない内容を作ってしまうケースは、LFM2.5-JPの13件に対し、LFM3ではQAD版が6件、Q4_K_M版が5件でした。 この点はLFM3の良い傾向です。議事録やTODOのように、元の情報を正しく残すことが重要な用途では、捏造が減るのは歓迎したい変化です。 一方で、指定したタグを出さない、余計な前置きを付ける、原文をそのまま返すといった指示違反は、LFM3で増えました。 また、文章中に中国語や韓国語などの語が混ざるケースも、現行モデルより多くなっています。 つまり、今回の比較では、 「LFM3は内容を勝手に補うことが減った一方、出力形式や日本語だけで返すという条件には注意が必要」 という傾向が見えました。 もちろん、各28出力なので、すべての入力で同じ傾向が出るとは限りません。採用する用途に合わせて確認する必要がありそうです。 Gemma 4は品質に差があった 一方、Gemma 4 E4Bは平均4.11点、4点以上が79%でした。 今回の文章処理では、LFM系の3モデルよりも、指示を守りながら使える回答を出すケースが多い結果です。 ただし、Gemma 4はパラメータ規模や実行時の負荷が異なります。同じ大きさのモデル同士の勝負ではありませんし、品質だけで標準モデルを決められるわけでもありません。Core版でGemma 4を「標準」ではなく「選択できるモデル」にしているのも、この負荷の差が理由です。 小型モデルで気になった失敗例 今回の検証では、次のような出力がありました。 音声メモの「あした連絡する」が、TODOでは「今日連絡する」になる 修理金額の48,000円が40,000円になる 校正で、分かりやすい誤字があるのに原文を無修正で返す(これはLFM系の3モデルとも同じ挙動だったので、モデルというよりプロンプト側の問題と見ています) 議事録で、同じ文章のまとまりを繰り返してしまう 指定した出力形式には合っているのに、本文に誤った情報が含まれている これらは今回のテスト全体から見つかった例で、すべてが特定の1モデルに起きたという意味ではありません。 特に最後の点は重要だと感じました。自動判定がPASSでも、文章として正しく使えるとは限りません。 今回は、形式上はPASSだった出力のうち41件が、別途行ったブラインド採点では2点以下になりました。 モデルを比較するときは、JSONが出せるか、指定のタグが付くかだけでなく、中身まで見ないと判断を誤りそうです。 4. 速度比較:標準モデルとして使えるか 次は処理速度です。 文章の品質が良くなっても、普段の操作で待ち時間が大きく増えるなら、標準モデルへの採用は慎重になります。 GPUでの生成速度 本番計測での結果は次のとおりです。 モデル 自動判定PASS / 88 生成速度(文字/秒) VRAM(参考) LFM2.5-1.2B-JP 63 401 2.1GB LFM3 QAD-Q4_0 62 278 2.4GB LFM3 Q4_K_M 62 267 2.5GB Gemma 4 E4B 85 106 4.5GB ※自動判定の88件は、28ケース×3回(高めのtemperatureを使うケースは5回)の合計です。生成速度と自動判定は本番計測、VRAMは事前に行った22ケースのスモークテストで確認した値です。4モデルとも同一GPU・同一推論エンジンを使用しました。ここでの自動PASSは形式などの判定であり、前の表の文章採点とは別です。 LFM3は、現行のLFM2.5-JPに比べて、生成速度が約3割低い結果でした。 一方、Gemma 4は品質では大きく上回っていますが、生成速度はさらに低くなっています。 普段の要約や校正のように、短い操作を何度も行う用途では、この違いは無視しにくいところです。 CPUだけで動かした場合 同じPCでGPUへのオフロードを無効にしたところ、次のようになりました。 モデル 生成速度(token/秒) LFM2.5-1.2B-JP 41 LFM3 QAD-Q4_0 35 LFM3 Q4_K_M 34 Gemma 4 E4B 11 GPUの表は「文字/秒」、こちらは「token/秒」なので、数値をそのまま比較することはできません。 この測定は、Ryzen 5 5600Xを搭載した同じPCでのCPU-only実行です。低スペックノートPCで実測したわけではありません。 ただ、CPUだけで使う場合も、LFM3が現行モデルより少し遅く、Gemma 4はさらに負荷が大きいという傾向は確認できました。 応答が始まるまでの時間にも違いがあった もうひとつ確認したのが、TTFT(Time To First Token)です。 これは、リクエストを送ってから最初のトークンが返るまでの時間です。チャットでは、生成速度と同じくらい体感に影響することがあります。 TTFTは、プロンプトのキャッシュが効くかどうかで大きく変わります。そこで、起動直後(コールド)、キャッシュなしの初回、同じプロンプトの再送(キャッシュあり)の3つに分けて見ました。 モデル コールド 初回(キャッシュなし) 同一プロンプト再送 再送時に再処理したトークン数 LFM2.5-1.2B-JP 250 ms 69 ms 13 ms 4 LFM3 QAD-Q4_0 346 ms 111 ms 97 ms 454 LFM3 Q4_K_M 344 ms 112 ms 97 ms 454 Gemma 4 E4B 849 ms 278 ms 56 ms 5 ※いずれも中央値。再処理トークン数は再送時の中央値で、LFM3は129〜516トークンの幅がありました。 コールドと初回では、LFM3は現行モデルの1.4〜1.6倍ほど遅く、これはモデル自体の差です。 ただ、それ以上に気になったのが右の2列です。同じプロンプトを再送しているのに、LFM3では約450トークンを再処理していました。LFM2.5-JPは4トークン程度です。その結果、再送時のTTFTだけ13 ms対97 msと、7倍を超える差になっています。 LFM3にはSWA(Sliding-Window Attention)という構造が含まれています。今回使ったllama-server b12058では、その構造とコンテキストのチェックポイント復元処理の組み合わせによって、入力の一部が再処理されていることが分かりました。 つまり、再送時の差の大部分は推論エンジン側の要因で、モデル自体の差は「現行より少し遅い」程度です。LFM3が常に応答開始の遅いモデルというわけではありません。 実際、別途行った再現実験では、--swa-fullを指定すると再送時のTTFTが122 msから19 msに短縮されました。ただし、生成速度が193から169 token/秒に下がり、測定した処理全体の時間も増えます。損益分岐は出力約107トークンで、要約のように出力が数百トークンになる処理では総時間が悪化するため、今回は採用しませんでした。 このあたりは、推論エンジンの更新で変わる可能性があります。 5. LFM3を試して分かったこと ここまでの結果から、LFM3について気づいた点を整理してみます。 ① QAD-Q4_0とQ4_K_Mに明確な差は出なかった 自動判定はどちらも62/88件でPASS、文章採点も2.21点と2.11点でした。生成速度も近い値です。 後述する思考混入の出方も、スモークテストではQ4_K_M側だけ、本番ではQAD側だけと出る側が逆で、統計的にも有意ではありませんでした。両者を区別する材料にはなっていません。 QAD版のほうが良さそうに見える項目はありますが、今回のケース数では、積極的にQADを選ぶ根拠までは得られませんでした。 ただし、これはQADに効果がないという結論ではありません。量子化の影響を詳しく比較するなら、Q8_0なども含め、別の条件で評価したいところです。 ② 思考モードはOFFでも出力を確認したほうがよい LFM3は、モデル仕様上、思考(reasoning)が既定で有効です。Liquid AIのモデルカードにも、enable_thinking=Falseで無効化できるものの、動作が一貫しない場合があると説明されています。 今回も、思考OFFを指定しているのに、<think>関連の文が回答に混じるケースがありました。頻度は、思考OFFで流した全系列の合計で、QAD版が7/231件、Q4_K_M版が1/231件です。サーバー側で--reasoning offを併用した系列でも1/100件に減りはしますが、0にはなりませんでした。 特に、定型的な文章処理やJSON出力のように、回答本文だけを受け取りたい用途では注意が必要です。 これはLFM3を使えないという話ではありませんが、思考OFFの設定だけを信用せず、実際の出力を確認したほうがよさそうです。 なお、思考を有効にしたまま使う場合は別の注意があります。今回の検証では、Gemma 4 E4Bは思考を抑止しないと、思考で生成予算を使い切って本文が空のまま終わるケースがありました。小型モデルで思考モードを使うなら、生成トークン数の上限と合わせて確認する必要があります。 ③ 高いtemperatureでは言語混在が気になった 今回のテストでは、temperatureを0.95にした条件で、LFM系のモデルに言語混在や指示違反が目立ちました。LFM3でも、日本語の文中に別の言語が混ざる例がありました。 一方、今回試した0.4以下の条件では言語混在は確認されていません。ただし、0.5〜0.9の間は測定していないため、どこが境界になるかまでは分かりません。 Liquid AIが一般的なチャット用途向けに推奨しているtemperature=0.1などの設定も、ひとつの参考になりそうです。ただし今回の主目的は、アプリの既定設定での置き換え判断だったため、推奨設定での最適性能を競う比較ではありません。 ④ LFM3の本領は、今回とは別の用途にあるかもしれない LFM3-1.7Bは、ローカルエージェント、ツール呼び出し、長いコンテキストなども重視したモデルです。 今回のテストは、日本語の短い文章を要約する、校正する、指定形式に整えるといった処理が中心でした。 そのため、最大256Kトークンのコンテキストや、ツールを選んで呼び出す能力については、何も結論を出せません。 LFM3の公開ベンチマークと今回の結果が違って見えるとしても、測っている用途が異なります。エージェント機能を中心に据えたアプリなら、改めて評価する価値があると思います。 6. 結論:今回はLFM3への移行を見送る 今回の比較を踏まえて、OnecaratEditorでは次の判断にしました。 用途 判断 理由 標準モデル(Free / Core) LFM2.5-1.2B-JPを維持 今回の日本語処理でLFM3の明確な品質向上が見られず、速度も現行モデルが有利 LFM3 QAD-Q4_0 / Q4_K_M 標準採用を見送る 捏造が減る良さはあるが、指示違反・言語混在・速度も含めると置き換える理由が弱い Core版の選択モデル Gemma 4 E4Bを継続 品質は良いが処理速度と負荷が大きいので、GPU搭載機で品質を重視する場合の選択肢として エージェント・長コンテキスト 判断保留 今回は未評価。別の用途として検証が必要 ポイントは、LFM3の品質が現行モデルと近かったことだけではありません。 捏造が減ったのは良い変化 ただし、指示違反や言語混在には注意が必要 生成速度は今回の環境で約3割低い チャットの応答開始時間は、推論エンジンとの組み合わせにも左右される QAD版とQ4_K_M版に、採用判断を変えるほどの差は見られなかった 速度について、判断の決め手になった数字をひとつ挙げておきます。アプリで最も頻度の高い「チャットの2ターン目以降」のTTFTは、CPU-onlyの条件でLFM3が838 ms、LFM2.5-JPが44 msでした。前述のとおり、この差の大部分は推論エンジン側のキャッシュ処理によるものですが、現時点のユーザー環境ではこの差がそのまま体感に出ます。 これらを合わせて考えると、現時点のOnecaratEditorで標準モデルを変更するメリットは小さいと判断しました。 一方で、Gemma 4のように高い品質が出るモデルは処理も重くなります。小型のローカルLLMでは、品質だけでなく、処理速度や使う機能との相性を含めて選ぶ必要があります。 今後、llama.cppのキャッシュ周りの挙動が変わったり、長文処理やツール呼び出しを使う機能を評価したりする際には、LFM3をもう一度試すつもりです。 おわりに 新しいモデルが公開されると、どうしても試してみたくなります。 今回は、現在の標準モデルと同じLiquid AIの新世代モデルだったので、もし品質と速度の両方が改善するなら、置き換えたいと考えていました。 しかし、実際にアプリの用途に合わせて比べてみると、新しいモデルだから、そのまま置き換えたほうが良いとは限らないことが分かりました。 特に印象に残ったのは、LFM3では捏造が減ったものの、指示違反や言語混在が増えたことです。平均点だけを見ていたら、この違いには気づかなかったと思います。 また、QADによる量子化の違いや、SWAと推論エンジンのキャッシュの組み合わせなど、LFM3を試したからこそ見えてきた点もありました。 結論として採用は見送りましたが、モデルごとの得意・不得意を数字で確認できたのは収穫でした。 あくまで、ひとつのアプリと環境での比較です。同じようにローカルLLMを製品やツールに組み込んでいる方の参考になれば幸いです。 参考リンク Liquid AI:LFM3発表記事 Liquid AI:LFM3-1.7B モデルカード Liquid AI:LFM3-1.7B GGUF(QAD版を含む) llama.cpp:LFM3対応 PR #31252 OnecaratEditor 公式サイト

  38. X@ai_hakase_ · 213 views

    CRAPのテクニカルレポート(PDF) github.com/matthewhaynesonline/crap-public/blob/m… CRAPのソースコードやデモを収めたGitHubリポジトリ matthewhaynesonline/crap-public CRAP関連のファインチューニング済みモデル群(Hugging Face) huggingface.co CRAPの設計思想や解説がまとめられたブログ記事 blog.studiohaynes.com

  39. X@monokano · 16 likes · 9 reposts · 771 views

    Indd Mini-Editを2.0.0にアップデート github.com/monokano/Indd-Mini-Edit/releases/tag/2… - XojoからXcode+Swiftに移行 - InDesignが最前面になくてもできるようにした - 全体に安定性向上

  40. X@MarkVillela · 1 like · 42 views

    It's absolutely incredible the little games that we can now make with AI. A modern remake of an old favorite: Battleship! scruff2/Battleship-3D All contained in a single HTML file. Opus 5.5 Amazing! t.co

  41. X@LidaMidorin · 2 likes · 277 views

    最近ローカルの分離制度かなり上がったんですよね…💦 Lida-V/SoundtSeparator t.co

  42. X@S_DevLabs · 18 views

    An agent-managed institutional treasury service on the XRP Ledger. DuNorth595/xrpl_agent_treasury_mgmt

  43. YouTubeAI Top 5 · YouTube description · 1 like · 233 views

    Free Salesforce alternative (no per-seat pricing) #shorts Salesforce charges you for every person on your team, every month. Twenty is a free GitHub repo that replaces Salesforce. ✅ Contacts, companies and a drag-and-drop deals pipeline ✅ Email and calendar sync onto the right client automatically ✅ Workflows that follow up for you, built for AI agents 🔗 Link: twentyhq/twenty I find free and open-source tools that replace the software you're paying for. Subscribe for more. #shorts #github #crm #salesforce

  44. X@Yashpatil · 28 views

    Claude Duet is still waitlist-only. This open-source version already has 6,581 GitHub stars. Open Duet runs a team of named AI agents on your own computer, each with a job and memory. They ask before doing anything risky. Video: @brenzhills Anil-matcha/open-duet t.co

  45. DEV@gabrielanhaia · 2 reactions

    NYT Sues Brave, Calling Its Search API an 'Illicit Source.' 5 AI Firms Are Named Buyers - Book: RAG Pocket Guide - Also by me: Thinking in Go (2-book series) — Complete Guide to Go Programming + Hexagonal Architecture in Go - My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools - Me: xgabriel.com | GitHub --- Five AI companies are named in The New York Times' new lawsuit against Brave, and none of them is a defendant (PPC Land). Anthropic, Perplexity, Mistral, xAI and Cohere appear as customers of the product the Times went after when it sued in federal court in Manhattan on November 2 (TechCrunch). The product is the Brave Search API, a common choice for RAG pipelines and agents that need fresh web results. The complaints call it "an illicit source of unlicensed copyrighted material" (PPC Land). If your app sends queries to that API, you are in the same seat as the five companies the complaint names: a paying customer of a service whose supply chain is now in court. These are allegations, not findings. Nothing about your integration breaks today. But it is a good week to look at how your search layer is wired. What the Times filed There are two suits. The Times filed one. The publishers of the Daily News, the Chicago Tribune and the Orlando Sentinel filed a similar one the same day (TechCrunch). Both sit in the Southern District of New York, as cases 26-cv-9549 and 26-cv-9554, and both demand a jury trial (PPC Land). Each complaint brings direct, contributory and vicarious copyright infringement, DMCA anti-circumvention claims under § 1201, and unjust enrichment under New York law (PPC Land). The Times describes Brave as a "supplier, dealer, and distributor of stolen copyrighted content" and asks for an injunction and damages (TechCrunch). The suits reach past the API. They also target a browser feature the Times says gets around its paywall, and what the complaints describe as Brave's practice of blocking publishers' ads while selling its own (TechCrunch). According to Search Engine Journal, the Times says it sent cease-and-desist letters in August 2025 and April 2026 and cites them as evidence of willful infringement. The Times published the complaint itself. !A large magnifying glass made of folded newspaper hovering over a web of crawled pages, with thin cables running from the web to five small anonymous robot silhouettes The Times' claim, in one picture: pages go into Brave's index, and the index goes out through the API. Why the Search API sits in the middle The complaints name four endpoints: News Search, Web Search, LLM Context and Answers. They describe LLM Context as returning "extracted page chunks and source metadata in a shape and length that satisfies the needs of an LLM," and say Answers is "the same service that powers the Ask Brave product" (PPC Land). A classic search API returns links and short snippets. The Times' argument is that an endpoint built to hand a model page content to reason over is closer to delivering the article itself. Brave's own API page lists LLM Context as "agentic search" and, as of November 2026, prices the Search plan at $5 per 1,000 requests and Answers at $4 per 1,000 requests plus $5 per million input/output tokens. The crawler is the other half. The Times says Brave built an index of more than 30 billion pages with a crawler it never identified, which publishers cannot block (TechCrunch). Brave's crawler help page says the bot "does not advertise a differentiated user agent," because Brave "must avoid discrimination from websites that allow only Google to crawl them." The same page says Brave won't crawl what Googlebot can't, and that a noindex directive delists a page. By Brave's own description, then, a publisher that wants Google but not Brave has no separate robots.txt line to write, and the complaints lean on exactly that. Brave's side Brave did not immediately respond to TechCrunch's request for comment (TechCrunch). It has argued a close cousin of this case before. Brave sued News Corp first, after a cease-and-desist letter, arguing that indexing website content is something "all search engine operators must do to exist." News Corp filed its own scraping suit against Brave in July 2026 (Semafor). A search engine does have to copy pages to index them at all. The open question is whether serving extracted page content to AI companies is still "search." No court has answered it in this case. Expect years of motions before anyone gets a verdict. What to do if your app calls Brave today I'm not a lawyer, and this isn't legal advice. If your company has real exposure, ask yours. From the engineering side, four things are worth an afternoon. 1. Read your plan's storage terms. Brave's API FAQ answers "Can I store results or use them to train models?" with "Yes, with a plan that includes storage rights." If you cache search results in a vector store or keep them for evals, check that your plan covers it. 2. Record where each citation came from. If a grounding source is ever challenged, you want to know which answers it fed. 3. Keep the provider behind one interface. The complaints ask for a permanent injunction against "the unlawful conduct alleged herein," wording PPC Land reads as broad enough to reach the API endpoints. If Brave is called from twenty places, swapping it is a project. If it is called from one adapter, it is a small change. 4. Know your fallback before you need it. Pick a second provider now and run your retrieval evals against it, so you already know what a switch costs. !A wall socket shaped like an application module, with three interchangeable plugs labelled only by shape and colour waiting beside it, flat vector One port, many adapters: the search provider should be the easiest part of your RAG stack to replace. Points 2 and 3 fit in one small TypeScript interface: type Hit = { url: string; title: string; text: string }; interface SearchProvider { readonly name: string; search(query: string): Promise<Hit[]>; } type Citation = Hit & { provider: string; fetchedAt: string }; async function ground( provider: SearchProvider, query: string, ): Promise<Citation[]> { const hits = await provider.search(query); const fetchedAt = new Date().toISOString(); return hits.map((h) => ({ ...h, provider: provider.name, fetchedAt, })); } Your Brave client becomes one class that implements SearchProvider. Every citation your model sees carries provider and fetchedAt, so once you log them you can answer "which answers used Brave last month" instead of guessing. Grounding data is the next legal front The Times has already sued OpenAI and Perplexity on similar claims (TechCrunch). Those cases went after the AI companies themselves. This one goes after a supplier one layer down: the index that feeds models at answer time. You already track license changes in your npm tree. The source of the text your model quotes back to users deserves the same attention. Do you know which search provider grounds your app's answers, and how long it would take you to swap it? Tell me in the comments. --- If this was useful I build Hermes IDE, a free, source-available desktop app (macOS, Windows, Linux) for running coding agents like Claude Code and Codex side by side, so weigh my opinions on tooling with that in mind. Swappable retrieval and evals for your search layer are what the RAG Pocket Guide is about. If this post made you look twice at where your grounding data comes from, it covers retrieval, chunking and reranking patterns for production in a short read. ![RAG Pocket Guide: Retrieval, Chunking, and Reranking Patterns for Production](amazon.com)

  46. X@z1xus · 2 views

    @neamtuz @mrjar69 @otomir23 i dont know dude, slint works pretty well for me Z1xus/interpolini t.co

  47. X@liamreckziegel · 2 likes · 26 views

    @karpathy what it found on its own: halving batch size for more steps, longer warmdown, deeper model, rope base frequency tuning no human picked these. repo: karpathy/autoresearch

  48. X@z1xus · 4 views

    @neamtuz @mrjar69 @otomir23 i dont know dude, slint works pretty well for me Z1xus/interpolini t.co

  49. X@michumichifu · 1 like · 20 views

    @abrahamrivv El problema no considero sea UX, sino el no conocer la plataforma, sus docs y su funcionamiento el cómo y porqué Acá te dejo este repo, ya con esto vas mejor michumichifu/meta-ads-mcp

Older posts →