[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"summary-741e4aa39ff81106-scale-compose-nav-sealed-routes-to-deep-links-summary":3,"summaries-facets-categories":233,"summary-related-741e4aa39ff81106-scale-compose-nav-sealed-routes-to-deep-links-summary":3802},{"id":4,"title":5,"ai":6,"body":13,"categories":193,"created_at":195,"date_modified":195,"description":186,"extension":196,"faq":195,"featured":197,"kicker_label":195,"meta":198,"navigation":214,"path":215,"published_at":216,"question":195,"scraped_at":217,"seo":218,"sitemap":219,"source_id":220,"source_name":221,"source_type":222,"source_url":223,"stem":224,"tags":225,"thumbnail_url":195,"tldr":230,"tweet":195,"unknown_tags":231,"__hash__":232},"summaries\u002Fsummaries\u002F741e4aa39ff81106-scale-compose-nav-sealed-routes-to-deep-links-summary.md","Scale Compose Nav: Sealed Routes to Deep Links",{"provider":7,"model":8,"input_tokens":9,"output_tokens":10,"processing_time_ms":11,"cost_usd":12},"openrouter","x-ai\u002Fgrok-4.1-fast",8253,1740,18352,0.00201375,{"type":14,"value":15,"toc":185},"minimark",[16,21,42,69,75,79,90,109,116,120,147,158,162],[17,18,20],"h2",{"id":19},"build-predictable-navigation-with-sealed-routes-and-callbacks","Build Predictable Navigation with Sealed Routes and Callbacks",[22,23,24,25,29,30,33,34,37,38,41],"p",{},"Treat navigation as graph movement where routes are centralized in a sealed class like ",[26,27,28],"code",{},"sealed class AppScreen(val route: String)",", defining objects such as ",[26,31,32],{},"data object Home : AppScreen(\"home\")"," and ",[26,35,36],{},"data object UserDetails : AppScreen(\"user\u002F{userId}\") { fun createRoute(userId: Int): String = \"user\u002F$userId\" }",". This keeps route strings in one place, enables safe refactoring, and avoids ad-hoc string building like ",[26,39,40],{},"\"user\u002F${id}\""," scattered across files, which invites bugs.",[22,43,44,45,48,49,52,53,56,57,60,61,64,65,68],{},"In ",[26,46,47],{},"NavHost",", map routes to composables: ",[26,50,51],{},"composable(AppScreen.Home.route) { HomeScreen(onOpenUser = { userId -> navController.navigate(AppScreen.UserDetails.createRoute(userId)) }) }",". Screens receive callbacks like ",[26,54,55],{},"(Int) -> Unit"," instead of direct ",[26,58,59],{},"NavController"," access, making UI previewable, testable, and focused on rendering—not coordination. For arguments, use ",[26,62,63],{},"navArgument(\"userId\") { type = NavType.IntType }"," and extract via ",[26,66,67],{},"backStackEntry.arguments?.getInt(\"userId\")",", ensuring typed navigation without string parsing chaos.",[22,70,71,72,74],{},"This structure scales: ",[26,73,47],{}," is the connection source of truth, mimicking typed routing benefits without native support.",[17,76,78],{"id":77},"master-back-stack-with-nav-options-for-real-flows","Master Back Stack with Nav Options for Real Flows",[22,80,81,82,85,86,89],{},"Control history explicitly to match product needs. After login, ",[26,83,84],{},"navController.navigate(AppScreen.Home.route) { popUpTo(AppScreen.Login.route) { inclusive = true } }"," removes login entirely—preventing back navigation to auth screens. Conditional starts like ",[26,87,88],{},"val startDestination = if (isLoggedIn) AppScreen.Home.route else AppScreen.Login.route"," handle auth state.",[22,91,92,93,96,97,100,101,104,105,108],{},"Prevent duplicates on re-taps with ",[26,94,95],{},"launchSingleTop = true"," in ",[26,98,99],{},"navigate()"," calls. For programmatic flows post-API, combine: ",[26,102,103],{},"popUpTo"," clears unwanted history, ",[26,106,107],{},"inclusive = true"," prunes fully, avoiding ghost screens.",[22,110,111,112,115],{},"Auth example: Nested ",[26,113,114],{},"LoginScreen(onLoginSuccess = { ... })"," triggers stack-clearing nav, landing users in main app cleanly.",[17,117,119],{"id":118},"polish-bottom-nav-and-nested-graphs-for-app-like-feel","Polish Bottom Nav and Nested Graphs for App-Like Feel",[22,121,122,123,126,127,130,131,134,135,138,139,142,143,146],{},"Bottom tabs expect independent sections with state restoration. Use ",[26,124,125],{},"Scaffold"," with ",[26,128,129],{},"BottomBar",": track ",[26,132,133],{},"currentDestination"," via ",[26,136,137],{},"navController.currentBackStackEntryAsState()",", select via ",[26,140,141],{},"hierarchy.any { it.route == item.route }",". On tab click: ",[26,144,145],{},"navigate(item.route) { popUpTo(navController.graph.startDestinationId) { saveState = true }; launchSingleTop = true; restoreState = true }",". This caps stack growth, saves\u002Frestores tab state, and skips duplicates—making switches feel native.",[22,148,149,150,153,154,157],{},"Group related screens in nested graphs: ",[26,151,152],{},"NavHost(route = \"root_graph\", startDestination = \"auth_graph\") { navigation(route = \"auth_graph\", startDestination = \"login\") { composable(\"login\") { ... } } }",". Exit auth: ",[26,155,156],{},"navigate(\"main_graph\") { popUpTo(\"auth_graph\") { inclusive = true } }",". Graphs mirror product structure (auth vs. main), simplifying complex apps with 15+ screens.",[17,159,161],{"id":160},"enable-deep-links-as-graph-entries","Enable Deep Links as Graph Entries",[22,163,164,165,168,169,172,173,176,177,180,181,184],{},"Deep links are routes with URIs: for ",[26,166,167],{},"ArticleDetails : AppScreen(\"article\u002F{articleId}\")",", add ",[26,170,171],{},"deepLinks = listOf(navDeepLink { uriPattern = \"myapp:\u002F\u002Farticle\u002F{articleId}\" })"," alongside ",[26,174,175],{},"navArgument(\"articleId\") { type = NavType.StringType }",". ",[26,178,179],{},"myapp:\u002F\u002Farticle\u002Fabc123"," opens directly, extracting ",[26,182,183],{},"articleId"," via backstack—handling notifications or marketing links without custom parsing.",{"title":186,"searchDepth":187,"depth":187,"links":188},"",2,[189,190,191,192],{"id":19,"depth":187,"text":20},{"id":77,"depth":187,"text":78},{"id":118,"depth":187,"text":119},{"id":160,"depth":187,"text":161},[194],"Software Engineering",null,"md",false,{"content_references":199,"triage":209},[200,206],{"type":201,"title":202,"author":203,"url":204,"context":205},"other","SwiftUI Navigation in iOS: A Practical Guide","Sanjay Nelagadde","https:\u002F\u002Fgitconnected\u002Fswiftui-navigation-in-ios-a-practical-guide-2a4820971681","mentioned",{"type":201,"title":207,"author":203,"url":208,"context":205},"SwiftUI State in iOS: A Practical Guide","https:\u002F\u002Fgitconnected\u002Fswiftui-state-in-ios-a-practical-guide-993a70794cdd",{"relevance":210,"novelty":211,"quality":210,"actionability":210,"composite":212,"reasoning":213},4,3,3.8,"Category: Software Engineering. The article provides practical patterns for managing navigation in Android apps using Jetpack Compose, addressing a common pain point for developers in maintaining clean and predictable navigation structures. It includes specific code examples and techniques that can be directly applied to improve navigation in real applications.",true,"\u002Fsummaries\u002F741e4aa39ff81106-scale-compose-nav-sealed-routes-to-deep-links-summary","2026-04-13 15:09:11","2026-04-14 14:37:36",{"title":5,"description":186},{"loc":215},"741e4aa39ff81106","Level Up Coding","article","https:\u002F\u002Flevelup.gitconnected.com\u002Fnavigation-in-android-jetpack-compose-a-practical-guide-4d8037b07a87?source=rss----5517fd7b58a6---4","summaries\u002F741e4aa39ff81106-scale-compose-nav-sealed-routes-to-deep-links-summary",[226,227,228,229],"software-engineering","dev-productivity","android","jetpack-compose","Centralize routes in sealed classes, pass nav callbacks to screens, and use popUpTo\u002FlaunchSingleTop for back stack control—patterns that prevent mess in real apps with auth, tabs, and flows.",[226,227,228,229],"68Oc38Fr7dSC13jmFDXSFn-0Y3plO0DjvrJ8kEII66s",[234,237,240,243,246,249,251,253,255,257,259,261,264,266,268,270,272,274,276,278,280,282,285,288,290,292,294,296,298,301,303,305,307,309,311,313,315,317,319,321,323,325,327,329,331,333,335,337,339,341,343,345,347,349,351,353,355,357,359,361,363,365,367,369,371,373,375,377,379,381,383,385,387,389,391,393,395,397,399,401,403,405,407,409,411,413,415,417,419,421,423,425,427,429,431,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,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988,990,992,994,996,998,1000,1002,1004,1006,1008,1010,1012,1014,1016,1018,1020,1022,1024,1026,1028,1030,1032,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100,1102,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1204,1206,1208,1210,1212,1214,1216,1218,1220,1222,1224,1226,1228,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502,1504,1506,1508,1510,1512,1514,1516,1518,1520,1522,1524,1526,1528,1530,1532,1534,1536,1538,1540,1542,1544,1546,1548,1550,1552,1554,1556,1558,1560,1562,1564,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598,1600,1602,1604,1606,1608,1610,1612,1614,1616,1618,1620,1622,1624,1626,1628,1630,1632,1634,1636,1638,1640,1642,1644,1646,1648,1650,1652,1654,1656,1658,1660,1662,1664,1666,1668,1670,1672,1674,1676,1678,1680,1682,1684,1686,1688,1690,1692,1694,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808,1810,1812,1814,1816,1818,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854,1856,1858,1860,1862,1864,1866,1868,1870,1872,1874,1876,1878,1880,1882,1884,1886,1888,1890,1892,1894,1896,1898,1900,1902,1904,1906,1908,1910,1912,1914,1916,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1948,1950,1952,1954,1956,1958,1960,1962,1964,1966,1968,1970,1972,1974,1976,1978,1980,1982,1984,1986,1988,1990,1992,1994,1996,1998,2000,2002,2004,2006,2008,2010,2012,2014,2016,2018,2020,2022,2024,2026,2028,2030,2032,2034,2036,2038,2040,2042,2044,2046,2048,2050,2052,2054,2056,2058,2060,2062,2064,2066,2068,2070,2072,2074,2076,2078,2080,2082,2084,2086,2088,2090,2092,2094,2096,2098,2100,2102,2104,2106,2108,2110,2112,2114,2116,2118,2120,2122,2124,2126,2128,2130,2132,2134,2136,2138,2140,2142,2144,2146,2148,2150,2152,2154,2156,2158,2160,2162,2164,2166,2168,2170,2172,2174,2176,2178,2180,2182,2184,2186,2188,2190,2192,2194,2196,2198,2200,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220,2222,2224,2226,2228,2230,2232,2234,2236,2238,2240,2242,2244,2246,2248,2250,2252,2254,2256,2258,2260,2262,2264,2266,2268,2270,2272,2274,2276,2278,2280,2282,2284,2286,2288,2290,2292,2294,2296,2298,2300,2302,2304,2306,2308,2310,2312,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2338,2340,2342,2344,2346,2348,2350,2352,2354,2356,2358,2360,2362,2364,2366,2368,2370,2372,2374,2376,2378,2380,2382,2384,2386,2388,2390,2392,2394,2396,2398,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418,2420,2422,2424,2426,2428,2430,2432,2434,2436,2438,2440,2442,2444,2446,2448,2450,2452,2454,2456,2458,2460,2462,2464,2466,2468,2470,2472,2474,2476,2478,2480,2482,2484,2486,2488,2490,2492,2494,2496,2498,2500,2502,2504,2506,2508,2510,2512,2514,2516,2518,2520,2522,2524,2526,2528,2530,2532,2534,2536,2538,2540,2542,2544,2546,2548,2550,2552,2554,2556,2558,2560,2562,2564,2566,2568,2570,2572,2574,2576,2578,2580,2582,2584,2586,2588,2590,2592,2594,2596,2598,2600,2602,2604,2606,2608,2610,2612,2614,2616,2618,2620,2622,2624,2626,2628,2630,2632,2634,2636,2638,2640,2642,2644,2646,2648,2650,2652,2654,2656,2658,2660,2662,2664,2666,2668,2670,2672,2674,2676,2678,2680,2682,2684,2686,2688,2690,2692,2694,2696,2698,2700,2702,2704,2706,2708,2710,2712,2714,2716,2718,2720,2722,2724,2726,2728,2730,2732,2734,2736,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764,2766,2768,2770,2772,2774,2776,2778,2780,2782,2784,2786,2788,2790,2792,2794,2796,2798,2800,2802,2804,2806,2808,2810,2812,2814,2816,2818,2820,2822,2824,2826,2828,2830,2832,2834,2836,2838,2840,2842,2844,2846,2848,2850,2852,2854,2856,2858,2860,2862,2864,2866,2868,2870,2872,2874,2876,2878,2880,2882,2884,2886,2888,2890,2892,2894,2896,2898,2900,2902,2904,2906,2908,2910,2912,2914,2916,2918,2920,2922,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944,2946,2948,2950,2952,2954,2956,2958,2960,2962,2964,2966,2968,2970,2972,2974,2976,2978,2980,2982,2984,2986,2988,2990,2992,2994,2996,2998,3000,3002,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024,3026,3028,3030,3032,3034,3036,3038,3040,3042,3044,3046,3048,3050,3052,3054,3056,3058,3060,3062,3064,3066,3068,3070,3072,3074,3076,3078,3080,3082,3084,3086,3088,3090,3092,3094,3096,3098,3100,3102,3104,3106,3108,3110,3112,3114,3116,3118,3120,3122,3124,3126,3128,3130,3132,3134,3136,3138,3140,3142,3144,3146,3148,3150,3152,3154,3156,3158,3160,3162,3164,3166,3168,3170,3172,3174,3176,3178,3180,3182,3184,3186,3188,3190,3192,3194,3196,3198,3200,3202,3204,3206,3208,3210,3212,3214,3216,3218,3220,3222,3224,3226,3228,3230,3232,3234,3236,3238,3240,3242,3244,3246,3248,3250,3252,3254,3256,3258,3260,3262,3264,3266,3268,3270,3272,3274,3276,3278,3280,3282,3284,3286,3288,3290,3292,3294,3296,3298,3300,3302,3304,3306,3308,3310,3312,3314,3316,3318,3320,3322,3324,3326,3328,3330,3332,3334,3336,3338,3340,3342,3344,3346,3348,3350,3352,3354,3356,3358,3360,3362,3364,3366,3368,3370,3372,3374,3376,3378,3380,3382,3384,3386,3388,3390,3392,3394,3396,3398,3400,3402,3404,3406,3408,3410,3412,3414,3416,3418,3420,3422,3424,3426,3428,3430,3432,3434,3436,3438,3440,3442,3444,3446,3448,3450,3452,3454,3456,3458,3460,3462,3464,3466,3468,3470,3472,3474,3476,3478,3480,3482,3484,3486,3488,3490,3492,3494,3496,3498,3500,3502,3504,3506,3508,3510,3512,3514,3516,3518,3520,3522,3524,3526,3528,3530,3532,3534,3536,3538,3540,3542,3544,3546,3548,3550,3552,3554,3556,3558,3560,3562,3564,3566,3568,3570,3572,3574,3576,3578,3580,3582,3584,3586,3588,3590,3592,3594,3596,3598,3600,3602,3604,3606,3608,3610,3612,3614,3616,3618,3620,3622,3624,3626,3628,3630,3632,3634,3636,3638,3640,3642,3644,3646,3648,3650,3652,3654,3656,3658,3660,3662,3664,3666,3668,3670,3672,3674,3676,3678,3680,3682,3684,3686,3688,3690,3692,3694,3696,3698,3700,3702,3704,3706,3708,3710,3712,3714,3716,3718,3720,3722,3724,3726,3728,3730,3732,3734,3736,3738,3740,3742,3744,3746,3748,3750,3752,3754,3756,3758,3760,3762,3764,3766,3768,3770,3772,3774,3776,3778,3780,3782,3784,3786,3788,3790,3792,3794,3796,3798,3800],{"categories":235},[236],"Developer Productivity",{"categories":238},[239],"Business & SaaS",{"categories":241},[242],"AI & LLMs",{"categories":244},[245],"AI Automation",{"categories":247},[248],"Product Strategy",{"categories":250},[242],{"categories":252},[236],{"categories":254},[239],{"categories":256},[],{"categories":258},[242],{"categories":260},[],{"categories":262},[263],"AI News & Trends",{"categories":265},[245],{"categories":267},[263],{"categories":269},[245],{"categories":271},[245],{"categories":273},[242],{"categories":275},[242],{"categories":277},[263],{"categories":279},[242],{"categories":281},[],{"categories":283},[284],"Design & Frontend",{"categories":286},[287],"Data Science & Visualization",{"categories":289},[263],{"categories":291},[],{"categories":293},[194],{"categories":295},[242],{"categories":297},[245],{"categories":299},[300],"Marketing & Growth",{"categories":302},[242],{"categories":304},[245],{"categories":306},[],{"categories":308},[],{"categories":310},[284],{"categories":312},[245],{"categories":314},[236],{"categories":316},[284],{"categories":318},[242],{"categories":320},[245],{"categories":322},[263],{"categories":324},[],{"categories":326},[],{"categories":328},[245],{"categories":330},[194],{"categories":332},[],{"categories":334},[239],{"categories":336},[],{"categories":338},[],{"categories":340},[245],{"categories":342},[245],{"categories":344},[242],{"categories":346},[],{"categories":348},[194],{"categories":350},[],{"categories":352},[],{"categories":354},[],{"categories":356},[242],{"categories":358},[300],{"categories":360},[284],{"categories":362},[284],{"categories":364},[242],{"categories":366},[245],{"categories":368},[242],{"categories":370},[242],{"categories":372},[245],{"categories":374},[245],{"categories":376},[287],{"categories":378},[263],{"categories":380},[245],{"categories":382},[300],{"categories":384},[245],{"categories":386},[248],{"categories":388},[],{"categories":390},[245],{"categories":392},[],{"categories":394},[245],{"categories":396},[194],{"categories":398},[284],{"categories":400},[242],{"categories":402},[],{"categories":404},[],{"categories":406},[245],{"categories":408},[],{"categories":410},[242],{"categories":412},[],{"categories":414},[236],{"categories":416},[194],{"categories":418},[239],{"categories":420},[263],{"categories":422},[242],{"categories":424},[],{"categories":426},[242],{"categories":428},[],{"categories":430},[194],{"categories":432},[287],{"categories":434},[],{"categories":436},[242],{"categories":438},[284],{"categories":440},[],{"categories":442},[284],{"categories":444},[245],{"categories":446},[],{"categories":448},[245],{"categories":450},[263],{"categories":452},[242],{"categories":454},[],{"categories":456},[245],{"categories":458},[242],{"categories":460},[248],{"categories":462},[],{"categories":464},[242],{"categories":466},[245],{"categories":468},[245],{"categories":470},[],{"categories":472},[287],{"categories":474},[242],{"categories":476},[],{"categories":478},[236],{"categories":480},[239],{"categories":482},[242],{"categories":484},[245],{"categories":486},[194],{"categories":488},[242],{"categories":490},[],{"categories":492},[],{"categories":494},[242],{"categories":496},[],{"categories":498},[284],{"categories":500},[],{"categories":502},[242],{"categories":504},[],{"categories":506},[245],{"categories":508},[242],{"categories":510},[284],{"categories":512},[],{"categories":514},[242],{"categories":516},[242],{"categories":518},[239],{"categories":520},[245],{"categories":522},[242],{"categories":524},[284],{"categories":526},[245],{"categories":528},[],{"categories":530},[],{"categories":532},[263],{"categories":534},[],{"categories":536},[242],{"categories":538},[239,300],{"categories":540},[],{"categories":542},[242],{"categories":544},[],{"categories":546},[],{"categories":548},[242],{"categories":550},[],{"categories":552},[242],{"categories":554},[555],"DevOps & Cloud",{"categories":557},[],{"categories":559},[263],{"categories":561},[284],{"categories":563},[],{"categories":565},[263],{"categories":567},[263],{"categories":569},[242],{"categories":571},[300],{"categories":573},[],{"categories":575},[239],{"categories":577},[],{"categories":579},[242,555],{"categories":581},[242],{"categories":583},[242],{"categories":585},[245],{"categories":587},[242,194],{"categories":589},[287],{"categories":591},[242],{"categories":593},[300],{"categories":595},[245],{"categories":597},[245],{"categories":599},[],{"categories":601},[245],{"categories":603},[242,239],{"categories":605},[],{"categories":607},[284],{"categories":609},[284],{"categories":611},[],{"categories":613},[],{"categories":615},[263],{"categories":617},[],{"categories":619},[236],{"categories":621},[194],{"categories":623},[242],{"categories":625},[284],{"categories":627},[245],{"categories":629},[194],{"categories":631},[263],{"categories":633},[284],{"categories":635},[],{"categories":637},[242],{"categories":639},[242],{"categories":641},[242],{"categories":643},[263],{"categories":645},[236],{"categories":647},[242],{"categories":649},[245],{"categories":651},[555],{"categories":653},[284],{"categories":655},[245],{"categories":657},[],{"categories":659},[],{"categories":661},[284],{"categories":663},[263],{"categories":665},[287],{"categories":667},[],{"categories":669},[242],{"categories":671},[242],{"categories":673},[239],{"categories":675},[242],{"categories":677},[242],{"categories":679},[263],{"categories":681},[],{"categories":683},[245],{"categories":685},[194],{"categories":687},[],{"categories":689},[242],{"categories":691},[242],{"categories":693},[245],{"categories":695},[],{"categories":697},[],{"categories":699},[242],{"categories":701},[],{"categories":703},[239],{"categories":705},[245],{"categories":707},[],{"categories":709},[236],{"categories":711},[242],{"categories":713},[239],{"categories":715},[263],{"categories":717},[],{"categories":719},[],{"categories":721},[],{"categories":723},[263],{"categories":725},[263],{"categories":727},[],{"categories":729},[],{"categories":731},[239],{"categories":733},[],{"categories":735},[],{"categories":737},[236],{"categories":739},[],{"categories":741},[300],{"categories":743},[245],{"categories":745},[239],{"categories":747},[245],{"categories":749},[],{"categories":751},[248],{"categories":753},[284],{"categories":755},[194],{"categories":757},[242],{"categories":759},[245],{"categories":761},[239],{"categories":763},[242],{"categories":765},[],{"categories":767},[],{"categories":769},[194],{"categories":771},[287],{"categories":773},[248],{"categories":775},[245],{"categories":777},[242],{"categories":779},[],{"categories":781},[555],{"categories":783},[],{"categories":785},[245],{"categories":787},[],{"categories":789},[],{"categories":791},[242],{"categories":793},[284],{"categories":795},[300],{"categories":797},[245],{"categories":799},[],{"categories":801},[236],{"categories":803},[],{"categories":805},[263],{"categories":807},[242,555],{"categories":809},[263],{"categories":811},[242],{"categories":813},[239],{"categories":815},[242],{"categories":817},[],{"categories":819},[239],{"categories":821},[],{"categories":823},[194],{"categories":825},[284],{"categories":827},[263],{"categories":829},[287],{"categories":831},[236],{"categories":833},[242],{"categories":835},[194],{"categories":837},[],{"categories":839},[],{"categories":841},[248],{"categories":843},[],{"categories":845},[242],{"categories":847},[],{"categories":849},[284],{"categories":851},[284],{"categories":853},[284],{"categories":855},[],{"categories":857},[],{"categories":859},[263],{"categories":861},[245],{"categories":863},[242],{"categories":865},[242],{"categories":867},[242],{"categories":869},[239],{"categories":871},[242],{"categories":873},[],{"categories":875},[194],{"categories":877},[194],{"categories":879},[239],{"categories":881},[],{"categories":883},[242],{"categories":885},[242],{"categories":887},[239],{"categories":889},[263],{"categories":891},[300],{"categories":893},[245],{"categories":895},[],{"categories":897},[284],{"categories":899},[],{"categories":901},[242],{"categories":903},[],{"categories":905},[239],{"categories":907},[245],{"categories":909},[],{"categories":911},[555],{"categories":913},[287],{"categories":915},[194],{"categories":917},[300],{"categories":919},[194],{"categories":921},[245],{"categories":923},[],{"categories":925},[],{"categories":927},[245],{"categories":929},[236],{"categories":931},[245],{"categories":933},[248],{"categories":935},[239],{"categories":937},[],{"categories":939},[242],{"categories":941},[248],{"categories":943},[242],{"categories":945},[242],{"categories":947},[300],{"categories":949},[284],{"categories":951},[245],{"categories":953},[],{"categories":955},[],{"categories":957},[555],{"categories":959},[194],{"categories":961},[],{"categories":963},[245],{"categories":965},[242],{"categories":967},[284,242],{"categories":969},[236],{"categories":971},[],{"categories":973},[242],{"categories":975},[236],{"categories":977},[284],{"categories":979},[245],{"categories":981},[194],{"categories":983},[],{"categories":985},[242],{"categories":987},[],{"categories":989},[236],{"categories":991},[],{"categories":993},[245],{"categories":995},[248],{"categories":997},[242],{"categories":999},[242],{"categories":1001},[284],{"categories":1003},[245],{"categories":1005},[555],{"categories":1007},[284],{"categories":1009},[245],{"categories":1011},[242],{"categories":1013},[242],{"categories":1015},[242],{"categories":1017},[263],{"categories":1019},[],{"categories":1021},[248],{"categories":1023},[245],{"categories":1025},[284],{"categories":1027},[245],{"categories":1029},[194],{"categories":1031},[284],{"categories":1033},[245],{"categories":1035},[263],{"categories":1037},[],{"categories":1039},[242],{"categories":1041},[284],{"categories":1043},[242],{"categories":1045},[236],{"categories":1047},[263],{"categories":1049},[242],{"categories":1051},[300],{"categories":1053},[242],{"categories":1055},[242],{"categories":1057},[245],{"categories":1059},[245],{"categories":1061},[242],{"categories":1063},[245],{"categories":1065},[284],{"categories":1067},[242],{"categories":1069},[],{"categories":1071},[],{"categories":1073},[194],{"categories":1075},[],{"categories":1077},[236],{"categories":1079},[555],{"categories":1081},[],{"categories":1083},[236],{"categories":1085},[239],{"categories":1087},[300],{"categories":1089},[],{"categories":1091},[239],{"categories":1093},[],{"categories":1095},[],{"categories":1097},[],{"categories":1099},[],{"categories":1101},[],{"categories":1103},[242],{"categories":1105},[245],{"categories":1107},[555],{"categories":1109},[236],{"categories":1111},[242],{"categories":1113},[194],{"categories":1115},[248],{"categories":1117},[242],{"categories":1119},[300],{"categories":1121},[242],{"categories":1123},[242],{"categories":1125},[242],{"categories":1127},[242,236],{"categories":1129},[194],{"categories":1131},[194],{"categories":1133},[284],{"categories":1135},[242],{"categories":1137},[],{"categories":1139},[],{"categories":1141},[],{"categories":1143},[194],{"categories":1145},[287],{"categories":1147},[263],{"categories":1149},[284],{"categories":1151},[],{"categories":1153},[242],{"categories":1155},[242],{"categories":1157},[],{"categories":1159},[],{"categories":1161},[245],{"categories":1163},[242],{"categories":1165},[239],{"categories":1167},[],{"categories":1169},[236],{"categories":1171},[242],{"categories":1173},[236],{"categories":1175},[242],{"categories":1177},[194],{"categories":1179},[300],{"categories":1181},[242,284],{"categories":1183},[263],{"categories":1185},[284],{"categories":1187},[],{"categories":1189},[555],{"categories":1191},[284],{"categories":1193},[245],{"categories":1195},[],{"categories":1197},[],{"categories":1199},[],{"categories":1201},[],{"categories":1203},[194],{"categories":1205},[245],{"categories":1207},[245],{"categories":1209},[242],{"categories":1211},[242],{"categories":1213},[],{"categories":1215},[284],{"categories":1217},[],{"categories":1219},[],{"categories":1221},[245],{"categories":1223},[],{"categories":1225},[],{"categories":1227},[300],{"categories":1229},[300],{"categories":1231},[245],{"categories":1233},[],{"categories":1235},[242],{"categories":1237},[242],{"categories":1239},[194],{"categories":1241},[284],{"categories":1243},[284],{"categories":1245},[245],{"categories":1247},[236],{"categories":1249},[242],{"categories":1251},[284],{"categories":1253},[284],{"categories":1255},[245],{"categories":1257},[245],{"categories":1259},[242],{"categories":1261},[],{"categories":1263},[],{"categories":1265},[242],{"categories":1267},[245],{"categories":1269},[263],{"categories":1271},[194],{"categories":1273},[236],{"categories":1275},[242],{"categories":1277},[],{"categories":1279},[245],{"categories":1281},[245],{"categories":1283},[],{"categories":1285},[236],{"categories":1287},[242],{"categories":1289},[236],{"categories":1291},[236],{"categories":1293},[],{"categories":1295},[],{"categories":1297},[245],{"categories":1299},[245],{"categories":1301},[242],{"categories":1303},[242],{"categories":1305},[263],{"categories":1307},[287],{"categories":1309},[248],{"categories":1311},[263],{"categories":1313},[284],{"categories":1315},[],{"categories":1317},[263],{"categories":1319},[],{"categories":1321},[],{"categories":1323},[],{"categories":1325},[],{"categories":1327},[194],{"categories":1329},[287],{"categories":1331},[],{"categories":1333},[242],{"categories":1335},[242],{"categories":1337},[287],{"categories":1339},[194],{"categories":1341},[],{"categories":1343},[],{"categories":1345},[245],{"categories":1347},[263],{"categories":1349},[263],{"categories":1351},[245],{"categories":1353},[236],{"categories":1355},[242,555],{"categories":1357},[],{"categories":1359},[284],{"categories":1361},[236],{"categories":1363},[245],{"categories":1365},[284],{"categories":1367},[],{"categories":1369},[245],{"categories":1371},[245],{"categories":1373},[242],{"categories":1375},[300],{"categories":1377},[194],{"categories":1379},[284],{"categories":1381},[],{"categories":1383},[245],{"categories":1385},[242],{"categories":1387},[245],{"categories":1389},[245],{"categories":1391},[245],{"categories":1393},[300],{"categories":1395},[245],{"categories":1397},[242],{"categories":1399},[],{"categories":1401},[300],{"categories":1403},[263],{"categories":1405},[245],{"categories":1407},[],{"categories":1409},[],{"categories":1411},[242],{"categories":1413},[245],{"categories":1415},[263],{"categories":1417},[245],{"categories":1419},[],{"categories":1421},[],{"categories":1423},[],{"categories":1425},[245],{"categories":1427},[],{"categories":1429},[],{"categories":1431},[287],{"categories":1433},[242],{"categories":1435},[287],{"categories":1437},[263],{"categories":1439},[242],{"categories":1441},[242],{"categories":1443},[245],{"categories":1445},[242],{"categories":1447},[],{"categories":1449},[],{"categories":1451},[555],{"categories":1453},[],{"categories":1455},[],{"categories":1457},[236],{"categories":1459},[],{"categories":1461},[],{"categories":1463},[],{"categories":1465},[],{"categories":1467},[194],{"categories":1469},[263],{"categories":1471},[300],{"categories":1473},[239],{"categories":1475},[242],{"categories":1477},[242],{"categories":1479},[239],{"categories":1481},[],{"categories":1483},[284],{"categories":1485},[245],{"categories":1487},[239],{"categories":1489},[242],{"categories":1491},[242],{"categories":1493},[236],{"categories":1495},[],{"categories":1497},[236],{"categories":1499},[242],{"categories":1501},[300],{"categories":1503},[245],{"categories":1505},[263],{"categories":1507},[239],{"categories":1509},[242],{"categories":1511},[245],{"categories":1513},[],{"categories":1515},[242],{"categories":1517},[236],{"categories":1519},[242],{"categories":1521},[],{"categories":1523},[263],{"categories":1525},[242],{"categories":1527},[],{"categories":1529},[239],{"categories":1531},[242],{"categories":1533},[],{"categories":1535},[],{"categories":1537},[],{"categories":1539},[242],{"categories":1541},[],{"categories":1543},[555],{"categories":1545},[242],{"categories":1547},[],{"categories":1549},[242],{"categories":1551},[242],{"categories":1553},[242],{"categories":1555},[242,555],{"categories":1557},[242],{"categories":1559},[242],{"categories":1561},[284],{"categories":1563},[245],{"categories":1565},[],{"categories":1567},[245],{"categories":1569},[242],{"categories":1571},[242],{"categories":1573},[242],{"categories":1575},[236],{"categories":1577},[236],{"categories":1579},[194],{"categories":1581},[284],{"categories":1583},[245],{"categories":1585},[],{"categories":1587},[242],{"categories":1589},[263],{"categories":1591},[242],{"categories":1593},[239],{"categories":1595},[],{"categories":1597},[555],{"categories":1599},[284],{"categories":1601},[284],{"categories":1603},[245],{"categories":1605},[263],{"categories":1607},[245],{"categories":1609},[242],{"categories":1611},[],{"categories":1613},[242],{"categories":1615},[],{"categories":1617},[],{"categories":1619},[242],{"categories":1621},[242],{"categories":1623},[242],{"categories":1625},[245],{"categories":1627},[242],{"categories":1629},[],{"categories":1631},[287],{"categories":1633},[245],{"categories":1635},[],{"categories":1637},[242],{"categories":1639},[263],{"categories":1641},[],{"categories":1643},[284],{"categories":1645},[555],{"categories":1647},[263],{"categories":1649},[194],{"categories":1651},[194],{"categories":1653},[263],{"categories":1655},[263],{"categories":1657},[555],{"categories":1659},[],{"categories":1661},[263],{"categories":1663},[242],{"categories":1665},[236],{"categories":1667},[263],{"categories":1669},[],{"categories":1671},[287],{"categories":1673},[263],{"categories":1675},[194],{"categories":1677},[263],{"categories":1679},[555],{"categories":1681},[242],{"categories":1683},[242],{"categories":1685},[],{"categories":1687},[239],{"categories":1689},[],{"categories":1691},[],{"categories":1693},[242],{"categories":1695},[242],{"categories":1697},[242],{"categories":1699},[242],{"categories":1701},[],{"categories":1703},[287],{"categories":1705},[236],{"categories":1707},[],{"categories":1709},[242],{"categories":1711},[242],{"categories":1713},[555],{"categories":1715},[555],{"categories":1717},[],{"categories":1719},[245],{"categories":1721},[263],{"categories":1723},[263],{"categories":1725},[242],{"categories":1727},[245],{"categories":1729},[],{"categories":1731},[284],{"categories":1733},[242],{"categories":1735},[242],{"categories":1737},[],{"categories":1739},[],{"categories":1741},[555],{"categories":1743},[242],{"categories":1745},[194],{"categories":1747},[239],{"categories":1749},[242],{"categories":1751},[],{"categories":1753},[245],{"categories":1755},[236],{"categories":1757},[236],{"categories":1759},[],{"categories":1761},[242],{"categories":1763},[284],{"categories":1765},[245],{"categories":1767},[],{"categories":1769},[242],{"categories":1771},[242],{"categories":1773},[245],{"categories":1775},[],{"categories":1777},[245],{"categories":1779},[194],{"categories":1781},[],{"categories":1783},[242],{"categories":1785},[],{"categories":1787},[242],{"categories":1789},[],{"categories":1791},[242],{"categories":1793},[242],{"categories":1795},[],{"categories":1797},[242],{"categories":1799},[263],{"categories":1801},[242],{"categories":1803},[242],{"categories":1805},[236],{"categories":1807},[242],{"categories":1809},[263],{"categories":1811},[245],{"categories":1813},[],{"categories":1815},[242],{"categories":1817},[300],{"categories":1819},[],{"categories":1821},[],{"categories":1823},[],{"categories":1825},[236],{"categories":1827},[263],{"categories":1829},[245],{"categories":1831},[242],{"categories":1833},[284],{"categories":1835},[245],{"categories":1837},[],{"categories":1839},[245],{"categories":1841},[],{"categories":1843},[242],{"categories":1845},[245],{"categories":1847},[242],{"categories":1849},[],{"categories":1851},[242],{"categories":1853},[242],{"categories":1855},[263],{"categories":1857},[284],{"categories":1859},[245],{"categories":1861},[284],{"categories":1863},[239],{"categories":1865},[],{"categories":1867},[],{"categories":1869},[242],{"categories":1871},[236],{"categories":1873},[263],{"categories":1875},[],{"categories":1877},[],{"categories":1879},[194],{"categories":1881},[284],{"categories":1883},[],{"categories":1885},[242],{"categories":1887},[],{"categories":1889},[300],{"categories":1891},[242],{"categories":1893},[555],{"categories":1895},[194],{"categories":1897},[],{"categories":1899},[245],{"categories":1901},[242],{"categories":1903},[245],{"categories":1905},[245],{"categories":1907},[242],{"categories":1909},[],{"categories":1911},[236],{"categories":1913},[242],{"categories":1915},[239],{"categories":1917},[194],{"categories":1919},[284],{"categories":1921},[],{"categories":1923},[],{"categories":1925},[],{"categories":1927},[245],{"categories":1929},[284],{"categories":1931},[263],{"categories":1933},[242],{"categories":1935},[263],{"categories":1937},[284],{"categories":1939},[],{"categories":1941},[284],{"categories":1943},[263],{"categories":1945},[239],{"categories":1947},[242],{"categories":1949},[263],{"categories":1951},[300],{"categories":1953},[],{"categories":1955},[],{"categories":1957},[287],{"categories":1959},[242,194],{"categories":1961},[263],{"categories":1963},[242],{"categories":1965},[245],{"categories":1967},[245],{"categories":1969},[242],{"categories":1971},[],{"categories":1973},[194],{"categories":1975},[242],{"categories":1977},[287],{"categories":1979},[245],{"categories":1981},[300],{"categories":1983},[555],{"categories":1985},[],{"categories":1987},[236],{"categories":1989},[245],{"categories":1991},[245],{"categories":1993},[194],{"categories":1995},[242],{"categories":1997},[242],{"categories":1999},[],{"categories":2001},[],{"categories":2003},[],{"categories":2005},[555],{"categories":2007},[263],{"categories":2009},[242],{"categories":2011},[242],{"categories":2013},[242],{"categories":2015},[],{"categories":2017},[287],{"categories":2019},[239],{"categories":2021},[],{"categories":2023},[245],{"categories":2025},[555],{"categories":2027},[],{"categories":2029},[284],{"categories":2031},[284],{"categories":2033},[],{"categories":2035},[194],{"categories":2037},[284],{"categories":2039},[242],{"categories":2041},[],{"categories":2043},[263],{"categories":2045},[242],{"categories":2047},[284],{"categories":2049},[245],{"categories":2051},[263],{"categories":2053},[],{"categories":2055},[245],{"categories":2057},[284],{"categories":2059},[242],{"categories":2061},[],{"categories":2063},[242],{"categories":2065},[242],{"categories":2067},[555],{"categories":2069},[263],{"categories":2071},[287],{"categories":2073},[287],{"categories":2075},[],{"categories":2077},[],{"categories":2079},[],{"categories":2081},[245],{"categories":2083},[194],{"categories":2085},[194],{"categories":2087},[],{"categories":2089},[],{"categories":2091},[242],{"categories":2093},[],{"categories":2095},[245],{"categories":2097},[242],{"categories":2099},[],{"categories":2101},[242],{"categories":2103},[239],{"categories":2105},[242],{"categories":2107},[300],{"categories":2109},[245],{"categories":2111},[242],{"categories":2113},[194],{"categories":2115},[263],{"categories":2117},[245],{"categories":2119},[],{"categories":2121},[263],{"categories":2123},[245],{"categories":2125},[245],{"categories":2127},[],{"categories":2129},[239],{"categories":2131},[245],{"categories":2133},[],{"categories":2135},[242],{"categories":2137},[236],{"categories":2139},[263],{"categories":2141},[555],{"categories":2143},[245],{"categories":2145},[245],{"categories":2147},[236],{"categories":2149},[242],{"categories":2151},[],{"categories":2153},[],{"categories":2155},[284],{"categories":2157},[242,239],{"categories":2159},[],{"categories":2161},[236],{"categories":2163},[287],{"categories":2165},[242],{"categories":2167},[194],{"categories":2169},[242],{"categories":2171},[245],{"categories":2173},[242],{"categories":2175},[242],{"categories":2177},[263],{"categories":2179},[245],{"categories":2181},[],{"categories":2183},[],{"categories":2185},[245],{"categories":2187},[242],{"categories":2189},[555],{"categories":2191},[],{"categories":2193},[242],{"categories":2195},[245],{"categories":2197},[],{"categories":2199},[242],{"categories":2201},[300],{"categories":2203},[287],{"categories":2205},[245],{"categories":2207},[242],{"categories":2209},[555],{"categories":2211},[],{"categories":2213},[242],{"categories":2215},[300],{"categories":2217},[284],{"categories":2219},[242],{"categories":2221},[],{"categories":2223},[300],{"categories":2225},[263],{"categories":2227},[242],{"categories":2229},[242],{"categories":2231},[236],{"categories":2233},[],{"categories":2235},[],{"categories":2237},[284],{"categories":2239},[242],{"categories":2241},[287],{"categories":2243},[300],{"categories":2245},[300],{"categories":2247},[263],{"categories":2249},[],{"categories":2251},[],{"categories":2253},[242],{"categories":2255},[],{"categories":2257},[242,194],{"categories":2259},[263],{"categories":2261},[245],{"categories":2263},[194],{"categories":2265},[242],{"categories":2267},[236],{"categories":2269},[],{"categories":2271},[],{"categories":2273},[236],{"categories":2275},[300],{"categories":2277},[242],{"categories":2279},[],{"categories":2281},[284,242],{"categories":2283},[555],{"categories":2285},[236],{"categories":2287},[],{"categories":2289},[239],{"categories":2291},[239],{"categories":2293},[242],{"categories":2295},[194],{"categories":2297},[245],{"categories":2299},[263],{"categories":2301},[300],{"categories":2303},[284],{"categories":2305},[242],{"categories":2307},[242],{"categories":2309},[242],{"categories":2311},[236],{"categories":2313},[242],{"categories":2315},[245],{"categories":2317},[263],{"categories":2319},[],{"categories":2321},[],{"categories":2323},[287],{"categories":2325},[194],{"categories":2327},[242],{"categories":2329},[284],{"categories":2331},[287],{"categories":2333},[242],{"categories":2335},[242],{"categories":2337},[245],{"categories":2339},[245],{"categories":2341},[242,239],{"categories":2343},[],{"categories":2345},[284],{"categories":2347},[],{"categories":2349},[242],{"categories":2351},[263],{"categories":2353},[236],{"categories":2355},[236],{"categories":2357},[245],{"categories":2359},[242],{"categories":2361},[239],{"categories":2363},[194],{"categories":2365},[300],{"categories":2367},[],{"categories":2369},[263],{"categories":2371},[242],{"categories":2373},[242],{"categories":2375},[263],{"categories":2377},[194],{"categories":2379},[242],{"categories":2381},[245],{"categories":2383},[263],{"categories":2385},[242],{"categories":2387},[284],{"categories":2389},[242],{"categories":2391},[242],{"categories":2393},[555],{"categories":2395},[248],{"categories":2397},[245],{"categories":2399},[242],{"categories":2401},[263],{"categories":2403},[245],{"categories":2405},[300],{"categories":2407},[242],{"categories":2409},[],{"categories":2411},[242],{"categories":2413},[],{"categories":2415},[],{"categories":2417},[],{"categories":2419},[239],{"categories":2421},[242],{"categories":2423},[245],{"categories":2425},[263],{"categories":2427},[263],{"categories":2429},[263],{"categories":2431},[263],{"categories":2433},[],{"categories":2435},[236],{"categories":2437},[245],{"categories":2439},[263],{"categories":2441},[236],{"categories":2443},[245],{"categories":2445},[242],{"categories":2447},[242,245],{"categories":2449},[245],{"categories":2451},[555],{"categories":2453},[263],{"categories":2455},[263],{"categories":2457},[245],{"categories":2459},[242],{"categories":2461},[],{"categories":2463},[263],{"categories":2465},[300],{"categories":2467},[236],{"categories":2469},[242],{"categories":2471},[242],{"categories":2473},[],{"categories":2475},[194],{"categories":2477},[],{"categories":2479},[236],{"categories":2481},[245],{"categories":2483},[263],{"categories":2485},[242],{"categories":2487},[263],{"categories":2489},[236],{"categories":2491},[263],{"categories":2493},[263],{"categories":2495},[],{"categories":2497},[239],{"categories":2499},[245],{"categories":2501},[263],{"categories":2503},[263],{"categories":2505},[263],{"categories":2507},[263],{"categories":2509},[263],{"categories":2511},[263],{"categories":2513},[263],{"categories":2515},[263],{"categories":2517},[263],{"categories":2519},[263],{"categories":2521},[287],{"categories":2523},[236],{"categories":2525},[242],{"categories":2527},[242],{"categories":2529},[],{"categories":2531},[242,236],{"categories":2533},[],{"categories":2535},[245],{"categories":2537},[263],{"categories":2539},[245],{"categories":2541},[242],{"categories":2543},[242],{"categories":2545},[242],{"categories":2547},[242],{"categories":2549},[242],{"categories":2551},[245],{"categories":2553},[239],{"categories":2555},[284],{"categories":2557},[263],{"categories":2559},[242],{"categories":2561},[],{"categories":2563},[],{"categories":2565},[245],{"categories":2567},[284],{"categories":2569},[242],{"categories":2571},[],{"categories":2573},[],{"categories":2575},[300],{"categories":2577},[242],{"categories":2579},[],{"categories":2581},[],{"categories":2583},[236],{"categories":2585},[239],{"categories":2587},[242],{"categories":2589},[239],{"categories":2591},[284],{"categories":2593},[],{"categories":2595},[263],{"categories":2597},[],{"categories":2599},[284],{"categories":2601},[242],{"categories":2603},[300],{"categories":2605},[],{"categories":2607},[300],{"categories":2609},[],{"categories":2611},[],{"categories":2613},[245],{"categories":2615},[],{"categories":2617},[239],{"categories":2619},[236],{"categories":2621},[284],{"categories":2623},[194],{"categories":2625},[],{"categories":2627},[],{"categories":2629},[242],{"categories":2631},[236],{"categories":2633},[300],{"categories":2635},[],{"categories":2637},[245],{"categories":2639},[245],{"categories":2641},[263],{"categories":2643},[242],{"categories":2645},[245],{"categories":2647},[242],{"categories":2649},[245],{"categories":2651},[242],{"categories":2653},[248],{"categories":2655},[263],{"categories":2657},[],{"categories":2659},[300],{"categories":2661},[194],{"categories":2663},[245],{"categories":2665},[],{"categories":2667},[242],{"categories":2669},[245],{"categories":2671},[239],{"categories":2673},[236],{"categories":2675},[242],{"categories":2677},[284],{"categories":2679},[194],{"categories":2681},[194],{"categories":2683},[242],{"categories":2685},[287],{"categories":2687},[242],{"categories":2689},[245],{"categories":2691},[239],{"categories":2693},[245],{"categories":2695},[242],{"categories":2697},[242],{"categories":2699},[245],{"categories":2701},[263],{"categories":2703},[],{"categories":2705},[236],{"categories":2707},[242],{"categories":2709},[245],{"categories":2711},[242],{"categories":2713},[242],{"categories":2715},[],{"categories":2717},[284],{"categories":2719},[239],{"categories":2721},[263],{"categories":2723},[242],{"categories":2725},[242],{"categories":2727},[284],{"categories":2729},[300],{"categories":2731},[287],{"categories":2733},[242],{"categories":2735},[263],{"categories":2737},[242],{"categories":2739},[245],{"categories":2741},[555],{"categories":2743},[242],{"categories":2745},[245],{"categories":2747},[287],{"categories":2749},[],{"categories":2751},[245],{"categories":2753},[194],{"categories":2755},[284],{"categories":2757},[242],{"categories":2759},[236],{"categories":2761},[239],{"categories":2763},[194],{"categories":2765},[],{"categories":2767},[245],{"categories":2769},[242],{"categories":2771},[],{"categories":2773},[263],{"categories":2775},[],{"categories":2777},[263],{"categories":2779},[242],{"categories":2781},[245],{"categories":2783},[245],{"categories":2785},[245],{"categories":2787},[],{"categories":2789},[],{"categories":2791},[242],{"categories":2793},[242],{"categories":2795},[],{"categories":2797},[284],{"categories":2799},[245],{"categories":2801},[300],{"categories":2803},[236],{"categories":2805},[],{"categories":2807},[],{"categories":2809},[263],{"categories":2811},[194],{"categories":2813},[242],{"categories":2815},[242],{"categories":2817},[242],{"categories":2819},[194],{"categories":2821},[263],{"categories":2823},[284],{"categories":2825},[242],{"categories":2827},[242],{"categories":2829},[242],{"categories":2831},[263],{"categories":2833},[242],{"categories":2835},[263],{"categories":2837},[245],{"categories":2839},[245],{"categories":2841},[194],{"categories":2843},[245],{"categories":2845},[242],{"categories":2847},[194],{"categories":2849},[284],{"categories":2851},[],{"categories":2853},[245],{"categories":2855},[],{"categories":2857},[],{"categories":2859},[239],{"categories":2861},[242],{"categories":2863},[245],{"categories":2865},[236],{"categories":2867},[245],{"categories":2869},[300],{"categories":2871},[],{"categories":2873},[245],{"categories":2875},[],{"categories":2877},[236],{"categories":2879},[245],{"categories":2881},[],{"categories":2883},[245],{"categories":2885},[242],{"categories":2887},[263],{"categories":2889},[242],{"categories":2891},[245],{"categories":2893},[263],{"categories":2895},[245],{"categories":2897},[194],{"categories":2899},[284],{"categories":2901},[236],{"categories":2903},[],{"categories":2905},[245],{"categories":2907},[284],{"categories":2909},[263],{"categories":2911},[242],{"categories":2913},[284],{"categories":2915},[236],{"categories":2917},[],{"categories":2919},[245],{"categories":2921},[245],{"categories":2923},[242],{"categories":2925},[],{"categories":2927},[245],{"categories":2929},[248],{"categories":2931},[263],{"categories":2933},[245],{"categories":2935},[239],{"categories":2937},[],{"categories":2939},[242],{"categories":2941},[248],{"categories":2943},[242],{"categories":2945},[245],{"categories":2947},[263],{"categories":2949},[236],{"categories":2951},[555],{"categories":2953},[242],{"categories":2955},[242],{"categories":2957},[242],{"categories":2959},[263],{"categories":2961},[239],{"categories":2963},[242],{"categories":2965},[284],{"categories":2967},[263],{"categories":2969},[555],{"categories":2971},[242],{"categories":2973},[],{"categories":2975},[],{"categories":2977},[555],{"categories":2979},[287],{"categories":2981},[245],{"categories":2983},[245],{"categories":2985},[263],{"categories":2987},[242],{"categories":2989},[236],{"categories":2991},[284],{"categories":2993},[245],{"categories":2995},[242],{"categories":2997},[300],{"categories":2999},[242],{"categories":3001},[245],{"categories":3003},[],{"categories":3005},[242],{"categories":3007},[242],{"categories":3009},[263],{"categories":3011},[236],{"categories":3013},[],{"categories":3015},[242],{"categories":3017},[242],{"categories":3019},[194],{"categories":3021},[284],{"categories":3023},[242,245],{"categories":3025},[300,239],{"categories":3027},[242],{"categories":3029},[],{"categories":3031},[245],{"categories":3033},[],{"categories":3035},[194],{"categories":3037},[242],{"categories":3039},[263],{"categories":3041},[],{"categories":3043},[245],{"categories":3045},[],{"categories":3047},[245],{"categories":3049},[236],{"categories":3051},[245],{"categories":3053},[242],{"categories":3055},[555],{"categories":3057},[300],{"categories":3059},[239],{"categories":3061},[239],{"categories":3063},[236],{"categories":3065},[236],{"categories":3067},[242],{"categories":3069},[245],{"categories":3071},[242],{"categories":3073},[242],{"categories":3075},[236],{"categories":3077},[242],{"categories":3079},[300],{"categories":3081},[263],{"categories":3083},[242],{"categories":3085},[245],{"categories":3087},[242],{"categories":3089},[],{"categories":3091},[194],{"categories":3093},[],{"categories":3095},[245],{"categories":3097},[236],{"categories":3099},[],{"categories":3101},[555],{"categories":3103},[242],{"categories":3105},[],{"categories":3107},[263],{"categories":3109},[245],{"categories":3111},[194],{"categories":3113},[242],{"categories":3115},[245],{"categories":3117},[194],{"categories":3119},[245],{"categories":3121},[263],{"categories":3123},[236],{"categories":3125},[263],{"categories":3127},[194],{"categories":3129},[242],{"categories":3131},[284],{"categories":3133},[242],{"categories":3135},[242],{"categories":3137},[242],{"categories":3139},[242],{"categories":3141},[245],{"categories":3143},[242],{"categories":3145},[245],{"categories":3147},[242],{"categories":3149},[236],{"categories":3151},[242],{"categories":3153},[245],{"categories":3155},[284],{"categories":3157},[236],{"categories":3159},[245],{"categories":3161},[284],{"categories":3163},[],{"categories":3165},[242],{"categories":3167},[242],{"categories":3169},[194],{"categories":3171},[],{"categories":3173},[245],{"categories":3175},[300],{"categories":3177},[242],{"categories":3179},[263],{"categories":3181},[300],{"categories":3183},[245],{"categories":3185},[239],{"categories":3187},[239],{"categories":3189},[242],{"categories":3191},[236],{"categories":3193},[],{"categories":3195},[242],{"categories":3197},[],{"categories":3199},[236],{"categories":3201},[242],{"categories":3203},[245],{"categories":3205},[245],{"categories":3207},[],{"categories":3209},[194],{"categories":3211},[194],{"categories":3213},[300],{"categories":3215},[284],{"categories":3217},[],{"categories":3219},[242],{"categories":3221},[236],{"categories":3223},[242],{"categories":3225},[194],{"categories":3227},[236],{"categories":3229},[263],{"categories":3231},[263],{"categories":3233},[],{"categories":3235},[263],{"categories":3237},[245],{"categories":3239},[284],{"categories":3241},[287],{"categories":3243},[242],{"categories":3245},[],{"categories":3247},[263],{"categories":3249},[194],{"categories":3251},[239],{"categories":3253},[242],{"categories":3255},[236],{"categories":3257},[555],{"categories":3259},[236],{"categories":3261},[],{"categories":3263},[],{"categories":3265},[263],{"categories":3267},[],{"categories":3269},[245],{"categories":3271},[245],{"categories":3273},[245],{"categories":3275},[],{"categories":3277},[242],{"categories":3279},[],{"categories":3281},[263],{"categories":3283},[236],{"categories":3285},[284],{"categories":3287},[242],{"categories":3289},[263],{"categories":3291},[263],{"categories":3293},[],{"categories":3295},[263],{"categories":3297},[236],{"categories":3299},[242],{"categories":3301},[],{"categories":3303},[245],{"categories":3305},[245],{"categories":3307},[236],{"categories":3309},[],{"categories":3311},[],{"categories":3313},[],{"categories":3315},[284],{"categories":3317},[245],{"categories":3319},[242],{"categories":3321},[],{"categories":3323},[],{"categories":3325},[],{"categories":3327},[284],{"categories":3329},[],{"categories":3331},[236],{"categories":3333},[],{"categories":3335},[],{"categories":3337},[284],{"categories":3339},[242],{"categories":3341},[263],{"categories":3343},[],{"categories":3345},[300],{"categories":3347},[263],{"categories":3349},[300],{"categories":3351},[242],{"categories":3353},[],{"categories":3355},[],{"categories":3357},[245],{"categories":3359},[],{"categories":3361},[],{"categories":3363},[245],{"categories":3365},[242],{"categories":3367},[],{"categories":3369},[245],{"categories":3371},[263],{"categories":3373},[300],{"categories":3375},[287],{"categories":3377},[245],{"categories":3379},[245],{"categories":3381},[],{"categories":3383},[],{"categories":3385},[],{"categories":3387},[263],{"categories":3389},[],{"categories":3391},[],{"categories":3393},[284],{"categories":3395},[236],{"categories":3397},[],{"categories":3399},[239],{"categories":3401},[300],{"categories":3403},[242],{"categories":3405},[194],{"categories":3407},[236],{"categories":3409},[287],{"categories":3411},[239],{"categories":3413},[194],{"categories":3415},[],{"categories":3417},[],{"categories":3419},[245],{"categories":3421},[236],{"categories":3423},[284],{"categories":3425},[236],{"categories":3427},[245],{"categories":3429},[555],{"categories":3431},[245],{"categories":3433},[],{"categories":3435},[242],{"categories":3437},[263],{"categories":3439},[194],{"categories":3441},[],{"categories":3443},[284],{"categories":3445},[263],{"categories":3447},[236],{"categories":3449},[245],{"categories":3451},[242],{"categories":3453},[239],{"categories":3455},[245,555],{"categories":3457},[245],{"categories":3459},[194],{"categories":3461},[242],{"categories":3463},[287],{"categories":3465},[300],{"categories":3467},[245],{"categories":3469},[],{"categories":3471},[245],{"categories":3473},[242],{"categories":3475},[239],{"categories":3477},[],{"categories":3479},[],{"categories":3481},[242],{"categories":3483},[287],{"categories":3485},[242],{"categories":3487},[],{"categories":3489},[263],{"categories":3491},[],{"categories":3493},[263],{"categories":3495},[194],{"categories":3497},[245],{"categories":3499},[242],{"categories":3501},[300],{"categories":3503},[194],{"categories":3505},[],{"categories":3507},[263],{"categories":3509},[242],{"categories":3511},[],{"categories":3513},[242],{"categories":3515},[245],{"categories":3517},[242],{"categories":3519},[245],{"categories":3521},[242],{"categories":3523},[242],{"categories":3525},[242],{"categories":3527},[242],{"categories":3529},[239],{"categories":3531},[],{"categories":3533},[248],{"categories":3535},[263],{"categories":3537},[242],{"categories":3539},[],{"categories":3541},[194],{"categories":3543},[242],{"categories":3545},[242],{"categories":3547},[245],{"categories":3549},[263],{"categories":3551},[242],{"categories":3553},[242],{"categories":3555},[239],{"categories":3557},[245],{"categories":3559},[284],{"categories":3561},[],{"categories":3563},[287],{"categories":3565},[242],{"categories":3567},[],{"categories":3569},[263],{"categories":3571},[300],{"categories":3573},[],{"categories":3575},[],{"categories":3577},[263],{"categories":3579},[263],{"categories":3581},[300],{"categories":3583},[236],{"categories":3585},[245],{"categories":3587},[245],{"categories":3589},[242],{"categories":3591},[239],{"categories":3593},[],{"categories":3595},[],{"categories":3597},[263],{"categories":3599},[287],{"categories":3601},[194],{"categories":3603},[245],{"categories":3605},[284],{"categories":3607},[287],{"categories":3609},[287],{"categories":3611},[],{"categories":3613},[263],{"categories":3615},[242],{"categories":3617},[242],{"categories":3619},[194],{"categories":3621},[],{"categories":3623},[263],{"categories":3625},[263],{"categories":3627},[263],{"categories":3629},[],{"categories":3631},[245],{"categories":3633},[242],{"categories":3635},[],{"categories":3637},[236],{"categories":3639},[239],{"categories":3641},[],{"categories":3643},[242],{"categories":3645},[242],{"categories":3647},[],{"categories":3649},[194],{"categories":3651},[],{"categories":3653},[],{"categories":3655},[],{"categories":3657},[],{"categories":3659},[242],{"categories":3661},[263],{"categories":3663},[],{"categories":3665},[],{"categories":3667},[242],{"categories":3669},[242],{"categories":3671},[242],{"categories":3673},[287],{"categories":3675},[242],{"categories":3677},[287],{"categories":3679},[],{"categories":3681},[287],{"categories":3683},[287],{"categories":3685},[555],{"categories":3687},[245],{"categories":3689},[194],{"categories":3691},[],{"categories":3693},[],{"categories":3695},[287],{"categories":3697},[194],{"categories":3699},[194],{"categories":3701},[194],{"categories":3703},[],{"categories":3705},[236],{"categories":3707},[194],{"categories":3709},[194],{"categories":3711},[236],{"categories":3713},[194],{"categories":3715},[239],{"categories":3717},[194],{"categories":3719},[194],{"categories":3721},[194],{"categories":3723},[287],{"categories":3725},[263],{"categories":3727},[263],{"categories":3729},[242],{"categories":3731},[194],{"categories":3733},[287],{"categories":3735},[555],{"categories":3737},[287],{"categories":3739},[287],{"categories":3741},[287],{"categories":3743},[],{"categories":3745},[239],{"categories":3747},[],{"categories":3749},[555],{"categories":3751},[194],{"categories":3753},[194],{"categories":3755},[194],{"categories":3757},[245],{"categories":3759},[263,239],{"categories":3761},[287],{"categories":3763},[],{"categories":3765},[],{"categories":3767},[287],{"categories":3769},[],{"categories":3771},[287],{"categories":3773},[263],{"categories":3775},[245],{"categories":3777},[],{"categories":3779},[194],{"categories":3781},[242],{"categories":3783},[284],{"categories":3785},[],{"categories":3787},[242],{"categories":3789},[],{"categories":3791},[263],{"categories":3793},[236],{"categories":3795},[287],{"categories":3797},[],{"categories":3799},[194],{"categories":3801},[263],[3803,3932,3981,4036],{"id":3804,"title":3805,"ai":3806,"body":3811,"categories":3909,"created_at":195,"date_modified":195,"description":186,"extension":196,"faq":195,"featured":197,"kicker_label":195,"meta":3910,"navigation":214,"path":3920,"published_at":3921,"question":195,"scraped_at":3922,"seo":3923,"sitemap":3924,"source_id":3925,"source_name":221,"source_type":222,"source_url":3926,"stem":3927,"tags":3928,"thumbnail_url":195,"tldr":3929,"tweet":195,"unknown_tags":3930,"__hash__":3931},"summaries\u002Fsummaries\u002Fc7a9668d4d989623-scale-compose-navigation-beyond-toy-apps-summary.md","Scale Compose Navigation Beyond Toy Apps",{"provider":7,"model":8,"input_tokens":3807,"output_tokens":3808,"processing_time_ms":3809,"cost_usd":3810},8280,1527,17058,0.002397,{"type":14,"value":3812,"toc":3904},[3813,3817,3831,3842,3844,3863,3873,3877,3891],[17,3814,3816],{"id":3815},"centralize-routes-and-decouple-screens-for-maintainability","Centralize Routes and Decouple Screens for Maintainability",[22,3818,3819,3820,3822,3823,3826,3827,3830],{},"Treat navigation as graph movement where routes are structured strings defined in a single sealed class like ",[26,3821,28],{},", with objects for simple screens (",[26,3824,3825],{},"Home : AppScreen(\"home\")",") and data classes for args (",[26,3828,3829],{},"UserDetails : AppScreen(\"user\u002F{userId}\") { fun createRoute(userId: Int) = \"user\u002F$userId\" }","). This prevents scattered strings, eases renames, and keeps code refactor-safe.",[22,3832,3833,3834,3837,3838,3841],{},"In NavHost, map routes to composables with ",[26,3835,3836],{},"composable(route, arguments = listOf(navArgument(\"userId\") { type = NavType.IntType })) { backStackEntry -> val userId = backStackEntry.arguments?.getInt(\"userId\") }",". Screens receive typed callbacks like ",[26,3839,3840],{},"onOpenUser: (Int) -> Unit"," instead of direct NavController access, making UI previewable, testable, and focused on rendering—not coordination. This scales to 15+ screens by keeping NavHost as the connection source of truth.",[17,3843,78],{"id":77},[22,3845,3846,3847,3850,3851,3854,3855,3858,3859,3862],{},"Forward nav is simple (",[26,3848,3849],{},"navController.navigate(route)","), but control back stack to avoid ghosts: after login, ",[26,3852,3853],{},"navigate(\"home\") { popUpTo(\"login\") { inclusive = true } }"," removes login entirely. For auth flows, set dynamic ",[26,3856,3857],{},"startDestination"," based on ",[26,3860,3861],{},"isLoggedIn"," state.",[22,3864,3865,3866,3869,3870,3872],{},"Prevent duplicates on retaps with ",[26,3867,3868],{},"navigate(route) { launchSingleTop = true }",". In bottom nav, combine options in tab clicks: ",[26,3871,145],{},". This pops to root on switches (no growing stack), saves\u002Frestores tab state, and skips duplicates—making tabs feel like independent sections with expected back behavior and polished UX.",[17,3874,3876],{"id":3875},"group-flows-with-nested-graphs-and-handle-deep-links","Group Flows with Nested Graphs and Handle Deep Links",[22,3878,3879,3880,3883,3884,3887,3888,3890],{},"For related screens (login\u002Fsignup\u002Fforgot-password), use nested ",[26,3881,3882],{},"navigation(route = \"auth_graph\", startDestination = \"login\") { composable(...) }"," inside root NavHost (",[26,3885,3886],{},"route = \"root_graph\", startDestination = \"auth_graph\"","). Exit flows cleanly: ",[26,3889,156],{},". This mirrors product structure (auth vs. main), simplifies complex graphs, and clarifies transitions.",[22,3892,3893,3894,3897,3898,3900,3901,3903],{},"Deep links align with routes: ",[26,3895,3896],{},"composable(..., deepLinks = listOf(navDeepLink { uriPattern = \"myapp:\u002F\u002Farticle\u002F{articleId}\" }))",". A link like ",[26,3899,179],{}," lands directly, pulling ",[26,3902,183],{}," from args. Centralize creation helpers ensure patterns match, avoiding maintenance pain. Avoid passing full objects—stick to primitives\u002Ftyped args for reliability over serialization hacks.",{"title":186,"searchDepth":187,"depth":187,"links":3905},[3906,3907,3908],{"id":3815,"depth":187,"text":3816},{"id":77,"depth":187,"text":78},{"id":3875,"depth":187,"text":3876},[194],{"content_references":3911,"triage":3916},[3912,3914],{"type":201,"title":202,"author":203,"url":3913,"context":205},"https:\u002F\u002Fmedium.com\u002Fgitconnected\u002Fswiftui-navigation-in-ios-a-practical-guide-2a4820971681",{"type":201,"title":207,"author":203,"url":3915,"context":205},"https:\u002F\u002Fmedium.com\u002Fgitconnected\u002Fswiftui-state-in-ios-a-practical-guide-993a70794cdd",{"relevance":3917,"novelty":211,"quality":210,"actionability":210,"composite":3918,"reasoning":3919},5,4.15,"Category: Software Engineering. The article provides a detailed guide on structuring navigation in Jetpack Compose, addressing practical concerns for developers building scalable applications. It includes specific code examples and techniques that can be directly applied to improve navigation in Android apps.","\u002Fsummaries\u002Fc7a9668d4d989623-scale-compose-navigation-beyond-toy-apps-summary","2026-04-13 15:09:12","2026-04-13 17:52:57",{"title":3805,"description":186},{"loc":3920},"c7a9668d4d989623","https:\u002F\u002Fmedium.com\u002Fgitconnected\u002Fnavigation-in-android-jetpack-compose-a-practical-guide-4d8037b07a87?source=rss----5517fd7b58a6---4","summaries\u002Fc7a9668d4d989623-scale-compose-navigation-beyond-toy-apps-summary",[226,227,229],"Centralize routes in sealed classes with helper functions, pass nav callbacks to screens, and use popUpTo(inclusive=true), launchSingleTop=true, restoreState=true for clean back stacks in auth flows, bottom tabs, nested graphs, and deep links.",[226,227,229],"l1ZQQNKHLqOe112XJRO02bG7K_AqATJCyylqZfO6R2Q",{"id":3933,"title":3934,"ai":3935,"body":3940,"categories":3968,"created_at":195,"date_modified":195,"description":186,"extension":196,"faq":195,"featured":197,"kicker_label":195,"meta":3969,"navigation":214,"path":3970,"published_at":3971,"question":195,"scraped_at":195,"seo":3972,"sitemap":3973,"source_id":3974,"source_name":221,"source_type":222,"source_url":3975,"stem":3976,"tags":3977,"thumbnail_url":195,"tldr":3978,"tweet":195,"unknown_tags":3979,"__hash__":3980},"summaries\u002Fsummaries\u002Fdebug-like-a-plumber-probe-hidden-bugs-indirectly-summary.md","Debug Like a Plumber: Probe Hidden Bugs Indirectly",{"provider":7,"model":8,"input_tokens":3936,"output_tokens":3937,"processing_time_ms":3938,"cost_usd":3939},3670,895,9736,0.00115885,{"type":14,"value":3941,"toc":3963},[3942,3946,3949,3953,3956,3960],[17,3943,3945],{"id":3944},"force-hidden-problems-to-reveal-themselves","Force Hidden Problems to Reveal Themselves",[22,3947,3948],{},"A leak detection specialist fixed an underground pipe leak near a driveway without digging: he connected a compressor to inject tracer gas into the pipe, then walked the surface with a handheld detector. The gas escaped only through the break, bubbling up through soil to the detector. In 20 minutes, he pinpointed the spot: 'Dig here.' He succeeded by assuming the problem was invisible—buried under concrete—so his method didn't try direct visibility. Instead, it created an inescapable signal from the issue itself.",[17,3950,3952],{"id":3951},"engineers-faulty-assumption-slows-debugging","Engineers' Faulty Assumption Slows Debugging",[22,3954,3955],{},"Software teams facing production bugs assume visibility: code is readable, dashboards show metrics, logs capture events. They read code, stare at dashboards, add logging (often more logging). This direct inspection fails because production issues are 'underground'—intermittent, environment-specific, or emergent—making them hard to spot even when staring.",[17,3957,3959],{"id":3958},"adopt-the-tracer-gas-mindset-for-faster-fixes","Adopt the Tracer Gas Mindset for Faster Fixes",[22,3961,3962],{},"Shift to the plumber's assumption: production bugs can't be seen directly, so inject probes that the problem can't hide from. Examples include targeted canary deployments, synthetic traffic simulating user paths, or chaos experiments flipping switches to surface weaknesses. These methods guarantee the bug announces itself, cutting debug time from hours\u002Fdays to minutes, just as tracer gas did.",{"title":186,"searchDepth":187,"depth":187,"links":3964},[3965,3966,3967],{"id":3944,"depth":187,"text":3945},{"id":3951,"depth":187,"text":3952},{"id":3958,"depth":187,"text":3959},[194],{},"\u002Fsummaries\u002Fdebug-like-a-plumber-probe-hidden-bugs-indirectly-summary","2026-04-08 21:21:18",{"title":3934,"description":186},{"loc":3970},"eab4d08860b92327","https:\u002F\u002Funknown","summaries\u002Fdebug-like-a-plumber-probe-hidden-bugs-indirectly-summary",[226,227],"Production bugs hide like underground leaks—don't inspect directly; inject 'tracer gas' probes that force issues to surface, as a leak specialist did in 20 minutes without digging.",[226,227],"an1lWZBnf3t3cE2cl9ZoyxtBgErx10MA-Ja1DYlyi-s",{"id":3982,"title":3983,"ai":3984,"body":3989,"categories":4017,"created_at":195,"date_modified":195,"description":186,"extension":196,"faq":195,"featured":197,"kicker_label":195,"meta":4018,"navigation":214,"path":4023,"published_at":4024,"question":195,"scraped_at":4025,"seo":4026,"sitemap":4027,"source_id":4028,"source_name":4029,"source_type":222,"source_url":4030,"stem":4031,"tags":4032,"thumbnail_url":195,"tldr":4033,"tweet":195,"unknown_tags":4034,"__hash__":4035},"summaries\u002Fsummaries\u002Ff0cb31fd5d79ac17-juniors-ship-faster-but-lack-system-shape-summary.md","Juniors Ship Faster But Lack System Shape",{"provider":7,"model":8,"input_tokens":3985,"output_tokens":3986,"processing_time_ms":3987,"cost_usd":3988},3927,1130,12244,0.00084355,{"type":14,"value":3990,"toc":4012},[3991,3995,3998,4002,4005,4009],[17,3992,3994],{"id":3993},"speed-masks-shallow-understanding","Speed Masks Shallow Understanding",[22,3996,3997],{},"Junior engineers now close far more tickets than seniors—14 per sprint versus 4—while delivering clean PRs, passing tests, and earning minimal code review feedback. Dashboards label them high performers. This isn't luck; it's consistent over months. Use this metric cautiously: it measures output volume, not depth. Juniors excel at tactical tasks like syntax and implementation because tools (implied AI in context) accelerate routine coding, freeing seniors for architecture—but eroding that edge if not addressed.",[17,3999,4001],{"id":4000},"incidents-expose-the-gap","Incidents Expose the Gap",[22,4003,4004],{},"During a subtle production incident, the junior on-call couldn't navigate despite reading stack traces and logs. She pinged the senior not for syntax help, but because she didn't recognize 'which part mattered'—lacking the system's 'shape.' This mental model lets experienced engineers orient quickly: predicting where bugs hide based on architecture, data flows, and historical patterns. Without it, juniors ship fast but debug slowly, risking outages. Build this by pairing juniors on incidents, diagramming system boundaries early, and enforcing architecture reviews in PRs.",[17,4006,4008],{"id":4007},"redefining-seniority-for-ai-era","Redefining Seniority for AI Era",[22,4010,4011],{},"Traditional seniority wasn't shipping speed; it was maintaining the full system shape in working memory to triage, hypothesize, and fix under pressure. As juniors close the speed gap, teams risk a bench of fast coders who can't handle chaos. Counter by measuring 'shape mastery': incident resolution time, architecture docs contributed, and cross-module changes proposed. Promote based on this, not tickets closed—ensuring velocity doesn't trade away reliability.",{"title":186,"searchDepth":187,"depth":187,"links":4013},[4014,4015,4016],{"id":3993,"depth":187,"text":3994},{"id":4000,"depth":187,"text":4001},{"id":4007,"depth":187,"text":4008},[236],{"content_references":4019,"triage":4020},[],{"relevance":3917,"novelty":210,"quality":210,"actionability":210,"composite":4021,"reasoning":4022},4.35,"Category: Software Engineering. The article addresses the balance between speed and understanding in software engineering, highlighting a critical pain point for product builders: the need for juniors to grasp system architecture. It provides actionable strategies like pairing juniors on incidents and enforcing architecture reviews, making it relevant and practical for the target audience.","\u002Fsummaries\u002Ff0cb31fd5d79ac17-juniors-ship-faster-but-lack-system-shape-summary","2026-04-21 00:22:22","2026-04-21 15:26:05",{"title":3983,"description":186},{"loc":4023},"f0cb31fd5d79ac17","Generative AI","https:\u002F\u002Fgenerativeai.pub\u002Fmy-juniors-ship-faster-than-my-seniors-and-im-worried-about-them-4b284c7384ff?source=rss----440100e76000---4","summaries\u002Ff0cb31fd5d79ac17-juniors-ship-faster-but-lack-system-shape-summary",[227,226],"Juniors outperform seniors on tickets shipped (14 vs 4) with clean PRs, but falter in incidents because they don't grasp the system's architecture—seniority means holding that mental model, not raw speed.",[227,226],"S9jMq69SxPImW6BmMsWM_CG-GwHD-ZP24uMhYzx8OrA",{"id":4037,"title":4038,"ai":4039,"body":4044,"categories":4325,"created_at":195,"date_modified":195,"description":186,"extension":196,"faq":195,"featured":197,"kicker_label":195,"meta":4326,"navigation":214,"path":4330,"published_at":4331,"question":195,"scraped_at":4332,"seo":4333,"sitemap":4334,"source_id":4335,"source_name":4336,"source_type":222,"source_url":4337,"stem":4338,"tags":4339,"thumbnail_url":195,"tldr":4340,"tweet":195,"unknown_tags":4341,"__hash__":4342},"summaries\u002Fsummaries\u002F889dfe771060ca7f-pytest-fixtures-dry-up-test-setup-code-summary.md","Pytest Fixtures: DRY Up Test Setup Code",{"provider":7,"model":8,"input_tokens":4040,"output_tokens":4041,"processing_time_ms":4042,"cost_usd":4043},3838,1329,15926,0.0014096,{"type":14,"value":4045,"toc":4320},[4046,4050,4053,4056,4115,4134,4137,4141,4144,4183,4186,4193,4213,4216,4239,4243,4250,4310,4316],[17,4047,4049],{"id":4048},"centralize-setup-to-eliminate-repetition","Centralize Setup to Eliminate Repetition",[22,4051,4052],{},"Repeated setup code—like creating test data or DB connections across tests—leads to maintenance nightmares and fragility. Pytest fixtures solve this by defining reusable setup once, injected automatically into tests via function arguments.",[22,4054,4055],{},"Start with a basic fixture for shared data:",[4057,4058,4062],"pre",{"className":4059,"code":4060,"language":4061,"meta":186,"style":186},"language-python shiki shiki-themes github-light github-dark","def test_addition():    result = add(2, 3)    assert result == 5\n\n@pytest.fixture\ndef sample_data():\n    return [1, 2, 3, 4]\n\ndef test_sum(sample_data):\n    result = sum(sample_data)\n    assert result == 10\n","python",[26,4063,4064,4072,4077,4082,4087,4092,4097,4103,4109],{"__ignoreMap":186},[4065,4066,4069],"span",{"class":4067,"line":4068},"line",1,[4065,4070,4071],{},"def test_addition():    result = add(2, 3)    assert result == 5\n",[4065,4073,4074],{"class":4067,"line":187},[4065,4075,4076],{"emptyLinePlaceholder":214},"\n",[4065,4078,4079],{"class":4067,"line":211},[4065,4080,4081],{},"@pytest.fixture\n",[4065,4083,4084],{"class":4067,"line":210},[4065,4085,4086],{},"def sample_data():\n",[4065,4088,4089],{"class":4067,"line":3917},[4065,4090,4091],{},"    return [1, 2, 3, 4]\n",[4065,4093,4095],{"class":4067,"line":4094},6,[4065,4096,4076],{"emptyLinePlaceholder":214},[4065,4098,4100],{"class":4067,"line":4099},7,[4065,4101,4102],{},"def test_sum(sample_data):\n",[4065,4104,4106],{"class":4067,"line":4105},8,[4065,4107,4108],{},"    result = sum(sample_data)\n",[4065,4110,4112],{"class":4067,"line":4111},9,[4065,4113,4114],{},"    assert result == 10\n",[22,4116,4117,4118,4121,4122,4125,4126,4129,4130,4133],{},"Here, ",[26,4119,4120],{},"sample_data"," runs once per test, avoiding copy-paste. Fixtures support dependency chaining: a ",[26,4123,4124],{},"db_connection"," fixture can depend on ",[26,4127,4128],{},"test_user"," to build layered setups like ",[26,4131,4132],{},"def db_connection(test_user): return connect_db(test_user)",".",[22,4135,4136],{},"This keeps tests focused on assertions, cutting boilerplate by 50-80% in growing suites.",[17,4138,4140],{"id":4139},"scale-with-parameters-autouse-and-scopes","Scale with Parameters, Autouse, and Scopes",[22,4142,4143],{},"Parametrize fixtures for data-driven tests without exploding function counts:",[4057,4145,4147],{"className":4059,"code":4146,"language":4061,"meta":186,"style":186},"@pytest.fixture(params=[(2,3,5), (0,0,0), (-1,1,0)])\ndef add_inputs(request):\n    return request.param\n\ndef test_addition(add_inputs):\n    a, b, expected = add_inputs\n    assert add(a, b) == expected\n",[26,4148,4149,4154,4159,4164,4168,4173,4178],{"__ignoreMap":186},[4065,4150,4151],{"class":4067,"line":4068},[4065,4152,4153],{},"@pytest.fixture(params=[(2,3,5), (0,0,0), (-1,1,0)])\n",[4065,4155,4156],{"class":4067,"line":187},[4065,4157,4158],{},"def add_inputs(request):\n",[4065,4160,4161],{"class":4067,"line":211},[4065,4162,4163],{},"    return request.param\n",[4065,4165,4166],{"class":4067,"line":210},[4065,4167,4076],{"emptyLinePlaceholder":214},[4065,4169,4170],{"class":4067,"line":3917},[4065,4171,4172],{},"def test_addition(add_inputs):\n",[4065,4174,4175],{"class":4067,"line":4094},[4065,4176,4177],{},"    a, b, expected = add_inputs\n",[4065,4179,4180],{"class":4067,"line":4099},[4065,4181,4182],{},"    assert add(a, b) == expected\n",[22,4184,4185],{},"Runs the test three times with different inputs, covering edge cases efficiently.",[22,4187,4188,4189,4192],{},"Use ",[26,4190,4191],{},"autouse=True"," for global setup like patching or mocks:",[4057,4194,4196],{"className":4059,"code":4195,"language":4061,"meta":186,"style":186},"@pytest.fixture(autouse=True)\ndef mock_time(monkeypatch):\n    monkeypatch.setattr('time.time', lambda: 1234567890)\n",[26,4197,4198,4203,4208],{"__ignoreMap":186},[4065,4199,4200],{"class":4067,"line":4068},[4065,4201,4202],{},"@pytest.fixture(autouse=True)\n",[4065,4204,4205],{"class":4067,"line":187},[4065,4206,4207],{},"def mock_time(monkeypatch):\n",[4065,4209,4210],{"class":4067,"line":211},[4065,4211,4212],{},"    monkeypatch.setattr('time.time', lambda: 1234567890)\n",[22,4214,4215],{},"Applies to all tests in the scope without explicit requests.",[22,4217,4218,4219,4222,4223,4226,4227,4230,4231,4234,4235,4238],{},"Control reuse with ",[26,4220,4221],{},"scope",": ",[26,4224,4225],{},"function"," (default, per test), ",[26,4228,4229],{},"class"," (per class), ",[26,4232,4233],{},"module"," (per file, ideal for DB init), ",[26,4236,4237],{},"session"," (once per run, for expensive resources). Module scope on a DB fixture shares one connection across 20+ tests, reducing overhead from 2s to 0.2s per run.",[17,4240,4242],{"id":4241},"handle-teardown-with-yield-for-reliable-cleanup","Handle Teardown with Yield for Reliable Cleanup",[22,4244,4245,4246,4249],{},"Fixtures with ",[26,4247,4248],{},"yield"," enable post-test cleanup:",[4057,4251,4253],{"className":4059,"code":4252,"language":4061,"meta":186,"style":186},"@pytest.fixture\ndef temp_file(tmp_path):\n    path = tmp_path \u002F 'test.txt'\n    path.write_text('initial content')\n    yield str(path)\n    path.unlink()\n\ndef test_file_write(temp_file):\n    with open(temp_file, 'a') as f:\n        f.write('appended')\n    # File auto-deleted after\n",[26,4254,4255,4259,4264,4269,4274,4279,4284,4288,4293,4298,4304],{"__ignoreMap":186},[4065,4256,4257],{"class":4067,"line":4068},[4065,4258,4081],{},[4065,4260,4261],{"class":4067,"line":187},[4065,4262,4263],{},"def temp_file(tmp_path):\n",[4065,4265,4266],{"class":4067,"line":211},[4065,4267,4268],{},"    path = tmp_path \u002F 'test.txt'\n",[4065,4270,4271],{"class":4067,"line":210},[4065,4272,4273],{},"    path.write_text('initial content')\n",[4065,4275,4276],{"class":4067,"line":3917},[4065,4277,4278],{},"    yield str(path)\n",[4065,4280,4281],{"class":4067,"line":4094},[4065,4282,4283],{},"    path.unlink()\n",[4065,4285,4286],{"class":4067,"line":4099},[4065,4287,4076],{"emptyLinePlaceholder":214},[4065,4289,4290],{"class":4067,"line":4105},[4065,4291,4292],{},"def test_file_write(temp_file):\n",[4065,4294,4295],{"class":4067,"line":4111},[4065,4296,4297],{},"    with open(temp_file, 'a') as f:\n",[4065,4299,4301],{"class":4067,"line":4300},10,[4065,4302,4303],{},"        f.write('appended')\n",[4065,4305,4307],{"class":4067,"line":4306},11,[4065,4308,4309],{},"    # File auto-deleted after\n",[22,4311,4312,4313,4315],{},"Code before ",[26,4314,4248],{}," sets up; after runs teardown. Perfect for temp files, DB rollbacks, or API mocks—ensures isolation even on failures, preventing leaks in CI runs.",[4317,4318,4319],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":186,"searchDepth":187,"depth":187,"links":4321},[4322,4323,4324],{"id":4048,"depth":187,"text":4049},{"id":4139,"depth":187,"text":4140},{"id":4241,"depth":187,"text":4242},[194],{"content_references":4327,"triage":4328},[],{"relevance":210,"novelty":211,"quality":210,"actionability":210,"composite":212,"reasoning":4329},"Category: Software Engineering. The article provides a practical guide on using Pytest fixtures to improve test setup efficiency, addressing a common pain point for developers in maintaining test code. It includes specific examples and techniques that can be directly applied to enhance developer productivity.","\u002Fsummaries\u002F889dfe771060ca7f-pytest-fixtures-dry-up-test-setup-code-summary","2026-05-10 15:09:42","2026-05-11 15:04:10",{"title":4038,"description":186},{"loc":4330},"889dfe771060ca7f","Python in Plain English","https:\u002F\u002Fpython.plainenglish.io\u002Fstop-repeating-yourself-in-tests-a-clear-guide-to-fixtures-in-python-b480a053e93b?source=rss----78073def27b8---4","summaries\u002F889dfe771060ca7f-pytest-fixtures-dry-up-test-setup-code-summary",[4061,226,227],"Pytest fixtures eliminate repeated setup\u002Fteardown in tests by centralizing data prep, DB connections, and cleanup—use params for variations, scopes for reuse, and yield for teardown to scale suites without fragility.",[226,227],"KugMtttxqXRvgbLE7irAeHQkMueSv9XMdEf62-5NhuI"]