Toggle navigation
nativejson-benchmark
Benchmark
Section
Developed by
Milo Yip
<EMAIL_ADDRESS>Source CSV
Type,Library,Filename,Time (ms),Memory (byte),MemoryPeak (byte),AllocCount,FileSize (byte) 1. Parse,ArduinoJson (C++),canada.json,736.520068,10640116,10640116,20,0 1. Parse,ArduinoJson (C++),citm_catalog.json,8.090724,3875224,3875224,18,0 1. Parse,ArduinoJson (C++),twitter.json,3.146140,1171635,1171635,16,0 2. Stringify,ArduinoJson (C++),canada.json,201.731252,2251088,4672463,30,0 2. Stringify,ArduinoJson (C++),citm_catalog.json,27.695479,499632,1217077,27,0 2. Stringify,ArduinoJson (C++),twitter.json,23.224391,465392,943689,26,0 3. Prettify,ArduinoJson (C++),canada.json,380.994726,5596496,13768635,33,0 3. Prettify,ArduinoJson (C++),citm_catalog.json,32.334898,513280,1230725,27,0 3. Prettify,ArduinoJson (C++),twitter.json,33.222396,597184,1314629,27,0 4. Statistics,ArduinoJson (C++),canada.json,0.594932,0,0,0,0 4. Statistics,ArduinoJson (C++),citm_catalog.json,0.674373,0,0,0,0 4. Statistics,ArduinoJson (C++),twitter.json,0.576734,0,0,0,0 7. Code size,ArduinoJson (C++),jsonstat,0,0,0,0,16896 1. Parse,cJSON (C),canada.json,22.197258,10699574,10699574,167192,0 1. Parse,cJSON (C),citm_catalog.json,6.663587,2665791,2665791,64383,0 1. Parse,cJSON (C),twitter.json,3.485251,1276528,1276528,32014,0 2. Stringify,cJSON (C),canada.json,115.663856,1294697,2650673,223241,0 2. Stringify,cJSON (C),citm_catalog.json,20.877210,500321,1001081,87274,0 2. Stringify,cJSON (C),twitter.json,11.434241,466931,934592,30092,0 3. Prettify,cJSON (C),canada.json,117.491697,1405873,2872935,223241,0 3. Prettify,cJSON (C),citm_catalog.json,23.022814,789217,1578842,87274,0 3. Prettify,cJSON (C),twitter.json,12.403630,557961,1116464,30092,0 4. Statistics,cJSON (C),canada.json,1.382342,0,0,0,0 4. Statistics,cJSON (C),citm_catalog.json,0.661074,0,0,0,0 4. Statistics,cJSON (C),twitter.json,0.536489,0,0,0,0 7. Code size,cJSON (C),jsonstat,0,0,0,0,16896 1. Parse,mikeando/FastJson (C++),canada.json,94.168268,8715344,10967040,26,0 1. Parse,mikeando/FastJson (C++),citm_catalog.json,15.655107,2687394,4465698,26,0 1. Parse,mikeando/FastJson (C++),twitter.json,5.689998,1361528,2009468,30,0 2. Stringify,mikeando/FastJson (C++),canada.json,155.408456,2251088,2251088,2,0 2. Stringify,mikeando/FastJson (C++),citm_catalog.json,17.423455,501056,501056,2,0 2. Stringify,mikeando/FastJson (C++),twitter.json,3.652182,562464,562464,2,0 4. Statistics,mikeando/FastJson (C++),canada.json,0.619079,0,0,0,0 4. Statistics,mikeando/FastJson (C++),citm_catalog.json,0.202277,0,0,0,0 4. Statistics,mikeando/FastJson (C++),twitter.json,0.119686,0,0,0,0 7. Code size,mikeando/FastJson (C++),jsonstat,0,0,0,0,54784 1. Parse,Jansson (C),canada.json,126.305438,9574494,9574537,224392,0 1. Parse,Jansson (C),citm_catalog.json,34.487851,5087615,5087692,111230,0 1. Parse,Jansson (C),twitter.json,17.471050,1727520,1728050,43822,0 2. Stringify,Jansson (C),canada.json,101.538774,2362181,6556485,21,0 2. Stringify,Jansson (C),citm_catalog.json,8.531323,551271,1599847,19,0 2. Stringify,Jansson (C),twitter.json,4.089982,492628,1016916,18,0 3. Prettify,Jansson (C),canada.json,129.543967,8272183,16660791,22,0 3. Prettify,Jansson (C),citm_catalog.json,14.299013,1727221,3824373,20,0 3. Prettify,Jansson (C),twitter.json,5.494721,767328,1815904,19,0 4. Statistics,Jansson (C),canada.json,1.380592,0,0,0,0 4. Statistics,Jansson (C),citm_catalog.json,0.801058,0,0,0,0 4. Statistics,Jansson (C),twitter.json,0.450748,0,0,0,0 7. Code size,Jansson (C),jsonstat,0,0,0,0,26112 1. Parse,JsonCpp (C++),canada.json,152.349106,21437710,25940014,279307,0 1. Parse,JsonCpp (C++),citm_catalog.json,25.602718,6141907,9697427,134396,0 1. Parse,JsonCpp (C++),twitter.json,12.070118,1907104,3201319,53818,0 2. Stringify,JsonCpp (C++),canada.json,120.270729,2251088,4883854,108914,0 2. Stringify,JsonCpp (C++),citm_catalog.json,13.918956,500352,1200266,15302,0 2. Stringify,JsonCpp (C++),twitter.json,10.953746,466976,987030,13212,0 4. Statistics,JsonCpp (C++),canada.json,5.229101,0,32,1,0 4. Statistics,JsonCpp (C++),citm_catalog.json,1.316549,0,64,451,0 4. Statistics,JsonCpp (C++),twitter.json,0.974988,0,464,2336,0 7. Code size,JsonCpp (C++),jsonstat,0,0,0,0,69632 1. Parse,JSON Spirit (C++),canada.json,166.707962,9843624,20021496,686313,0 1. Parse,JSON Spirit (C++),citm_catalog.json,118.991275,3580800,8937544,431416,0 1. Parse,JSON Spirit (C++),twitter.json,40.779081,1614176,3878856,118646,0 2. Stringify,JSON Spirit (C++),canada.json,158.846812,2251088,4672463,31,0 2. Stringify,JSON Spirit (C++),citm_catalog.json,22.161213,500400,1217845,1670,0 2. Stringify,JSON Spirit (C++),twitter.json,16.916713,691280,1408725,13054,0 3. Prettify,JSON Spirit (C++),canada.json,296.784918,8272224,20530432,35,0 3. Prettify,JSON Spirit (C++),citm_catalog.json,58.614089,2005184,4426559,1673,0 3. Prettify,JSON Spirit (C++),twitter.json,25.639114,1020432,2096599,13055,0 4. Statistics,JSON Spirit (C++),canada.json,1.686107,0,0,0,0 4. Statistics,JSON Spirit (C++),citm_catalog.json,0.530539,0,0,0,0 4. Statistics,JSON Spirit (C++),twitter.json,0.252321,0,0,0,0 7. Code size,JSON Spirit (C++),jsonstat,0,0,0,0,119296 1. Parse,hjiang/JSON++ (C++),canada.json,331.613980,5916112,10418244,338938,0 1. Parse,hjiang/JSON++ (C++),citm_catalog.json,106.589396,4855666,8411018,108826,0 1. Parse,hjiang/JSON++ (C++),twitter.json,45.139931,2085136,3379139,55382,0 2. Stringify,hjiang/JSON++ (C++),canada.json,372.620885,3749712,18571804,489301,0 2. Stringify,hjiang/JSON++ (C++),citm_catalog.json,80.918785,946960,2970039,154965,0 2. Stringify,hjiang/JSON++ (C++),twitter.json,31.869801,576496,1870389,59943,0 4. Statistics,hjiang/JSON++ (C++),canada.json,1.166066,0,0,0,0 4. Statistics,hjiang/JSON++ (C++),citm_catalog.json,0.509192,0,0,0,0 4. Statistics,hjiang/JSON++ (C++),twitter.json,0.327912,0,0,0,0 7. Code size,hjiang/JSON++ (C++),jsonstat,0,0,0,0,38912 1. Parse,Jzon (C++),canada.json,307.931142,25537008,38605236,804310,0 1. Parse,Jzon (C++),citm_catalog.json,141.374713,4967882,11797746,151927,0 1. Parse,Jzon (C++),twitter.json,60.466427,2223472,5341875,88143,0 2. Stringify,Jzon (C++),canada.json,67.914274,2251088,4672463,108910,0 2. Stringify,Jzon (C++),citm_catalog.json,24.852054,500768,1218213,929,0 2. Stringify,Jzon (C++),twitter.json,13.767074,473008,951305,5467,0 3. Prettify,Jzon (C++),canada.json,105.517818,8272224,20530432,332130,0 3. Prettify,Jzon (C++),citm_catalog.json,34.143141,1988368,4409743,54574,0 3. Prettify,Jzon (C++),twitter.json,16.197895,789568,1865735,18721,0 4. Statistics,Jzon (C++),canada.json,3.399511,0,32,1,0 4. Statistics,Jzon (C++),citm_catalog.json,0.621529,0,64,451,0 4. Statistics,Jzon (C++),twitter.json,0.545238,0,464,2336,0 7. Code size,Jzon (C++),jsonstat,0,0,0,0,46592 1. Parse,Parson (C),canada.json,97.195771,5357678,5377614,336060,0 1. Parse,Parson (C),citm_catalog.json,25.272006,1962423,1962725,185585,0 1. Parse,Parson (C),twitter.json,13.423413,892368,892685,72477,0 4. Statistics,Parson (C),canada.json,1.223460,0,0,0,0 4. Statistics,Parson (C),citm_catalog.json,3.299772,0,0,0,0 4. Statistics,Parson (C),twitter.json,5.529367,0,0,0,0 7. Code size,Parson (C),jsonstat,0,0,0,0,19456 1. Parse,PicoJSON (C++),canada.json,183.882245,4477928,8024184,795175,0 1. Parse,PicoJSON (C++),citm_catalog.json,56.866389,4193914,6875458,438623,0 1. Parse,PicoJSON (C++),twitter.json,25.557224,1899188,3583592,132031,0 2. Stringify,PicoJSON (C++),canada.json,142.124327,2632814,4388024,108908,0 2. Stringify,PicoJSON (C++),citm_catalog.json,20.548947,520102,866805,26,0 2. Stringify,PicoJSON (C++),twitter.json,10.066947,520102,866805,224,0 4. Statistics,PicoJSON (C++),canada.json,0.605431,0,0,0,0 4. Statistics,PicoJSON (C++),citm_catalog.json,0.318464,0,0,0,0 4. Statistics,PicoJSON (C++),twitter.json,0.240422,0,0,0,0 7. Code size,PicoJSON (C++),jsonstat,0,0,0,0,35328 1. Parse,RapidJSON_AutoUTF (C++),canada.json,13.228835,4207842,4656249,77,0 1. Parse,RapidJSON_AutoUTF (C++),citm_catalog.json,9.467116,1573602,1585266,35,0 1. Parse,RapidJSON_AutoUTF (C++),twitter.json,6.117999,983562,991338,25,0 2. Stringify,RapidJSON_AutoUTF (C++),canada.json,27.115945,2873369,2873882,28,0 2. Stringify,RapidJSON_AutoUTF (C++),citm_catalog.json,3.488401,567624,568137,24,0 2. Stringify,RapidJSON_AutoUTF (C++),twitter.json,2.876321,567624,568137,24,0 3. Prettify,RapidJSON_AutoUTF (C++),canada.json,62.763564,9697485,9697998,31,0 3. Prettify,RapidJSON_AutoUTF (C++),citm_catalog.json,10.903352,1915598,1916111,27,0 3. Prettify,RapidJSON_AutoUTF (C++),twitter.json,4.742307,851408,851921,25,0 4. Statistics,RapidJSON_AutoUTF (C++),canada.json,0.691521,0,0,0,0 4. Statistics,RapidJSON_AutoUTF (C++),citm_catalog.json,0.311814,0,0,0,0 4. Statistics,RapidJSON_AutoUTF (C++),twitter.json,0.157832,0,0,0,0 5. Sax Round-trip,RapidJSON_AutoUTF (C++),canada.json,37.071605,56,2874139,30,0 5. Sax Round-trip,RapidJSON_AutoUTF (C++),citm_catalog.json,11.851393,56,568394,26,0 5. Sax Round-trip,RapidJSON_AutoUTF (C++),twitter.json,8.280052,56,568714,28,0 6. SaxStatistics,RapidJSON_AutoUTF (C++),canada.json,10.994341,0,257,2,0 6. SaxStatistics,RapidJSON_AutoUTF (C++),citm_catalog.json,8.654159,0,257,2,0 6. SaxStatistics,RapidJSON_AutoUTF (C++),twitter.json,5.398132,0,577,4,0 7. Code size,RapidJSON_AutoUTF (C++),jsonstat,0,0,0,0,28672 1. Parse,RapidJSON_FullPrec (C++),canada.json,18.461086,4207842,4656249,77,0 1. Parse,RapidJSON_FullPrec (C++),citm_catalog.json,4.681414,1573602,1585266,35,0 1. Parse,RapidJSON_FullPrec (C++),twitter.json,3.002306,983562,991338,25,0 2. Stringify,RapidJSON_FullPrec (C++),canada.json,17.069646,2873369,2873882,28,0 2. Stringify,RapidJSON_FullPrec (C++),citm_catalog.json,2.079812,567624,568137,24,0 2. Stringify,RapidJSON_FullPrec (C++),twitter.json,2.002471,567624,568137,24,0 3. Prettify,RapidJSON_FullPrec (C++),canada.json,25.515229,9697485,9697998,31,0 3. Prettify,RapidJSON_FullPrec (C++),citm_catalog.json,4.238015,1915598,1916111,27,0 3. Prettify,RapidJSON_FullPrec (C++),twitter.json,2.660745,851408,851921,25,0 4. Statistics,RapidJSON_FullPrec (C++),canada.json,0.691171,0,0,0,0 4. Statistics,RapidJSON_FullPrec (C++),citm_catalog.json,0.350660,0,0,0,0 4. Statistics,RapidJSON_FullPrec (C++),twitter.json,0.158182,0,0,0,0 5. Sax Round-trip,RapidJSON_FullPrec (C++),canada.json,33.315835,2873369,2874139,30,0 5. Sax Round-trip,RapidJSON_FullPrec (C++),citm_catalog.json,5.983965,567624,568394,26,0 5. Sax Round-trip,RapidJSON_FullPrec (C++),twitter.json,4.431893,567624,568714,28,0 6. SaxStatistics,RapidJSON_FullPrec (C++),canada.json,17.285221,0,257,2,0 6. SaxStatistics,RapidJSON_FullPrec (C++),citm_catalog.json,4.018940,0,257,2,0 6. SaxStatistics,RapidJSON_FullPrec (C++),twitter.json,2.415773,0,577,4,0 7. Code size,RapidJSON_FullPrec (C++),jsonstat,0,0,0,0,26112 1. Parse,RapidJSON_Insitu (C++),canada.json,7.868499,6458903,6907310,78,0 1. Parse,RapidJSON_Insitu (C++),citm_catalog.json,4.537580,3351275,3362939,36,0 1. Parse,RapidJSON_Insitu (C++),twitter.json,2.502213,1368318,1376094,22,0 2. Stringify,RapidJSON_Insitu (C++),canada.json,16.759931,2873369,2873882,28,0 2. Stringify,RapidJSON_Insitu (C++),citm_catalog.json,2.043416,567624,568137,24,0 2. Stringify,RapidJSON_Insitu (C++),twitter.json,1.906232,567624,568137,24,0 3. Prettify,RapidJSON_Insitu (C++),canada.json,25.445586,9697485,9697998,31,0 3. Prettify,RapidJSON_Insitu (C++),citm_catalog.json,4.240814,1915598,1916111,27,0 3. Prettify,RapidJSON_Insitu (C++),twitter.json,2.608251,851408,851921,25,0 4. Statistics,RapidJSON_Insitu (C++),canada.json,0.700620,0,0,0,0 4. Statistics,RapidJSON_Insitu (C++),citm_catalog.json,0.317764,0,0,0,0 4. Statistics,RapidJSON_Insitu (C++),twitter.json,0.153982,0,0,0,0 5. Sax Round-trip,RapidJSON_Insitu (C++),canada.json,22.361040,2873369,5124983,30,0 5. Sax Round-trip,RapidJSON_Insitu (C++),citm_catalog.json,6.277231,567624,2345850,26,0 5. Sax Round-trip,RapidJSON_Insitu (C++),twitter.json,4.429093,567624,1215173,26,0 6. SaxStatistics,RapidJSON_Insitu (C++),canada.json,5.965767,0,2251101,2,0 6. SaxStatistics,RapidJSON_Insitu (C++),citm_catalog.json,4.055336,0,1777713,2,0 6. SaxStatistics,RapidJSON_Insitu (C++),twitter.json,2.255492,0,647036,2,0 7. Code size,RapidJSON_Insitu (C++),jsonstat,0,0,0,0,26112 1. Parse,RapidJSON (C++),canada.json,7.348809,4207842,4656249,77,0 1. Parse,RapidJSON (C++),citm_catalog.json,4.449741,1573602,1585266,35,0 1. Parse,RapidJSON (C++),twitter.json,2.965910,983562,991338,25,0 2. Stringify,RapidJSON (C++),canada.json,16.738233,2873369,2873882,28,0 2. Stringify,RapidJSON (C++),citm_catalog.json,2.095560,567624,568137,24,0 2. Stringify,RapidJSON (C++),twitter.json,1.969574,567624,568137,24,0 3. Prettify,RapidJSON (C++),canada.json,25.415140,9697485,9697998,31,0 3. Prettify,RapidJSON (C++),citm_catalog.json,4.244314,1915598,1916111,27,0 3. Prettify,RapidJSON (C++),twitter.json,2.707290,851408,851921,25,0 4. Statistics,RapidJSON (C++),canada.json,0.691521,0,0,0,0 4. Statistics,RapidJSON (C++),citm_catalog.json,0.312864,0,0,0,0 4. Statistics,RapidJSON (C++),twitter.json,0.163781,0,0,0,0 5. Sax Round-trip,RapidJSON (C++),canada.json,21.294712,2873369,2874139,30,0 5. Sax Round-trip,RapidJSON (C++),citm_catalog.json,5.756491,567624,568394,26,0 5. Sax Round-trip,RapidJSON (C++),twitter.json,4.375199,567624,568714,28,0 6. SaxStatistics,RapidJSON (C++),canada.json,5.156310,0,257,2,0 6. SaxStatistics,RapidJSON (C++),citm_catalog.json,3.700476,0,257,2,0 6. SaxStatistics,RapidJSON (C++),twitter.json,2.426272,0,577,4,0 7. Code size,RapidJSON (C++),jsonstat,0,0,0,0,26112 1. Parse,SimpleJSON (C++),canada.json,57.520114,36111424,40657506,506135,0 1. Parse,SimpleJSON (C++),citm_catalog.json,30.919660,10505184,14061890,205263,0 1. Parse,SimpleJSON (C++),twitter.json,21.014394,4781632,6076440,115140,0 2. Stringify,SimpleJSON (C++),canada.json,261.540454,3155281,7888103,337239,0 2. Stringify,SimpleJSON (C++),citm_catalog.json,50.057568,1004915,2499969,101834,0 2. Stringify,SimpleJSON (C++),twitter.json,27.536247,1901117,4330708,43475,0 4. Statistics,SimpleJSON (C++),canada.json,2.192499,0,0,0,0 4. Statistics,SimpleJSON (C++),citm_catalog.json,1.329848,0,0,0,0 4. Statistics,SimpleJSON (C++),twitter.json,0.304465,0,0,0,0 7. Code size,SimpleJSON (C++),jsonstat,0,0,0,0,32768 1. Parse,strdup (C),canada.json,0.583733,2251085,2251085,2,0 1. Parse,strdup (C),citm_catalog.json,0.471046,1777697,1777697,2,0 1. Parse,strdup (C),twitter.json,0.075591,647020,647020,2,0 2. Stringify,strdup (C),canada.json,0.616279,2251077,2251077,2,0 2. Stringify,strdup (C),citm_catalog.json,0.497293,1777689,1777689,2,0 2. Stringify,strdup (C),twitter.json,0.070342,647012,647012,2,0 1. Parse,udp/json-parser (C),canada.json,60.637207,12037126,12037126,223233,0 1. Parse,udp/json-parser (C),citm_catalog.json,27.447707,3381911,3381911,51205,0 1. Parse,udp/json-parser (C),twitter.json,9.187498,1601352,1601352,20237,0 2. Stringify,udp/json-parser (C),canada.json,147.878718,1043624,1043624,2,0 2. Stringify,udp/json-parser (C),citm_catalog.json,2.812278,500726,500726,2,0 2. Stringify,udp/json-parser (C),twitter.json,2.075262,472967,472967,2,0 3. Prettify,udp/json-parser (C),canada.json,149.570424,7957671,7957671,2,0 3. Prettify,udp/json-parser (C),citm_catalog.json,3.395311,1929503,1929503,2,0 3. Prettify,udp/json-parser (C),twitter.json,2.178501,835281,835281,2,0 4. Statistics,udp/json-parser (C),canada.json,1.556272,0,0,0,0 4. Statistics,udp/json-parser (C),citm_catalog.json,0.291867,0,0,0,0 4. Statistics,udp/json-parser (C),twitter.json,0.150483,0,0,0,0 7. Code size,udp/json-parser (C),jsonstat,0,0,0,0,19968 1. Parse,ujson4c (C),canada.json,7.874448,8372248,12874362,11,0 1. Parse,ujson4c (C),citm_catalog.json,4.954733,4177944,7733272,10,0 1. Parse,ujson4c (C),twitter.json,2.348231,2080792,3374770,9,0 4. Statistics,ujson4c (C),canada.json,0.691171,0,0,0,0 4. Statistics,ujson4c (C),citm_catalog.json,0.328962,0,0,0,0 4. Statistics,ujson4c (C),twitter.json,0.153282,0,0,0,0 7. Code size,ujson4c (C),jsonstat,0,0,0,0,23040 1. Parse,Vinenthz/libjson (C),canada.json,105.432778,4460990,4489927,334389,0 1. Parse,Vinenthz/libjson (C),citm_catalog.json,22.576615,1877047,1905986,153901,0 1. Parse,Vinenthz/libjson (C),twitter.json,9.852422,1052784,1081728,72620,0 2. Stringify,Vinenthz/libjson (C),canada.json,90.969984,4194336,4194336,13,0 2. Stringify,Vinenthz/libjson (C),citm_catalog.json,6.828418,524320,524320,10,0 2. Stringify,Vinenthz/libjson (C),twitter.json,4.457090,524320,524320,10,0 3. Prettify,Vinenthz/libjson (C),canada.json,90.879344,4194336,4194336,13,0 3. Prettify,Vinenthz/libjson (C),citm_catalog.json,6.781873,524320,524320,10,0 3. Prettify,Vinenthz/libjson (C),twitter.json,4.460939,524320,524320,10,0 4. Statistics,Vinenthz/libjson (C),canada.json,0.905696,0,0,0,0 4. Statistics,Vinenthz/libjson (C),citm_catalog.json,0.374107,0,0,0,0 4. Statistics,Vinenthz/libjson (C),twitter.json,0.354159,0,0,0,0 5. Sax Round-trip,Vinenthz/libjson (C),canada.json,24.830357,4194336,4198688,15,0 5. Sax Round-trip,Vinenthz/libjson (C),citm_catalog.json,14.040392,524320,528672,12,0 5. Sax Round-trip,Vinenthz/libjson (C),twitter.json,7.770510,524320,528672,12,0 6. SaxStatistics,Vinenthz/libjson (C),canada.json,17.843407,0,4352,2,0 6. SaxStatistics,Vinenthz/libjson (C),citm_catalog.json,10.320668,0,4352,2,0 6. SaxStatistics,Vinenthz/libjson (C),twitter.json,4.115879,0,4352,2,0 7. Code size,Vinenthz/libjson (C),jsonstat,0,0,0,0,26112 1. Parse,YAJL (C),canada.json,125.578571,10163570,10165994,501567,0 1. Parse,YAJL (C),citm_catalog.json,26.223897,2409606,2414078,189685,0 1. Parse,YAJL (C),twitter.json,9.567205,1172616,1177088,77047,0 2. Stringify,YAJL (C),canada.json,105.263747,4198520,4198520,15,0 2. Stringify,YAJL (C),citm_catalog.json,8.206210,528504,528504,12,0 2. Stringify,YAJL (C),twitter.json,3.714125,528504,528504,12,0 3. Prettify,YAJL (C),canada.json,157.884772,8392824,8392824,16,0 3. Prettify,YAJL (C),citm_catalog.json,21.513787,2101368,2101368,14,0 3. Prettify,YAJL (C),twitter.json,6.469359,1052792,1052792,13,0 4. Statistics,YAJL (C),canada.json,1.717253,0,0,0,0 4. Statistics,YAJL (C),citm_catalog.json,0.825905,0,0,0,0 4. Statistics,YAJL (C),twitter.json,0.587233,0,0,0,0 5. Sax Round-trip,YAJL (C),canada.json,186.618932,4198520,4202992,22,0 5. Sax Round-trip,YAJL (C),citm_catalog.json,14.780558,528504,532976,19,0 5. Sax Round-trip,YAJL (C),twitter.json,5.744592,528504,532976,19,0 6. SaxStatistics,YAJL (C),canada.json,76.279716,0,4472,7,0 6. SaxStatistics,YAJL (C),citm_catalog.json,7.531838,0,4472,7,0 6. SaxStatistics,YAJL (C),twitter.json,2.680343,0,4472,7,0 7. Code size,YAJL (C),jsonstat,0,0,0,0,27136
JPEG
PNG
PDF
SVG


