static L localSoftwareMadeWebs() { new Matches m; new L programsToScan; for (S s : listFileNames(getProgramDir(circlesEditorDBID()))) pcall { if (swic(s, "webs.posted.at.", m)) programsToScan.add(fsI($1)); } new L webs; for (S progID : programsToScan) { L l = scanLog_safeUnstructure(progID, "webs-made.txt"); print("Found " + n(l, "web") + " in " + progID); } ret webs; }