1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
-
- This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
- project.
-
- Copyright (C) 1998-2024 OpenLink Software
-
- This project is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; only version 2 of the License, dated June 1991.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-->
<rss version="0.91">
<channel>
<title>Copia </title>
<link>http://copia.ogbuji.net/blog/index.rss</link>
<description>Ogbujis on just about everything</description>
<language>en</language>
<item>
<title>FuXi Trigrams in SVG</title>
<link>http://copia.ogbuji.net/blog/FuXiTrigrams.html</link>
<content>
<p>I had been looking for these for some time:</p>
<h3>Heaven</h3>
<p>
<img src="http://www.fileformat.info/info/unicode/char/2635/trigram_for_heaven.svg" alt="Trigram for Heaven" title=""/>
</p>
<h3>Earth</h3>
<p>
<img src="http://www.fileformat.info/info/unicode/char/2635/trigram_for_earth.svg" alt="Trigram for Heaven" title=""/>
</p>
<h3>Thunder</h3>
<p>
<img src="http://www.fileformat.info/info/unicode/char/2635/trigram_for_thunder.svg" alt="Trigram for Heaven" title=""/>
</p>
<h3>Wind</h3>
<p>
<img src="http://www.fileformat.info/info/unicode/char/2635/trigram_for_window.svg" alt="Trigram for Heaven" title=""/>
</p>
<h3>Mountain</h3>
<p>
<img src="http://www.fileformat.info/info/unicode/char/2635/trigram_for_mountain.svg" alt="Trigram for Heaven" title=""/>
</p>
<h3>Lake</h3>
<p>
<img src="http://www.fileformat.info/info/unicode/char/2635/trigram_for_lake.svg" alt="Trigram for Heaven" title=""/>
</p>
<h3>Water</h3>
<p>
<img src="http://www.fileformat.info/info/unicode/char/2635/trigram_for_water.svg" alt="Trigram for Heaven" title=""/>
</p>
<h3>Fire</h3>
<p>
<img src="http://www.fileformat.info/info/unicode/char/2635/trigram_for_fire.svg" alt="Trigram for Heaven" title=""/>
</p>
</content>
</item>
<item>
<title>Versa Diagrams</title>
<link>http://copia.ogbuji.net/blog/2005-06-16/VersaDiagrams.html</link>
<content>
<p>
<!-- -->
</p>
<p>I updated the Versa by Deconstruction <a href="http://copia.ogbuji.net/files/VersaPrimer.html">document</a> with diagrams for the
forward traversal operator and the distribute function (probably the two most difficult / fundamental components of
Versa). They are both below:</p>
<p>
<img src="http://copia.ogbuji.net/files/Distribute.jpg" title="Distribute - as Cartesian Product"/>
</p>
<p>
<a href="http://copia.ogbuji.net/files/ForwardTraversalOperator.jpg">
<img src="http://copia.ogbuji.net/files/ForwardTraversalOperator-small.jpg" title="Forward Traversal Operator"/>
</a>
</p>
</content>
</item>
<item>
<title>Sane template-like output for Amara</title>
<link>http://copia.ogbuji.net/blog/2005-06-16/Sane_templ.html</link>
<content>
<p>
<!-- -->
</p>
<p>In <a href="/blog/2005-06-12/Amara_equi">this entry</a> I showed some Amara
equivalents for XSLT 2 and XQuery examples. I think the main
disadvantage of Amara in these cases was the somewhat clumsy XML output
generation syntax. This is not an easy problem to fix. XSLT and XQuery
basically work XML syntax directly into the language, to make output
specification very seamless. This makes sense as long as they stick to
the task of being very determinate black boxes taking one body of XML data
and working it into another. But often you turn to a language like
Python for XML processing because you want to blow the lid off the
determinate black boxes a bit: you want to take up all the power of
general-purpose computing.</p>
<p>With this power comes the need to streamline and modularize, and the
usual first principle for such streamlining is the principle of
separating the model from presentation. This is a much easier
principle to state than to observe in real-life processing scenarios.
We love template languages for XML and HTML generation because they are
so convenient in solving real problems in the here and now. We look
askance at them, however, because we know that they come with a tendency
to mix model and presentation, and that we might regret the solution
once it comes time to maintain it when (as inevitable) model processing
requirements change or presentation requirements change.</p>
<p>Well, that was a longer preamble than I'd originally had in mind, but
it's all boils down to my basic problem: how do I make Amara's output
mechanism more readable without falling into the many pitfalls of
template systems?</p>
<p>Here is one of the XSLT 2 examples:</p>
<pre>
<code><xsl:for-each select="doc('auction.xml')/site/people/person">
<xsl:variable name="p" select="."/>
<xsl:variable name="a" as="element(item)*">
<xsl:for-each select="doc('auction.xml')/site/closed_auctions/closed_auction">
<xsl:variable name="t" select="."/>
<xsl:variable name="n"
select="doc('auction.xml')/site/regions/europe/item
[$t/itemref/@item = @id]"/>
<xsl:if test="$p/@id = $t/buyer/person">
<item><xsl:copy-of select="$n/name"/></item>
</xsl:if>
</xsl:variable>
<person name="{$p/name}">
<xsl:copy-of select="$a"/>
</person>
</xsl:for-each>
</code>
</pre>
<p>In Amara 1.0b3 it goes something like:</p>
<pre>
<code>def closed_auction_items_by_name():
doc = binderytools.bind_file('auction.xml')
newdoc = binderytools.create_document()
#Iterate over each person
for person in doc.xml_xpath(u'/site/people/person'):
#Prepare the wrapper element for each person
person_elem = newdoc.xml_element(
u'person',
attributes={u'name': unicode(person.name)}
)
newdoc.xml_append(person_elem)
#Join to compute all the items this person bought in Europe
items = [ unicode(item.name)
for closed in doc.xml_xpath (u'/site/closed_auctions/closed_auction')
for item in doc.xml_xpath(u'/site/regions/europe/item')
if (item.id == closed.itemref.item
and person.id == closed.buyer.person)
]
#XML chunk with results of join
for item in items:
person_elem.xml_append(
newdoc.xml_element(u'item', content=item)
)
#All done. Print out the resulting document
print newdoc.xml()
</code>
</pre>
<p>The following snippet is a good example:</p>
<pre>
<code> person_elem = newdoc.xml_element(
u'person',
attributes={u'name': unicode(person.name)}
)
newdoc.xml_append(person_elem)
</code>
</pre>
<p>If I could turn all this into:</p>
<pre>
<code> newdoc.xml_append_template("<person name='{person.name}'/>")
</code>
</pre>
<p>This would certainly be a huge win for readability. The curly brackets
are borrowed from XSLT attribute value templates (AVTs), except that
their contents are a Python expression rather than an XPath. The person
element created is empty for now, but it becomes just part of the data
binding and you can access it using the expected <code>newdoc.person</code> or
<code>newdoc.person.name</code>.</p>
<p>One important note: this is very different from `"<person name='%
s'/>"%(person.name)`. What I have in mind is a structured template that
must be well-formed (it can have multiple root elements). The
replacement occurs within the perfectly well-formed XML structure of the
template. As with XSLT AVTs you can represent a literal curly bracket
as <code>{{</code> or <code>}}</code>.</p>
<p>The other output generation part in the example:</p>
<pre>
<code> for item in items:
person_elem.xml_append(
newdoc.xml_element(u'item', content=item)
)
</code>
</pre>
<p>Would become</p>
<pre>
<code> for item in items:
newdoc.person.xml_append_template("<item>{item}</item>")
</code>
</pre>
<p>This time we have the template substitution going on in the content
rather than an attribute. Again I would want to restrict this entire
idea to a very clean and layered template with proper XML semantics.
There would be no tricks such as
<code>"<{element_name}>spam</{element_name}>"</code>. If you wanted that sort of
thing you could use the existing API such as xml_element(element_name),
or even use Python string operations directly.</p>
<p>The complete example using such a templating system would be:</p>
<pre>
<code>def closed_auction_items_by_name():
doc = binderytools.bind_file('auction.xml')
newdoc = binderytools.create_document()
#Iterate over each person
for person in doc.xml_xpath(u'/site/people/person'):
#Prepare the wrapper element for each person
newdoc.xml_append_template("<person name='{person.name}'/>")
#Join to compute all the items this person bought in Europe
items = [ unicode(item.name)
for closed in doc.xml_xpath (u'/site/closed_auctions/closed_auction')
for item in doc.xml_xpath(u'/site/regions/europe/item')
if (item.id == closed.itemref.item
and person.id == closed.buyer.person)
]
#XML chunk with results of join
for item in items:
newdoc.person.xml_append_template("<item>{item}</item>")
#All done. Print out the resulting document
print newdoc.xml()
</code>
</pre>
<p>I think that this example is indeed more readable than the XSLT version.</p>
<p>One tempting thing about this idea is that all the building blocks are
there. 4Suite already gives me the ability to parse and process this
template very easily, and I could implement this logic without much
trouble. But I also think that it deserves some serious thought (and, I
hope, feedback from users). There's no hurry: I don't plan to add this
capability in the Amara 1.0 cycle. I need to get Amara 1.0 out, and I'm
expecting that 1.0b3 is the last stop before a release candidate.</p>
<p>So, things to ponder.</p>
<p><strong>Security</strong>. Any time you support such arbitrary-code-in-template
features the tainted string worry comes up: what happens if one is not
careful with the expression that is used within a template? I think
that this issue is not really Amara's responsibility. The developer
using Amara should no more pass in untrusted Python expressions to a
template than they would to an <code>exec</code> statement. They should be aware
that Amara templates will execute arbitrary Python expressions, if
they're passed in, and they should apply the usual precautions against
tainting.</p>
<p><strong>String or Unicode</strong>? Should the templates be specified as strings or
Unicode? They are themselves well-formed XML, which makes me think they
should be strings (XML is really defined in terms of encoded
serialization, and the Unicode backbone is just an abstraction imposed
on the actual encoded byte stream). But is this confusing to users?
I've always preached that XML APIs should use Unicode, and my products
reflect that, and for a user that doesn't understand the nuances, this
could seem like a confusing exception. Then again, we already have this
exception for 4Suite and Amara APIs that parse XML from strings. My
leaning would be to have the template expressed as a string, but to have
the results of expressions within templates coerced to Unicode. This is the right thing to do, and that's the strongest argument.</p>
<p><strong>separation of model and presentation</strong>. The age-old question with
such templates is whether they cause tangles that complicate
maintenance. I think one can often make an empirical check for such
problems by imagining what happens in a scenario where the data model
operations need to change, and another scenario where the presentation
needs to change.</p>
<p>As an example of a model change, imagine that the source for the item
info was moved from an XML document to a database. I wouldn't need to
change any of the templates as long as I could get the same values to
pass in, and I think it's reasonable to assume I could do this.
Basically, since my templates simply refer to host variables whose
computation is nicely decoupled from the template code, the system
passes the first test.</p>
<p>As an example of a presentation change, imagine that I now want to
generate XHTML directly, rather than this <code><person><item>...</code> business.
I think the system passes this test as well. The templates themselves
would have to change, but this change would be isolated from the
computation of the host variables used by the templates. Some people
might argue that I'm grading these tests too leniently, and that it's
already problematic that the computation and presentation occurs so
close together, in the same function in the same code file. I'm open to
being convinced this is the case, but I'd want to hear of practical
maintenance scenarios where this would be a definite problem.</p>
<p>So what do you think?</p>
</content>
</item>
<item>
<title>Don't buy batteries in Europe, if you can help it</title>
<link>http://copia.ogbuji.net/blog/2005-06-15/Don_t_buy_.html</link>
<content>
<p>
<!-- -->
</p>
<p>Just a simple practical tip, that's all. The two times I can remember
buying batteries in Europe, once in Loughborough, England, and the other
time in Amsterdam, I've just about left the store in tears. Accounting
for the exchange rate in both cases it came to about $8.00 for 4 AAs for
name brand batteries. In the US a typical full price would be about
$4.00 for 8. If you're traveling from the U.S. to Europe, take a long
some spares. And if you're visiting the U.S. from Europe, consider
taking back as many as your luggage allowance and scowling customs
officers will allow. F'real, though.</p>
<p>
<em>Disclaimer: I realize that generalizing two high street stores to an
entire continent is so, like, Yankee gauche, but dammit, it's easier to
sort the world out that way... Hmm. I wonder how many people use that
excuse to form their impressions of the continent of Africa.</em>
</p>
</content>
</item>
<item>
<title>First post from Fedora Core 4</title>
<link>http://copia.ogbuji.net/blog/2005-06-15/First_post.html</link>
<content>
<p>
<!-- -->
</p>
<p>This is my first post from <a href="http://fedora.redhat.com/">Fedora Core 4</a>.
I grabbed the DVD ISO via
<a href="http://torrent.fedoraproject.org/">bittorrent</a> (I also seeded to a
ration of 2:1, i.e. I served up twice as much DVD ISO goodness as I
downloaded. Please do the same if you can). I then used the standard
upgrade option to get my main desktop on point. It went so smoothly
that I threw caution to the wind and did the same for my laptop (<a href="http://www.oreillynet.com/pub/wlg/5918">see my
post on the upgrade from FC2 to
FC3</a>). It's looking good on the
laptop as well. With the new kernel, <code>2.6.11-1.1369_FC4</code>, my Centrino
(Intel PRO/Wireless 2100) wireless worked right out of the box (<a href="http://www.oreillynet.com/pub/wlg/5690">unlike
with FC3</a>) and so did my
Broadcomm B44 Ethernet driver (<a href="http://www.oreillynet.com/pub/wlg/5685">unlike with
FC3</a>). Now that's what software
evolution is all about. Speaking of Evolution, this time it was a
smaller jump, from 2.0.4 to 2.2.2, and it went schmoovely (<a href="http://www.oreillynet.com/pub/wlg/5919">unlike with
FC3</a>).</p>
<p>I'll keep reporting on my experiences as I go along, but at the moment,
FC4 gets both my thumbs up. Besides giving me far fewer upgrade
headaches than FC3, it looks a lot better and feels a lot snappier (the
interminable boot process from FC3 seems to take half the time now).</p>
</content>
</item>
<item>
<title>Quotīdiē</title>
<link>http://copia.ogbuji.net/blog/2005-06-15/Quot_di_.html</link>
<content>
<p>
<!-- -->
</p>
<blockquote>
<p>They dug a trench, and threw him in a grave <br/>
Shallow as youth; and poured the wine out <br/>
soaking the tunic and the dry air. <br/>
They covered him lightly, and left him there.</p>
<p>When music comes upon the airs of Spring, <br/>
Faith fevers the blood; counter to harmony, <br/>
The mind makes its rugged testaments. <br/>
Melancholy moves, preservative and predatory.</p>
<p>The light is a container of treachery, <br/>
The light is the preserver of the Parthenon. <br/>
The light is lost from that young eye. <br/>
Hearing music, I speak, lest he should die.</p>
</blockquote>
<p>—<a href="http://en.wikipedia.org/wiki/Richard_Eberhart">Richard
Eberhart</a>—"A Young
Greek, Killed in the Wars"—<a href="http://www.poetrymagazine.org/"><strong>Poetry</strong>
magazine</a> (Volume 85, February 1955)</p>
<p><a href="http://en.wikipedia.org/wiki/Carl_Sandburg">Carl Sandburg</a> is often put
forth as the Midwestern American poet <em>par excellence</em>, which annoys me
to no end not just because I dislike Sandburg's work very much, but also
because a lot about Sandburg's institutionalization says as much about
why a great poet such as Richard Eberhart never gained the recognition
he deserved. Eberhart wasn't content to write the folksy, middle-
American sentiment that people properly expected from farm country. He
insisted on breaking his bounds by writing about the big human themes
with extraordinary craft and sensibility. Richard Eberhart died on
Sunday, 12 June 2005 at the age of 101.</p>
<p>Eberhart was born 5 April 1904, in Austin, Minnesota on a modest estate
called Burr Oaks (later on the name of one of his books). He was
educated in the US (University of Minnesota, Dartmouth, Harvard) and
England (St. John's College). He served as private tutor to the son of
<a href="http://en.wikipedia.org/wiki/Prajadhipok">King Prajadhipok</a> of Siam
(Thailand) in the early 30s, and otherwise had a fairly adventurous
youth, with stints as a sailor and gunnery instructor.</p>
<p>As for his poetry, I'll quote from one of my favorite critics. John
Wain's assessment is:</p>
<blockquote>
<p>His varied and energetic life comes through in his poetry, which is
rugged, inquisitive and forceful; clumsy in patches, supremely
felicitous in others.</p>
</blockquote>
<p>—Anthology of Modern Poetry (Hutchinson, 1963)</p>
<p>I think I'm lucky to have been spared Eberhart's clumsy patches: I've
read him almost exclusively in anthology and journal. I have found that
he is one of the most affecting writers on the horrors of war. His best
known poem is this one.</p>
<blockquote>
<p>You would think the fury of aerial bombardment <br/>
Would rouse God to relent; the infinite spaces <br/>
Are still silent. He looks on shock-pried faces. <br/>
History, even, does not know what is meant.</p>
<p>You would feel that after so many centuries <br/>
God would give man to repent; yet he can kill <br/>
As Cain could, but with multitudinous will, <br/>
No farther advanced than in his ancient furies</p>
<p>Was man made stupid to see his own stupidity? <br/>
Is God by definition indifferent, beyond us all? <br/>
Is the eternal truth man's fighting soul <br/>
Wherein the Beast ravens in its own avidity?</p>
<p>Of Van Wettering I speak, and Averill, <br/>
Names on a list, whose faces I do not recall <br/>
But they are gone to early death, who late in school <br/>
Distinguished the belt feed lever from the belt holding pawl.</p>
</blockquote>
<p>—Richard Eberhart—"The Fury of Aerial Bombardment"</p>
<p>Eberhart was very generous in his criticism (that which I've read). Too
generous at times, in my opinion, given his approval of the mess made by Ginsberg
and the Beat poets. The AP article in which I read about Eberhart's
death included a typical Eberhart quote:</p>
<blockquote>
<p>Poems in a way are spells against death, They are milestones, to see
where you were then from where you are now. To perpetuate your feelings,
to establish them. If you have in any way touched the central heart of
mankind's feelings, you'll survive.</p>
</blockquote>
<p>And survive he did. 101 years is quite the achievement to be
celebrated. Soon (July 29) we'll be celebrating the centenary of
another great poet <a href="http://en.wikipedia.org/wiki/Stanley_Kunitz">Stanley Kunitz</a>. Kunitz's
"Benediction" is one of my favorite poems to recite to my wife and sons.
It's wonderful to see these poets live such complete lives, who have
brought such feeling to the exploration of life's great themes.</p>
<p>I meant to link to "Benediction" but I can't find a respectable
transcription of on-line. It deserves its own entry, so some other day
I'll type it in for Quotīdiē. But I do want to mention that I found "A
Young Greek, Killed in the Wars", "The Fury of Aerial Bombardment" and
"Benediction" all in my favorite small poetry book, John Wain's
Anthology of Modern Poetry (Hutchinson, 1963), ISBN 0090671317. It's
out of print and not easy to find, even used (<a href="http://www.amazon.co.uk/exec/obidos/tg/detail/offer-listing/-/0090671317/all//026-3285923-6964403">here are the listings on
Amazon UK Marketplace</a>). I bought it in 1988 at
the University of Nigeria and it has been one of my most treasured books all this time. It's
a superb collection, and if you can lay your hands on a copy, I suggest
you do so.</p>
</content>
</item>
<item>
<title>We need more solid guidelines for i18n in OSS projects</title>
<link>http://copia.ogbuji.net/blog/2005-06-14/We_need_mo.html</link>
<content>
<p>
<!-- -->
</p>
<p>Every time I'm about to tackle i18n in some project, I find myself
filled with a bit of trepidation. I actually know more than the average
developer on the topic, but it's a hard topic, and there is quite the
mystery around it.</p>
<p>One of the reasons for this mystery is that there are really few good
resources to guide FOSS developers through the process of
internationalizing their apps. Gettext is the most common means for
i18n and l10n in FOSS apps. The master resource for this is the <a href="http://www.gnu.org/software/gettext/manual/">GNU
gettext manual</a>, but that's
a lot to bite off. Poking around on Google, I found a <a href="http://www.onlamp.com/pub/a/php/2002/06/13/php.html?page=1">useful gettext
overview for PHP
folks</a>, the
Ruby on Rails folks have a <a href="http://manuals.rubyonrails.com/read/chapter/82">nice chapter on the
it</a> and there are a few other
general intros (<a href="http://www.linuxjournal.com/article/6176">1</a>,
<a href="http://fplanque.net/Blog/devblog/2003/08/18/p353">2</a>,
<a href="http://oriya.sarovar.org/docs/gettext_single.html">3</a>). Luis Miguel
Morillas pointed out some for
<a href="http://developer.gnome.org/projects/gtp/">GNOME</a>,
<a href="http://i18n.kde.org/translation-howto/">KDE</a> and wxPython
(<a href="http://wiki.wxpython.org/index.cgi/Internationalization">1</a>,
<a href="http://wiki.wxpython.org/index.cgi/RecipesI18n">2</a>).</p>
<p>Python has the usual set of gettext-based facilities, which is great,
but they are woefully documented. In the <a href="http://docs.python.org/lib/module-gettext.html">library reference's section
on gettext</a> you get a
purported overview and a bunch of scattered notes on the API, but
nothing that really coherently leads the developer through the concepts
and process of i18n, as the PHP and Ruby folks seem to have. It doesn't
even seem as if buying a book helps much. The books I most often
recommend as Python intros don't seem to touch the subject, and the
reference books seem to go not much deeper than the Python docs. Even
David Mertz's useful <a href="http://gnosis.cx/TPiP/">Text Processing in Python</a>
doesn't cover i18n (this surprised me).</p>
<p>My <a href="/blog/2005-06-14/i18n_for_X">recent foray into i18n</a> actually
straddled Python and XML worlds. For XMLers, there are a few handy
resources:</p>
<ul>
<li>
<a href="http://www-106.ibm.com/developerworks/xml/library/x-localis/">"XML in localisation: A practical
analysis"</a>
</li>
<li>
<a href="http://www-106.ibm.com/developerworks/xml/library/x- localis2/">"XML in localisation: Use XLIFF to translate
documents"</a>
</li>
<li>
<a href="http://www.idealliance.org/papers/dx_xmle04/papers/03-03-01/03-03-01.html">"Beyond Babel - Simplifying Translation with
XML"</a>
</li>
</ul>
<p><a href="http://www.oasis-open.org/committees/xliff/">XLIFF</a> is of particular
interest, but I decided not to use it for i18n in 4Suite/XSLT because I
wanted to base my work on the Python facilities, which are well tested
and based on the de facto standard gettext.</p>
<p>Anyway, am I missing something? Are there all sorts of great resources
out there that would slide Python developers right into the i18n groove?</p>
</content>
</item>
<item>
<title>i18n for XSLT in 4Suite</title>
<link>http://copia.ogbuji.net/blog/2005-06-14/i18n_for_X.html</link>
<content>
<p>
<!-- -->
</p>
<p>Prodded by <a href="http://groups- beta.google.com/group/cherrypy- users/browse_thread/thread/5564bf9f5b845c0f?tvc=2&hl=en">discussion on the CherryPy list</a> I have
implemented and checked in a 4Suite XSLT extension for
internationalization using <a href="http://docs.python.org/lib/module-gettext.html">Python's gettext
facilities</a> for the
underlying support. Here is how it works. Sample XML:</p>
<pre>
<code><doc>
<msg>hello</msg>
<msg>goodbye</msg>
</doc>
</code>
</pre>
<p>Sample XSLT:</p>
<pre>
<code><xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:f="http://xmlns.4suite.org/ext"
extension-element-prefixes="f"
>
<f:setup-translations domain="test"/>
<xsl:template match="msg">
<f:gettext><xsl:apply-templates/></f:gettext>
</xsl:template>
</xsl:stylesheet>
</code>
</pre>
<p>The f:setup-translations and f:gettext extension elements are the key.
The former looks up and installs the domain "test" for use in your XSLT.
Replace it with the domain used by your application. The latter
extension evaluates its body to get a string value, and then looks up
this string in the installed translation.</p>
<p>Assuming you have a test.mo installed in the right place, say that
translates "hello" to "howdy" and "goodbye" to "so long".</p>
<pre>
<code>$ 4xslt test.xml test.xsl
<?xml version="1.0" encoding="UTF-8"?>
howdy
so long
</code>
</pre>
<p>I trimmed some white space for formatting, but you get the idea. The
translations are applied automatically according to your locale.</p>
<p>This operates via Python's gettext facilities which means that it's much
more efficient than, say, the docbook XSLT approach to i18n.</p>
<p>For those who want to give it a whirl, here's a quick step-by-step. All
the needed files are <a href="/files/4suite-l10n">available here on copia</a>.</p>
<p>Create a sandbox locale directory:</p>
<p>mkdir -p /tmp/locale/en_US/LC_MESSAGES/</p>
<p>Copy in the catalog. You may need to create a different catalog for
your own language if your system will not be selecting en_US as locale
(remember that you can hack the locale via the environment)</p>
<p>cp en_US.mo /tmp/locale/en_US/LC_MESSAGES/test.mo</p>
<p>Your locale is probably not en_US. If not, you can:</p>
<ul>
<li>temporarily override your locale to en_us using <code>export LANG=en_US</code>,
or the equivalent command for your shell</li>
<li>create translations for your locale (just two strings to translate).
I use <a href="http://www.poedit.org/">poedit</a>, which is makes dealing with .pos
simple enough. Then replace en_US in all the above instructions with
your own locale and the .mo file you created.</li>
</ul>
<p>Anyway, the f:setup-translations and f:gettext extensions are now
checked into 4Suite. You can either <a href="http://4suite.org/docs/4SuiteCVS.xml">update to current 4Suite
CVS</a>, or just download the one
changed file,
<a href="http://cvs.4suite.org/viewcvs/4Suite/Ft/Xml/Xslt/BuiltInExtElements.py">Ft/Xml/Xslt/BuiltInExtElements.py</a> and copy it into your 4Suite codebase. It works fine as a drop-in to 4Suite 1.0b1.</p>
</content>
</item>
<item>
<title>Rafting the crazy Clear Creek</title>
<link>http://copia.ogbuji.net/blog/2005-06-13/Rafting_th.html</link>
<content>
<p>
<!-- -->
</p>
<p>This weekend's adventure was white water rafting Clear Creek, between
Idaho Springs, CO and Golden. I drive by that creek all the time on
I-70 and Route 6 on the way to and from snowboarding, and I've never
thought of it as a big deal, but we've had an great year for snow and
rain and this is high season, so it turns out that there are class 3
through class 5 rapids to ride. I've been rafting before, but class 3
tops, so I figured it should be a blast, especially since I'm rather
scared of water.</p>
<p>
<img src="/images/rafting-050611-2.jpg" alt="" title="Susan, Noah (hidden), Phillipe, Sean (our guide), Zelda (hidden), Melisse, Dawn and Uche"/>
</p>
<p>I got in a group with 12 of my friends, and we went for a full day trip Saturday.
In the morning, we started off on the class 3s, and had a couple of
incidents in class 4 areas. Melisse fell out of the boat entirely at
one point and Noah and Philippe had to haul her out of the water. And then we
wrapped our raft around a high rock, and had to do some very frantic
"high-side" maneouvers to avoid flipping the entire rig. I lost my
paddle a couple of times, usually catching it on a rock in a middle of a
stroke, but once I ditched it when Dawn lunged to prevent me from
pitching off the boat as it lurched to port, and then I had to lunge to
hold her in when the boat lurched back to starboard.</p>
<p>
<img src="/images/rafting-050611-4.jpg" alt="" title="We all hang on for dear life after a drop and slice (yeah, that's just the class 4 section)"/>
</p>
<p>It was wild fun, though. Our guide Sean started by making us yell "Yee-
haw" after we survived each class 4 section (he's from West Virginia but
he's rafted a lot on the Zambezi). We, being the group we are, decided
that wasn't multi-culti enough and added a French "Hourah" and an Igbo
"Chineke" (literally "GOD ALMIGHTY!") Zelda said "I think 'Chineke' is
the most satisfying yell", and indeed, we all practiced it a good deal.</p>
<p>
<img src="/images/rafting-050611-1.jpg" alt="" title=""/>
</p>
<p>So what, after lunch, do we do after all that? Up it to class 4/5, of
course. Melisse, Maggie and Noah had had enough and bailed, but the
rest of us tackled the bottom, harder part of the course. Amazingly, though we
went through ridiculously huge drops, spins and slides with names like
"tornado turn", "guide ejector", "double knife", etc., we didn't eject
anyone or flip the raft. A bloody good thing because looking at that
churning mess, it would have been a pretty dire situation if someone
ended up in the water. The guide company had a spotter/rescue dude with
a mean hand at his kayak, but even he would have had difficulty getting
to someone through all that.</p>
<p>
<img src="http://photos12.flickr.com/18787810_f3d5521f04.jpg" alt="" title="Phillipe, Dawn, Susan (hidden), Sean (our guide), Zelda, Kenny (hidden) and Uche"/>
</p>
<p>
<img src="http://photos15.flickr.com/18787469_78e9d3e54d.jpg" alt="" title="Down we go..."/>
</p>
<p>I had a serious case of omni-pain (a term, all too familiar to first-
time snowboarders) all that night and the next day from all the hard
paddling and lurching about, but man was that a rush. I'll have to give
it a go again, soon. Especially if we see epic white water like that
again.</p>
<p>Big up to our guide Sean who kept us undrowned, and to <a href="http://www.raftingcolorado.com/clearcreek.html">High side adventures</a>, the guide company.</p>
<p>
<a href="http://www.flickr.com/photos/21902936@N00/">More pictures on Flickr</a>
</p>
</content>
</item>
<item>
<title>Pakistani comedic class terms</title>
<link>http://copia.ogbuji.net/blog/2005-06-13/Pakistani_.html</link>
<content>
<p><!-- -->
Via <a href="http://itre.cis.upenn.edu/~myl/languagelog/archives/002242.html">Language
Log</a> I
came across <a href="http://www.paklinks.com/gs/showthread.php?t=146585">this delightful
conversation</a> on
some whimsical slang terms Pakistanis use to express class and class
affectation. It's a hilarious exchange in its own right, and as a bonus
it makes me think of similar terms in Nigeria (although I'm over a
decade dated in my Naija slang).</p>
<blockquote>
<p>[Mr. Fradia]: ...mummy-daddy refers to someone who is not
[independent] enough etc. Burger is used more for ppl who are stuck up
and wanna-be western types.</p>
</blockquote>
<p>There are many terms for both in naija slang, but it makes me think of
the term (originally Lagosian, I think) <em>aje-butter</em>, which refers to
someone who is a soft, namby-pamby, mama's boy as a result of having
lived too much of the supposed good life in the US, UK, etc. I know too
well: I was viciously set upon as an aje-butter when we moved from
Florida to Enugu, then Owerri, Nigeria in 1980.</p>
<blockquote>
<p>[Zakiii]: I can understand someone wanting to Black/Latino but why
English/American?</p>
<p>[Mr. Fradia (responding]: i suppose they want to be preppie rather
than ghetto [<grin>]</p>
</blockquote>
<p>This exchange intrigued me. As far as I can tell these folks are all
living in Pakistan. I have been getting the sense recently that if US
and UK culture seem to be universally soluble, that lately it's been
urban Hip-Hop or yardie culture that has been filling the aspirational
role for youngsters in developing nations. I was early to Hip-Hop, and
while others in my class wanted to be like Madonna (Travolta was never
really that big there, as I recall), I was aspiring more toward The
Furious Five and the Treacherous Three. It looks like that dissonance
was a microcosm of the trend that has culminated in statements such as
"I can understand someone wanting to Black/Latino but why
English/American?"</p>
<p>But is that a good thing, when it so often involves a gross distortion
of what it really means to be Black or Latino in the US? I suppose
Madonna as picture of America is no less a distortion.</p>
<blockquote>
<p>[Mr. Fradia]: what teh diff between soemone pretending he is james
dean versus someone pretending he is anil kapoor (god knows there are
tons of them in karachi..or were rather) except that the james dean
wanna be probably does not smell as bad.</p>
<p>[ravage]: Those who ape Anil Kapoor are known as arsewipes in our
circle. Dunno if its a generally accepted term though.</p>
</blockquote>
<p>Ouch. I was rolling in the aisles at this point. You can't get laughs
like this on your local corner.</p>
<blockquote>
<p>[ravage]: Mummy Daddy is a catalyst for burgerness, but one may be
mummy daddy without strictly belonging to the latter class. For instance
I have come across mummy-daddy abcds, Mummy Daddy paindoos, and Mummy
Daddy Nawab sahabs.</p>
</blockquote>
<p>And so it goes on through "galli ka londa types", "pindi walay" and
always back to "burgher".</p>
<blockquote>
<p>[sadzzz]: The term Burgher was applied during the period of Dutch rule
to European nationals living in Sri Lanka...
...the so called burghars of india are called "anglos"
[Hum Sa Ho To Samne Aaye (responding)]: Hey in Peshawar we call these
kinda people "tommy" [<big grin>]</p>
</blockquote>
<p>Back in Language Log <a href="http://dsal.uchicago.edu/cgi- bin/ddsa/getobject_? HTML.a.0:329./projects/artfl0/databases/dicos/philologic/hobson/IMAGE/">Hobson Jobson</a>
is quoted as characterizing the term "burgher" (or "burghar") as
follows.</p>
<blockquote>
<p>The Dutch admitted people of mixt descent to a kind of citizenship,
and these people were distinguished by this name from pure natives. The
word now indicates any persons who claim to be of partly European
descent, and is used in the same sense as 'halfcaste' and 'Eurasian' in
India Proper.</p>
</blockquote>
<p>I suppose that the two nuances of "burgher" in this entire thread tend
to converge on the Hindi term "firanghi" (originally from Arabic, as I
recall). And while I'm on "firanghi", I'm sure I'm not the only
language geek that finds it hard to suppress a smile whenever the
"Ferengi" show up on Star Trek TNG. The show was always cited for being
culturally <em>avant-garde</em>, but not so often recognized for being
culturally subversive.</p>
</content>
</item>
<item>
<title>Test post from Drivel</title>
<link>http://copia.ogbuji.net/blog/2005-06-13/Test_post_from_Drivel.html</link>
<content>
<p><!-- -->
This is the first attempt to post from the new <a href="http://www.dropline.net/drivel/">Drivel 2.0</a> weblogging tool and it will probably be the last. For one thing, Drivel doesn't seem to support MetaWeblog, just Blogger 1.0 (I hope PyBlosxom gets Atom API supporrt soon). And then when I started it up for the first time I found myself staring at a "Sending/Receiving...Retrieving journal entries..." app-modal dialog for over three minutes while the progress indicator crawled along. Doesn't exactly fill me with confidence. I've got into such a groove posting via e-mail that I'd have to be wowed from the get-go before I make a switch at this point. Maybe Drivel 3.0?</p>
</content>
</item>
<item>
<title>Onye ma Uche?</title>
<link>http://copia.ogbuji.net/blog/2005-06-13/Onye_ma_Uc.html</link>
<content>
<p><!-- --><a href="http://igbo- blog.igbonet.com/archives/uche_nworah/2005/01/04/the_mythology_of_igbo_names.php">"The Mythology of Igbo Names"</a>, Uche Nworah</p>
<p>One of my many namesakes muses about the name, and other Igbo names.
Interestingly enough, it seems that his name is really just "Uche".
Mine is actually "Uchenna", and it's not very usual for one to be given
the name "Uche"—. This bare form is much more common as a
surname. "Uche" is an Igbo word that approximates English words such as
"will", "desire", "plan", "counsel", "intelligence", "knowledge", etc.
It's sort of <em>sophia</em> meets <em>consilium</em> meets <em>in animo habere</em>.</p>
<p>As Uche Nworah says:</p>
<blockquote>
<p>There is uchenna, uchechukwu, and uchechi which a man or woman can
bear.</p>
</blockquote>
<p>Yes, and there's also "Uchendu" ("thinking about life"/"will for life",
etc.), "Ucheoma" ("good will", "sound mind", etc.), and rare cases
"Ucheji" ("will for yam", metonymic for "will for
wealth") and "Uchegbum" ("Worries won't be the death of me"). Note: if
you're wondering how Igbo packs so much meaning into such small
packages, it's largely because of the tonality of the language. So for
example, the way the "e" is pronounced in "Uchegbum" actually serves two
purposes, one of which is to express the negative sense of the phrase.</p>
<p>"Uchenna" in my experience is by far the most common "Uche" name. I've
probably known a hundred or more with that name. I'd say they're three
quarters male. This makes it interesting that Nworah finds that people
he encounters associate "Uche" with girls rather than boys.</p>
<blockquote>
<p>Igbo names like most other names (non-Igbo) have symbolic meanings.
These different versions of uche all mean the wishes or heart of God, As
some people may think, uchenna does not mean the wishes or heart of the
father of the child, Nna in this sense means God Almighty, if it meant
the former, then feminists would argue and demand for the naming of
children uchenne (the wishes of the mother). While there is no reason
not to, I am yet to encounter nor hear of anybody bearing it, a task for
modernists and feminists then, you may say.</p>
</blockquote>
<p>It is always dangerous to make such generalizations about Igbo names.
They are almost always loose formulations upon which a range of meanings
can be attached, depending on circumstance. My own name is a counter-
example to Nworah's assumption, with "Uchenna" literally meaning the
will of my father, Dr. Ogbuji. My mother wanted me to be a girl, my
father wanted me to be a boy, it turned out as my father wished, so I
was named "Uchenna". Simple as that. I think the fact that you don't
see "Uchenne" as a name has more to do with arbitrary convention than
any specific code attached to "nna". After all, the name "Uchenna"
predates the import of Christianity's single, male god into Igbo
culture. The narrow meaning Nworah cites for "Uchenna" is often
translated into the English name "Godswill", which feels <strong>very</strong> alien
to me as a translation of my name.</p>
<p>Nworah later on mention "Obiageli" and "Ifeoma" (also "Iheoma") as names
reserved for girls, even though there is nothing in their meaning thet
has to do with female sex . Other such examples are "Nkechi" ("god's
very own", "my spirit's own"), "Uloma" ("good house") and
"Nkiruka" ("the future is bright", "the best is yet to come"). There
are numerous examples the other way as well.</p>
<p>The rest of Nworah's article is interesting, but I wouldn't swallow it
all whole. There is a great deal of generalization in it, and I think
in many cases it papers over the huge complexity of Igbo culture whether
in pre-colonial or modern times. He also laments a lack of Igbo
scholarship over naming in our culture, which I think is very
surprising. There is a metric tonne of scholarship on Igbo naming (as
with every other aspect of Igbo culture, it seems). I often feel as if
we have the most analyzed names on the planet, looking only at modern
study. Just a casual poke at Google reveals a lot of material on Igbo
names, and I've seen four or five books on the topic.</p>
<p>BTW, the title of this piece means "Who knows Uche?".</p>
</content>
</item>
<item>
<title>Pythonic SPARQL API over rdflib</title>
<link>http://copia.ogbuji.net/blog/2005-06-12/PythonicRDFQuerying.html</link>
<content>
<p>
<!-- -->
</p>
<p>I've recently been investigating the possiblity of adapting an existing
SPARQL parser/query engine on top of 4RDF - mostly for the eventual
purpose of implementing a <em>sparql-eval</em> Versa extension function - was
pleased to see there has already been some similar work done:</p>
<ul>
<li><a href="http://dev.w3.org/cvsweb/%7Echeckout%7E/2004/PythonLib-IH/Doc/sparqlDesc.html">SPARQL in RDFLib</a> V2 (usage)</li>
<li><a href="http://dev.w3.org/cvsweb/~checkout~/2004/PythonLib-IH/Doc/public/rdflibUtils-module.html">rdflibUtils</a> python
package (the implementation)</li>
</ul>
<p>Although this isn't exactly what I had in mind (the more robust option
would be to write an adaptor for Redland's model
<a href="http://librdf.org/docs/api/model.html">API</a> and execute SPARQL queries
via <a href="http://librdf.org/rasqal">rasqal</a> ), it provides an interesting
pythonic analog to querying RDF.</p>
<p>--Chimezie</p>
</content>
</item>
<item>
<title>New life for PyXPCOM?</title>
<link>http://copia.ogbuji.net/blog/2005-06-12/New_life_f.html</link>
<content>
<p>
<!-- -->
</p>
<p>Way back in the day I wrote about
<a href="http://www.mozilla.org/catalog/architecture/xpcom/pyxpcom/">PyXPCOM</a>, a
means for using Python to script Mozilla browser. and the project had a
lot of promise.</p>
<ul>
<li>
<a href="http://www-106.ibm.com/developerworks/components/library/co- pyxp1.html">"Getting started with PyXPCOM, Part 1: Installation and
Setup"</a>
</li>
<li>
<a href="http://www-106.ibm.com/developerworks/components/library/co- pyxp2.html">"Getting started with PyXPCOM, Part 2: Accessing Objects as a
Client"</a>
</li>
<li>
<a href="http://www-106.ibm.com/developerworks/components/library/co- pyxp3/">"Getting started with PyXPCOM, Part 3: Implementing XPCOM components
in Python"</a>
</li>
</ul>
<p>Mark Hammond was the considerable brains behind PyXPCOM, as well as the
Win32 and .NET APIs through Python, and many other things. Indeed, he
received the 2003 <a href="http://www.activestate.com/Corporate/Communications/Releases/Press1057770084.html">ActiveState Active
Award</a> in Python (the same year Mike Olson and I got one for XSLT). Unfortunately, he has been way below the radar for the bast couple of years, and no one has really picked up the torch on PyXPCOM. The project has been largely languishing for so long that it was quite exciting to see Brendan Eich, keeper of the Mozilla roadmap, including <a href="http://weblogs.mozillazine.org/roadmap/archives/005689.html">"Mozilla 2.0 platform must-haves"</a>:</p>
<blockquote>
<p>8. Python support, perhaps via Mono (if so, along with other
programming languages).</p>
</blockquote>
<p>I'm not sure just how Mono would fit in. Would they build a little CLR
sandbox into Mozilla so that Python.NET code could run?</p>
<p>Anyway, if you care about being able to script Mozilla through Python
(and I think you should), please leave a comment on Brendan's article.
Here's a note about some of the comments already in place on the matter:</p>
<blockquote>
<p>#8 scares me <em>only</em> for the potentially huge installer file. If it
were optional this would be incredibly cool. If it were optional
developers would have a headache.</p>
</blockquote>
<p>I think it should be enough for Mozilla to include the PyXPCOM stubs,
and use the user's own installed Python, which should alleviate this
fear.</p>
<blockquote>
<p>Hmm. What do you think about Parrot (Perl 6) support? Soon, Parrot
will be something like [stable], and the hope is that it will support a
lot of languages, includes Python. I would give it a chance, sounds
good.</p>
<p>From what I've followed about Parrot and its intended use as a basis for
other languages such as Python, I'm not comfortable with such an
approach.</p>
<p>Python support can be provided via Jython which is much older than
the .NET python implementation.</p>
</blockquote>
<p>It seems people want to offer up every VM incarnation on the planet as a
possible base for Mozilla/Python, but I'm spoiled by the potential I saw
through Hammond's work, and I really would want the project to at least
try picking up from there. I was therefore glad to see Brendan's
response:</p>
<blockquote>
<p>We already have Python integrated with XPCOM, thanks to Mark Hammond
and Active State. If nothing better comes along in the way of a unified
runtime, we will fully integrate Mark's work so you can write <script
type="application/x-python"> in XUL.</p>
<p>Whether Python support will be bundled in libxul or not, I'm pushing
for a scheme that lets extension languages be loaded dynamically. So if
you have connectivity or can deploy an extra file, you should be able to
use Python as well as JS from XUL. That's my goal, at least.</p>
<p>See my next entry for the Mozilla 2.0 "managed code" virtual machine
goals that any would-be universal runtime has to meet, or come close to
meeting, to win.</p>
</blockquote>
<p>This sounds just right, and I'll keep my eye open for the follow-up
article he mentions. Another poster mentions:</p>
<blockquote>
<p>I would like to see the ability to talk to Mozilla from outside Python
code. A program I am writing allows importing contacts from various data
sources. I can do Outlook and Evolution easily, but have given up on
Mozilla contacts.</p>
<p>In theory I need to use XPCom with the PyXPCom wrapper but I challenge
anyone to actually get that working on Windows, Linux and Mac and have a
redistributable program. (There are no binaries of PyXPCom for example).</p>
</blockquote>
<p>Yes, PyXPCOM does allow this in theory, and i think Brendan's entire
point is that it's important for Mozilla developers to put in the work
to address the problem stated in the second paragraph.</p>
<p>If you're trying to work with PyXPCOM, keep an eye on the <a href="http://listserv.activestate.com/mailman/listinfo/pyxpcom">mailing
list</a>. Folks
have been posting their problems, and others have been sharing their
recipes for getting PyXPCOM to work, including <a href="http://aspn.activestate.com/ASPN/Mail/Message/pyxpcom/2594190">Matt
Campbell</a> and <a href="http://aspn.activestate.com/ASPN/Mail/Message/pyxpcom/2594298">Scott Robertson</a> and <a href="http://aspn.activestate.com/ASPN/Mail/Message/pyxpcom/2595951">Jean-François Rameau</a>, and
Michael Thornhill
(<a href="http://aspn.activestate.com/ASPN/Mail/Message/pyxpcom/2599348">1</a>
<a href="http://aspn.activestate.com/ASPN/Mail/Message/pyxpcom/2598563">2</a>).</p>
</content>
<pubDate>Mon, 06 Jun 2005 16:47:24 GMT</pubDate>
</item>
<item>
<title>Wizard worries</title>
<link>http://copia.ogbuji.net/blog/2005-06-12/Wizard_wor.html</link>
<content>
<p>
<!-- -->
</p>
<p><a href="http://seanmcgrath.blogspot.com/archives/2005_06_05_seanmcgrath_archive.html#111848442500091926">"Just
because..."</a>—Sean McGrath</p>
<blockquote>
<p>Just because everyone can now create an XML schema because of all the
easy to use GUI tools, doesn't mean that everyone should create XML
schemas.</p>
</blockquote>
<p>Yes indeed. This has been a growing problem for quite a while now as
people give over their XML tasks to bottled genies. As I concluded in
<a href="http://www.adtmag.com/article.asp? id=7213">"The worry about program wizards"</a>:</p>
<blockquote>
<p>In the end, there is no substitute for programmer expertise and
experience. Wizards do have their place, but it seems that their
occasional convenience should not form a backbone consideration for the
development of any technology. In particular, it is dangerous to lead
developments in XML and Web services with a significant purpose of
reviving the great age of wizards.</p>
</blockquote>
<p>Sean again:</p>
<blockquote>
<p>I can use AutoCAD but I wouldn't dream of designing a house because I
don't know enough about houses or building or any of that stuff.</p>
</blockquote>
<p>Very well put, as usual.</p>
</content>
</item>
<item>
<title>Amara equivalents of Mike Kay's XSLT 2.0, XQuery examples</title>
<link>http://copia.ogbuji.net/blog/2005-06-12/Amara_equi.html</link>
<content>
<p>
<!-- -->
</p>
<p>Since <a href="/blog/2005-06-03/XTech__Mik">seeing Mike Kay's presentation at XTech
2005</a> I've been meaning to write up some
<a href="http://uche.ogbuji.net/tech/4Suite/amara/">Amara</a> equivalents to the
examples in the paper, <a href="http://idealliance.org/proceedings/xtech05/papers/02-03-01/">"Comparing XSLT and
XQuery"</a>.
Here they are.</p>
<p>This is not meant to be an advocacy piece, but rather a set of useful
examples. I think the Amara examples tend to be easier to follow for
typical programmers (although they also expose some things I'd like to
improve), but with XSLT and XQuery you get cleaner declarative
semantics, and cross-language support.</p>
<blockquote>
<p>It is by no means always true that an XSLT stylesheet (whether 1.0 or
2.0) is longer than the equivalent in XQuery. Consider the simple task:
create a copy of a document that is identical to the original except
that all NOTE attributes are omitted. Here is an XSLT stylesheet that
does the job. It's a simple variation on the standard identity template
that forms part of every XSLT developer's repertoire:</p>
</blockquote>
<pre>
<code><xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@* except @NOTE"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
</code>
</pre>
<blockquote>
<p>In XQuery, lacking an apply-templates instruction and built-in
template rules, the recursive descent has to be programmed by hand:</p>
</blockquote>
<pre>
<code>declare function local:copy($node as element()) {
element {node-name($node)} {
(@* except @NOTE,
for $c in child::node
return typeswitch($c)
case $e as element() return local:copy($a)
case $t as text() return $t
case $c as comment() return $c
case $p as processing-instruction return $p
}
};
local:copy(/*)
</code>
</pre>
<p>Here is Amara code to do the same thing:</p>
<pre>
<code>def ident_except_note(doc):
for elem in doc.xml_xpath(u'//*[@NOTE]'):
del elem.NOTE
print doc.xml()
</code>
</pre>
<p>Later on in the paper:</p>
<blockquote>
<p>...nearly every FLWOR expression has a direct equivalent in XSLT. For
example, to take a query from the XMark benchmark:</p>
</blockquote>
<pre>
<code>for $b in doc("auction.xml")/site/regions//item
let $k := $b/name
order by $k
return <item name="{$k}">{ $b/location } </item>
</code>
</pre>
<blockquote>
<p>is equivalent to the XSLT code:</p>
</blockquote>
<pre>
<code><xsl:for-each select="doc('auction.xml')/site/regions//item">
<xsl:sort select="name"/>
<item name="{name}"
<xsl:value-of select="location"/>
</item>
</xsl:for-each>
</code>
</pre>
<p>In Amara:</p>
<pre>
<code>def sort_by_name():
doc = binderytools.bind_file('auction.xml')
newdoc = binderytools.create_document()
items = doc.xml_xpath(u'/site/regions//item')
items.sort()
for item in items:
newdoc.xml_append(
newdoc.xml_element(u'item', content=item)
)
newdoc.xml()
</code>
</pre>
<p>This is the first of a couple of examples from <a href="http://www.xml- benchmark.org/">XMark</a>. To understand the examples more fully you might want
to browse the paper, <a href="http://www.cwi.nl/htbin/ins1/publications? request=abstract&key=ScWaKeFlMaCaBu:TR-CWI:01">"The XML Benchmark
Project"</a>. This was the first I'd
heard of XMark, and it seems a pretty useful benchmarking test case,
except that it's very heavy on records-like XML (not much on prosy,
narrative documents with mixed content, significant element order, and
the like). As, such I think it could only ever be a sliver of one half
of any comprehensive benchmarking framework.</p>
<p>I think the main thing this makes me wonder about Amara is whether there
is any way to make the element creation API a bit simpler, but that's
not a new point for me to ponder, and if I can think of anything nicer,
I'll work on it post 1.0.</p>
<p>Kay's paper next takes on more complex example from XMark: "Q9: List the
names of persons an the names of items they bought in Europe". In
database terms this is a joins across person, closed_auction and item
element sets. In XQuery:</p>
<pre>
<code>for $p in doc("auction.xml")/site/people/person
let $a :=
for $t in doc("auction.xml")/site/closed_auctions/closed_auction
let $n := for $t2 in doc("auction.xml")/site/regions/europe/item
where $t/itemref/@item = $t2/@id
return $t2
where $p/@id = $t/buyer/@person
return <item> {$n/name} </item>
return <person name="{$p/name}">{ $a }</person>
</code>
</pre>
<p>Mike Kay's XSLT 2.0 equivalent.</p>
<pre>
<code><xsl:for-each select="doc('auction.xml')/site/people/person">
<xsl:variable name="p" select="."/>
<xsl:variable name="a" as="element(item)*">
<xsl:for-each
select="doc('auction.xml')/site/closed_auctions/closed_auction">
<xsl:variable name="t" select="."/>
<xsl:variable name="n"
select="doc('auction.xml')/site/regions/europe/item
[$t/itemref/@item = @id]"/>
<xsl:if test="$p/@id = $t/buyer/person">
<item><xsl:copy-of select="$n/name"/></item>
</xsl:if>
</xsl:variable>
<person name="{$p/name}">
<xsl:copy-of select="$a"/>
</person>
</xsl:for-each>
</code>
</pre>
<p>In Amara:</p>
<pre>
<code>def closed_auction_items_by_name():
doc = binderytools.bind_file('auction.xml')
newdoc = binderytools.create_document()
#Iterate over each person
for person in doc.xml_xpath(u'/site/people/person'):
#Prepare the wrapper element for each person
person_elem = newdoc.xml_element(
u'person',
attributes={u'name': unicode(person.name)}
)
newdoc.xml_append(person_elem)
#Join to compute all the items this person bought in Europe
items = [ unicode(item.name)
for closed in doc.xml_xpath(u'/site/closed_auctions/closed_auction')
for item in doc.xml_xpath(u'/site/regions/europe/item')
if (item.id == closed.itemref.item
and person.id == closed.buyer.person)
]
#XML chunk with results of join
for item in items:
person_elem.xml_append(
newdoc.xml_element(u'item', content=item)
)
#All done. Print out the resulting document
print newdoc.xml()
</code>
</pre>
<p>I think the central loop in this case is much clearer as a Python list
comprehension than in either the XQuery or XSLT 2.0 case, but I think
Amara suffers a bit from the less literal element creation syntax, and
for the need to "cast" to Unicode. I would like to lay out cases where
casts from bound XML structures to Unicode make sense, so I can get user
feedback and implement accordingly. Kay's final example is as follows.</p>
<blockquote>
<p>The following code, for example, replaces the text see [Kay, 93] with
see <citation><author>Kay</author><year>93</year></citation>.</p>
</blockquote>
<pre>
<code><xsl:analyze-string select="$input" regex="\[(.*),(.*)\]">
<xsl:matching-substring>
<citation>
<author><xsl:value-of select="regex-group(1)"/></author>
<year><xsl:value-of select="regex-group(2)"/></year>
</citation>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</code>
</pre>
<blockquote>
<p>The only way of achieving this transformation using XQuery 1.0 is to
write some fairly convoluted recursive functions.</p>
</blockquote>
<p>Here is the Amara version:</p>
<pre>
<code>import re
PATTERN = re.compile(r'[(.*),(.*)]')
def repl_func(m):
citation = doc.xml_element(u'item')
citation.xml_append(doc.xml_element(u'author', content=m.group (1)))
citation.xml_append(doc.xml_element(u'year', content=m.group (2)))
return citation.xml(omitXmlDeclaration=u'yes')
text = u'see [Kay, 93]'
print PATTERN.subn(repl_func, text)
</code>
</pre>
<p>I think this is very smooth, with the only possible rough patch again
being the output generation syntax.</p>
<p>I should mention that Amara's output syntax isn't really bad. It's just
verbose because of its Python idiom. XQuery and XSLT have the advantage
that you can pretty much write XML in-line into the code (the templating
approach), whereas Python's syntax doesn't allow for this. There has
been a lot of discussion of more literal XML template syntax for Python
and other languages, but I tend to think it's not worth it, even
considering that it would simplify the XML generation syntax of tools
such as Amara. Maybe it would be nice to have a lightweight templating
system that allows you to write XSLT template chunks in-line with Amara
code for data processing, but then, as with most such templating
systems, you run into issues of poor model/presentation separation.
Clearly this is a matter for much more pondering.</p>
</content>
</item>
<item>
<title>Versa by Deconstruction</title>
<link>http://copia.ogbuji.net/blog/2005-06-11/VersaByDeconstruction.html</link>
<content>
<p>
<!-- -->
</p>
<p>I was recently compelled to write an introductory companion to the Versa
<a href="http://copia.ogbuji.net/files/Versa.html">specification</a>. The emphasis for this document
(located <a href="http://copia.ogbuji.net/files/VersaPrimer.html">here</a>) is with readers with little to no experience with
formal language specifications and/or with the RDF data model. It is inspired by it's predecessors (which make good
follow-up material):</p>
<ul>
<li>
<a href="http://www.w3.org/TR/rdf-primer">RDF Primer</a>
</li>
<li>
<a href="http://www.w3.org/2000/10/swap/Primer">N3 Primer</a>
</li>
<li>
<a href="http://www.ilrt.bris.ac.uk/discovery/2004/01/turtle">Turtle Text Syntax</a>
</li>
</ul>
<p>I initially started using Open Office <a href="http://www.openoffice.org/product/writer.html">Writer</a> to compose an Open Office
Document and export it to an HTML document. But I eventually decided to write it in
<a href="http://daringfireball.net/projects/markdown">MarkDown</a> and use <a href="http://err.no/pymarkdown/pymarkdown.py">pymarkdown</a> to
render it to an HTML document <a href="http://copia.ogbuji.net/files/VersaPrimer.html">stored</a> on Copia.</p>
<p>The original MarkDown source is <a href="http://copia.ogbuji.net/files/VersaPrimer.txt">here</a>.</p>
<p>-- Chimezie</p>
</content>
</item>
<item>
<title>Quotīdiē</title>
<link>http://copia.ogbuji.net/blog/2005-06-11/Quot_di_.html</link>
<content>
<p>
<!-- -->
</p>
<blockquote>
<p>Mountain winter defies the order, <br/>
Denies the bonding of elements. <br/>
The wooded snow and the falling wind <br/>
Force the repentance of birdsong. <br/>
Unbroken sun razes gooseflesh, <br/>
Floods snow, and drowns the senses, <br/>
Pitched in broken bottle rainbow battle <br/>
With trenchant ice-cold mountain streams.</p>
</blockquote>
<p>—Uche Ogbuji—from <a href="http://copia.ogbuji.net/files/caramusis/mountain_summer.xml">"Mountain
Summer"</a></p>
<p>Yesterday I happened to be going through some of my verse, and I noticed
the date on which I wrote <a href="http://copia.ogbuji.net/files/caramusis/mountain_summer.xml">"Mountain
Summer"</a>:
11 June 1995. A decade ago to the day, today. Remarkable coincidence.
I wrote it on a road trip with best friend Arild (who just became the
father of twins Thursday), as well as Rachel and Dagmara. A Nigerian,
two Norwegians and a Pole: two guys, two gals, driving across the West.
It was one of those magical trips that serve so many of us as a marker
of our twenties. We were lolling about at Yosemite National Park,
where, even though it was the heart of Summer, we sought and found a few
snowy peaks (we'd already found a touch of Summer Zero by hiking up to
<a href="http://hikingincolorado.org/stmary.html">St. Mary's Glacier</a> in
Colorado earlier on that trip). While up there we saw a mother and
child riding a saucer in the snow, and I was moved to write.</p>
<p>This poem and two others written at about the same time were published
in <em>ELF: Eclectic Literary Forum</em>, a respected but now defunct lit mag,
in early 1996.</p>
<p>In another neat bit of coincidence, for me, today was also a long-
planned white-water rafting trip with a lot of my more recent friends.
I certainly got to sample a good deal of the "trenchant ice-cold
mountain streams". In fact, I got soaked in it. It was a glorious
adventure, and it further reminded me of that other glorious adventure a
decade ago, and the writing to which I was inspired back then.</p>
</content>
</item>
<item>
<title>Word to the Third</title>
<link>http://copia.ogbuji.net/blog/2005-06-10/Word_to_th.html</link>
<content>
<p>
<!-- -->
</p>
<p>No gas face here, gee. Via <a href="http://zephyrfalcon.org/weblog2/arch_e10_00790.html#e793">Hans
Nowak</a> I learn
that one of my favorite groups back in the day now has a fan site that
does them some justice. <a href="http://3rdbass.disgruntledhuman.com/index.htm">3rd
Bass</a> were always fun to
listen to, what with their humor, and the killer hands they always had
on the wheels and boards (The Bomb Squad, Prince Paul, and of course
posse members Sam Sever and Daddy Rich). The endless obsession with
Vanilla Ice wore a bit thin at times, but that's a minor glitch in an
otherwise stellar career. Too bad they couldn't hold it all together
for a few more albums.</p>
<p>Now all someone has to do is come up with a deserving site for the <a href="http://en.wikipedia.org/wiki/Poor_Righteous_Teachers">Poor
Righteous
Teachers</a>, and I
think I'll be all set for my favorites from that period (others such as
Public Enemy and BDP are already well represented on the 'net).</p>
<p>Note: see also Hans' <a href="http://zephyrfalcon.org/weblog2/arch_e10_00790.html#e790">pointer to the history of sampling</a>.</p>
</content>
</item>
<item>
<title>Push vs pull XSLT</title>
<link>http://copia.ogbuji.net/blog/2005-06-10/Push_vs_pu.html</link>
<content>
<p>
<!-- -->
</p>
<p>I often have to explain or refer to this distinction in XSLT programming
style, and I've wanted a sort of all-in-one index of useful writing on
the matter.</p>
<ul>
<li>The discussion I most often refer people to is <a href="http://www.xml.com/pub/a/2000/08/holman/? page=7">"2. Getting started
with XSLT and XPath (cont'd)"</a> by XSL tutor <em>extraordinaire</em> Ken Holman of <a href="http://www.cranesoftwrights.com/">Crane Softwrights
Ltd.</a>. It's part of his long article
<a href="http://www.xml.com/pub/a/2000/08/holman/index.html">"What is XSLT?"</a>.
In this article subsection he starts by discussing the difference
between "explicit" and "implicit" stylesheets. The latter are what the
<a href="http://www.w3.org/TR/xslt">XSLT 1.0 spec</a> calls "literal result element
as root", and it's such a rare pattern in my observation that you might
want to just skip to section 2.2.6, which is the relevant part for push
vs. pull.</li>
<li><a href="http://www.dpawson.co.uk/xsl/sect2/sect21.html">Dave Pawson's XSLT
FAQ</a> has one of the
earliest attempts to gather <a href="http://www.dpawson.co.uk/xsl/sect2/pushpull.html">notes on the push/pull
distinction</a></li>
<li>R. Alexander Milowski
has a nice slide set, <a href="http://www.sims.berkeley.edu/academics/courses/is290-8/s04/lectures/5/dragons/allslides.html">"How Not to Use
XSLT"</a>. There are some other nice nuggest here besides illustration fo the push/pull distinction.</li>
<li>Hack #51 in <a href="http://www.oreilly.com/catalog/xmlhks/"><em>XML Hacks</em></a> is
"Write Push and Pull Stylesheets", and is a decent discussion of the
topic.</li>
<li>I reluctantly include <a href="http://www-106.ibm.com/developerworks/xml/library/x- xdpshpul.html">"XML for Data: XSL style sheets: push or
pull?"</a>, by Kevin Williams in this round-up. I personally am
heavily biased towards push-style XSLT (as are most of my XSLT expert
colleagues) and Kevin seems to be heavily biased towards pull. I think
his reasoning about the readability of pull is quite shallow, and might
make sense to readers when dealing with simplistic transforms, but not
with ones of more typical size and complexity.</li>
</ul>
<p>Way back in 2001 or so I <a href="http://www.biglist.com/lists/xsl- list/archives/200102/msg01119.html">wrote my reasons for preferring push over
pull</a>. Reviewing what I wrote I think it
still covers my point of view:</p>
<blockquote>
<p>Pull is a bad idea from the didactic POV. If one wants people to learn
how to generate HTML and other simple documents as quickly as possible,
there is no doubt that most people with any background in the more
popular computer languages would catch on to pull more quickly than
push.</p>
<p>But it's a false simplicity. Pull is easy when the problem space is
simple, as is the case with so many toy examples necessary when teaching
beginners. But programming difficulty scales at an alarming rate with
the complexity of the problem space. It doesn't take long to run into
real-world examples where pull is nearly impossible to program
correctly.</p>
<p>Push on the other hand, while for some people more difficult at first,
is a much more powerful approach for solving complex problems. And in
almost all cases it is less prone to defect and easier to maintain.</p>
<p>This is not functional programming bigotry for its own sake. Since the
invasion of webmasters and amateurs of scripting, it is easy to forget
that document processing is one of the most delicate areas of inquiry in
computer science, and it has called for elegant solutions from Knuth's
TeX to Clark & co's DSSSL, to XSLT. As Paul Tchistopolskii explained
here. XSLT at its best is about pipes and filters. XSLT's weakest points
are where this model breaks down.</p>
<p>Whether your favorite conceptual module is pipes and filters, tuple
spaces, or just good ol' lambdas, a fundamental understanding of push
techniques is essential if you want to ever do any serious development
in XSLT. New arrivals to this field take short-cuts only to get lost
later. From a purely practical point of view, I think it's important to
teach apply-templates, modes and friends well before for-each, and
bitchin' value-of tricks.</p>
</blockquote>
<p>If anyone wants to incorporate this stuff into Wikipedia, XSLT FAQ, or
whatever, go right ahead: as with almost everything on Copia, it's CC
attribution-sharealike (main task this weekend is to actually assert
that properly in the templates).</p>
</content>
</item>
<item>
<title>Africa and business on Talk of the Nation</title>
<link>http://copia.ogbuji.net/blog/2005-06-09/Africa_and.html</link>
<content>
<p>
<!-- -->
</p>
<p>Good show on <a href="http://www.npr.org/templates/rundowns/rundown.php?prgId=5"><em>Talk of the
Nation</em></a>
Monday: <a href="http://www.npr.org/templates/story/story.php?storyId=4682506">"Seeking Good News in
Africa"</a>.
First of all, I want to say that ToTN is one of my favorite NPR/PRI
shows (I also love <a href="http://www.theworld.org/"><em>The World</em></a> and
<a href="http://marketplace.publicradio.org/"><em>Marketplace</em></a>, and Terry Gross is
usually good on <a href="http://www.whyy.org/freshair/"><em>Fresh Air</em></a>). Neil
Conan is probably the most patient and likable call-in show host in my
limited experience of talk radio.</p>
<p>The blurb for this program segment is:</p>
<blockquote>
<p>The next G8 summit in July will focus on poverty in Africa along with
war, famine and drought. But some are calling for a broader view of
Africa, citing its many qualities that go beyond famine and tragedy. We
discuss how to balance the bad news with the good from a continent in
need.</p>
</blockquote>
<p>It is nice to hear more than just the usual famine/jungle/war/safari
image of sub-Saharan Africa in mainstream media (with nude children as
the inexplicable universal extras). It was a good discussion, and I
highly recommend it. Some of my own reaction...</p>
<p>"Jean" from the Cote d'Ivoire called in to advocate decentralization of
power and local allocation of resources, which is precisely what we
need, but he also admitted the down-side to this as over-simplified
formula. Often encouragement of local policy leads to fractious forces
that cause tension and can lead all the way to Civil war. Most African
countries are unfortunate agglomerations of numerous rival ethnic
groups, and a heavy-handed federalism can be the only way to ensure
unity. On the other hand such centralization is a huge obstacle to
developmental progress. Whoever can figure out a practical solution to
this dilemma (besides the slow, assimilating force of time and
demographics, which is what did the trick in old Europe) will have
earned the Nobel Prize for peace as well as economics.</p>
<p>"James" from Ft. Lauderdale had an all-too-credible tale of attempting
to do business in Nigeria, and being defrauded time and time again, and
permanently swearing off any sort of commerce anywhere in the African
continent (bit of an overreaction, perhaps, but can you really blame
him?). This is the simple reality check. We have a long way to go
(especially in Nigeria) in dealing with fraud and lawlessness. Right
now there is no substitute for local (and wily) guidance if you want to
do business in much of the continent.</p>
<p>The last caller was "Kehinde" (I think: he never himself said his name,
so I had to go by Neil Conan's suspect pronunciation), also a Nigerian.
He trotted out a line that's all too familiar: why are we, the huge
African professional class in diaspora, just sitting here and
complaining about the situation back home rather than going back, using
our local knowledge to help grow business?</p>
<p>Sounds seductive, but I know I speak for many others when I point out
that in 1980, I watched my parents go home on the wings of just such
idealism. My Father was becoming an internationally recognized
Materials Engineer at the time, and figured his calling was to raise
more such high-quality Engineers in Nigerian Universities. Nigeria at
that time was actually considered an emerging economic force, and the
public order and standard of living back in '80 and '81 was very high.
We could have been U.S. citizens, but my parents saw no reason to make
such a move. There were no barriers to coming back to the U.S. anyway,
and we were committed to a future in Nigeria. As experience grew with
numerous political barriers, and as well-connected incompetents took
over local and national affairs, my parents realized that there was no
way to even make an honest difference without outside the oligarch
network. I don't think they ever looked to get rich, but rather to live
a decent middle-class existence, while making the sort of meager
difference that brings about basic professional satisfaction.</p>
<p>They had more local knowledge than I ever will have (I did spent eight
years in school in Nigeria), and I can't imagine that I would be able to
accomplish more than they did. By the time my parents gave up
(alongside numerous other highly talented professionals), and returned
to the U.S. and Europe in the mid-to-late 80s the middle class was
collapsing with the economy, and the desirable destination countries
were already putting up barriers to immigration of Nigerian nationals,
barriers through which we Ogbujis squeaked through (excepting my two
brothers, who were born U.S. citizens). My father immediately got a job
at NASA, where he could immediately feel that he was making a
difference—just not in the way he as a native Nigerian would wish.</p>
<p>I do dearly want to find a way to make a difference back home, and I'm
sure I shall in time, but I really resent being scolded glibly: "go back
to Africa, you prodigal dispersed".</p>
<p>There was one subtle touch in the program that I just <strong>loved</strong>. They played a clip from the film <a href="http://www.africaopenforbusiness.com/"><em>Africa: Open for
Business</em></a> (Flash site). Sounds
like an encouraging film, by the way:</p>
<blockquote>
<p>The world does not see Africa as a business destination, but savvy
investors know Africa offers the best return on direct investment in the
world—yes, in the world.</p>
</blockquote>
<p>In the ToTN clip you hear Adenike Ogunlesi, a fashion entrepreneur
discuss her (happy) experience. She starts out with the gorgeous,
British-inflected English that many of us had pounded into our head in
school (and that I have largely lost to an American accent):</p>
<blockquote>
<p>It was the first time that anyone had marketed children's clothes like
that...actually using Nigerian children. The response...people actually
wanting the "made in Nigeria" garments...</p>
</blockquote>
<p>And then, at this point, she subtly switches to a bit of demotic
Nigerian accent. Not the pidgin language, just the accent that goes
with it. All of us in the hybrid Nigerian/foreign college-educated
class adopt this affectation when expressing a quote from a supposed
Nigerian man-on-the-street.</p>
<blockquote>
<p>"Where is the label. I want the label outside. I want everyone to
know I'm wearing 'Rough and Tumble'"</p>
</blockquote>
<p>I wonder if non-Nigerians would even detect that she changed accent (I
suspect that now that I point it out, they would). If you want to
check, it's about 22m 30s into the program.</p>
<p>It's often the little things that make you homesick.</p>
<p>BTW, for a superlative source for information about practical commerce
in sub-Saharan Africa, see Emeka Okafor's blog <a href="http://timbuktuchronicles.blogspot.com/">"Timbuktu
Chronicles"</a>.</p>
</content>
</item>
<item>
<title>Python community: XIST</title>
<link>http://copia.ogbuji.net/blog/2005-06-09/Python_com.html</link>
<content>
<p>
<!-- -->
</p>
<p>
<a href="http://www.livinglogic.de/Python/xist/">XIST 2.10</a>
</p>
<p><a href="http://www.livinglogic.de/Python/xist/">XIST</a> (simple, free license) is
a very capable package for XML and HTML processing and generation. In
the maintainers' words:</p>
<blockquote>
<p>XIST is an extensible HTML/XML generator written in Python. XIST is
also a DOM parser (built on top of SAX2) with a very simple and
Pythonesque tree API. Every XML element type corresponds to a Python
class, and these Python classes provide a conversion method to transform
the XML tree (e.g. into HTML). XIST can be considered "object oriented XSL".</p>
</blockquote>
<p>I covered it recently in <a href="http://www.xml.com/pub/a/2005/03/16/py-xml.html">"Writing and Reading XML with
XIST"</a>. There are some
API tweaks and bug fixes as well as some test suite infrastructure
changes. The full, long list of changes is given in <a href="http://mail.python.org/pipermail/xml-sig/2005- May/011117.html">Walter Dörwald's
announcement</a>.</p>
</content>
</item>
<item>
<title>Dreaming of a useful HDTV PVR</title>
<link>http://copia.ogbuji.net/blog/2005-06-08/Dreaming_o.html</link>
<content>
<p>
<!-- -->
</p>
<p>I want an HDTV PVR as unencumbered as possible. Ideally, it would sit
by the TV/cable box and communicate closely with my Linux computer.
Failing that, it could be a card in my Linux computer, and I'd just have
to snake a cable from the living room to the computer room.
Unfortunately, this is a much more complex matter than I would have
thought.</p>
<p>The <a href="http://www.pvrblog.com/pvr/2005/05/broadcast_flag_.html">set-back to the broadcast
flag</a> leads me
to think I have more time to buy/build the right device, especially
since <a href="http://blogs.zdnet.com/open-source/?p=310">it's unlikely to be reversed this
year</a>, but I still
don't see any coming solution to the basic technical problems.</p>
<p>The main resource I've checked out is the <a href="http://www.eff.org/broadcastflag/cookbook/">EFF's HDTV-PVR
Cookbook</a>. It makes it
clear that the only real option for me is limited to "terrestrial
broadcast (free over-the-air) digital television using an antenna."
Cable apparently uses encryption. Problem is that almost everything I'm
interested in watching in HD is on a cable channel.</p>
<p>I suppose the fact that Tivo seems to be increasingly terrorized by big
media and scorned by cable and satellite outfits renders unlikely our
ever seeing an HD Tivo that allows capture to a Linux box.</p>
</content>
</item>
<item>
<title>Quotīdiē</title>
<link>http://copia.ogbuji.net/blog/2005-06-08/Quot_di_.html</link>
<content>
<p>
<!-- -->
</p>
<blockquote>
<p>Cause yo, I got the hairsplitting, self-written unbitten style <br/>
That leaves the competition running scared and shaking in their
pants <br/>
You're best to set it off cause, black, it ain't no second chance <br/>
Once I'm open <br/>
All you doing is hoping <br/>
That the Live one <br/>
Will put the mic down, but son, don't try to snatch it after: <br/>
The laughter won't cease from the comparison; <br/>
How dare you, son, <br/>
Step around the booth when I'm on? <br/>
The microphone magician says "poof", you're gone
With the wind. There's no trace of your friends <br/>
Cause you don't know where the beginning ends <br/>
Or where the end begins, <br/>
But you see that's the difference, you get sold, I get paid <br/>
Black I told you, get paid; <br/>
If you're broke I'll have to rain on your parade. <br/>
You belong in Special Ed if you think you Got It Made <br/>
J-Live with the mic is like the chef with the blade <br/>
Cause suckers get sliced and sautéed <br/>
Yeah, you thought your joint was fly but the flight was delayed</p>
</blockquote>
<p>—<a href="http://www.j-livemusic.com/">J-Live</a>—from
"Braggin' Writes"—<a href="http://www.epinions.com/The_Best_Part_-_J-Live/display_~reviews"><em>The Best
Part</em></a></p>
<p>As I demonstrate in Quotīdiē from time to time, contemporary Hip-Hop has
some incredible wordsmiths (most of whom most people have never heard
of, although it's good to see <a href="/blog/2005-06-06/Quot_di_">Common</a>
breaking into the mainstream). When you get to the cream of Hip-Hop
lyricists, it becomes very hard to start working out who's really the
best. How does one compare</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Talib_Kweli">Talib Kweli</a> with <a href="http://en.wikipedia.org/wiki/Big_Boi">Big
Boi</a>?</li>
<li><a href="http://en.wikipedia.org/wiki/Mr._Lif">Mr. Lif</a> with <a href="http://www.hiphop-elements.com/article/read/6/5237/1/">Apani B
Fly</a>?</li>
<li>Evocalist with D-Wyze (both of
<a href="http://brokebboys.blogspot.com/2005/01/10-years-in-lyfe-n- tyme.html">B.U.M.S.</a>)?</li>
<li><a href="http://www.bigdada.com/artist.php?id=33">Ty</a> with
<a href="http://www.epinions.com/The_Sagas_Of_- _Klashnekoff/display_~reviews">Klashnekoff</a>? with <a href="http://en.wikipedia.org/wiki/Roots_manuva">Roots
Manuva</a>?</li>
<li><a href="http://en.wikipedia.org/wiki/Saul_Williams">Saul Williams</a> with
<a href="http://en.wikipedia.org/wiki/Black_Thought">Black Thought</a>?</li>
<li>Chali 2na (of <a href="http://en.wikipedia.org/wiki/Jurassic_5">Jurassic 5</a>)
with <a href="http://en.wikipedia.org/wiki/Skillz">Skillz</a>?</li>
<li><a href="http://www.wordsworthmusic.com/">Wordsworth</a> with <a href="http://en.wikipedia.org/wiki/El-Producto">El-
P</a>?</li>
<li><a href="http://en.wikipedia.org/wiki/Common_%28rapper%29">Common</a> with <a href="http://en.wikipedia.org/wiki/Jean_Grae">Jean
Grae</a>?</li>
<li>Boots (of <a href="http://en.wikipedia.org/wiki/The_Coup">The Coup</a> with <a href="http://en.wikipedia.org/wiki/Mos_Def">Mos
Def</a>?</li>
</ul>
<p>And that's just rappers in English (<a href="http://www.passiweb.com/">Passi</a>,
en français, anyone?), and that's off-head, so I'm definitely
forgetting some people. These folks are all clustered at the acme of
lyrical skill. So where does <a href="http://en.wikipedia.org/wiki/J- live">J-Live</a> fit in? I think it's enough to say that there isn't a better
lyricist than J-Live, in any genre of music. His mastery of words is
just amazing. A friend once marveled at how J-Live worked
"amniocentesis" so effortlessly into "Braggin' Writes", but I maintain
that it's not just J-Live's vocabulary that earns him the laurels (after
all, <a href="http://www.montrealmirror.com/ARCHIVES/2002/091202/music2.html">he is an English
teacher</a>: he should command the language), but more importantly his effortless command of flow, Hip-Hop's prosody. (As the chorus of "Braggin' Writes" states: "everybody's rapping, and only few can flow".)</p>
<p>The "Braggin' Writes" quote above is ample example (and again you have
to hear it to really appreciate it). Just to touch on one point, the
line</p>
<blockquote>
<p>You belong in Special Ed if you think you Got It Made</p>
</blockquote>
<p>Works fine as direct (uncapitalized) statement, but is also a clever
allusion to old school rapper <a href="http://www.amazon.com/exec/obidos/tg/stores/artist/glance/-/39709/ref=m_art_dp/102-3031803-2966543">Special
Ed</a>'s song "I Got it Made".</p>
<blockquote>
<p>I’m your idol, the highest title, <em>numero uno</em> <br/>
I’m not a Puerto Rican, but I’m speaking so that you know <br/>
And understand I got the gift of speech <br/>
And it’s a blessing, so listen to the lesson I preach <br/>
I talk sense condensed into the form of a poem <br/>
Full of knowledge from my toes to the top of my dome <br/>
I’m kinda young--but my tongue speaks maturity <br/>
I’m not a child, I don’t need nothing for security <br/>
I get paid when my record is played
To put it short: I got it made.</p>
</blockquote>
<p>—Special Ed—from "I Got It Made"—<a href="http://www.amazon.com/exec/obidos/tg/detail/-/B000000CER/">"Youngest in
Charge"</a></p>
<p><a href="http://www.j-livemusic.com/tours.php"><img style="float: right; margin: 10px; border: none;" src="http://www.j-livemusic.com/images/bdrs.jpg" title="The Best Damn Rap Tour"/></a>
Last night I went to the <a href="http://www.foxtheater.com/">Fox Theater</a> see
"The Best Damn Rap Tour", headlined by <a href="http://www.j- livemusic.com/">J-Live</a> (although it's mostly in support of <a href="http://en.wikipedia.org/wiki/Vast_Aire">Vast
Aire</a>'s new album <a href="http://www.amazon.com/exec/obidos/tg/detail/-/B0007NOLC8/"><em>The Best
Damn Rap
Show</em></a>). It
was a long line-up of underground hip-hop stars. The kind of MCs and
DJs who rule the ears of rap nerds like me, but who can't seem to get on
first base in the unfriendly game of record label baseball.</p>
<p>Vast Aire is best known as front-man for underground sensation <a href="http://www.definitivejux.net/jukies/cannibal_ox/">Cannibal
Ox</a>, and his
counterpart Vordul Megilah was first up, spitting classic Can Ox in his
trademark cadaver-focus style. Up next was <a href="http://www.definitivejux.net/jukies/c_rayz/">C-Rayz
Walz</a> with tracks from his
new joint <a href="http://www.amazon.com/exec/obidos/ASIN/B0008F10Y2/"><em>Year of the
Beast</em></a>. I've heard
of C-Rayz Walz, but had never listened to him. I definitely have to cop
that album. And the man definitely has more energy than he knows what
to do with: he stomped, stalked, swaggered and staggered all over the
stage, often telling the DJ to cut the track so the crowd could hear his
lunatic lyrics. Vast Aire was up after that, and again based on his set
I'll have to cop his new album (The month's salary goes all to music, at
this rate).</p>
<p><img style="float: left; margin: 10px; border: none;" src="http://upload.wikimedia.org/wikipedia/en/thumb/e/eb/180px- Jlive.jpg" title="J-Live meditates"/>
The crowd was a bit slow to get into the mood, which is unusual for
Boulder. When J-Live came out to start his set, most folks in the front
row had gone off to get drinks, or to hang with the earlier acts, who
all got off stage to mingle. It only took the duration of the first
song before it became a proper audience for J-Live, though. He did his
amazing thing, rocking "MC", "Like this Anna", and "Satisfied?" to the
jumping delight of the crowd (and me), there was an impromptu
competition in the front row with folks trying to rap along to "One for
the Griot".
But the highlight of the night was when J-Live did something I've only
ever seen him do (I saw him do this trick once before (with Chime and
Davina) when he came to CU with Talib Kweli and others for a free
<img style="float: right; margin: 10px; border: none;" src="http://www.dustygroove.com/images/products/j/jlive~~~~~~_bestpart~_101b.jpg" title="The Best Part"/>
concert). He rapped "Braggin' Writes" while dee-jaying the track <strong>at
the same time</strong> (for the track he used Nas's "Thief's Theme", only the
most banging beat of the new millennium), which hardly seems possible.
And he didn't just prod occasionally at the wheels of steel: no, he was
scratching and cutting almost throughout the song, without missing a
beat in his rapping. Amazing!</p>
<p>I've already mentioned how down to earth all the acts were. J-Live was
manning his own merchandise stand before the show, lounging in the same
jeans, white tee and open red and white button-down flannel shirt in
which he'd later perform. I asked him about "The Best Part", his first
album, which never saw its way to stores because of record label
troubles, and bought the last copy he'd brought along (duh! I should
have had him autograph it). I considered asking him who his favorite
poet was, but I didn't want to bug him before his performance.</p>
<p><img style="float: right; margin: 10px; border: none;" src="http://www.allhiphop.com/CelebImages/feat_vastaire.gif" title="Vast Aire"/>
One more quote to leave off with. This one Vast Aire's from an
<a href="http://www.allhiphop.com/features/?ID=1035">AllHipHop.com interview</a>.
He was asked whether he disliked that most of his fan base is white.</p>
<blockquote>
<p>I don't even care about all that racism, it's all bulls..t. It’s a
trick! It’s a demonic trick and it's disgusting. It separates people.
Come on, remember Blondie? F..k Eminem, look at Blondie. F..k Vanilla
Ice and Snow, look at Rick Rubin. When you wanna think about White
people in Hip-Hop, think about the Beastie Boys. White people have
already proven themselves in this. There should be way more White
rappers, and way more woman in Hip-Hop today. But you have the powers
that be. Hip-Hop is dominated by Nubian and Latino men. Where are the
women at? All the women that are out now are damn near veterans, and
that is sad. So I don't like any of that. I grew up in uptown New York.
I grew up with a bunch of Latin and Nubian kids. Eventually, we got cool
with two White kids, this kid Ralphie and his cousin, which was my first
experience. And ever since that day, White people were more than
Superman to me. At first, a White person is Superman, He-Man, a cop, or
a bus driver. At first, you don't know a White kid. You have to meet and
get cool with one, meet their family, and the next thing you know you
have a friend. You are not looking at color then. And that is what
happened to me. That kid was poor, that is the color we were. F..k all
this racist bulls..t, we are the same color. So technically, we bonded
because we were in the same class. It's class that truly brought us
together. And I imagine the same thing happens to White people. A Black
person has to be more than just Mike Tyson or Michael Jackson. You have
to meet them, and invest time in them.</p>
</blockquote>
<p><strong>Co-sign</strong> (bowdlerization by AllHipHop.com, not me). Interesting to mention that in my list of top lyricists
above there is one white guy (EL-P) and two women (Apani B. Fly and Jean
Grae). Two other women (Bahamadia and Rah Diggah) are near misses. I
don't go as far as to say "fuck Eminem": he's very talented, but he's
just not in the same class as the folks I mentioned. It's a very tall
barrier to be a top Hip-Hop lyricist.</p>
</content>
</item>
<item>
<title>"Ooh! Free iPod if I shoot the Duck? It's my lucky day!"</title>
<link>http://copia.ogbuji.net/blog/2005-06-07/_Ooh___Fre.html</link>
<content>
<p>
<!-- -->
</p>
<p>My favorite strip is often politically controversial, but yesterday it
was just plain funny in a Web-age-morbid sort of way.</p>
<p>
<img src="http://images.ucomics.com/comics/bo/2005/bo050606.gif" alt="" title="Ooh! Free iPod if I shoot the Duck? It's my lucky day!"/>
</p>
<p>There's a <a href="http://www.ucomics.com/boondocks/2005/06/07/">follow-up
today</a>. Unfortunately a case of funnier-to-imagine-the-conclusion-than-to-have-it-shown.</p>
</content>
</item>
<item>
<title>First lady megrims</title>
<link>http://copia.ogbuji.net/blog/2005-06-07/First_lady.html</link>
<content>
<p>
<!-- -->
</p>
<p>Nancy Reagan's megrim was drugs, especially child drug use.</p>
<p>Hillary Clinton's obsession was everything (well, hey, that's why she
went into office for dolo: so she could wrap up the bits of everything
she'd left unaddressed as Dame the First).</p>
<p>Laura Bush's are the vagaries of peril that confront American boys
(WTF?). I guess there's also using her intelligence as distraction from
her husband's nescience.</p>
<p>What was Barabara Bush's? I can't think of anything.</p>
</content>
</item>
<item>
<title>Quotīdiē</title>
<link>http://copia.ogbuji.net/blog/2005-06-07/Quot_di_.html</link>
<content>
<p>
<!-- -->
</p>
<blockquote>
<p>The only map is the map of the bear. <br/>
Your best hope is to follow it closely, <br/>
Closer than dogs. It's engraved with your spoor, <br/>
You wake in the night to find it partly <br/>
Charred by the dying fire. The only</p>
<p>Map is the map of the bear. Follow <br/>
It closer than dogs. Your best hope is <br/>
To read the part engraved below <br/>
The surface of the fire. Sleepless, <br/>
You move by night. The only map is</p>
<p>The map of the bear. Dogs know, <br/>
That's why they follow with no hope <br/>
The dying spoor. You're passing through <br/>
Fire, you've passed through sleep, <br/>
Now the only map is the map</p>
<p>Of the bear. Now hope gives up <br/>
Its secrets, now you follow where <br/>
Dogs won't go, even in sleep. <br/>
Above, the route's engraved on fire. <br/>
The only map is the map of the bear.</p>
</blockquote>
<p>—<a href="http://www.opus40.org/tadrichards/">Tad Richards</a>—<a href="http://www.fieralingue.it/corner.php? pa=printpage&pid=314">"The
Map of the Bear"</a></p>
<p><a href="http://www.saint- andre.com/blog/2005-06.html#2005-06-01T14:49">Peter Saint-Andre mentioned</a> the <a href="http://wiz.cath.vt.edu/mailman/listinfo/new-poetry">New Poetry discussion
list</a>, which he
learned about in an <a href="/blog/2005-05-30/Quot_di_">earlier Quotīdiē</a>. I'd
been living in a bit of a shell regarding contemporary poetry before I
joined that list. (Upon arriving in the U.S. in 1989 I looked around,
aghast at mainstream verse, and retreated quickly to past classics).
The list has been a good way to bring energy back to my study of poetry,
and to keep in touch with contemporary work. It turns out that there
are some very good poets on that list, though I didn't recognize them by
name, because of my ignorance of the contemporary scene. I do recognize
the quality of their work, and today's Quotīdiē is a piece by a regular
on the list, <a href="http://www.opus40.org/tadrichards/">Tad Richards</a>. In
addition to being posted on the list, it was also hosted on <a href="http://www.fieralingue.it/modules.php?name=poetshome">The Poets'
Corner</a> by <a href="http://annyballardini.blogspot.com/">Anny
Ballardini</a>, another regular. The
list is a very rich find. I'll later post links to other good poems
posted to the list.</p>
<p>Refrain-like verse forms are very popular in modern poetry, from
Villanelle to Pantoum and so on. (I somtimes call these poetic fugues).
It seems that in the past couple of decades poets have become especially
skilled with the use of partial refrains. "The Map of the Bear" teases
out a sense of desultory restlessness with its partial refrains. The
meter is accentual, with four accents per line. This is a very
versatile framework, but I've always found it easiest to hear gothic
tones in it, and in this poem, that feeling is particularly apt.
Another poem that struck me immediately because of its partial refrains
is Dana Gioia's <a href="http://www.danagioia.net/poems/countrywife.htm">"The Country
Wife"</a>.</p>
<blockquote>
<p>She makes her way through the dark trees <br/>
Down to the lake to be alone. <br/>
Following their voices on the breeze, <br/>
She makes her way. Through the dark trees <br/>
The distant stars are all she sees. <br/>
They cannot light the way she's gone. <br/>
She makes her way through the dark trees <br/>
Down to the lake to be alone.</p>
</blockquote>
<p>—<a href="http://www.danagioia.net/">Dana Gioia</a>—from <a href="http://www.danagioia.net/poems/countrywife.htm">"The Country
Wife"</a></p>
<p>Peter later <a href="http://www.saint- andre.com/blog/2005-06.html#2005-06-01T21:53">followed up</a> on my observations on how
poetry slows down perceptions, leading to richer understanding and
appreciation.</p>
<blockquote>
<p>The other day, Uche argued for the continued relevance -- indeed, the
increased importance -- of poetry in today's fast-paced times, since the
concentrated and often difficult nature of poetic language forces the
reader to slow down. Yet (as Uche knows) it is more than just diction:
it is also the meter (or, more broadly, the rhythm) that induces a kind
of slow time when one reads a poem. Poetry is a temporal art in much the
same way music is -- and in one respect, a poem enforces slow time even
more viscerally than a piece of music does because usually you perform
the poem (by reading it silently or aloud to yourself) rather than
having it performed for you at a poetry reading or by means of a
recording. The post-modernists would call this co-creating the work, and
for once they would be right!</p>
</blockquote>
<p>Peter is right that rhythm is the primary tool for the slowing and
enriching effects of poetry. I also agree that meter is the most
established form of rhythm, and that it's harder for non-metrical rhythm
to bring this richness. Peter is also right to reiterate that Poetry is
a mere shadow without its performance (whether it's the reader sounding
out the poem in his head, or in public performance). With all that in
mind, I quite consider "The Map of the Bear" an example of how a poem
can work such slow enrichment outside classical framework. Accentual
meter is quite respectably meter for me, and the partial refrain,
especially when read aloud, serves to deepen the incantatory mood. "The
Country Wife" is also accentual. There is much more of an iambic
tetrameter basis, as one would expect from a formalist such as Gioia,
but it is still variant enough to be more accentual than accentual-
syllabic, and I think this suits that poem well. Interesting, this
juxtaposition of accentual meter and partial refrain—It makes me
think of fugue, a baroque musical form, not just because of the echoing
phrases (to go with the echoing melodies in fugue), but also because of
the overstatement (in a positive sense) suggested by the four-stress
line. It is an approach I shall have to explore more fully in my own
verse.</p>
<p>A final note of interest is that "The Map of the Bear" originated from a
misreading of a trite phrase. In Richards' own words:</p>
<blockquote>
<p>I do have a poem based on a misread statement that was sorta
interesting. Reading an article about a performance artist, I came
across the statement that she explored a territory where the only map is
the map of the bear.</p>
<p>I thought this was one of the most fascinating ideas I'd ever read. Then I looked again and saw that it actually said she explored a territory where the only map is the map of the heart. This was a territory, I realized, which held no interest whatever for me. But what about that territory where the only map is the map of the bear? I wanted to know more about that...a territory where the wilderness mapped itself. I had been deeply moved by Kurosawa's great movie, Dersu Uzala, where mapmaking becomes a symbol for both exploration and limitation, and I started to feel that I had to know more about the territory mapped only by the bear. This was the poem that came of it.</p>
</blockquote>
</content>
</item>
<item>
<title>What's up with the dc:type value recommendations?</title>
<link>http://copia.ogbuji.net/blog/2005-06-06/What_s_up_.html</link>
<content>
<p>
<!-- -->
</p>
<p>In my work at Sun we've been looking for better ways to rationalize
content purpose metadata for management of aggregated XML records. I
had occasion to look at the <a href="http://dublincore.org/documents/dcmi-type-vocabulary/">DCMI Type Vocabulary. DCMI
Recommendation</a>.
This is an ancient document, and was not sure what to make of it. One
thing for sure is that we can't use it, or anything like it. We'll have
to come up with our own values. I do wonder about the rationale behind
that list. It seems quite the hotch-potch:</p>
<ul>
<li>http://purl.org/dc/dcmitype/Collection</li>
<li>http://purl.org/dc/dcmitype/Dataset</li>
<li>http://purl.org/dc/dcmitype/Event</li>
<li>http://purl.org/dc/dcmitype/Image</li>
<li>http://purl.org/dc/dcmitype/InteractiveResource</li>
<li>http://purl.org/dc/dcmitype/MovingImage</li>
<li>http://purl.org/dc/dcmitype/PhysicalObject</li>
<li>http://purl.org/dc/dcmitype/Service</li>
<li>http://purl.org/dc/dcmitype/Software</li>
<li>http://purl.org/dc/dcmitype/Sound</li>
<li>http://purl.org/dc/dcmitype/Image</li>
<li>http://purl.org/dc/dcmitype/Text</li>
</ul>
<p>Now the <a href="http://dublincore.org/documents/dces/#type">definition of
dc:type</a> is: "The nature or
genre of the content of the resource". I can see how one could fit
parts of the above list into this definition, but when I read this
definition before seeing the list, I assumed I'd see things such as
"poem", "short story", "essay", "news report", etc. From the business
point of view, I'd be looking for "brochure", "white paper", "ad copy",
"memo", etc. I tend to think this would be more generally useful (if
<strong>much</strong> harder to standardize). Maybe ease of standardization was the
rationale for the above? But even if so, it seems an odd mix. I've run
out of time for now to ponder the matter further (gotta get back to that
client work), but do I wonder whether there are recommendations for
dc:type that more closely meet my expectations.</p>
</content>
</item>
<item>
<title>Quotīdiē</title>
<link>http://copia.ogbuji.net/blog/2005-06-06/Quot_di_.html</link>
<content>
<p>
<!-- -->
</p>
<blockquote>
<p>The court awaited <br/>
As the foreman got the verdict from the bailiff, <br/>
Emotional outbursts, tears and smeared makeup. <br/>
They stated, he was guilty on all charges. <br/>
She's shaking like she took it the hardest— <br/>
A spin artist, she brought her face up laughing. <br/>
That's when the prosecutor realized what happened— <br/>
All that speaking her mind testifying and crying, <br/>
When this bitch did the crime—the queenpin...</p>
</blockquote>
<p>—<a href="http://www.common-music.com/">Common</a>—from
"Testify"—
<a href="http://www.amazon.com/exec/obidos/ASIN/B0009FGWIK"><em>BE</em></a></p>
<p><img style="float: left; margin: 10px; border: none;" src="http://cms.gffn.com/images/local/100/B0009FGWIK.01._SCLZZZZZZZ_.jpg" title="BE album cover"/>
Common is one of my favorite musicians, and so I'm really pleased to see
his new baby, <a href="http://www.amazon.com/exec/obidos/ASIN/B0009FGWIK"><em>BE</em></a>
emerge to commercial success (#2 on the overall album charts in the week
of release) as well as critical praise. I <a href="/blog/2005-06-04/Good_times">was in Amsterdam the week
<em>BE</em> came out</a>, and I was too busy to look
for it there. I did see it at the Heathrow HMV on my way back home, but
it was crazy-dear (excuse me? 13.00?). I bought <a href="http://www.amazon.co.uk/exec/obidos/ASIN/B0007S682Y">Blak Twang's
latest (<em>The Rotton
Club</em>)</a> at U.K.
prices while there (can't get that ish in the US) but Common could wait
12 hours. I'm back and I've been listening to <em>BE</em> on heavy rotation for a week now.</p>
<p>A lot of fans have expressed relief that Common has retreated to home
base. With Kanye West replacing former gurus No I.D. and Doug Infinite,
BE feels like the extrapolation of the straight line from <a href="http://www.amazon.com/exec/obidos/tg/detail/-/B000003BZO/"><em>One Day
It'll All Make
Sense</em></a>
through <a href="http://www.amazon.com/exec/obidos/tg/detail/-/B00004S51H/"><em>Like Water for
Chocolate</em></a>,
and <em>Electric Circus</em> ends up stranded as an outlier. Common has
confirmed that he has turned his back on the crazy next ish of <em>EC</em>.
From <a href="http://www.allhiphop.com/features/?ID=1083">a recent AllHipHop.com interview</a>:</p>
<blockquote>
<p><strong>AllHipHop.com</strong>: How would you rate your albums from least favorite
to greatest?</p>
<p><strong>Common</strong>: Well my favorite albums would have to be Like Water for
Chocolate and BE, my second is Resurrection, and my third is One Day It
Will All Make Sense and then, Can I Borrow a Dollar, and Electric Circus
is my least.</p>
</blockquote>
<p>This is very sad, and Common has taken a <strong>bad</strong> knock on the head when
he rates <em>EC</em> lower than <em>Can I Borrow a Dollar</em> (the only Common album
even I won't buy, not even used). I don't know whether to be happy that
Common has released a tight album with <em>BE</em> or bitter that he has
abandoned the risk that was so fertile in <em>EC</em>. I had intended this
article to be a review of <em>BE</em>, but I couldn't help its turning into a
sort of measuring of <em>BE</em> against <em>EC</em>. I've already <a href="/blog/2005-04-29/Quotidie">rhapsodized about
<em>EC</em> here</a> so no doubt where I stand on that
album. <em>BE</em> is a major swerve from <em>EC</em>.</p>
<p>Don't get me wrong. I love <em>BE</em>. It is a lot smoother than <em>EC</em>. It's
much more focused. We've seen this pattern before. With
<a href="http://www.amazon.com/exec/obidos/tg/detail/-/B00007B9DP/"><em>Phrenology</em></a> The Roots broke their bounds and put us on some next shit. After the same mixed critical and fan reaction (though much less bloodthirsty than the reaction to <em>EC</em>), the Roots backed off from the experimental and produced an extremely focused and cohesive <a href="http://www.amazon.com/exec/obidos/tg/detail/-/B0002A2WAY/"><em>The Tipping Point</em></a>. <em>BE</em> is as tight, coherent and cohesive. The sonic texture is pure Chi-Town soul from track 1 through 11. Chi-Town soul is rich and diverse enough the this never leaves your ears tired, and each song has an ingenious little touch that sets it apart from the rest (an example apropos of the main quote is the plaintive battology of the sample in "Testify"). In contrast <em>EC</em> was all over the place sonically, and in one place, "Jimi was a Rock Star" was so far out to the left that it falls off the face of the Earth (and we don't miss it). <em>EC</em> has that one fast-forward moment, and <em>BE</em> has none, so <em>BE</em> is better, right?</p>
<p><img style="float: left; margin: 10px; border: none;" src="http://www.mcarecords.com/MCAImageUpload/1232538-Full.jpg" title="Common fly style"/>
In thinking about this all I can think is: where in <em>BE</em> is the
"Aquarius" (Common spits hard about his craft and definitely non-sullen
art); where is the "Electric! Wire! Hustle! Flower!" (Common zaps us
with shock therapy using the sharp honesty of his internal <em>paysage
moralisé</em>); where is the "New Wave" (Common turns this exploration to
the world at large, with the help of spaced out Moog synth and the
marvelously affecting crooning by Laetitia Sadier of StereoLab); where
is the "I am Music" (Common, still bent on exploration, journeys on all
the many axes of 20th century popular music history). There is no one
track on <em>BE</em> quite as powerful as these. In achieving greater
consistency, Common has also shaved off the peaks a bit. He takes fewer
risks, and it shows in the more modest rewards. Continuing with the
Roots comparison, even though <em>The Tipping Point</em> is much less
experimental than <em>Phrenology</em>, The Roots retain in the former a lot
more of the edge that they bled into the latter. See the madhouse
genius Sly Stone mash-up "Everybody is a Star" for easy evidence.</p>
<p>One of the things that fascinates me about <em>EC</em> is that Common drops a
lot of easter eggs in the lyrics. The following lines are from
"Aquarius".</p>
<blockquote>
<p>Playing with yourself, thinking the game is just wealth— <br/>
Hot for a minute, watch your name just melt. <br/>
Same spot where its joyous is where the pain is felt <br/>
As you build and destroy yo remain yourself <br/>
They say I'm slept on, now I'm bucking in dreams, <br/>
And rhyme with the mind of a hustler's schemes</p>
</blockquote>
<p>Listening to that just gives me a <em>frisson</em>. You feel everything Common
is saying in the very fabric of the song. Indeed, you feel how Common
has just summarized the entire creative impetus behind <em>EC</em>. He wants to
build a lasting edifice in art, like Horace, and he doesn't care if the
present audience writes him off as a day-dreamer. Common writes into
<em>EC</em> a lot of other such apt lines to justify his eclecticism. From
"New Wave":</p>
<blockquote>
<p>How could a nigga be so scared of change <br/>
That's what you hustle for in front of currency exchange <br/>
Ya'll rich, we could beef curry in the game <br/>
out your mouth: Ain't nobody hurrying my name <br/>
[...]
Seen hype become fame against the grain become main- <br/>
stream. It all seems mundane in the scope of thangs.</p>
</blockquote>
<p>I could go on with these examples.</p>
<p>He is a great deal less introspective on <em>BE</em>, and he calls this fact out loudly.</p>
<blockquote>
<p>I rap with the passion of Christ, nigga cross me <br/>
Took it outer space and niggas thought they'd lost me <br/>
I'm back like a chiropract with b-boy survival rap <br/>
This ain't '94 Joe we can't go back <br/>
The game need a makeover <br/>
My man retired, I'm a take over</p>
</blockquote>
<p>—from "Chi-City"</p>
<p><img style="float: right; margin: 10px; border: none;" src="http://www.mcarecords.com/MCAImageUpload/1179385-Full.jpg" title="The Common mind"/>
He has come out of his
dreams in <em>BE</em>, and how he has more material aspirations, as the reference to Jay-Z in the last line hints. And even though I'm rocking out to it f'sure, I just feel
that I'm not experiencing the same level of magic as with <em>EC</em>, which certainly "took it outer space" but didn't lose everyone. <em>EC</em> brings
me to mind of Gerald Manley Hopkins' poems. What would Hopkins have
accomplished if he had the time and encouragement to work on sprung
rhythm further? We got some superb poems out of his oeuvre, but nothing
that quite matched up to Hopkins' claims for sprung rhythm. You get the
sense that he could have built it into a new major branch of metrics in
English. I feel that if Common had the time and encouragement to build
on <em>EC</em>'s approach, we would have not just one superb album, but an
entirely new subgenre of hip-hop. Do I exaggerate? The reaction of
people whose opinions I respect, to whom I play <em>EC</em> bears me out. I
think being a long-time Common fan can give you a touch of tunnel vision
when you first listen to it. A fresh ear recognizes the originality and
genius.</p>
<p>Anyway, <em>LWfC</em> and <em>EC</em> are still my favorite Common albums, with <em>BE</em>
close behind, and then <em>SiWaMS</em> followed by <em>Resurrection</em> (although the
latter contains one of the all-time Hip-Hop classics in "I Used to Love
H.E.R."). Despite Common's disappointing ranking of <em>EC</em> in the
interview I mentioned, he also shows that deep down, he knows better.</p>
<blockquote>
<p><strong>AllHipHop.com</strong>: I know a lot of critics weren't feeling Electric
Circus, but I liked the fact that it was very artistic and pushed your
creative ability as an MC. Overall though, what has changed between
Electric Circus and BE to cause such a distinction between the two
albums?</p>
<p><strong>Common</strong>: Exactly. I think Electric Circus was just a part of my
evolution and my experimentation as an artist and it was kind of like
since this was my fifth album I was trying to continue to grow and
elevate in what I was doing. To me what changed the most is that I got
more in tune with myself and more grounded. Electric Circus was me and I
don't apologize for it, it is was it is and it's something I created, so
it's a piece of my art. With this album I did something simple and raw
because it felt good to me at this time. When I did Electric Circus I
wanted to go way out there because I was tired of how Hip-Hop was
sounding, that's why I did it like that. But with BE, I actually like
some of the Hip-Hop now, but besides that I am more hungry on the
creative side.</p>
</blockquote>
<p>We were all tired of how Hip-Hop was sounding. We all needed <em>EC</em>.
Don't you ever forget that, Common.</p>
<blockquote>
<p><strong>AllHipHop.com</strong>: How do you think Electric Circus will be treated in
time?</p>
<p><strong>Common</strong>: It's hard for me to say how it will be looked upon, but I hope
that people will look back and say, “Man, this was an innovative album.”
I feel that as an artists you should be able to paint a picture, so that
even if people aren't feeling it now, they can go back with a different
perspective later on and feel what you were saying because they are at a
different point in their life. That's my goal when I create music.</p>
</blockquote>
<p>Right. Right. And it wouldn't be our beloved Common if he didn't say:</p>
<blockquote>
<p><strong>AllHipHop.com</strong>: Do sales play into your satisfaction of the albums?</p>
<p><strong>Common</strong>: People always looked at me like, “Aw man, you don't care about
record sales.” I do want to sell records but I won't give up what I
believe in, or take away from the integrity of my music to sell. I'm
worth more than that.</p>
</blockquote>
<p><img style="float: right; margin: 10px; border: none;" src="http://www.mcarecords.com/MCAImageUpload/1179362-Full.jpg" title="Eat at Common's"/>
But I'm determined to at least close with a bit of appraisal of <em>BE</em>.
The master quote above is from "Testify", my favorite track. I
<strong>cannot</strong> listen to this song as background music. I always have to
stop and concentrate on listening. I already mentioned the foundational
sample, and within that frame lies Common's softly-told story. You're
all into the tragedy of this lady's predicament, until the sharply
executed twist at the end, when you realize that she's sold her man off
to prison. It's brilliantly done. Other favorites for me are "The
Corner", "GO!", "Chi-City", "Real People" and "They Say", which I've
heard somewhere else before (I can't remember where right now). And oh
yeah, Pops is back in "It's your World". I just love Pops. That strong
and dignified voice says so much about the nurturing of Common's agile
mind. If you're a Hip-Hop fan, or a Soul fan you shouldn't be sleeping
on <em>BE</em>, but then again, based on those sales figures, you probably
aren't.</p>
</content>
</item>
<item>
<title>Dare on problems with mainstream Web services</title>
<link>http://copia.ogbuji.net/blog/2005-06-04/Dare_on_pr.html</link>
<content>
<p>
<!-- -->
</p>
<p>
<a href="http://www.25hoursaday.com/weblog/PermaLink.aspx? guid=f1733c70-14fd-47bb-99ad-20dba2686de7">"Can XML Web Services Move Beyond the Twin Burdens of XSD and
WSDL?"</a>
<a href="http://www.25hoursaday.com/weblog/PermaLink.aspx? guid=e0788af8-2e1c-4c07-a5bb-5f54f9b7fec3">"There is no Substitute for Good
Documentation"</a>
</p>
<p>Dare discusses how "XML Web Services and how the technologies have been
handicapped by the complexities of the W3C's XML Schema Definition
Language (XSD) and Microsoft & IBM's Web Service Definition Language
(WSDL)." Yes, some of us have been complaining about this for years.
Dare has always helped point out where his experience corroborates or
counters some of our warnings. His perspective is extremely valuable
because he has thousands of customers that he just needs to find a way
to make happy. From that perspective, it looks gloomier than ever for
mainstream Web services.</p>
<blockquote>
<p>These are definitely interesting times for XML Web Services. The
complexity of the technologies that form the foundations of SOA is now
pretty much acknowledged across the industry. At the same time more and
more people are taking the idea of building web services using REST very
seriously. I suspect that there might be an opportunity here for
Microsoft to miss the boat if we aren't careful.</p>
</blockquote>
<p>Well, at least MS has one prominent voice trying to prevent that, but it
still has several other prominent voices lubricated with Web services
kool-aid, one of which commented on Dare's posting (although I'm not
sure I can make out just what he was saying). In another comment, <a href="http://www.megginson.com/blogs/quoderat/">Dave
Megginson</a>, always a good one
to listen to, said:</p>
<blockquote>
<p>I'm still puzzled that so many people missed the simplest lesson of
XML's success: we did away with mandatory DTDs, and suddenly everyone
was excited about using markup. Perhaps the WS-* people could apply the
same idea to WSDL, XSD, and friends.</p>
</blockquote>
<p>Dare quotes from <a href="http://pluralsight.com/blogs/tewald/default.aspx">Tim
Ewald</a>:</p>
<blockquote>
<p>In many cases, developers start using POX over HTTP to build systems.
When people want to re-purpose those services, its hard because they
don't have a lot of information about what message formats and exchange
patterns they support. In many cases there is no documentation for that,
other than the code and, in that sense, those systems are closed. XSD
and WSDL help open them up by providing metadata about what those
services do. In some cases that metadata is also useful for finding
services that do interesting things. For many of our customers, that is
the reason they are migrating from existing POX over HTTP systems to
SOAP-based Web services.</p>
</blockquote>
<p>I'm surprised at the idea that many of anyone's customers have existing
Plain ol' XML (POX) over HTTP systems, and very suspicious of the claim
that people who did have one in place and working are looking to spend a
lot of resources migrating to SOAP/WSDL. Dare responds:</p>
<blockquote>
<p>...I wouldn't consider an XSD or WSDL file as being sufficient
documentation [for either internal or external web services]. They are
definitely better than nothing but they are a far cry from providing
enough metadata for users of a service to determine how to properly
interact with a service especially when dealing with operations that
have to be performed in a series of steps (e.g. uploading a photo or
enclosure to a user's home directory then attaching it to a subsequent
blog entry).</p>
</blockquote>
<p>Right, although no one should take this as excuse for why we have the WS
description stack from hell: "business process", "business activity",
"coordination", "experience", "choreography", "policy framework",
"eventing" (we should find whoever came up with that ghastly usage, and
put them on the gibbet), etc. Cue Sean McGrath on WS-
YouGottaBekiddingMe (and people say CORBA was complex). This is all
hard stuff, but there is also a lot of hair-splitting and redundancy
between the mountain of WS specs, and the REST crowd <em>can</em> easily come
up with simpler and fewer description languages if they aren't overcome
by politics and bloated committees as the WS space has been. Dare
again, with the crux:</p>
<blockquote>
<p>If your organization is having problems with poorly documented
internal services then the answer is to document them NOT to rely on
WSDL & XSD files as documentation.</p>
</blockquote>
<p>Nuff said.</p>
</content>
</item>
<item>
<title>Good times in Amsterdam</title>
<link>http://copia.ogbuji.net/blog/2005-06-04/Good_times.html</link>
<content>
<p>
<!-- -->
</p>
<p>
<img src="http://photos13.flickr.com/16818246_6c08ac201a.jpg" alt="" title="From Steve Pemberton's roof towards my hotel (near Centraal station)"/>
</p>
<p>I already <a href="/blog/2005-06-03/Scattered_">posted my notes</a> about the XTech
conference itself, but there was more to the trip than that. I had a
wonderful time in a wonderful city. Edd is not much for nocturnes and
other night-time events, and I think this is the way it should be.
After attending sessions from 9 through 5, who has the brain cells left
to think more about XML? Time to hit the streets. (All pictures have
titles: hold your mouse pointer over them).</p>
<p>
<img src="http://photos9.flickr.com/16818138_a1fd1a6a99.jpg" alt="" title="Libby, Damian, DanCon, Peter, DanBri, Ian, Max and Rich"/>
</p>
<p>I stayed at the <a href="http://www.hotels- holland.com/amsterdam/barbizon-palace.htm">Hotel Barbizon</a>. I am not recommending it
(it does beat the goo out of the Novotel at the RAI, though). Next time
I go, if they have a reasonable rate available, I'm staying where Damien
Steer and Libby Miller did, at the <a href="http://www.bookings.net/hotel/nl/american.html">Amsterdam American
Hotel</a>. Great location
(right on the Leidesplein). It turned out to be a common meeting place</p>
<p>
<img src="http://photos12.flickr.com/16818501_b12640c8f5.jpg" alt="" title="Dom, Hugo, Dave, Leigh, Damian and Libby, Ian and Ralph chill at the Café Americain at the Leidseplein"/>
</p>
<p><img style="float: right; margin: 10px; border: none;" src="http://photos9.flickr.com/15683484_21848a5628_m.jpg" title="Damian and Libby"/>
As <a href="http://swordfish.rdfweb.org/photos/2002/05/26/index.html">always</a><a href="http://swordfish.rdfweb.org/photos/2002/05/24/index.html">at</a><a href="http://swordfish.rdfweb.org/photos/2004/04/22/index.html">these</a><a href="http://swordfish.rdfweb.org/photos/2004/04/20/index.html">conferences</a>,
I hung out a good deal with Libby and Damian (They also hung out with
Lori, the kids, DanBri, Max and me <a href="http://swordfish.rdfweb.org/photos/2003/07/10/index.html">in Bath in
2003</a>).
They're a lot of fun to explore and chill with. The XML crowd is, in
general. I've always been impressed by the backgrounds of people in the
XML circle. To a much greater extent than most expert developer scenes
they come from backgrounds from literature, visual art and graphic
design, music and theater, relational and object-oriented methodologies,
engineering, and more.</p>
<p>
<img src="http://photos11.flickr.com/15999938_24262c57c8.jpg" alt="" title="Libby, Damian and Uche chilling it at the park, chilling it la la la..."/>
</p>
<p>I also met a lot of new folks, which is always cool.
<img style="float: right; margin: 10px; border: none;" src="http://photos12.flickr.com/16000037_5eca97117f_m.jpg" title="Sarah and Ian"/>
<a href="http://www.cubicgarden.com/blojsom/blog/cubicgarden/">Ian Forrester</a>
and and his wife Sarah were the highlight, I think. Sarah is from
Racine, Wisconsin, and reminds me a lot of my clever, hilarious, strong-
willed, energetic wife Lori. I've found there's a definite class of
women from Wisconsin with those impressive characteristics.
<a href="http://blogs.sun.com/roller/page/kristenh">Kristen</a>, Fourthought's
current manager at Sun, is another. Next time Lori and I head to the UK
(next year, prolly), we're hunting down Ian and Sarah to hang out with
(whether they like it or not). I also met and had a good time with
<a href="http://ralphm.net/blog/">Ralph Meijer</a>, who was presenting in place of
my friend <a href="http://www.saint- andre.com/blog/about.html">Peter Saint-Andre</a>, Ruud Steltenpool who was pimping <a href="http://www.svgopen.org/2005">SVG Open
2005</a> and who was kind enough to bring a
basketball (I'd <a href="/blog/2005-05-22/Shaking_th">asked for ideas on exercise
opportunities</a>), <a href="http://people.w3.org/~dom/">Dominique Hazaël-
Massieux</a>, Håkon Lie, Michael Day, yet
another Dan and yet another Matt (both Brits whose surnames I forget).
I met in person for the first time electronic acquaintances Mark Baker
and Sebastian Schnitzenbaumer. There were also usual compadres Edd,
Eric, Leigh, Micah (The XMLHACK gang), DanBri, MattB, Dahobe, DanCon,
Liam, Ricko, Liz, etc.</p>
<p>
<a href="http://www.flickr.com/photos/cubicgarden/15684975/">
<img src="http://photos9.flickr.com/15684975_93e539ac51_m.jpg" alt="" title="RalphM and RuudS"/>
</a>
<a href="http://www.flickr.com/photos/cubicgarden/16000083/">
<img src="http://photos12.flickr.com/16000083_40743e4ada_m.jpg" alt="" title="Matt and Uche"/>
</a>
</p>
<p><img style="float: right; margin: 10px; border: none;" src="http://photos14.flickr.com/16817967_3623534153_m.jpg" title="The ever popular George Bush near Amsterdam Centraal station"/>
Amsterdam doesn't seem to have as much fly graffiti as, say Paris or
London, but then again I haven't explored it as widely as London. Norm,
who clearly has a good photographer's eye, did find a good deal of
<a href="http://norman.walsh.name/2005/05/27/urbanart">street art</a> (<a href="http://www.flickr.com/photos/ndw/sets/406578/">a good deal
indeed</a>), mostly in the
form of stickers. Last year Libby <a href="http://swordfish.rdfweb.org/photos/2004/04/23/2004-04-23- Pages/Image1.html">captured a
beaut</a>. I did find a stenciled cut at Bush and a few other
bits, but nothing very exciting.</p>
<p>Thursday night the afters consisted of a party at Steve Pemberton's
spacious apartment. The views from his roof are spectacular (see top
image, for example). On Friday, after some tapas a large group of
XTechers lolled about at Het Vondelpark. I was still craving exercise,
so I wandered around until I found a bunch of (I think) Surinamese
playing keepie-uppie (a.k.a. juggling) with a soccer ball. They were
pretty damned good, but I'm decent enough, so I asked to join them, and
did. I then returned to the group of XTechers.</p>
<p>
<img src="http://photos14.flickr.com/16818075_47887f90d6.jpg" alt="" title="Tons of XTech folks at the Vondelpark"/>
</p>
<p>After an Italian dinner we all split up and I went to check out the
clubs near Leidseplein and the Reguilerswaarstraat (or something like
that). It was fun, except that I was lacking a bit of steam. I noticed
that a very weird combination of Samba and Euro electro seemed to be all
the rage. Saturday, after a gratifying sleep-in I joined Damien, Libby
and DanBri at the Leidseplein. We did some shopping, made an abortive
attempt to go on a cruise (line was too long), and, joined by Liam and
Mark Baker strolled around until we got to a BarBQ to which Liz and Dave
had kindly invited us. We were joined by some of a very fun collective
called, apparently, "Hippies from Hell", ate, chatted, joked, and
recited poetry in English and Dutch (Liz treated us to <a href="http://www.contemporarywriters.com/authors/?p=auth174">Wendy
Cope</a>, for
example), and that closed off my trip <strong>very</strong> pleasantly.</p>
<p>
<img src="http://photos12.flickr.com/16817740_ffb2a21c05.jpg" alt="" title="BarBQ at Liz's"/>
<img src="http://photos9.flickr.com/16817676_e62653b340.jpg" alt="" title="Cheers, skål, nestrovia, prost, kwenu..."/>
</p>
<p>For more pictures check out the <a href="http://www.flickr.com/photos/tags/xtech/">Flickr XTech
tag</a>.</p>
</content>
</item>
<item>
<title>Quotīdiē</title>
<link>http://copia.ogbuji.net/blog/2005-06-04/Quot_di_.html</link>
<content>
<p>
<!-- -->
</p>
<blockquote>
<p>We were supposed to to have our fence painted <br/>
By this weekend. The letter warned of fines. <br/>
That idle council, declaring suburban <br/>
Heresy—dire tone <br/>
Of grey flanking our homes— <br/>
Proclaimed a ceremonial purge for the times.</p>
</blockquote>
<p>—Uche Ogbuji—from "<a href="http://copia.ogbuji.net/files/caramusis/may_day_flakes.xml">May Day
Flakes</a>"</p>
<p>My plan was to post a new poem a week, and it's been two, so here are
two:</p>
<ul>
<li>
<a href="http://copia.ogbuji.net/files/caramusis/epitaph.xml">"Epitaph (après Villon,
maître)"</a>
</li>
<li>
<a href="http://copia.ogbuji.net/files/caramusis/may_day_flakes.xml">"May Day
Flakes"</a>
</li>
</ul>
<p>I already posted the first stanza of "Epitaph" in <a href="/blog/2005-05-12/Quot_di_">an earlier
Quotīdiē</a> of Villon. In the third I have the line:</p>
<blockquote>
<p>Charnel birds have plucked eyes from each face,</p>
</blockquote>
<p>I'm having a lot of trouble deciding between "charnel" and "carrion".
The latter word has the effect of playing on "crone" in the previous
line ("crone" comes from old Norman "caroigne" which can mean "carrion"
as well as "old bitty"), but "charnel" feels more expressive of the
horror. Then again, John Cowan mentioned that he appreciated the
matter-of-fact tone of the poem (gratifying, because that was my intent,
and certainly the effect of the original Villon), and "carrion" is the
more matter-of-fact word.</p>
</content>
</item>
<item>
<title>Ghough and other wacky woids</title>
<link>http://copia.ogbuji.net/blog/2005-06-03/Ghough_and.html</link>
<content>
<p>
<!-- -->
</p>
<p>John Cowan blogged the <a href="http://recycledknowledge.blogspot.com/2005/06/spelling.html">infamous case of the "ough"
words</a>
which is the standard example of how much of a tricky jackal English can
be to poor ESL (EXL?) students. By coincidence this is just a day after
I ran into <a href="http://encyclopedia.laborlawtalk.com/List_of_unusual_English_words">"List of unusual English words in the LaborLaw
Encyclopedia"</a> (strange provenience for such content). One of the entries in on that page is the infamous "ough" gang, but there is also a lot of other really interesting Engligh trivia, some of which I've come across, and some of which I haven't, but all of which makes for fun reading. One thing did surprise me. I'd always carried "set" in my head as the English word with the most definition, but this page has it as second, after run (76 to 63), based on the OED. I wonder whether my memory was from a discussion based on another dictionary, or perhaps is was another measure such as longest actual line count for the dictionary entry.</p>
<p>BTW, re: the title. Back in secondary school a bunch of us were riffing
off the joke of spelling "fish" "ghoti", and had a competition for who
could come up with the coolest words only based on the crazy phonetics
of the "ough" gang. "ghough" was one of the entries (mine, if I recall
rightly), pronounced "few". There are some even cooler ones, but I
leave those as an exercise for readers and commenters. You can use
Cowan's list as a cheat sheet (he keeps things a bit simpler than the
LaborLaw page).</p>
</content>
</item>
<item>
<title>XTech: Mike Kay on XQuery and XSLT 2.0</title>
<link>http://copia.ogbuji.net/blog/2005-06-03/XTech__Mik.html</link>
<content>
<p>
<!-- -->
</p>
<p>As I mentioned in my <a href="/blog/2005-06-03/Scattered_">more complete report</a>
<a href="http://www.saxonica.com/">Mike Kay</a>'s presentation was worth a further
entry (besides, my note-taking discipline went to hell right after his
talk, so I don't have as much to work with on the rest).</p>
<p>The title was <a href="http://www.xtech- conference.org/2005/wednesday.asp#1">Comparing XSLT and XQuery</a>. Much of what Mike discussed
applies to XSLT 1.0 as well as 2.0. He did spend some time talking
about the role of XPath 2.0 as the basis of both XSLT 2.0 and XQuery.
As he puts it XSLT 2.0 is a 2-language system. You call XPath from
specific constructs within XSLT. XQuery on the other hand has XPath
incorporated into basic language. The way I think of it, XSLT is a host
language for XPath, while XQuery is a (greatly) extended version of
XPath.</p>
<p>I think the most important contribution Mike made in this paper was a
very sober appraisal of the barriers to learning XSLT and XQuery. The
difficulties developers have with XSLT are well known: we've had some 6
years to discuss them them. Mike summarizes them as follows:</p>
<ol>
<li>XML fundamentals: encoding, entities, white space, namespaces, etc.</li>
<li>Declarative programming: variables, recursion, paths, grouping</li>
<li>Data model: the mental shift from the angle brackets they see to the
abstraction of nodes
<ul><li>confusion between what devs see in the XML versus what their
program sees</li><li>confusion over proper output, e.g. subtlety that creating an
element in the output tree is not the same thing as creating text
containing angle brackets</li></ul></li>
<li>Rule-based programming:
<ul><li>template dispatch, which forces a non-linear way of thinking about
transforms. Mike Kay mentioned the parallels with GUI programming. (I
tend to think this common comparison is generally right, but is just
stretched enough to be unhelpful in determining how to get developers in
the right mind-set).</li></ul></li>
</ol>
<p>Mike Kay had <a href="http://www.cranesoftwrights.com/bio/gkholman.htm">Ken
Holman</a> in the
audience so he did the sensible thing in asking the foremost expert on
XML-related training. Ken agreed: "Yep. That hits the high points of
the first day of getting people to know what's going on in XSLT."</p>
<p>In my opinion, there is one more category of difficulty, which is
capability limitations in XSLT 1.0 (most of which are addressed in EXSLT
or XSLT 2.0). This includes frustrations such as the result tree
fragment/node set split, the poor facilities for string manipulation,
node set operations, date/time processing, etc.</p>
<p>Mike feels that XQuery only eliminates the 4th barrier (it has no
templates). Reading between the lines, this is a powerful indictment of
the idea of a separate XQuery. I think it's hard to argue that we need
such a complex separate language purely from the pedagogical viewpoint
(no, I'm <strong>not</strong> saying "andragogical").</p>
<p>Mike pointed out that people coming to XQuery from SQL tend to write
everything in FLWOR expressions (rather than, say XPath with
predicates). FLOWR is comfy and SQLey, but this just annoys me. I've
pointed out in my <a href="/blog/2005-05-19/SPARQL_ver">bemoaning of SPARQL</a> how
unfortunate I think it is that SQL people insist on turning all other
languages into some nasty mutation of SQL. I was suitably entertained
by seeing Mike demonstrate how easy it is to get caught up in the subtle
differences between SQL and FLOWR. Again I'm reading between the lines,
but I got the sense that Mike was himself not unamused by the task of
pointing out such trip-wires.</p>
<p>Mike finished up with a benchmark which he prefaced with an armload of
caveats (a healthy practice, as I've learned from experiences in
benchmarking). Saxon running XSLT trounced all processors except for
MSXML on a certain task involving the XSLT analogue of a relational
join, and with document sizes of 1MB, 4MB and 10MB. In a surprise
result, Saxon running XSLT even beat Saxon running XQuery (As Mike said,
"in the XQuery world implementors look to optimize joins"). All the
XSLT processors suffered N^2 performance degradation with doc size. But
strangely enough some of the XQuery tools did as well, including Galax.
Qizx did show linear characteristics.</p>
<p>Kay then proved that there is no reason one cannot optimize joins for
XSLT by writing a join optimizer for Saxon/XSLT. When he updated the
benchmark result slide to show the fruit of this join optimization, we
were all astonished to see how thoroughly Saxon ended up trouncing
<strong>everything</strong> in the field at all three doc sizes. Now <strong>that</strong>, my
friends, is the work of a superstar developer.</p>
<p>I'll be tinkering with how Amara handles some of Mike's XSLT and XQuery
examples in a coming entry.</p>
<p><a href="http://www.adtmag.com/article.asp?id=7620"><img style="float: right; margin: 10px; border: none;" src="http://www.101com.com/images/pub//adtmag/knifespot.jpg" title="omni-tool"/></a>
See also:</p>
<ul>
<li><a href="http://www.adtmag.com/article.asp?id=7620">"Is XQuery an omni-tool?"</a>
—me</li>
<li><a href="http://www.adtmag.com/article.asp? id=6965">"XML class warfare"</a>—me</li>
<li><a href="http://www.adtmag.com/article.asp? id=10196">"XML's growing pains"</a>—me</li>
<li><a href="http://www.xml.com/pub/a/2004/12/29/deviant.html">"XQuery's
Niche"</a>—Edd
Dumbill</li>
<li>
<a href="http://saxon.sourceforge.net/">Saxon</a>
</li>
</ul>
</content>
</item>
<item>
<title>Scattered notes from XTech</title>
<link>http://copia.ogbuji.net/blog/2005-06-03/Scattered_.html</link>
<pubDate>Mon, 06 Jun 2005 16:47:24 GMT</pubDate>
<content>
<p>
<!-- -->
</p>
<p>
<a href="http://www.flickr.com/photos/ldodds/16926377/">
<img src="http://photos12.flickr.com/16926377_0c57487a48.jpg" alt="" title="We're in Amsterdam. Nyah nyah nyah."/>
</a>
</p>
<p><a href="http://www.xtech-conference.org/">XTech 2005</a>. Amsterdam. Lovely
time. But first of all, I went for a conference. <a href="http://usefulinc.com/edd/blog">Edd
Dumbill</a> outdid himself this time. The
first <em>coup de maître</em> was sculpting the tracks to increase the
interdisciplinary energy of the meet. The browser track brought out a
lot of new faces and provided a jolt of energy. There did seem to be a
bit of a divide between the browser types and the XML types, but only as
much as one would expect from the fact that XML types tend to know each
other, and ditto browser types. There was plenty of crosstalk between
the disciplines as well.</p>
<p>Second touch: focus on open data, and all the excitement in that area
(Creative Commons, remixing/mash-ups, picture sharing, multimedia
sharing, microformats, Weblogging, content syndication, Semantic
technology, podcasting, screencasting, personal information spaces,
corporate info spaces, public info spaces, etc.) and watch the BBC take
over (with they bad selves). And don't fret: "damn, maybe we should
lighten up on the BBC bias it he speakers". No, just go with it.
Recognize that they are putting forth great topics, and that everyone is
amped about how the BBC is leading the way on so many information
technology and policy fronts.</p>
<p>Third touch: foster collaboration. Put up a
<a href="http://wiki.usefulinc.com/XTech_2005">Wiki</a>, encourage folks to an IRC
channel, aggregate people's Weblog postings and snapshots into one
place, <a href="http://www.planetxtech.org/">Planet XTech</a>, and cook
up a fun little challenge to go with the theme of open data. For that
last bit Edd put out an XML representation of the conference schedule
and <a href="http://usefulinc.com/edd/blog/contents/2005/04/16-xtech- schedule/read">asked folks to do something cool with
it</a>. I didn't do as much with it as I'd hoped. When I
finally got my presentation going I used the posted
<a href="http://usefulinc.com/edd/blog/contents/2005/04/grid.xml">grid.xml</a> as a
demo file for playing with
<a href="http://uche.ogbuji.net/tech/4Suite/amara/">Amara</a>, but I wished it had
more content, especially mixed content (it's very attribute heavy).
I've suggested on the XTech Wiki that if Edd does the same thing next
time, that he work in paper abstracts, or something like that, to get in
more text content.</p>
<p>
<a href="http://www.flickr.com/photos/ldodds/16926377/">
<img src="http://photos13.flickr.com/16818201_e989dc4314.jpg" alt="" title="Ralph, Max and DanCon right outside the RAI. Check out Ralph's killer t-shirt."/>
</a>
</p>
<p>I said "When I finally got my presentation going", which hints at the
story of my RAI (venue for XTech) jinx. Last year in Amsterdam I
couldn't get my Dell 8600 running Fedora Core 3 to agree with the
projectors at the RAI. As Elliotte Rusty Harold understates in his
<a href="http://www.cafeconleche.org/oldnews/news2004April20.html">notes from the 2004
conference</a>:</p>
<blockquote>
<p>After some technical glitches, Uche Ogbuji is talking about XML good
practices and antipatterns in a talk entitled "XML Design Principles for
Form and Function"</p>
</blockquote>
<p>In fact I ended up having to switch to OpenOffice on Windows, and the
attendees endured a font only a hippie could love (Apparently Luxi Sans
is not installed by default on Windows and OO/Win has a very strange way
of finding a substitute). I'm vain enough not to miss quoting another
bit about my talk from Elliotte:</p>
<blockquote>
<p>A very good talk. I look forward to reading the paper. FYI, he's a
wonderful speaker; probably the best I've heard here yet.</p>
</blockquote>
<p>Gratifying to know I managed a good talk under pressure. I hope I did
so again this time, because the RAI projectors were no more friendly.
The topic was <a href="http://xtech.org/2005/wednesday.asp#21">"Matching
Python idioms to XML idioms"</a>. Remembering the last year's headache
I asked about a projector to use to test out my presentation (I was on
the first day, Weds). Usually conference speakers' rooms have a spare
projector for this purpose, but it looks as if the RAI couldn't supply
one. I crossed my fingers and arrived for my talk the dutiful 15
minutes early. Eric van der Vlist was up before me in the block. The
AV guy came along and they spent quite a while struggling with Eric's
laptop (Several speakers had trouble with the RAI projectors). They
finally worked out a 640x480 arrangement that caused him to have to pan
around his screen. This took a while, and the AV guy bolted right
afterward and was not there to help me set up my own laptop. Naturally,
neither I nor the very helpful <a href="http://www.coolheads.com/mb.htm">Michel
Biezunski</a> (our session chair) were
able to get it to work, and we had to turn things over to Eric to start
his talk.</p>
<p>We then both went in search of the AV guy, and it took forever to find
him. No, they didn't have a spare projector that we could use to set up
my laptop in time for my talk. We'd just have to wait for Eric to
finish and hope for the best (insert choice sailor's vocabulary here).
My time slot came and we spent 20 minutes trying every setting on my
laptop and every setting on their projector. The AV guys (yeah, when it
was crisis time, they actually found they had more than one) muttered
taunts about Linux, and it's a lucky thing I was bent on staying calm.
I present quite often, and I do usually have to try out a few settings
to get things to work, but in my encounters it's only the RAI projectors
that seem completely incapable to project from my Linux laptop. In all,
I witnessed 4 speakers (3 on Linux and surprisingly one on Mac OS X) who
had big problems with the RAI projectors, including one of the keynote
speakers. I suspect others had problems as well.</p>
<p>I couldn't take the obvious escape route of borrowing someone else's
laptop because the crux of my talk was a demo of Amara and I'd have to
install all that as well (Several kind volunteers including Michel had
4Suite installed, but not Amara). After 20 minutes, we agreed that I'd
go on with my talk on Michel's computer (Thinkpad running Red Hat 9 and
it worked with the projector immediately!), skip the demo, and we'd find
another time slot for me to give the entire talk the next day. Quite a
few people stuck around through this mess and I'm grateful to them.</p>
<p>The next day we installed Amara on Michel's computer and I gave the
presentation in its proper form right after lunch. There was great
attendance for this reprise, considering everything. The Amara demo
went fine, except that the grid.xml I was using as a sample gave too few
opportunities to show off text manipulation. I'll post a bit later on
thoughts relating to Amara, stemming from the conference. Norm Walsh
was especially kind and encouraging about my presentation woes, and he
has also been kind in his notes on XTech 2005:</p>
<blockquote>
<p>The presentation [deities] did not smile on Uche Ogbuji. He struggled
mightily to get his presentation of Matching Python Idioms to XML Idioms
off the ground. In vain, as it turned out (AV problems were all too
common for a modern conference center), but he was generous enough try
again the next day and it was worth it (thanks Uche!). I'm slowly
becoming a Python convert and some of the excellent work that he's done
at Fourthought to provide Python access to standard XML in ways that
feel natural in Python is part of the appeal.</p>
</blockquote>
<p>That's the precise idea. A tool for processing XML that works for both
Python heads and XML heads. The whole point of my presentation was how
hard this is to accomplish, and how just about every Python tool
(including earlier releases of 4Suite) accommodates one side and not the
other. The response to Amara from both the Python heads and XML heads
makes me feel I've finally struck the right balance.</p>
<p>I got a lot out of the other XTech talks. Read Norm on the keynotes: he
pretty much had the same impressions as I did. Props to Michael Kay for
his great presentation comparing XSLT 2.0 and XML Query. I took enough
notes at that one for a separate entry, which will follow this one. I
missed a lot of the talks between Kay's and my own while I was trying
(unsuccessfully) to head off the AV gremlins.</p>
<p>Other talks to highlight: <a href="http://blog.trowbridge.org/index.php">Jon
Trowbridge</a>'s on Beagle (who, you
guessed it, had AV problems that ate up a chunk of his time slot). From
the <a href="http://beaglewiki.org/Main_Page">project Wiki</a>:</p>
<blockquote>
<p>Beagle is a search tool that ransacks your personal information space
to find whatever you're looking for. Beagle can search in many different
<a href="http://beaglewiki.org/Supported_Filetypes">domains: documents, emails, web history, IM/IRC conversation, source
code, images, music files, applications and [much
more</a>]</p>
</blockquote>
<p>Edd had already introduced me to Beagle, but it was really cool to see
it in action. I'll have to check it out. Jon also pointed out
<a href="http://www.beatniksoftware.com/tomboy/">TomBoy</a>, "a desktop note-taking
application for Linux and Unix. Simple and easy to use, but with
potential to help you organize the ideas and information you deal with
every day." Two projects I'll have to give a spin. Props to Jon for
shrugging off the AV woes and giving a fun and relaxed talk.</p>
<p><a href="http://weblogs.mozillazine.org/roc">Robert O'Callahan</a>'s talk on the new <code>canvas</code> tag for Mozilla and Safari
was memorable if for nothing else than the experience of <a href="http://weblogs.mozillazine.org/roc/archives/2005/05/xtech.html">surfing Google
at a 45
angle</a>,
with no apparent loss in snappiness. This canvas thingie looks wicked
cool, and it's good to see them working to incorporate SVG. I've heard
a lot of grumbling from W3C types about canvas, and all we poor browser
users in the middle can hope for is some rapid conversion of cool
technologies such as XAML, XUL, canvas, SVG, etc. Others have blogged
about the opportunities and anxieties opened up by the
<a href="http://www.whatwg.org/">WHATWG</a>, which one commentator said should have
been the "WHAT Task Force" because "WTF" would have been a better
acronym. I'm a neutral in these matters, except that I really do with
browser folks would do what they can to push people along to XHTML 2.0
rather than cooking up HTML 5.0 and such.</p>
<p><a href="http://www.hackdiary.com/">Matt Biddulph</a> was one of the BBC Massive on
hand, and his talk "The Application of Weblike Design to Data -
Designing Data for Reuse" offered a lot of practical tips on how to
usefully open up a large body of data from a large organization.</p>
<p><a href="http://www.w3.org/People/Dom/">Dominique Hazaël-Massieux</a> gave a talk
on <a href="http://www.w3.org/2005/Talks/xtech-grddl/all.html">GRDDL</a> (O most
unfortunate project name), which was my first hearing of the technology.
My brief characterization of <a href="http://www.w3.org/TR/grddl/">GRDDL</a> is as
an attempt to pull the Wild West ethos of
<a href="http://www.xml.com/pub/a/2005/03/23/deviant.html">microformats</a> into
the rather more controlled sphere of RDF. It touches on topics in which
I've been active for years, including tools for mapping XML to RDF.
I've <a href="http://www.oreillynet.com/pub/wlg/5940">argued all these years</a>
that RDF folks will have to embrace general XML in place of the RDF/XML
vocabulary if they are to make much progress. They will have to foster
tools that make extracting RDF model data from XML a no-brainer. It's
great to see the W3C finally stirring in this direction. Dom's
presented very well. I asked about the use of other systems, such as
schema annotation, for the XML to RDF mapping. It seemed to me that
GRDDL was mostly geared towards XSLT. Dom said it is meant to be
independent of the mapping mechanism, but in my post-conference reading
I'm not so sure. I'll have to ponder this matter more and perhaps post
my thoughts. Dom also mentioned
<a href="http://simile.mit.edu/piggy-bank/">PiggyBank</a>, "the Semantic Web
extension for Firefox". <a href="http://www.openlinksw.com/blog/~kidehen/index.vspx?page=&id=850">Kingsley
Idehen</a>
has a nice blurb on this software. I do hesitate to use it because
someone mentioned to me how PiggyBank had gone into crazy thrash mode at
one point. I don't muck with my FireFox set-up lightly.</p>
<p>Rick Jelliffe showed off Topologi's lightweight browser
<a href="http://www.topologi.com/products/treeworld.html">TreeWorld</a>, which is
XML-oriented and suitable for embedding into other applications.</p>
<p>
<img src="http://photos13.flickr.com/17216940_4b5ffb98d6.jpg" alt="" title="Ricko brings it to a close"/>
</p>
<p>Others have blogged Jean Paoli's closing keynote
(<a href="http://www.ldodds.com/blog/archives/000206.html, [Daniel](http://glazman.org/weblog/dotclear/index.php?2005/05/29/1059-adam-3">Leigh</a>, etc.). Seems I'm not the only one who was put off by the
straight-up product pitch. At least he did a bit of a service by
clearly saying "Binary XML: No please". Check out <a href="http://wiki.usefulinc.com//Quotes">more quotes from
XTech</a>.</p>
<p>The conference was superb. Do be sure not to miss it next year. It's
looking like Amsterdam will be the venue again. And what of Amsterdam?
Besides the conference I had a great time with friends. I'll post on
that later.</p>
<p>For the most comprehensive report I've seen to date, see <a href="http://www.xml.com/pub/a/2005/06/01/deviant.html">Micah Dubinko's article</a>.</p>
</content>
</item>
<item>
<title>Hacking in the name of IE</title>
<link>http://copia.ogbuji.net/blog/2005-06-02/Hacking_in.html</link>
<content>
<p>
<!-- -->
</p>
<p>I finally broke down and made Copia safe for MSIE. When I first set up
the site, I tweaked the IE look a bit, but it was such a frustrating
exercise that I gave up once satisfied with its appearance on FireFox
and Safari (I need to install Opera for testing). Last night I found
<a href="http://css-discuss.incutio.com/? page=BoxModelHack">this excellent Wiki resource</a> and soon got things sorted out. In the process I was
alerted to the fact that Copia gets rendered in quirks mode, which is
not what we want. I think I know how to fix most of the problems, but
some issues are buried in PyBlosxom and plug-ins code, I think, so it
may have to wait until my next burst of energy before we can sport one
of those fly "valid ?HTML ?" icons.</p>
</content>
</item>
<item>
<title>FuXi v0.6 - Rearchitected / Repackaged</title>
<link>http://copia.ogbuji.net/blog/2005-06-01/FuXi_Repackaged.html</link>
<content>
<p>
<!-- -->
</p>
<p>I've been experimenting with the use of FuXi as an alternative in situations
where I had been manipulating application-specific RDF content using
Versa within a host language (XSLT). In some cases I've been able to
reduce a very complex set of XSLT logic to 1-2 queries on RDF models
extended via a handful of very concise rules (expressed as N3). I'm
hoping to build some usecases to demonstrate this later.</p>
<p>The result is that I've rearchitected FuXi to work as a blackbox
<em>directly</em> with a 4RDF
<a href="http://cvs.4suite.org/viewcvs/4Suite/Ft/Rdf/Model.py?view=markup">Model</a>
instance (it is now query agnostic, so it can be plugged in as an
extension library to any other/future RDF querying language bound to a
4RDF model). Prior to this version, it was extracting formulae
statements by Versa queries instead of directly through the Model
interfaces.</p>
<p>Right now I primarily use it through a single Versa function
<em>prospective-query</em>. Below is an excerpt from the
<a href="/files/FuXi/README.txt">README.txt</a> describing it's parameters:</p>
<h3>prospective-query</h3>
<p><em>prospective-query</em>(
<strong>ruleGraph</strong>,
<strong>targetGraph</strong>,
<strong>expr</strong>,
<strong>qScope</strong>=None)</p>
<p>Using FuXi, it takes all the facts from the current query context
(which may or may not be scoped)
, the rules from the <<em>ruleGraph</em>> scope and invokes/executes the Rete
reasoner. It adds the inferred
statements to the <<em>targetGraph</em>> scope. Then, it performs the query
<expr> within the <<em>qScope</em>>
(or the entire model if None), removing the inferred statements upon exit</p>
<hr/>
<p>FuXi is is now a proper python package (with a setup.py) and I've moved it
(permanently - I hope) to:
<a href="http://copia.ogbuji.net/files/FuXi">http://copia.ogbuji.net/files/FuXi</a></p>
<p>I was a little unclear on Pychinko's specific dependencies with rdflib and cwm
in my previous <a href="http://copia.ogbuji.net/blog/2005-05-29/FuXi">post</a>,
but Yarden Katz cleared up the confusion in his comments (thanks).</p>
<p>The installation and use of FuXi should be significantly easier than
before with the
<a href="http://lists.fourthought.com/pipermail/4suite-checkins/2005-May/006450.html">recent</a>
inclusion of the N3 deserializer/parser into 4Suite.</p>
<p>-- Chimezie</p>
</content>
</item>
<item>
<title>The feckless rump of our so-called Justice Department...</title>
<link>http://copia.ogbuji.net/blog/2005-06-01/The_feckle.html</link>
<content>
<p><!-- -->
Has fancied for itself the time and energy to do <strong>what</strong>? Wait. Hold up.
There's a Quotīdiē in here.</p>
<blockquote>
<p>There were lights and sirens, gunshots firing <br/>
Cover your eyes as I describe a scene so violent <br/>
Seemed like a bad dream, she, laid in a blood puddle <br/>
Blood bubbled in her chest, cold air brushed against open flesh <br/>
No room to rest,
Pain consumed each breath <br/>
Shot twice with her hands up <br/>
Police questioned but shot before she answered <br/>
One panther lost his life, the other ran for his <br/>
Scandalous the police were as they kicked and beat her <br/>
Comprehension she was beyond <br/>
Trying to hold on <br/>
To life. she thought she’d live with no arm <br/>
That’s what it felt like, got to the hospital, eyes held tight <br/>
They moved her room to room-she could tell by the light <br/>
Handcuffed tight to the bed, through her skin it bit <br/>
Put guns to her head, every word she got hit <br/>
"Who shot the trooper?" they asked her <br/>
Putting mace in her eyes, threatened to blast her <br/>
Her mind raced till things got still <br/>
Opened her eyes, realized she’s next to her best friend who got killed <br/>
She got chills. They told her: that’s where she would be next <br/>
Hurt mixed wit anger—survival was a reflex <br/>
They lied and denied visits from her lawyer <br/>
But she was building as they tried to destroy her <br/>
If it wasn’t for this German nurse they would have served her worse <br/>
I read this sister’s story, knew that it deserved a verse <br/>
I wonder what would happen if that woulda been me? <br/>
All this shit so we could be free, so dig it, y’all.</p>
</blockquote>
<p>[SNIP the verse about further abuse and imprisonment of Assata]</p>
<blockquote>
<p>From North Carolina her grandmother would bring <br/>
News that she had had a dream <br/>
Her dreams always meant what they needed them to mean <br/>
What made them real was the action in between <br/>
She dreamt that Assata was free in their old house in Queens <br/>
The fact that they always came true was the thing <br/>
Assata had been convicted of a murder she couldn't have done <br/>
Medical evidence shown she couldn't have shot the gun <br/>
It’s time for her to see the sun from the other side <br/>
Time for her daughter to be by her mother’s side <br/>
Time for this beautiful woman to become soft again <br/>
Time for her to breathe, and not be told how or when <br/>
She untangled the chains and escaped the pain <br/>
How she broke out of prison I could never explain <br/>
And even to this day they try to get to her <br/>
But she’s free with political asylum in Cuba.</p>
</blockquote>
<p>—Common—"A Song for Assata", <a href="http://www.amazon.com/exec/obidos/tg/detail/-/B00004S51H">"Like Water For
Chocolate"</a></p>
<p>I'm a bit ashamed that I'm only now hearing that on May 2, 2005 a $1
million bounty was placed on the head of Assata Shakur, and that she was
added to the FBI's Domestic Terrorist List, alongside Osama bin Laden
(how dare they trivialize in this way the atrocities that bin Laden
committed in Nairobi, Dar es Salaam and New York City, among other
places)? I suppose I'm more a slave to mainstream media than I'd
thought.</p>
<p>As I listened to Common's heart-wrenching song over and over again this
morning, I found myself in tears. America has to varying extent
venerated Martin Luther King, Malcolm X, despite the fact that they were
technically criminals in their time (peace to <a href="http://en.wikipedia.org/wiki/C%E9sar_Ch%E1vez">César
Chávez</a> who astonishes me
with how much he accomplished acting entirely within the law). We
accept the justness of their challenge to lawfulness because of what we
have distilled from their struggle—Basic civil rights enjoyed by
Black Americans—Basic civil rights for people such as me who can
safely come to a country that has through most of its history shown people of
my ethnicity nothing but savagery and violence. I'm grateful, and not
just to the big names of the struggle, but also to the many who suffered
horrifically in the name of freedom, and whose lesser fame has not
spared them continuing injustice.</p>
<p>The personal story of <a href="http://en.wikipedia.org/wiki/Assata_Shakur">Assata
Shakur</a> (see her <a href="http://www.assatashakur.org/">home
page</a> and
<a href="http://isbn.nu/1556520743">autobiography</a>), like that of most of the
Black Panthers, makes for dreadful reading. These people paid a high
price for being part of a pincer movement that shamed and threatened
America into civility (and no, I do <strong>not</strong> believe that either the
shame from the non-violent movement or the threat from the militant
movement would have been as effective alone). I accept a lot of the
past horror of what they endured (easy for me, who didn't personally
suffer this) as inevitable loss in battle, as much as I view the
extensive casualties of the Colonies' minutemen during the Revolutionary
war. But for me to witness the recent action of a U.S. regime, in 2005
against one of the hapless combatants in the battle for for civil rights
is entirely unbearable. We are in the midst of a loudly proclaimed war
on terrorism which we the Americans of African descent are supposed to
heartily endorse, and the Justice Department sees fit to address its
resources towards settling old white supremacist scores? Unbearable.</p>
<p>There has been plenty of injustice of all variety to go around in the
U.S., and abroad in recent years, and in some respects this resumed
persecution is just another story to be swallowed up in the ennui of the
American public. It would almost be better if people came off their
couches to cheer these abominations. At least we would recognize our
times as a genuine struggle over the character of civilization rather
than the reign of an arrogant cadre that recognizes opportunity in a
population gorged and jaded <em>propter panem et circenses</em>.</p>
<p>It is furthermore intolerable to be so completely shamed by the vicious
and autocratic regime of Fidel Castro. Assata Shakur ran to Cuba as one
of the only places where she could find some escape from U.S.
persecution. There was an unfortunate strain of communism that ran
through the Black Panther Party, but this is no more remarkable, for
example, than the fact that such a Communist strain ran through Jewish
intellectuals in the mid 20th century. Intellect frustrated by
oppression and alienation often drifts towards communist ideals. Only a
vision of utopia sustains hope reared in ghetto soil. As oppression and
alienation decrease, it becomes easier to see the evils of Communism.
It is important to point this out because people are already conflating
the campaign against Shakur with the campaign against her present
benefactors. We perjure ourselves when we fling slogans and sanctions
at the cause of freedom in Cuba while showing nothing but contempt for
the freedom of one of our own in that very country, who has already
suffered at our hands so much more than she could possibly deserve.</p>
<p>I urge anyone moved by curiosity of what I've written to learn more
about this story. Look at both sides of the story. I certainly did.
I'm no knee-jerk anti-establishment polemicist. This matter says as
much about America (whether or not you support the actions of the
Justice Department) as do the other handful of stories our media has
deemed worthy of presenting to you.</p>
</content>
</item>
<item>
<title>Towards EXSLT "1.0"</title>
<link>http://copia.ogbuji.net/blog/2005-05-30/Towards_EX.html</link>
<content>
<p>
<!-- -->
</p>
<p>For a backgrounder on EXSLT, see my article <a href="http://www-106.ibm.com/developerworks/xml/library/x-exslt.html">"EXSLT by
example"</a>. EXSLT was born of general contribution of the community on
the <a href="http://www.mulberrytech.com/xsl/xsl-list">XSL mailing list</a>. <a href="http://www.ruminate.co.uk/">Jim
Fuller</a>, <a href="http://nodesets.blogspot.com/">Dave
Pawson</a> and <a href="http://www.jenitennison.com/">Jeni
Tennison</a> started off a private thread to
turn the list discussion into action, and I soon joined them. The
result was the exslt <a href="http://exslt.org/">web site</a>, <a href="http://lists.fourthought.com/mailman/listinfo/exslt">mailing
list</a> and initial
set of extension specifications. We all agree that Jeni put the most
work into it, and is the leading light of EXSLT, but she has been very
busy lately (genius tends to occupy itself in overwhelming volume), and
the rest of us have also had a hard time giving EXSLT the effort it
desires. Last week, however, Jim Fuller and I decided to take some
steps towards getting EXSLT back on course. In part, this is because
some people want to get things moving on EXSLT for XSLT 2.0.</p>
<p>Here is a list of the things we're considering taking on in order to get
to something we can call "EXSLT 1.0".</p>
<h4>Clearing up licensing</h4>
<p>I have proposed switching from the intended (but unstated) public domain
to a <a href="http://creativecommons.org/licenses/by/2.0/">CC attribution
license</a> for all EXSLT work
products. It seems everyone accepts this, but the main remaining
question is assignment of copyright. Some of the suggestions:</p>
<ul>
<li>Assign to all the four managers. But do copyright decisions then have
to be unanimous amongst us? Is it a problem that we reside in different
countries?</li>
<li>Assign to Jeni Tennison alone. But does she have the bandwidth to
dispatch all copyright matters?</li>
<li>Assign to the EXSLT.org domain. I can't now find who suggested this
to me, but my main question is the legality of such a move.</li>
</ul>
<p>Creating some caretaker foundation for EXSLT is not really an option,
because no one (I think) has time for all the work that entails.</p>
<h4>Improving the information content of the EXSLT Web site</h4>
<p>We need a good overview. We need news that we can keep up to date
without too much effort, including references to the many good articles
on EXSLT. We need better documentation for almost all modules (the
perennial example is that users get confused as to whether or not they
have to download stuff from EXSLT.org in order to use the extensions).
We need a better way to manage information about implementations. We
need a FAQ. We should address outdated URLs from EXSLT specs (e.g.
http://lists.fourthought.com/pipermail/exslt/2005-January/002169.html).</p>
<p>We also need to think about the confusion between the namespaces URLs
used in EXSLT. The extension URIs are different from the specification
URLs. I understand how this distinction came about, but I think it has
proven too confusing in practice. I suggest that we should put a
<a href="http://www.rddl.org/">RDDL</a> gloss at all the namespace URL end
locations, including a summary of the extension module and a pointer to
the specifications.</p>
<h4>Packaging EXSLT</h4>
<p>We need to provide a package we can call "EXSLT 1.0". Something clear,
recognizable and ready for download. It should include at least
documentation on modules that proved useful over time. We should update
the reference stylesheet implementations and examples (see e.g.
http://lists.fourthought.com/pipermail/exslt/2005-February/002174.html).</p>
<p>There have also been suggestions and proposals for new modules on the
list, including:</p>
<ul>
<li>URI parsing and handling ( http://lists.fourthought.com/pipermail/exslt/2005-May/002210.html )</li>
<li>trig funcs ( http://lists.fourthought.com/pipermail/exslt-manage/2005-January/001224.html )</li>
<li>environment variables ( http://lists.fourthought.com/pipermail/exslt/2004-December/002158.html )</li>
<li>error handling ( http://lists.fourthought.com/pipermail/4suite-dev/2002-July/002192.html , thread at http://lists.xml.org/archives/xml-dev/200412/msg00797.html )</li>
</ul>
<p>My feeling is that we should go to 1.0 with the stuff that's already
established on the site. We can add modules for a 1.1. release.</p>
<p>And then we would set up for EXSLT 2.0 extensions, which I understand
people are itching to seed (I'll probably watch from the side lines as I
work through my <a href="/blog/2005-05-20/XSLT_2_0_m">overall opinions on XSLT
2.0</a>).</p>
<p>Jim has <a href="http://lists.fourthought.com/pipermail/exslt/2005-May/002205.html">promised</a> to jump-start all these tasks. I'll keep folks posted.</p>
<p>I welcome comments on this topic here on Copia, but if you really want
to help, or want to engage in discussion with the overall community,
please do join the mailing list and chip in.</p>
</content>
</item>
<item>
<title>Quotīdiē</title>
<link>http://copia.ogbuji.net/blog/2005-05-30/Quot_di_.html</link>
<content>
<p>
<!-- -->
</p>
<blockquote>
<p>One of the great practical uses of the literary disciplines, of
course, is to resist glibness—to slow language down and make it
thoughtful. This accounts, particularly, for the influence of verse,
in its formal aspect, within the dynamics of the growth of language:
verse checks the merely impulsive flow of speech, subjects it to another
pulse, to measure, to extralinguistic consideration; by inducing the
hesitations of difficulty, it admits into language the influence of the
Muse and of musing.</p>
</blockquote>
<p>—<a href="http://en.wikipedia.org/wiki/Wendell_Berry">Wendell
Berry</a>—<a href="http://isbn.nu/1593760558"><em>Standing By
Words</em></a></p>
<p>via <a href="http://www.ripon.edu/faculty/GrahamD/index.html">David Graham</a>, on
the New Poetry mailing list</p>
<p>No sooner have I returned from Amsterdam (more on all that later) than
juicy morsel falls straight in my lap for the neglected Quotīdiē.
Wendell Berry is not the most interesting poet to me. I find him much
like our current Poet Laureate <a href="http://www.americanlifeinpoetry.org/">Ted
Kooser</a>—Intelligently
stated, but with nothing particularly compelling to offer for theme or
diction. Not all bucolics have to be as majestic, as, say Vergil's, but
I think more of our poets should look to (to give a parallel example)
Horace for an example of how to personalize bucolics while still keeping
them interesting.</p>
<p>But the quote is not from Berry's poetry, but from his prose, and it
compels me to seek out more of Berry's philosophical essays. Many
commentators have noted the role of poetry in presenting ideas in a form
that requires such care to digest that they become more clearly
communicated to the reader. This is so even if, paradoxically,
obscurity is one of these tools of clear communication. Obscurity slows
things down in the reader's apprehension in order not to lose the
nuances. A perfect antonym of poetry from this viewpoint is the sound
bite, and I think this comparison is also a good argument as to why
poetry is as important today as it has ever been.</p>
<h3>Poetry for new media culture</h3>
<p>The problem has always been how to make the reader accept the braking
effect of poetry on the digestion of information. I don't think it's
engaging in too much Luddite hand wringing to say that these days people
prefer their information in easily (and indeed trivially) digestible
form. This is in part a natural reaction to high volume ("information
overload" in the jargon). Most people, even among the trendiest of
techies, are quick to praise the resource that presents a topic in both
depth and breadth, and in coherent form. They find such treatment a
necessary check on the dissociating effects of the contemporary
knowledge feed—rapidly evolving blips of high sugar information.
They accept a slow-down of perception and carefully read such resources,
but only when advised by their peers to do so. They slow down because
the "buzz factor" has compelled them to do so.</p>
<p>Poetry serves the same end, and buzz can certainly be important for
leading people to poetry, but what really makes it compelling enough for
the reader to accept the slow-down in apprehension is concentrated
beauty of language. If the musical force of the words is strong enough,
the intelligent reader will be obliged to dig more deeply. The reader
will have gained a superficial aesthetic reward from the piece, in the
sound, and such a reward as they never receive from their more quotidian
resources. This reward is very satisfying, even if superficial, and it
promises of richer reward, in the matter, once one has taken the time to
consider the piece more carefully, most likely through multiple
readings, and discussion with peers. And with the best poetry, we learn
that the reward in the sound is not really superficial at all, but is
the key to better memory of the idea as well as greater enjoyment in its
presentation.</p>
<p>This is all well and good, of course, but the question is exactly where
will the mastery come from to work new media concerns into compelling
poetry? Is any such venture doomed by popular stereotype of poetry,
especially its association with the mid-20th century cadre of slovenly,
mentally unstable, kvetching pop art beatniks? From what I've
<a href="http://www.npr.org/templates/story/story.php?storyId=4575085">heard</a>
and read of Paglia's <a href="http://isbn.nu/0375420843"><em>Break, Blow, Burn</em></a>,
she opens up a useful discussion along these lines (yet another book on
my really-should-read-soon list). I must also say that the same
discussion leads me to question whether she has the critical acumen to
help direct the class of potential poets who can serve the world in this
time of great need.</p>
</content>
</item>
</channel>
</rss>
|