Please take a look at these screenshots of my desktop.
In case you are not agree with me that my Openbox screenshots is pretty decent, you can create another look for yours. There will be plenty space for the aesthetic sense to kick in.
In this lesson I will show you the nuts and bolts of how to configure the look of an Openbox desktop.
About composite, because my installation often has minimalism in its nature, I try to avoid any visual effect. So, the Ubuntu Openbox of this guide will not have that feature.
First, I will install themes switchers, then show you how to change taskbar theme, Openbox theme, icon theme, gtk theme, cursor theme.
The easiest way to changing theme and icon in Openbox is using a theme switcher. They are Lxappearance and Obconf.
Lxapperance has the option for you to change Gtk theme, icon theme and cursor theme.
Obconf are for changing Openbox theme
To install them:
sudo apt-get install lxappearance obconf


My experience with 5-MeO-DIPT left such an indelible impression on me that I can still recall many details to this day (7 years later). I naïve 17 year old, I was given this drug by a friend without doing the proper research. I had never heard of the drug, let alone researched it adequately. Had I done my research, I would have probably avoided it. However, after numerous LSD and mushroom trips as a teenager, I considered myself a seasoned veteran of psychedelics. Well, the 5-MeO-DIPT humbled me!
I, my boyfriend, and our friend (I’ll call him “Jim”) each ingested one capsule around 6 p.m. The capsules appeared full, and I assume this was due to some type of “filler”, however I do not know the dose of 5-MeO-DIPT I consumed. This, I later learned, was very foolish, as such chemicals are extremely dose-sensitive. As fairly small female, I got markedly higher than my larger male counterparts.
The effects started within 45 minutes, feeling like a harsh acid come-up, however, devoid of pleasure. At this point, time became more difficult to gauge, and I quickly realized that the sun was setting. We walked to a park across town, a familiar park of my childhood. However, this park at night seemed menacing. I could feel the waves of paranoia creeping in. The feeling of being watched was distinct. I felt as though our voices were extremely loud, as though everyone in the neighborhood knew what we were up to.
I felt very withdrawn at this point and my stomach was churning.  This disgusted me so much that I could barely speak afterward.
This experience diverged greatly from those I had on LSD or mushrooms, in which group cohesion was high, and I genuinely enjoyed conversation and company. I felt like I was in my own little world, and my companions were irritating me.
Eventually the three of us journeyed back to Jim’s house. I was still feeling quite sick, so I asked Jim if I could take a shower, hoping it would make me feel better. In fact, the shower did make my stomach feel somewhat better.
When I was done, Jim announced that he was going to take a shower as well. When he emerged, he declared that he “threw up about a hundred times” in the shower and now felt great. This made me somewhat nervous, as I was the only one who had not physically gotten sick. At this point, Jim started behaving strangely.  His voyeuristic comments freaked me out, so I insisted that my boyfriend walk me back to my mother’s house.
I am very grateful that I eventually made it home, because the next six hours were pure torture for me. During the 30 minute walk home, I could feel myself becoming more detached and disoriented. We arrived at my mother’s house around eleven p.m. Once I reached my own bedroom, I really let go and allowed myself to become completely de-personalized. I was unaware of who I was, and did not recognize my boyfriend. He calmly said, “Well, in that case, I’m your spirit guide.” My (now unrecognizable) boyfriend appeared elf-like, with pointy ears and nose, and long dripping fingers. His appearance and movements mildly amused me. I looked at myself in the mirror, and I also had this “elf-like” appearance.
However, I began to forget that this was a “trip” that I had desired, and that I had ingested anything. I gradually vacillated between moments of pure clarity and complete confusion. I expressed some profound statements, and yet I was being pulled into another world.
I traveled to another dimension and was communicating with light beings. I was gazing into a vast dark tunnel, and I was not alone. I was conversing with several other-dimensional beings (verbally or telepathically, I’m not sure).
At a certain point, I was pulled back into reality by my boyfriend telling me urgently “Breathe! Don’t forget to breathe!” Apparently, my breathing had become quite irregular. I found myself having to consciously will my lungs to breathe. I began to be aware of my heart beating irregularly. I am certain this was a very real physiological phenomenon, with my heart skipping beats and then beating rapidly to “make up” the missed beats.
Obviously, this was quite distressing. I faced the very real possibility that my body could be shutting down. In fact, I am quite certain I nearly died. This was one of the most profound experiences of my life, standing on the precipice of death while having an intense psychedelic experience.
I nearly plunged into the void, but a light being told me, “No, it’s not your time yet. You have so much left to do!” Then I was given the privilege of witnessing future events from my life that had yet to unfold. Upon the realization that my life was not over, I started to come back into “normal” consciousness. I was ravenously thirsty, and started drinking massive amounts of water from the bathroom faucet. I realized I had been hiking around all summer evening without any water. Plus, I had practically been to “the other side” and back!
I gradually came down as the sun was rising, with real life encroaching harshly. At noon I was still experiencing some residual effects.  I am grateful that I lived to tell the tale, and I will never again take a mysterious white pill just because I’m bored! However, this trip was responsible for much personal spiritual growth, and I now have a new appreciation for life.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


