[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"summary-e48f2d4acf4592df-datasette-ditches-csrf-tokens-for-sec-fetch-site-h-summary":3,"summaries-facets-categories":110,"summary-related-e48f2d4acf4592df-datasette-ditches-csrf-tokens-for-sec-fetch-site-h-summary":3679},{"id":4,"title":5,"ai":6,"body":13,"categories":62,"created_at":64,"date_modified":64,"description":56,"extension":65,"faq":64,"featured":66,"kicker_label":64,"meta":67,"navigation":93,"path":94,"published_at":64,"question":64,"scraped_at":95,"seo":96,"sitemap":97,"source_id":98,"source_name":99,"source_type":100,"source_url":101,"stem":102,"tags":103,"thumbnail_url":64,"tldr":107,"tweet":64,"unknown_tags":108,"__hash__":109},"summaries\u002Fsummaries\u002Fe48f2d4acf4592df-datasette-ditches-csrf-tokens-for-sec-fetch-site-h-summary.md","Datasette Ditches CSRF Tokens for Sec-Fetch-Site Headers",{"provider":7,"model":8,"input_tokens":9,"output_tokens":10,"processing_time_ms":11,"cost_usd":12},"openrouter","x-ai\u002Fgrok-4.1-fast",4411,2260,13425,0.00150535,{"type":14,"value":15,"toc":55},"minimark",[16,21,34,38,48,52],[17,18,20],"h2",{"id":19},"token-based-csrf-drawbacks-and-replacement-rationale","Token-Based CSRF Drawbacks and Replacement Rationale",[22,23,24,25,29,30,33],"p",{},"Token-based CSRF protection in Datasette relied on the asgi-csrf library, requiring manual insertion of ",[26,27,28],"code",{},"{% csrf_token %}"," tags across all forms and explicit disabling via a ",[26,31,32],{},"skip_csrf"," plugin hook for external API calls. This scattered complexity made maintenance painful, especially for browser-external integrations. The shift draws from Filippo Valsorda's August 2025 research essay and its Go 1.25 implementation, which leverages the Sec-Fetch-Site browser header to detect cross-site requests more reliably without tokens.",[17,35,37],{"id":36},"key-code-and-documentation-changes","Key Code and Documentation Changes",[22,39,40,41,43,44,47],{},"Landed in PR #2689, the update introduces new ASGI middleware that enforces Sec-Fetch-Site validation, directly inspired by the referenced Go changes. All ",[26,42,28],{}," instances are excised from templates, the ",[26,45,46],{},"skip_csrf(datasette, scope)"," hook is removed entirely (including its docs and tests), and CSRF documentation is overhauled to explain header-based mechanics. The upgrade guide explicitly flags this breaking change, ensuring plugin authors adapt without the old hook. Claude Code generated the 10-commit implementation under tight human guidance and GPT-5.4 review, with the author hand-writing the PR description for conciseness and accuracy.",[17,49,51],{"id":50},"practical-outcomes-for-datasette-users","Practical Outcomes for Datasette Users",[22,53,54],{},"Forms now work token-free, reducing template boilerplate and errors. APIs no longer need CSRF exemptions, streamlining cross-origin handling. This aligns Datasette with modern browser security signals, trading token overhead for header scrutiny—effective against CSRF while easing developer experience in Python\u002FASGI apps.",{"title":56,"searchDepth":57,"depth":57,"links":58},"",2,[59,60,61],{"id":19,"depth":57,"text":20},{"id":36,"depth":57,"text":37},{"id":50,"depth":57,"text":51},[63],"Software Engineering",null,"md",false,{"content_references":68,"triage":88},[69,75,81,84],{"type":70,"title":71,"author":72,"url":73,"context":74},"tool","asgi-csrf","Simon Willison","https:\u002F\u002Fgithub.com\u002Fsimonw\u002Fasgi-csrf","mentioned",{"type":76,"title":77,"author":78,"url":79,"context":80},"other","CSRF research essay","Filippo Valsorda","https:\u002F\u002Fwords.filippo.io\u002Fcsrf\u002F","cited",{"type":76,"title":82,"url":83,"context":80},"Go 1.25 net\u002Fhttp package changes","https:\u002F\u002Ftip.golang.org\u002Fdoc\u002Fgo1.25#nethttppkgnethttp",{"type":76,"title":85,"url":86,"context":87},"datasette PR #2689","https:\u002F\u002Fgithub.com\u002Fsimonw\u002Fdatasette\u002Fpull\u002F2689","recommended",{"relevance":89,"novelty":89,"quality":90,"actionability":89,"composite":91,"reasoning":92},3,4,3.25,"Category: Software Engineering. The article discusses a specific change in the Datasette framework that simplifies CSRF protection, which is relevant to software engineers working with web applications. It provides insights into the rationale behind the change and its implications for developers, but lacks detailed actionable steps for implementation.",true,"\u002Fsummaries\u002Fe48f2d4acf4592df-datasette-ditches-csrf-tokens-for-sec-fetch-site-h-summary","2026-04-15 15:39:45",{"title":5,"description":56},{"loc":94},"e48f2d4acf4592df","Simon Willison's Weblog","article","https:\u002F\u002Fsimonwillison.net\u002F2026\u002FApr\u002F14\u002Freplace-token-based-csrf\u002F#atom-everything","summaries\u002Fe48f2d4acf4592df-datasette-ditches-csrf-tokens-for-sec-fetch-site-h-summary",[104,105,106],"python","open-source","ai-assisted-programming","Datasette replaces cumbersome token-based CSRF with Sec-Fetch-Site header checks—inspired by Go 1.25—eliminating form tokens and API exemptions for simpler security.",[106],"Ti1ah3Eg96VZH3FQnuDvLQ3bvNPXg9AciOPTNKT-V2g",[111,114,117,120,123,126,128,130,132,134,136,138,141,143,145,147,149,151,153,155,157,159,162,165,167,169,171,173,175,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,433,435,437,439,441,443,445,447,449,451,453,455,457,459,461,463,465,467,469,471,473,475,477,479,481,483,485,487,489,491,493,495,497,499,501,503,505,507,509,511,513,515,517,519,521,523,525,527,529,531,533,535,537,539,541,543,545,547,549,551,553,555,557,559,561,563,565,567,569,571,573,575,577,579,581,583,585,587,589,591,593,595,597,599,601,603,605,607,609,611,613,615,617,619,621,623,625,627,629,631,633,635,637,639,641,643,645,647,649,651,653,655,657,659,661,663,665,667,669,671,673,675,677,679,681,683,685,687,689,691,693,695,697,699,701,703,705,707,709,711,713,715,717,719,721,723,725,727,729,731,733,735,737,739,741,743,745,747,749,751,753,755,757,759,761,763,765,767,769,771,773,775,777,779,781,783,785,787,789,791,793,795,797,799,801,803,805,807,809,811,813,815,817,819,821,823,825,827,829,831,833,835,837,839,841,843,845,847,849,851,853,855,857,859,861,863,865,867,869,871,873,875,877,879,881,883,885,887,889,891,893,895,897,899,901,903,905,907,909,911,913,915,917,919,921,923,925,927,929,931,933,935,937,939,941,943,945,947,949,951,953,955,957,959,961,963,965,967,969,971,973,975,977,979,981,983,985,987,989,991,993,995,997,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021,1023,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605,1607,1609,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643,1645,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669,1671,1673,1675,1677,1679,1681,1683,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703,1705,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1735,1737,1739,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779,1781,1783,1785,1787,1789,1791,1793,1795,1797,1799,1801,1803,1805,1807,1809,1811,1813,1815,1817,1819,1821,1823,1825,1827,1829,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875,1877,1879,1881,1883,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961,1963,1965,1967,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059,2061,2063,2065,2067,2069,2071,2073,2075,2077,2079,2081,2083,2085,2087,2089,2091,2093,2095,2097,2099,2101,2103,2105,2107,2109,2111,2113,2115,2117,2119,2121,2123,2125,2127,2129,2131,2133,2135,2137,2139,2141,2143,2145,2147,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169,2171,2173,2175,2177,2179,2181,2183,2185,2187,2189,2191,2193,2195,2197,2199,2201,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223,2225,2227,2229,2231,2233,2235,2237,2239,2241,2243,2245,2247,2249,2251,2253,2255,2257,2259,2261,2263,2265,2267,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305,2307,2309,2311,2313,2315,2317,2319,2321,2323,2325,2327,2329,2331,2333,2335,2337,2339,2341,2343,2345,2347,2349,2351,2353,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375,2377,2379,2381,2383,2385,2387,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423,2425,2427,2429,2431,2433,2435,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477,2479,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513,2515,2517,2519,2521,2523,2525,2527,2529,2531,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,2581,2583,2585,2587,2589,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609,2611,2613,2615,2617,2619,2621,2623,2625,2627,2629,2631,2633,2635,2637,2639,2641,2643,2645,2647,2649,2651,2653,2655,2657,2659,2661,2663,2665,2667,2669,2671,2673,2675,2677,2679,2681,2683,2685,2687,2689,2691,2693,2695,2697,2699,2701,2703,2705,2707,2709,2711,2713,2715,2717,2719,2721,2723,2725,2727,2729,2731,2733,2735,2737,2739,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805,2807,2809,2811,2813,2815,2817,2819,2821,2823,2825,2827,2829,2831,2833,2835,2837,2839,2841,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861,2863,2865,2867,2869,2871,2873,2875,2877,2879,2881,2883,2885,2887,2889,2891,2893,2895,2897,2899,2901,2903,2905,2907,2909,2911,2913,2915,2917,2919,2921,2923,2925,2927,2929,2931,2933,2935,2937,2939,2941,2943,2945,2947,2949,2951,2953,2955,2957,2959,2961,2963,2965,2967,2969,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015,3017,3019,3021,3023,3025,3027,3029,3031,3033,3035,3037,3039,3041,3043,3045,3047,3049,3051,3053,3055,3057,3059,3061,3063,3065,3067,3069,3071,3073,3075,3077,3079,3081,3083,3085,3087,3089,3091,3093,3095,3097,3099,3101,3103,3105,3107,3109,3111,3113,3115,3117,3119,3121,3123,3125,3127,3129,3131,3133,3135,3137,3139,3141,3143,3145,3147,3149,3151,3153,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195,3197,3199,3201,3203,3205,3207,3209,3211,3213,3215,3217,3219,3221,3223,3225,3227,3229,3231,3233,3235,3237,3239,3241,3243,3245,3247,3249,3251,3253,3255,3257,3259,3261,3263,3265,3267,3269,3271,3273,3275,3277,3279,3281,3283,3285,3287,3289,3291,3293,3295,3297,3299,3301,3303,3305,3307,3309,3311,3313,3315,3317,3319,3321,3323,3325,3327,3329,3331,3333,3335,3337,3339,3341,3343,3345,3347,3349,3351,3353,3355,3357,3359,3361,3363,3365,3367,3369,3371,3373,3375,3377,3379,3381,3383,3385,3387,3389,3391,3393,3395,3397,3399,3401,3403,3405,3407,3409,3411,3413,3415,3417,3419,3421,3423,3425,3427,3429,3431,3433,3435,3437,3439,3441,3443,3445,3447,3449,3451,3453,3455,3457,3459,3461,3463,3465,3467,3469,3471,3473,3475,3477,3479,3481,3483,3485,3487,3489,3491,3493,3495,3497,3499,3501,3503,3505,3507,3509,3511,3513,3515,3517,3519,3521,3523,3525,3527,3529,3531,3533,3535,3537,3539,3541,3543,3545,3547,3549,3551,3553,3555,3557,3559,3561,3563,3565,3567,3569,3571,3573,3575,3577,3579,3581,3583,3585,3587,3589,3591,3593,3595,3597,3599,3601,3603,3605,3607,3609,3611,3613,3615,3617,3619,3621,3623,3625,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649,3651,3653,3655,3657,3659,3661,3663,3665,3667,3669,3671,3673,3675,3677],{"categories":112},[113],"Developer Productivity",{"categories":115},[116],"Business & SaaS",{"categories":118},[119],"AI & LLMs",{"categories":121},[122],"AI Automation",{"categories":124},[125],"Product Strategy",{"categories":127},[119],{"categories":129},[113],{"categories":131},[116],{"categories":133},[],{"categories":135},[119],{"categories":137},[],{"categories":139},[140],"AI News & Trends",{"categories":142},[122],{"categories":144},[140],{"categories":146},[122],{"categories":148},[122],{"categories":150},[119],{"categories":152},[119],{"categories":154},[140],{"categories":156},[119],{"categories":158},[],{"categories":160},[161],"Design & Frontend",{"categories":163},[164],"Data Science & Visualization",{"categories":166},[140],{"categories":168},[],{"categories":170},[63],{"categories":172},[119],{"categories":174},[122],{"categories":176},[177],"Marketing & Growth",{"categories":179},[119],{"categories":181},[122],{"categories":183},[],{"categories":185},[],{"categories":187},[161],{"categories":189},[122],{"categories":191},[113],{"categories":193},[161],{"categories":195},[119],{"categories":197},[122],{"categories":199},[140],{"categories":201},[],{"categories":203},[],{"categories":205},[122],{"categories":207},[63],{"categories":209},[],{"categories":211},[116],{"categories":213},[],{"categories":215},[],{"categories":217},[122],{"categories":219},[122],{"categories":221},[119],{"categories":223},[],{"categories":225},[63],{"categories":227},[],{"categories":229},[],{"categories":231},[],{"categories":233},[119],{"categories":235},[177],{"categories":237},[161],{"categories":239},[161],{"categories":241},[119],{"categories":243},[122],{"categories":245},[119],{"categories":247},[119],{"categories":249},[122],{"categories":251},[122],{"categories":253},[164],{"categories":255},[140],{"categories":257},[122],{"categories":259},[177],{"categories":261},[122],{"categories":263},[125],{"categories":265},[],{"categories":267},[122],{"categories":269},[],{"categories":271},[122],{"categories":273},[63],{"categories":275},[161],{"categories":277},[119],{"categories":279},[],{"categories":281},[],{"categories":283},[122],{"categories":285},[],{"categories":287},[119],{"categories":289},[],{"categories":291},[113],{"categories":293},[63],{"categories":295},[116],{"categories":297},[140],{"categories":299},[119],{"categories":301},[],{"categories":303},[119],{"categories":305},[],{"categories":307},[63],{"categories":309},[164],{"categories":311},[],{"categories":313},[119],{"categories":315},[161],{"categories":317},[],{"categories":319},[161],{"categories":321},[122],{"categories":323},[],{"categories":325},[122],{"categories":327},[140],{"categories":329},[119],{"categories":331},[],{"categories":333},[122],{"categories":335},[119],{"categories":337},[125],{"categories":339},[],{"categories":341},[119],{"categories":343},[122],{"categories":345},[122],{"categories":347},[],{"categories":349},[164],{"categories":351},[119],{"categories":353},[],{"categories":355},[113],{"categories":357},[116],{"categories":359},[119],{"categories":361},[122],{"categories":363},[63],{"categories":365},[119],{"categories":367},[],{"categories":369},[],{"categories":371},[119],{"categories":373},[],{"categories":375},[161],{"categories":377},[],{"categories":379},[119],{"categories":381},[],{"categories":383},[122],{"categories":385},[119],{"categories":387},[161],{"categories":389},[],{"categories":391},[119],{"categories":393},[119],{"categories":395},[116],{"categories":397},[122],{"categories":399},[119],{"categories":401},[161],{"categories":403},[122],{"categories":405},[],{"categories":407},[],{"categories":409},[140],{"categories":411},[],{"categories":413},[119],{"categories":415},[116,177],{"categories":417},[],{"categories":419},[119],{"categories":421},[],{"categories":423},[],{"categories":425},[119],{"categories":427},[],{"categories":429},[119],{"categories":431},[432],"DevOps & Cloud",{"categories":434},[],{"categories":436},[140],{"categories":438},[161],{"categories":440},[],{"categories":442},[140],{"categories":444},[140],{"categories":446},[119],{"categories":448},[177],{"categories":450},[],{"categories":452},[116],{"categories":454},[],{"categories":456},[119,432],{"categories":458},[119],{"categories":460},[119],{"categories":462},[122],{"categories":464},[119,63],{"categories":466},[164],{"categories":468},[119],{"categories":470},[177],{"categories":472},[122],{"categories":474},[122],{"categories":476},[],{"categories":478},[122],{"categories":480},[119,116],{"categories":482},[],{"categories":484},[161],{"categories":486},[161],{"categories":488},[],{"categories":490},[],{"categories":492},[140],{"categories":494},[],{"categories":496},[113],{"categories":498},[63],{"categories":500},[119],{"categories":502},[161],{"categories":504},[122],{"categories":506},[63],{"categories":508},[140],{"categories":510},[161],{"categories":512},[],{"categories":514},[119],{"categories":516},[119],{"categories":518},[119],{"categories":520},[140],{"categories":522},[113],{"categories":524},[119],{"categories":526},[122],{"categories":528},[432],{"categories":530},[161],{"categories":532},[122],{"categories":534},[],{"categories":536},[],{"categories":538},[161],{"categories":540},[140],{"categories":542},[164],{"categories":544},[],{"categories":546},[119],{"categories":548},[119],{"categories":550},[116],{"categories":552},[119],{"categories":554},[119],{"categories":556},[140],{"categories":558},[],{"categories":560},[122],{"categories":562},[63],{"categories":564},[],{"categories":566},[119],{"categories":568},[119],{"categories":570},[122],{"categories":572},[],{"categories":574},[],{"categories":576},[119],{"categories":578},[],{"categories":580},[116],{"categories":582},[122],{"categories":584},[],{"categories":586},[113],{"categories":588},[119],{"categories":590},[116],{"categories":592},[140],{"categories":594},[],{"categories":596},[],{"categories":598},[],{"categories":600},[140],{"categories":602},[140],{"categories":604},[],{"categories":606},[],{"categories":608},[116],{"categories":610},[],{"categories":612},[],{"categories":614},[113],{"categories":616},[],{"categories":618},[177],{"categories":620},[122],{"categories":622},[116],{"categories":624},[122],{"categories":626},[],{"categories":628},[125],{"categories":630},[161],{"categories":632},[63],{"categories":634},[119],{"categories":636},[122],{"categories":638},[116],{"categories":640},[119],{"categories":642},[],{"categories":644},[],{"categories":646},[63],{"categories":648},[164],{"categories":650},[125],{"categories":652},[122],{"categories":654},[119],{"categories":656},[],{"categories":658},[432],{"categories":660},[],{"categories":662},[122],{"categories":664},[],{"categories":666},[],{"categories":668},[119],{"categories":670},[161],{"categories":672},[177],{"categories":674},[122],{"categories":676},[],{"categories":678},[113],{"categories":680},[],{"categories":682},[140],{"categories":684},[119,432],{"categories":686},[140],{"categories":688},[119],{"categories":690},[116],{"categories":692},[119],{"categories":694},[],{"categories":696},[116],{"categories":698},[],{"categories":700},[63],{"categories":702},[161],{"categories":704},[140],{"categories":706},[164],{"categories":708},[113],{"categories":710},[119],{"categories":712},[63],{"categories":714},[],{"categories":716},[],{"categories":718},[125],{"categories":720},[],{"categories":722},[119],{"categories":724},[],{"categories":726},[161],{"categories":728},[161],{"categories":730},[161],{"categories":732},[],{"categories":734},[],{"categories":736},[140],{"categories":738},[122],{"categories":740},[119],{"categories":742},[119],{"categories":744},[119],{"categories":746},[116],{"categories":748},[119],{"categories":750},[],{"categories":752},[63],{"categories":754},[63],{"categories":756},[116],{"categories":758},[],{"categories":760},[119],{"categories":762},[119],{"categories":764},[116],{"categories":766},[140],{"categories":768},[177],{"categories":770},[122],{"categories":772},[],{"categories":774},[161],{"categories":776},[],{"categories":778},[119],{"categories":780},[],{"categories":782},[116],{"categories":784},[122],{"categories":786},[],{"categories":788},[432],{"categories":790},[164],{"categories":792},[63],{"categories":794},[177],{"categories":796},[63],{"categories":798},[122],{"categories":800},[],{"categories":802},[],{"categories":804},[122],{"categories":806},[113],{"categories":808},[122],{"categories":810},[125],{"categories":812},[116],{"categories":814},[],{"categories":816},[119],{"categories":818},[125],{"categories":820},[119],{"categories":822},[119],{"categories":824},[177],{"categories":826},[161],{"categories":828},[122],{"categories":830},[],{"categories":832},[],{"categories":834},[432],{"categories":836},[63],{"categories":838},[],{"categories":840},[122],{"categories":842},[119],{"categories":844},[161,119],{"categories":846},[113],{"categories":848},[],{"categories":850},[119],{"categories":852},[113],{"categories":854},[161],{"categories":856},[122],{"categories":858},[63],{"categories":860},[],{"categories":862},[119],{"categories":864},[],{"categories":866},[113],{"categories":868},[],{"categories":870},[122],{"categories":872},[125],{"categories":874},[119],{"categories":876},[119],{"categories":878},[161],{"categories":880},[122],{"categories":882},[432],{"categories":884},[161],{"categories":886},[122],{"categories":888},[119],{"categories":890},[119],{"categories":892},[119],{"categories":894},[140],{"categories":896},[],{"categories":898},[125],{"categories":900},[122],{"categories":902},[161],{"categories":904},[122],{"categories":906},[63],{"categories":908},[161],{"categories":910},[122],{"categories":912},[140],{"categories":914},[],{"categories":916},[119],{"categories":918},[161],{"categories":920},[119],{"categories":922},[113],{"categories":924},[140],{"categories":926},[119],{"categories":928},[177],{"categories":930},[119],{"categories":932},[119],{"categories":934},[122],{"categories":936},[122],{"categories":938},[119],{"categories":940},[122],{"categories":942},[161],{"categories":944},[119],{"categories":946},[],{"categories":948},[],{"categories":950},[63],{"categories":952},[],{"categories":954},[113],{"categories":956},[432],{"categories":958},[],{"categories":960},[113],{"categories":962},[116],{"categories":964},[177],{"categories":966},[],{"categories":968},[116],{"categories":970},[],{"categories":972},[],{"categories":974},[],{"categories":976},[],{"categories":978},[],{"categories":980},[119],{"categories":982},[122],{"categories":984},[432],{"categories":986},[113],{"categories":988},[119],{"categories":990},[63],{"categories":992},[125],{"categories":994},[119],{"categories":996},[177],{"categories":998},[119],{"categories":1000},[119],{"categories":1002},[119],{"categories":1004},[119,113],{"categories":1006},[63],{"categories":1008},[63],{"categories":1010},[161],{"categories":1012},[119],{"categories":1014},[],{"categories":1016},[],{"categories":1018},[],{"categories":1020},[63],{"categories":1022},[164],{"categories":1024},[140],{"categories":1026},[161],{"categories":1028},[],{"categories":1030},[119],{"categories":1032},[119],{"categories":1034},[],{"categories":1036},[],{"categories":1038},[122],{"categories":1040},[119],{"categories":1042},[116],{"categories":1044},[],{"categories":1046},[113],{"categories":1048},[119],{"categories":1050},[113],{"categories":1052},[119],{"categories":1054},[63],{"categories":1056},[177],{"categories":1058},[119,161],{"categories":1060},[140],{"categories":1062},[161],{"categories":1064},[],{"categories":1066},[432],{"categories":1068},[161],{"categories":1070},[122],{"categories":1072},[],{"categories":1074},[],{"categories":1076},[],{"categories":1078},[],{"categories":1080},[63],{"categories":1082},[122],{"categories":1084},[122],{"categories":1086},[119],{"categories":1088},[119],{"categories":1090},[],{"categories":1092},[161],{"categories":1094},[],{"categories":1096},[],{"categories":1098},[122],{"categories":1100},[],{"categories":1102},[],{"categories":1104},[177],{"categories":1106},[177],{"categories":1108},[122],{"categories":1110},[],{"categories":1112},[119],{"categories":1114},[119],{"categories":1116},[63],{"categories":1118},[161],{"categories":1120},[161],{"categories":1122},[122],{"categories":1124},[113],{"categories":1126},[119],{"categories":1128},[161],{"categories":1130},[161],{"categories":1132},[122],{"categories":1134},[122],{"categories":1136},[119],{"categories":1138},[],{"categories":1140},[],{"categories":1142},[119],{"categories":1144},[122],{"categories":1146},[140],{"categories":1148},[63],{"categories":1150},[113],{"categories":1152},[119],{"categories":1154},[],{"categories":1156},[122],{"categories":1158},[122],{"categories":1160},[],{"categories":1162},[113],{"categories":1164},[119],{"categories":1166},[113],{"categories":1168},[113],{"categories":1170},[],{"categories":1172},[],{"categories":1174},[122],{"categories":1176},[122],{"categories":1178},[119],{"categories":1180},[119],{"categories":1182},[140],{"categories":1184},[164],{"categories":1186},[125],{"categories":1188},[140],{"categories":1190},[161],{"categories":1192},[],{"categories":1194},[140],{"categories":1196},[],{"categories":1198},[],{"categories":1200},[],{"categories":1202},[],{"categories":1204},[63],{"categories":1206},[164],{"categories":1208},[],{"categories":1210},[119],{"categories":1212},[119],{"categories":1214},[164],{"categories":1216},[63],{"categories":1218},[],{"categories":1220},[],{"categories":1222},[122],{"categories":1224},[140],{"categories":1226},[140],{"categories":1228},[122],{"categories":1230},[113],{"categories":1232},[119,432],{"categories":1234},[],{"categories":1236},[161],{"categories":1238},[113],{"categories":1240},[122],{"categories":1242},[161],{"categories":1244},[],{"categories":1246},[122],{"categories":1248},[122],{"categories":1250},[119],{"categories":1252},[177],{"categories":1254},[63],{"categories":1256},[161],{"categories":1258},[],{"categories":1260},[122],{"categories":1262},[119],{"categories":1264},[122],{"categories":1266},[122],{"categories":1268},[122],{"categories":1270},[177],{"categories":1272},[122],{"categories":1274},[119],{"categories":1276},[],{"categories":1278},[177],{"categories":1280},[140],{"categories":1282},[122],{"categories":1284},[],{"categories":1286},[],{"categories":1288},[119],{"categories":1290},[122],{"categories":1292},[140],{"categories":1294},[122],{"categories":1296},[],{"categories":1298},[],{"categories":1300},[],{"categories":1302},[122],{"categories":1304},[],{"categories":1306},[],{"categories":1308},[164],{"categories":1310},[119],{"categories":1312},[164],{"categories":1314},[140],{"categories":1316},[119],{"categories":1318},[119],{"categories":1320},[122],{"categories":1322},[119],{"categories":1324},[],{"categories":1326},[],{"categories":1328},[432],{"categories":1330},[],{"categories":1332},[],{"categories":1334},[113],{"categories":1336},[],{"categories":1338},[],{"categories":1340},[],{"categories":1342},[],{"categories":1344},[63],{"categories":1346},[140],{"categories":1348},[177],{"categories":1350},[116],{"categories":1352},[119],{"categories":1354},[119],{"categories":1356},[116],{"categories":1358},[],{"categories":1360},[161],{"categories":1362},[122],{"categories":1364},[116],{"categories":1366},[119],{"categories":1368},[119],{"categories":1370},[113],{"categories":1372},[],{"categories":1374},[113],{"categories":1376},[119],{"categories":1378},[177],{"categories":1380},[122],{"categories":1382},[140],{"categories":1384},[116],{"categories":1386},[119],{"categories":1388},[122],{"categories":1390},[],{"categories":1392},[119],{"categories":1394},[113],{"categories":1396},[119],{"categories":1398},[],{"categories":1400},[140],{"categories":1402},[119],{"categories":1404},[],{"categories":1406},[116],{"categories":1408},[119],{"categories":1410},[],{"categories":1412},[],{"categories":1414},[],{"categories":1416},[119],{"categories":1418},[],{"categories":1420},[432],{"categories":1422},[119],{"categories":1424},[],{"categories":1426},[119],{"categories":1428},[119],{"categories":1430},[119],{"categories":1432},[119,432],{"categories":1434},[119],{"categories":1436},[119],{"categories":1438},[161],{"categories":1440},[122],{"categories":1442},[],{"categories":1444},[122],{"categories":1446},[119],{"categories":1448},[119],{"categories":1450},[119],{"categories":1452},[113],{"categories":1454},[113],{"categories":1456},[63],{"categories":1458},[161],{"categories":1460},[122],{"categories":1462},[],{"categories":1464},[119],{"categories":1466},[140],{"categories":1468},[119],{"categories":1470},[116],{"categories":1472},[],{"categories":1474},[432],{"categories":1476},[161],{"categories":1478},[161],{"categories":1480},[122],{"categories":1482},[140],{"categories":1484},[122],{"categories":1486},[119],{"categories":1488},[],{"categories":1490},[119],{"categories":1492},[],{"categories":1494},[],{"categories":1496},[119],{"categories":1498},[119],{"categories":1500},[119],{"categories":1502},[122],{"categories":1504},[119],{"categories":1506},[],{"categories":1508},[164],{"categories":1510},[122],{"categories":1512},[],{"categories":1514},[119],{"categories":1516},[140],{"categories":1518},[],{"categories":1520},[161],{"categories":1522},[432],{"categories":1524},[140],{"categories":1526},[63],{"categories":1528},[63],{"categories":1530},[140],{"categories":1532},[140],{"categories":1534},[432],{"categories":1536},[],{"categories":1538},[140],{"categories":1540},[119],{"categories":1542},[113],{"categories":1544},[140],{"categories":1546},[],{"categories":1548},[164],{"categories":1550},[140],{"categories":1552},[63],{"categories":1554},[140],{"categories":1556},[432],{"categories":1558},[119],{"categories":1560},[119],{"categories":1562},[],{"categories":1564},[116],{"categories":1566},[],{"categories":1568},[],{"categories":1570},[119],{"categories":1572},[119],{"categories":1574},[119],{"categories":1576},[119],{"categories":1578},[],{"categories":1580},[164],{"categories":1582},[113],{"categories":1584},[],{"categories":1586},[119],{"categories":1588},[119],{"categories":1590},[432],{"categories":1592},[432],{"categories":1594},[],{"categories":1596},[122],{"categories":1598},[140],{"categories":1600},[140],{"categories":1602},[119],{"categories":1604},[122],{"categories":1606},[],{"categories":1608},[161],{"categories":1610},[119],{"categories":1612},[119],{"categories":1614},[],{"categories":1616},[],{"categories":1618},[432],{"categories":1620},[119],{"categories":1622},[63],{"categories":1624},[116],{"categories":1626},[119],{"categories":1628},[],{"categories":1630},[122],{"categories":1632},[113],{"categories":1634},[113],{"categories":1636},[],{"categories":1638},[119],{"categories":1640},[161],{"categories":1642},[122],{"categories":1644},[],{"categories":1646},[119],{"categories":1648},[119],{"categories":1650},[122],{"categories":1652},[],{"categories":1654},[122],{"categories":1656},[63],{"categories":1658},[],{"categories":1660},[119],{"categories":1662},[],{"categories":1664},[119],{"categories":1666},[],{"categories":1668},[119],{"categories":1670},[119],{"categories":1672},[],{"categories":1674},[119],{"categories":1676},[140],{"categories":1678},[119],{"categories":1680},[119],{"categories":1682},[113],{"categories":1684},[119],{"categories":1686},[140],{"categories":1688},[122],{"categories":1690},[],{"categories":1692},[119],{"categories":1694},[177],{"categories":1696},[],{"categories":1698},[],{"categories":1700},[],{"categories":1702},[113],{"categories":1704},[140],{"categories":1706},[122],{"categories":1708},[119],{"categories":1710},[161],{"categories":1712},[122],{"categories":1714},[],{"categories":1716},[122],{"categories":1718},[],{"categories":1720},[119],{"categories":1722},[122],{"categories":1724},[119],{"categories":1726},[],{"categories":1728},[119],{"categories":1730},[119],{"categories":1732},[140],{"categories":1734},[161],{"categories":1736},[122],{"categories":1738},[161],{"categories":1740},[116],{"categories":1742},[],{"categories":1744},[],{"categories":1746},[119],{"categories":1748},[113],{"categories":1750},[140],{"categories":1752},[],{"categories":1754},[],{"categories":1756},[63],{"categories":1758},[161],{"categories":1760},[],{"categories":1762},[119],{"categories":1764},[],{"categories":1766},[177],{"categories":1768},[119],{"categories":1770},[432],{"categories":1772},[63],{"categories":1774},[],{"categories":1776},[122],{"categories":1778},[119],{"categories":1780},[122],{"categories":1782},[122],{"categories":1784},[119],{"categories":1786},[],{"categories":1788},[113],{"categories":1790},[119],{"categories":1792},[116],{"categories":1794},[63],{"categories":1796},[161],{"categories":1798},[],{"categories":1800},[],{"categories":1802},[],{"categories":1804},[122],{"categories":1806},[161],{"categories":1808},[140],{"categories":1810},[119],{"categories":1812},[140],{"categories":1814},[161],{"categories":1816},[],{"categories":1818},[161],{"categories":1820},[140],{"categories":1822},[116],{"categories":1824},[119],{"categories":1826},[140],{"categories":1828},[177],{"categories":1830},[],{"categories":1832},[],{"categories":1834},[164],{"categories":1836},[119,63],{"categories":1838},[140],{"categories":1840},[119],{"categories":1842},[122],{"categories":1844},[122],{"categories":1846},[119],{"categories":1848},[],{"categories":1850},[63],{"categories":1852},[119],{"categories":1854},[164],{"categories":1856},[122],{"categories":1858},[177],{"categories":1860},[432],{"categories":1862},[],{"categories":1864},[113],{"categories":1866},[122],{"categories":1868},[122],{"categories":1870},[63],{"categories":1872},[119],{"categories":1874},[119],{"categories":1876},[],{"categories":1878},[],{"categories":1880},[],{"categories":1882},[432],{"categories":1884},[140],{"categories":1886},[119],{"categories":1888},[119],{"categories":1890},[119],{"categories":1892},[],{"categories":1894},[164],{"categories":1896},[116],{"categories":1898},[],{"categories":1900},[122],{"categories":1902},[432],{"categories":1904},[],{"categories":1906},[161],{"categories":1908},[161],{"categories":1910},[],{"categories":1912},[63],{"categories":1914},[161],{"categories":1916},[119],{"categories":1918},[],{"categories":1920},[140],{"categories":1922},[119],{"categories":1924},[161],{"categories":1926},[122],{"categories":1928},[140],{"categories":1930},[],{"categories":1932},[122],{"categories":1934},[161],{"categories":1936},[119],{"categories":1938},[],{"categories":1940},[119],{"categories":1942},[119],{"categories":1944},[432],{"categories":1946},[140],{"categories":1948},[164],{"categories":1950},[164],{"categories":1952},[],{"categories":1954},[],{"categories":1956},[],{"categories":1958},[122],{"categories":1960},[63],{"categories":1962},[63],{"categories":1964},[],{"categories":1966},[],{"categories":1968},[119],{"categories":1970},[],{"categories":1972},[122],{"categories":1974},[119],{"categories":1976},[],{"categories":1978},[119],{"categories":1980},[116],{"categories":1982},[119],{"categories":1984},[177],{"categories":1986},[122],{"categories":1988},[119],{"categories":1990},[63],{"categories":1992},[140],{"categories":1994},[122],{"categories":1996},[],{"categories":1998},[140],{"categories":2000},[122],{"categories":2002},[122],{"categories":2004},[],{"categories":2006},[116],{"categories":2008},[122],{"categories":2010},[],{"categories":2012},[119],{"categories":2014},[113],{"categories":2016},[140],{"categories":2018},[432],{"categories":2020},[122],{"categories":2022},[122],{"categories":2024},[113],{"categories":2026},[119],{"categories":2028},[],{"categories":2030},[],{"categories":2032},[161],{"categories":2034},[119,116],{"categories":2036},[],{"categories":2038},[113],{"categories":2040},[164],{"categories":2042},[119],{"categories":2044},[63],{"categories":2046},[119],{"categories":2048},[122],{"categories":2050},[119],{"categories":2052},[119],{"categories":2054},[140],{"categories":2056},[122],{"categories":2058},[],{"categories":2060},[],{"categories":2062},[122],{"categories":2064},[119],{"categories":2066},[432],{"categories":2068},[],{"categories":2070},[119],{"categories":2072},[122],{"categories":2074},[],{"categories":2076},[119],{"categories":2078},[177],{"categories":2080},[164],{"categories":2082},[122],{"categories":2084},[119],{"categories":2086},[432],{"categories":2088},[],{"categories":2090},[119],{"categories":2092},[177],{"categories":2094},[161],{"categories":2096},[119],{"categories":2098},[],{"categories":2100},[177],{"categories":2102},[140],{"categories":2104},[119],{"categories":2106},[119],{"categories":2108},[113],{"categories":2110},[],{"categories":2112},[],{"categories":2114},[161],{"categories":2116},[119],{"categories":2118},[164],{"categories":2120},[177],{"categories":2122},[177],{"categories":2124},[140],{"categories":2126},[],{"categories":2128},[],{"categories":2130},[119],{"categories":2132},[],{"categories":2134},[119,63],{"categories":2136},[140],{"categories":2138},[122],{"categories":2140},[63],{"categories":2142},[119],{"categories":2144},[113],{"categories":2146},[],{"categories":2148},[],{"categories":2150},[113],{"categories":2152},[177],{"categories":2154},[119],{"categories":2156},[],{"categories":2158},[161,119],{"categories":2160},[432],{"categories":2162},[113],{"categories":2164},[],{"categories":2166},[116],{"categories":2168},[116],{"categories":2170},[119],{"categories":2172},[63],{"categories":2174},[122],{"categories":2176},[140],{"categories":2178},[177],{"categories":2180},[161],{"categories":2182},[119],{"categories":2184},[119],{"categories":2186},[119],{"categories":2188},[113],{"categories":2190},[119],{"categories":2192},[122],{"categories":2194},[140],{"categories":2196},[],{"categories":2198},[],{"categories":2200},[164],{"categories":2202},[63],{"categories":2204},[119],{"categories":2206},[161],{"categories":2208},[164],{"categories":2210},[119],{"categories":2212},[119],{"categories":2214},[122],{"categories":2216},[122],{"categories":2218},[119,116],{"categories":2220},[],{"categories":2222},[161],{"categories":2224},[],{"categories":2226},[119],{"categories":2228},[140],{"categories":2230},[113],{"categories":2232},[113],{"categories":2234},[122],{"categories":2236},[119],{"categories":2238},[116],{"categories":2240},[63],{"categories":2242},[177],{"categories":2244},[],{"categories":2246},[140],{"categories":2248},[119],{"categories":2250},[119],{"categories":2252},[140],{"categories":2254},[63],{"categories":2256},[119],{"categories":2258},[122],{"categories":2260},[140],{"categories":2262},[119],{"categories":2264},[161],{"categories":2266},[119],{"categories":2268},[119],{"categories":2270},[432],{"categories":2272},[125],{"categories":2274},[122],{"categories":2276},[119],{"categories":2278},[140],{"categories":2280},[122],{"categories":2282},[177],{"categories":2284},[119],{"categories":2286},[],{"categories":2288},[119],{"categories":2290},[],{"categories":2292},[],{"categories":2294},[],{"categories":2296},[116],{"categories":2298},[119],{"categories":2300},[122],{"categories":2302},[140],{"categories":2304},[140],{"categories":2306},[140],{"categories":2308},[140],{"categories":2310},[],{"categories":2312},[113],{"categories":2314},[122],{"categories":2316},[140],{"categories":2318},[113],{"categories":2320},[122],{"categories":2322},[119],{"categories":2324},[119,122],{"categories":2326},[122],{"categories":2328},[432],{"categories":2330},[140],{"categories":2332},[140],{"categories":2334},[122],{"categories":2336},[119],{"categories":2338},[],{"categories":2340},[140],{"categories":2342},[177],{"categories":2344},[113],{"categories":2346},[119],{"categories":2348},[119],{"categories":2350},[],{"categories":2352},[63],{"categories":2354},[],{"categories":2356},[113],{"categories":2358},[122],{"categories":2360},[140],{"categories":2362},[119],{"categories":2364},[140],{"categories":2366},[113],{"categories":2368},[140],{"categories":2370},[140],{"categories":2372},[],{"categories":2374},[116],{"categories":2376},[122],{"categories":2378},[140],{"categories":2380},[140],{"categories":2382},[140],{"categories":2384},[140],{"categories":2386},[140],{"categories":2388},[140],{"categories":2390},[140],{"categories":2392},[140],{"categories":2394},[140],{"categories":2396},[140],{"categories":2398},[164],{"categories":2400},[113],{"categories":2402},[119],{"categories":2404},[119],{"categories":2406},[],{"categories":2408},[119,113],{"categories":2410},[],{"categories":2412},[122],{"categories":2414},[140],{"categories":2416},[122],{"categories":2418},[119],{"categories":2420},[119],{"categories":2422},[119],{"categories":2424},[119],{"categories":2426},[119],{"categories":2428},[122],{"categories":2430},[116],{"categories":2432},[161],{"categories":2434},[140],{"categories":2436},[119],{"categories":2438},[],{"categories":2440},[],{"categories":2442},[122],{"categories":2444},[161],{"categories":2446},[119],{"categories":2448},[],{"categories":2450},[],{"categories":2452},[177],{"categories":2454},[119],{"categories":2456},[],{"categories":2458},[],{"categories":2460},[113],{"categories":2462},[116],{"categories":2464},[119],{"categories":2466},[116],{"categories":2468},[161],{"categories":2470},[],{"categories":2472},[140],{"categories":2474},[],{"categories":2476},[161],{"categories":2478},[119],{"categories":2480},[177],{"categories":2482},[],{"categories":2484},[177],{"categories":2486},[],{"categories":2488},[],{"categories":2490},[122],{"categories":2492},[],{"categories":2494},[116],{"categories":2496},[113],{"categories":2498},[161],{"categories":2500},[63],{"categories":2502},[],{"categories":2504},[],{"categories":2506},[119],{"categories":2508},[113],{"categories":2510},[177],{"categories":2512},[],{"categories":2514},[122],{"categories":2516},[122],{"categories":2518},[140],{"categories":2520},[119],{"categories":2522},[122],{"categories":2524},[119],{"categories":2526},[122],{"categories":2528},[119],{"categories":2530},[125],{"categories":2532},[140],{"categories":2534},[],{"categories":2536},[177],{"categories":2538},[63],{"categories":2540},[122],{"categories":2542},[],{"categories":2544},[119],{"categories":2546},[122],{"categories":2548},[116],{"categories":2550},[113],{"categories":2552},[119],{"categories":2554},[161],{"categories":2556},[63],{"categories":2558},[63],{"categories":2560},[119],{"categories":2562},[164],{"categories":2564},[119],{"categories":2566},[122],{"categories":2568},[116],{"categories":2570},[122],{"categories":2572},[119],{"categories":2574},[119],{"categories":2576},[122],{"categories":2578},[140],{"categories":2580},[],{"categories":2582},[113],{"categories":2584},[119],{"categories":2586},[122],{"categories":2588},[119],{"categories":2590},[119],{"categories":2592},[],{"categories":2594},[161],{"categories":2596},[116],{"categories":2598},[140],{"categories":2600},[119],{"categories":2602},[119],{"categories":2604},[161],{"categories":2606},[177],{"categories":2608},[164],{"categories":2610},[119],{"categories":2612},[140],{"categories":2614},[119],{"categories":2616},[122],{"categories":2618},[432],{"categories":2620},[119],{"categories":2622},[122],{"categories":2624},[164],{"categories":2626},[],{"categories":2628},[122],{"categories":2630},[63],{"categories":2632},[161],{"categories":2634},[119],{"categories":2636},[113],{"categories":2638},[116],{"categories":2640},[63],{"categories":2642},[],{"categories":2644},[122],{"categories":2646},[119],{"categories":2648},[],{"categories":2650},[140],{"categories":2652},[],{"categories":2654},[140],{"categories":2656},[119],{"categories":2658},[122],{"categories":2660},[122],{"categories":2662},[122],{"categories":2664},[],{"categories":2666},[],{"categories":2668},[119],{"categories":2670},[119],{"categories":2672},[],{"categories":2674},[161],{"categories":2676},[122],{"categories":2678},[177],{"categories":2680},[113],{"categories":2682},[],{"categories":2684},[],{"categories":2686},[140],{"categories":2688},[63],{"categories":2690},[119],{"categories":2692},[119],{"categories":2694},[119],{"categories":2696},[63],{"categories":2698},[140],{"categories":2700},[161],{"categories":2702},[119],{"categories":2704},[119],{"categories":2706},[119],{"categories":2708},[140],{"categories":2710},[119],{"categories":2712},[140],{"categories":2714},[122],{"categories":2716},[122],{"categories":2718},[63],{"categories":2720},[122],{"categories":2722},[119],{"categories":2724},[63],{"categories":2726},[161],{"categories":2728},[],{"categories":2730},[122],{"categories":2732},[],{"categories":2734},[],{"categories":2736},[116],{"categories":2738},[119],{"categories":2740},[122],{"categories":2742},[113],{"categories":2744},[122],{"categories":2746},[177],{"categories":2748},[],{"categories":2750},[122],{"categories":2752},[],{"categories":2754},[113],{"categories":2756},[122],{"categories":2758},[],{"categories":2760},[122],{"categories":2762},[119],{"categories":2764},[140],{"categories":2766},[119],{"categories":2768},[122],{"categories":2770},[140],{"categories":2772},[122],{"categories":2774},[63],{"categories":2776},[161],{"categories":2778},[113],{"categories":2780},[],{"categories":2782},[122],{"categories":2784},[161],{"categories":2786},[140],{"categories":2788},[119],{"categories":2790},[161],{"categories":2792},[113],{"categories":2794},[],{"categories":2796},[122],{"categories":2798},[122],{"categories":2800},[119],{"categories":2802},[],{"categories":2804},[122],{"categories":2806},[125],{"categories":2808},[140],{"categories":2810},[122],{"categories":2812},[116],{"categories":2814},[],{"categories":2816},[119],{"categories":2818},[125],{"categories":2820},[119],{"categories":2822},[122],{"categories":2824},[140],{"categories":2826},[113],{"categories":2828},[432],{"categories":2830},[119],{"categories":2832},[119],{"categories":2834},[119],{"categories":2836},[140],{"categories":2838},[116],{"categories":2840},[119],{"categories":2842},[161],{"categories":2844},[140],{"categories":2846},[432],{"categories":2848},[119],{"categories":2850},[],{"categories":2852},[],{"categories":2854},[432],{"categories":2856},[164],{"categories":2858},[122],{"categories":2860},[122],{"categories":2862},[140],{"categories":2864},[119],{"categories":2866},[113],{"categories":2868},[161],{"categories":2870},[122],{"categories":2872},[119],{"categories":2874},[177],{"categories":2876},[119],{"categories":2878},[122],{"categories":2880},[],{"categories":2882},[119],{"categories":2884},[119],{"categories":2886},[140],{"categories":2888},[113],{"categories":2890},[],{"categories":2892},[119],{"categories":2894},[119],{"categories":2896},[63],{"categories":2898},[161],{"categories":2900},[119,122],{"categories":2902},[177,116],{"categories":2904},[119],{"categories":2906},[],{"categories":2908},[122],{"categories":2910},[],{"categories":2912},[63],{"categories":2914},[119],{"categories":2916},[140],{"categories":2918},[],{"categories":2920},[122],{"categories":2922},[],{"categories":2924},[122],{"categories":2926},[113],{"categories":2928},[122],{"categories":2930},[119],{"categories":2932},[432],{"categories":2934},[177],{"categories":2936},[116],{"categories":2938},[116],{"categories":2940},[113],{"categories":2942},[113],{"categories":2944},[119],{"categories":2946},[122],{"categories":2948},[119],{"categories":2950},[119],{"categories":2952},[113],{"categories":2954},[119],{"categories":2956},[177],{"categories":2958},[140],{"categories":2960},[119],{"categories":2962},[122],{"categories":2964},[119],{"categories":2966},[],{"categories":2968},[63],{"categories":2970},[],{"categories":2972},[122],{"categories":2974},[113],{"categories":2976},[],{"categories":2978},[432],{"categories":2980},[119],{"categories":2982},[],{"categories":2984},[140],{"categories":2986},[122],{"categories":2988},[63],{"categories":2990},[119],{"categories":2992},[122],{"categories":2994},[63],{"categories":2996},[122],{"categories":2998},[140],{"categories":3000},[113],{"categories":3002},[140],{"categories":3004},[63],{"categories":3006},[119],{"categories":3008},[161],{"categories":3010},[119],{"categories":3012},[119],{"categories":3014},[119],{"categories":3016},[119],{"categories":3018},[122],{"categories":3020},[119],{"categories":3022},[122],{"categories":3024},[119],{"categories":3026},[113],{"categories":3028},[119],{"categories":3030},[122],{"categories":3032},[161],{"categories":3034},[113],{"categories":3036},[122],{"categories":3038},[161],{"categories":3040},[],{"categories":3042},[119],{"categories":3044},[119],{"categories":3046},[63],{"categories":3048},[],{"categories":3050},[122],{"categories":3052},[177],{"categories":3054},[119],{"categories":3056},[140],{"categories":3058},[177],{"categories":3060},[122],{"categories":3062},[116],{"categories":3064},[116],{"categories":3066},[119],{"categories":3068},[113],{"categories":3070},[],{"categories":3072},[119],{"categories":3074},[],{"categories":3076},[113],{"categories":3078},[119],{"categories":3080},[122],{"categories":3082},[122],{"categories":3084},[],{"categories":3086},[63],{"categories":3088},[63],{"categories":3090},[177],{"categories":3092},[161],{"categories":3094},[],{"categories":3096},[119],{"categories":3098},[113],{"categories":3100},[119],{"categories":3102},[63],{"categories":3104},[113],{"categories":3106},[140],{"categories":3108},[140],{"categories":3110},[],{"categories":3112},[140],{"categories":3114},[122],{"categories":3116},[161],{"categories":3118},[164],{"categories":3120},[119],{"categories":3122},[],{"categories":3124},[140],{"categories":3126},[63],{"categories":3128},[116],{"categories":3130},[119],{"categories":3132},[113],{"categories":3134},[432],{"categories":3136},[113],{"categories":3138},[],{"categories":3140},[],{"categories":3142},[140],{"categories":3144},[],{"categories":3146},[122],{"categories":3148},[122],{"categories":3150},[122],{"categories":3152},[],{"categories":3154},[119],{"categories":3156},[],{"categories":3158},[140],{"categories":3160},[113],{"categories":3162},[161],{"categories":3164},[119],{"categories":3166},[140],{"categories":3168},[140],{"categories":3170},[],{"categories":3172},[140],{"categories":3174},[113],{"categories":3176},[119],{"categories":3178},[],{"categories":3180},[122],{"categories":3182},[122],{"categories":3184},[113],{"categories":3186},[],{"categories":3188},[],{"categories":3190},[],{"categories":3192},[161],{"categories":3194},[122],{"categories":3196},[119],{"categories":3198},[],{"categories":3200},[],{"categories":3202},[],{"categories":3204},[161],{"categories":3206},[],{"categories":3208},[113],{"categories":3210},[],{"categories":3212},[],{"categories":3214},[161],{"categories":3216},[119],{"categories":3218},[140],{"categories":3220},[],{"categories":3222},[177],{"categories":3224},[140],{"categories":3226},[177],{"categories":3228},[119],{"categories":3230},[],{"categories":3232},[],{"categories":3234},[122],{"categories":3236},[],{"categories":3238},[],{"categories":3240},[122],{"categories":3242},[119],{"categories":3244},[],{"categories":3246},[122],{"categories":3248},[140],{"categories":3250},[177],{"categories":3252},[164],{"categories":3254},[122],{"categories":3256},[122],{"categories":3258},[],{"categories":3260},[],{"categories":3262},[],{"categories":3264},[140],{"categories":3266},[],{"categories":3268},[],{"categories":3270},[161],{"categories":3272},[113],{"categories":3274},[],{"categories":3276},[116],{"categories":3278},[177],{"categories":3280},[119],{"categories":3282},[63],{"categories":3284},[113],{"categories":3286},[164],{"categories":3288},[116],{"categories":3290},[63],{"categories":3292},[],{"categories":3294},[],{"categories":3296},[122],{"categories":3298},[113],{"categories":3300},[161],{"categories":3302},[113],{"categories":3304},[122],{"categories":3306},[432],{"categories":3308},[122],{"categories":3310},[],{"categories":3312},[119],{"categories":3314},[140],{"categories":3316},[63],{"categories":3318},[],{"categories":3320},[161],{"categories":3322},[140],{"categories":3324},[113],{"categories":3326},[122],{"categories":3328},[119],{"categories":3330},[116],{"categories":3332},[122,432],{"categories":3334},[122],{"categories":3336},[63],{"categories":3338},[119],{"categories":3340},[164],{"categories":3342},[177],{"categories":3344},[122],{"categories":3346},[],{"categories":3348},[122],{"categories":3350},[119],{"categories":3352},[116],{"categories":3354},[],{"categories":3356},[],{"categories":3358},[119],{"categories":3360},[164],{"categories":3362},[119],{"categories":3364},[],{"categories":3366},[140],{"categories":3368},[],{"categories":3370},[140],{"categories":3372},[63],{"categories":3374},[122],{"categories":3376},[119],{"categories":3378},[177],{"categories":3380},[63],{"categories":3382},[],{"categories":3384},[140],{"categories":3386},[119],{"categories":3388},[],{"categories":3390},[119],{"categories":3392},[122],{"categories":3394},[119],{"categories":3396},[122],{"categories":3398},[119],{"categories":3400},[119],{"categories":3402},[119],{"categories":3404},[119],{"categories":3406},[116],{"categories":3408},[],{"categories":3410},[125],{"categories":3412},[140],{"categories":3414},[119],{"categories":3416},[],{"categories":3418},[63],{"categories":3420},[119],{"categories":3422},[119],{"categories":3424},[122],{"categories":3426},[140],{"categories":3428},[119],{"categories":3430},[119],{"categories":3432},[116],{"categories":3434},[122],{"categories":3436},[161],{"categories":3438},[],{"categories":3440},[164],{"categories":3442},[119],{"categories":3444},[],{"categories":3446},[140],{"categories":3448},[177],{"categories":3450},[],{"categories":3452},[],{"categories":3454},[140],{"categories":3456},[140],{"categories":3458},[177],{"categories":3460},[113],{"categories":3462},[122],{"categories":3464},[122],{"categories":3466},[119],{"categories":3468},[116],{"categories":3470},[],{"categories":3472},[],{"categories":3474},[140],{"categories":3476},[164],{"categories":3478},[63],{"categories":3480},[122],{"categories":3482},[161],{"categories":3484},[164],{"categories":3486},[164],{"categories":3488},[],{"categories":3490},[140],{"categories":3492},[119],{"categories":3494},[119],{"categories":3496},[63],{"categories":3498},[],{"categories":3500},[140],{"categories":3502},[140],{"categories":3504},[140],{"categories":3506},[],{"categories":3508},[122],{"categories":3510},[119],{"categories":3512},[],{"categories":3514},[113],{"categories":3516},[116],{"categories":3518},[],{"categories":3520},[119],{"categories":3522},[119],{"categories":3524},[],{"categories":3526},[63],{"categories":3528},[],{"categories":3530},[],{"categories":3532},[],{"categories":3534},[],{"categories":3536},[119],{"categories":3538},[140],{"categories":3540},[],{"categories":3542},[],{"categories":3544},[119],{"categories":3546},[119],{"categories":3548},[119],{"categories":3550},[164],{"categories":3552},[119],{"categories":3554},[164],{"categories":3556},[],{"categories":3558},[164],{"categories":3560},[164],{"categories":3562},[432],{"categories":3564},[122],{"categories":3566},[63],{"categories":3568},[],{"categories":3570},[],{"categories":3572},[164],{"categories":3574},[63],{"categories":3576},[63],{"categories":3578},[63],{"categories":3580},[],{"categories":3582},[113],{"categories":3584},[63],{"categories":3586},[63],{"categories":3588},[113],{"categories":3590},[63],{"categories":3592},[116],{"categories":3594},[63],{"categories":3596},[63],{"categories":3598},[63],{"categories":3600},[164],{"categories":3602},[140],{"categories":3604},[140],{"categories":3606},[119],{"categories":3608},[63],{"categories":3610},[164],{"categories":3612},[432],{"categories":3614},[164],{"categories":3616},[164],{"categories":3618},[164],{"categories":3620},[],{"categories":3622},[116],{"categories":3624},[],{"categories":3626},[432],{"categories":3628},[63],{"categories":3630},[63],{"categories":3632},[63],{"categories":3634},[122],{"categories":3636},[140,116],{"categories":3638},[164],{"categories":3640},[],{"categories":3642},[],{"categories":3644},[164],{"categories":3646},[],{"categories":3648},[164],{"categories":3650},[140],{"categories":3652},[122],{"categories":3654},[],{"categories":3656},[63],{"categories":3658},[119],{"categories":3660},[161],{"categories":3662},[],{"categories":3664},[119],{"categories":3666},[],{"categories":3668},[140],{"categories":3670},[113],{"categories":3672},[164],{"categories":3674},[],{"categories":3676},[63],{"categories":3678},[140],[3680,3757,3986,4142],{"id":3681,"title":3682,"ai":3683,"body":3688,"categories":3714,"created_at":64,"date_modified":64,"description":56,"extension":65,"faq":64,"featured":66,"kicker_label":64,"meta":3715,"navigation":93,"path":3745,"published_at":64,"question":64,"scraped_at":3746,"seo":3747,"sitemap":3748,"source_id":3749,"source_name":99,"source_type":100,"source_url":3750,"stem":3751,"tags":3752,"thumbnail_url":64,"tldr":3754,"tweet":64,"unknown_tags":3755,"__hash__":3756},"summaries\u002Fsummaries\u002Fdc6c8924ef957432-zig-bans-ai-prs-to-bet-on-contributors-not-code-summary.md","Zig Bans AI PRs to Bet on Contributors, Not Code",{"provider":7,"model":8,"input_tokens":3684,"output_tokens":3685,"processing_time_ms":3686,"cost_usd":3687},4777,1746,17998,0.0018059,{"type":14,"value":3689,"toc":3710},[3690,3694,3697,3700,3704,3707],[17,3691,3693],{"id":3692},"treat-contributors-as-long-term-investments","Treat Contributors as Long-Term Investments",[22,3695,3696],{},"Successful open-source projects like Zig drown in PRs but prioritize growing new contributors over cherry-picking perfect code. Zig's core team reviews even imperfect first PRs to build confident, prolific contributors—each one an 'investment' that pays off over time. This 'contributor poker' mindset means betting on the person, not the PR contents, much like poker where you play the opponent over the cards. Evidence: Zig's strict policy bans LLMs entirely for issues, PRs, and comments, encouraging native-language posts with human translation.",[22,3698,3699],{},"Contrast with Bun, Zig's most prominent project, acquired by Anthropic in December 2025. Bun's Zig fork added parallel semantic analysis and multiple codegen units to LLVM backend, yielding 4x faster compiles (see diff: oven-sh\u002Fzig upgrade-0.15.2…upgrade-0.15.2-fast). Bun won't upstream due to Zig's ban, as LLM assistance dominates their workflow.",[17,3701,3703],{"id":3702},"llm-assistance-wastes-maintainer-time","LLM Assistance Wastes Maintainer Time",[22,3705,3706],{},"Reviewing LLM-generated PRs yields zero return on investment for maintainers. A perfect AI-written PR doesn't teach the submitter Zig's nuances, so the review effort doesn't create a skilled future contributor. Instead, maintainers could prompt their own LLM to solve the issue faster. Loris Cro (Zig Software Foundation VP of Community) argues this in 'Contributor Poker and Zig's AI Ban': helping imperfect human PRs maximizes ROI by expanding the trusted contributor pool, while AI PRs just demand review without upside.",[22,3708,3709],{},"Trade-off: Strict bans deter quick wins (e.g., Bun's 4x perf) but sustain a human-driven community. Bun's heavy AI use highlights the fork risk—projects split when policies clash with AI workflows.",{"title":56,"searchDepth":57,"depth":57,"links":3711},[3712,3713],{"id":3692,"depth":57,"text":3693},{"id":3702,"depth":57,"text":3703},[63],{"content_references":3716,"triage":3742},[3717,3720,3723,3726,3729,3732,3735,3739],{"type":70,"title":3718,"url":3719,"context":74},"Zig","https:\u002F\u002Fziglang.org\u002F",{"type":70,"title":3721,"url":3722,"context":74},"Bun","https:\u002F\u002Fbun.com\u002F",{"type":76,"title":3724,"url":3725,"context":80},"Zig Code of Conduct","https:\u002F\u002Fziglang.org\u002Fcode-of-conduct\u002F",{"type":76,"title":3727,"url":3728,"context":74},"Bun Joins Anthropic","https:\u002F\u002Fbun.com\u002Fblog\u002Fbun-joins-anthropic",{"type":76,"title":3730,"url":3731,"context":80},"Bun Compile Perf Tweet","https:\u002F\u002Fx.com\u002Fbunjavascript\u002Fstatus\u002F2048427636414923250",{"type":76,"title":3733,"url":3734,"context":80},"Bun Zig Fork Diff","https:\u002F\u002Fgithub.com\u002Foven-sh\u002Fzig\u002Fcompare\u002Fupgrade-0.15.2…upgrade-0.15.2-fast",{"type":76,"title":3736,"author":3737,"url":3738,"context":80},"Contributor Poker and Zig's AI Ban","Loris Cro","https:\u002F\u002Fkristoff.it\u002Fblog\u002Fcontributor_poker_and_ai\u002F",{"type":76,"title":3740,"url":3741,"context":74},"Lobste.rs Thread","https:\u002F\u002Flobste.rs\u002Fs\u002Fifcyr1\u002Fcontributor_poker_zig_s_ai_ban",{"relevance":90,"novelty":89,"quality":90,"actionability":89,"composite":3743,"reasoning":3744},3.6,"Category: Business & SaaS. The article discusses a unique approach to managing contributions in open-source projects, emphasizing the long-term investment in human contributors over AI-generated code, which addresses a specific pain point of balancing AI use with community growth. It provides insights into the trade-offs of banning AI contributions, but lacks detailed actionable steps for implementation.","\u002Fsummaries\u002Fdc6c8924ef957432-zig-bans-ai-prs-to-bet-on-contributors-not-code-summary","2026-05-03 17:01:57",{"title":3682,"description":56},{"loc":3745},"dc6c8924ef957432","https:\u002F\u002Fsimonwillison.net\u002F2026\u002FApr\u002F30\u002Fzig-anti-ai\u002F#atom-everything","summaries\u002Fdc6c8924ef957432-zig-bans-ai-prs-to-bet-on-contributors-not-code-summary",[105,106,3753],"ai-ethics","Zig rejects LLM-generated contributions to invest review time in mentoring new contributors into long-term project assets, treating PRs as 'contributor poker' where you bet on the person over perfect code.",[106,3753],"vBD-mBPHX9EUH3l2HC9OlHb-m0qpQFMNOJ5z8rCsHSw",{"id":3758,"title":3759,"ai":3760,"body":3765,"categories":3957,"created_at":64,"date_modified":64,"description":56,"extension":65,"faq":64,"featured":66,"kicker_label":64,"meta":3958,"navigation":93,"path":3972,"published_at":3973,"question":64,"scraped_at":3974,"seo":3975,"sitemap":3976,"source_id":3977,"source_name":3978,"source_type":100,"source_url":3979,"stem":3980,"tags":3981,"thumbnail_url":64,"tldr":3983,"tweet":64,"unknown_tags":3984,"__hash__":3985},"summaries\u002Fsummaries\u002Fce5909da8e6a1633-local-serp-index-with-typesense-0-faceted-search-summary.md","Local SERP Index with Typesense: $0 Faceted Search",{"provider":7,"model":8,"input_tokens":3761,"output_tokens":3762,"processing_time_ms":3763,"cost_usd":3764},8571,2181,28010,0.0027822,{"type":14,"value":3766,"toc":3952},[3767,3771,3794,3797,3801,3839,3885,3905,3909,3941],[17,3768,3770],{"id":3769},"pipeline-delivers-instant-faceted-search-over-live-serps","Pipeline Delivers Instant Faceted Search Over Live SERPs",[22,3772,3773,3774,3777,3778,3781,3782,3785,3786,3789,3790,3793],{},"Replace manual JSON grepping for research (e.g., arXiv RAG papers) with a local index: query Google via ",[26,3775,3776],{},"site:arxiv.org + topic"," using Bright Data SERP API, transform organics to docs, bulk upsert into Typesense—a free, Dockerized Algolia alternative running on localhost:8108. Default fetches 10 results per query (sliced client-side since Google ignores ",[26,3779,3780],{},"&num="," post-2025 deprecation), delays 0.6s between calls to respect rates. Run ",[26,3783,3784],{},"ingest.py"," to drop\u002Frecreate collection or ",[26,3787,3788],{},"--append"," to accumulate across runs, enabling cross-query analysis like overlaps in \"agentic RAG\" vs. \"hybrid search\". Browser queries proxy through ",[26,3791,3792],{},"serve.py"," (stdlib http.server, 30 lines) to hide admin API key; UI shows keyword results, source_query\u002Fdomain chips, position-sorted cards with provenance.",[22,3795,3796],{},"Yields sub-second faceted search: filter by seed query chips (exact strings like \"site:arxiv.org long context vs RAG 2026\") or domains, revealing patterns like papers surfacing under multiple angles. Total cost $0 beyond Bright Data credits; scales to any domain where Google outperforms native search.",[17,3798,3800],{"id":3799},"schema-and-doc-mapping-unlocks-provenance","Schema and Doc Mapping Unlocks Provenance",[22,3802,3803,3804,3807,3808,3811,3812,3815,3816,3819,3820,3807,3823,3826,3827,3830,3831,3834,3835,3838],{},"Define Typesense collection with fields mirroring SERP organics: ",[26,3805,3806],{},"title","\u002F",[26,3809,3810],{},"snippet"," (capped 8000\u002F16000 chars), ",[26,3813,3814],{},"url",", ",[26,3817,3818],{},"position"," (int32, defaults to rank or index+1), ",[26,3821,3822],{},"source_query",[26,3824,3825],{},"domain"," (string, ",[26,3828,3829],{},"facet: true","). Set ",[26,3832,3833],{},"default_sorting_field: \"position\""," to preserve Google's order as baseline ranking signal. Generate doc IDs as ",[26,3836,3837],{},"sha256(url + \"\\t\" + source_query)","—critical for duplicates: same arXiv paper under two queries becomes two docs, each facet-tagged, letting you spot multi-angle surfacing. Hash URL alone loses this; index stays \"clean\" but provenance vanishes.",[22,3840,3841,3844,3845,3807,3848,3815,3850,3807,3853,3815,3855,3807,3858,3860,3861,3864,3865,3868,3869,3872,3873,3876,3877,3880,3881,3884],{},[26,3842,3843],{},"organic_to_documents"," handles var names (",[26,3846,3847],{},"link",[26,3849,3814],{},[26,3851,3852],{},"description",[26,3854,3810],{},[26,3856,3857],{},"rank",[26,3859,3818],{},"); skips invalids. ",[26,3862,3863],{},"import_"," with ",[26,3866,3867],{},"{\"action\": \"upsert\"}"," on JSONL batch reports errors per line (e.g., check ",[26,3870,3871],{},"'\"success\":false'","). ",[26,3874,3875],{},"--num-results 8"," arg caps post-fetch; retries 2x with 0.5*(attempt+1)s backoff on Bright Data 200-but-empty or non-200 inner status. Validates unwrap from ",[26,3878,3879],{},"body"," (often JSON string) before ",[26,3882,3883],{},"organic"," access—skipping silently indexes nothing.",[22,3886,3887,3888,3892,3893,3896,3897,3900,3901,3904],{},"Demo queries: ",[3889,3890,3891],"span",{},"\"site:arxiv.org retrieval augmented generation 2026\", etc.","; override via ",[26,3894,3895],{},"--query"," (repeatable) or ",[26,3898,3899],{},"--queries-file"," (one\u002Fline, skip #\u002Fblanks). ",[26,3902,3903],{},"--delay 0.6"," tunes politeness.",[17,3906,3908],{"id":3907},"proxy-shields-api-key-ui-leverages-facets-natively","Proxy Shields API Key; UI Leverages Facets Natively",[22,3910,3911,3913,3914,3917,3918,3921,3922,3925,3926,3929,3930,3933,3934,3937,3938,3940],{},[26,3912,3792],{}," proxies ",[26,3915,3916],{},"\u002Fapi\u002Fsearch"," (fixed params: q, filter_by=",[26,3919,3920],{},"source_query:*chip* || domain:*chip*",", facet_by=",[26,3923,3924],{},"source_query,domain",", per_page=20) to Typesense, stripping auth from response. No frameworks—pure ",[26,3927,3928],{},"http.server"," + ",[26,3931,3932],{},"urllib.parse"," for static\u002Findex.html. UI: input triggers fetch, chips toggle facets (e.g., ",[26,3935,3936],{},"q=graph RAG&filter_by=source_query:site:arxiv.org graph RAG 2026","), results as cards (",[26,3939,3806],{},", snippet, url, position, chips).",[22,3942,3943,3944,3947,3948,3951],{},"Docker Compose persists ",[26,3945,3946],{},"\u002Fdata"," volume; ",[26,3949,3950],{},"--api-key devtypesense"," matches .env. Swap SERP providers by editing .env only. Explores snapshot (recreate) vs. corpus (--append) modes: add Thursday query to Monday index without reset, query once-collected data many times.",{"title":56,"searchDepth":57,"depth":57,"links":3953},[3954,3955,3956],{"id":3769,"depth":57,"text":3770},{"id":3799,"depth":57,"text":3800},{"id":3907,"depth":57,"text":3908},[113],{"content_references":3959,"triage":3969},[3960,3963,3966],{"type":70,"title":3961,"url":3962,"context":74},"Bright Data","https:\u002F\u002Fget.brightdata.com\u002Fbd-serp-api",{"type":70,"title":3964,"url":3965,"context":74},"Typesense","https:\u002F\u002Ftypesense.org\u002F",{"type":76,"title":3967,"url":3968,"context":74},"sixthextinction\u002Ftypesense","https:\u002F\u002Fgithub.com\u002Fsixthextinction\u002Ftypesense",{"relevance":90,"novelty":89,"quality":90,"actionability":90,"composite":3970,"reasoning":3971},3.8,"Category: AI Automation. The article provides a practical guide on building a local search engine using Typesense, addressing the pain point of manual data handling for AI-powered product builders. It includes specific steps for implementation, such as using Bright Data's SERP API and Typesense for faceted search, making it actionable for developers.","\u002Fsummaries\u002Fce5909da8e6a1633-local-serp-index-with-typesense-0-faceted-search-summary","2026-04-21 06:19:56","2026-04-21 15:25:51",{"title":3759,"description":56},{"loc":3972},"ce5909da8e6a1633","Python in Plain English","https:\u002F\u002Fpython.plainenglish.io\u002Fi-built-a-0-search-engine-on-real-web-data-no-algolia-or-elasticsearch-10be241aef3b?source=rss----78073def27b8---4","summaries\u002Fce5909da8e6a1633-local-serp-index-with-typesense-0-faceted-search-summary",[104,105,3982],"automation","Fetch Google SERPs via Bright Data, index organics into local Typesense for fast faceted search across queries\u002Fdomains. Beats grepping JSON; open-source Python\u002FDocker setup accumulates runs with --append.",[],"AbbMi-hgMYR87OSYp4wOlS1r12rbfYehoZ6-dhuTnHQ",{"id":3987,"title":3988,"ai":3989,"body":3994,"categories":4112,"created_at":64,"date_modified":64,"description":56,"extension":65,"faq":64,"featured":66,"kicker_label":64,"meta":4113,"navigation":93,"path":4129,"published_at":64,"question":64,"scraped_at":4130,"seo":4131,"sitemap":4132,"source_id":4133,"source_name":4134,"source_type":100,"source_url":4135,"stem":4136,"tags":4137,"thumbnail_url":64,"tldr":4139,"tweet":64,"unknown_tags":4140,"__hash__":4141},"summaries\u002Fsummaries\u002F3eec1b11d66cfd86-uv-rust-powered-python-manager-10-100x-faster-than-summary.md","uv: Rust-Powered Python Manager 10-100x Faster Than Pip",{"provider":7,"model":8,"input_tokens":3990,"output_tokens":3991,"processing_time_ms":3992,"cost_usd":3993},7714,2200,11167,0.0026203,{"type":14,"value":3995,"toc":4106},[3996,4000,4011,4015,4038,4042,4076,4080],[17,3997,3999],{"id":3998},"achieve-10-100x-speedups-by-consolidating-python-tools","Achieve 10-100x Speedups by Consolidating Python Tools",[22,4001,4002,4003,4006,4007,4010],{},"uv, written in Rust, unifies pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv and others into one binary. Benchmarks show it resolves and installs packages 10-100x faster than pip—for example, installing Trio's dependencies with a warm cache completes in under 100ms versus seconds or minutes for alternatives. Use a global cache for disk-efficient deduplication across projects. Install via curl on macOS\u002FLinux (",[26,4004,4005],{},"curl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh",") or PowerShell on Windows (",[26,4008,4009],{},"powershell -ExecutionPolicy ByPass -c \"irm https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.ps1 | iex\"","), no Rust or Python required. Supports macOS, Linux, Windows.",[17,4012,4014],{"id":4013},"manage-full-project-lifecycles-with-lockfiles-and-workspaces","Manage Full Project Lifecycles with Lockfiles and Workspaces",[22,4016,4017,4018,4021,4022,4025,4026,4029,4030,4033,4034,4037],{},"Initialize projects with ",[26,4019,4020],{},"uv init example",", add dependencies like ",[26,4023,4024],{},"uv add ruff"," (auto-creates .venv, resolves 2 packages in 170ms, installs in 1ms). Run with ",[26,4027,4028],{},"uv run ruff check",", lock via ",[26,4031,4032],{},"uv lock"," (resolves in 0.33ms), and sync on CI\u002Fother machines with ",[26,4035,4036],{},"uv sync",". Lockfiles are universal and platform-independent. Build\u002Fexport distributions, configure via pyproject.toml or uv.toml, and scale with Cargo-style workspaces for monorepos. Publish packages directly, even from non-uv projects.",[17,4039,4041],{"id":4040},"handle-scripts-tools-and-python-versions-seamlessly","Handle Scripts, Tools, and Python Versions Seamlessly",[22,4043,4044,4045,4048,4049,4052,4053,4056,4057,4060,4061,4064,4065,4068,4069,3815,4072,4075],{},"For scripts, add inline deps (",[26,4046,4047],{},"uv add --script example.py requests",") then run in isolated envs (",[26,4050,4051],{},"uv run example.py"," installs 5 packages in 12ms). Tools mimic pipx: ",[26,4054,4055],{},"uvx pycowsay 'hello world!'"," (resolves\u002Finstalls in 176ms) or ",[26,4058,4059],{},"uv tool install ruff"," (installs in 2ms, adds to PATH). Manage Pythons with ",[26,4062,4063],{},"uv python install 3.10 3.11 3.12"," (3 versions in 3.42s), pin per-dir (",[26,4066,4067],{},"uv python pin 3.11","), or use specific (",[26,4070,4071],{},"uv run --python 3.12.0 python",[26,4073,4074],{},"uv venv --python 3.12.0",").",[17,4077,4079],{"id":4078},"drop-in-pip-replacement-with-advanced-features","Drop-in Pip Replacement with Advanced Features",[22,4081,4082,4085,4086,4089,4090,4093,4094,4097,4098,4101,4102,4105],{},[26,4083,4084],{},"uv pip"," matches pip CLI but adds overrides, universal installs, and reproducibility. Compile ",[26,4087,4088],{},"requirements.in"," to platform-agnostic ",[26,4091,4092],{},"requirements.txt"," (",[26,4095,4096],{},"uv pip compile --universal",", resolves 43 packages in 12ms). Create venvs (",[26,4099,4100],{},"uv venv","), sync (",[26,4103,4104],{},"uv pip sync requirements.txt"," installs 43 packages in 208ms). Extend workflows without changes for immediate 10-100x gains.",{"title":56,"searchDepth":57,"depth":57,"links":4107},[4108,4109,4110,4111],{"id":3998,"depth":57,"text":3999},{"id":4013,"depth":57,"text":4014},{"id":4040,"depth":57,"text":4041},{"id":4078,"depth":57,"text":4079},[113],{"content_references":4114,"triage":4126},[4115,4118,4121,4124],{"type":70,"title":4116,"url":4117,"context":74},"Ruff","https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff",{"type":76,"title":4119,"url":4120,"context":80},"BENCHMARKS.md","https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv\u002Fblob\u002Fmain\u002FBENCHMARKS.md",{"type":70,"title":4122,"url":4123,"context":74},"Trio","https:\u002F\u002Ftrio.readthedocs.io\u002F",{"type":70,"title":4125,"context":74},"pycowsay",{"relevance":89,"novelty":89,"quality":90,"actionability":90,"composite":4127,"reasoning":4128},3.45,"Category: Software Engineering. The article introduces a new tool, uv, that consolidates multiple Python package management tools into one, which addresses the audience's need for improved developer productivity. It provides specific commands and examples for using uv, making it actionable for developers looking to optimize their workflows.","\u002Fsummaries\u002F3eec1b11d66cfd86-uv-rust-powered-python-manager-10-100x-faster-than-summary","2026-04-16 03:01:20",{"title":3988,"description":56},{"loc":4129},"3eec1b11d66cfd86","__oneoff__","https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F","summaries\u002F3eec1b11d66cfd86-uv-rust-powered-python-manager-10-100x-faster-than-summary",[104,4138,105],"coding","uv replaces pip, poetry, pyenv, pipx and more as a single Rust tool that's 10-100x faster, managing projects, scripts, tools, Python versions, and lockfiles with global caching.",[],"3r-n0iUdZaD032aaUGVQrVnR19vzhcyq_rwyB1xYRHU",{"id":4143,"title":4144,"ai":4145,"body":4150,"categories":4308,"created_at":64,"date_modified":64,"description":56,"extension":65,"faq":64,"featured":66,"kicker_label":64,"meta":4309,"navigation":93,"path":4335,"published_at":64,"question":64,"scraped_at":4336,"seo":4337,"sitemap":4338,"source_id":4339,"source_name":4134,"source_type":100,"source_url":4340,"stem":4341,"tags":4342,"thumbnail_url":64,"tldr":4344,"tweet":64,"unknown_tags":4345,"__hash__":4346},"summaries\u002Fsummaries\u002F7d871a9968ec8d6b-train-gpt-2-for-48-in-2-hours-on-8xh100-with-nanoc-summary.md","Train GPT-2 for $48 in 2 Hours on 8xH100 with nanochat",{"provider":7,"model":8,"input_tokens":4146,"output_tokens":4147,"processing_time_ms":4148,"cost_usd":4149},9517,2234,206553,0.001593,{"type":14,"value":4151,"toc":4302},[4152,4156,4175,4198,4202,4217,4221,4287,4291],[17,4153,4155],{"id":4154},"achieve-gpt-2-performance-at-fraction-of-original-cost","Achieve GPT-2 Performance at Fraction of Original Cost",[22,4157,4158,4159,4162,4163,4166,4167,4170,4171],{},"nanochat trains full GPT-2 equivalent models (1.6B params, CORE score 0.2565+) for $15-48 on spot\u002Fregular 8xH100 nodes (~$3\u002FGPU\u002Fhr, ~$24\u002Fhr\u002Fnode), versus GPT-2's 2019 $43k cost. Use single ",[26,4160,4161],{},"--depth"," dial (e.g., d24-d26 for GPT-2) to auto-set all hyperparameters: transformer width, heads, LR schedule, horizons, weight decay for compute-optimal scaling. Pretraining dominates compute; full pipeline (pretrain, SFT, RL, eval, inference, ChatGPT-like UI) runs end-to-end. Reproduce via ",[26,4164,4165],{},"bash runs\u002Fspeedrun.sh"," on Lambda.ai 8xH100: ~2-3 hours to 4e19 FLOPs model. Serve with ",[26,4168,4169],{},"python -m scripts.chat_web"," for web UI at http:\u002F\u002F",[4172,4173,4174],"public-ip",{},":8000. Model behaves like \"kindergartener\": hallucinates identity, explains sky color simply.",[22,4176,4177,4178,4181,4182,4185,4186,4189,4190,4193,4194,4197],{},"Trade-offs: Single GPU works (gradient accumulation, 8x slower); \u003C80GB VRAM needs ",[26,4179,4180],{},"--device-batch-size"," reduction (32→16\u002F8\u002F4\u002F2\u002F1). CPU\u002FMPS via ",[26,4183,4184],{},"runs\u002Fruncpu.sh"," (tiny model, weak results). Precision auto: bf16 on A100\u002FH100 (native tensor cores), fp32 on V100\u002FT4\u002FCPU\u002FMPS; override via ",[26,4187,4188],{},"NANOCHAT_DTYPE=bfloat16\u002Ffloat16\u002Ffloat32",". Weights fp32 (optimizer), compute in ",[26,4191,4192],{},"COMPUTE_DTYPE",", embeddings in reduced prec—no ",[26,4195,4196],{},"torch.amp.autocast",".",[17,4199,4201],{"id":4200},"leaderboard-drives-community-optimization","Leaderboard Drives Community Optimization",[22,4203,4204,4205,4208,4209,4212,4213,4216],{},"\"Time-to-GPT-2\" leaderboard ranks wall-clock on 8xH100 to beat GPT-2 CORE 0.256525 via DCLM CORE eval (",[26,4206,4207],{},"scripts.base_eval.py","). Current best: 1.65 hours (0.2626 CORE, ClimbMix dataset, autoresearch). Progress: 168hr (2019 GPT-2) → 3.04hr baseline → 2.91hr (fp8) → 2.76hr (1M token batch) → 2.02hr (ClimbMix) → 1.80hr (autoresearch r1) → 1.65hr (r2). Submit via ",[26,4210,4211],{},"runs\u002Fspeedrun.sh","; see dev\u002FLEADERBOARD.md. Monitor wandb: val_bpb vs step\u002FFLOPs\u002Ftime, CORE, VRAM\u002FMFU\u002Ftok\u002Fsec. Quick expts: d12 (",[26,4214,4215],{},"--depth=12",", ~5min pretrain) tests changes across depths.",[17,4218,4220],{"id":4219},"minimal-hackable-code-for-full-llm-pipeline","Minimal, Hackable Code for Full LLM Pipeline",[22,4222,4223,4224,4227,4228,4231,4232,4235,4236,4239,4240,4243,4244,4247,4248,4251,4252,4255,4256,4259,4260,4263,4264,4267,4268,4271,4272,4275,4276,4279,4280,3807,4283,4286],{},"~1k LoC PyTorch: ",[26,4225,4226],{},"nanochat\u002Fgpt.py"," (transformer), ",[26,4229,4230],{},"dataloader.py"," (distributed tokenizing), ",[26,4233,4234],{},"optim.py"," (AdamW\u002FMuon), ",[26,4237,4238],{},"tokenizer.py"," (BPE GPT-4 style), ",[26,4241,4242],{},"engine.py"," (KV-cache inference), ",[26,4245,4246],{},"execution.py"," (Python tool exec), ",[26,4249,4250],{},"core_eval.py"," (DCLM CORE). Stages: ",[26,4253,4254],{},"base_train.py"," (pretrain), ",[26,4257,4258],{},"chat_sft.py"," (SFT), ",[26,4261,4262],{},"chat_rl.py"," (RL), ",[26,4265,4266],{},"chat_eval.py"," (tasks: ARC\u002FGSM8K\u002FMMLU\u002FHumanEval\u002Fspellingbee\u002FSmolTalk), ",[26,4269,4270],{},"chat_cli\u002Fweb",". Tasks in ",[26,4273,4274],{},"tasks\u002F",": mixtures\u002Fsequences. Data: FineWeb (HF), ClimbMix (NVIDIA). Setup: ",[26,4277,4278],{},"uv sync --extra gpu --group dev"," (uv dep mgr). Scripts: ",[26,4281,4282],{},"scaling_laws.sh",[26,4284,4285],{},"miniseries.sh"," sweep depths. No config monsters—depth drives all.",[17,4288,4290],{"id":4289},"research-and-customization-workflow","Research and Customization Workflow",[22,4292,4293,4294,4297,4298,4301],{},"Forkable baseline for \u003C$1k micro-models. Improve pretrain (e.g., dataset, fp8, batch=1M). Guides: Infuse personality via synthetic data (",[26,4295,4296],{},"dev\u002Fgen_synthetic_data.py",") + SFT mix; add abilities (e.g., strawberry 'r' count) via tasks\u002Fcustomjson. Ex: ",[26,4299,4300],{},"torchrun -m scripts.base_train --depth=12 --run=d12"," (wandb, no intermediates). PRs: Declare LLM contributions. Inspired by nanoGPT\u002Fmodded-nanoGPT. Cite as @misc{nanochat...}.",{"title":56,"searchDepth":57,"depth":57,"links":4303},[4304,4305,4306,4307],{"id":4154,"depth":57,"text":4155},{"id":4200,"depth":57,"text":4201},{"id":4219,"depth":57,"text":4220},{"id":4289,"depth":57,"text":4290},[119],{"content_references":4310,"triage":4331},[4311,4313,4316,4319,4322,4326,4328],{"type":70,"title":4312,"url":4135,"context":74},"uv",{"type":70,"title":4314,"url":4315,"context":74},"Lambda GPU Cloud","https:\u002F\u002Flambda.ai\u002Fservice\u002Fgpu-cloud",{"type":76,"title":4317,"url":4318,"context":74},"nanoGPT","https:\u002F\u002Fgithub.com\u002Fkarpathy\u002FnanoGPT",{"type":76,"title":4320,"url":4321,"context":74},"modded-nanoGPT","https:\u002F\u002Fgithub.com\u002FKellerJordan\u002Fmodded-nanogpt",{"type":4323,"title":4324,"author":4325,"context":74},"dataset","FineWeb","HuggingFace",{"type":4323,"title":4327,"author":4325,"context":74},"SmolTalk",{"type":70,"title":4329,"url":4330,"context":74},"DeepWiki","https:\u002F\u002Fdeepwiki.com\u002Fkarpathy\u002Fnanochat",{"relevance":4332,"novelty":90,"quality":90,"actionability":4332,"composite":4333,"reasoning":4334},5,4.55,"Category: AI & LLMs. The article provides a detailed guide on training GPT-2 models efficiently and cost-effectively, addressing the audience's need for practical applications in AI product development. It includes specific commands and parameters for implementation, making it immediately actionable.","\u002Fsummaries\u002F7d871a9968ec8d6b-train-gpt-2-for-48-in-2-hours-on-8xh100-with-nanoc-summary","2026-04-16 03:01:10",{"title":4144,"description":56},{"loc":4335},"7d871a9968ec8d6b","https:\u002F\u002Fgithub.com\u002Fkarpathy\u002Fnanochat","summaries\u002F7d871a9968ec8d6b-train-gpt-2-for-48-in-2-hours-on-8xh100-with-nanoc-summary",[4343,104,105],"llm","nanochat trains GPT-2 capability LLMs (CORE score >0.2565) on a single 8xH100 GPU node for ~$48 (~2-3 hours wall-clock), with auto-optimal hyperparameters via single --depth dial, plus chat UI.",[],"ORueeVh-F7dwE9iVUlW3Gu6vJa1iZvPgawLZSA5XKkE"]