As a default only the peaks currently annotated by a fragment ion is shown in the foreground. The other peaks are shown in grey in the background. Only (red) peaks in the foreground can be selected. To move all peaks to the foreground click the Show All Peaks option in the menu below the spectrum.
DeNovoGUI automatically annotates the a spectrum with the
most likely ions given the spectrum and the peptide sequence identified.
This includes the automatic selection of neutral losses.
However, the user can override the default annotation by selecting
different ion types in the menu below the spectrum. To change the neutral
losses one first has to uncheck the Adapt option on the Loss menu.
To make sure that the same ion types are used for all spectra, the user
can also turn of the automatic annotation completely in the Settings
menu.
Note that the spectrum annotation is relative to the sequenced peptide, even
if the de novo sequencing contains gaps at the terminals. In other words y1
is not always strictly speaking y1, but can be y1 + the mass of the gap. If
there is a gap it is annotated in peptide sequence by '...' as the terminal
at the respective terminal, and the mass of the gap is listed in the N-Gap
and C-Gap columns in the De Novo Peptides table.
Zooming is achieved by clicking and holding the left mouse button where you want to start the zoom, and then drag in the direction you want to zoom, marking the area to be zoomed. Right clicking in the plot undos the zoom.
In DeNovoGUI there are two ways of doing de novo sequencing: manual or automatic.
Manual: Click on one peak. The distance
and amino acids matching this distance (if any) will then
be shown. To add the sequence, click on the second peak.
Repeat the process to sequence more peaks.
An added sequence is removed by holding down the Ctrl button when clicking on
the sequence. To "store" a sequence, hold down the Alt button
and click on the sequence, the sequence turns red. To
remove such "stored" sequences, hold down Ctrl and Alt and
click in the sequence.
Automatic: Go to the De novo option in the menu below the
spectrum and select which ion type you would like to annotate. Note that
this annotation only tries to find matches against the sequence identified
by the PSM, and as such only gives an overview over the match between the
sequence and the spectrum for the selected ion types. For a complete de novo
sequencing showing all options for each distance use the manual option.
Additionally, the de novo sequencing can be colored coded by the scores of the
individual amino acid residues when this is available, e.g., for Novor. To enable
this feature select the Amino Acid Scores option in the De Novo menu.
See also Annotation.


“A few months ago a long-standing colleague of mine decided to leave her tech company after 14 years. The pay was good, benefits great, but she came to the realization that she couldn’t breach that proverbial ‘glass ceiling.’ Despite her stellarqualifications, she resigned.”
So begins an article posted by Neal Leavitt on February 25th, 2015. The article goes on to quote contributors from a Los Angeles times reporter, to a fellow (an associate, not a dude) with Stanford University, a professor UC Hastings College of the Law, and several others all of whom gave perspective on the subject of gender disparity in the Technology sector.
I hesitate to quote the exact statistics outlined in the article because tracking down the studies these people are discussing proved to be impractical for this blog posting. I will leave it for you to see the article for yourself if you would like to chase those rabbits down their respective holes. So for the purposes of this entry, I’ll try to avoid quotes and statistics.
Click here for that article: women-in-tech-industry if you're interested.
I’ve worked most of my life in retail and customer service where the presence of women in leadership positions down to entry level is common place. As a guy, my work-related joys and concerns interacting with female co-workers were the same in working with male counterparts. Having a great boss wasn’t gender specific and my respect (won or lost) didn’t depend on whether you were a man or woman (there are jerks in both genders). The same was true for co-workers I shared rank with, and subordinates I watched over.
I mention this previous experience because it’s hard for me to relate to the information I read in this article. I understand it intellectually, but to this day (and I’m in my 40s) do not comprehend why a woman should be paid any less than her male counterpart, or receive disparaging treatment that man would not. This isn’t feminist training or specific sensitivity; at my core I just don’t believe it’s right to do.
The article goes on to state that the Technologies sector is increasingly dominated by men and not for lack of interest on the part of women. One of Leavitt’s citations from Catalyst, a nonprofit research organization focused on the advancement of women says that given the same number of MBA graduates men and women, 53% of female MBAs left tech intensive professions as compared to 31% of men. This citation pointed to the culture of the sector colloquially called “brogrammer” was a contributing factor.
Brogrammer culture. Okay, the long and short of it is Brogrammer Culture is a good-ole-boys club. Nobody in the article claimed it was a universal truth throughout the industry, but I got the impression everyone thought it was a ubiquitous phenomenon. I got that impression from another article Leavitt cites 600 IT professionals were polled on the subject and gave their frank assessments. These are folks that work in the industry who gave their view based on personal experience and observations.
From their experience the culture being toxic to women seems to manifest in things like being passed up for promotion, not being advanced to a significant position of leadership (think VP or Chief-Executive), not having original ideas heard, not being recognized for exceeding production goals and increasing ROI (return on investment). Personally, I’m not one to stay where I’m not appreciated, but how much worse must it feel to know that you are worth more than the co-worker next to you who’s only obvious difference from you is a single chromosome? I imagine these kinds of behaviors have driven countless women out of the field.
More is the pity because with that loss comes the loss of innovation and advancement the field (and indeed our species) might otherwise have enjoyed. According to Vivek Wadhwa, that Stanford Fellow I mentioned earlier, startups by women “achieve 35% higher return on investment, and, when venture-backed, bring in 12% higher revenue than venture-backed male-owned tech companies.” We are figuratively passing up pure gold and flawless gems because some guy can’t see the value of a woman contributing. I daresay we’d be a lot further along in this game if we all would leave gender out of it.
I leave the advancement of women to them; they know best how to approach the issue. But I do admonish all men to ditch the pride and arrogance in believing a shallow difference amounts to superiority. IT should have no gender. IT shouldn’t have a gender, just my opinion. But what do we do about making that a living reality?
“If we could change ourselves, the tendencies in the world would also change. As a man changes his own nature, so does the attitude of the world change towards him. We need not wait to see what others do.” – Ghandi
Those are the actual words Ghandi spoke which may have led to the less gender biased, “You must be the change you wish to see in the world”, which, apparently, nobody ever actually heard him say.
If real, beneficial and healing change is to occur, we must all of us start behaving by a new standard. When I finally get my job in IT, I will evaluate the worth of a co-worker based on their productivity, their innovation, how much my company is enriched by their presence and how much everyone around that person is enriched. Based on that I will promote them, if only by holding them up in front of others, but also if I am empowered to raise them up professionally. I will document what my criteria are and share that set of criteria with the world, hoping it will be embraced and improved by the world.
After that… maybe start encouraging the establishment of social media campaigns to begin recognizing companies that innovate in the cultural change in IT. Start networking with like-minded people who promote the companies and individuals who contribute both to technology and to the advancement of a gender-blind, color-blind IT community. You know, something small to start.
That’s it for now. Be safe and live well.


| Access Denied |
You do not have permission for this operation.
Please click to return to the home page.
If this does not return you to the home page, then the username you supplied is not authorized to access this server. Please click to log out and try with a different set of credentials.


These plaster models were generated through a multi-step process. First the digital terrain model was assembled using a variety of tools including Blender , HMM and Mapbox. The master models were printed on a Prusa MK2 3D printer and then thin plastic negative molds were made using a vacuum forming machine. The plastic molds were used to cast the final plaster versions of the model.
They almost look real! These digital renders were generated in Blender by using the original map as a UV Map for the digital terrain model.
Some essays on color and imaging. These originated from a three year period where my main recreational activity was self-study in the field of color science. If you're interested in a colorful mathematical journey pick up a copy of Koenderink's Color for the Science and see where it takes you.
A talk I gave at the SF Pen Plotter meetup about 3D projection and 4x4 matrices (40 min). The slides for the talk were also on display at the art exhibit that accompanied the talk. They were created on my Axi Draw pen plotter.
Once upon a time I was obsessed with cataloging and visualizing all my text messages, I haven't updated the chart in years but I still studiously keep track of the data .
These are probably the best photos I've ever taken, though I'm always trying to find ways to one up them.
Four of us went on a 2 week, 450 mile bike camping adventure across 3 countries, I recorded it all with a Garmin, a Moleskin, a Hasselblad and Twitter.
I get asked a lot why I shoot film so I wrote it all down.
The pictures in this post mean a lot to me. They span 5 years, feature 30 friends and 13 strangers, and they were all taken on one of my film cameras.
Compare any rider's performance from the 2013 Levi's Granfondo , speaking of performance, this viz loads incredibly slow.
Slides for a intro to TCP/IP talk I gave to Hackbright Academy . There's certainly plenty of work to be done here to improve these slides. I didn't even have time to talk about UDP!


Here are some of the things I've worked on, both open and closed source:
This website: I already have a personal website that's built with WordPress. I made this website for the sake of being able to customize everything (and really to say that I managed to develop my own website).
Kaktus: Text-to-document converter web application that I developed for a web programming class that I took in the Spring of 2016. Currently only supports .txt files, but there is continuous development on my part and additional features (e.g., Google Drive & Dropbox support, a lot better support for Word documents and PDFs) should be implemented within the coming months.
pollBox: A completely free mobile and web application that helps talented people find gigs, make money and network with others in the field of their dreams as well as help companies and individuals recruit for their business and projects.
Technologies Used:
HTML5/Sass
JavaScript
AngularJS/Ionic
Firebase
- Temporary backend that will be replaced possibly with Node.js & Socket.io or Python w/ Django.


WeConnect API Documentation
The API Docummentation is available for two versions where
API Version 1 is Non Persistent Data
and API Version 2 is one with Persitent data.
The API Docummentation is available for two versions where
API Version 1 is Non Persistent Data
and API Version 2 is one with Persitent data.


--- layout: page title: "About Me" group: navigation author: initialxy --- {% include JB/setup %}
Hi, my name is Xingchen Yu. I've been working professionally as a software developer for a number of years at major software companies. Throughout the years, I've done full stack from mobile to backend. Please check out my Linkedin profile or Github profile.


This example shows you the contents of the selected part of your display. Click the Start Capture button to begin.
Start Capture Stop Capture


Hello I'm Michael, I was recently accepted into a bootcamp at UT Austin. One of my favorite languages to write is Javascript
Here are some of the technologies I enjoy writing day-to-day:
The best way to contact me would be michaeldillie@gmail.com


Nice Doggie. Good Doggie.
by Luke PlunkettBrynn Metheney is an artist specialising in creature design who has worked on stuff like Men In Black, Valerian and Magic: The Gathering.
You can see more of Brynn’s stuff at her personal site.
Brynn Metheney is an artist specialising in creature design who has worked on stuff like Men In Black, Valerian and Magic: The Gathering.
You can see more of Brynn’s stuff at her personal site.


Registry page
Hello you must sign up to use this service
Enter username:
Enter password:
You can also choose the colors of the result page:
Foreground:
Background:


Here are some ways to contact me
You can DM on Discord. This probably the best way to contact me since I always have discord open. My username is: IliasHDZ#4937
You can send me a message on twitter (or maybe even follow me).
This is my Youtube channel. I don't actually upload alot of videos. Most of the videos are GD related.
Here are most of my projects located.
Oh yeah. I forgot to tell you that Joe is a name...


In The Toolbox Ė Home-Grown Tools
Up until now this column has largely talked about tooling from the perspective of using 3rd party tools to ďget stuff doneĒ but there are occasions when the one perfect tool we really need doesnít exist. Itís often possible that we can cobble something together using the standard tools like cat, sed, grep, awk, etc. and solve our problem with a little composition, but if itís not that sort of problem then perhaps itís time to write our own.
In the third instalment of this column [1] I covered what is probably the most lightweight approach to tooling which is to wrap one or more other tools inside a simple script. These are very easy to write and are often an enabler for automating some kind of task. The investment is small and itís an easy win to reduce some friction in the development process and remove another source of human error from the loop. Despite the plethora of extensions and plug-ins available there still seems to be an endless supply of small analysis and integration jobs that need doing to create a free-flowing development process.
At the opposite end of the spectrum are the kinds of constraints that lead to a serious investment in your own tooling. When you look at companies like Netflix and Google and see the tools that they put back into the development community you realise they are dealing with problems at a scale which many of us will never have to deal with. The rise of open source software has meant that companies who have invested in custom tooling are perhaps much more prominent than they once were as they often choose to release the fruits of their labour to the wider community. Clearly companies have had to do this in the past, but historically they may have seen this diversion as a technical advantage to be leveraged rather than a problem to be shared.
One of the earliest examples I know of where a company decided to rely on custom tooling was the Microsoft Excel team which built its own C compiler [2]. Instead of having to use separate compilers for each platform they hedged their bets and created their own which would compile C code to a platform-independent bytecode called ďp-codeĒ. Although the anticipated plethora of platforms never materialised, keeping the compiler in-house still brought them a number of benefits, such as stability and consistency, which in turn allowed them to deliver a better product faster.
This latter example, along with Google creating its own version control system or Dropbox deciding to build its own cloud, is well outside the kinds of bounds Iíve ever experienced. Iím quite certain that if I told my clients that I needed to spend 6 months writing a continuous delivery system or web server framework Iíd be given my marching orders right away. Like all engineering trade-offs there is a balance between trying to bend and twist a general purpose tool into shape versus building exactly what you (think you) need. For the kinds of programming I do the mainstream general-purpose programming languages available easily provide enough features, especially when coupled with the dizzying array of libraries that you now have easy access to.
Back at the very start of my professional career I joined a small software house which was slowly feeling the pinch from ever tighter margins through competition. I suspect they didnít have the kind of budget you needed for an enterprise scale internet mail gateway but they managed to adapt Phil Karnís DOS-based KA9Q suite [3] to send and receive mail to and from their PMail / Netware based setup. Given the free availability of the original source they naturally published both the binaries and source code for their customised version on Cix, Compuserve and Demon.
This was my first real foray into the world of writing & sharing tools. Whilst I had been a consumer of plenty of free software at University it felt good to finally be on the other end Ė giving rather than receiving. Luckily the company was already licensed to use the NetWare SDK for its own licensing library and so I had the opportunity to fill the gaps left by Novellís own tools and produce some little utilities on the side. These were mostly to help with managing the printers but I also wrote a little tool to map out the network and remotely query the machines to help diagnose network problems. These, along with my DOS-based text-mode graphics library that emulated the Netware tools look-and-feel, were all published in source and binary form on Cix too.
Whilst my day job was supposedly writing desktop graphics software I presume my employer (I was permanent back then) was happy to indulge these minor distractions because I was learning relevant skills and still contributing something of business value too. Knowing the people there Iím sure the second-order effects, such as my resulting extra happiness at being given at little latitude, was factored in too. Building tools for pedagogical purposes has remained a theme ever since, however this has largely been restricted to my own personal time since I switched from permanent to freelance status for the reasons cited earlier.
Sadly my desire to build tools to solve reoccurring problems was not always met with such gratitude. Whilst contracting at a large financial institute I found myself being berated for building a simple tool that would allow me to extract subsets of data from our huge trade data files. Despite there only being some arcane methods when I joined the team, and it being a fundamental part of our testing strategy, I was somewhat surprised when my efforts were questioned rather than applauded. Perhaps if I had spent weeks writing it when something more pressing was needed I could understand my poor judgment, but it was developed piecemeal a few hours at a time. Fortunately its true value was realised soon after when the BAU and Analysis teams both started using it to extract data too. However although I felt partly vindicated it still seemed like a shallow victory because it didnít spark the interest in building and sharing tooling that I hoped it would.
One of the things Iíve discovered from writing tools is that your audience often extends far wider than perhaps you envisaged. I mostly write them for my benefit Ė to make my own life easier Ė but naturally if it solves a problem for me then it probably will for someone else too. The area I find this has happened most in the past is with test tools that grow into administration or support tools.
With any complex system you often need to be able to get ďinside itĒ to be able to diagnose a problem that is not apparent from the usual logging and monitoring tools. This might mean that you need to replay a specific request, perhaps using a custom tool that you can drive via a debugger in the comfort of your own chair. Whilst remote debugging of a live system is possible it should obviously be reserved for extreme cases due to the disruption it causes.
This is exactly what happened to the tool I mentioned earlier that I was chastised for spending time on. It was written initially to solve my own needs to generate test data sets and to safely and quickly get hold of production data so that I could replay requests to debug the large, monolithic service. I added a few extra filters to allow me to create data sets such as one that could replay the exact sequence of requests that had caused a grid computing engine to crash. When the BAU team ďdiscoveredĒ it they used it to answer questions about specific customers and the Analysis team used it to address regressions and regulatory questions.
Sometimes itís obvious how something you write can be used in multiple contexts and there is a clear path around adding features that bias it for one use or another.† For instance in production scenarios I like to ensure that any tool behaves in a strictly read-only manner, which I naturally make the default behaviour. On occasion when re-purposing someone elseís creation or a tool thatís already being automated in production I might have to add a command line switch (e.g. --ReadOnly) to allow it to be run in a non-destructive ďsupport modeĒ. This is one of the reasons why I prefer for all integration test environments to be locked down by default as tight as production because it allows you to drive out the security and support requirements by dog-fooding in your non-production environments.
Even tools that you never thought had any use outside the development team have a funny way of showing up in support roles. A mock front-end I once wrote to allow the calculation engine developers to test and debug without waiting an eternity for the real front-end to load got used by the test users to work-around problems with the actual UI. Despite its Matrix-esque visuals one savvy user was so experienced they could see past the raw object identifiers and could have a good idea of what the results were based on the rough shape and patterns of the calculationís solution.
By now it should be pretty apparent that the lionís share of the tools I write are for automating development tasks or for some form of system testing. Whilst I rely heavily on automated unit, integration and acceptance tests for the majority of test coverage I still prefer to do some form of system testing when I make changes that sit outside the norm. For example changes to 3rd party dependencies such as library upgrades or major tooling which might throw up something peculiar at deploy or runtime are good candidates. Also any change where I know the automated integration tests might be weak will cause me to give it the once over locally first before committing and publishing to avoid unnecessarily breaking the build or deployment.
Replacing the real-front end with a lightweight alternative for testing, profiling and debugging is a common theme too. The calculation engines Iíve been involved in often have an extensive front-end, perhaps written Visual Basic or another GUI tool that makes getting to the library entry points Iím concerned with time consuming. In one case the front-end took 4 minutes before it even hit our initial entry point and so building alternative scaffolding is a big time-saver. Often the library will just be fronted by a command line interface with various switches for common options. The command line approach also makes for a great host to use when profiling the library with specific data sets. Naturally this again leads towards a path of automation.
Occasionally Iíve built a desktop GUI based front-end too if I think it will help other developers and testers. When the product has historically been manually tested through a fat client it can provide a half-way house that still helps on the exploratory side without the rawness of a hundred command line arguments and complex configuration files. When the interop layer involves a technology like COM then a proper UI can help unearth some quirks that only occur in these scenarios.
More recently Iíve been working on web-based APIs which tend to be quite dry and boring affairs from a showcasing perspective. Like libraries they are quite tricky things to develop without having some bigger picture to drive them. Hence I favour creating a lightweight UI that can be used to invoke the API in the same manner as the anticipated clients. Not only does this help to elevate the discussion around the design of the API to the clientís perspective but it also provides a useful exploratory testing tool to compliment the suite of automated tests.
Trying to isolate portions of a system, whether at the class or function level for unit testing, or subsystem level to support finer-grained servicing, generally has beneficial effects on the overall architecture. The need to be able to interact with a system through interfaces other than those which an end user or downstream system might use, for the purposes of testing or support, forces the creation of stable internal interfaces and consequently looser coupling between components.
By providing a clear separation of concerns between the layers performing marshalling and IPC and the logic it encapsulates we can provide seams that allow us to compose the same components in different ways to achieve different ends. For example one system I worked on had a number of very small focused ďservicesĒ which were distributed in the production deployment scenario, hosted in-process in a command line host for debugging and support, and scripted through PowerShell for administration of the underlying data stores. Supporting different modes of composability means that any underlying storage remains encapsulated because all access happens through the carefully designed interface rather than with ad-hoc scripts and general purpose tools that end up duplicating behaviour or taking shortcuts. This makes the implementation harder to change due to the unintended tight coupling, or the tools go stale and become dangerous because they may no longer account for any quirks that have developed.
You might think that in this day and age most of our tooling problems have been solved. And yet one only has to look at the continued release of new text editors, new programming languages and new build systems to see that we are far from done yet. Even if your ambitions are far more modest there is still likely to be many problems specific to your own domain and system that would benefit from a sprinkling of custom tooling to reduce the burden of analysis, development, testing, support, documentation, etc. Whilst we should be mindful of not unnecessarily reinventing the wheel or blinkering ourselves with a Not Invented Here (NIH) mentality that does not mean we should also have to put up with a half-baked solution just to drink from the Holy Grail of Reusability. Even the venerable Swiss Army knife canít be used for every job.
[1] In The Toolbox Ė Wrapper Scripts, C Vu 25-3,
http://www.chrisoldwood.com/articles/in-the-toolbox-wrapper-scripts.html
[2] Joel on Software, In Defense of Not-Invented-Here Syndrome,
http://www.joelonsoftware.com/articles/fog0000000007.html
[3] Wikipedia, KA9Q,
https://en.wikipedia.org/wiki/KA9Q
Chris Oldwood
16 August 2016
Chris is a freelance programmer who started out as a bedroom coder in the 80ís writing assembler on 8-bit micros. These days it's enterprise grade technology in plush corporate offices. He also commentates on the Godmanchester duck race and can be easily distracted via<EMAIL_ADDRESS>or @chrisoldwood.


Get started with an easy, short example that showcases the major features of Myra.
This is how you use Myra.
The entry point to the Myra pattern matching machanism is the Match() extension method, that can be invoked from any type of object.
This method takes two parameters:
To create a pattern, use the Pattern.From() method, that takes a Func<T, bool> as a parameter:
var isEven = Pattern<int>.From(n => n % 2 is 0); var isHusky = Pattern<Dog>.From(d => d is Husky);
A normal call to Match can look like this:
number.Match(isEven, n => Console.WriteLine($"{n} is even.")); // You can also inline the pattern number.Match(Pattern<int>.From(n => n % 2 is 0), n => Console.WriteLine($"{n} is even."));
You can match several patterns against the same object.
To try a different pattern with an object, append another call to Match after the first one:
fluffy.Match(Pattern<Dog>.From(d => d is Husky), d => Console.WriteLine($"{d.Name} is truly fluffly.")) .Match(Pattern<Dog>.From(d => d.Heads.Count > 1), d => Console.WriteLine($"{d.Name} is guarding the philosopher's stone."));
All the patterns will be checked, and any matching patterns will be executed. If you need a more advanced condition system, check the Advanced Logic guide.


I am Software Engineer with more than 12+ years experience working in Telecommunications Network Assurance domain with focus on Agile and Automation. Currently working as Technology Analyst for Infosys Ltd in Melbourne, Australia.
Experience
Technology Lead
Infosys Ltd
October 2019 - Present
Technology Analyst
Infosys Ltd
September 2014 - September 2019
Senior Systems Engineer
Infosys Ltd
January 2013 - September 2014
Systems Engineer
Infosys Ltd
October 2010 -January 2013
Education
Mahathma Gandhi University, Kottayam
Bachelor of Technology
Computer Science and Engineering
October 2006 - May 2010
Placid Viday Vihar Senior Secondary School
All India Senior School Certificate Examination (AISSCE)
June 2004 - May 2006
Skills
Programming Languages & Tools
Workflow
OSS Network Assurnace (specializing in Fault Management)
Automation tools and platforms
IBM Tivoli tool suite , EMS Systems, AWS, Ansible, Jenkins
SAFe certified agile practitioner
Awards & Certifications
SAFe® 4 Practitioner
ITIL Foundation Certificate in IT Service Management


{% extends "base.html" %} {% import "bootstrap/wtf.html" as wtf %} {% block title %}{{ super() }} - Delete Location{% endblock %} {% block page_content %}
Are you sure, you want to delete {{ location.name }}?


Lisp on Lines (LoL) is a framework for rapid development of data-driven applications, with a particular focus on web-based applications. It builds on the UncommonWeb engine and Contextl, and uses CLOS and the MOP extensively. Most of LoL can be used both at the REPL and through the browser, offering many options for development and testing.
While the target audience for LoL is developers experienced with both web technologies and common lisp, a good programmer with a little experience in either should be able to pick things up fairly quickly.
LoL has a load of dependencies, which themselves depend on others, etc. The best way to deal with this is to use clbuild, a library management tool.
If you'd prefer to manage your libraries manually, the dependencies, according to clbuild, are :
alexandria arnesi bordeaux-threads cl-base64 cl-fad cl-mime cl-ppcre cl-qprint closer-mop contextl iterate lift local-time lw-compat net-telent-date parenscript parse-number portable-threads puri rfc2109 slime split-sequence trivial-garbage ucw usocket yaclml
All libraries should be installed from version control where available.
LoL uses a protocol it calls Meta-Attributed Objects, or MAO, as the basis of its display mechanism. In MAO, we create context-aware DESCRIPTIONs of objects, and those descriptions are used to generate the display of the object itself. By having these external descriptions change based on the context in which they are used, a few generic components can come together to create complex interfaces.
Descriptions are a similar conceptually to classes. Every Lisp object has one, and the root description that all descriptions inherit from is known as T. FIND-DESCRIPTION is used to, well, find descriptions.
(find-description t) => #<DESCRIPTION T {B7B9861}>
A description is a collection of ATTRIBUTEs, among other things. Each attribute describes a part of an object, and any number of attributes may or may not be active. The ATTRIBUTES function is used to find a the list attributes that are both active and applicable in the current context.
(attributes (find-description t)) =>(#<ATTRIBUTE IDENTITY {BBC9691}> #<ATTRIBUTE TYPE {BBC96A1}> #<ATTRIBUTE CLASS {BBC96B1}>)
The functions DESCRIPTION-ATTRIBUTES, DESCRIPTION-ACTIVE-ATTRIBUTES and DESCRIPTION-CURRENT-ATTRIBUTES return all the descriptions attributes, Attributes that are currently active regardless of context, and attributes that exist in the current context but may or may not be active, respectively.
Attributes have properties, for example ATTRIBUTE-LABEL and ATTRIBUTE-VALUE. By simply iterating through the attributes of a described object, we can create a generic display for any lisp object. This is very similar, and was inspired by the technique outlined by Adrian Lienhard in MEWA: A Meta-level Architecture for Generic Web-Application Construction_.
For attribute properties to be useful, the description must be associated with the object it is meant to describe.
The function FUNCALL-WITH-DESCRIBED-OBJECT takes care of setting up the proper context. There is some syntax for it in the form of WITH-DESCRIBED-OBJECT :
(let ((description (find-description t)) (object "Hello World")) (with-described-object (object description) (dolist (a (attributes description)) (format t "~@[~A: ~]~A~%" (attribute-label a) (attribute-value a))))) => Hello World Type: (SIMPLE-ARRAY CHARACTER (11)) Class: #<BUILT-IN-CLASS SB-KERNEL::SIMPLE-CHARACTER-STRING> NIL
FUNCALL-WITH-DESCRIBED-OBJECT binds two specials, DESCRIPTION and OBJECT, to its arguments. Knowing this, we can shorten our code somewhat. Later on we'll be far away from the lexical bindings of description and object, so these special variables are essential.
Another reason for the description variable is that WITH-DESCRIBED-OBJECT will use DESCRIPTION-OF to determine the description if the DESCRIPTION argument is NIL
(with-described-object ("Hello World" nil) (dolist (a (attributes *description*)) (format t "~@[~A: ~]~A~%" (attribute-label a) (attribute-value a)))) Lets wrap that up in a function that we can re-use. LoL includes an entire DISPLAY mechanism that is slightly more involved, but this serves as an excellent example with not bogging us down in details. #+BEGIN_SRC lisp (defun present (object &optional description) (with-described-object (object description) (dolist (a (attributes *description*)) (format t "~@[~A: ~]~A~%" (attribute-label a) (attribute-value a)))))
MAO adds to MEWA the concept of dynamic context. By changing the context in which an object is described, we combine and specialize the generic displays, ultimately creating different views of our objects. LoL uses ContextL extensively. Descriptions are contextl layers, and attributes themselves are layered classes. Most of the exported functions are layered methods, and the idea of dynamic context-sensitivity is used throughout LoL. If you're not familiar with contextl, don't worry, LoL mostly stands on its own. Still, reading through the material on contextl won't hurt.
Descriptions may have different attributes dependant on what description contexts (or layers) are currently active. Attributes themselves might have different properties.
When an object is being described (using WITH-DESCRIBED-OBJECT), it is also activated as a layer context. One can also activate/deactivate contexts manually, using WITH-ACTIVE-DESCRIPTIONS and WITH-INACTIVE-DESCRIPTIONS.
Hopefully a little code will make this more clear :
(present "Hello World") => Hello World Type: (SIMPLE-ARRAY CHARACTER (11)) Class: #<BUILT-IN-CLASS SB-KERNEL::SIMPLE-CHARACTER-STRING> Simple character string ;; Now we'll activate a built-in description, INLINE. (with-active-descriptions (inline) (present "Hello World")) => Hello World
You can see that the behavior of PRESENT changed when the INLINE context was activated. This is the key innovation that makes LoL so useful. In the next chapter we'll create our own descriptions and demonstrate this further.
The basics of the MAO should now (hopefully) be clear, so lets start using it. First, we'll create our very own description.
(define-description hello-world () ((title :value "Lisp on Lines Demo") (identity :label "Message") (length :label "Length" :function #'length) (active-attributes :value '(title identity length))))
Descriptions are defined very much like CLOS classes, and are in fact implemented that way, inheritance rules apply. The object returned from FIND-DESCRIPTION is best described as a prototype-based singleton. In other words, there is only one instance, and it inherits attributes and properties from further up its hierarchy unless specifically overridden.
Attributes can have any number of properties, (see the class STANDARD-ATTRIBUTE), but the three most important are accessed via the methods ATTRIBUTE-LABEL, ATTRIBUTE-VALUE and ATTRIBUTE-FUNCTION,and named (in DEFINE-DESCRIPTION forms and elsewhere) by the :label, :value, and :function keywords.
ATTRIBUTE-LABEL is simply a textual label that describes the attribute. ATTRIBUTE-VALUE is defined to return the result of calling ATTRIBUTE-FUNCTION with the object as its argument. If ATTRIBUTE-FUNCTION is NIL, the value of the :value property is returned directly.
In the example above, the IDENTITY and ACTIVE-ATTRIBUTES attributes are inherited from T, and we are simply overriding the default properties for our description. LENGTH and TITLE are specific to this description. A look at src/standard-descriptions/t.lisp may be instructive at this point.
Now, we can present our object using our new description.
(present "Hello World" (find-description 'hello-world))
=>
Lisp on Lines Demo
Message: Hello World
Length: 11
NIL
A we mentioned earlier, when an object is being described, the 'description context' is also made active. On top of that, one can define partial descriptions that are only active when other description contexts have been activated.
We'll make a ONE-LINE description similar to the INLINE description demonstrated earlier.
(define-description one-line ()) (define-description hello-world () ((identity :label nil) (active-attributes :value '(identity))) (:in-description one-line))
Here we've defined a new description, ONE-LINE, and a context-sensitive extension to our HELLO-WORLD description. This partial desription will be active only when in the context of a one-line description. One can have attributes that only exist in certain description contexts, and attributes can have different properties.
(let ((message "Hello World!") (description (find-description 'hello-world))) (print :normal)(terpri) (present message description) (print :one-line)(terpri) (with-active-descriptions (one-line) (present message description))) => :NORMAL Lisp on Lines Demo Message: Hello World! Length: 12 :ONE-LINE Hello World! NIL
By activating the description ONE-LINE, we've changed the context in which our object is displayed. We can create any number of descriptions and contexts and activate/deactivate them in any order.
Descriptions are implemented as ContextL 'layers', so if all this seems weird, reading the ContextL papers might help.
Because all descriptions inherit from T, we can define contexts for T and they will apply to every description. The INLINE description can be found in standard-descriptions/inline.lisp, where we define a desription for T in the context of the INLINE description :
;; Defined by LoL in inline.lisp : (define-description t () ((identity :label nil) (active-attributes :value '(identity)) (attribute-delimiter :value ", ") (label-formatter :value (curry #'format nil "~A: ")) (value-formatter :value (curry #'format nil "~A"))) (:in-description inline))}
The does for the LoL DISPLAY mechanism what ONE-LINE did for PRESENT, only with more magic. By exetending T in this way, it's easy to create contexts the redefine the behavior of LoL while still reusing the basics.
The LAYERED-FUNCTION DESCRIPTION-OF will return the description associated with an object.
(description-of nil) => #<DESCRIPTION NULL {AA04F49}> (description-of t) => #<DESCRIPTION SYMBOL {AA04541}> (description-of '(1 2 3)) => #<DESCRIPTION CONS {AA04C29}> ;;etc
Our function, PRESENT, is very basic, though pretty powerful when combined with descriptions and contexts. LoL includes a superset of such functionality built-in.
The main entry point into this protocol is the DISPLAY function. The signature for this functions is :
(display DISPLAY OBJECT &REST ARGS &KEY DEACTIVATE ACTIVATE &ALLOW-OTHER-KEYS)
The first argument, DISPLAY, is the place where we will display to/on/in/with. It could be a stream, a UCW component, a CLIM gadget, or anything else you might want to use.
One can specialize on this argument (though it's better to specialize DISPLAY-USING-DESCRIPTION… more on that later) to use generic descriptions to display objects in different environments.
The second argument is simply the object to be displayed. Here's a simple example :
(display t t) => T Type:BOOLEAN Class:#<BUILT-IN-CLASS SYMBOL> Symbol Name:T Value:T Package:#<PACKAGE "COMMON-LISP"> Function:<UNBOUND> ; No value
The two arguments specified in the lambda-list, ACTIVATE and DEACTIVATE, are used to activate and deactivate description contexts in the scope of the display function.
(display nil t :activate '(inline)) => "t" (with-active-descriptions (inline) (display nil t :deactivate '(inline))) => "T Type:BOOLEAN Class:#<BUILT-IN-CLASS SYMBOL> Symbol Name:T Value:T Package:#<PACKAGE \"COMMON-LISP\"> Function:<UNBOUND>"
Any other keyword arguments passed will be used to set the value of an attribute with a :keyword property, in the dynamic context of the DISPLAY function call. Once such attribute, and a very useful one is ACTIVE-ATTRIBUTES with its :attributes keyword :
(display t t :attributes '(class package)) => Class:#<BUILT-IN-CLASS SYMBOL> Package:#<PACKAGE "COMMON-LISP">
The properties of attributes that do not have a :keyword property can also be set dynamically. Since :attributes is the :keyword property of the ACTIVE-ATTRIBUTES attribute, the following form is equivalent to the previous :
(display t t :attributes '((active-attributes :value (class package)))) => Class:#<BUILT-IN-CLASS SYMBOL> Package:#<PACKAGE "COMMON-LISP">
Setting the attributes this way is almost like creating an anonymous description context… you can express just about anything you would in a DEFINE-DESCRIPTION. Here's a more involved example :
(display t t :attributes `((identity :label "The Object") (class :label "CLOS Class") (package :value "COMMON LISP" :function nil) (type :value-formatter ,(lambda (a) (format nil "Got a value? ~A" a))))) => The Object:T CLOS Class:#<BUILT-IN-CLASS SYMBOL> Package:COMMON LISP Type:Got a value? BOOLEAN
I hope that serves well to demonstrate the concepts behind LoL, as there is no API documentation available at the moment… use the source luke!
Lisp-on-Lines includes a compose-able metaclass, DESCRIBED-CLASS. It can be combined with any other metaclass without affecting the behavior of that class. DESCRIBED-CLASS has been used with the metaclasses provided by CLSQL, ROFL, Rucksack and UCW simply by defining a class that inherits from both metaclasses.
DESCRIBED-CLASS creates a base description for the class, named DESCRIPTION-FOR-<class>, and another description with the same name as the class that has the previous description as a superclass. The then defines a method on DESCRIPTION-OF that returns the second description.
LoL includes DESCRIBED-STANDARD-CLASS, which is subclass of STANDARD-CLASS and DESCRIBED-CLASS. We'll use this to create a class and its description.
(defclass person () (first-name last-name company-name date-of-birth phone fax email address city province postal-code) (:metaclass described-standard-class)) => #<DESCRIBED-STANDARD-CLASS PERSON> (display t (make-instance 'person)) => First name:#<UNBOUND> Last name:#<UNBOUND> Company name:#<UNBOUND> Date of birth:#<UNBOUND> Phone:#<UNBOUND> Fax:#<UNBOUND> Email:#<UNBOUND> Address:#<UNBOUND> City:#<UNBOUND> Province:#<UNBOUND> Postal code:#<UNBOUND>
The slots of an object are SETF'able places, and LoL takes advantage of that to provide EDITABLE descriptions automatically. When the EDITABLE description is active, and editor will be presented. The REPL based editor is pretty basic, but still useful. The HTML based editor will be described later.
(defun edit-object (object &rest args) (with-active-descriptions (editable) (apply #'display t object args))) (let ((object (make-instance 'person))) (edit-object object) (terpri) (display t object)) ;; What follows are prompts and the information i entered First name:Drew Last name:Crampsie Company name:The Tech Co-op Date of birth:1978-07-31 Phone:555-5555 Fax:555-5555<EMAIL_ADDRESS>Address:s/v Kanu, Lower Fraser River City:Richmond Province:BC Postal code:V1V3T6 ;; And this is what was displayed. First name:Drew Last name:Crampsie Company name:The Tech Co-op Date of birth:1978-07-31 Phone:555-5555 Fax:555-5555<EMAIL_ADDRESS>Address:s/v Kanu, Lower Fraser River City:Richmond Province:BC Postal code:V1V3T6
We mentioned earlier that DESCRIBED-CLASS creates two descriptions :
(find-description 'description-for-person) => #<DESCRIPTION DESCRIPTION-FOR-PERSON {D296DE1}> (find-description 'person) => #<DESCRIPTION PERSON {ADFEDB1}> (description-of (make-instance 'person)) => #<DESCRIPTION PERSON {ADFEDB1}>
The reason for this is so we can redefine the description PERSON while keeping all the generated information from DESCRIPTION-FOR-PERSON.
In this case, we will add an attribute, PERSON-AGE, that calculates a persons age based on the data in the date-of-birth slot.
LoL was developed, and is primarily used, for implementing data-driven web applications. As such, it comes with a host of features for doing just that.
LoL, by default, implements its web portion on top of the wonderful UnCommon Web meta-framework. The LISP-ON-LINES-UCW ASDF system should be loaded, as it provides the features we're going to discuss.
Date: 2009/07/27 01:46:25 PM
HTML generated by org-mode 6.05 in emacs 22


This sample shows basic class definition and instantiation.
This sample implements a DOM canvas-based raytracer. Notable features include:
This sample shows an implementation of the Backbone.js TODO sample derived from https://github.com/addyosmani/todomvc. The following TypeScript integration points are highlighted:
This sample implements a complete Node.js application. Notable features include:
This sample implements a small JQuery application. Notable features include:
This sample implements a small D3 visualization. Notable features include:
This sample implements a full game using JQuery and JQuery UI. Notable features include:
The encyclopedia includes a complete sample of a Windows 8 Store application built using TypeScript. The following features of TypeScript are highlighted:


{% extends "layout.html" %} {% block page_title %} Business or residential property {% endblock %} {% block content %} Back Business or residential property? Where do you live? Business Residential Continue {% endblock %}


If you fancy a chat feel free to drop me a line. I’m probably best contacted by Email - Give it a try, I hear it's all the rage these days!
My social profiles
Being someone who works at the Internet all day, means I’m pretty active on various social websites. Feel free to stop by and say hello at:
My social profiles
Being someone who works at the Internet all day, means I’m pretty active on various social websites. Feel free to stop by and say hello at:


Open data from the Colombian government allow us to study the demographics in Colombia's second most inhabited city, Medellín.
The different Comunas of Medellín are ordered from most to least populated, and divided into different age categories for comparison.
Use the slider to change the data's year, from 2016 to 2020. After 2017, the data is projections.
Mouseover the graph to see details of each bar component.
Dataviz from : Marwan Mehenni Follow @MarwanMhn
Data from : datos.gov.co


You have created an account on {site_name}!
You can now set up {app.name} and connect it to your new account.
{app.download.text?Download and install {app.name} below:}
{app.setup.text?Launch {app.name} and sign in using your account credentials.}
As a final reminder, your account details are shown below:
Your password is stored encrypted at {site_name} and will not be accessible after you close this page. Keep it safe and never share it with anyone.


ppmtorgb3(1) ppmtorgb3(1) NAME ppmtorgb3 - separate a portable pixmap into three portable graymaps SYNOPSIS ppmtorgb3 [ppmfile] DESCRIPTION Reads a portable pixmap as input. Writes three portable graymaps as out‐ put, one each for red, green, and blue. The output filenames are constructed by taking the input filename, strip‐ ping off any extension, and appending ".red", ".grn", and ".blu". For example, separating lenna.ppm would result in lenna.red, lenna.grn, and lenna.blu. If the input comes from stdin, the names are noname.red, no‐ name.grn, and noname.blu. SEE ALSO rgb3toppm(1), ppmtopgm(1), pgmtoppm(1), ppm(5), pgm(5) AUTHOR Copyright (C) 1991 by Jef Poskanzer. 10 January 1991 ppmtorgb3(1)


This server will help developers and hackers learn and understand how some of the most common
vulnerabilities can be exploited using bad backend Python developing techniques.
Follow the menu to try some of those techniques with code examples on it.
Example exploits can be found at exploit/ directory inside the git repository


Micromanaging
Three times in recent years I’ve had to micromanage others. Though probably in the contrary form to what you would expect. Most people think of micromanagement as their manager wanting to know every detail about their day, and be involved in every minute task. In most cases this form of micromanagement is never received well.
But the form of micromanagement I’m talking about is upward management. This could be needed for a variety of reasons:
- You’re being micromanaged already
- You’re manager is feeling outside their comfort zone and obviously uncomfortable
- You’re manager doesn’t understand the problem and maintains a distorted view
- You’re working with someone outside of your domain and they don’t have experience in the area
While at least some of this if not all should be more directly addressed, in my experiences that process has historically been out of my control and a slower process. What I could could control was my ability to be provided adequate time to do my job effectively. In most of these cases the manager is going to want to be too involved or drive the process in a direction you wouldn’t like it to go. Micromanaging upwards, may seem like an unnecessary amount of work at first, but it’ll allow you much more time.
First it’s helpful to start with a regular process. Sending status emails every morning or every afternoon, will keep them in the loop. It’ll prevent them from asking too many questions, and will keep them in the loop, but mainly with knowledge you feel is pertinent.
Discussions and calls with insider info will allow them to feel as if they’re driving the process. If you provide information as factual and provide the facts of how certain things have historically worked, or do would at a tactical level from you’re experiences it will help to steer the process in that direction. If they’re outside they’re comfort zone they’re going to take their best guess, it’s 50-50 if that’s the same as you’d see fit.
But, do let them drive the process at hand. If they feel as if you’re attempting to drive it, then they’re going to feel as if they’re authority is being challenged. It’s more a kin to telling them the directions of how to get their and letting them drive the car. If they’re slightly off path, but in the right direction let it go because otherwise you’re time will be consumed with trying to get the exact directions.


UN watchdog: Iran has violated 2015 nuclear deal again
by Associated PressBERLIN — The U.N.’s nuclear watchdog says Iran has breached another limit in its 2015 nuclear deal with world powers by stockpiling more heavy water than the accord allowed.
The International Atomic Energy Agency said Tuesday that Iran informed it on Nov. 16 that it had surpassed 143.3 tons allowed by the Joint Comprehensive Plan of Action, or JCPOA. The agency confirmed Nov. 17 that Iran’s stockpile had reached 131.5 tons.
Heavy water helps cool reactors, producing plutonium as a byproduct that can be used in nuclear weapons. Iran insists that its nuclear program is for peaceful purposes.
Tehran has been slowly stepping up violations of the nuclear deal to pressure world powers to provide more incentives to make up for the US withdrawal from the deal last year and renewed American economic sanctions.


News Scraper
Click the Scrape button below to scrape new articles. You can add a note to these articles by clicking on the information pertaining to that article.
Scrape


You have 85 seconds to complete a series of 14 JavaScript questions; but BEWARE! Incorrect answers take 5 seconds off the clock!


--- subject: DISC Personality Request --- \{{ Workflow | Attribute:'CustomMessage' | Truncate:140,'' }} {{> logo }} Hi \{{ Person.NickName }}, \{{ Workflow | Attribute:'CustomMessage' | NewlineToBr }} Take Personality Assessment I'm no longer involved with {{ 'Global' | Attribute:'OrganizationName' }}.Please remove me from all future communications. {{> footer }}
Hi \{{ Person.NickName }},
\{{ Workflow | Attribute:'CustomMessage' | NewlineToBr }}
I'm no longer involved with {{ 'Global' | Attribute:'OrganizationName' }}.Please remove me from all future communications.


Please let us know your feedback on IrisLog
Why do you use IrisLog for?
Do you find IrisLog useful?
Yes No
How can we improve IrisLog?
What other PlanetLab statistics do you want to monitor in IrisLog
General Comments


{% extends "base.html" %} {% block whole_title %}Evennia Game Index{% endblock %} {% block body %}
The Evennia Game Index is an automatically generated list of games built with Evennia. If you know of a game that is not listed, please contact the staff and let them know that this exists.
To list your own game, go to your game's folder, run evennia connections and follow the prompts. You can read more instructions here. If you see something amiss with this page or a listing, please file an issue on the game-index issue tracker. If you have questions or would like to see more of the Evennia community, feel free to join us in the Evennia Discussions or discord chat.
| Game Name | Blurb | Conn | Play |
|---|---|---|---|
| {{ game.game_name }} {% if game.game_status != 'launched' %} {{ game.game_status }} {% endif %} | {% if game.short_description %} 60 %} data-toggle="tooltip" data-placement="top" title="{{ game.short_description }}"{% endif %}> {{ game.short_description|truncate(60) }} {% else %} None {% endif %} | {{ game.connected_account_count }} | {%- if game.telnet_hostname and game.telnet_port -%} Telnet {%- endif -%} {% if game.telnet_hostname and game.telnet_port and game.web_client_url %} or {% endif %} {%- if game.web_client_url -%}Webclient{%- endif -%} {% if not game.web_client_url and not game.telnet_hostname %} Not yet public {% endif %} |


UCR Dining Services
Welcome to UCR Dining Services
The UCR Dining Services Team has a long standing history of providing students, faculty and staff with outstanding food and service in a welcoming environment. We look forward to serving you! Please view our current hours of operation below.
Bear Tracks Coffee Truck to Close for Scheduled Maintenance
The Coffee Truck will close starting Tuesday, November 22. Regular hours will resume Monday, November 28. We apologize for any inconvenience.
Sunday Brunch at The Market at Glen Mor
Savor is now offering Sunday Brunch. Join us from 10:30am–2:30pm at the Market at Glen Mor.
From "Campus Dining Today":
Vegetables Take Center Plate
Article on how Chef Burke Reeves, Executive Chef of Retail Dining and Catering, uses vegetables from local farms to create healthy and elegant recipes - such as his Tomato Gazpacho with Avocado & Cucumber Salad and Roasted Vegetable Platter. Includes recipes. Read article
Healthy Dining at the HUB
Want to know how to eat healthy when dining at the HUB? Use this handy guide. Or, try the vegetarian and vegan options at any of our campus restaurants by using this brochure.
The Coffee Truck will close starting Tuesday, November 22. Regular hours will resume Monday, November 28. We apologize for any inconvenience.
Savor is now offering Sunday Brunch. Join us from 10:30am–2:30pm at the Market at Glen Mor.
Vegetables Take Center Plate
Article on how Chef Burke Reeves, Executive Chef of Retail Dining and Catering, uses vegetables from local farms to create healthy and elegant recipes - such as his Tomato Gazpacho with Avocado & Cucumber Salad and Roasted Vegetable Platter. Includes recipes. Read article
Want to know how to eat healthy when dining at the HUB? Use this handy guide. Or, try the vegetarian and vegan options at any of our campus restaurants by using this brochure.
UCR Farmer's Market
Every Thursday (excluding holidays)
UC Riverside now has it's very own weekly Farmers Market, held every Thursday from 4pm-8pm in Lot 14. Come by and shop for fresh produce, baked goods, natural products, and more. A variety of vendors will be selling each week. For more info, contact us at<EMAIL_ADDRESS>Every Thursday (excluding holidays)
UC Riverside now has it's very own weekly Farmers Market, held every Thursday from 4pm-8pm in Lot 14. Come by and shop for fresh produce, baked goods, natural products, and more. A variety of vendors will be selling each week. For more info, contact us at<EMAIL_ADDRESS>The Market at Glen Mor
Fresh Fruits & Vegetables
There is a variety of fresh fruits and vegetables available at the Market at Glen Mor. We sell all sorts of produce like potatoes, onions, zucchini, green and red peppers, apples, bananas, etc.
Fresh Fruits & Vegetables
There is a variety of fresh fruits and vegetables available at the Market at Glen Mor. We sell all sorts of produce like potatoes, onions, zucchini, green and red peppers, apples, bananas, etc.
Follow Us


Gecode::TupleSet::Data Class Reference
Data stored for a Table. More...
#include <int.hh>
Public Member Functions | |
| Tuple | add (void) |
| Return newly added tuple. | |
| Tuple | get (int i) const |
| Return tuple with number i. | |
| unsigned int | tuple2idx (Tuple t) const |
| Map tuple address to index. | |
| const Range * | fst (int i) const |
| Return first range for position i. | |
| const Range * | lst (int i) const |
| Return last range for position i. | |
| void | finalize (void) |
| Finalize datastructure (disallows additions of more Tuples). | |
| void | resize (void) |
| Resize tuple data. | |
| bool | finalized (void) const |
| Is datastructure finalized. | |
| Data (int a) | |
| Initialize as empty tuple set with arity a. | |
| virtual | ~Data (void) |
| Delete implementation. | |
Static Public Member Functions | |
| static void | set (BitSetData *d, unsigned int n) |
| Set bit n in bitset data d. | |
| static bool | get (const BitSetData *d, unsigned int n) |
| Get bit n in bitset data d. | |
Public Attributes | |
| int | arity |
| Arity. | |
| unsigned int | n_words |
| Number of words for support. | |
| int | n_tuples |
| Number of Tuples. | |
| int | n_free |
| Number of free tuple entries of arity. | |
| int | min |
| Smallest value. | |
| int | max |
| Largest value. | |
| std::size_t | key |
| Hash key. | |
| int * | td |
| Tuple data. | |
| ValueData * | vd |
| Value data. | |
| Range * | range |
| Pointer to all ranges. | |
| BitSetData * | support |
| Pointer to all support data. | |
Static Protected Attributes | |
| static const int | n_initial_free = 1024 |
| Initial number of free tuples. |
Detailed Description
Data stored for a Table.
Definition at line 2178 of file int.hh.
Constructor & Destructor Documentation
| Gecode::TupleSet::Data::Data | ( | int | a | ) | [inline] |
Initialize as empty tuple set with arity a.
Definition at line 61 of file tuple-set.hpp.
| Gecode::TupleSet::Data::~Data | ( | void | ) | [virtual] |
Delete implementation.
Definition at line 254 of file tuple-set.cpp.
Member Function Documentation
| TupleSet::Tuple Gecode::TupleSet::Data::add | ( | void | ) | [inline] |
Return newly added tuple.
Definition at line 76 of file tuple-set.hpp.
| TupleSet::Tuple Gecode::TupleSet::Data::get | ( | int | i | ) | const [inline] |
Return tuple with number i.
Definition at line 87 of file tuple-set.hpp.
| void Gecode::TupleSet::Data::set | ( | BitSetData * | d, | |
| unsigned int | n | |||
| ) | [inline, static] |
Set bit n in bitset data d.
Definition at line 113 of file tuple-set.hpp.
| bool Gecode::TupleSet::Data::get | ( | const BitSetData * | d, | |
| unsigned int | n | |||
| ) | [inline, static] |
Get bit n in bitset data d.
Definition at line 118 of file tuple-set.hpp.
| unsigned int Gecode::TupleSet::Data::tuple2idx | ( | Tuple | t | ) | const [inline] |
Map tuple address to index.
Definition at line 123 of file tuple-set.hpp.
| const TupleSet::Range * Gecode::TupleSet::Data::fst | ( | int | i | ) | const [inline] |
Return first range for position i.
Definition at line 128 of file tuple-set.hpp.
| const TupleSet::Range * Gecode::TupleSet::Data::lst | ( | int | i | ) | const [inline] |
Return last range for position i.
Definition at line 132 of file tuple-set.hpp.
| void Gecode::TupleSet::Data::finalize | ( | void | ) |
Finalize datastructure (disallows additions of more Tuples).
Definition at line 103 of file tuple-set.cpp.
| void Gecode::TupleSet::Data::resize | ( | void | ) |
Resize tuple data.
Definition at line 247 of file tuple-set.cpp.
| bool Gecode::TupleSet::Data::finalized | ( | void | ) | const [inline] |
Is datastructure finalized.
Definition at line 71 of file tuple-set.hpp.
Member Data Documentation
const int Gecode::TupleSet::Data::n_initial_free = 1024 [static, protected] |
| unsigned int Gecode::TupleSet::Data::n_words |
| std::size_t Gecode::TupleSet::Data::key |
The documentation for this class was generated from the following files:
- gecode/int.hh
- gecode/int/extensional/tuple-set.cpp
- gecode/int/extensional/tuple-set.hpp


A C D E G H I L M N P S T V W
All Classes All Packages
All Classes All Packages
All Classes All Packages
S
- Screen - Class in devices
-
Screen Information about the screens properties.
- Screen(Widget, String, int, int) - Constructor for class devices.Screen
-
Constructor for a Speaker Object.
- ScreenSpec - Interface in devices
-
Specifications on Screen requirements.
- setDetails(int[]) - Static method in class start.Widget
-
Mutator to set the [Integer] information from the additional product information window into the specific product type.
- setDetails(String[]) - Static method in class start.Widget
-
Mutator to set the [String] information from the additional product information window into the specific product type.
- setEmployee(Employee) - Method in interface devices.Item
-
Mutator to set the Employee actor to the Item.
- setEmployee(Employee) - Method in class start.Product
- setItemType(ItemType) - Method in interface devices.Item
-
Mutator to set the Item Type of the Item.
- setItemType(ItemType) - Method in class start.Product
- setManufacturer(String) - Method in interface devices.Item
-
Mutator to set the Manufacturer Name of the Item.
- setManufacturer(String) - Method in class start.Product
- setMonitor(MonitorType) - Static method in class start.Widget
-
Mutator to set the monitor type for the specific product type.
- setName(String) - Method in interface devices.Item
-
Mutator to set the Name of the Item.
- setName(String) - Method in class start.Product
- setProdDate(Date) - Method in class start.ProductionRecord
-
Set the date that was recorded when the product is recorded.
- setProduct(Product) - Static method in class start.Main
-
Passes a Product Device to the Controller so that it is able to Retain the.
- setProductID(int) - Method in class start.ProductionRecord
-
Set the ID of the product to be placed into the database.
- setProductionName(String) - Method in class start.ProductionRecord
-
To Set the Name of the Product.
- setProductionNum(int) - Method in class start.ProductionRecord
-
To set the Production Record Number.
- setSerialNum(String) - Method in class start.ProductionRecord
-
Set the Serial number that was created when the product was produced.
- setSpeaker(SpeakerType) - Static method in class start.Widget
-
Mutator to set the speaker type to create the specific product object.
- setType(String) - Static method in enum devices.ItemType
-
with a unknown enum type but a valid code this will return the Item type that co-responds to the code provided.
- setType(String) - Static method in enum devices.MonitorType
-
Get the type of Speaker type from the Code in Database.
- setType(String) - Static method in enum devices.SpeakerType
-
Get the type of Speaker type from the Code in Database.
- setUserOfPassword(String) - Method in class start.WindowManager
-
Set the User Of Password for when password is required.
- SpeakerType - Enum in devices
-
Enum of the types of speakers that can be created.
- start - package start
- start(Stage) - Method in class start.Main
- stop() - Method in class devices.AudioPlayer
- stop() - Method in class devices.MobileDevice
- stop() - Method in class devices.MoviePlayer
- stop() - Method in interface devices.MultimediaControl
-
Stop media from the device.
- Subwoofer - devices.SpeakerType
All Classes All Packages


Recent
Nearby
Following
Trending
Nearby
Online
Following
{{$root.notifications.sm}}
{{$root.notifications.p}}
{{$root.notifications.mc}}
{{$root.User.profile.name}}
Edit Profile
Menu
World Stream
Nearby People
Messages
Notifications
Watched Posts
Account
Account & Settings
Privacy Center
Logout
{{conversation.name}}
{{conversation.new}}
{{conversation.last | timeAgo}}
{{$root.UserCard.name}}
Loading
View Profile
Distance
{{$root.UserCard.dis}} miles
Last Online
{{$root.UserCard.last | timeAgo}}
Age
{{$root.UserCard.age}} years old
Gender
Unknown
Male
Female
Interests
{{$root.UserCard.interest}}
Follow
Unfollow
Message
Block
Blocked


Copyright (c) 2003 Markus Salo
This game is played on the following 3x4 square board:
Each player has 5 stones off-board.
|
| An example
White drops the last stone at cell [1] and wins! Black must capture c3:a3:a1, then b2-b3!, c1:c3:a3 and wins, his only stone is on the red cell. |
Some words from the author: I've been trying to create a game having as simple as possible rule set and board but still having a lot depth and strategy. This is as simple as it gets. Still the game is very challenging and the computer opponent is hard to beat. There is a ZRF to play Vilbergen with Zillions. There is a simplified (?) version of this game for 1-D boards, which Markus called Motala Ström (check a similar classic game Toads and Frogs). Other variants are Skarphagen and Lahti.
Markus also made a hexagonal variant, called Hageby, using the following board:
Hageby includes a first move restriction, the first drop must not be on the red cell. Another game played on this board is Holmen.


Getting started with DWR is easy but there are a few important concepts you need to be aware of:
DWR generates JavaScript proxy functions that are similar to the Java methods exposed using the <create ... > element, in your dwr.xml file.
The biggest challenge in creating a remote interface to match Java code across AJAX is the (usually) asynchronous nature of AJAX, compared to the synchronous nature of a normal Java call.
DWR solves this problem by introducing a callback function that is called when the data is returned from the server.
There are 2 recommended ways to make a call using DWR. Either by appending a call options object or a callback function to the parameter list.
The recommended syntax is to make use of a call options object that specifies the callback function and other options.
Suppose we have a Java method that looks like this:
public class Remote { public String getData(int index) { ... } }
We can use this from Javascript as follows:
<script type="text/javascript" src="[WEBAPP]/dwr/interface/Remote.js"> </script> <script type="text/javascript" src="[WEBAPP]/dwr/engine.js"> </script> ... Remote.getData(42, { callback:function(str) { alert(str); } });
'42' is just the parameter to the getData()
Java function - see above.
DWR will always pass a JavaScript version (serialized using DWR's converters) of the object returned from the remoted Java method as the first parameter of the callback. In this case str will contain the String that getData returns.
This method has some advantages: Depending on your style it may be easier to read, but more importantly it allows you to specify extra call options.
In addition to the callback function you can also specify a timeout, errorHandler, and several other call options. For example:
Remote.getData(42, { callback:function(str) { alert(str); }, timeout:5000, errorHandler:function(message) { alert("Oops: " + message); } });
An alternative approach is to simply append a callback function to your parameter list:
function handleGetData(str) { alert(str); } Remote.getData(42, handleGetData);
Alternatively you can use the all-in-one-line version:
Remote.getData(42, function(str) { alert(str); });
Suppose you have exposed the following Java method, with a Person Java Bean as a parameter:
public class Remote { public void doSomethingWithPerson(Person p) { // Some Java code that does something with Person p. } }
And Person
looks like this:
public Person { private String name; private int age; private Date[] appointments; // getters and setters ... }
Then you can call this from Javascript like this:
var myJSPerson = { name:"Fred Bloggs", age:42, appointments:[ new Date(), new Date("1 Jan 2008") ] }; Remote.doSomethingWithPerson(myJSPerson);
Any fields missing from the JavaScript representation will be left unset in the Java version.
Since the doSomethingWithPerson method returns 'void' we do not need to use a callback and can just leave it out. If you want to be notified of the completion of a server-side method that returns void then you can include a callback method. Obviously DWR will not pass any data to it.


In case of the latter, tell us what happened at contact@inctf.in


--- title: Throw Up a Quick HTTP Server layout: post tags: [trick] uuid: 304e4ffe-8840-3de4-c371-288959fd4a10 ---
Ever since I learned this neat trick from Luke a few months ago I've been using it almost weekly. If you have Python installed then you have a miniature web server at your fingertips.
python -m SimpleHTTPServer
Bam! If I need to transfer large files directly to someone over the Internet, I'll throw up one of these and give them the address. Each of my home computers has an 8xxx port forwarded to it in my router's NAT configuration, so they're all ready to do this any time I need it.
When I needed this before, I would use my own Emacs web server, but the Python solution above is even more convenient most of the time. Plus it does directory listings, which I never bothered to add to my web server.
The reason I bring it up right now is because it finally saved me a lot of time at work. I was performing a half dozen Ubuntu installs for a system we're building, but none of these computers have network access, except to each other. I was using the Ubuntu DVD, which includes a larger software selection than the CD.
Well, it seems no one ever actually uses the DVD like this, because it
doesn't work right now with the current DVD. You see, apt
doesn't treat the DVD as just any repository. It has its own special
cache for them, keeping track of what packages are on what CDs and
DVDs. Well, the problem is that the CD is named differently than the
DVD, and apt
(and apt-cdrom
) keeps looking
for the CD when it should be looking for the DVD, foolishly ignoring
any advice I give in the configuration. Python SimpleHTTPServer to the
rescue!
I mounted the DVD and ran the HTTP server at the DVD's root. Then I
added my localhost server to the sources.list
. Worked
like a charm! apt
had no idea it was pulling packages off
the DVD.


Multiple URLs must be seperated by a comma.
If more than one URL is specified they can either be opened in tabs or rotated at defined rate.
URL must start with http:// or https:// Tokens can be embedded in the URL and will be replaced with associated value.
E.g.: 'https://www.mysite.com/content?device={id}' will actually request 'https://https://www.mysite.com/content?device=12345'
where '12345' is a identifier unique to this installtion of the application.


This is the ontology to describe things in the bible.
- This owl is focused on the genealogy of Jesus Christ.
- Based on: Genesis, Matthew
- Available Classes
- Class: EarthlyWorld, Living, Human, Man, Woman
- ObjectProperty: hasFamily, hasAncestor, hasParent, hasFather, hasMother, hasOffspring, hasChild, hasDaughter, hasSon, hasSibling, hasBrother, hasSister, hasSpouse, hasHusband, hasWife, hasChangedNameTo
- DatatypeProperty: isDeadAtTheAge, isBornAtTheFatherAge, hasGoneToSpiritualWorldAtTheAge, hasChangedNameAtTheAge
- This version has been updated from v1.0 with more details about the ages, sibling and spouse.